{"version":3,"sources":["webpack:///./public/javascripts/dummyI18nResource.js?1e80","webpack:///./public/javascripts/dummyI18nResource.js?bf85","webpack:///./public/javascripts/mathml.js","webpack:///./app/coffeescripts/behaviors/ic-super-toggle.js","webpack:///./app/coffeescripts/editor/stocktiny.js","webpack:///./node_modules/tinymce/tinymce.js","webpack:///./public/javascripts/dummyI18nResource.js?cb02","webpack:///./node_modules/tinymce/plugins/directionality/plugin.js","webpack:///./public/javascripts/translations/subnav_menu_toggle.js","webpack:///./node_modules/tinymce/plugins/table/plugin.js","webpack:///./app/coffeescripts/behaviors/instructure_inline_media_comment.js","webpack:///./node_modules/tinymce/plugins/autolink/plugin.js","webpack:///./app/coffeescripts/jquery/mediaComment.js","webpack:///./app/coffeescripts/behaviors/admin-links.js","webpack:///./public/javascripts/LtiThumbnailLauncher.js","webpack:///./app/coffeescripts/behaviors/elementToggler.js","webpack:///./public/javascripts/reminders.js","webpack:///./app/coffeescripts/util/kalturaAnalytics.js","webpack:///./app/jsx/shared/sanitizeHtml.js","webpack:///./app/coffeescripts/behaviors/activate.js","webpack:///./node_modules/tinymce/plugins/wordcount/plugin.js","webpack:///./app/coffeescripts/behaviors/broken-images.js","webpack:///./app/jsx/mediaelement/MediaElementKeyActionHandler.js","webpack:///./public/javascripts/media_comments.js","webpack:///./public/javascripts/translations/ajax_errors.js","webpack:///./public/javascripts/page_views.js","webpack:///./app/coffeescripts/behaviors/ping.js","webpack:///./public/javascripts/vendor/jqueryui/tooltip.js","webpack:///./node_modules/tinymce/plugins/paste/plugin.js","webpack:///./public/javascripts/jquery.ui.menu.inputmenu.js","webpack:///./node_modules/tinymce/plugins/textcolor/plugin.js","webpack:///./app/jsx/bundles/common.js","webpack:///./public/javascripts/vendor/jqueryui/menu.js","webpack:///./public/javascripts/ajax_errors.js","webpack:///./node_modules/tinymce/plugins/lists/plugin.js","webpack:///./app/coffeescripts/registration/incompleteRegistrationWarning.coffee","webpack:///./app/jsx/subnav_menu/updateSubnavMenuToggle.js","webpack:///./public/javascripts/translations/broken_images.js","webpack:///./node_modules/tinymce/plugins/media/plugin.js","webpack:///./node_modules/tinymce/plugins/link/plugin.js","webpack:///./public/javascripts/vendor/jqueryui/popup.js","webpack:///./node_modules/tinymce/themes/modern/theme.js","webpack:///./app/coffeescripts/behaviors/tooltip.js","webpack:///./app/coffeescripts/jquery.kylemenu.js","webpack:///./app/coffeescripts/behaviors/ujsLinks.js"],"names":["__WEBPACK_AMD_DEFINE_ARRAY__","__webpack_require__","undefined","__WEBPACK_AMD_DEFINE_RESULT__","I18n","scoped","apply","exports","module","loadMathJax","configFile","cb","arguments","length","isMathJaxLoaded","window","MathJax","Hub","Reprocess","localConfig","$","getScript","isMathMLOnPage","_jquery2","default","toArray","some","elem","parent","reloadElement","Queue","_jquery","TeX","extensions","document","on","event","which","target","click","_tinymce","tinymce","DOM","loadCSS","noop","args","_i","compose","fa","fb","constant","value","identity","x","curry","fn","initialArgs","restArgs","all","concat","pIndexOf","webkit","ie","ie11","ie12","gecko","mac","iDevice","android","fileApi","phone","tablet","windowsPhone","not","f","never","always","never$1","always$1","none","NONE","eq","o","isNone","call$$1","thunk","id","n","me","fold","s","is","isSome","getOr","getOrThunk","getOrDie","msg","Error","getOrNull","getOrUndefined","or","orThunk","map","ap","each","bind","flatten","exists","forall","filter","equals","equals_","toString","Object","freeze","a","constant_a","self","v","optfab","fab","elementEq","b","Option","from","typeOf","t","Array","prototype","isPrototypeOf","String","isType","type","isString","isObject","isArray","isNull","isBoolean","isFunction","isNumber","rawIndexOf","indexOf","xs","slowIndexOf","call","contains","len","r","i","eachr","partition","pred","pass","fail","push","foldr","acc","foldl","find","findIndex","output","slice","reverse","difference","a1","a2","mapToObject","sort","comparator","copy","head","last","from$1","Global","Function","path","parts","scope","resolve","p","split","unsafe","name","Global$1","actual","url","URL","createObjectURL","blob","revokeObjectURL","u","nav","navigator","userAgent","matchMediaQuery","query","matchMedia","matches","test","appName","exec","requestAnimationFramePromise","Env","opera","iOS","contentEditable","parseInt","match","transparentSrc","caretAfter","range","getSelection","documentMode","ceFalse","cacheSuffix","container","overrideViewPort","experimentalShadowDom","canHaveCSP","desktop","promiseObj","Promise","thisArg","this","TypeError","_state","_value","_deferreds","doResolve","reject","asap","immediateFn","setImmediate","setTimeout","handle","deferred","onFulfilled","onRejected","ret","e","newValue","then","finale","Handler","done","reason","ex","catch","remaining","res","val","constructor","race","values","promise","requestAnimationFrame$$1","callback","element","requestAnimationFrameFunc","requestAnimationFrame","vendors","wrappedSetTimeout","time","wrappedSetInterval","setInterval","debounce","timer","func","clearTimeout","stop","Delay","body","setEditorTimeout","editor","removed","setEditorInterval","clearInterval","throttle","mouseEventRe","deprecated","keyLocation","layerX","layerY","returnValue","webkitMovementX","webkitMovementY","keyIdentifier","hasIsDefaultPrevented","event$$1","isDefaultPrevented","returnTrue","returnFalse","addEvent","name$$1","capture","addEventListener","attachEvent","removeEvent","removeEventListener","detachEvent","getTargetFromShadowDom","defaultTarget","composedPath","fix","originalEvent","data","srcElement","pageX","clientX","eventDoc","ownerDocument","doc","documentElement","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","preventDefault","stopPropagation","isPropagationStopped","cancelBubble","stopImmediatePropagation","isImmediatePropagationStopped","metaKey","bindOnReady","win","eventUtils","domLoaded","isDocReady","readyState","readyHandler","waitForDomLoaded","tryScroll","doScroll","top","EventUtils","count","expando","hasFocusIn","hasMouseEnterLeave","mouseEnterLeave","self$$1","events","Date","mouseenter","mouseleave","executeHandlers","evt","callbackList","l","names","fakeName","nativeHandler","defaultNativeHandler","nodeType","current","related","currentTarget","relatedTarget","parentNode","unbind","ci","eventMap","fire","defaultView","parentWindow","clean","children","getElementsByTagName","destroy","cancel","Event","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document$1","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains$1","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","strundefined","MAX_NEGATIVE","hasOwn","hasOwnProperty","arr","pop","push_native","push$1","slice$1","indexOf$1","whitespace","identifier","attributes","pseudos","rtrim","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","fromCharCode","childNodes","els","j","Sizzle","selector","context","results","seed","m","groups","old","nid","newContext","newSelector","getElementById","getElementsByClassName","qsa","nodeName","toLowerCase","getAttribute","replace","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","node","hasCompare","parent$$1","getTop","getById","attrId","tag","tmp","className","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","bp","unshift","expr","elements","matchesSelector","attr","attrHandle","getAttributeNode","specified","error","uniqueSort","duplicates","detectDuplicates","sortStable","splice","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir","first"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","input","matcher","unmatched","has","text","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","length$$1","even","odd","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","elems","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","token","compiled","isArray$1","each$1","findIndex$1","array","predicate","ArrUtils","obj","out","item","index","reduce","collection","iteratee","accumulator","whiteSpaceRegExp","trim","str","walk","Tools","makeMap","items","delim","grep","inArray","prop","extend","ext","create","sp","ns","cn","scn","c","de","createNS","static","onCreate","explode","d","_addCacheSuffix","push$2","slice$2","rquickExpr$1","Event$$1","skipUniques","isDefined","isString$1","createFragment","html","fragDoc","frag","createElement","createDocumentFragment","innerHTML","appendChild","domManipulate","targetNodes","sourceItem","getElementDocument","DomQuery","makeArray","hasClass","wrap","wrapper","lastParent","newWrapper","cloneNode","insertBefore","numericCssMap","booleanMap","propFix","for","class","readonly","cssFix","float","attrHooks","cssHooks","init","whiteSpaceRegExp$1","trim$1","each$2","charAt","add","nodes","unique","hook","get","set","removeAttr","css","elm","camel","toUpperCase","dashed","style","removeProperty","currentStyle","getComputedStyle","getPropertyValue","remove","removeChild","append","host","prepend","before","after","appendTo","prependTo","replaceWith","content","wrapAll","wrapInner","contents","unwrap","clone","addClass","toggleClass","removeClass","state","existingClassName","classState","off","trigger","show","hide","closest","offset","docElm","pos","y","getBoundingClientRect","left","object","el","until","sibling","siblingName","firstSibling","parents","next","prev","contentDocument","contentWindow","parentsUntil","nextUntil","prevUntil","overrideDefaults","defaults","sub","appendHooks","targetHooks","hooks","maxlength","maxLength","size","cssText","opacity","zoom","called","firstMatch","regexes","find$2","agent","major","minor","group","Number","nu","unknown","Version","detect","versionRegexes","cleanedAgent","isBrowser","nu$1","info","version","isEdge","isChrome","isIE","isOpera","isFirefox","isSafari","Browser","edge","chrome","firefox","safari","isOS","nu$2","isWindows","isiOS","isAndroid","isOSX","isLinux","isSolaris","isFreeBSD","OperatingSystem","windows","ios","linux","osx","solaris","freebsd","DeviceType","os","browser","isiPad","isiPhone","isAndroid3","isAndroid4","isTablet","isTouch","isPhone","iOSwebview","isWebView","detect$1","candidates","candidate","search","UaString","browsers","oses","contains$2","substr","trim$2","rTrim","normalVersionRegex","checkContains","uastring","PlatformInfo","PlatformDetection","deviceType","PlatformDetection$1","fromDom","dom","Element$$1","fromHtml","div","hasChildNodes","console","fromTag","fromText","createTextNode","fromPoint","elementFromPoint","DOCUMENT","Node","ATTRIBUTE_NODE","CDATA_SECTION_NODE","COMMENT_NODE","DOCUMENT_NODE","ELEMENT","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","ELEMENT_NODE","TEXT","TEXT_NODE","PROCESSING_INSTRUCTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","NOTATION_NODE","isType$1","isElement","isText","hasOwnProperty$1","each$3","props","k","map$2","tupleMap","tuple","bifilter","rawSet","value$$1","setAll","attrs","get$1","inBody","isSupported","internalSet","property","setProperty","get$2","getUnsafeProperty","Immutable","fields","struct","Recurse","recurse","Node$1","DOCUMENT_POSITION_CONTAINED_BY","ELEMENT$1","DOCUMENT$1","is$1","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","bypassSelector","childElementCount","one","querySelector","e1","e2","contains$3","d1","d2","owner","isRoot","rawParent","prevSibling","previousSibling","prevSiblings","nextSiblings","child","browser$1","firstElement","getTableCaptionDeltaY","caption","bodyTop","offsetTop","captionTop","captionHeight","offsetHeight","Position","getPos","rootElm","offsetParent$$1","offsetLeft","offsetParent","nu$3","baseFn","callbacks","nCallback","isReady","run","cbs","LazyValue","pure","nu$4","toLazy","aFutureB","anonBind","futureB","toCached","Future","par$1","futures","asyncValues","par","asyncValue","value$1","isValue","isError","opt","onValue","mapError","toOption","message","onError","Result","StyleSheetLoader","document$$1","settings","maxLoadTime","idCount","loadedStates","appendToHead","load","loadedCallback","errorCallback","link","startTime","passed","status","failed","wait","testCallback","waitCallback","getTime","waitForWebKitLinkLoaded","styleSheet","styleSheets","ownerNode","owningElement","waitForGeckoLinkLoaded","cssRules","sheet","rel","async","defer","contentCssCors","crossOrigin","webKitChunks","onload","onerror","loadF","unbox","loadAll","urls","success","failure","TreeWalker","startNode","rootNode","findSibling","startName","shallow","findPreviousNode","prev2","namedEntities","baseEntities","reverseEntities","lazyLookup","lookup","isHeading","isBlock","isInline","isBr","isTextBlock","isList","isListItem","isVoid","isTableSection","isTableCell","isWsPreserveElement","isNodeType","isElement$1","matchNodeNames","hasContentEditableState","isText$1","isComment$1","isDocument$1","isBr$1","isContentEditableTrue","isContentEditableFalse","NodeType","isComment","isDocument","hasPropValue","propName","propValue","hasAttribute","attrName","attrValue","hasAttributeValue","matchStyleValues","computed","isBogus","isBogusAll","isTable","tagName","surroundedBySpans","previousIsSpan","nextIsSpan","isBookmarkNode","trimNode","trimmedLength","TrimNode","makeMap$1","attrsCharsRegExp","textCharsRegExp","rawCharsRegExp","entityRegExp","asciiMap","128","130","131","132","133","134","135","136","137","138","139","140","142","145","146","147","148","149","150","151","152","153","154","155","156","158","159","\"","'","<","&","`","&lt;","&gt;","&amp;","&quot;","&apos;","nativeDecode","buildEntitiesLookup","radix","chr","entity","encodeRaw","encodeNumeric","charCodeAt","encodeNamed","entities","Entities","encodeAllRaw","getEncodeFunc","entitiesMap","nameMap","named","numeric","decode","mapCache","dummyObj","makeMap$2","each$4","extend$1","explode$1","inArray$1","compileSchema","globalAttributes","blockContent","phrasingContent","flowContent","html4BlockContent","html4PhrasingContent","schema","ni","attributesOrder","arrayToMap","addAttrs","schemaItem","table","script","compileElementMap","mode","styles","*","Schema","validStyles","invalidStyles","schemaItems","whiteSpaceElementsMap","selfClosingElementsMap","shortEndedElementsMap","boolAttrMap","validClasses","blockElementsMap","nonEmptyElementsMap","moveCaretBeforeOnEnterElementsMap","textBlockElementsMap","textInlineElementsMap","patternElements","customElementsMap","specialElements","createLookupTable","option","defaultValue","extendWith","verify_html","valid_elements","valid_styles","invalid_styles","valid_classes","special","patternToRegExp","addValidElements","validElements","ei","ai","al","attrData","elementName","attrType","prefix","outputName","globalAttributesOrder","elementRuleRegExp","attrRuleRegExp","hasPatternsRegExp","paddEmpty","removeEmpty","removeEmptyAttrs","attributesRequired","required","attributesDefault","attributesForced","forcedValue","validValues","attributePatterns","setValidElements","addCustomElements","customElements","customElementRegExp","text_block_elements","block_elements","rule","inline","cloneName","customRule","elmName","addValidChildren","validChildren","childRuleRegExp","#comment","getElementRule","custom_elements","valid_children","extended_valid_elements","dd","dt","li","td","th","tr","tbody","thead","tfoot","legend","area","param","parentsRequired","invalid_elements","getValidStyles","getValidClasses","getBlockElements","getInvalidStyles","getShortEndedElements","getTextBlockElements","getTextInlineElements","getBoolAttrs","getSelfClosingElements","getNonEmptyElements","getMoveCaretBeforeOnEnterElements","getWhiteSpaceElements","getSpecialElements","isValidChild","isValid","attrPatterns","getCustomElements","toHex","g","hex","Styles","encodingItems","rgbRegExp","urlOrStrRegExp","styleRegExp","trimRightRegExp","encodingLookup","color","parse","isEncoded","urlConverter","url_converter","urlConverterScope","url_converter_scope","compress","suffix","noJoin","right","bottom","box","canCompress","encode","keepSlashes","decodeSingleHexSequence","escSeq","decodeHexSequences","processUrl","url2","url3","str2","allow_script_urls","scriptUrl","allow_svg_data_urls","lastIndex","compress2","border","serialize","serializeStyles","styleList","styleMap","each$5","grep$1","simpleSelectorRe","whiteSpaceRegExp$2","setupAttrHooks","getContext","keepValues","keep_values","keepUrlHook","$elm","src","updateInternalStyleAttr","rawValue","findNodeIndex","normalized","lastNodeType","DOMUtils","_this","addedStyles","files","counter","styleSheetLoader","boundEvents","ownEvents","proxy","getRoot","getElementsByName","$$","getAttrib","defaultVal","getAttribs","setAttrib","originalValue","onSetAttrib","attrElm","root_element","getStyle","getSize","w","h","offsetWidth","clientWidth","clientHeight","elms","getParents","collect","selectorVal","_findSib","setAttribs","setHTML","canHaveHTML","parentElm","newElm","keepChildren","$node","cls","oldElm","replaceChild","createRng","createRange","getContentEditable","stdMode","boxModel","deep","clone_1","getViewPort","argWin","actWin","pageXOffset","pageYOffset","innerWidth","innerHeight","getRect","getParent","getNext","getPrev","createHTML","outHtml","setStyle","update_styles","setStyles","stylesArg","removeAllAttribs","removeAttributeNode","parseStyle","serializeStyle","addStyle","styleElm","isHidden","uniqueId","getOuterHTML","outerHTML","setOuterHTML","insertAfter","reference","referenceNode","rename","attrNode","findCommonAncestor","pe","ps","rgbVal","isEmpty","walker","brCount","bogusVal","splitElm","replacementElm","bef","aft","pa","setStart","setEnd","extractContents","getContentEditableParent","isChildOf","dumpRng","startContainer","startOffset","endContainer","endOffset","DOMUtils$1","each$6","grep$2","isFunction$1","ScriptLoader","states","queue","scriptLoadedCallbacks","queueLoadedCallbacks","loading","loadScript","onreadystatechange","log","isDone","markDone","loadQueue","loadScripts","scripts","failures","execCallbacks","loadingScripts","notifyCallbacks","each$7","AddOnManager","_listeners","dependencies","createUrl","baseUrl","dep","resource","loadDependencies","addOnUrl","deps","newUrl","urlString","baseURL","substring","lastIndexOf","instance","requireLangPack","languages","language","languageLoad","addOn","listener","addComponents","pluginName","pluginUrl","waitFor","PluginManager","ThemeManager","marker","wrap$1","append$1","rogue","remove$2","children$$1","first$1","rate","Cell","initial","read","remove$3","supports","classList","get$3","add$1","clazz","remove$4","add$2","cleanClass","remove$5","has$2","descendants","descendants$1","ClosestOrAncestor","ancestor","ancestor$1","descendant$1","closest$1","annotation","dataAnnotation","dataAnnotationId","identify","annotationName","rng","selection","getRng","getBody","an","newStart","getAttr","uid","findMarkers","isAnnotation","findAll","markers","directory","nodesAlready","setup","registry","changeCallbacks","withCallbacks","updateCallbacks","callbackMap","outputData","listeners","previous","fireCallbacks","fireNoAnnotation","onNodeChange","annotations","_a","addListener","setup$1","identifyParserNode","span","serializer","addNodeFilter","spans","persistent","create$1","register","__rest","getOwnPropertySymbols","add$3","classes","clone$1","original","fromHtml$1","set$2","docDom","fragment","contentElements","Zwsp","isElement$2","isText$2","isCaretContainerBlock","isCaretContainerInline","isCaretContainer","hasContent","insertInline","textNode","endsWithCaretContainer","splitText","startsWithCaretContainer","isBeforeInline","isAfterInline","createBogusBr","br","insertBlock","blockName","blockNode","showCaretContainerBlock","caretContainer","brs","lastBr","isContentEditableTrue$1","isContentEditableFalse$1","isBr$2","isText$3","isInvalidTextElement","isAtomicInline","isTable$1","isCaretContainer$1","isCaretCandidate","isNonUiContentEditableFalse","isUnselectable","isInEditable","isAtomicContentEditableFalse","isEditableCaretCandidate","round","clone$2","rect","width","height","collapse","toStart","isValidOverflow","overflowY","rect1","rect2","min","isAbove","isBelow","containsXY","overflowX","outer","inner","getSelectedNode","getNode","extendingChars","isExtendingChar","ch","liftN","slice$3","Predicate","isElement$3","isCaretCandidate$1","isBlock$1","isFloated","isValidElementCaretCandidate","isNotPre","isText$4","isBr$3","resolveIndex","isWhiteSpace","isRange","isHiddenWhiteSpaceRange","range$$1","getBrClientRect","brNode","clientRect","nbsp","getBoundingClientRectWebKitText","sc","ec","so","eo","newRng","cloneRange","setEndAfter","isZeroRect","clientRects","getClientRects","collapseAndInflateWidth","newClientRect","getCaretPositionClientRects","caretPosition","beforeNode","addUniqueAndValidRect","addCharacterOffset","isAtEnd","CaretPosition","toRange","isVisible","isAtStart","isEqual","fromRangeStart","fromRangeEnd","pos1","pos2","isTextPosition","isElementPosition","expected","HDirection","CaretPosition$1","isText$5","isBogus$1","nodeIndex$1","normalizedParent","getChildNodes","normalizedTextOffset","equal$1","normalizedNodeIndex","numTextFragments","createPathItem","create$2","outputOffset","resolvePathItem","findTextPosition","dataLen","targetOffset","resolve$2","isContentEditableFalse$2","getNormalizedTextOffset","trimmedOffset","getPoint","point","max","getLocation","bookmark","isCollapsed","end","trimEmptyTextNode","findIndex$3","moveEndPoint","normalizeTableCellSelection","findAdjacentContentEditableFalseElm","getOffsetBookmark","getCaretBookmark","getRangeBookmark","createBookmarkSpan","filled","data-mce-type","getPersistentBookmark","collapsed","rng2","endBookmarkNode","insertNode","startBookmarkNode","moveToBookmark","keep","GetBookmark","getBookmark","getUndoBookmark","isCaretNode","getParentCaretContainer","isElement$4","isText$6","removeNode","getNodeValue","setNodeValue","trimCount","trimmedText","removeUnchanged","remove$7","removeTextAndReposition","removeElementAndReposition","newPosition","removeTextCaretContainer","removeElementCaretContainer","caretContainerNode","CaretContainerRemove","removeAndReposition","browser$2","isContentEditableFalse$3","getAbsoluteClientRect","scrollX","scrollY","margin","rootRect","trimInlineCaretContainers","contentEditableFalseNodes","deleteData","FakeCaret","cursorInterval","lastVisualCaret","caretState","caret","startBlink","getCss","reposition","isFakeCaretTableBrowser","isFakeCaretTarget","isNbsp","isWhiteSpace$1","isContent","isContentEditableFalse$4","isBlockLike","isCaretContainer$2","isCaretContainerBlock$1","isElement$5","isCaretCandidate$2","isForwards","direction","isBackwards","skipCaretContainers","findNode","predicateFn","getParentBlock","isInSameBlock","caretPosition1","caretPosition2","getChildNodeAtRelativeOffset","relativeOffset","beforeAfter","setStartBefore","setEndBefore","setStartAfter","isNodesInSameBlock","node1","node2","lean","before$2","after$2","normalizeRange","leanLeft","leanRight","isNextToContentEditableFalse","isNextToTable","getRelativeCefElm","getNormalizedRangeEndPoint","normalizedRange","isBeforeContentEditableFalse","isAfterContentEditableFalse","isBeforeTable","isAfterTable","isChar","delta","isBeforeSpace","isAfterSpace","getElementFromPosition","getElementFromPrevPosition","isContentEditableFalse$5","isText$7","isElement$6","isBr$4","isCaretCandidate$3","isAtomic$1","isEditableCaretCandidate$1","nodeAtIndex","getCaretCandidatePosition","moveForwardFromBr","nextNode","findCaretPosition","Forwards","startPos","innerNode","rootContentEditableFalseElm","CaretWalker","Backwards","walkToPositionIn","position","fromPosition","isBeforeOrStart","isAfterOrEnd","isBeforeAfterSameElement","to","shouldSkipPosition","positionIn","nextPosition","prevPosition","CaretFinder","navigate","firstPositionIn","lastPositionIn","isStringPathBookmark","isRangeBookmark","isIdBookmark","isIndexBookmark","isPathBookmark","addBogus","resolveCaretPositionBookmark","insertZwsp","tryFindRangePosition","padEmptyCaretContainer","setEndPoint","isValidTextNode","restoreEndPoint","appendData","resolvePaths","resolveId","o1","o2","endPos","spos","epos","resolveIndex$1","selectNode","ResolveBookmark","Bookmarks","setRng","isInlineBlock","isWhiteSpaceNode","normalizeStyleValue","FormatUtils","moveStart","getNonWhiteSpaceSibling","inc","ed","replaceVars","vars","isEq","str1","getTextDecoration","decoration","isBookmarkNode$2","getParents$2","isWhiteSpaceNode$1","isTextBlock$2","findLeaf","excludeTrailingWhitespace","leaf","findParentContentEditable","findSpace","findWordEndPoint","lastTextNode","findSelectorEndPoint","format","curFormat","findBlockEndPoint","block","scopeRoot","findParentContainer","block_expand","ExpandRange","endPoint","expand","each$8","getEndChild","RangeWalk","startPoint","siblings","exclude","collectSiblings","endNode","findEndPoint","walkBoundary","api","getOptionSafe","getOption","NodeValue","get$6","isZeroWidth","wrapName","shouldApplyToTrailingSpaces","applyWordGrab","makeAnnotation","eDoc","decorate","_b","floor","master","_c","_d","_e","annotate","newWrappers","getDoc","finishWrapper","processElements","processElement","processNodes","annotateWithBookmark","undoManager","transact","initialRng","Annotator","changes","annotationChanged","getAll","hasOnlyOneChild","isPaddingNode","isPaddedEmptyBlock","isEmptyFragmentElement","nonEmptyElements","cleanupDomFragment","domFragment","toDomFragment","listItems$1","isPadding","trimListItems","getParentLi","parentBlock","getSplit","beforeRng","afterRng","cloneContents","findFirstIn","caretPos","newCaretPos","findLastOf","insertMiddle","InsertList","liTarget","liElms","isAt","caretWalker","newPos","each$9","ElementUtils","attribs","compareObjects","obj1","obj2","getLastChildren","rawNode","PaddingBr","allBrs","lastChild$$1","lastChildPrevSibling","makeMap$3","Writer","indent","indentBefore","indentAfter","htmlOutput","indent_before","indent_after","entity_encoding","element_format","raw","cdata","comment","pi","doctype","getContent","Serializer","writer","validate","handlers","3","8","7","10","4","11","sortedAttrs","elementRule","handler","shortEnded","createRange$1","normalizeBlockSelectionRange","commonAncestorContainer","newEndPos","RangeNormalizer","isAfterNbsp","trimOrPadLeftRight","hasSiblingText","trimNbspAfterDeleteAndPadValue","isTableCell$2","selectionSetContent","insertData","setContent","validInsertion","trimBrsFromTableCell","reduceInlineTextElements","merge","textInlineElements","root_1","elementUtils_1","testNode","markFragmentElements","isPartOfFragment","canHaveChildren","moveSelectionToMarker","parentEditableFalseElm","nextRng","scrollIntoView","getContentEditableFalseParent","findNextCaretRng","data-mce-bogus","insertHtmlAtCaret","details","parser","bookmarkHtml","paste","caretElement","parentElement","execCommand","parserArgs","insert","_selectionOverrides","showBlockCaretContainer","invalid","getStart","addVisual","processValue","InsertContent","insertAtCaret","sectionResult","mobilePlugins","defaultMobileSettings","theme","normalizePlugins","plugins","pluginNames","trimmedPlugins","filterMobilePlugins","extractSections","keys$$1","getSection","sections","sectionSettings","hasSection","getDefaultSettings","documentBaseUrl","delta_width","delta_height","popup_css","document_base_url","add_form_submit_trigger","submit_patch","add_unload_trigger","convert_urls","relative_urls","remove_script_host","object_resizing","visual","font_size_style_values","font_size_legacy_values","forced_root_block","hidden_input","render_ui","indentation","inline_styles","convert_fonts_to_spans","convertURL","ie7_compat","getExternalPlugins","overrideSettings","userDefinedExternalPlugins","external_plugins","combinePlugins","forcedPlugins","processPlugins","isTouchDevice","defaultOverrideSettings","forced_plugins","platformPlugins","combinedPlugins","isOnMobile","combineSettings","defaultSettings","extendedSettings","content_editable","getEditorSettings","getFiltered","getString","getParamObject","getParam","strongRtl","findInlineParents","isInlineTarget","normalizePosition","InlineUtils","findRootInline","isRtl","isAtZwsp","normalizeForwards","normalizeBackwards","hasSameParentBlock","block1","block2","isBeforeRoot","placeCaretInEmptyBody","setCursorLocation","DeleteUtils","fromPos","firstPos","lastPos","normalizedFirstPos","normalizedLastPos","normalizedFromPos","nextPos","prevPos","hasWhitespacePreserveParent","rootElement","isWhitespace","isNamedAnchor","isContent$1","isBookmark","isBogus$2","isBogusAll$1","isEmptyNode","targetNode","Empty","BlockPosition","BlockBoundary","getBlockPosition","containerElm","isDifferentBlocks","blockBoundary","hasSameParent","parent1","parent2","isEditable","skipLastBr","blockPosition","lastPositionInBlock","readFromRange","fromBlockPos","toBlockPos","blockPos","BlockMergeBoundary","parentsUntil$1","parents$1","Parents","getChildrenUntilBlockBoundary","extractChildren","removeEmptyRoot","parents$$1","nestedBlockMerge","fromBlock","toBlock","insertionPoint","child$$1","sidelongBlockMerge","findInsertionPoint","parentsAndSelf","getInsertionPoint","trimBr","mergeBlockInto","MergeBlocks","BlockBoundaryDelete","deleteRangeMergeBlocks","deleteContents","isRawNodeInTable","isSelectionInTable","isEverythingSelected","noPrevious","noNext","emptyEditor","deleteRange","BlockRangeDelete","Adt","cases","constructors","adt","acase","argLength","branches","branchKeys","reqKey","label","params","isBr$5","findBr","parentBlocks","isBeforeBr","isAfterBr","findPreviousBr","findNextBr","DeleteAction","moveToElement","moveToPosition","isAtContentEditableBlockCaret","caretLocation","isDeleteFromCefDifferentBlocks","inSameBlock","deleteEmptyBlockOrMoveToCef","toCefElm","blockElm","findCefPosition","getContentEditableBlockAction","skipMoveToActionFromInlineCefToContent","deleteAction","getContentEditableAction","read$2","isCollapsibleWhitespace","normalizeContent","isStartOfContent","isEndOfContent","previousCharIsSpace","normalize$1","replaceData","normalizeWhitespaceAfter","whitespaceCount","mergeTextNodes","prevNode","normalizeWhitespace","whitespaceOffset","needsReposition","getPreviousSiblingCaretPosition","getNextSiblingCaretPosition","findCaretPositionBackwardsFromElm","startPosition","findCaretPositionForwardsFromElm","findCaretPositionBackwards","findCaretPositionForward","findCaretPosition$1","findCaretPosOutsideElmAfterDelete","setSelection","isBlock$2","paddEmptyBlock","deleteNormalized","afterDeletePosOpt","prevTextOpt","nextTextOpt","isInlineElement","DeleteElement","moveCaret","afterDeletePos","normalizedAfterDeletePos","paddPos","deleteElement$1","hideFakeCaret","backspaceDeleteCaret","backspaceDeleteRange","selectedElement","getContentEditableRoot","CefDelete","ceRoot","isText$8","startsWithCaretContainer$1","endsWithCaretContainer$1","createZwsp","insertBefore$1","newNode","insertAfter$1","insertInline$1","insertInlineBefore","insertInlineAfter","insertInlinePos","isPosCaretContainer","caretNode","BoundaryCaret","LazyEvaluator","fns","Location","rescope","before$3","nPos","isNotInsideFormatCaretContainer","findInsideRootInline","after$3","isValidLocation","getElement","readLocation","getName","outside","betweenInlines","fromInline","toInline","skipNoMovement","fromLocation","toLocation","location1","location2","findLocationTraverse","findLocationSimple","findLocation","BoundaryLocation","hasSelectionModifyApi","getSel","modify","moveRel","WordSelection","setCaretPosition","isFeatureEnabled","inline_boundaries","setSelected","renderCaretLocation","findLocation$1","toggleInlines","selectedInlines","targetInlines","safeRemoveCaretContainer","composing","renderInsideInlineCaret","inlines","moveWord","BoundarySelection","move","moveNextWord","movePrevWord","setupSelectedState","isFeatureEnabled$1","rangeFromPositions","hasOnlyTwoOrLessPositionsLeft","setCaretLocation","location$$1","deleteFromTo","ignore","nodeChanged","rescope$1","backspaceDeleteCollapsed","toPosition","InlineBoundaryDelete","tableCellRng","tableSelection","removeTable","emptyCells","isRootFromElement","getClosestCell","getClosestTable","cell","isExpandedCellRng","cellRng","getTableFromCellRng","startParentTable","endParentTable","getTableCells","getCellRangeFromStartTable","endCell","partialSelection","startCell","isWithinSameTable","getCellRng","getTableSelectionFromCellRng","getTableSelectionFromRng","getCellIndex","cells","getSelectedCells","startIndex","endIndex","getAction","TableDeleteAction","getRanges","ranges","rangeCount","getRangeAt","MultiRange","getCellsFromRanges","getCellsFromElement","getCellsFromElementOrRanges","selectedCells","rangeCells","TableCellSelection","deleteTableElement","deleteCellRange","action","deleteCaptionRange","emptyElement","deleteTableRange","startElm","getParentCaption","deleteRange$1","getParentCell","deleteBetweenCells","fromCell","toCell","isDeleteOfLastCharPos","fromCaption","last$$1","emptyCaretCaption","validateCaretCaption","toCaption","deleteCaretInsideCaption","deleteCaretCells","deleteCaretCaption","deleteCaret","TableDelete","nativeCommand","command","DeleteCommands","deleteCommand","forwardDeleteCommand","getBodySetting","bodyObj","Settings","getIframeAttrs","getDocType","getDocumentBaseUrl","getBodyId","getBodyClass","getContentSecurityPolicy","shouldPutBrInPre","getForcedRootBlock","getForcedRootBlockAttrs","getBrNewLineSelector","getNoNewLineSelector","shouldKeepStyles","shouldEndContainerOnEmptyBlock","getFontStyleValues","getFontSizeClasses","getImagesDataImgFilter","isAutomaticUploadsEnabled","shouldReuseFileName","shouldReplaceBlobUris","getImageUploadUrl","getImageUploadBasePath","getImagesUploadCredentials","getImagesUploadHandler","shouldUseContentCssCors","getSpecifiedFontProp","getProperty","round$1","number","precision","factor","pow","getComputedFontProp","getFontProp","FontInfo","getFontSize","getFontFamily","fontFamily","toPt","fontSize","findFirstCaretElement","isRangeAtStartOfNode","getCaretElement","fromFontSizeNumber","fontSizeNumber","fontSizes","fontClasses","fontNameAction","formatter","toggle","fontNameQuery","fontSizeAction","fontSizeQuery","RangeCompare","rng1","findParent","hasParent","hasParentWithName","isTable$2","isTableCell$3","isCeFalseCaretContainer","hasBrBeforeAfter","isPrevNode","hasContentEditableFalseParent","findTextNodeRelative","isAfterNode","lastInlineElement","parentBlockContainer","normalizeEndPoint","directionLeft","NormalizeRange","normalize","normRng","hasRightSideContent","scrollToBr","brElm","moveSelectionToBr","extraBr","insertBrAtCaret","isAfterLastNodeInContainer","containerBlock","containerBlockName","isControlKey","ctrlKey","insertBrBefore","insertBrAfter","hasBrAfter","isAnchorLink","isInsideAnchor","readInlineAnchorLocation","insertBrOutsideAnchor","InsertBr","anchorLocation","type$1","domRange","exact","range$1","browser$3","clamp","normalizeRng","soffset","finish","foffset","isOrContains","isRngInRoot","shouldStore","nativeRangeToSelectionRange","readRange","getBookmark$2","bookmarkToNativeRng","SelectionBookmark","store","newBookmark","storeNative","restore","indentElement","useMargin","unit","indentStyleName","styleValue","isListComponent","parentIsListComponent","getBlocksToIndent","getSelectedBlocks","indentUnit","indentValue","queryCommandState","each$a","extend$2","map$3","inArray$2","EditorCommands","commands","quirks","addCommands","commandList","addQueryValueHandler","ui","customCommand","skip_focus","queryCommandValue","queryCommandSupported","addCommand","addQueryStateHandler","hasCustomCommand","execNativeCommand","isFormatMatch","toggleFormat","storeSelection","restoreSelection","mceResetDesignMode,mceBeginUndoLevel","mceEndUndoLevel,mceAddUndoLevel","Cut,Copy,Paste","queryCommandEnabled","translate","notificationManager","open","unlink","JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone","align","InsertUnorderedList,InsertOrderedList","listElm","listParent","Bold,Italic,Underline,Strikethrough,Superscript,Subscript","ForeColor,HiliteColor","FontName","FontSize","RemoveFormat","mceBlockQuote","FormatBlock","mceCleanup","mceRemoveNode","mceSelectNodeDepth","mceSelectNode","mceInsertContent","mceInsertRawHTML","mceToggleFormat","mceSetContent","Indent,Outdent","mceRepaint","InsertHorizontalRule","mceToggleVisualAid","hasVisual","mceReplaceContent","mceInsertLink","anchor","selectAll","editingHost","selectNodeContents","delete","forwardDelete","mceNewDocument","InsertLineBreak","alignStates","matchNode","JustifyLeft","JustifyCenter","JustifyRight","JustifyFull","Outdent","paddingLeft","getEnd","list","Undo","undo","Redo","redo","nativeEvents","Dispatcher","toggleEvent","bindings","extra","bindingName","hi","beforeFire","once","isNative","customEventRootDelegates","getEventDispatcher","_eventDispatcher","toggleNativeEvent","Observable","bubble","hasEventListeners","Events","setEditorCommandState","cmd","toggleReadOnly","controlSelection","hideResizeRect","setMode","getMode","initialized","isReadOnly","DOM$1","getEventTarget","eventName","event_root","eventRoot","isListening","hidden","fireEvent","bindEventDelegate","eventRootElm","delegate","delegates","editorManager","activeEditor","editors","EditorObservable","bindPendingEventDelegates","_pendingNativeEvents","unbindAllNativeEvents","getWin","getContainer","EditorObservable$1","each$b","explode$2","keyCodeLookup","f9","f10","f11","modifierNames","Shortcuts","shortcuts","pendingPatterns","parseShortcut","shortcut","keyCode","charCode","access","alt","ctrl","meta","createShortcut","desc","cmdFunc","subpatterns","hasModifier","altKey","isFunctionKey","matchShortcut","shiftKey","executeShortcutAction","getContentEditableHost","getCollapsedNode","getFocusInElement","normalizeSelection","focusBody","setActive","hasIframeFocus","iframeElement","hasInlineFocus","_doc","rawBody","hasFocus$1","focusEditor","refreshContentEditable","contentEditableHost","activateEditor","bookmarkRng","EditorFocus","skipFocus","getProp","getComputedSizeProp","getClientWidth","getClientHeight","getMarginTop","getMarginLeft","getBoundingClientRect$1","isInsideElementContentArea","bodyElm","transpose","EditorView","isXYInContentArea","targetElm","transposedPoint","isEditorAttachedToDom","rawContainer","getContentAreaContainer","NotificationManager","notifications","getImplementation","unimplemented","getNotificationManagerImpl","close","getArgs","addNotification","notification","closeNotification","otherNotification","progressBar","timeout","serviceMessage","service_message","icon","registerEvents","getNotifications","WindowManager","getWindowManagerImpl","alert","confirm","getParams","setParams","funcBind","fireOpenEvent","fireCloseEvent","addWindow","closeWindow","otherWindow","getTopWindow","getWindows","resolvePluginName","targetUrl","pluginUrlToMessage","plugin","displayNotification","displayError","_skinLoaded","ErrorReporter","pluginLoadError","uploadError","initError","console$$1","PluginManager$1","XMLHttpRequest","Uploader","uploadStatus","pendingPromises","defaultHandler","blobInfo","progress","xhr","formData","withCredentials","credentials","upload","onprogress","loaded","total","json","JSON","responseText","path1","basePath","path2","FormData","filename","send","handlerSuccess","handlerFailure","resolvePending","blobUri","uploadBlobInfo","openNotification","markPending","closeNotification_1","markUploaded","removeFailed","percent","pendingUploadBlobInfo","uploadBlobs","blobInfos","isUploaded","isPending","Uint8Array","Window","base64","blobUriToBlob","rejectWithError","responseType","response","parseDataUri","uri","uriParts","decodeURIComponent","Conversions","Blob","reader","onloadend","readAsDataURL","imageToBlobInfo","blobCache","img","findFirst","cachedBlobInfo","err","getByUri","dataUri","getAllImages","ImageScanner","cachedPromises","images","promises","imageInfo","newPromise","count$1","Uuid","uuid","rnd","EditorUpload","toBlobInfo","uploader","imageScanner","blobUriStatuses","createStatus","hasBlobUri","mime","image/jpeg","image/jpg","image/gif","image/png","removeByUri","resultUri","getResultUri","urlFilters","aliveGuard","replaceString","replaceImageUrl","replacementUrl","replaceUrlInUndoStack","level","fragments","replaceImageUri","data-mce-src","uploadImages","scanForImages","imageInfos","filteredResult","uploadInfo","uploadImagesAuto","isValidDataUriImage","imgElm","filter$$1","dataImgFilter","resultItem","replaceBlobUris","editorUpload","source_view","addFilter","isBlockElement","blockElements","isValidTarget","hasBlockParent","shouldRemoveTextNode","addRootBlocks","rootBlockNode","tempNode","wrapped","rootNodeName","forcedRootBlock","forced_root_block_attrs","ForceBlocks","getStartNode","getEndNode","getFirstChildren","getLastChildren$1","hasAllContentsSelected","moveEndPoint$1","hasAnyRanges","sel","NodeChange","lastRng","lastPath","isSameElementPath","currentPath","nativeRng","fakeRng","selectionChange","disable_nodechange","VDirection","getAbsolutePosition","getBodyPosition","getScrollPosition","getBodyScroll","inlineScroll","iframeScroll","getMousePosition","iframePosition","scrollPosition","MousePosition","bodyPosition","mousePosition","isContentEditableFalse$6","isContentEditableTrue$3","isValidDropTarget","targetElement","dragElement","cloneElement","cloneElm","createGhost","clonedElm","ghostElm","unselectable","contenteditable","overflow","padding","boxSizing","moveGhost","maxX","maxY","removeElement","isLeftMouseButtonPressed","hasDraggableElement","applyRelPos","relX","start$1","ceElm","elmPos","screenX","screenY","scrollWidth","scrollHeight","relY","ghost","move$1","throttledPlaceCaretAt","placeCaretAt","movement","abs","dragging","targetPos","drop","targetClone_1","targetClone","insertContent","removeDragState","stop$$1","bindFakeDragEvents","pageDom","dragStartHandler","dragHandler","dropHandler","dragEndHandler","rootDocument","blockIeDrop","realTarget","DragDropOverrides","getNodeClientRects","toArrayWithNode","findUntil","walkUntil","isAboveFn","isBeflowFn","targetClientRect","line","aboveLineNumber","lineNumber","isLineNumber","upUntil","Up","downUntil","Down","positionsUntil","walkFn","isBelowFn","getClientRect","isAboveLine","isLine","isContentEditableFalse$7","findNode$1","distanceToRectLeft","distanceToRectRight","isInside","findClosestClientRect","oldClientRect","oldDistance","newDistance","walkUntil$1","findLineNodeRects","targetNodeRect","checkPosFn","lineRects","getFakeCaretTargets","caretInfo","closestCaret","closestNodeRect","contentEditableFalseNodeRects","targetNodeRects","RangePoint","isContentEditableTrue$4","isContentEditableFalse$8","showCaret","getNodeRange","renderCaretAtRange","caretPositionNode","caretPositionBeforeNode","renderRangeCaret","caretRange","CefFocus","renderFocusCaret","VK","BACKSPACE","DELETE","DOWN","ENTER","LEFT","RIGHT","SPACEBAR","TAB","UP","modifierPressed","metaKeyPressed","isContentEditableTrue$5","isContentEditableFalse$9","isAfterContentEditableFalse$1","isBeforeContentEditableFalse$1","getContentEditableRoot$1","SelectionOverrides","selectedContentEditableNode","fakeCaret","realSelectionId","setRange","getRange","showCaret$$1","getNormalizedRangeEndPoint$$1","isWithinCaretContainer","isRangeInCaretContainer","setContentEditableSelection","$realSelectionContainer","origTargetClone","removeAllRanges","addRange","removeContentEditableSelection","contentEditableRoot","hasNormalCaretPosition","moved","handleTouchSelect","targetBlock","caretBlock","clipboardData","realSelectionElement","clearData","setData","outerText","contentStyles","rootClass","addCss","blockCaretContainer","isValidPrefixAttrName","trimComments","isInvalidUri","allow_html_data_urls","findEndTagIndex","tokenRegExp","shortEndedElements","SaxParser","fix_self_closing","endRegExp","attrList","textData","isInternalElement","removeInternalElements","fillAttrsMap","isShortEnded","isValidElement","attribsValue","validAttributesMap","validAttributePatterns","processHtml","selfClosing","attrRegExp","fixSelfClosing","stack","filteredUrlAttrs","scriptUriRegExp","processEndTag","valid","parseAttribute","val2","val3","attrRule","unescape","self_closing_elements","remove_internals","allow_conditional_comments","findEndTag","SaxParser$1","trimHtml","tempAttrs","trimContentRegExp","trimInternal","endTagIndex","matchLength","bogusAllRegExp","getTempAttrs","TrimHtml","trimExternal","Diff","vDown","vUp","snake","diag","buildScript","start1","end1","start2","end2","middle","getMiddleSnake","i2","buildSnake","sum","getOuterHtml","createFragment$1","insertAt","removeAt","applyDiff","Fragments","currentFragments","undoLevelDocument","createFragmentedLevel","beforeBookmark","createCompleteLevel","getLevelContent","getCleanLevelContent","implementation","createHTMLDocument","hasEqualContent","level1","level2","hasEqualCleanedContent","Levels","createFromEditor","trimmedFragments","trimmed","applyToEditor","UndoManager","isFirstTypedCharacter","locks","isUnlocked","setTyping","typing","setDirty","addNonTypingUndoLevel","endTyping","beforeChange","isDirty","lastLevel","modKey","isInsertTextDataNull","inputType","addShortcut","currentLevel","custom_undo_redo_levels","clear","hasUndo","hasRedo","callback1","callback2","isEq$4","matchesUnInheritedFormatSelector","formatList","inherit","matchParents","matchName","matchItems","itemName","similar","onmatch","MatchFormat","matchAll","startElement","matchedFormatNames","checkedMap","canApply","defaultBlock","SplitRange","ZWSP$1","getEmptyCaretContainers","isCaretContainerEmpty","findFirstTextNode","createCaretContainer","fill","trimZwspFromCaretContainer","removeCaretContainerNode","removeCaretContainer","insertCaretContainerNode","formatNode","appendNode","insertFormatNodesIntoCaretContainer","formatNodes","innerMostFormatNode","applyCaretFormat","wordcharRegex","importNode","removeCaretFormat","hasContentAfter","expandedRng","newCaretContainer","disableCaretContainer","setup$4","replaceWithCaretFormat","innerMost","isFormatElement","postProcessHooks","filter$2","each$c","addPostProcessHook","isPre","blocks","joinPre","pre1","pre2","pre","Hooks","MCE_ATTR_RE","each$d","isEq$5","isChildOfInlineParent","lastIdx","wrap$2","wrapWithSiblings","siblings$$1","matchName$1","isColorFormatAndAnchor","links","find$4","removeNode$1","rootBlockElm","list_block","removeFormat","compareNode","stylesModified","remove_similar","valueOut","findFormatRoot","formatRoot","wrapAndSplit","lastClone","firstClone","formatRootParent","mixed","splitToFormatRoot","isRemoveBookmarkNode","process","lastContentEditable","removeRngStyle","textDecoration","ceFalseOverride","each$e","isElementNode","findElementSibling","mergeSiblingsNodes","tmpSibling","elementUtils","processChildElements","hasStyle","applyStyle","unwrapEmptySpan","processUnderlineAndColor","clearChildStyles","clear_child_styles","MergeFormats","backgroundColor","merge_siblings","merge_with_parents","each$f","isElementNode$1","applyFormat","setElementFormat","fmt","onformat","styleVal","applyNodeStyle","found","applyRngStyle","nodeSpecific","wrapElm","currentWrapElm","parentName","childCount","getChildElementNode","getChildCount","mergeStyles","curSelNode","ApplyFormat","each$g","setup$5","formatChangeData","currentFormats","matchedFormats","addListeners","formats","formatChangeItems","FormatChanged","formatChanged","formatChangeState","DefaultFormats","valigntop","verticalAlign","valignmiddle","valignbottom","alignleft","preview","textAlign","aligncenter","display","marginLeft","marginRight","alignright","alignjustify","bold","fontWeight","italic","fontStyle","underline","strikethrough","forecolor","hilitecolor","fontname","fontsize","fontsize_class","blockquote","subscript","superscript","code","removeformat","FormatRegistry","unregister","each$h","parsedSelectorToHtml","ancestry","sItem","getRequiredParent","elmRule","wrapInHtml","parentCandidate","parentRequired","ancestorName","siblingElm","parseSelectorItem","$0","$1","$2","$3","$4","parseSelector","Preview","getCssText","previewFrag","previewElm","parentFontSize","previewStyles","previewCss","preview_styles","removeVars","parseFloat","selectorToHtml","ToggleFormat","FormatShortcuts","Formatter","merger","hasOwnProperty$2","objects","curObject","DomSerializerFilters","htmlParser","addAttributeFilter","internalName","cleanup","trimTrailingBr","brNode1","brNode2","preProcess","impl","oldDoc","shouldFireEvent","no_events","DomSerializerPreProcess","removeAttrs","addFontToSpansFilter","domParser","face","addStrikeToSpanFilter","addFilters","LegacyFilter","whiteSpaceRegExp$3","typeLookup","#text","#cdata","#pi","#doctype","#document-fragment","walk$2","Node$2","selfAttrs","selfAttr","cloneAttrs","refNode","paddEmptyNode","padd_empty_with_br","isPaddedWithNbsp","hasOnlyChild","isPadded","isEmpty$2","whitespaceElements","isLineBreakNode","register$2","remove_trailing_brs","prevName","whiteSpaceElements","newRel","appendRel","allow_unsafe_link_target","allow_html_in_named_anchor","fix_list_elements","classValue","validClassesMap","makeMap$4","each$i","explode$3","extend$3","DomParser","nodeFilters","attributeFilters","matchedNodes","matchedAttributes","root_name","fixInvalidChildren","newParent","currentNode","childNode","nonSplitableElements","textBlockElements","fixed","filterNode","getAttributeFilters","getNodeFilters","fi","fl","isInWhiteSpacePreservedElement","invalidChildren","rootBlockName","startWhiteSpaceRegExp","endWhiteSpaceRegExp","allWhiteSpaceRegExp","isAllWhiteSpaceRegExp","createNode","removeWhitespaceBefore","textNodeNext","textVal","cloneAndExcludeBlocks","attrFiltersLen","isRootContent","addTempAttr","postProcess$1","getHtmlFromNode","getInner","parseHtml","serializeNode","toHtml","DomSerializer","addRules","rules","setRules","Serializer$1","domSerializer","BookmarkManager","BreakType","BookmarkManager$1","isContentEditableFalse$a","isContentEditableTrue$6","getContentEditableRoot$2","ControlSelection","selectedElm","selectedElmGhost","resizeHelper","resizeHandles","selectedHandle","startX","startY","selectedElmX","selectedElmY","startW","startH","ratio","resizeStarted","startScrollWidth","startScrollHeight","editableDoc","nw","ne","se","sw","isImage","isEventOnImageOutsideRange","contextMenuSelectImage","getResizeTarget","isResizable","resizeGhostElement","deltaX","deltaY","resizeHelperX","resizeHelperY","resize_img_proportional","endGhostResize","setSizeProp","showResizeRect","targetWidth","targetHeight","unbindResizeHandleEvents","handleElm","startDrag","unSelectabe","updateResizeRect","controlElm","isChildOrEqual","disableGeckoResize","isWithinContentEditableFalse","delayedSelect","throttledUpdateResizeRect","getPos$1","fireScrollIntoViewEvent","alignToTop","scrollEvent","getViewPortRect","scrollBy","dx","dy","ScrollIntoView","viewPort","viewPortY","viewPortH","offsetY","scrollContainer","getScrollContainer","scrollTo","rngRect","bodyRect","hasCeProperty","findParent$1","findClosestIeRange","rects","createTextRange","moveToElementText","moveToPoint","moveOutOfContentEditableFalse","CaretRangeFromPoint","pointDoc","caretPositionFromPoint","offsetNode","caretRangeFromPoint","EventProcessRanges","fromElements","tableModel","tableRow","cellPosition","getSpan","isNaN","fillout","rowspan","colspan","rows","y2","x2","cellExists","skipCellsX","getWidth","row","findElementPos","extractRows","sx","sy","ey","newRows","subTable","createDomTable","tableElement","tableBody","modelRowsToDomRows","SimpleTableModel","tableElm","endElement","findParentListContainer","getFullySelectedListWrappers","listCont","directListWrappers","commonAnchorContainer","getWrapElements","wrapElements","listWrappers","allWrappers","emptyFragment","getFragmentFromRange","innerElm","getTableFragment","selectedTableCells","firstCell","lastCell","fullTableModel","sectionedTableModel","getSelectionFragment","FragmentReader","getTextContent","getHtmlContent","tmpElm","contextual","GetSelectionContent","SetSelectionContent","createContextualFragment","pasteHTML","getEndpointElement","real","getStart$2","skipEmptyTextNodes","forwards","orig","getNode$1","endElm","selectedBlocks","select$1","each$j","isNativeIeSelection","isAttachedToDom","isValidRange","Selection","bookmarkManager","selectedRange","explicitRange","selectorChangedData","tryCompareBoundaryPoints","how","sourceRange","destinationRange","compareBoundaryPoints","START_TO_START","END_TO_END","ieRange","setBaseAndExtent","anchorNode","focusNode","isForward","anchorRange","focusRange","anchorOffset","focusOffset","compareEndPoints","setNode","selectorChanged","currentSelectors","matchedSelectors","isContentEditableFalse$b","getSelectedNode$1","isAfterContentEditableFalse$2","isBeforeContentEditableFalse$2","getVisualCaretPosition","moveToCeFalseHorizontally","getNextPosFn","peekCaretPosition","rangeIsInContainerBlock","isBeforeContentEditableFalseFn","moveToCeFalseVertically","walkerFn","linePositions","nextLinePositions","closestNextLineRect","caretClientRect","dist1","dist2","contentEditableFalseNode","caretPositions","createTextBlock","textBlock","exitPreBlock","newBlock","getNextVisualCaretPosition","getPrevVisualCaretPosition","getHorizontalRange","newRange","getVerticalRange","down","moveH","moveV","flip","positions","walk$3","getBreakType","currentPos","Br","Block","Wrap","getPositionsUntil","breakType","breakAt","Eol","getAdjacentLinePositions","getPositionsUntilBreak","findClosestHorizontalPositionFromPoint","lastRect","newRect","lastDist","findClosestHorizontalPosition","targetRect","getPositionsUntilPreviousLine","getPositionsUntilNextLine","isAtFirstLine","isAtLastLine","getPositionsAbove","getPositionsBelow","deflate","getCorners","getYAxisValue","tds","findClosestCorner","corners","newCorner","oldCorner","oldDist","sqrt","newDist","getClosestCell$1","isTargetCorner","corner","getClosestCellAbove","getClosestCellBelow","findClosestPositionInAboveCell","findClosestPositionInBelowCell","moveToRange","hasNextBreak","lineInfo","breakPos","startsWithWrapBreak","startsWithBrBreak","isAtTableCellLine","isAtFirstTableCellLine","isAtLastTableCellLine","isCaretAtStartOrEndOfTable","navigateHorizontally","getClosestAbovePosition","getClosestBelowPosition","getTable","renderBlock","navigateVertically","moveH$1","moveV$1","isTarget","rangeBefore","insertElement","insertBr","insertBlock$1","insertEmptyLine","getClosestTargetBlock","isAtFirstOrLastLine","moveCaretToNewEmptyLine","rootBlock","rootBlockAttrs","moveV$2","defaultPatterns","patterns","matchesEvent","match$1","MatchKeys","executeKeydownOverride","ArrowKeys","getParentInlines","hasOnlyOneChild$1","deleteLastPosition","parentInlines","isFormatElement$$1","deleteCaret$1","InlineFormatDelete","executeKeydownOverride$1","executeKeyupOverride","DeleteBackspaceKeys","firstNonWhiteSpaceNodeSibling","getParentBlock$2","NewLineUtils","lastNode","tempElm","editableRoot","hasFirstChild","hasParent$1","isListBlock","getContainerBlock","containerBlockParent","isFirstOrLastLi","InsertLi","createNewBlock","newBlockName","tmpRng","trimZwsp","isEmptyAnchor","isTableCell$5","emptyBlock","containerAndSiblingName","canSplitBlock","trimInlineElementsOnLeftSideOfBlock","firstChilds","normalizeZwspOffset","includeZwspInRange","trimLeadingLineBreaks","getEditableRoot$1","setForcedBlockAttrs","forcedRootBlockName","wrapSelfAndSiblingsInDefaultBlock","addBrToBlockIfNeeded","InsertBlock","parentBlockName","clonedNode","isCaretAtStartOrEndOfBlock","normalizedOffset","insertNewBlockAfter","ContextSelectors","newLineAction","shouldBlockNewLine$1","isBrMode","requiredState","inListBlock","inBlock","inPreBlock","shouldPutBrInPre$1","inBrContext","hasShiftKey","canInsertIntoEditableRoot","rootEditable","match$2","predicates","NewLineAction","InsertNewLine","endTypingLevel","handleEnterKeyEvent","EnterKey","insertTextAtPosition","insertNbspAtPosition","insertSpaceAtPosition","isAtBlockBoundary","isAtStartOfBlock","isAtEndOfBlock","isInMiddleOfText","getClosestBlock","hasSpaceBefore","hasSpaceAfter","isInPre","isAtBeginningOfBody","isAtEndOfBody","isAtLineBoundary","needsToHaveNbsp","needsToBeNbspLeft","needsToBeNbspRight","isNbspAt","hasNbsp","normalizeNbspAtStart","normalizeNbspMiddle","chars","normalizeNbspAtEnd","normalizeNbsps","newText","normalizeNbspsInEditor","locationToCaretPosition","insertInlineBoundarySpaceOrNbsp","checkPos","setSelection$1","insertSpaceOrNbspAtSelection","executeKeydownOverride$2","SpaceKey","findBlockCaretContainer","removeIeControlRect","handleBlockContainer","CaretContainerInput","browser$4","setupIeInput","keypressThrotter","setup$c","isComposing","KeyboardOverrides","Quirks","serializeRng","allContentsSelected","isGecko","isWebKit","mceInternalDataType","setMceInternalContent","selectionHtml","internalContent","dataTransfer","escape","getMceInternalContent","getData","disableBackspaceIntoATable","bodyHeight","allRng","tapLinksAndImages","internal","ieInternalDragAndDrop","Range","body_1","blur","getAttributeApplyFunction","template","setAttributeNode","isSelectionAcrossElements","applyAttributes","removeStylesWhenDeletingAcrossBlockElements","isTextBlockNode","normalizeSelection$1","setup$e","detail","preventSummaryToggle","filterDetails","setup$f","DOM$2","appendStyle","createParser","autoFocus","auto_focus","destroyed","initEditor","execCallback","getStyleSheetLoader","InitContentBody","skipWrite","contentCssText","visibility","orgVisibility","write","iframeHTML","bodyEl","content_document","content_window","bodyElement","hex_colors","force_hex_style_colors","class_filter","annotator","_nodeChangeDispatcher","browser_spellcheck","gecko_spellcheck","spellcheck","directionality","nowrap","whiteSpace","protect","startContent","contentCSS","content_style","DOM$3","relaxDomain","ifr","domain","hostname","bodyUuid","domainRelaxUrl","normalizeHeight","normalizedHeight","createIframeElement","title","customAttrs","iframe","frameBorder","allowTransparency","getIframeHtml","bodyId","bodyClass","documentBaseURI","getURI","createIframe","isDomainRelaxed","contentAreaContainer","iframeContainer","InitIframe","boxInfo","editorContainer","orgDisplay","DOM$4","initPlugin","initializedPlugins","pluginInstance","Plugin","trimLegacyPrefix","initPlugins","initTheme","Theme","renderFromLoadedTheme","minHeight","re","min_height","renderUI","deltaWidth","deltaHeight","iframeHeight","renderFromThemeFunc","createThemeFalseResult","renderThemeFalseIframe","renderThemeFalse","renderThemeUi","Init","rtl","rtl_ui","i18n","setCode","aria_label","getLang","content_css","toAbsolute","DOM$5","hasSkipLoadPrefix","loadLanguage","scriptLoader","language_url","loadTheme","themeUrl","theme_url","loadPlugins","Render","render","form","formElement","hasHiddenInput","formEventDelegate","_mceOldSubmit","triggerSave","windowManager","encoding","save","_beforeUnload","set_dirty","Sidebar","sidebars","each$k","trim$4","queryParts","DEFAULT_PORTS","ftp","http","https","mailto","URI","baseUri","base_uri","source","isProtocolRelative","protocol","toAbsPath","part","userInfo","port","setPath","toRelative","tu","uu","toRelPath","noHost","isSameOrigin","defaultPort","breakPoint","outPath","nb","noProtoHost","loc","pathname","trimEmptyContents","emptyRegExp","getContentFromBody","getContent$1","traverse","findMatchingNodes","nodeMatches","attrMatches","isTreeNode","moveSelection","setEditorHtml","setContentString","padd","setContentTree","setContent$1","DOM$6","restoreOriginalStyles","safeDestroy","clearDomReferences","restoreForm","remove$9","is_removing","automatic","DOM$7","extend$4","each$l","resolve$4","ie$2","Editor","documentBaseURL","baseURI","language_load","loadedCSS","editorCommands","buttons","menuItems","cache_suffix","override_viewport","callbackLookup","lang_1","i18n_1","addButton","onclick","stateSelector","active","tooltip","addSidebar","addMenuItem","addContextToolbar","contextToolbars","focusedEditor","setProgressState","isNotDirty","oldState","urlconverter_callback","visual_table_class","visual_anchor_class","_scanForImages","documentFocusInHandler","beforeUnloadDelegate","EditorManager","FocusManager","isEditorUIElement","isManualNodeChange","registerPageMouseUp","throttledStore","mouseUpPage","registerFocusOut","registerMouseUp","registerEditorEvents","SelectionRestore","DOM$8","isEditorUIElement$1","isUIElement","customSelector","custom_ui_selector","getActiveElement","blurredEditor","unregisterDocumentEvents","FocusController","newCode","_dir","getCode","langData","getLangData","values_1","DOM$9","explode$4","each$m","extend$5","instanceCounter","boundGlobalEvents","legacyEditors","globalEventDelegate","toggleGlobalEvents","removeEditorFromList","targetEditor","oldEditors","purgeDestroyedEditor","majorVersion","minorVersion","releaseDate","preInit","tinyMCEPreInit","srcScript","currentScript","base_url","pluginBaseUrls","plugin_base_urls","invalidInlineTargets","isInvalidInlineTarget","createId","findTargets","targets","types","forms","editor_deselector","editor_selector","provideResults","initEditors","initCount","createEditor","addI18n","EditorManager$1","RangeUtils","normalizedRng","compareRanges","getCaretRangeFromPoint","extendClass","initializing","RangeUtils$1","round$2","relativePosition","targetW","targetH","create$3","Rect","inflate","findBestRelativePosition","constrainRect","rels","intersect","cropRect","x1","y1","clampRect","fixedSize","underflowX1","underflowY1","overflowX2","overflowY2","cx2","cy2","fromClientRect","Factory","typeClass","lctype","controlType","ControlType","each$n","extend$6","Class","member","_super","mixins","mixin","Mixins","dummy","createMethod","name_1","Methods","Properties","fieldName","Statics","Defaults","min$1","max$1","round$3","quote","JSON$1","JSONP","XHR","ready","success_scope","error_scope","overrideMimeType","content_type","crossDomain","setRequestHeader","requestheaders","localStorage$$1","extend$7","JSONRequest","sendRPC","ecb","scb","ty","method","localStorage","storage","getItem","setItem","removeItem","defineProperty","configurable","enumerable","publicApi","geom","util","EventDispatcher","LocalStorage","Color","rgb2hsv","minRGB","maxRGB","hsvToRgb","hue","saturation","brightness","side","chroma","toRgb","toHsv","isMac","Tinymce","tinyMCE","exportToWindowGlobal","exportToModuleLoaders","global","global$1","Direction","curDir","Commands","generateSelector","Buttons","__webpack_exports__","__WEBPACK_IMPORTED_MODULE_0_i18nObj__","__WEBPACK_IMPORTED_MODULE_0_i18nObj___default","__WEBPACK_IMPORTED_MODULE_1_jquery__","translations","ar","hide_account_navigation_menu_ccdf9480","hide_admin_navigation_menu_5cab9c9e","hide_courses_navigation_menu_6f7c4cfd","hide_groups_navigation_menu_62e8b3d0","hide_navigation_menu_f0b3e90","show_account_navigation_menu_d97270a9","show_admin_navigation_menu_92fb579f","show_courses_navigation_menu_7ad1a8d4","show_groups_navigation_menu_1521d38d","show_navigation_menu_34e7f441","cy","da","da-x-k12","en-AU","en-CA","en-GB","en-GB-x-lbs","en-GB-x-ukhe","es","fr","fr-CA","he","ht","hu","it","ja","mi","nb-x-k12","nl","nn","pl","pt","pt-BR","ru","sl","sv","sv-x-k12","uk","zh-Hans","zh-Hant","map$1","sort$1","reqMessage","unsuppMessage","unsupported","validateStrArr","invalidTypeMessage","incorrect","checkDupes","everything","sorted","MixedBag","optional","req","dimensions","grid","address","coords","detailnew","Structs","extended","rowdata","elementnew","rowdatanew","rowcells","rowdetails","bounds","COMMENT","checkRange","filterFirstLayer","LayerSelector","firstLayer","has$1","ancestors","children$1","ancestors$1","children$2","child$1","child$2","tags","_isRoot","neighbours","TableLookup","neighbourCells","notCell","neighbourRows","rowProp","colProp","cols","DetailsList","parentSection","example","section","column","filterItems","warehouse","Warehouse","generate","maxRows","maxColumns","currentRow","cc","newpos","getAt","findItem","filtered","justCells","internalRemove","set$1","setAll$1","getRaw","remove$1","after$1","stats","findSelectedStats","house","isSelected","totalColumns","columns","minRow","minCol","maxRow","maxCol","startRow","endRow","startCol","endCol","makeCell","seenSelected","rowIndex","fillInGaps","totalRows","emptyRows","CopySelected","selectedSelector","unselectedCells","shallowAs","copy$1","cloneChildren","elementsWithCursorPosition","isCursorPosition","first$3","descend","last$2","descendantRtl","cell$1","replica","pasteReplace","cellContent","newRow","cloneFormats","oldCell","newCell","firstText","formatSelector","clonedFormat","TableFill","mutate$$1","formatsToClone","sourceDom","targetDom","gap","TagBoundaries","DomUniverse","up","copyTo","destination","as","afterAll","appendAll","comparePosition","other","setText","isBoundary","isEmptyTag","leftRight","bisect","universe","ind","Breaker","prior","second","isTop","breaker","splits","fallback","breakage","nextChild","all$3","look","unsafeOne","head$$1","tail","commonElement","Shared","eq$1","unsafeSubset","common","ps1","ps2","finder","topDown","sIndex","eIndex","ancestors$2","prune","pruned1","pruned2","shared","firstpath","secondpath","Subset","ancs","Parent","DomParent","sharedOne","subset","breakToLeft","breakToRight","breakPath","isWithin","finishCol","finishRow","CellBounds","leftEdge","rightEdge","topEdge","bottomEdge","isRect","detailIsWithin","getAnyBox","finishCell","startCoords","finishCoords","fc","detailA","detailB","CellGroup","CellFinder","inside","innerCell","c1","c2","getWarehouse","TablePositions","deltaRow","deltaColumn","firstTable","lastTable","lookupTable","identified","getIsRoot","rootTable","boxes","startTable","finishTable","ancestorCells","lca","lcaTable","finishAncestorCells","startAncestorCells","getLast","lastSelectedSelector","expandTo","firstSelectedSelector","CellSelection","retrieve","sels","shiftSelection","getEdges","tbl","TableSelection","edges","firstAncestor","lastAncestor","fA","lA","Ephemera","attributeSelector","firstSelected","lastSelected","multiple","single","SelectionTypes","cata","subject","onNone","onMultiple","onSingle","selections","CellOperations","_env","noMenu","mergable","unmergable","paste$1","TableTargets","forMenu","pasteRows","clipboard","generators","extractSelected","serializeElements","Clipboard","actions","cellSelection","domCell","pasteCells","Dimension","getOffset","aggregate","properties","getOuter","cumulativeInclusions","api$1","get$4","api$2","get$5","getOuter$1","platform","toNumber","px","num","getCalculatedHeight","paddingTop","paddingBottom","borderTop","borderBottom","RuntimeSize","genericSizeRegex","percentageBasedSizeRegex","pixelBasedSizeRegex","setHeight","amount","getHeightValue","convert","getter","setter","newSize","normalizePixelSize","getTotalHeight","type$$1","getRawWidth","normalizePercentageWidth","cellWidth","tableSize","pixelWidth","choosePercentageSize","percentMatch","intWidth","normalizePixelWidth","choosePixelSize","pixelMatch","floatWidth","Sizes","setPixelWidth","setPercentageWidth","getPixelWidth","getPercentageWidth","getGenericWidth","setGenericWidth","getHeight","CellMutations","main","newWidth","attached","windowOf","boxPosition","firstDefinedOrZero","absolute","viewport","rowInfo","colInfo","rtlEdge","ltrEdge","getLeftEdge","getRightEdge","findPositions","getInnerEdge","getOuterEdge","lines","cellOption","lastLine","ltr","BarPositions","step","_table","ResizeDirection","TableDirection","directionAt","auto","TableGridSize","handleUnsupported","baseWith","invalidKeys","handleExact","exactly","elementToData","contract","Generators","_toData","toData","nuFrom","replacement","recent","getOrInit","cursor","find$$1","makeNew","replaceOrInit","combine","blockList","Structure","universe$1","DomStructure","TableContent","advancedBr","markCell","rightSiblingIsBlock","rightSibling","merge$1","cat","findMap","setCells","gridRow","getCell","GridRow","addCell","newCells","mutateCell","getCellElement","mapCells","cellLength","getColumn","getRow","findDiff","comp","TableGrid","restOfRow","endColIndex","restOfColumn","endRowIndex","Transitions","seen","ri","col","updateSeen","isNew","rowCells","setIfNot","Redraw","renderSection","gridSection","sectionName","tb","removeSection","renderOrRemoveSection","headSection","bodySection","footSection","clonedCell","Util","repititions","rest","aa","extras","decide","getBlock","isSingle","getFallback","Blocks","Bar","blocker","data-column","role","data-row","namespace","dashNamespace","get$7","resizeBar","resizeRowBar","resizeColBar","wire","drawBar","origin","cpOption","cp","bar","refreshCol","colPositions","tableHeight","colBar","refreshRow","rowPositions","tableWidth","rowBar","refreshGrid","hdirection","vdirection","bars","Bars","refresh","isRowBar","isColBar","fromWarehouse","deriveRows","rendered","findRow","toDetailList","findInWarehouse","RunOperation","operation","extract","adjustment","postAction","genWrappers","model","newElements","lc","generator","rowFill","_row","colFill","Fitment","startAddress","gridA","gridB","rowRemainder","colRemainder","colRequired","rowRequired","rowDelta","colDelta","colLengthA","colLengthB","fillCols","uniqueCells","currentCell","MergingOperations","substitution","isToReplace","rowPrevCells","isSpanning","matching","mergeTables","TableMerge","fittedGrid","fittedNewGrid","secondDelta","fittedOldGrid","ModificationOperations","between","exampleRow","exampleCol","replaceIn","notStartRow","colIndex","notStartColumn","TransformOperations","targetRow","folder","ColumnContext","neighbours$1","Deltas","zero","onChange","newNext","minCellWidth","newThis","diffx","onLeft","singleColumnWidth","getSpan$1","CellUtils","hasColspan","hasRowspan","minWidth","getInt","getRaw$1","getRawW","getRawH","getWidthFrom","backups","deduced","getDeduced","getHeightFrom","ColumnSizes","getRawWidths","getPixelWidths","getPercentageWidths","getPixelHeights","getRawHeights","measures","Recalculations","widths","heights","percentageSize","getWidths","getCellDelta","_delta","setElementWidth","setTableWidth","_newWidths","pixelSize","newWidths","chooseSize","fallbackWidth","TableSize","getWarehouse$1","getTableWarehouse","Adjustments","adjustWidth","deltas","newSizes","adjustHeight","newHeights","newCellSizes","newRowSizes","adjustWidthTo","outcome","elementFromGrid","findIn","bundle","uniqueRows","currentDetail","uniqueColumns","gridifyRows","pasteDetails","wh","resize","TableOperations","insertRowBefore","targetIndex","newGrid","insertRowsBefore","insertRowAfter","insertRowsAfter","insertColumnBefore","insertColumnsBefore","insertColumnAfter","insertColumnsAfter","splitCellIntoColumns","splitCellIntoRows","eraseColumns","_genWrappers","eraseRows","makeColumnHeader","unmakeColumnHeader","makeRowHeader","unmakeRowHeader","mergeCells","unmergeCells","nuGrid","pasteRowsBefore","mergedGrid","pasteRowsAfter","getBody$1","getPixelWidth$1","getPixelHeight","addSizeSuffix","removeDataStyle","dataStyleCells","getDirection","ltr$1","rtl$1","defaultTableToolbar","defaultStyles","border-collapse","defaultAttributes","getDefaultAttributes","getDefaultStyles","hasTableResizeBars","hasTabNavigation","hasAdvancedCellTab","hasAdvancedRowTab","hasAdvancedTableTab","hasAppearanceOptions","hasTableGrid","shouldStyleWithCss","getCellClassList","getRowClassList","getTableClassList","getColorPickerCallback","isPixelsForced","getCloneElements","cloneElements","hasObjectResizing","objectResizing","getToolbar","toolbar","fireNewRow","fireNewCell","fireObjectResizeStart","fireObjectResized","TableActions","lazyWire","isTableBody","execute","guard","mutate","deleteRow","deleteColumn","CopyRows","slicedGrid","slicedDetails","Styles$1","applyAlign","applyVAlign","unApplyAlign","unApplyVAlign","getTDTHOverallStyle","firstChildStyle","checkChildren","updateStyleField","rootControl","control","toJSON","borderStyle","borderColor","updateAdvancedFields","Helpers","createStyleForm","createColorPickAction","colorPickerCallback","onchange","formItemDefaults","layout","alignH","onselect","onaction","buildListItems","inputList","itemCallback","startItems","appendItems","menuItem","menu","extractAdvancedStyles","syncAdvancedStyleFields","getEl","isEqualNode","updateStyles","dataset","mceStyle","extractDataFromElement","valign","onSubmitCellForm","cellElm","CellDialog","classListCtrl","textStyle","generalCellForm","labelGapCalc","maxWidth","bodyType","onsubmit","extractDataFromElement$1","switchRowType","rowElm","toType","oldParentElm","onSubmitRowForm","oldData","RowDialog","generalRowForm","global$2","DefaultRenderOptions","percentages","render$1","rowHeaders","columnHeaders","renderOpts","trs","get$8","getOuter$2","placeCaretInCell","selectFirstCellInTable","fireEvents","InsertTable","options","styleTDTH","extractDataFromElement$2","cellspacing","cellpadding","applyDataToElement","data-mce-border-color","data-mce-cell-padding","data-mce-border","border-width","border-color","onSubmitTableForm","captionElm","TableDialog","isProps","colsCtrl","rowsCtrl","generalTableForm","registerCommands","clipboardRows","getSelectionStartCell","getTableFromCell","resizeChange","oldSize","actOnSelection","beforeSize","copyRowSelection","pasteOnSelection","clonedRows","mceTableSplitCells","mceTableMergeCells","mceTableInsertRowBefore","mceTableInsertRowAfter","mceTableInsertColBefore","mceTableInsertColAfter","mceTableDeleteCol","mceTableDeleteRow","mceTableCutRow","mceTableCopyRow","mceTablePasteRowBefore","mceTablePasteRowAfter","mceTableDelete","mceInsertTable","mceTableProps","mceTableRowProps","mceTableCellProps","ResizeWire","view","editable","typeDefs","DragApis","sink","Styles$2","Blocker","layerClass","mkEvent","prevent","kill","rawEvent","binder","useCapture","bind$1","filter$1","bind$2","MouseDrag","dragApi","mdown","forceDrop","mup","mmove","mout","delayDrop","mutation","Movement","update","noDragState","onEvent","inDragState","dragState","isOn","Dragging","throttledDrop","runIfActive","go","Dragger","transform","Mutation","drag","BarMutation","xDelta","yDelta","assign","closest$2","resizeBarDragging","BarManager","resizing","hoverTable","getResizer","_dataRow","_dataCol","currentCol","getDelta","startAdjust","mousedown","mouseover","hideBars","showBars","TableResize","manager","beforeResize","afterResize","createContainer","TableWire","ResizeHandler","startRawW","selectionRng","rawWire","sz","rawTable","percentW","targetPercentW","newCellSizes_1","newCellSize","lazyResize","folder$1","CellLocation","detect$4","CellNavigation","Situ","onBefore","onOn","onAfter","situ","type$2","range$2","getStart$1","startSitu","finishSitu","relative$1","makeRange","selectNodeContentsUsing","setFinish","relativeToNative","exactToNative","toRect","getFirstRect","adt$1","fromRange","doDiagnose","rev","diagnose","asLtrRange","inRect","locateOffset","textnode","rangeForOffset","rectForOffset","curDeltaX","locate","searchInChildren","locateNode","locate$1","boundedX","boundedY","getCollapseDirection","createCollapsedNode","collapseDirection","locateInElement","cursorRange","locateInEmpty","searchTextNodes","availableSearch","fromPoint$1","beforeSpecial","preprocessRelative","preprocessExact","preprocess","doSetNativeRange","doSetRange","setLegacyRtlRange","setRangeFromRelative","setExact","setRelative","toNative","getDomRange","firstRng","doGetExact","same","setToElement","getExact","get$a","getFirstRect$1","getAtPoint","clear$1","global$3","backward","getCellFirstCursorPosition","getNewRowCursorPosition","rootElements","TabContext","isRoot_1","Responses","isKey","keycode","isUp","isDown","SelectionKeys","isBackward","isNavigation","Util$1","convertToRange","makeSitus","get$b","by","WindowBridge","getRangedRect","structRect","exactAdt","fromSitus","situs","situsFromPoint","exact$$1","clearSelection","setRelativeSelection","selectContents","getInnerHeight","getScrollY","detect$5","selectRange","cellSel","KeySelection","sync","newSels","Carets","moveUp","moveDown","moveBottomTo","moveTopTo","getBottom","getPartialBox","bridge","toCaret","getElemBox","Rectangles","backtrack","_transition","transition","sidestep","advance","successors","go$1","succ","Walker","Walkers","hone","Seeker","isLeaf","seekLeft","seekRight","Gather","walkers","_rules","universe$2","DomGather","gather","adt$2","retry","isOutside","inOutsideBlock","upMovement","adjuster","guessBox","higherCaret","downMovement","lowerCaret","isAtTable","adjustForTable","numRetries","adjustTil","guess","newCaret","checkScroll","adjusted","Retries","tryUp","tryDown","ieTryUp","ieTryDown","getJumpSize","adt$3","failedUp","failedDown","isOverlapping","beforeBounds","afterBounds","isRow","BeforeAfter","verify","beforeOffset","afterOffset","afterCell","beforeCell","sharedRow","onSuccess","onFailedUp","onFailedDown","Spot","points","inParent","gatherer","cand","handleBr","handleParent","adjacent","BrTags","tgt","analysis","platform$1","findSpot","brNeighbour","scan","tryCursor","tryAgain","tryAt","otherRetry","ieRetry","TableKeys","spot","detection","inSameTable","simulate","VerticalMovement","precheck","lastOffset","findCell","MouseSelection","clearState","mouseup","KeyDirection","rc","InputHandlers","mouse","keyboard","clearToNavigate","keydown","attempts","keyup","SelectionAnnotation","byClass","ephemera","addSelectionClass","removeSelectionClasses","byAttr","removeSelectionAttributes","addSelectionAttribute","hasInternalTarget","CellSelection$1","handlerStruct","mouseHandlers","keyHandlers","handleResponse","wrappedEvent","wrapEvent","isMouseEvent","isLeftMouse","mouseDown","mouseOver","mouseUp","Selections","addButtons","addToolbars","MenuItems","addMenuItems","tableCtrls","cellCtrls","mergeCtrls","unmergeCtrls","noTargetDisable","ctrlEnable","pushTable","pushCell","cellOpt","cellDom","mergeCtrl","unmergeCtrl","selectGrid","tx","focusCell","insertTable","ariaHideMenu","aria","hideAll","onshow","onhide","generateTableGrid","onPostRender","lastX","lastY","onmousemove","tableProperties","deleteTable","separator","getClipboardRows","setClipboardRows","sugarRows","getApi","resizeHandler","inlineMediaComment","buildMinimizerLink","_htmlEscape2","buildCommentHolder","$link","getMediaCommentId","idAttr","collapseComment","$holder","pause","trackEvent","initialFocusInnerhold","isVideoInTd","isContainingTdSmall","shouldResizeTd","resizeContainingTd","$closestTd","tdWidth","minTdWidth","_preventDefault2","INST","kalturaSettings","mediaType","mediaComment","rangeEqualsDelimiterOrSpace","rangeString","delimiter","handleEclipse","parseCurrentLine","handleSpacebar","handleEnter","scopeIndex","rngText","autoLinkPattern","defaultLinkTarget","Keys","autoUrlDetectState","MediaCommentUtils","tagType","st_tags","_jquery4","mejs","MediaElementDefaults","pluginPath","defaultVideoWidth","defaultVideoHeight","MepDefaults","mediaElement","domObject","_kalturaAnalytics2","mediaCommentId","play","features","positionAfterSubtitleSelector","getSourcesAndTracks","dfd","Deferred","getJSON","sources","media_sources","_sanitizeUrl2","bitrate","tracks","media_tracks","track","languageName","codes","locale","kind","can_add_captions","createMediaTag","_ref","opts","sourcesAndTracks","mediaPlayerOptions","HtmlMediaElementShim","determinePlayback","MediaFeatures","supportsMediaTag","isVideo","videoHeight","mediaCommentActions","onClose","defaultTitle","pubsub","unsubscribe","subscribe","initOpts","modal","show_inline","downloadUrl","andSelf","showInline","holder","googleAnalyticsTitle","menuTimeoutMouseLeave","media","keyActions","MediaElementKeyActionHandler","keyCodes","player","showControls","startControlsTimer","dispatch","$mediaTag","MediaElementPlayer","detailsUrl","ajaxJSON","attachment","media_entry_id","openingElement","$this","dialog","$dialog","dialogClass","resizable","$mediaPlayer","disableWhileLoading","mediaelementplayer","media_comment_dialog","_len","_key","$trigger","noButton","appendMenuTo","popupOpts","my","at","within","KyleMenu","handleLaunch","ltiThumbnailLauncher","launch","LtiThumbnailLauncher","_classCallCheck3","placement","allowfullscreen","displayWidth","displayHeight","toggleRegion","$region","showRegion","dialogOpts","newStateOfRegion","$allElementsControllingRegion","autoOpen","fixDialogButtons","oldStateKey","elementTogglerBehavior","force","$parent","$icon","draggable","$floater","$helper","floaterTop","animate","$reminder","confirmDelete","fadeOut","mediaId","pluginSettings","do_analytics","ka","KalturaAnalytics","queueAnalyticEvent","ensureAnalyticSession","generateApiUrl","setupApiIframes","queueApiCall","defaultData","service","event:entryId","event:sessionId","kaSession","event:isFirstInSession","event:objectType","event:partnerId","partner_id","event:uiconfId","kcw_ui_conf","event:queryStringReferrer","eventId","duration","currentTime","apiUrl","cookie","qIndex","iframes","asc","pinger","parallel_api_calls","pauseObserved","endedObserved","endedOnce","_lastTime","_isFullScreen","listeningToPlaying","paused","isFullScreen","stopPoints","cueTime","_stocktiny","fireKeyclick","kce","keydownHandler","keyupHandler","activate_keyclick","regExps","UnicodeData","characterIndices","ALETTER","MIDNUMLET","MIDLETTER","MIDNUM","NUMERIC","CR","LF","NEWLINE","EXTEND","FORMAT","KATAKANA","EXTENDNUMLET","AT","OTHER","SETS","EMPTY_STRING","PUNCTUATION","WHITESPACE","SETS$1","getType","char","setsLength","StringMapper","string","memoized","WordBoundary","prevType","nextNextType","nextType","EMPTY_STRING$1","WHITESPACE$1","PUNCTUATION$1","isProtocol","word","findWordEnd","extractUrl","peakedWord","doGetWords","includePunctuation","includeWhitespace","words","ignoreCase","WordGetter","isSeparator","txt","treeWalker","WordCount","Api","getCount","global$4","Statusbar","wordsToText","panel","statusbar","debouncedUpdate","attachErrorHandler","getImagesAndAttach","imgElement","forEach","_lodash","KeyCodes","ESC","SPACE","PAGE_UP","PAGE_DOWN","M","F","G_REWIND","G_FORWARD","controlSelectors","captions","fullscreen","playpause","speed","volume","focusPosition","optionElements","checkedFunction","checkedOption","focusPos","hasTrueNativeFullScreen","_targetControl","handlerKey","findKey","captionsHandler","newFocusPosition","srcOptions","captionsButton","currentlyFocused","selectedTrack","srclang","fullscreenHandler","exitFullScreen","playpauseHandler","newTime","defaultSeekBackwardInterval","setCurrentTime","defaultSeekForwardInterval","defaultJumpBackwardInterval","defaultJumpForwardInterval","progressHandler","sourceHandler","sourcechooserButton","speedHandler","speedButton","playbackRate","volumeHandler","setMuted","muted","setVolume","playerHandler","jsUploader","arg1","arg2","$container","partnerData","context_code","contextCode","root_account_id","ENV","DOMAIN_ROOT_ACCOUNT_ID","context_source","CONTEXT_ACTION_SOURCE","SIS_SOURCE_ID","SIS_USER_ID","stringify","context_asset_string","current_user_id","addEntry","entry","isAudioFile","2","5","entryId","user_entered_title","userTitle","publish","addedEntryIds","entryAdded","entryType","audio_delegate","setMediaType","upload_delegate","setupErrorHandler","selectHandler","singleUploadCompleteHandler","entries","allUploadsCompleteHandler","entriesAddedHandler","uploadErrorHandler","video_delegate","readyWatcher","expectReady","currentType","getFiles","removeFiles","progressbar","fileSize","bytesTotal","max_file_size_bytes","addEntries","loaded_bytes","total_bytes","pct","getError","reset_selectors","lastInit","require","swfobject","user_name","mediaCommentReady","ks","js_uploader","getKs","getUid","triggerHandler","temporaryName","toISOString","recordVars","rtmpHost","rtmp_domain","kshowId","pid","subpid","subpartner_id","localeUrl","thumbOffset","licenseType","showUi","useCamera","maxFileSize","maxUploads","partner_data","entryName","soundcodec","autoPreview","quality","bgcolor","allowScriptAccess","pluginspage","wmode","embedSWF","flashVars","partnerId","subPId","uiConfId","upload_ui_conf","jsDelegate","$audio_record_holder","$audio_record","$audio_record_meter","audio_record_counter","current_audio_level","$video_record_holder","$video_record","$video_record_meter","video_record_counter","current_video_level","audio_level","video_level","getMicophoneActivityLevel","band","JsUploader","onReady","ARC_RECORDING_FEATURE_ENABLED","currentBrowser","getBrowser","renderCanvasMediaRecorder","tryToRenderInterval","doUploadByFile","now","$div","logged_in","checkForKS","mediaCommentsTemplate","tabs","activate","oe","clearQueue","live","mediaCommentCallback","beforeAddEntry","attemptId","lastAddAttemptId","addEntryFail","addEntryFailed","addEntryComplete","ajax_errors","error_heading","errors","connection_lost","logged_out","unhandled","login","no_text","hy","ko","interactionSeconds","update_url","page_view_update_url","eventInTime","interaction_contexts","parseJSON","seconds","interaction_seconds","updateTrigger","secondsSinceLastEvent","new_update_url","interaction_context","ping_url","interval","post","_rtlHelper","leftRightOpposites","regexLeftRight","flipPositionIfRTL","left+","left-","right+","right-","isRTL","increments","addDescribedBy","describedby","removeDescribedBy","removeData","widget","collision","tooltipClass","_create","_on","focusin","tooltips","_setOption","_disable","that","_enable","_find","of","_open","positionOption","_tooltip","mousemove","_show","_trigger","focusout","ESCAPE","fakeEvent","closing","_hide","_off","bgiframe","_destroy","DetectProPlugin","isWordHtml","wordContent","ieFake","shouldPlainTextInform","shouldBlockDrop","shouldPasteDataImages","shouldFilterDrop","getPreProcess","getPostProcess","getWebkitStyles","shouldRemoveWebKitStyles","shouldMergeFormats","isSmartPasteEnabled","isPasteAsTextEnabled","getRetainStyleProps","getWordValidElements","shouldConvertWordFakeLists","shouldUseDefaultFilters","shouldInformUserAboutPlainText","userIsInformedState","Actions","pasteFormat","pasteHtml","pasteText","internalMark","InternalHtml","mark","unmark","isMarked","internalHtmlMime","global$5","toBRs","openContainer","rootTag","rootAttrs","toBlockElements","tagOpen","tagClose","paragraphs","Newlines","isPlainText","global$6","global$7","global$8","global$9","Utils","ignoreElements","s1","s2","createIdGenerator","isMsEdge","isNumericList","convertFakeListsToProperLists","currentListNode","prevListNode","trimListStart","regExp","removeIgnoredNodes","_listIgnore","convertParagraphToLi","paragraphNode","listName","_listLevel","nodeText","filterStyles","outputStyles","filterWordContent","retainStyleProperties","spaces","WordFilter","isWordContent","processResult","cancelled","postProcessFilter","tempBody","postProcessArgs","filterContent","preProcessArgs","ProcessFilters","removeMeta","isAbsoluteUrl","isImageUrl","createImage","pasteHtmlFn","createLink","linkSelection","insertImage","smartInsertContent","SmartPaste","pasteHtml$1","internalFlag","getDataTransferItems","legacyText","contentType","getClipboardContent","clipboardEvent","text/html","hasContentType","clipboardContent","mimeType","hasHtmlOrText","extractFilename","pasteImage","imageItem","images_reuse_filename","Image","images_dataimg_filter","existingBlobInfo","getImagesFromDataTransfer","getAsFile","pasteImageData","paste_data_images","FileReader","blobResults","isBrokenAndroidClipboardEvent","isKeyboardPasteEvent","registerEventHandlers","pasteBin","keyboardPastePlainTextState","keyboardPasteTimeStamp","removePasteBinOnKeyUp","insertClipboardContent","isKeyBoardPaste","plainTextMode","isPlainTextHtml","getHtml","isDefaultContent","clipboardTimer","clipboardDelay","getLastRng","registerEventsAndFilters","isWebKitFakeUrl","isDataUri","isPasteInsert","getPasteBinParent","isExternalPasteBin","delegatePasteEvents","pasteBinElm","pasteBinDefaultContent","isDefault","lastRngCell","pasteBinClone","pasteBinClones","dirtyWrappers","cleanWrapper","copyAndRemove","toElm","fromElm","PasteBin","noop$1","hasWorkingClipboardApi","setHtml5Clipboard","setClipboardData","markedHtml","offscreenRange","isTableSelection","hasSelectedContent","cut","CutCopy","global$a","getCaretRangeFromEvent","setFocusedRange","DragDrop","draggingInternallyState","dropContent","plainTextContent","content_1","PrePostProcess","postProcess","addPreProcessFilter","filterFunc","addPostProcessFilter","removeExplorerBrElementsAfterBlocks","explorerBlocksRegExp","removeWebKitStyles","webKitStyles","webKitStylesSetting","dom_1","node_1","inputStyles","inputValue","currentValue","removeUnderlineAndFontInAnchor","stateChange","postRender","selectable","proto","originalRefresh","inputGroupLabeled","inputIDCount","labelElement","textInput","aria-checked","collapseAll","TextColor","colorMap","colors","defaultColorMap","getTextColorMap","getTextColorRows","getTextColorCols","ColorPickerHtml","hasColorPicker","getColorCellHtml","isNoColor","setDivColor","background","onButtonClick","_color","onPanelClick","buttonCtrl","currentColor","selectColor","hidePanel","customColorCells","lastId","resetColor","renderColorPicker","foreColor","ariaRemember","_mathml","WIDE_BREAKPOINT","resetMenuItemTabIndexes","_updateSubnavMenuToggle2","Backbone","history","NEW_USER_TUTORIALS","is_enabled","_splitAssetString2","initializeNewUserTutorials","CSS","canvasCssVariablesPolyfill","thisOrParentIsHidden","mouseHandled","defaultElement","delay","icons","submenu","menus","activeMenu","eventNamespace","mousedown .ui-menu-item > a","click .ui-state-disabled > a","click .ui-menu-item:has(a)","mouseenter .ui-menu-item","mouseleave .ui-menu","_delay","removeUniqueId","_keydown","character","skip","regex","previousPage","nextPage","HOME","_move","END","_activate","previousFilter","filterTimer","nextAll","submenus","aria-hidden","aria-expanded","_itemRole","submenuCarat","listbox","nested","focused","_scrollIntoView","_close","_startOpening","scroll","elementHeight","itemHeight","_hasScroll","fromFocus","currentMenu","startMenu","newItem","isFirstItem","prevAll","isLastItem","outerHeight","errorCount","errorObj","defaultAjaxError","request","debugOnly","isUnauthenticated","flashError","ajaxErrorFlash","skipDefaultError","$obj","frames","$body","status_code","environment","findRequest","username","ajaxErrorURL","submit_type","keepBookmarks","getNormalizedPoint","outRng","rangeStart","rangeEnd","Bookmark","setupEndPoint","ListType","groupBy","wasType","htmlElement","HTMLElement","getParentList","selectionStart","getClosestListRootElm","isParentListSelected","parentList","findSubLists","findParentListItemsNodes","listItemsElms","parentLi","getSelectedListItems","parentTableCell","findLastParentListNode","parentLists","getSelectedLists","firstList","subsequentLists","getUniqueListRoots","lists","listRoots","getSelectedSubLists","getSelectedDlItems","getSelectedListRoots","selectedLists","find$1","TextBlock","contentNode","hasContentNode","SplitList","ul","bookmarks","removeAndKeepBookmarks","createSection","listType","joinSections","appendor","createJoinedSections","_loop_1","newSection","lastSection","normalizeSection","listAttributes","createItem","writeShallow","outline","newOutline","depth","itemAttributes","populateSections","writeDeep","newSections","composeList","isIndented","indentEntry","assimilateEntry","adherent","normalizeShallow","matchingEntryDepth","matchingEntry","normalizeDeep","normalizeEntries","getListType","OL","UL","DL","isList$1","hasFirstChildList","hasLastChildList","getItemContent","contentLength","createEntry","parseItem","itemSelection","selectionState","curriedParseList","parseList","updateSelectionState","itemRange","fromCurrentItem","fromChildList","newDepth","parseLists","sourceList","outdentedComposer","indentedComposer","composeEntries","indentSelectedEntries","getItemSelection","selectedListItems","listsIndentation","parsedLists","entrySet","outdentDlItem","dl","indentDlItem","dlIndentation","dlItems","selectionIndentation","indentListSelection","outdentListSelection","flattenListSelection","updateListStyle","updateListAttrs","updateListWithDetails","removeStyles","getEndPointNode","getSelectedTextBlocks","textBlocks","hasCompatibleStyle","sib","sibStyle","detailStyle","applyList","listItemName","listBlock","mergeWithAdjacentLists","isValidLists","list1","list2","hasSameListStyle","shouldMerge","elm2","updateList","newList","toggleMultipleLists","hasListStyleDetail","toggleSingleList","ToggleList","toggleList","selectedSubLists","normalizeList","NormalizeLists","findNextCaretContainer","nonEmptyBlocks","hasOnlyOneBlockChild","unwrapSingleBlockChild","moveChildren","mergeLiElements","listNode","mergeIntoEmptyLi","fromLi","toLi","mergeForward","mergeBackward","resolvedBookmark","backspaceDeleteFromListToListCaret","otherLi","selectionStartElm","removeBlock","backspaceDeleteIntoListCaret","otherLi_1","backspaceDelete","Delete","queryListCommandState","setupTabKey","Keyboard","findIndex$2","listState","tableCellIndex","hasPlugin","INCOMPLETE_REGISTRATION","__WEBPACK_AMD_REQUIRE_ARRAY__","email","USER_EMAIL","_i18nSubnav_menu_toggle","subnavMenuTranslations","account","admin","courses","subnavMenuAction","subnavMenuToggleText","subnavMenuToggle","locked_image_24f37a16","VideoScript","prefixes","addPx","setSize","Size","getMaxWidth","getMaxHeight","setMaxWidth","setMaxHeight","getEphoxEmbedIri","isEphoxEmbed","htmlToDataSax","source1","movie","videoScript","source2","poster","ephoxEmbedHtmlToData","HtmlToData","Mime","mp3","wav","mp4","webm","ogg","swf","setAttributes","updatedAttrs","normalizeHtml","updateHtmlSax","updateAll","hasImage","sourceCount","imgAttrs","isEphoxEmbed$1","updateEphoxEmbed","UpdateHtml","urlPatterns","allowFullscreen","getUrl","matchPattern","getFlashHtml","getAudioHtml","audioTemplateCallback","source2mime","getVideoHtml","videoTemplateCallback","source1mime","getScriptHtml","DataToHtml","dataIn","embed","embedPromise","dataToHtml","rej","wrappedResolve","defaultPromise","loadedData","Service","embedHandler","doSyncSize","widthCtrl","heightCtrl","doSizeControls","constrained","doUpdateSize","isContrained","oldWidth","oldHeight","newHeight","updateSize","SizeManager","recalcSize","spacing","ariaLabel","embedChange","handleError","errorMessage","dataEmbed","data-ephox-embed-iri","getSource","addEmbedHtml","fromJSON","selectPlaceholder","beforeObjects","afterObjects","handleInsert","submitForm","populateMeta","Dialog","generalFormItems","filetype","autofocus","onpaste","onbeforecall","advancedFormItems","embedTextBox","flex","multiline","forId","onSubmit","showDialog","Sanitize","blocked","createPlaceholderNode","placeHolder","retainAttributesAndInnerHtml","data-mce-object","createPreviewIframeNode","previewWrapper","previewNode","shimNode","frameborder","sourceNode","innerHtml","isWithinEphoxEmbed","Nodes","FilterContent","boolAttrs","realElm","realElmName","ResolveName","selectedNode","objectType","prependToContext","getTargetList","editorSettings","target_list","getRelList","rel_list","getLinkClassList","link_class_list","link_assume_external_targets","link_context_toolbar","link_list","default_link_target","link_title","appendClickRemove","dispatchEvent","OpenUrl","createEvent","initMouseEvent","opener","toggleTargetRules","isUnsafe","removeTargetRules","addTargetRules","trimCaretContainers","getAnchorElement","isImageFigure","isLink","unlinkImageFigure","fig","linkImageFigure","attachState","anchorElm","linkAttrs","attach","createLinkList","linkList","delayedConfirm","initialText","onlyText","textListCtrl","linkListCtrl","relListCtrl","targetListCtrl","linkTitleCtrl","linkListChangeHandler","textCtrl","lastControl","updateText","inp","onkeyup","anchorList","buildAnchorListControl","assumeExternalTargets","insertLink","removeLink","resultData","getLink","getSelectedLink","getHref","isContextMenuVisible","contextmenu","hasOnlyAltModifier","gotoLink","targetEl","toggleVisibility","Controls","onpostrender","idIncrement","suppressExpandOnFocus","managed","expandOnFocus","effect","generatedId","generatedRole","_beforeClose","onMouseDown","noFocus","isOpen","closeTimer","focusPopup","mouseClickTimer","tabbables","focusTrigger","removeTabIndex","isBrandingEnabled","hasMenubar","getMenubar","hasStatusbar","getToolbarSize","getFixedToolbarContainer","getInlineToolbarPositionHandler","getMenu","getRemovedMenuItems","getMinWidth","getMinHeight","isSkinDisabled","skin","getResize","getSkinUrl","skinUrl","skin_url","skinName","getIndexedToolbars","defaultToolbar","toolbars","mainToolbar","getToolbars","A11y","getUiContainer","uiContainer","UiContainer","getUiContainerDelta","containerPos","setUiContainer","ui_container","inheritUiContainer","fromCtrl","toCtrl","createToolbar","buttonGroup","toolbarItems","bindSelectorChanged","disabledStateSelector","Toolbar","ariaRoot","toClientRect","geomRect","hideAllFloatingPanels","movePanelTo","moveTo","togglePositionClass","relPos","userConstrain","elementRect","contentAreaRect","panelRect","ContextToolbars","getContextToolbars","getElementRect","shouldShow","relRect","testPositions","repositionHandler","findFrontMostMatch","bindScrollEvent","reposition_1","uiContainer_1","showContextToolbar","autohide","autofix","oncancel","renderTo","reflow","hideAllContextToolbars","defaultMenus","edit","tools","help","createMenuNameItemPair","hasItemName","namedMenuItems","namedMenuItem","cleanupMenu","removedMenuItems","menuItemsPass1","menuItemsPass2","createMenu","editorMenuItems","menuButton","isUserDefined","getDefaultMenubar","defaultMenuBar","Menubar","menuButtons","menubar","enabledMenuNames","resizeTo","iframeElm","containerSize","iframeSize","Resize","dw","dh","sidebar","callbackName","hidePanels","visible","findSidebar","showPanel","btnCtrl","SkinLoaded","switchMode","editArea","editAreaContainer","Iframe","resizeHandleCtrl","startSize","skinUiCss","onResizeStart","onResize","brandingLabel","renderBefore","funcs","getWindowSize","getRuntimeStyle","isStatic","isFixed","calculateRelativePosition","ctrlElm","selfW","selfH","getWindowViewPort","getUiContainerViewPort","customUiContainer","Movable","testMoveRel","viewPortRect","moveBy","layoutRect","constrain","constrainToViewport","repaint","global$b","BoxUtils","computedStyle","getSide","ClassList","_map","_change","curState","clsValue","uniqueItems","__checked","Collection","Collection$1","expression","chunker","Selector","compileNameFilter","compileIdFilter","_name","compileClassesFilter","compileAttrFilter","cmp","compilePsuedoFilter","notSelectors","parseChunks","direct","_selectors","si","Collection$2","Binding","otherModel","otherName","fromSelfToOther","_bindings","global$c","isNode","animationFrameRequested","Control","ObservableObject","oldValue","dirtyCtrls","ReflowQueue","_layout","_id","hasMouseWheelEventSupport","hasWheelEventSupport","idCounter","proto$1","classPrefix","defaultClasses","applyClasses","_aria","_elmCache","borderBox","paddingBox","marginBox","getContainerElm","getParentCtrl","controlIdLookup","initLayoutRect","autoResize","startMinWidth","startMinHeight","initialSize","deltaW","deltaH","maxW","maxH","maxHeight","_layoutRect","contentW","contentH","innerW","innerH","minW","minH","scrollW","_lastLayoutRect","lastLayoutRect","repaintControls","curRect","bodyStyle","borderW","borderH","lastRepaintRect","_lastRepaintRect","_hasBody","updateLayoutRect","_lastRect","resolveCallbackName","parentControls","$el","ariaTarget","newItems","controls","_eventsRoot","renderHtml","preRender","parentEventsRoot","_nativeEvents","bindPendingEvents","border-top-width","border-right-width","border-bottom-width","border-left-width","bindStates","parentCtrl","parentWidth","parentHeight","eventCtrl","eventRootCtrl","mouseLeaveHandler","_lastHoverCtrl","mouseEnterHandler","lastParents","lastCtrl","fixWheelEvent","wheelDelta","wheelDeltaX","eventRootDelegates","_delegates","_hasMouseEnter","Control$1","hasTabstopData","KeyboardNavigation","focusedElement","focusedControl","getRole","getParentRole","getAriaProp","isTextInputElement","canFocus","getFocusElements","getNavigationRoot","targetControl","navigationRoot","moveFocusToIndex","moveFocus","lastAriaIndex","parentRole","enter","tab","handleNonTabOrEscEvent","focusFirst","focusElements","selectorCache","Container","_items","bodyClasses","containerCls","focusCtrl","keyboardNav","oldItem","ctrlItems","defaultType","renderNew","curItems","beforeItems","afterItems","recalc","getDocumentSize","updateWithTouchData","changedTouches","DragHelper","$eventOverlay","downButton","handleElement","docSize","runtimeStyle","zIndex","documentClickHandler","documentScrollHandler","windowResizeHandler","hasModal","Scrollable","renderScroll","repaintScroll","hasScrollH","hasScrollV","repaintAxis","axisName","posName","sizeName","contentSizeName","hasScroll","ax","scrollBarElm","scrollThumbElm","posNameLower","sizeNameLower","autoScroll","addScrollAxis","deltaPosName","scrollStart","axisId","draghelper","addScroll","Panel","_preBodyHtml","Resizable","resizeToContent","resizeBy","visiblePanels","zOrder","skipOrHidePanels","clickCtrl","bindDocumentClickHandler","bindDocumentScrollHandler","repositionPanel","bindWindowResizeHandler","docElm_1","clientWidth_1","clientHeight_1","FloatPanel","scrollY$$1","toggleFixedChildPanels","_autoFixY","addRemove","topModal","modalBlockEl","currentZIndex","$modalBlockEl_1","prefix_1","popover","describedBy","removeVisiblePanel","bodyRole","isFixed$1","inlineToolbarContainer","Inline","fixedToolbarContainer","_fixed","bodyPos","scrollContainerPos","Throbber","ProgressState","throbber","Tooltip","Widget","disable","Progress","setValue","updateLiveRegion","ctx","Notification","closeButton","notificationStyle","NotificationManagerImpl","getEditorContainer","prePositionNotifications","positionNotifications","firstItem","closeCallback","extendedArgs","notif","oldMetaValue","toggleFullScreenState","contentValue","checkFullscreenWindows","_fullscreen","Window$$1","pack","closeClass","needsRecalc","statusbar$$1","headerW","headEl","headerH","headerHtml","footerHtml","slowRendering","_timer","_initial","dragHelper","getContentWindow","lastSize_1","handleWindowResize","MessageBox","OK","OK_CANCEL","YES_NO","YES_NO_CANCEL","msgBox","createButton","status$$1","primary","subtype","onClick","onCancel","ThemeApi","choiceCallback","window$$1","Layout","firstControlClass","lastControlClass","containerClass","firstClass","lastClass","lastItem","controlClass","AbsoluteLayout","Button","btnStyle","btnElm","ariaPressed","textHtml","textCls","setButtonText","$span","iconElm","BrowseButton","accept","ButtonGroup","Checkbox","global$d","ComboBox","subinput","showMenu","statusLevel","statusMessage","lineHeight","openElm","innerPadding","inputElm","statusHtml","openBtnHtml","extraAttrs","placeholder","showAutoComplete","term","previewUrl","hideMenu","statusIconElm","focusIdx","ColorBox","repaintColor","PanelButton","panelSettings","popoverAlign","ColorButton","onClickHandler","global$e","ColorPicker","hsv","hueRootElm","huePointElm","svRootElm","svPointElm","updateColor","hueUpdate","updateSaturationAndValue","updateHue","_repaint","_svdraghelper","_hdraghelper","rgb","_rendered","hueHtml","stops","gradientPrefix","stopsList","getOldIeFallbackHtml","DropZone","cfg","hidefocus","toggleDragClass","Path","_getDataPathHtml","ElementPath","elementpath","outParents","FormItem","Form","labelGap","formItem","recalcLabels","maxLabelWidth","labels","labelCtrl","labelWidth","FieldSet","unique$1","isChildOfContentEditableTrue","getElementText","getOrGenerateId","isAnchor","isValidAnchor","isHeader","isValidHeader","getLevel","headerTarget","headerId","anchorTarget","anchorId","anchorText","getHeaderTargets","getAnchorTargets","getTargetElements","hasTitle","LinkTargets","toMenuItem","toMenuItems","staticMenuItem","isUniqueUrl","getSetting","createMenuItems","fileType","fromHistoryMenuItems","historyItems","uniqueHistory","fromMenuItems","filteredTargets","typeahead_urls","filterByQuery","anchorMenuItems","topAnchor","bottomAchor","addToHistory","lowerCaseTerm","getTitle","linkDetails","setupAutoCompleteHandler","autocomplete","linkTargets","statusToUiState","setupLinkValidatorHandler","validatorHandler","filepicker_validator_handler","uiState","FilePicker","clearHistory","actionCallback","fileBrowserCallback","fileBrowserCallbackTypes","file_picker_types","file_browser_callback_types","file_picker_callback","file_browser_callback","FitLayout","contLayoutRect","FlexLayout","contPaddingBox","contSettings","totalFlex","availableSpace","ctrlLayoutRect","maxSize","maxAlignEndPos","minSizeName","maxSizeName","beforeName","innerSizeName","deltaSizeName","alignAxisName","alignInnerSizeName","alignSizeName","alignMinSizeName","alignBeforeName","alignAfterName","alignDeltaSizeName","alignContentSizeName","maxSizeItems","maxFlexSize","FlowLayout","endClass","addFormatChangedListener","changed","postRenderFormatToggle","Align","alignFormats","alignMenuItems","onShowMenu","formatName","alignnone","getFirstFont","findMatchingValue","font","createFontNameListBoxChangeHandler","createFormats","getFontItems","fonts","font_formats","registerButtons","fixedWidth","FontSelect","findMatchingValue$1","createFontSizeListBoxChangeHandler","getFontSizeItems","fontsizeFormats","fontsize_formats","registerButtons$1","FontSizeSelect","hideMenuObjects","hideFormatMenuItems","createFormatMenu","newFormats","defaultStyleFormats","style_formats_merge","style_formats","itemDefaults","registerMenuItems","formatMenu","registerButtons$2","style_formats_autohide","Formats","createFormats$1","createListBoxChangeHandler","lazyFormatSelectBoxItems","buildMenuItems","FormatSelect","block_formats","createCustomMenuItems","nameList","isSeparator$1","trimMenuItems","menuItems2","createContextMenuItems","outputMenuItems","createInsertMenu","insertButtonItems","insert_button_items","registerButtons$3","oncreatemenu","InsertButton","registerFormatButtons","registerCommandButtons","outdent","selectall","visualaid","newdocument","registerCommandToggleButtons","registerButtons$4","registerMenuItems$1","SimpleControls","toggleUndoRedoState","checkState","typeFn","registerMenuItems$2","registerButtons$5","UndoRedo","toggleVisualAidState","registerMenuItems$3","VisualAid","setupEnvironment","setupUiContainer","setupRtlMode","setupHideFloatPanels","FormatControls","GridLayout","posX","posY","ctrlSettings","spacingH","spacingV","alignV","ctrlMinWidth","ctrlMinHeight","availableWidth","availableHeight","reverseRows","colWidths","rowHeights","ceil","flexV","packV","flexWidths","Iframe$1","InfoBox","severity","Label","strong","startMinH","targetCtrl","forName","Toolbar$1","MenuBar","isChildOf$1","MenuButton","_renderOpen","menuLayoutRect","selfBottom","hasVisibleSiblingMenu","overCtrl","Menu","itemsFactory","hideThrobber","requestTime","_hasIcons","ListBox","selectedText","lastItemCtrl","_values","menuValues","valueExists","getSelectedItem","selectedItem","hasMenus","toggleTextStyle","_textStyle","textElm","MenuItem","_parentMenu","_lastRel","iconHtml","escapeRegExp","markMatches","boldMatches","convertShortcut","hover","Radio","ResizeHandle","resizeDragHelper","createOptions","strOptions","SelectBox","_options","minVal","maxVal","setAriaProp","updateSliderHandle","shortSizeName","stylePosName","handleEl","orientation","_minValue","_maxValue","previewFilter","Slider","minValue","maxValue","_initValue","screenCordName","fromFraction","alter","handleKeyboard","startHandlePos","maxHandlePos","handlePos","_dragHelper","handleDrag","Spacer","SplitButton","mainButtonElm","menuButtonElm","_menuBtnText","StackLayout","TabPanel","activateTab","activeTabElm","activeTabId","tabsHtml","activeTab","targetParent","headH","TextBox","ref","tooltipsToShortCirtuit","shortCircutTooltip","tooltipUtils","setPosition","force_position","_superApply","using","feedback","horizontal","vertical","important","includes","_sanitizeHtml2","timeoutTooltip","$ariaMenuWrapper","buttonOpts","addDropArrow","keepButtonActive","$menu","menuOpts","popup","tabKey","pressTab","popupInstance","$placeholder","_$placeholder","notifyMenuActiveOnParent","$notifyParent","menuselect","popupopen","onOpen","popupclose","adjustCarat","$target","initEvent","returnFocusTo","$carat","triggerWidth","outerWidth","triggerOffsetLeft","mbox","tbox","caratIsBelow","caratY","pointToDropDownFrom","differenceInOffset","actualOffset","caratOffset","kyleMenu","handleMethod","metadataInputHtml","handleRemove","$startLookingFrom","closestKyleMenu","$elToRemove","beforeremove","triggerRemove"],"mappings":"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/tC;AAGA,OAAA+tC,GA2BA04J,EAzBA,SAAAC,GACA,IAAAzgM,EACA0gM;AACA,IAAA1gM,EAAA,EAAiBA,EAAAygM,EAAAhpM,OAAqBuI,GAAA,EACtC0gM,EAAApgM,MACAgZ,KAAAmnL,EAAAzgM,EAAA,GACA8nC,MAAA,IAAA24J,EAAAzgM;AAGA,OAAA0gM,GAgBAF,EAdA,SAAA34L,EAAAgnD,EAAA90D,GACA8N,EAAA8pD,YAAAC,SAAA,WACA/pD,EAAAgS;AACAhS,EAAA8rE,UAAAz8E,MAAA23D,GAAwC90D;AACxC8N,EAAAkkE,iBAUAy0H,EAPA,SAAA34L,EAAAgnD,GACAhnD,EAAA8pD,YAAAC,SAAA,WACA/pD,EAAAgS;AACAhS,EAAA8rE,UAAA5uD,OAAA8pC,GAAyC90D,MAAA,MAAc;AACvD8N,EAAAkkE,iBAkBA+8D,EARA,SAAAjhI,GACAA,EAAA4xE,WAAA,6BAAA5qB,EAAA90D,GACAymM,EAAA34L,EAAAgnD,EAAA90D;AAEA8N,EAAA4xE,WAAA,8BAAA5qB,GACA2xI,EAAA34L,EAAAgnD,MAKA85E,EAAAtvI,QAAAiuI,KAAAznH,MAAA/d,QAAA,wBAEAs3J,EAAA//J,QAAAiuI,KAAAznH,MAAA/d,QAAA,sBAEA6+L,GACA,SACA,QACA,SACA,eACA,SACA,aACA,SACA,aACA,SACA,aACA,SACA,YACA,SACA,SACA,SACA,iBACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,QACA,SACA,OACA,SACA,OACA,SACA,eACA,SACA,OACA,SACA,MACA,SACA,QACA,SACA,eACA,SACA,YACA,SACA,YACA,SACA,aACA,SACA,SACA,SACA,cACA,SACA,UACA,SACA,OACA,SACA,SACA,SACA,OACA,SACA,OACA,SACA,WACA,SACA,aACA,SACA,QACA,SACA,OACA,SACA,QACA,SACA,eACA,SACA,aACA,SACA,YACA,SACA,iBACA,SACA,QAEAC,EAAA,SAAA/4L,GACA,OAAAA,EAAAw1D,SAAA,gBAAAsjI,IAQAE,EAAA,SAAAh5L,GACA,OAAAA,EAAAw1D,SAAA,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AgX,GAHA,SAAAphO,GACAkhO,GAAAlhO,IAIAqhO,GAAA,SAAArhO,GACAuxJ,EAAAh8J,MACAquG,KAAA,OACAE,OAAA,SACAE,UAAA,YACAC,cAAA,gBACAO,UAAA,YACAC,YAAA,eACO,SAAAhzF,EAAApX,GACP2F,EAAAk1H,UAAA76H,GACAg7H,QAAA,EACAC,QAAA7jH,EACAu5J,aAAA4yD,GAAA59N,EAAA3F,GACA86H,QAAAljD,GAAAjyE,EAAA3F,QAIAinO,GAAA,SAAAthO,GACAuxJ,EAAAh8J,MACAgsO,SACA,kBACA,WAEAx0K,QACA,kBACA,UAEAupI,KACA,MACA,OAEA98L,MACA,OACA,QAEAs3D,OACA,QACA,SAEA0rJ,MACA,OACA,WAEAglB,WACA,aACA,aAEAC,WACA,cACA,sBAEAC,aACA,eACA,kBAEA/8H,cACA,mBACA,gBAEAznF,QACA,SACA,WAEO,SAAA5F,EAAAjd,GACP2F,EAAAk1H,UAAA76H,GACAi7H,QAAAh+G,EAAA,GACA0/D,IAAA1/D,EAAA,QAIAqqN,GAAA,SAAA3hO,GACAuxJ,EAAAh8J,MACAgvG,YACA,aACA,iBAEAC,WACA,YACA,aAEAC,aACA,cACA,gBAEO,SAAAntF,EAAAjd,GACP2F,EAAAk1H,UAAA76H,GACAg7H,QAAA,EACAC,QAAAh+G,EAAA,GACA0/D,IAAA1/D,EAAA,GACA0zJ,aAAA4yD,GAAA59N,EAAA3F,QAIAunO,GAAA,SAAA5hO,GACAqhO,GAAArhO;AACAshO,GAAAthO;AACA2hO,GAAA3hO,IAEA6hO,GAAA,SAAA7hO,GACAuxJ,EAAAh8J,MACAquG,MACA,OACA,OACA,UAEAE,QACA,SACA,SACA,UAEAE,WACA,YACA,YACA,UAEAC,eACA,gBACA,iBAEAO,WACA,YACA,aAEAC,aACA,cACA,eAEAE,cACA,mBACA,gBAEA+8H,aACA,eACA,kBAEAprC,KACA,MACA,MACA,UAEA98L,MACA,OACA,OACA,UAEAs3D,OACA,QACA,QACA,UAEA0wK,WACA,aACA,YACA,WAEO,SAAAlqN,EAAAjd,GACP2F,EAAAw1H,YAAAn7H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","file":"common.bundle-e1c8f9e206.js","sourcesContent":["\n    define(['i18nObj', 'translations/subnav_menu_toggle', 'translations/_core', 'translations/_core_en'], function(I18n) {\n      return I18n.scoped('subnav_menu_toggle')\n    });\n  \n\n\n//////////////////\n// WEBPACK FOOTER\n// ./frontend_build/i18n.js?subnav_menu_toggle!./public/javascripts/dummyI18nResource.js\n// module id = +JpRIS14Qm\n// module chunks = 85","\n    define(['i18nObj', 'translations/ajax_errors', 'translations/_core', 'translations/_core_en'], function(I18n) {\n      return I18n.scoped('ajax_errors')\n    });\n  \n\n\n//////////////////\n// WEBPACK FOOTER\n// ./frontend_build/i18n.js?ajax_errors!./public/javascripts/dummyI18nResource.js\n// module id = +fL4qvKaPd\n// module chunks = 85","/*\n * Copyright (C) 2017 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport $ from 'jquery'\n\n// configure MathJax to use 'color' extension fo LaTeX coding\nconst localConfig = {\n  TeX: {\n    extensions: [\"color.js\"]\n  }\n};\n\nexport function loadMathJax (configFile, cb = null) {\n  if (!isMathJaxLoaded()) {\n    // signal local config to mathjax as it loads\n    window.MathJax = localConfig;\n    $.getScript(`//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=${configFile}`, cb);\n  } else if (typeof cb === 'function') {\n      // Make sure we always call the callback if it is loaded already and make sure we\n      // also reprocess the page since chances are if we are requesting MathJax again,\n      // something has changed on the page and needs to get pulled into the MathJax ecosystem\n      window.MathJax.Hub.Reprocess();\n      cb();\n  }\n}\n\nexport function isMathMLOnPage () {\n  const mathElements = $('math:visible').toArray();\n  return mathElements.some(elem => $(elem).parent('.hidden-readable').length <= 0);\n}\n\nexport function isMathJaxLoaded () {\n  return !(typeof MathJax === 'undefined')\n}\n\n/*\n * elem: string with elementId or en elem object\n */\nexport function reloadElement(elem) {\n  if (window.MathJax) {\n    window.MathJax.Hub.Queue(['Typeset', window.MathJax.Hub, elem])\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./public/javascripts/mathml.js","//\n// Copyright (C) 2016 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see <http://www.gnu.org/licenses/>.\n\nimport $ from 'jquery'\n\n// Makes toggle components behave like buttons for a11y\n// (they should respond to the ENTER key)\nconst KEY_CODE_ENTER = 13\n\n$(document).on('keydown', '.ic-Super-toggle__input', (event) => {\n  if (event.which === KEY_CODE_ENTER) $(event.target).click()\n})\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/behaviors/ic-super-toggle.js","//\n// Copyright (C) 2012 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see <http://www.gnu.org/licenses/>.\n\nimport tinymce from 'tinymce/tinymce'\nimport 'tinymce/themes/modern/theme'\nimport 'tinymce/plugins/autolink/plugin'\nimport 'tinymce/plugins/media/plugin'\nimport 'tinymce/plugins/paste/plugin'\nimport 'tinymce/plugins/table/plugin'\nimport 'tinymce/plugins/textcolor/plugin'\nimport 'tinymce/plugins/link/plugin'\nimport 'tinymce/plugins/directionality/plugin'\nimport 'tinymce/plugins/lists/plugin'\nimport 'tinymce/plugins/wordcount/plugin'\n\n// prevent tiny from loading any CSS assets\ntinymce.DOM.loadCSS = function() {}\n\nexport default tinymce\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/editor/stocktiny.js","/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n// 4.9.2 (2018-12-17)\n(function () {\n(function () {\n    'use strict';\n\n    var noop = function () {\n      var args = [];\n      for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n      }\n    };\n    var compose = function (fa, fb) {\n      return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          args[_i] = arguments[_i];\n        }\n        return fa(fb.apply(null, args));\n      };\n    };\n    var constant = function (value) {\n      return function () {\n        return value;\n      };\n    };\n    var identity = function (x) {\n      return x;\n    };\n    function curry(fn) {\n      var initialArgs = [];\n      for (var _i = 1; _i < arguments.length; _i++) {\n        initialArgs[_i - 1] = arguments[_i];\n      }\n      return function () {\n        var restArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          restArgs[_i] = arguments[_i];\n        }\n        var all = initialArgs.concat(restArgs);\n        return fn.apply(null, all);\n      };\n    }\n    var not = function (f) {\n      return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          args[_i] = arguments[_i];\n        }\n        return !f.apply(null, args);\n      };\n    };\n    var die = function (msg) {\n      return function () {\n        throw new Error(msg);\n      };\n    };\n    var never = constant(false);\n    var always = constant(true);\n\n    var never$1 = never;\n    var always$1 = always;\n    var none = function () {\n      return NONE;\n    };\n    var NONE = function () {\n      var eq = function (o) {\n        return o.isNone();\n      };\n      var call$$1 = function (thunk) {\n        return thunk();\n      };\n      var id = function (n) {\n        return n;\n      };\n      var noop$$1 = function () {\n      };\n      var nul = function () {\n        return null;\n      };\n      var undef = function () {\n        return undefined;\n      };\n      var me = {\n        fold: function (n, s) {\n          return n();\n        },\n        is: never$1,\n        isSome: never$1,\n        isNone: always$1,\n        getOr: id,\n        getOrThunk: call$$1,\n        getOrDie: function (msg) {\n          throw new Error(msg || 'error: getOrDie called on none.');\n        },\n        getOrNull: nul,\n        getOrUndefined: undef,\n        or: id,\n        orThunk: call$$1,\n        map: none,\n        ap: none,\n        each: noop$$1,\n        bind: none,\n        flatten: none,\n        exists: never$1,\n        forall: always$1,\n        filter: none,\n        equals: eq,\n        equals_: eq,\n        toArray: function () {\n          return [];\n        },\n        toString: constant('none()')\n      };\n      if (Object.freeze)\n        Object.freeze(me);\n      return me;\n    }();\n    var some = function (a) {\n      var constant_a = function () {\n        return a;\n      };\n      var self = function () {\n        return me;\n      };\n      var map = function (f) {\n        return some(f(a));\n      };\n      var bind = function (f) {\n        return f(a);\n      };\n      var me = {\n        fold: function (n, s) {\n          return s(a);\n        },\n        is: function (v) {\n          return a === v;\n        },\n        isSome: always$1,\n        isNone: never$1,\n        getOr: constant_a,\n        getOrThunk: constant_a,\n        getOrDie: constant_a,\n        getOrNull: constant_a,\n        getOrUndefined: constant_a,\n        or: self,\n        orThunk: self,\n        map: map,\n        ap: function (optfab) {\n          return optfab.fold(none, function (fab) {\n            return some(fab(a));\n          });\n        },\n        each: function (f) {\n          f(a);\n        },\n        bind: bind,\n        flatten: constant_a,\n        exists: bind,\n        forall: bind,\n        filter: function (f) {\n          return f(a) ? me : NONE;\n        },\n        equals: function (o) {\n          return o.is(a);\n        },\n        equals_: function (o, elementEq) {\n          return o.fold(never$1, function (b) {\n            return elementEq(a, b);\n          });\n        },\n        toArray: function () {\n          return [a];\n        },\n        toString: function () {\n          return 'some(' + a + ')';\n        }\n      };\n      return me;\n    };\n    var from = function (value) {\n      return value === null || value === undefined ? NONE : some(value);\n    };\n    var Option = {\n      some: some,\n      none: none,\n      from: from\n    };\n\n    var typeOf = function (x) {\n      if (x === null)\n        return 'null';\n      var t = typeof x;\n      if (t === 'object' && Array.prototype.isPrototypeOf(x))\n        return 'array';\n      if (t === 'object' && String.prototype.isPrototypeOf(x))\n        return 'string';\n      return t;\n    };\n    var isType = function (type) {\n      return function (value) {\n        return typeOf(value) === type;\n      };\n    };\n    var isString = isType('string');\n    var isObject = isType('object');\n    var isArray = isType('array');\n    var isNull = isType('null');\n    var isBoolean = isType('boolean');\n    var isFunction = isType('function');\n    var isNumber = isType('number');\n\n    var rawIndexOf = function () {\n      var pIndexOf = Array.prototype.indexOf;\n      var fastIndex = function (xs, x) {\n        return pIndexOf.call(xs, x);\n      };\n      var slowIndex = function (xs, x) {\n        return slowIndexOf(xs, x);\n      };\n      return pIndexOf === undefined ? slowIndex : fastIndex;\n    }();\n    var indexOf = function (xs, x) {\n      var r = rawIndexOf(xs, x);\n      return r === -1 ? Option.none() : Option.some(r);\n    };\n    var contains = function (xs, x) {\n      return rawIndexOf(xs, x) > -1;\n    };\n    var exists = function (xs, pred) {\n      return findIndex(xs, pred).isSome();\n    };\n    var map = function (xs, f) {\n      var len = xs.length;\n      var r = new Array(len);\n      for (var i = 0; i < len; i++) {\n        var x = xs[i];\n        r[i] = f(x, i, xs);\n      }\n      return r;\n    };\n    var each = function (xs, f) {\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        f(x, i, xs);\n      }\n    };\n    var eachr = function (xs, f) {\n      for (var i = xs.length - 1; i >= 0; i--) {\n        var x = xs[i];\n        f(x, i, xs);\n      }\n    };\n    var partition = function (xs, pred) {\n      var pass = [];\n      var fail = [];\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        var arr = pred(x, i, xs) ? pass : fail;\n        arr.push(x);\n      }\n      return {\n        pass: pass,\n        fail: fail\n      };\n    };\n    var filter = function (xs, pred) {\n      var r = [];\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        if (pred(x, i, xs)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n    var foldr = function (xs, f, acc) {\n      eachr(xs, function (x) {\n        acc = f(acc, x);\n      });\n      return acc;\n    };\n    var foldl = function (xs, f, acc) {\n      each(xs, function (x) {\n        acc = f(acc, x);\n      });\n      return acc;\n    };\n    var find = function (xs, pred) {\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        if (pred(x, i, xs)) {\n          return Option.some(x);\n        }\n      }\n      return Option.none();\n    };\n    var findIndex = function (xs, pred) {\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        if (pred(x, i, xs)) {\n          return Option.some(i);\n        }\n      }\n      return Option.none();\n    };\n    var slowIndexOf = function (xs, x) {\n      for (var i = 0, len = xs.length; i < len; ++i) {\n        if (xs[i] === x) {\n          return i;\n        }\n      }\n      return -1;\n    };\n    var push = Array.prototype.push;\n    var flatten = function (xs) {\n      var r = [];\n      for (var i = 0, len = xs.length; i < len; ++i) {\n        if (!Array.prototype.isPrototypeOf(xs[i]))\n          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n        push.apply(r, xs[i]);\n      }\n      return r;\n    };\n    var bind = function (xs, f) {\n      var output = map(xs, f);\n      return flatten(output);\n    };\n    var forall = function (xs, pred) {\n      for (var i = 0, len = xs.length; i < len; ++i) {\n        var x = xs[i];\n        if (pred(x, i, xs) !== true) {\n          return false;\n        }\n      }\n      return true;\n    };\n    var slice = Array.prototype.slice;\n    var reverse = function (xs) {\n      var r = slice.call(xs, 0);\n      r.reverse();\n      return r;\n    };\n    var difference = function (a1, a2) {\n      return filter(a1, function (x) {\n        return !contains(a2, x);\n      });\n    };\n    var mapToObject = function (xs, f) {\n      var r = {};\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        r[String(x)] = f(x, i);\n      }\n      return r;\n    };\n    var sort = function (xs, comparator) {\n      var copy = slice.call(xs, 0);\n      copy.sort(comparator);\n      return copy;\n    };\n    var head = function (xs) {\n      return xs.length === 0 ? Option.none() : Option.some(xs[0]);\n    };\n    var last = function (xs) {\n      return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]);\n    };\n    var from$1 = isFunction(Array.from) ? Array.from : function (x) {\n      return slice.call(x);\n    };\n\n    var Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n    var path = function (parts, scope) {\n      var o = scope !== undefined && scope !== null ? scope : Global;\n      for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)\n        o = o[parts[i]];\n      return o;\n    };\n    var resolve = function (p, scope) {\n      var parts = p.split('.');\n      return path(parts, scope);\n    };\n\n    var unsafe = function (name, scope) {\n      return resolve(name, scope);\n    };\n    var getOrDie = function (name, scope) {\n      var actual = unsafe(name, scope);\n      if (actual === undefined || actual === null)\n        throw name + ' not available on this browser';\n      return actual;\n    };\n    var Global$1 = { getOrDie: getOrDie };\n\n    var url = function () {\n      return Global$1.getOrDie('URL');\n    };\n    var createObjectURL = function (blob) {\n      return url().createObjectURL(blob);\n    };\n    var revokeObjectURL = function (u) {\n      url().revokeObjectURL(u);\n    };\n    var URL = {\n      createObjectURL: createObjectURL,\n      revokeObjectURL: revokeObjectURL\n    };\n\n    var nav = navigator, userAgent = nav.userAgent;\n    var opera, webkit, ie, ie11, ie12, gecko, mac, iDevice, android, fileApi, phone, tablet, windowsPhone;\n    var matchMediaQuery = function (query) {\n      return 'matchMedia' in window ? matchMedia(query).matches : false;\n    };\n    opera = false;\n    android = /Android/.test(userAgent);\n    webkit = /WebKit/.test(userAgent);\n    ie = !webkit && !opera && /MSIE/gi.test(userAgent) && /Explorer/gi.test(nav.appName);\n    ie = ie && /MSIE (\\w+)\\./.exec(userAgent)[1];\n    ie11 = userAgent.indexOf('Trident/') !== -1 && (userAgent.indexOf('rv:') !== -1 || nav.appName.indexOf('Netscape') !== -1) ? 11 : false;\n    ie12 = userAgent.indexOf('Edge/') !== -1 && !ie && !ie11 ? 12 : false;\n    ie = ie || ie11 || ie12;\n    gecko = !webkit && !ie11 && /Gecko/.test(userAgent);\n    mac = userAgent.indexOf('Mac') !== -1;\n    iDevice = /(iPad|iPhone)/.test(userAgent);\n    fileApi = 'FormData' in window && 'FileReader' in window && 'URL' in window && !!URL.createObjectURL;\n    phone = matchMediaQuery('only screen and (max-device-width: 480px)') && (android || iDevice);\n    tablet = matchMediaQuery('only screen and (min-width: 800px)') && (android || iDevice);\n    windowsPhone = userAgent.indexOf('Windows Phone') !== -1;\n    if (ie12) {\n      webkit = false;\n    }\n    var contentEditable = !iDevice || fileApi || parseInt(userAgent.match(/AppleWebKit\\/(\\d*)/)[1], 10) >= 534;\n    var Env = {\n      opera: opera,\n      webkit: webkit,\n      ie: ie,\n      gecko: gecko,\n      mac: mac,\n      iOS: iDevice,\n      android: android,\n      contentEditable: contentEditable,\n      transparentSrc: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',\n      caretAfter: ie !== 8,\n      range: window.getSelection && 'Range' in window,\n      documentMode: ie && !ie12 ? document.documentMode || 7 : 10,\n      fileApi: fileApi,\n      ceFalse: ie === false || ie > 8,\n      cacheSuffix: null,\n      container: null,\n      overrideViewPort: null,\n      experimentalShadowDom: false,\n      canHaveCSP: ie === false || ie > 11,\n      desktop: !phone && !tablet,\n      windowsPhone: windowsPhone\n    };\n\n    var promise = function () {\n      function bind(fn, thisArg) {\n        return function () {\n          fn.apply(thisArg, arguments);\n        };\n      }\n      var isArray = Array.isArray || function (value) {\n        return Object.prototype.toString.call(value) === '[object Array]';\n      };\n      var Promise = function (fn) {\n        if (typeof this !== 'object') {\n          throw new TypeError('Promises must be constructed via new');\n        }\n        if (typeof fn !== 'function') {\n          throw new TypeError('not a function');\n        }\n        this._state = null;\n        this._value = null;\n        this._deferreds = [];\n        doResolve(fn, bind(resolve, this), bind(reject, this));\n      };\n      var asap = Promise.immediateFn || typeof setImmediate === 'function' && setImmediate || function (fn) {\n        setTimeout(fn, 1);\n      };\n      function handle(deferred) {\n        var me = this;\n        if (this._state === null) {\n          this._deferreds.push(deferred);\n          return;\n        }\n        asap(function () {\n          var cb = me._state ? deferred.onFulfilled : deferred.onRejected;\n          if (cb === null) {\n            (me._state ? deferred.resolve : deferred.reject)(me._value);\n            return;\n          }\n          var ret;\n          try {\n            ret = cb(me._value);\n          } catch (e) {\n            deferred.reject(e);\n            return;\n          }\n          deferred.resolve(ret);\n        });\n      }\n      function resolve(newValue) {\n        try {\n          if (newValue === this) {\n            throw new TypeError('A promise cannot be resolved with itself.');\n          }\n          if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n            var then = newValue.then;\n            if (typeof then === 'function') {\n              doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));\n              return;\n            }\n          }\n          this._state = true;\n          this._value = newValue;\n          finale.call(this);\n        } catch (e) {\n          reject.call(this, e);\n        }\n      }\n      function reject(newValue) {\n        this._state = false;\n        this._value = newValue;\n        finale.call(this);\n      }\n      function finale() {\n        for (var i = 0, len = this._deferreds.length; i < len; i++) {\n          handle.call(this, this._deferreds[i]);\n        }\n        this._deferreds = null;\n      }\n      function Handler(onFulfilled, onRejected, resolve, reject) {\n        this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n        this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n        this.resolve = resolve;\n        this.reject = reject;\n      }\n      function doResolve(fn, onFulfilled, onRejected) {\n        var done = false;\n        try {\n          fn(function (value) {\n            if (done) {\n              return;\n            }\n            done = true;\n            onFulfilled(value);\n          }, function (reason) {\n            if (done) {\n              return;\n            }\n            done = true;\n            onRejected(reason);\n          });\n        } catch (ex) {\n          if (done) {\n            return;\n          }\n          done = true;\n          onRejected(ex);\n        }\n      }\n      Promise.prototype.catch = function (onRejected) {\n        return this.then(null, onRejected);\n      };\n      Promise.prototype.then = function (onFulfilled, onRejected) {\n        var me = this;\n        return new Promise(function (resolve, reject) {\n          handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));\n        });\n      };\n      Promise.all = function () {\n        var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);\n        return new Promise(function (resolve, reject) {\n          if (args.length === 0) {\n            return resolve([]);\n          }\n          var remaining = args.length;\n          function res(i, val) {\n            try {\n              if (val && (typeof val === 'object' || typeof val === 'function')) {\n                var then = val.then;\n                if (typeof then === 'function') {\n                  then.call(val, function (val) {\n                    res(i, val);\n                  }, reject);\n                  return;\n                }\n              }\n              args[i] = val;\n              if (--remaining === 0) {\n                resolve(args);\n              }\n            } catch (ex) {\n              reject(ex);\n            }\n          }\n          for (var i = 0; i < args.length; i++) {\n            res(i, args[i]);\n          }\n        });\n      };\n      Promise.resolve = function (value) {\n        if (value && typeof value === 'object' && value.constructor === Promise) {\n          return value;\n        }\n        return new Promise(function (resolve) {\n          resolve(value);\n        });\n      };\n      Promise.reject = function (value) {\n        return new Promise(function (resolve, reject) {\n          reject(value);\n        });\n      };\n      Promise.race = function (values) {\n        return new Promise(function (resolve, reject) {\n          for (var i = 0, len = values.length; i < len; i++) {\n            values[i].then(resolve, reject);\n          }\n        });\n      };\n      return Promise;\n    };\n    var promiseObj = window.Promise ? window.Promise : promise();\n\n    var requestAnimationFramePromise;\n    var requestAnimationFrame$$1 = function (callback, element) {\n      var i, requestAnimationFrameFunc = window.requestAnimationFrame;\n      var vendors = [\n        'ms',\n        'moz',\n        'webkit'\n      ];\n      var featurefill = function (callback) {\n        window.setTimeout(callback, 0);\n      };\n      for (i = 0; i < vendors.length && !requestAnimationFrameFunc; i++) {\n        requestAnimationFrameFunc = window[vendors[i] + 'RequestAnimationFrame'];\n      }\n      if (!requestAnimationFrameFunc) {\n        requestAnimationFrameFunc = featurefill;\n      }\n      requestAnimationFrameFunc(callback, element);\n    };\n    var wrappedSetTimeout = function (callback, time) {\n      if (typeof time !== 'number') {\n        time = 0;\n      }\n      return setTimeout(callback, time);\n    };\n    var wrappedSetInterval = function (callback, time) {\n      if (typeof time !== 'number') {\n        time = 1;\n      }\n      return setInterval(callback, time);\n    };\n    var wrappedClearTimeout = function (id) {\n      return clearTimeout(id);\n    };\n    var wrappedClearInterval = function (id) {\n      return clearInterval(id);\n    };\n    var debounce = function (callback, time) {\n      var timer, func;\n      func = function () {\n        var args = arguments;\n        clearTimeout(timer);\n        timer = wrappedSetTimeout(function () {\n          callback.apply(this, args);\n        }, time);\n      };\n      func.stop = function () {\n        clearTimeout(timer);\n      };\n      return func;\n    };\n    var Delay = {\n      requestAnimationFrame: function (callback, element) {\n        if (requestAnimationFramePromise) {\n          requestAnimationFramePromise.then(callback);\n          return;\n        }\n        requestAnimationFramePromise = new promiseObj(function (resolve) {\n          if (!element) {\n            element = document.body;\n          }\n          requestAnimationFrame$$1(resolve, element);\n        }).then(callback);\n      },\n      setTimeout: wrappedSetTimeout,\n      setInterval: wrappedSetInterval,\n      setEditorTimeout: function (editor, callback, time) {\n        return wrappedSetTimeout(function () {\n          if (!editor.removed) {\n            callback();\n          }\n        }, time);\n      },\n      setEditorInterval: function (editor, callback, time) {\n        var timer;\n        timer = wrappedSetInterval(function () {\n          if (!editor.removed) {\n            callback();\n          } else {\n            clearInterval(timer);\n          }\n        }, time);\n        return timer;\n      },\n      debounce: debounce,\n      throttle: debounce,\n      clearInterval: wrappedClearInterval,\n      clearTimeout: wrappedClearTimeout\n    };\n\n    var eventExpandoPrefix = 'mce-data-';\n    var mouseEventRe = /^(?:mouse|contextmenu)|click/;\n    var deprecated = {\n      keyLocation: 1,\n      layerX: 1,\n      layerY: 1,\n      returnValue: 1,\n      webkitMovementX: 1,\n      webkitMovementY: 1,\n      keyIdentifier: 1\n    };\n    var hasIsDefaultPrevented = function (event$$1) {\n      return event$$1.isDefaultPrevented === returnTrue || event$$1.isDefaultPrevented === returnFalse;\n    };\n    var returnFalse = function () {\n      return false;\n    };\n    var returnTrue = function () {\n      return true;\n    };\n    var addEvent = function (target, name$$1, callback, capture) {\n      if (target.addEventListener) {\n        target.addEventListener(name$$1, callback, capture || false);\n      } else if (target.attachEvent) {\n        target.attachEvent('on' + name$$1, callback);\n      }\n    };\n    var removeEvent = function (target, name$$1, callback, capture) {\n      if (target.removeEventListener) {\n        target.removeEventListener(name$$1, callback, capture || false);\n      } else if (target.detachEvent) {\n        target.detachEvent('on' + name$$1, callback);\n      }\n    };\n    var getTargetFromShadowDom = function (event$$1, defaultTarget) {\n      if (event$$1.composedPath) {\n        var composedPath = event$$1.composedPath();\n        if (composedPath && composedPath.length > 0) {\n          return composedPath[0];\n        }\n      }\n      return defaultTarget;\n    };\n    var fix = function (originalEvent, data) {\n      var name$$1;\n      var event$$1 = data || {};\n      for (name$$1 in originalEvent) {\n        if (!deprecated[name$$1]) {\n          event$$1[name$$1] = originalEvent[name$$1];\n        }\n      }\n      if (!event$$1.target) {\n        event$$1.target = event$$1.srcElement || document;\n      }\n      if (Env.experimentalShadowDom) {\n        event$$1.target = getTargetFromShadowDom(originalEvent, event$$1.target);\n      }\n      if (originalEvent && mouseEventRe.test(originalEvent.type) && originalEvent.pageX === undefined && originalEvent.clientX !== undefined) {\n        var eventDoc = event$$1.target.ownerDocument || document;\n        var doc = eventDoc.documentElement;\n        var body = eventDoc.body;\n        event$$1.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n        event$$1.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n      }\n      event$$1.preventDefault = function () {\n        event$$1.isDefaultPrevented = returnTrue;\n        if (originalEvent) {\n          if (originalEvent.preventDefault) {\n            originalEvent.preventDefault();\n          } else {\n            originalEvent.returnValue = false;\n          }\n        }\n      };\n      event$$1.stopPropagation = function () {\n        event$$1.isPropagationStopped = returnTrue;\n        if (originalEvent) {\n          if (originalEvent.stopPropagation) {\n            originalEvent.stopPropagation();\n          } else {\n            originalEvent.cancelBubble = true;\n          }\n        }\n      };\n      event$$1.stopImmediatePropagation = function () {\n        event$$1.isImmediatePropagationStopped = returnTrue;\n        event$$1.stopPropagation();\n      };\n      if (hasIsDefaultPrevented(event$$1) === false) {\n        event$$1.isDefaultPrevented = returnFalse;\n        event$$1.isPropagationStopped = returnFalse;\n        event$$1.isImmediatePropagationStopped = returnFalse;\n      }\n      if (typeof event$$1.metaKey === 'undefined') {\n        event$$1.metaKey = false;\n      }\n      return event$$1;\n    };\n    var bindOnReady = function (win, callback, eventUtils) {\n      var doc = win.document, event$$1 = { type: 'ready' };\n      if (eventUtils.domLoaded) {\n        callback(event$$1);\n        return;\n      }\n      var isDocReady = function () {\n        return doc.readyState === 'complete' || doc.readyState === 'interactive' && doc.body;\n      };\n      var readyHandler = function () {\n        if (!eventUtils.domLoaded) {\n          eventUtils.domLoaded = true;\n          callback(event$$1);\n        }\n      };\n      var waitForDomLoaded = function () {\n        if (isDocReady()) {\n          removeEvent(doc, 'readystatechange', waitForDomLoaded);\n          readyHandler();\n        }\n      };\n      var tryScroll = function () {\n        try {\n          doc.documentElement.doScroll('left');\n        } catch (ex) {\n          Delay.setTimeout(tryScroll);\n          return;\n        }\n        readyHandler();\n      };\n      if (doc.addEventListener && !(Env.ie && Env.ie < 11)) {\n        if (isDocReady()) {\n          readyHandler();\n        } else {\n          addEvent(win, 'DOMContentLoaded', readyHandler);\n        }\n      } else {\n        addEvent(doc, 'readystatechange', waitForDomLoaded);\n        if (doc.documentElement.doScroll && win.self === win.top) {\n          tryScroll();\n        }\n      }\n      addEvent(win, 'load', readyHandler);\n    };\n    var EventUtils = function () {\n      var self$$1 = this;\n      var events = {}, count, expando, hasFocusIn, hasMouseEnterLeave, mouseEnterLeave;\n      expando = eventExpandoPrefix + (+new Date()).toString(32);\n      hasMouseEnterLeave = 'onmouseenter' in document.documentElement;\n      hasFocusIn = 'onfocusin' in document.documentElement;\n      mouseEnterLeave = {\n        mouseenter: 'mouseover',\n        mouseleave: 'mouseout'\n      };\n      count = 1;\n      self$$1.domLoaded = false;\n      self$$1.events = events;\n      var executeHandlers = function (evt, id) {\n        var callbackList, i, l, callback;\n        var container = events[id];\n        callbackList = container && container[evt.type];\n        if (callbackList) {\n          for (i = 0, l = callbackList.length; i < l; i++) {\n            callback = callbackList[i];\n            if (callback && callback.func.call(callback.scope, evt) === false) {\n              evt.preventDefault();\n            }\n            if (evt.isImmediatePropagationStopped()) {\n              return;\n            }\n          }\n        }\n      };\n      self$$1.bind = function (target, names, callback, scope) {\n        var id, callbackList, i, name$$1, fakeName, nativeHandler, capture;\n        var win = window;\n        var defaultNativeHandler = function (evt) {\n          executeHandlers(fix(evt || win.event), id);\n        };\n        if (!target || target.nodeType === 3 || target.nodeType === 8) {\n          return;\n        }\n        if (!target[expando]) {\n          id = count++;\n          target[expando] = id;\n          events[id] = {};\n        } else {\n          id = target[expando];\n        }\n        scope = scope || target;\n        names = names.split(' ');\n        i = names.length;\n        while (i--) {\n          name$$1 = names[i];\n          nativeHandler = defaultNativeHandler;\n          fakeName = capture = false;\n          if (name$$1 === 'DOMContentLoaded') {\n            name$$1 = 'ready';\n          }\n          if (self$$1.domLoaded && name$$1 === 'ready' && target.readyState === 'complete') {\n            callback.call(scope, fix({ type: name$$1 }));\n            continue;\n          }\n          if (!hasMouseEnterLeave) {\n            fakeName = mouseEnterLeave[name$$1];\n            if (fakeName) {\n              nativeHandler = function (evt) {\n                var current, related;\n                current = evt.currentTarget;\n                related = evt.relatedTarget;\n                if (related && current.contains) {\n                  related = current.contains(related);\n                } else {\n                  while (related && related !== current) {\n                    related = related.parentNode;\n                  }\n                }\n                if (!related) {\n                  evt = fix(evt || win.event);\n                  evt.type = evt.type === 'mouseout' ? 'mouseleave' : 'mouseenter';\n                  evt.target = current;\n                  executeHandlers(evt, id);\n                }\n              };\n            }\n          }\n          if (!hasFocusIn && (name$$1 === 'focusin' || name$$1 === 'focusout')) {\n            capture = true;\n            fakeName = name$$1 === 'focusin' ? 'focus' : 'blur';\n            nativeHandler = function (evt) {\n              evt = fix(evt || win.event);\n              evt.type = evt.type === 'focus' ? 'focusin' : 'focusout';\n              executeHandlers(evt, id);\n            };\n          }\n          callbackList = events[id][name$$1];\n          if (!callbackList) {\n            events[id][name$$1] = callbackList = [{\n                func: callback,\n                scope: scope\n              }];\n            callbackList.fakeName = fakeName;\n            callbackList.capture = capture;\n            callbackList.nativeHandler = nativeHandler;\n            if (name$$1 === 'ready') {\n              bindOnReady(target, nativeHandler, self$$1);\n            } else {\n              addEvent(target, fakeName || name$$1, nativeHandler, capture);\n            }\n          } else {\n            if (name$$1 === 'ready' && self$$1.domLoaded) {\n              callback({ type: name$$1 });\n            } else {\n              callbackList.push({\n                func: callback,\n                scope: scope\n              });\n            }\n          }\n        }\n        target = callbackList = 0;\n        return callback;\n      };\n      self$$1.unbind = function (target, names, callback) {\n        var id, callbackList, i, ci, name$$1, eventMap;\n        if (!target || target.nodeType === 3 || target.nodeType === 8) {\n          return self$$1;\n        }\n        id = target[expando];\n        if (id) {\n          eventMap = events[id];\n          if (names) {\n            names = names.split(' ');\n            i = names.length;\n            while (i--) {\n              name$$1 = names[i];\n              callbackList = eventMap[name$$1];\n              if (callbackList) {\n                if (callback) {\n                  ci = callbackList.length;\n                  while (ci--) {\n                    if (callbackList[ci].func === callback) {\n                      var nativeHandler = callbackList.nativeHandler;\n                      var fakeName = callbackList.fakeName, capture = callbackList.capture;\n                      callbackList = callbackList.slice(0, ci).concat(callbackList.slice(ci + 1));\n                      callbackList.nativeHandler = nativeHandler;\n                      callbackList.fakeName = fakeName;\n                      callbackList.capture = capture;\n                      eventMap[name$$1] = callbackList;\n                    }\n                  }\n                }\n                if (!callback || callbackList.length === 0) {\n                  delete eventMap[name$$1];\n                  removeEvent(target, callbackList.fakeName || name$$1, callbackList.nativeHandler, callbackList.capture);\n                }\n              }\n            }\n          } else {\n            for (name$$1 in eventMap) {\n              callbackList = eventMap[name$$1];\n              removeEvent(target, callbackList.fakeName || name$$1, callbackList.nativeHandler, callbackList.capture);\n            }\n            eventMap = {};\n          }\n          for (name$$1 in eventMap) {\n            return self$$1;\n          }\n          delete events[id];\n          try {\n            delete target[expando];\n          } catch (ex) {\n            target[expando] = null;\n          }\n        }\n        return self$$1;\n      };\n      self$$1.fire = function (target, name$$1, args) {\n        var id;\n        if (!target || target.nodeType === 3 || target.nodeType === 8) {\n          return self$$1;\n        }\n        args = fix(null, args);\n        args.type = name$$1;\n        args.target = target;\n        do {\n          id = target[expando];\n          if (id) {\n            executeHandlers(args, id);\n          }\n          target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow;\n        } while (target && !args.isPropagationStopped());\n        return self$$1;\n      };\n      self$$1.clean = function (target) {\n        var i, children;\n        var unbind = self$$1.unbind;\n        if (!target || target.nodeType === 3 || target.nodeType === 8) {\n          return self$$1;\n        }\n        if (target[expando]) {\n          unbind(target);\n        }\n        if (!target.getElementsByTagName) {\n          target = target.document;\n        }\n        if (target && target.getElementsByTagName) {\n          unbind(target);\n          children = target.getElementsByTagName('*');\n          i = children.length;\n          while (i--) {\n            target = children[i];\n            if (target[expando]) {\n              unbind(target);\n            }\n          }\n        }\n        return self$$1;\n      };\n      self$$1.destroy = function () {\n        events = {};\n      };\n      self$$1.cancel = function (e) {\n        if (e) {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n        }\n        return false;\n      };\n    };\n    EventUtils.Event = new EventUtils();\n    EventUtils.Event.bind(window, 'ready', function () {\n    });\n\n    var i, support, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, setDocument, document$1, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains$1, expando = 'sizzle' + -new Date(), preferredDoc = window.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), sortOrder = function (a, b) {\n        if (a === b) {\n          hasDuplicate = true;\n        }\n        return 0;\n      }, strundefined = typeof undefined, MAX_NEGATIVE = 1 << 31, hasOwn = {}.hasOwnProperty, arr = [], pop = arr.pop, push_native = arr.push, push$1 = arr.push, slice$1 = arr.slice, indexOf$1 = arr.indexOf || function (elem) {\n        var i = 0, len = this.length;\n        for (; i < len; i++) {\n          if (this[i] === elem) {\n            return i;\n          }\n        }\n        return -1;\n      }, booleans = 'checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped', whitespace = '[\\\\x20\\\\t\\\\r\\\\n\\\\f]', identifier = '(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+', attributes = '\\\\[' + whitespace + '*(' + identifier + ')(?:' + whitespace + '*([*^$|!~]?=)' + whitespace + '*(?:\\'((?:\\\\\\\\.|[^\\\\\\\\\\'])*)\\'|\"((?:\\\\\\\\.|[^\\\\\\\\\"])*)\"|(' + identifier + '))|)' + whitespace + '*\\\\]', pseudos = ':(' + identifier + ')(?:\\\\((' + '(\\'((?:\\\\\\\\.|[^\\\\\\\\\\'])*)\\'|\"((?:\\\\\\\\.|[^\\\\\\\\\"])*)\")|' + '((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|' + attributes + ')*)|' + '.*' + ')\\\\)|)', rtrim = new RegExp('^' + whitespace + '+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)' + whitespace + '+$', 'g'), rcomma = new RegExp('^' + whitespace + '*,' + whitespace + '*'), rcombinators = new RegExp('^' + whitespace + '*([>+~]|' + whitespace + ')' + whitespace + '*'), rattributeQuotes = new RegExp('=' + whitespace + '*([^\\\\]\\'\"]*?)' + whitespace + '*\\\\]', 'g'), rpseudo = new RegExp(pseudos), ridentifier = new RegExp('^' + identifier + '$'), 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        needsContext: new RegExp('^' + whitespace + '*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(' + whitespace + '*((?:-\\\\d)?\\\\d*)' + whitespace + '*\\\\)|)(?=[^-]|$)', 'i')\n      }, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\\d$/i, rnative = /^[^{]+\\{\\s*\\[native \\w/, rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/, rsibling = /[+~]/, rescape = /'|\\\\/g, runescape = new RegExp('\\\\\\\\([\\\\da-f]{1,6}' + whitespace + '?|(' + whitespace + ')|.)', 'ig'), funescape = function (_, escaped, escapedWhitespace) {\n        var high = '0x' + escaped - 65536;\n        return high !== high || escapedWhitespace ? escaped : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320);\n      };\n    try {\n      push$1.apply(arr = slice$1.call(preferredDoc.childNodes), preferredDoc.childNodes);\n      arr[preferredDoc.childNodes.length].nodeType;\n    } catch (e) {\n      push$1 = {\n        apply: arr.length ? function (target, els) {\n          push_native.apply(target, slice$1.call(els));\n        } : function (target, els) {\n          var j = target.length, i = 0;\n          while (target[j++] = els[i++]) {\n          }\n          target.length = j - 1;\n        }\n      };\n    }\n    var Sizzle = function (selector, context, results, seed) {\n      var match, elem, m, nodeType, i, groups, old, nid, newContext, newSelector;\n      if ((context ? context.ownerDocument || context : preferredDoc) !== document$1) {\n        setDocument(context);\n      }\n      context = context || document$1;\n      results = results || [];\n      if (!selector || typeof selector !== 'string') {\n        return results;\n      }\n      if ((nodeType = context.nodeType) !== 1 && nodeType !== 9) {\n        return [];\n      }\n      if (documentIsHTML && !seed) {\n        if (match = rquickExpr.exec(selector)) {\n          if (m = match[1]) {\n            if (nodeType === 9) {\n              elem = context.getElementById(m);\n              if (elem && elem.parentNode) {\n                if (elem.id === m) {\n                  results.push(elem);\n                  return results;\n                }\n              } else {\n                return results;\n              }\n            } else {\n              if (context.ownerDocument && (elem = context.ownerDocument.getElementById(m)) && contains$1(context, elem) && elem.id === m) {\n                results.push(elem);\n                return results;\n              }\n            }\n          } else if (match[2]) {\n            push$1.apply(results, context.getElementsByTagName(selector));\n            return results;\n          } else if ((m = match[3]) && support.getElementsByClassName) {\n            push$1.apply(results, context.getElementsByClassName(m));\n            return results;\n          }\n        }\n        if (support.qsa && (!rbuggyQSA || !rbuggyQSA.test(selector))) {\n          nid = old = expando;\n          newContext = context;\n          newSelector = nodeType === 9 && selector;\n          if (nodeType === 1 && context.nodeName.toLowerCase() !== 'object') {\n            groups = tokenize(selector);\n            if (old = context.getAttribute('id')) {\n              nid = old.replace(rescape, '\\\\$&');\n            } else {\n              context.setAttribute('id', nid);\n            }\n            nid = '[id=\\'' + nid + '\\'] ';\n            i = groups.length;\n            while (i--) {\n              groups[i] = nid + toSelector(groups[i]);\n            }\n            newContext = rsibling.test(selector) && testContext(context.parentNode) || context;\n            newSelector = groups.join(',');\n          }\n          if (newSelector) {\n            try {\n              push$1.apply(results, newContext.querySelectorAll(newSelector));\n              return results;\n            } catch (qsaError) {\n            } finally {\n              if (!old) {\n                context.removeAttribute('id');\n              }\n            }\n          }\n        }\n      }\n      return select(selector.replace(rtrim, '$1'), context, results, seed);\n    };\n    function createCache() {\n      var keys = [];\n      function cache(key, value) {\n        if (keys.push(key + ' ') > Expr.cacheLength) {\n          delete cache[keys.shift()];\n        }\n        return cache[key + ' '] = value;\n      }\n      return cache;\n    }\n    function markFunction(fn) {\n      fn[expando] = true;\n      return fn;\n    }\n    function siblingCheck(a, b) {\n      var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE);\n      if (diff) {\n        return diff;\n      }\n      if (cur) {\n        while (cur = cur.nextSibling) {\n          if (cur === b) {\n            return -1;\n          }\n        }\n      }\n      return a ? 1 : -1;\n    }\n    function createInputPseudo(type) {\n      return function (elem) {\n        var name$$1 = elem.nodeName.toLowerCase();\n        return name$$1 === 'input' && elem.type === type;\n      };\n    }\n    function createButtonPseudo(type) {\n      return function (elem) {\n        var name$$1 = elem.nodeName.toLowerCase();\n        return (name$$1 === 'input' || name$$1 === 'button') && elem.type === type;\n      };\n    }\n    function createPositionalPseudo(fn) {\n      return markFunction(function (argument) {\n        argument = +argument;\n        return markFunction(function (seed, matches) {\n          var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length;\n          while (i--) {\n            if (seed[j = matchIndexes[i]]) {\n              seed[j] = !(matches[j] = seed[j]);\n            }\n          }\n        });\n      });\n    }\n    function testContext(context) {\n      return context && typeof context.getElementsByTagName !== strundefined && context;\n    }\n    support = Sizzle.support = {};\n    isXML = Sizzle.isXML = function (elem) {\n      var documentElement = elem && (elem.ownerDocument || elem).documentElement;\n      return documentElement ? documentElement.nodeName !== 'HTML' : false;\n    };\n    setDocument = Sizzle.setDocument = function (node) {\n      var hasCompare, doc = node ? node.ownerDocument || node : preferredDoc, parent$$1 = doc.defaultView;\n      function getTop(win) {\n        try {\n          return win.top;\n        } catch (ex) {\n        }\n        return null;\n      }\n      if (doc === document$1 || doc.nodeType !== 9 || !doc.documentElement) {\n        return document$1;\n      }\n      document$1 = doc;\n      docElem = doc.documentElement;\n      documentIsHTML = !isXML(doc);\n      if (parent$$1 && parent$$1 !== getTop(parent$$1)) {\n        if (parent$$1.addEventListener) {\n          parent$$1.addEventListener('unload', function () {\n            setDocument();\n          }, false);\n        } else if (parent$$1.attachEvent) {\n          parent$$1.attachEvent('onunload', function () {\n            setDocument();\n          });\n        }\n      }\n      support.attributes = true;\n      support.getElementsByTagName = true;\n      support.getElementsByClassName = rnative.test(doc.getElementsByClassName);\n      support.getById = true;\n      Expr.find.ID = function (id, context) {\n        if (typeof context.getElementById !== strundefined && documentIsHTML) {\n          var m = context.getElementById(id);\n          return m && m.parentNode ? [m] : [];\n        }\n      };\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      Expr.find.TAG = support.getElementsByTagName ? function (tag, context) {\n        if (typeof context.getElementsByTagName !== strundefined) {\n          return context.getElementsByTagName(tag);\n        }\n      } : function (tag, context) {\n        var elem, tmp = [], i = 0, results = context.getElementsByTagName(tag);\n        if (tag === '*') {\n          while (elem = results[i++]) {\n            if (elem.nodeType === 1) {\n              tmp.push(elem);\n            }\n          }\n          return tmp;\n        }\n        return results;\n      };\n      Expr.find.CLASS = support.getElementsByClassName && function (className, context) {\n        if (documentIsHTML) {\n          return context.getElementsByClassName(className);\n        }\n      };\n      rbuggyMatches = [];\n      rbuggyQSA = [];\n      support.disconnectedMatch = true;\n      rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join('|'));\n      rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join('|'));\n      hasCompare = rnative.test(docElem.compareDocumentPosition);\n      contains$1 = hasCompare || rnative.test(docElem.contains) ? function (a, b) {\n        var adown = a.nodeType === 9 ? a.documentElement : a, 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        return false;\n      };\n      sortOrder = hasCompare ? function (a, b) {\n        if (a === b) {\n          hasDuplicate = true;\n          return 0;\n        }\n        var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n        if (compare) {\n          return compare;\n        }\n        compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1;\n        if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n          if (a === doc || a.ownerDocument === preferredDoc && contains$1(preferredDoc, a)) {\n            return -1;\n          }\n          if (b === doc || b.ownerDocument === preferredDoc && contains$1(preferredDoc, b)) {\n            return 1;\n          }\n          return sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0;\n        }\n        return compare & 4 ? -1 : 1;\n      } : function (a, b) {\n        if (a === b) {\n          hasDuplicate = true;\n          return 0;\n        }\n        var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [a], bp = [b];\n        if (!aup || !bup) {\n          return a === doc ? -1 : b === doc ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0;\n        } else if (aup === bup) {\n          return siblingCheck(a, b);\n        }\n        cur = a;\n        while (cur = cur.parentNode) {\n          ap.unshift(cur);\n        }\n        cur = b;\n        while (cur = cur.parentNode) {\n          bp.unshift(cur);\n        }\n        while (ap[i] === bp[i]) {\n          i++;\n        }\n        return i ? siblingCheck(ap[i], bp[i]) : ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0;\n      };\n      return doc;\n    };\n    Sizzle.matches = function (expr, elements) {\n      return Sizzle(expr, null, null, elements);\n    };\n    Sizzle.matchesSelector = function (elem, expr) {\n      if ((elem.ownerDocument || elem) !== document$1) {\n        setDocument(elem);\n      }\n      expr = expr.replace(rattributeQuotes, '=\\'$1\\']');\n      if (support.matchesSelector && documentIsHTML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n        try {\n          var ret = matches.call(elem, expr);\n          if (ret || support.disconnectedMatch || elem.document && elem.document.nodeType !== 11) {\n            return ret;\n          }\n        } catch (e) {\n        }\n      }\n      return Sizzle(expr, document$1, null, [elem]).length > 0;\n    };\n    Sizzle.contains = function (context, elem) {\n      if ((context.ownerDocument || context) !== document$1) {\n        setDocument(context);\n      }\n      return contains$1(context, elem);\n    };\n    Sizzle.attr = function (elem, name$$1) {\n      if ((elem.ownerDocument || elem) !== document$1) {\n        setDocument(elem);\n      }\n      var fn = Expr.attrHandle[name$$1.toLowerCase()], val = fn && hasOwn.call(Expr.attrHandle, name$$1.toLowerCase()) ? fn(elem, name$$1, !documentIsHTML) : undefined;\n      return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name$$1) : (val = elem.getAttributeNode(name$$1)) && val.specified ? val.value : null;\n    };\n    Sizzle.error = function (msg) {\n      throw new Error('Syntax error, unrecognized expression: ' + msg);\n    };\n    Sizzle.uniqueSort = function (results) {\n      var elem, duplicates = [], j = 0, i = 0;\n      hasDuplicate = !support.detectDuplicates;\n      sortInput = !support.sortStable && results.slice(0);\n      results.sort(sortOrder);\n      if (hasDuplicate) {\n        while (elem = results[i++]) {\n          if (elem === results[i]) {\n            j = duplicates.push(i);\n          }\n        }\n        while (j--) {\n          results.splice(duplicates[j], 1);\n        }\n      }\n      sortInput = null;\n      return results;\n    };\n    getText = Sizzle.getText = function (elem) {\n      var node, ret = '', i = 0, nodeType = elem.nodeType;\n      if (!nodeType) {\n        while (node = elem[i++]) {\n          ret += getText(node);\n        }\n      } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {\n        if (typeof elem.textContent === 'string') {\n          return elem.textContent;\n        } else {\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      }\n      return ret;\n    };\n    Expr = Sizzle.selectors = {\n      cacheLength: 50,\n      createPseudo: markFunction,\n      match: matchExpr,\n      attrHandle: {},\n      find: {},\n      relative: {\n        '>': {\n          dir: 'parentNode',\n          first: true\n        },\n        ' ': { dir: 'parentNode' },\n        '+': {\n          dir: 'previousSibling',\n          first: true\n        },\n        '~': { dir: 'previousSibling' }\n      },\n      preFilter: {\n        ATTR: function (match) {\n          match[1] = match[1].replace(runescape, funescape);\n          match[3] = (match[3] || match[4] || match[5] || '').replace(runescape, funescape);\n          if (match[2] === '~=') {\n            match[3] = ' ' + match[3] + ' ';\n          }\n          return match.slice(0, 4);\n        },\n        CHILD: function (match) {\n          match[1] = match[1].toLowerCase();\n          if (match[1].slice(0, 3) === 'nth') {\n            if (!match[3]) {\n              Sizzle.error(match[0]);\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');\n          } else if (match[3]) {\n            Sizzle.error(match[0]);\n          }\n          return match;\n        },\n        PSEUDO: function (match) {\n          var excess, unquoted = !match[6] && match[2];\n          if (matchExpr.CHILD.test(match[0])) {\n            return null;\n          }\n          if (match[3]) {\n            match[2] = match[4] || match[5] || '';\n          } else if (unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(')', unquoted.length - excess) - unquoted.length)) {\n            match[0] = match[0].slice(0, excess);\n            match[2] = unquoted.slice(0, excess);\n          }\n          return match.slice(0, 3);\n        }\n      },\n      filter: {\n        TAG: function (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 (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 !== strundefined && elem.getAttribute('class') || '');\n          });\n        },\n        ATTR: function (name$$1, operator, check) {\n          return function (elem) {\n            var result = Sizzle.attr(elem, name$$1);\n            if (result == null) {\n              return operator === '!=';\n            }\n            if (!operator) {\n              return true;\n            }\n            result += '';\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 + ' ').indexOf(check) > -1 : operator === '|=' ? result === check || result.slice(0, check.length + 1) === check + '-' : false;\n          };\n        },\n        CHILD: function (type, what, argument, first, last) {\n          var simple = type.slice(0, 3) !== 'nth', forward = type.slice(-4) !== 'last', ofType = what === 'of-type';\n          return first === 1 && last === 0 ? function (elem) {\n            return !!elem.parentNode;\n          } : function (elem, context, xml) {\n            var cache, outerCache, node, diff, nodeIndex, start, dir = simple !== forward ? 'nextSibling' : 'previousSibling', parent$$1 = elem.parentNode, name$$1 = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType;\n            if (parent$$1) {\n              if (simple) {\n                while (dir) {\n                  node = elem;\n                  while (node = node[dir]) {\n                    if (ofType ? node.nodeName.toLowerCase() === name$$1 : node.nodeType === 1) {\n                      return false;\n                    }\n                  }\n                  start = dir = type === 'only' && !start && 'nextSibling';\n                }\n                return true;\n              }\n              start = [forward ? parent$$1.firstChild : parent$$1.lastChild];\n              if (forward && useCache) {\n                outerCache = parent$$1[expando] || (parent$$1[expando] = {});\n                cache = outerCache[type] || [];\n                nodeIndex = cache[0] === dirruns && cache[1];\n                diff = cache[0] === dirruns && cache[2];\n                node = nodeIndex && parent$$1.childNodes[nodeIndex];\n                while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n                  if (node.nodeType === 1 && ++diff && node === elem) {\n                    outerCache[type] = [\n                      dirruns,\n                      nodeIndex,\n                      diff\n                    ];\n                    break;\n                  }\n                }\n              } else if (useCache && (cache = (elem[expando] || (elem[expando] = {}))[type]) && cache[0] === dirruns) {\n                diff = cache[1];\n              } else {\n                while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n                  if ((ofType ? node.nodeName.toLowerCase() === name$$1 : node.nodeType === 1) && ++diff) {\n                    if (useCache) {\n                      (node[expando] || (node[expando] = {}))[type] = [\n                        dirruns,\n                        diff\n                      ];\n                    }\n                    if (node === elem) {\n                      break;\n                    }\n                  }\n                }\n              }\n              diff -= last;\n              return diff === first || diff % first === 0 && diff / first >= 0;\n            }\n          };\n        },\n        PSEUDO: function (pseudo, argument) {\n          var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error('unsupported pseudo: ' + pseudo);\n          if (fn[expando]) {\n            return fn(argument);\n          }\n          if (fn.length > 1) {\n            args = [\n              pseudo,\n              pseudo,\n              '',\n              argument\n            ];\n            return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n              var idx, matched = fn(seed, argument), i = matched.length;\n              while (i--) {\n                idx = indexOf$1.call(seed, matched[i]);\n                seed[idx] = !(matches[idx] = matched[i]);\n              }\n            }) : function (elem) {\n              return fn(elem, 0, args);\n            };\n          }\n          return fn;\n        }\n      },\n      pseudos: {\n        not: markFunction(function (selector) {\n          var input = [], results = [], matcher = compile(selector.replace(rtrim, '$1'));\n          return matcher[expando] ? markFunction(function (seed, matches, context, xml) {\n            var elem, unmatched = matcher(seed, null, xml, []), i = seed.length;\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);\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 || elem.innerText || getText(elem)).indexOf(text) > -1;\n          };\n        }),\n        lang: markFunction(function (lang) {\n          if (!ridentifier.test(lang || '')) {\n            Sizzle.error('unsupported lang: ' + lang);\n          }\n          lang = lang.replace(runescape, funescape).toLowerCase();\n          return function (elem) {\n            var elemLang;\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            return false;\n          };\n        }),\n        target: function (elem) {\n          var hash = window.location && window.location.hash;\n          return hash && hash.slice(1) === elem.id;\n        },\n        root: function (elem) {\n          return elem === docElem;\n        },\n        focus: function (elem) {\n          return elem === document$1.activeElement && (!document$1.hasFocus || document$1.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n        },\n        enabled: function (elem) {\n          return elem.disabled === false;\n        },\n        disabled: function (elem) {\n          return elem.disabled === true;\n        },\n        checked: function (elem) {\n          var nodeName = elem.nodeName.toLowerCase();\n          return nodeName === 'input' && !!elem.checked || nodeName === 'option' && !!elem.selected;\n        },\n        selected: function (elem) {\n          if (elem.parentNode) {\n            elem.parentNode.selectedIndex;\n          }\n          return elem.selected === true;\n        },\n        empty: function (elem) {\n          for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n            if (elem.nodeType < 6) {\n              return false;\n            }\n          }\n          return true;\n        },\n        parent: function (elem) {\n          return !Expr.pseudos.empty(elem);\n        },\n        header: function (elem) {\n          return rheader.test(elem.nodeName);\n        },\n        input: function (elem) {\n          return rinputs.test(elem.nodeName);\n        },\n        button: function (elem) {\n          var name$$1 = elem.nodeName.toLowerCase();\n          return name$$1 === 'input' && elem.type === 'button' || name$$1 === 'button';\n        },\n        text: function (elem) {\n          var attr;\n          return elem.nodeName.toLowerCase() === 'input' && elem.type === 'text' && ((attr = elem.getAttribute('type')) == null || attr.toLowerCase() === 'text');\n        },\n        first: createPositionalPseudo(function () {\n          return [0];\n        }),\n        last: createPositionalPseudo(function (matchIndexes, length$$1) {\n          return [length$$1 - 1];\n        }),\n        eq: createPositionalPseudo(function (matchIndexes, length$$1, argument) {\n          return [argument < 0 ? argument + length$$1 : argument];\n        }),\n        even: createPositionalPseudo(function (matchIndexes, length$$1) {\n          var i = 0;\n          for (; i < length$$1; i += 2) {\n            matchIndexes.push(i);\n          }\n          return matchIndexes;\n        }),\n        odd: createPositionalPseudo(function (matchIndexes, length$$1) {\n          var i = 1;\n          for (; i < length$$1; i += 2) {\n            matchIndexes.push(i);\n          }\n          return matchIndexes;\n        }),\n        lt: createPositionalPseudo(function (matchIndexes, length$$1, argument) {\n          var i = argument < 0 ? argument + length$$1 : argument;\n          for (; --i >= 0;) {\n            matchIndexes.push(i);\n          }\n          return matchIndexes;\n        }),\n        gt: createPositionalPseudo(function (matchIndexes, length$$1, argument) {\n          var i = argument < 0 ? argument + length$$1 : argument;\n          for (; ++i < length$$1;) {\n            matchIndexes.push(i);\n          }\n          return matchIndexes;\n        })\n      }\n    };\n    Expr.pseudos.nth = Expr.pseudos.eq;\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    for (i in {\n        submit: true,\n        reset: true\n      }) {\n      Expr.pseudos[i] = createButtonPseudo(i);\n    }\n    function setFilters() {\n    }\n    setFilters.prototype = Expr.filters = Expr.pseudos;\n    Expr.setFilters = new setFilters();\n    tokenize = Sizzle.tokenize = function (selector, parseOnly) {\n      var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + ' '];\n      if (cached) {\n        return parseOnly ? 0 : cached.slice(0);\n      }\n      soFar = selector;\n      groups = [];\n      preFilters = Expr.preFilter;\n      while (soFar) {\n        if (!matched || (match = rcomma.exec(soFar))) {\n          if (match) {\n            soFar = soFar.slice(match[0].length) || soFar;\n          }\n          groups.push(tokens = []);\n        }\n        matched = false;\n        if (match = rcombinators.exec(soFar)) {\n          matched = match.shift();\n          tokens.push({\n            value: matched,\n            type: match[0].replace(rtrim, ' ')\n          });\n          soFar = soFar.slice(matched.length);\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        if (!matched) {\n          break;\n        }\n      }\n      return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0);\n    };\n    function toSelector(tokens) {\n      var i = 0, len = tokens.length, selector = '';\n      for (; i < len; i++) {\n        selector += tokens[i].value;\n      }\n      return selector;\n    }\n    function addCombinator(matcher, combinator, base) {\n      var dir = combinator.dir, checkNonElements = base && dir === 'parentNode', doneName = done++;\n      return combinator.first ? function (elem, context, xml) {\n        while (elem = elem[dir]) {\n          if (elem.nodeType === 1 || checkNonElements) {\n            return matcher(elem, context, xml);\n          }\n        }\n      } : function (elem, context, xml) {\n        var oldCache, outerCache, newCache = [\n            dirruns,\n            doneName\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] = {});\n              if ((oldCache = outerCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n                return newCache[2] = oldCache[2];\n              } else {\n                outerCache[dir] = newCache;\n                if (newCache[2] = matcher(elem, context, xml)) {\n                  return true;\n                }\n              }\n            }\n          }\n        }\n      };\n    }\n    function elementMatcher(matchers) {\n      return matchers.length > 1 ? function (elem, context, xml) {\n        var i = matchers.length;\n        while (i--) {\n          if (!matchers[i](elem, context, xml)) {\n            return false;\n          }\n        }\n        return true;\n      } : matchers[0];\n    }\n    function multipleContexts(selector, contexts, results) {\n      var i = 0, len = contexts.length;\n      for (; i < len; i++) {\n        Sizzle(selector, contexts[i], results);\n      }\n      return results;\n    }\n    function condense(unmatched, map, filter, context, xml) {\n      var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null;\n      for (; i < len; i++) {\n        if (elem = unmatched[i]) {\n          if (!filter || filter(elem, context, xml)) {\n            newUnmatched.push(elem);\n            if (mapped) {\n              map.push(i);\n            }\n          }\n        }\n      }\n      return newUnmatched;\n    }\n    function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n      if (postFilter && !postFilter[expando]) {\n        postFilter = setMatcher(postFilter);\n      }\n      if (postFinder && !postFinder[expando]) {\n        postFinder = setMatcher(postFinder, postSelector);\n      }\n      return markFunction(function (seed, results, context, xml) {\n        var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts(selector || '*', context.nodeType ? [context] : context, []), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems, matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn;\n        if (matcher) {\n          matcher(matcherIn, matcherOut, context, xml);\n        }\n        if (postFilter) {\n          temp = condense(matcherOut, postMap);\n          postFilter(temp, [], context, xml);\n          i = temp.length;\n          while (i--) {\n            if (elem = temp[i]) {\n              matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n            }\n          }\n        }\n        if (seed) {\n          if (postFinder || preFilter) {\n            if (postFinder) {\n              temp = [];\n              i = matcherOut.length;\n              while (i--) {\n                if (elem = matcherOut[i]) {\n                  temp.push(matcherIn[i] = elem);\n                }\n              }\n              postFinder(null, matcherOut = [], temp, xml);\n            }\n            i = matcherOut.length;\n            while (i--) {\n              if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf$1.call(seed, elem) : preMap[i]) > -1) {\n                seed[temp] = !(results[temp] = elem);\n              }\n            }\n          }\n        } else {\n          matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n          if (postFinder) {\n            postFinder(null, results, matcherOut, xml);\n          } else {\n            push$1.apply(results, matcherOut);\n          }\n        }\n      });\n    }\n    function matcherFromTokens(tokens) {\n      var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[' '], i = leadingRelative ? 1 : 0, matchContext = addCombinator(function (elem) {\n          return elem === checkContext;\n        }, implicitRelative, true), matchAnyContext = addCombinator(function (elem) {\n          return indexOf$1.call(checkContext, elem) > -1;\n        }, implicitRelative, true), matchers = [function (elem, context, xml) {\n            return !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));\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);\n          if (matcher[expando]) {\n            j = ++i;\n            for (; j < len; j++) {\n              if (Expr.relative[tokens[j].type]) {\n                break;\n              }\n            }\n            return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1).concat({ value: tokens[i - 2].type === ' ' ? '*' : '' })).replace(rtrim, '$1'), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n          }\n          matchers.push(matcher);\n        }\n      }\n      return elementMatcher(matchers);\n    }\n    function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n      var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function (seed, context, xml, results, outermost) {\n          var elem, j, matcher, matchedCount = 0, i = '0', unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find.TAG('*', outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length;\n          if (outermost) {\n            outermostContext = context !== document$1 && context;\n          }\n          for (; i !== len && (elem = elems[i]) != null; i++) {\n            if (byElement && elem) {\n              j = 0;\n              while (matcher = elementMatchers[j++]) {\n                if (matcher(elem, context, xml)) {\n                  results.push(elem);\n                  break;\n                }\n              }\n              if (outermost) {\n                dirruns = dirrunsUnique;\n              }\n            }\n            if (bySet) {\n              if (elem = !matcher && elem) {\n                matchedCount--;\n              }\n              if (seed) {\n                unmatched.push(elem);\n              }\n            }\n          }\n          matchedCount += i;\n          if (bySet && i !== matchedCount) {\n            j = 0;\n            while (matcher = setMatchers[j++]) {\n              matcher(unmatched, setMatched, context, xml);\n            }\n            if (seed) {\n              if (matchedCount > 0) {\n                while (i--) {\n                  if (!(unmatched[i] || setMatched[i])) {\n                    setMatched[i] = pop.call(results);\n                  }\n                }\n              }\n              setMatched = condense(setMatched);\n            }\n            push$1.apply(results, setMatched);\n            if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n              Sizzle.uniqueSort(results);\n            }\n          }\n          if (outermost) {\n            dirruns = dirrunsUnique;\n            outermostContext = contextBackup;\n          }\n          return unmatched;\n        };\n      return bySet ? markFunction(superMatcher) : superMatcher;\n    }\n    compile = Sizzle.compile = function (selector, match) {\n      var i, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + ' '];\n      if (!cached) {\n        if (!match) {\n          match = tokenize(selector);\n        }\n        i = match.length;\n        while (i--) {\n          cached = matcherFromTokens(match[i]);\n          if (cached[expando]) {\n            setMatchers.push(cached);\n          } else {\n            elementMatchers.push(cached);\n          }\n        }\n        cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));\n        cached.selector = selector;\n      }\n      return cached;\n    };\n    select = Sizzle.select = function (selector, context, results, seed) {\n      var i, tokens, token, type, find, compiled = typeof selector === 'function' && selector, match = !seed && tokenize(selector = compiled.selector || selector);\n      results = results || [];\n      if (match.length === 1) {\n        tokens = match[0] = match[0].slice(0);\n        if (tokens.length > 2 && (token = tokens[0]).type === 'ID' && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n          context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0];\n          if (!context) {\n            return results;\n          } else if (compiled) {\n            context = context.parentNode;\n          }\n          selector = selector.slice(tokens.shift().value.length);\n        }\n        i = matchExpr.needsContext.test(selector) ? 0 : tokens.length;\n        while (i--) {\n          token = tokens[i];\n          if (Expr.relative[type = token.type]) {\n            break;\n          }\n          if (find = Expr.find[type]) {\n            if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n              tokens.splice(i, 1);\n              selector = seed.length && toSelector(tokens);\n              if (!selector) {\n                push$1.apply(results, seed);\n                return results;\n              }\n              break;\n            }\n          }\n        }\n      }\n      (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, rsibling.test(selector) && testContext(context.parentNode) || context);\n      return results;\n    };\n    support.sortStable = expando.split('').sort(sortOrder).join('') === expando;\n    support.detectDuplicates = !!hasDuplicate;\n    setDocument();\n    support.sortDetached = true;\n\n    var isArray$1 = Array.isArray;\n    var toArray = function (obj) {\n      var array = obj, i, l;\n      if (!isArray$1(obj)) {\n        array = [];\n        for (i = 0, l = obj.length; i < l; i++) {\n          array[i] = obj[i];\n        }\n      }\n      return array;\n    };\n    var each$1 = function (o, cb, s) {\n      var n, l;\n      if (!o) {\n        return 0;\n      }\n      s = s || o;\n      if (o.length !== undefined) {\n        for (n = 0, l = o.length; n < l; n++) {\n          if (cb.call(s, o[n], n, o) === false) {\n            return 0;\n          }\n        }\n      } else {\n        for (n in o) {\n          if (o.hasOwnProperty(n)) {\n            if (cb.call(s, o[n], n, o) === false) {\n              return 0;\n            }\n          }\n        }\n      }\n      return 1;\n    };\n    var map$1 = function (array, callback) {\n      var out = [];\n      each$1(array, function (item, index) {\n        out.push(callback(item, index, array));\n      });\n      return out;\n    };\n    var filter$1 = function (a, f) {\n      var o = [];\n      each$1(a, function (v, index) {\n        if (!f || f(v, index, a)) {\n          o.push(v);\n        }\n      });\n      return o;\n    };\n    var indexOf$2 = function (a, v) {\n      var i, l;\n      if (a) {\n        for (i = 0, l = a.length; i < l; i++) {\n          if (a[i] === v) {\n            return i;\n          }\n        }\n      }\n      return -1;\n    };\n    var reduce = function (collection, iteratee, accumulator, thisArg) {\n      var i = 0;\n      if (arguments.length < 3) {\n        accumulator = collection[0];\n      }\n      for (; i < collection.length; i++) {\n        accumulator = iteratee.call(thisArg, accumulator, collection[i], i);\n      }\n      return accumulator;\n    };\n    var findIndex$1 = function (array, predicate, thisArg) {\n      var i, l;\n      for (i = 0, l = array.length; i < l; i++) {\n        if (predicate.call(thisArg, array[i], i, array)) {\n          return i;\n        }\n      }\n      return -1;\n    };\n    var find$1 = function (array, predicate, thisArg) {\n      var idx = findIndex$1(array, predicate, thisArg);\n      if (idx !== -1) {\n        return array[idx];\n      }\n      return undefined;\n    };\n    var last$1 = function (collection) {\n      return collection[collection.length - 1];\n    };\n    var ArrUtils = {\n      isArray: isArray$1,\n      toArray: toArray,\n      each: each$1,\n      map: map$1,\n      filter: filter$1,\n      indexOf: indexOf$2,\n      reduce: reduce,\n      findIndex: findIndex$1,\n      find: find$1,\n      last: last$1\n    };\n\n    var whiteSpaceRegExp = /^\\s*|\\s*$/g;\n    var trim = function (str) {\n      return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp, '');\n    };\n    var is = function (obj, type) {\n      if (!type) {\n        return obj !== undefined;\n      }\n      if (type === 'array' && ArrUtils.isArray(obj)) {\n        return true;\n      }\n      return typeof obj === type;\n    };\n    var makeMap = function (items, delim, map) {\n      var i;\n      items = items || [];\n      delim = delim || ',';\n      if (typeof items === 'string') {\n        items = items.split(delim);\n      }\n      map = map || {};\n      i = items.length;\n      while (i--) {\n        map[items[i]] = {};\n      }\n      return map;\n    };\n    var hasOwnProperty = function (obj, prop) {\n      return Object.prototype.hasOwnProperty.call(obj, prop);\n    };\n    var create = function (s, p, root) {\n      var self$$1 = this;\n      var sp, ns, cn, scn, c, de = 0;\n      s = /^((static) )?([\\w.]+)(:([\\w.]+))?/.exec(s);\n      cn = s[3].match(/(^|\\.)(\\w+)$/i)[2];\n      ns = self$$1.createNS(s[3].replace(/\\.\\w+$/, ''), root);\n      if (ns[cn]) {\n        return;\n      }\n      if (s[2] === 'static') {\n        ns[cn] = p;\n        if (this.onCreate) {\n          this.onCreate(s[2], s[3], ns[cn]);\n        }\n        return;\n      }\n      if (!p[cn]) {\n        p[cn] = function () {\n        };\n        de = 1;\n      }\n      ns[cn] = p[cn];\n      self$$1.extend(ns[cn].prototype, p);\n      if (s[5]) {\n        sp = self$$1.resolve(s[5]).prototype;\n        scn = s[5].match(/\\.(\\w+)$/i)[1];\n        c = ns[cn];\n        if (de) {\n          ns[cn] = function () {\n            return sp[scn].apply(this, arguments);\n          };\n        } else {\n          ns[cn] = function () {\n            this.parent = sp[scn];\n            return c.apply(this, arguments);\n          };\n        }\n        ns[cn].prototype[cn] = ns[cn];\n        self$$1.each(sp, function (f, n) {\n          ns[cn].prototype[n] = sp[n];\n        });\n        self$$1.each(p, function (f, n) {\n          if (sp[n]) {\n            ns[cn].prototype[n] = function () {\n              this.parent = sp[n];\n              return f.apply(this, arguments);\n            };\n          } else {\n            if (n !== cn) {\n              ns[cn].prototype[n] = f;\n            }\n          }\n        });\n      }\n      self$$1.each(p.static, function (f, n) {\n        ns[cn][n] = f;\n      });\n    };\n    var extend = function (obj, ext) {\n      var x = [];\n      for (var _i = 2; _i < arguments.length; _i++) {\n        x[_i - 2] = arguments[_i];\n      }\n      var i, l, name$$1;\n      var args = arguments;\n      var value;\n      for (i = 1, l = args.length; i < l; i++) {\n        ext = args[i];\n        for (name$$1 in ext) {\n          if (ext.hasOwnProperty(name$$1)) {\n            value = ext[name$$1];\n            if (value !== undefined) {\n              obj[name$$1] = value;\n            }\n          }\n        }\n      }\n      return obj;\n    };\n    var walk = function (o, f, n, s) {\n      s = s || this;\n      if (o) {\n        if (n) {\n          o = o[n];\n        }\n        ArrUtils.each(o, function (o, i) {\n          if (f.call(s, o, i, n) === false) {\n            return false;\n          }\n          walk(o, f, n, s);\n        });\n      }\n    };\n    var createNS = function (n, o) {\n      var i, v;\n      o = o || window;\n      n = n.split('.');\n      for (i = 0; i < n.length; i++) {\n        v = n[i];\n        if (!o[v]) {\n          o[v] = {};\n        }\n        o = o[v];\n      }\n      return o;\n    };\n    var resolve$1 = function (n, o) {\n      var i, l;\n      o = o || window;\n      n = n.split('.');\n      for (i = 0, l = n.length; i < l; i++) {\n        o = o[n[i]];\n        if (!o) {\n          break;\n        }\n      }\n      return o;\n    };\n    var explode = function (s, d) {\n      if (!s || is(s, 'array')) {\n        return s;\n      }\n      return ArrUtils.map(s.split(d || ','), trim);\n    };\n    var _addCacheSuffix = function (url) {\n      var cacheSuffix = Env.cacheSuffix;\n      if (cacheSuffix) {\n        url += (url.indexOf('?') === -1 ? '?' : '&') + cacheSuffix;\n      }\n      return url;\n    };\n    var Tools = {\n      trim: trim,\n      isArray: ArrUtils.isArray,\n      is: is,\n      toArray: ArrUtils.toArray,\n      makeMap: makeMap,\n      each: ArrUtils.each,\n      map: ArrUtils.map,\n      grep: ArrUtils.filter,\n      inArray: ArrUtils.indexOf,\n      hasOwn: hasOwnProperty,\n      extend: extend,\n      create: create,\n      walk: walk,\n      createNS: createNS,\n      resolve: resolve$1,\n      explode: explode,\n      _addCacheSuffix: _addCacheSuffix\n    };\n\n    var doc = document, push$2 = Array.prototype.push, slice$2 = Array.prototype.slice;\n    var rquickExpr$1 = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/;\n    var Event$$1 = EventUtils.Event;\n    var skipUniques = Tools.makeMap('children,contents,next,prev');\n    var isDefined = function (obj) {\n      return typeof obj !== 'undefined';\n    };\n    var isString$1 = function (obj) {\n      return typeof obj === 'string';\n    };\n    var isWindow = function (obj) {\n      return obj && obj === obj.window;\n    };\n    var createFragment = function (html, fragDoc) {\n      var frag, node, container;\n      fragDoc = fragDoc || doc;\n      container = fragDoc.createElement('div');\n      frag = fragDoc.createDocumentFragment();\n      container.innerHTML = html;\n      while (node = container.firstChild) {\n        frag.appendChild(node);\n      }\n      return frag;\n    };\n    var domManipulate = function (targetNodes, sourceItem, callback, reverse) {\n      var i;\n      if (isString$1(sourceItem)) {\n        sourceItem = createFragment(sourceItem, getElementDocument(targetNodes[0]));\n      } else if (sourceItem.length && !sourceItem.nodeType) {\n        sourceItem = DomQuery.makeArray(sourceItem);\n        if (reverse) {\n          for (i = sourceItem.length - 1; i >= 0; i--) {\n            domManipulate(targetNodes, sourceItem[i], callback, reverse);\n          }\n        } else {\n          for (i = 0; i < sourceItem.length; i++) {\n            domManipulate(targetNodes, sourceItem[i], callback, reverse);\n          }\n        }\n        return targetNodes;\n      }\n      if (sourceItem.nodeType) {\n        i = targetNodes.length;\n        while (i--) {\n          callback.call(targetNodes[i], sourceItem);\n        }\n      }\n      return targetNodes;\n    };\n    var hasClass = function (node, className) {\n      return node && className && (' ' + node.className + ' ').indexOf(' ' + className + ' ') !== -1;\n    };\n    var wrap = function (elements, wrapper, all) {\n      var lastParent, newWrapper;\n      wrapper = DomQuery(wrapper)[0];\n      elements.each(function () {\n        var self$$1 = this;\n        if (!all || lastParent !== self$$1.parentNode) {\n          lastParent = self$$1.parentNode;\n          newWrapper = wrapper.cloneNode(false);\n          self$$1.parentNode.insertBefore(newWrapper, self$$1);\n          newWrapper.appendChild(self$$1);\n        } else {\n          newWrapper.appendChild(self$$1);\n        }\n      });\n      return elements;\n    };\n    var numericCssMap = Tools.makeMap('fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom', ' ');\n    var booleanMap = Tools.makeMap('checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected', ' ');\n    var propFix = {\n      for: 'htmlFor',\n      class: 'className',\n      readonly: 'readOnly'\n    };\n    var cssFix = { float: 'cssFloat' };\n    var attrHooks = {}, cssHooks = {};\n    var DomQuery = function (selector, context) {\n      return new DomQuery.fn.init(selector, context);\n    };\n    var inArray = function (item, array) {\n      var i;\n      if (array.indexOf) {\n        return array.indexOf(item);\n      }\n      i = array.length;\n      while (i--) {\n        if (array[i] === item) {\n          return i;\n        }\n      }\n      return -1;\n    };\n    var whiteSpaceRegExp$1 = /^\\s*|\\s*$/g;\n    var trim$1 = function (str) {\n      return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp$1, '');\n    };\n    var each$2 = function (obj, callback) {\n      var length$$1, key, i, value;\n      if (obj) {\n        length$$1 = obj.length;\n        if (length$$1 === undefined) {\n          for (key in obj) {\n            if (obj.hasOwnProperty(key)) {\n              value = obj[key];\n              if (callback.call(value, key, value) === false) {\n                break;\n              }\n            }\n          }\n        } else {\n          for (i = 0; i < length$$1; i++) {\n            value = obj[i];\n            if (callback.call(value, i, value) === false) {\n              break;\n            }\n          }\n        }\n      }\n      return obj;\n    };\n    var grep = function (array, callback) {\n      var out = [];\n      each$2(array, function (i, item) {\n        if (callback(item, i)) {\n          out.push(item);\n        }\n      });\n      return out;\n    };\n    var getElementDocument = function (element) {\n      if (!element) {\n        return doc;\n      }\n      if (element.nodeType === 9) {\n        return element;\n      }\n      return element.ownerDocument;\n    };\n    DomQuery.fn = DomQuery.prototype = {\n      constructor: DomQuery,\n      selector: '',\n      context: null,\n      length: 0,\n      init: function (selector, context) {\n        var self$$1 = this;\n        var match, node;\n        if (!selector) {\n          return self$$1;\n        }\n        if (selector.nodeType) {\n          self$$1.context = self$$1[0] = selector;\n          self$$1.length = 1;\n          return self$$1;\n        }\n        if (context && context.nodeType) {\n          self$$1.context = context;\n        } else {\n          if (context) {\n            return DomQuery(selector).attr(context);\n          }\n          self$$1.context = context = document;\n        }\n        if (isString$1(selector)) {\n          self$$1.selector = selector;\n          if (selector.charAt(0) === '<' && selector.charAt(selector.length - 1) === '>' && selector.length >= 3) {\n            match = [\n              null,\n              selector,\n              null\n            ];\n          } else {\n            match = rquickExpr$1.exec(selector);\n          }\n          if (match) {\n            if (match[1]) {\n              node = createFragment(selector, getElementDocument(context)).firstChild;\n              while (node) {\n                push$2.call(self$$1, node);\n                node = node.nextSibling;\n              }\n            } else {\n              node = getElementDocument(context).getElementById(match[2]);\n              if (!node) {\n                return self$$1;\n              }\n              if (node.id !== match[2]) {\n                return self$$1.find(selector);\n              }\n              self$$1.length = 1;\n              self$$1[0] = node;\n            }\n          } else {\n            return DomQuery(context).find(selector);\n          }\n        } else {\n          this.add(selector, false);\n        }\n        return self$$1;\n      },\n      toArray: function () {\n        return Tools.toArray(this);\n      },\n      add: function (items, sort) {\n        var self$$1 = this;\n        var nodes, i;\n        if (isString$1(items)) {\n          return self$$1.add(DomQuery(items));\n        }\n        if (sort !== false) {\n          nodes = DomQuery.unique(self$$1.toArray().concat(DomQuery.makeArray(items)));\n          self$$1.length = nodes.length;\n          for (i = 0; i < nodes.length; i++) {\n            self$$1[i] = nodes[i];\n          }\n        } else {\n          push$2.apply(self$$1, DomQuery.makeArray(items));\n        }\n        return self$$1;\n      },\n      attr: function (name$$1, value) {\n        var self$$1 = this;\n        var hook;\n        if (typeof name$$1 === 'object') {\n          each$2(name$$1, function (name$$1, value) {\n            self$$1.attr(name$$1, value);\n          });\n        } else if (isDefined(value)) {\n          this.each(function () {\n            var hook;\n            if (this.nodeType === 1) {\n              hook = attrHooks[name$$1];\n              if (hook && hook.set) {\n                hook.set(this, value);\n                return;\n              }\n              if (value === null) {\n                this.removeAttribute(name$$1, 2);\n              } else {\n                this.setAttribute(name$$1, value, 2);\n              }\n            }\n          });\n        } else {\n          if (self$$1[0] && self$$1[0].nodeType === 1) {\n            hook = attrHooks[name$$1];\n            if (hook && hook.get) {\n              return hook.get(self$$1[0], name$$1);\n            }\n            if (booleanMap[name$$1]) {\n              return self$$1.prop(name$$1) ? name$$1 : undefined;\n            }\n            value = self$$1[0].getAttribute(name$$1, 2);\n            if (value === null) {\n              value = undefined;\n            }\n          }\n          return value;\n        }\n        return self$$1;\n      },\n      removeAttr: function (name$$1) {\n        return this.attr(name$$1, null);\n      },\n      prop: function (name$$1, value) {\n        var self$$1 = this;\n        name$$1 = propFix[name$$1] || name$$1;\n        if (typeof name$$1 === 'object') {\n          each$2(name$$1, function (name$$1, value) {\n            self$$1.prop(name$$1, value);\n          });\n        } else if (isDefined(value)) {\n          this.each(function () {\n            if (this.nodeType === 1) {\n              this[name$$1] = value;\n            }\n          });\n        } else {\n          if (self$$1[0] && self$$1[0].nodeType && name$$1 in self$$1[0]) {\n            return self$$1[0][name$$1];\n          }\n          return value;\n        }\n        return self$$1;\n      },\n      css: function (name$$1, value) {\n        var self$$1 = this;\n        var elm, hook;\n        var camel = function (name$$1) {\n          return name$$1.replace(/-(\\D)/g, function (a, b) {\n            return b.toUpperCase();\n          });\n        };\n        var dashed = function (name$$1) {\n          return name$$1.replace(/[A-Z]/g, function (a) {\n            return '-' + a;\n          });\n        };\n        if (typeof name$$1 === 'object') {\n          each$2(name$$1, function (name$$1, value) {\n            self$$1.css(name$$1, value);\n          });\n        } else {\n          if (isDefined(value)) {\n            name$$1 = camel(name$$1);\n            if (typeof value === 'number' && !numericCssMap[name$$1]) {\n              value = value.toString() + 'px';\n            }\n            self$$1.each(function () {\n              var style = this.style;\n              hook = cssHooks[name$$1];\n              if (hook && hook.set) {\n                hook.set(this, value);\n                return;\n              }\n              try {\n                this.style[cssFix[name$$1] || name$$1] = value;\n              } catch (ex) {\n              }\n              if (value === null || value === '') {\n                if (style.removeProperty) {\n                  style.removeProperty(dashed(name$$1));\n                } else {\n                  style.removeAttribute(name$$1);\n                }\n              }\n            });\n          } else {\n            elm = self$$1[0];\n            hook = cssHooks[name$$1];\n            if (hook && hook.get) {\n              return hook.get(elm);\n            }\n            if (elm.ownerDocument.defaultView) {\n              try {\n                return elm.ownerDocument.defaultView.getComputedStyle(elm, null).getPropertyValue(dashed(name$$1));\n              } catch (ex) {\n                return undefined;\n              }\n            } else if (elm.currentStyle) {\n              return elm.currentStyle[camel(name$$1)];\n            } else {\n              return '';\n            }\n          }\n        }\n        return self$$1;\n      },\n      remove: function () {\n        var self$$1 = this;\n        var node, i = this.length;\n        while (i--) {\n          node = self$$1[i];\n          Event$$1.clean(node);\n          if (node.parentNode) {\n            node.parentNode.removeChild(node);\n          }\n        }\n        return this;\n      },\n      empty: function () {\n        var self$$1 = this;\n        var node, i = this.length;\n        while (i--) {\n          node = self$$1[i];\n          while (node.firstChild) {\n            node.removeChild(node.firstChild);\n          }\n        }\n        return this;\n      },\n      html: function (value) {\n        var self$$1 = this;\n        var i;\n        if (isDefined(value)) {\n          i = self$$1.length;\n          try {\n            while (i--) {\n              self$$1[i].innerHTML = value;\n            }\n          } catch (ex) {\n            DomQuery(self$$1[i]).empty().append(value);\n          }\n          return self$$1;\n        }\n        return self$$1[0] ? self$$1[0].innerHTML : '';\n      },\n      text: function (value) {\n        var self$$1 = this;\n        var i;\n        if (isDefined(value)) {\n          i = self$$1.length;\n          while (i--) {\n            if ('innerText' in self$$1[i]) {\n              self$$1[i].innerText = value;\n            } else {\n              self$$1[0].textContent = value;\n            }\n          }\n          return self$$1;\n        }\n        return self$$1[0] ? self$$1[0].innerText || self$$1[0].textContent : '';\n      },\n      append: function () {\n        return domManipulate(this, arguments, function (node) {\n          if (this.nodeType === 1 || this.host && this.host.nodeType === 1) {\n            this.appendChild(node);\n          }\n        });\n      },\n      prepend: function () {\n        return domManipulate(this, arguments, function (node) {\n          if (this.nodeType === 1 || this.host && this.host.nodeType === 1) {\n            this.insertBefore(node, this.firstChild);\n          }\n        }, true);\n      },\n      before: function () {\n        var self$$1 = this;\n        if (self$$1[0] && self$$1[0].parentNode) {\n          return domManipulate(self$$1, arguments, function (node) {\n            this.parentNode.insertBefore(node, this);\n          });\n        }\n        return self$$1;\n      },\n      after: function () {\n        var self$$1 = this;\n        if (self$$1[0] && self$$1[0].parentNode) {\n          return domManipulate(self$$1, arguments, function (node) {\n            this.parentNode.insertBefore(node, this.nextSibling);\n          }, true);\n        }\n        return self$$1;\n      },\n      appendTo: function (val) {\n        DomQuery(val).append(this);\n        return this;\n      },\n      prependTo: function (val) {\n        DomQuery(val).prepend(this);\n        return this;\n      },\n      replaceWith: function (content) {\n        return this.before(content).remove();\n      },\n      wrap: function (content) {\n        return wrap(this, content);\n      },\n      wrapAll: function (content) {\n        return wrap(this, content, true);\n      },\n      wrapInner: function (content) {\n        this.each(function () {\n          DomQuery(this).contents().wrapAll(content);\n        });\n        return this;\n      },\n      unwrap: function () {\n        return this.parent().each(function () {\n          DomQuery(this).replaceWith(this.childNodes);\n        });\n      },\n      clone: function () {\n        var result = [];\n        this.each(function () {\n          result.push(this.cloneNode(true));\n        });\n        return DomQuery(result);\n      },\n      addClass: function (className) {\n        return this.toggleClass(className, true);\n      },\n      removeClass: function (className) {\n        return this.toggleClass(className, false);\n      },\n      toggleClass: function (className, state) {\n        var self$$1 = this;\n        if (typeof className !== 'string') {\n          return self$$1;\n        }\n        if (className.indexOf(' ') !== -1) {\n          each$2(className.split(' '), function () {\n            self$$1.toggleClass(this, state);\n          });\n        } else {\n          self$$1.each(function (index, node) {\n            var existingClassName, classState;\n            classState = hasClass(node, className);\n            if (classState !== state) {\n              existingClassName = node.className;\n              if (classState) {\n                node.className = trim$1((' ' + existingClassName + ' ').replace(' ' + className + ' ', ' '));\n              } else {\n                node.className += existingClassName ? ' ' + className : className;\n              }\n            }\n          });\n        }\n        return self$$1;\n      },\n      hasClass: function (className) {\n        return hasClass(this[0], className);\n      },\n      each: function (callback) {\n        return each$2(this, callback);\n      },\n      on: function (name$$1, callback) {\n        return this.each(function () {\n          Event$$1.bind(this, name$$1, callback);\n        });\n      },\n      off: function (name$$1, callback) {\n        return this.each(function () {\n          Event$$1.unbind(this, name$$1, callback);\n        });\n      },\n      trigger: function (name$$1) {\n        return this.each(function () {\n          if (typeof name$$1 === 'object') {\n            Event$$1.fire(this, name$$1.type, name$$1);\n          } else {\n            Event$$1.fire(this, name$$1);\n          }\n        });\n      },\n      show: function () {\n        return this.css('display', '');\n      },\n      hide: function () {\n        return this.css('display', 'none');\n      },\n      slice: function () {\n        return new DomQuery(slice$2.apply(this, arguments));\n      },\n      eq: function (index) {\n        return index === -1 ? this.slice(index) : this.slice(index, +index + 1);\n      },\n      first: function () {\n        return this.eq(0);\n      },\n      last: function () {\n        return this.eq(-1);\n      },\n      find: function (selector) {\n        var i, l;\n        var ret = [];\n        for (i = 0, l = this.length; i < l; i++) {\n          DomQuery.find(selector, this[i], ret);\n        }\n        return DomQuery(ret);\n      },\n      filter: function (selector) {\n        if (typeof selector === 'function') {\n          return DomQuery(grep(this.toArray(), function (item, i) {\n            return selector(i, item);\n          }));\n        }\n        return DomQuery(DomQuery.filter(selector, this.toArray()));\n      },\n      closest: function (selector) {\n        var result = [];\n        if (selector instanceof DomQuery) {\n          selector = selector[0];\n        }\n        this.each(function (i, node) {\n          while (node) {\n            if (typeof selector === 'string' && DomQuery(node).is(selector)) {\n              result.push(node);\n              break;\n            } else if (node === selector) {\n              result.push(node);\n              break;\n            }\n            node = node.parentNode;\n          }\n        });\n        return DomQuery(result);\n      },\n      offset: function (offset) {\n        var elm, doc, docElm;\n        var x = 0, y = 0, pos;\n        if (!offset) {\n          elm = this[0];\n          if (elm) {\n            doc = elm.ownerDocument;\n            docElm = doc.documentElement;\n            if (elm.getBoundingClientRect) {\n              pos = elm.getBoundingClientRect();\n              x = pos.left + (docElm.scrollLeft || doc.body.scrollLeft) - docElm.clientLeft;\n              y = pos.top + (docElm.scrollTop || doc.body.scrollTop) - docElm.clientTop;\n            }\n          }\n          return {\n            left: x,\n            top: y\n          };\n        }\n        return this.css(offset);\n      },\n      push: push$2,\n      sort: [].sort,\n      splice: [].splice\n    };\n    Tools.extend(DomQuery, {\n      extend: Tools.extend,\n      makeArray: function (object) {\n        if (isWindow(object) || object.nodeType) {\n          return [object];\n        }\n        return Tools.toArray(object);\n      },\n      inArray: inArray,\n      isArray: Tools.isArray,\n      each: each$2,\n      trim: trim$1,\n      grep: grep,\n      find: Sizzle,\n      expr: Sizzle.selectors,\n      unique: Sizzle.uniqueSort,\n      text: Sizzle.getText,\n      contains: Sizzle.contains,\n      filter: function (expr, elems, not) {\n        var i = elems.length;\n        if (not) {\n          expr = ':not(' + expr + ')';\n        }\n        while (i--) {\n          if (elems[i].nodeType !== 1) {\n            elems.splice(i, 1);\n          }\n        }\n        if (elems.length === 1) {\n          elems = DomQuery.find.matchesSelector(elems[0], expr) ? [elems[0]] : [];\n        } else {\n          elems = DomQuery.find.matches(expr, elems);\n        }\n        return elems;\n      }\n    });\n    var dir = function (el, prop, until) {\n      var matched = [];\n      var cur = el[prop];\n      if (typeof until !== 'string' && until instanceof DomQuery) {\n        until = until[0];\n      }\n      while (cur && cur.nodeType !== 9) {\n        if (until !== undefined) {\n          if (cur === until) {\n            break;\n          }\n          if (typeof until === 'string' && DomQuery(cur).is(until)) {\n            break;\n          }\n        }\n        if (cur.nodeType === 1) {\n          matched.push(cur);\n        }\n        cur = cur[prop];\n      }\n      return matched;\n    };\n    var sibling = function (node, siblingName, nodeType, until) {\n      var result = [];\n      if (until instanceof DomQuery) {\n        until = until[0];\n      }\n      for (; node; node = node[siblingName]) {\n        if (nodeType && node.nodeType !== nodeType) {\n          continue;\n        }\n        if (until !== undefined) {\n          if (node === until) {\n            break;\n          }\n          if (typeof until === 'string' && DomQuery(node).is(until)) {\n            break;\n          }\n        }\n        result.push(node);\n      }\n      return result;\n    };\n    var firstSibling = function (node, siblingName, nodeType) {\n      for (node = node[siblingName]; node; node = node[siblingName]) {\n        if (node.nodeType === nodeType) {\n          return node;\n        }\n      }\n      return null;\n    };\n    each$2({\n      parent: function (node) {\n        var parent$$1 = node.parentNode;\n        return parent$$1 && parent$$1.nodeType !== 11 ? parent$$1 : null;\n      },\n      parents: function (node) {\n        return dir(node, 'parentNode');\n      },\n      next: function (node) {\n        return firstSibling(node, 'nextSibling', 1);\n      },\n      prev: function (node) {\n        return firstSibling(node, 'previousSibling', 1);\n      },\n      children: function (node) {\n        return sibling(node.firstChild, 'nextSibling', 1);\n      },\n      contents: function (node) {\n        return Tools.toArray((node.nodeName === 'iframe' ? node.contentDocument || node.contentWindow.document : node).childNodes);\n      }\n    }, function (name$$1, fn) {\n      DomQuery.fn[name$$1] = function (selector) {\n        var self$$1 = this;\n        var result = [];\n        self$$1.each(function () {\n          var nodes = fn.call(result, this, selector, result);\n          if (nodes) {\n            if (DomQuery.isArray(nodes)) {\n              result.push.apply(result, nodes);\n            } else {\n              result.push(nodes);\n            }\n          }\n        });\n        if (this.length > 1) {\n          if (!skipUniques[name$$1]) {\n            result = DomQuery.unique(result);\n          }\n          if (name$$1.indexOf('parents') === 0) {\n            result = result.reverse();\n          }\n        }\n        result = DomQuery(result);\n        if (selector) {\n          return result.filter(selector);\n        }\n        return result;\n      };\n    });\n    each$2({\n      parentsUntil: function (node, until) {\n        return dir(node, 'parentNode', until);\n      },\n      nextUntil: function (node, until) {\n        return sibling(node, 'nextSibling', 1, until).slice(1);\n      },\n      prevUntil: function (node, until) {\n        return sibling(node, 'previousSibling', 1, until).slice(1);\n      }\n    }, function (name$$1, fn) {\n      DomQuery.fn[name$$1] = function (selector, filter) {\n        var self$$1 = this;\n        var result = [];\n        self$$1.each(function () {\n          var nodes = fn.call(result, this, selector, result);\n          if (nodes) {\n            if (DomQuery.isArray(nodes)) {\n              result.push.apply(result, nodes);\n            } else {\n              result.push(nodes);\n            }\n          }\n        });\n        if (this.length > 1) {\n          result = DomQuery.unique(result);\n          if (name$$1.indexOf('parents') === 0 || name$$1 === 'prevUntil') {\n            result = result.reverse();\n          }\n        }\n        result = DomQuery(result);\n        if (filter) {\n          return result.filter(filter);\n        }\n        return result;\n      };\n    });\n    DomQuery.fn.is = function (selector) {\n      return !!selector && this.filter(selector).length > 0;\n    };\n    DomQuery.fn.init.prototype = DomQuery.fn;\n    DomQuery.overrideDefaults = function (callback) {\n      var defaults;\n      var sub = function (selector, context) {\n        defaults = defaults || callback();\n        if (arguments.length === 0) {\n          selector = defaults.element;\n        }\n        if (!context) {\n          context = defaults.context;\n        }\n        return new sub.fn.init(selector, context);\n      };\n      DomQuery.extend(sub, this);\n      return sub;\n    };\n    var appendHooks = function (targetHooks, prop, hooks) {\n      each$2(hooks, function (name$$1, func) {\n        targetHooks[name$$1] = targetHooks[name$$1] || {};\n        targetHooks[name$$1][prop] = func;\n      });\n    };\n    if (Env.ie && Env.ie < 8) {\n      appendHooks(attrHooks, 'get', {\n        maxlength: function (elm) {\n          var value = elm.maxLength;\n          if (value === 2147483647) {\n            return undefined;\n          }\n          return value;\n        },\n        size: function (elm) {\n          var value = elm.size;\n          if (value === 20) {\n            return undefined;\n          }\n          return value;\n        },\n        class: function (elm) {\n          return elm.className;\n        },\n        style: function (elm) {\n          var value = elm.style.cssText;\n          if (value.length === 0) {\n            return undefined;\n          }\n          return value;\n        }\n      });\n      appendHooks(attrHooks, 'set', {\n        class: function (elm, value) {\n          elm.className = value;\n        },\n        style: function (elm, value) {\n          elm.style.cssText = value;\n        }\n      });\n    }\n    if (Env.ie && Env.ie < 9) {\n      cssFix.float = 'styleFloat';\n      appendHooks(cssHooks, 'set', {\n        opacity: function (elm, value) {\n          var style = elm.style;\n          if (value === null || value === '') {\n            style.removeAttribute('filter');\n          } else {\n            style.zoom = 1;\n            style.filter = 'alpha(opacity=' + value * 100 + ')';\n          }\n        }\n      });\n    }\n    DomQuery.attrHooks = attrHooks;\n    DomQuery.cssHooks = cssHooks;\n\n    var cached = function (f) {\n      var called = false;\n      var r;\n      return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          args[_i] = arguments[_i];\n        }\n        if (!called) {\n          called = true;\n          r = f.apply(null, args);\n        }\n        return r;\n      };\n    };\n\n    var firstMatch = function (regexes, s) {\n      for (var i = 0; i < regexes.length; i++) {\n        var x = regexes[i];\n        if (x.test(s))\n          return x;\n      }\n      return undefined;\n    };\n    var find$2 = function (regexes, agent) {\n      var r = firstMatch(regexes, agent);\n      if (!r)\n        return {\n          major: 0,\n          minor: 0\n        };\n      var group = function (i) {\n        return Number(agent.replace(r, '$' + i));\n      };\n      return nu(group(1), group(2));\n    };\n    var detect = function (versionRegexes, agent) {\n      var cleanedAgent = String(agent).toLowerCase();\n      if (versionRegexes.length === 0)\n        return unknown();\n      return find$2(versionRegexes, cleanedAgent);\n    };\n    var unknown = function () {\n      return nu(0, 0);\n    };\n    var nu = function (major, minor) {\n      return {\n        major: major,\n        minor: minor\n      };\n    };\n    var Version = {\n      nu: nu,\n      detect: detect,\n      unknown: unknown\n    };\n\n    var edge = 'Edge';\n    var chrome = 'Chrome';\n    var ie$1 = 'IE';\n    var opera$1 = 'Opera';\n    var firefox = 'Firefox';\n    var safari = 'Safari';\n    var isBrowser = function (name, current) {\n      return function () {\n        return current === name;\n      };\n    };\n    var unknown$1 = function () {\n      return nu$1({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    var nu$1 = function (info) {\n      var current = info.current;\n      var version = info.version;\n      return {\n        current: current,\n        version: version,\n        isEdge: isBrowser(edge, current),\n        isChrome: isBrowser(chrome, current),\n        isIE: isBrowser(ie$1, current),\n        isOpera: isBrowser(opera$1, current),\n        isFirefox: isBrowser(firefox, current),\n        isSafari: isBrowser(safari, current)\n      };\n    };\n    var Browser = {\n      unknown: unknown$1,\n      nu: nu$1,\n      edge: constant(edge),\n      chrome: constant(chrome),\n      ie: constant(ie$1),\n      opera: constant(opera$1),\n      firefox: constant(firefox),\n      safari: constant(safari)\n    };\n\n    var windows = 'Windows';\n    var ios = 'iOS';\n    var android$1 = 'Android';\n    var linux = 'Linux';\n    var osx = 'OSX';\n    var solaris = 'Solaris';\n    var freebsd = 'FreeBSD';\n    var isOS = function (name, current) {\n      return function () {\n        return current === name;\n      };\n    };\n    var unknown$2 = function () {\n      return nu$2({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    var nu$2 = function (info) {\n      var current = info.current;\n      var version = info.version;\n      return {\n        current: current,\n        version: version,\n        isWindows: isOS(windows, current),\n        isiOS: isOS(ios, current),\n        isAndroid: isOS(android$1, current),\n        isOSX: isOS(osx, current),\n        isLinux: isOS(linux, current),\n        isSolaris: isOS(solaris, current),\n        isFreeBSD: isOS(freebsd, current)\n      };\n    };\n    var OperatingSystem = {\n      unknown: unknown$2,\n      nu: nu$2,\n      windows: constant(windows),\n      ios: constant(ios),\n      android: constant(android$1),\n      linux: constant(linux),\n      osx: constant(osx),\n      solaris: constant(solaris),\n      freebsd: constant(freebsd)\n    };\n\n    var DeviceType = function (os, browser, userAgent) {\n      var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\n      var isiPhone = os.isiOS() && !isiPad;\n      var isAndroid3 = os.isAndroid() && os.version.major === 3;\n      var isAndroid4 = os.isAndroid() && os.version.major === 4;\n      var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;\n      var isTouch = os.isiOS() || os.isAndroid();\n      var isPhone = isTouch && !isTablet;\n      var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\n      return {\n        isiPad: constant(isiPad),\n        isiPhone: constant(isiPhone),\n        isTablet: constant(isTablet),\n        isPhone: constant(isPhone),\n        isTouch: constant(isTouch),\n        isAndroid: os.isAndroid,\n        isiOS: os.isiOS,\n        isWebView: constant(iOSwebview)\n      };\n    };\n\n    var detect$1 = function (candidates, userAgent) {\n      var agent = String(userAgent).toLowerCase();\n      return find(candidates, function (candidate) {\n        return candidate.search(agent);\n      });\n    };\n    var detectBrowser = function (browsers, userAgent) {\n      return detect$1(browsers, userAgent).map(function (browser) {\n        var version = Version.detect(browser.versionRegexes, userAgent);\n        return {\n          current: browser.name,\n          version: version\n        };\n      });\n    };\n    var detectOs = function (oses, userAgent) {\n      return detect$1(oses, userAgent).map(function (os) {\n        var version = Version.detect(os.versionRegexes, userAgent);\n        return {\n          current: os.name,\n          version: version\n        };\n      });\n    };\n    var UaString = {\n      detectBrowser: detectBrowser,\n      detectOs: detectOs\n    };\n\n    var contains$2 = function (str, substr) {\n      return str.indexOf(substr) !== -1;\n    };\n    var trim$2 = function (str) {\n      return str.replace(/^\\s+|\\s+$/g, '');\n    };\n    var lTrim = function (str) {\n      return str.replace(/^\\s+/g, '');\n    };\n    var rTrim = function (str) {\n      return str.replace(/\\s+$/g, '');\n    };\n\n    var normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\n    var checkContains = function (target) {\n      return function (uastring) {\n        return contains$2(uastring, target);\n      };\n    };\n    var browsers = [\n      {\n        name: 'Edge',\n        versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n        search: function (uastring) {\n          var monstrosity = contains$2(uastring, 'edge/') && contains$2(uastring, 'chrome') && contains$2(uastring, 'safari') && contains$2(uastring, 'applewebkit');\n          return monstrosity;\n        }\n      },\n      {\n        name: 'Chrome',\n        versionRegexes: [\n          /.*?chrome\\/([0-9]+)\\.([0-9]+).*/,\n          normalVersionRegex\n        ],\n        search: function (uastring) {\n          return contains$2(uastring, 'chrome') && !contains$2(uastring, 'chromeframe');\n        }\n      },\n      {\n        name: 'IE',\n        versionRegexes: [\n          /.*?msie\\ ?([0-9]+)\\.([0-9]+).*/,\n          /.*?rv:([0-9]+)\\.([0-9]+).*/\n        ],\n        search: function (uastring) {\n          return contains$2(uastring, 'msie') || contains$2(uastring, 'trident');\n        }\n      },\n      {\n        name: 'Opera',\n        versionRegexes: [\n          normalVersionRegex,\n          /.*?opera\\/([0-9]+)\\.([0-9]+).*/\n        ],\n        search: checkContains('opera')\n      },\n      {\n        name: 'Firefox',\n        versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\n        search: checkContains('firefox')\n      },\n      {\n        name: 'Safari',\n        versionRegexes: [\n          normalVersionRegex,\n          /.*?cpu os ([0-9]+)_([0-9]+).*/\n        ],\n        search: function (uastring) {\n          return (contains$2(uastring, 'safari') || contains$2(uastring, 'mobile/')) && contains$2(uastring, 'applewebkit');\n        }\n      }\n    ];\n    var oses = [\n      {\n        name: 'Windows',\n        search: checkContains('win'),\n        versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\n      },\n      {\n        name: 'iOS',\n        search: function (uastring) {\n          return contains$2(uastring, 'iphone') || contains$2(uastring, 'ipad');\n        },\n        versionRegexes: [\n          /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/,\n          /.*cpu os ([0-9]+)_([0-9]+).*/,\n          /.*cpu iphone os ([0-9]+)_([0-9]+).*/\n        ]\n      },\n      {\n        name: 'Android',\n        search: checkContains('android'),\n        versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\n      },\n      {\n        name: 'OSX',\n        search: checkContains('os x'),\n        versionRegexes: [/.*?os\\ x\\ ?([0-9]+)_([0-9]+).*/]\n      },\n      {\n        name: 'Linux',\n        search: checkContains('linux'),\n        versionRegexes: []\n      },\n      {\n        name: 'Solaris',\n        search: checkContains('sunos'),\n        versionRegexes: []\n      },\n      {\n        name: 'FreeBSD',\n        search: checkContains('freebsd'),\n        versionRegexes: []\n      }\n    ];\n    var PlatformInfo = {\n      browsers: constant(browsers),\n      oses: constant(oses)\n    };\n\n    var detect$2 = function (userAgent) {\n      var browsers = PlatformInfo.browsers();\n      var oses = PlatformInfo.oses();\n      var browser = UaString.detectBrowser(browsers, userAgent).fold(Browser.unknown, Browser.nu);\n      var os = UaString.detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);\n      var deviceType = DeviceType(os, browser, userAgent);\n      return {\n        browser: browser,\n        os: os,\n        deviceType: deviceType\n      };\n    };\n    var PlatformDetection = { detect: detect$2 };\n\n    var detect$3 = cached(function () {\n      var userAgent = navigator.userAgent;\n      return PlatformDetection.detect(userAgent);\n    });\n    var PlatformDetection$1 = { detect: detect$3 };\n\n    var fromHtml = function (html, scope) {\n      var doc = scope || document;\n      var div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        console.error('HTML does not have a single root node', html);\n        throw 'HTML must have a single root node';\n      }\n      return fromDom(div.childNodes[0]);\n    };\n    var fromTag = function (tag, scope) {\n      var doc = scope || document;\n      var node = doc.createElement(tag);\n      return fromDom(node);\n    };\n    var fromText = function (text, scope) {\n      var doc = scope || document;\n      var node = doc.createTextNode(text);\n      return fromDom(node);\n    };\n    var fromDom = function (node) {\n      if (node === null || node === undefined)\n        throw new Error('Node cannot be null or undefined');\n      return { dom: constant(node) };\n    };\n    var fromPoint = function (docElm, x, y) {\n      var doc = docElm.dom();\n      return Option.from(doc.elementFromPoint(x, y)).map(fromDom);\n    };\n    var Element$$1 = {\n      fromHtml: fromHtml,\n      fromTag: fromTag,\n      fromText: fromText,\n      fromDom: fromDom,\n      fromPoint: fromPoint\n    };\n\n    var ATTRIBUTE = Node.ATTRIBUTE_NODE;\n    var CDATA_SECTION = Node.CDATA_SECTION_NODE;\n    var COMMENT = Node.COMMENT_NODE;\n    var DOCUMENT = Node.DOCUMENT_NODE;\n    var DOCUMENT_TYPE = Node.DOCUMENT_TYPE_NODE;\n    var DOCUMENT_FRAGMENT = Node.DOCUMENT_FRAGMENT_NODE;\n    var ELEMENT = Node.ELEMENT_NODE;\n    var TEXT = Node.TEXT_NODE;\n    var PROCESSING_INSTRUCTION = Node.PROCESSING_INSTRUCTION_NODE;\n    var ENTITY_REFERENCE = Node.ENTITY_REFERENCE_NODE;\n    var ENTITY = Node.ENTITY_NODE;\n    var NOTATION = Node.NOTATION_NODE;\n\n    var name = function (element) {\n      var r = element.dom().nodeName;\n      return r.toLowerCase();\n    };\n    var type = function (element) {\n      return element.dom().nodeType;\n    };\n    var isType$1 = function (t) {\n      return function (element) {\n        return type(element) === t;\n      };\n    };\n    var isElement = isType$1(ELEMENT);\n    var isText = isType$1(TEXT);\n\n    var keys = Object.keys;\n    var hasOwnProperty$1 = Object.hasOwnProperty;\n    var each$3 = function (obj, f) {\n      var props = keys(obj);\n      for (var k = 0, len = props.length; k < len; k++) {\n        var i = props[k];\n        var x = obj[i];\n        f(x, i, obj);\n      }\n    };\n    var map$2 = function (obj, f) {\n      return tupleMap(obj, function (x, i, obj) {\n        return {\n          k: i,\n          v: f(x, i, obj)\n        };\n      });\n    };\n    var tupleMap = function (obj, f) {\n      var r = {};\n      each$3(obj, function (x, i) {\n        var tuple = f(x, i, obj);\n        r[tuple.k] = tuple.v;\n      });\n      return r;\n    };\n    var bifilter = function (obj, pred) {\n      var t = {};\n      var f = {};\n      each$3(obj, function (x, i) {\n        var branch = pred(x, i) ? t : f;\n        branch[i] = x;\n      });\n      return {\n        t: t,\n        f: f\n      };\n    };\n    var has = function (obj, key) {\n      return hasOwnProperty$1.call(obj, key);\n    };\n\n    var rawSet = function (dom, key, value$$1) {\n      if (isString(value$$1) || isBoolean(value$$1) || isNumber(value$$1)) {\n        dom.setAttribute(key, value$$1 + '');\n      } else {\n        console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value$$1, ':: Element ', dom);\n        throw new Error('Attribute value was not simple');\n      }\n    };\n    var set = function (element, key, value$$1) {\n      rawSet(element.dom(), key, value$$1);\n    };\n    var setAll = function (element, attrs) {\n      var dom = element.dom();\n      each$3(attrs, function (v, k) {\n        rawSet(dom, k, v);\n      });\n    };\n    var get$1 = function (element, key) {\n      var v = element.dom().getAttribute(key);\n      return v === null ? undefined : v;\n    };\n    var has$1 = function (element, key) {\n      var dom = element.dom();\n      return dom && dom.hasAttribute ? dom.hasAttribute(key) : false;\n    };\n    var remove = function (element, key) {\n      element.dom().removeAttribute(key);\n    };\n\n    var inBody = function (element) {\n      var dom = isText(element) ? element.dom().parentNode : element.dom();\n      return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);\n    };\n\n    var isSupported = function (dom) {\n      return dom.style !== undefined;\n    };\n\n    var internalSet = function (dom, property, value$$1) {\n      if (!isString(value$$1)) {\n        console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value$$1, ':: Element ', dom);\n        throw new Error('CSS value must be a string: ' + value$$1);\n      }\n      if (isSupported(dom))\n        dom.style.setProperty(property, value$$1);\n    };\n    var setAll$1 = function (element, css) {\n      var dom = element.dom();\n      each$3(css, function (v, k) {\n        internalSet(dom, k, v);\n      });\n    };\n    var get$2 = function (element, property) {\n      var dom = element.dom();\n      var styles = window.getComputedStyle(dom);\n      var r = styles.getPropertyValue(property);\n      var v = r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;\n      return v === null ? undefined : v;\n    };\n    var getUnsafeProperty = function (dom, property) {\n      return isSupported(dom) ? dom.style.getPropertyValue(property) : '';\n    };\n    var getRaw = function (element, property) {\n      var dom = element.dom();\n      var raw = getUnsafeProperty(dom, property);\n      return Option.from(raw).filter(function (r) {\n        return r.length > 0;\n      });\n    };\n\n    var Immutable = function () {\n      var fields = [];\n      for (var _i = 0; _i < arguments.length; _i++) {\n        fields[_i] = arguments[_i];\n      }\n      return function () {\n        var values = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          values[_i] = arguments[_i];\n        }\n        if (fields.length !== values.length) {\n          throw new Error('Wrong number of arguments to struct. Expected \"[' + fields.length + ']\", got ' + values.length + ' arguments');\n        }\n        var struct = {};\n        each(fields, function (name, i) {\n          struct[name] = constant(values[i]);\n        });\n        return struct;\n      };\n    };\n\n    var toArray$1 = function (target, f) {\n      var r = [];\n      var recurse = function (e) {\n        r.push(e);\n        return f(e);\n      };\n      var cur = f(target);\n      do {\n        cur = cur.bind(recurse);\n      } while (cur.isSome());\n      return r;\n    };\n    var Recurse = { toArray: toArray$1 };\n\n    var node = function () {\n      var f = Global$1.getOrDie('Node');\n      return f;\n    };\n    var compareDocumentPosition = function (a, b, match) {\n      return (a.compareDocumentPosition(b) & match) !== 0;\n    };\n    var documentPositionPreceding = function (a, b) {\n      return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);\n    };\n    var documentPositionContainedBy = function (a, b) {\n      return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);\n    };\n    var Node$1 = {\n      documentPositionPreceding: documentPositionPreceding,\n      documentPositionContainedBy: documentPositionContainedBy\n    };\n\n    var ELEMENT$1 = ELEMENT;\n    var DOCUMENT$1 = DOCUMENT;\n    var is$1 = function (element, selector) {\n      var elem = element.dom();\n      if (elem.nodeType !== ELEMENT$1)\n        return false;\n      else if (elem.matches !== undefined)\n        return elem.matches(selector);\n      else if (elem.msMatchesSelector !== undefined)\n        return elem.msMatchesSelector(selector);\n      else if (elem.webkitMatchesSelector !== undefined)\n        return elem.webkitMatchesSelector(selector);\n      else if (elem.mozMatchesSelector !== undefined)\n        return elem.mozMatchesSelector(selector);\n      else\n        throw new Error('Browser lacks native selectors');\n    };\n    var bypassSelector = function (dom) {\n      return dom.nodeType !== ELEMENT$1 && dom.nodeType !== DOCUMENT$1 || dom.childElementCount === 0;\n    };\n    var all = function (selector, scope) {\n      var base = scope === undefined ? document : scope.dom();\n      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);\n    };\n    var one = function (selector, scope) {\n      var base = scope === undefined ? document : scope.dom();\n      return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);\n    };\n\n    var eq = function (e1, e2) {\n      return e1.dom() === e2.dom();\n    };\n    var regularContains = function (e1, e2) {\n      var d1 = e1.dom(), d2 = e2.dom();\n      return d1 === d2 ? false : d1.contains(d2);\n    };\n    var ieContains = function (e1, e2) {\n      return Node$1.documentPositionContainedBy(e1.dom(), e2.dom());\n    };\n    var browser = PlatformDetection$1.detect().browser;\n    var contains$3 = browser.isIE() ? ieContains : regularContains;\n\n    var owner = function (element) {\n      return Element$$1.fromDom(element.dom().ownerDocument);\n    };\n    var documentElement = function (element) {\n      return Element$$1.fromDom(element.dom().ownerDocument.documentElement);\n    };\n    var defaultView = function (element) {\n      var el = element.dom();\n      var defaultView = el.ownerDocument.defaultView;\n      return Element$$1.fromDom(defaultView);\n    };\n    var parent = function (element) {\n      var dom = element.dom();\n      return Option.from(dom.parentNode).map(Element$$1.fromDom);\n    };\n    var parents = function (element, isRoot) {\n      var stop = isFunction(isRoot) ? isRoot : constant(false);\n      var dom = element.dom();\n      var ret = [];\n      while (dom.parentNode !== null && dom.parentNode !== undefined) {\n        var rawParent = dom.parentNode;\n        var parent = Element$$1.fromDom(rawParent);\n        ret.push(parent);\n        if (stop(parent) === true)\n          break;\n        else\n          dom = rawParent;\n      }\n      return ret;\n    };\n    var prevSibling = function (element) {\n      var dom = element.dom();\n      return Option.from(dom.previousSibling).map(Element$$1.fromDom);\n    };\n    var nextSibling = function (element) {\n      var dom = element.dom();\n      return Option.from(dom.nextSibling).map(Element$$1.fromDom);\n    };\n    var prevSiblings = function (element) {\n      return reverse(Recurse.toArray(element, prevSibling));\n    };\n    var nextSiblings = function (element) {\n      return Recurse.toArray(element, nextSibling);\n    };\n    var children = function (element) {\n      var dom = element.dom();\n      return map(dom.childNodes, Element$$1.fromDom);\n    };\n    var child = function (element, index) {\n      var children = element.dom().childNodes;\n      return Option.from(children[index]).map(Element$$1.fromDom);\n    };\n    var firstChild = function (element) {\n      return child(element, 0);\n    };\n    var lastChild = function (element) {\n      return child(element, element.dom().childNodes.length - 1);\n    };\n    var childNodesCount = function (element) {\n      return element.dom().childNodes.length;\n    };\n    var spot = Immutable('element', 'offset');\n\n    var browser$1 = PlatformDetection$1.detect().browser;\n    var firstElement = function (nodes) {\n      return find(nodes, isElement);\n    };\n    var getTableCaptionDeltaY = function (elm) {\n      if (browser$1.isFirefox() && name(elm) === 'table') {\n        return firstElement(children(elm)).filter(function (elm) {\n          return name(elm) === 'caption';\n        }).bind(function (caption) {\n          return firstElement(nextSiblings(caption)).map(function (body) {\n            var bodyTop = body.dom().offsetTop;\n            var captionTop = caption.dom().offsetTop;\n            var captionHeight = caption.dom().offsetHeight;\n            return bodyTop <= captionTop ? -captionHeight : 0;\n          });\n        }).getOr(0);\n      } else {\n        return 0;\n      }\n    };\n    var getPos = function (body, elm, rootElm) {\n      var x = 0, y = 0, offsetParent$$1;\n      var doc = body.ownerDocument;\n      var pos;\n      rootElm = rootElm ? rootElm : body;\n      if (elm) {\n        if (rootElm === body && elm.getBoundingClientRect && get$2(Element$$1.fromDom(body), 'position') === 'static') {\n          pos = elm.getBoundingClientRect();\n          x = pos.left + (doc.documentElement.scrollLeft || body.scrollLeft) - doc.documentElement.clientLeft;\n          y = pos.top + (doc.documentElement.scrollTop || body.scrollTop) - doc.documentElement.clientTop;\n          return {\n            x: x,\n            y: y\n          };\n        }\n        offsetParent$$1 = elm;\n        while (offsetParent$$1 && offsetParent$$1 !== rootElm && offsetParent$$1.nodeType) {\n          x += offsetParent$$1.offsetLeft || 0;\n          y += offsetParent$$1.offsetTop || 0;\n          offsetParent$$1 = offsetParent$$1.offsetParent;\n        }\n        offsetParent$$1 = elm.parentNode;\n        while (offsetParent$$1 && offsetParent$$1 !== rootElm && offsetParent$$1.nodeType) {\n          x -= offsetParent$$1.scrollLeft || 0;\n          y -= offsetParent$$1.scrollTop || 0;\n          offsetParent$$1 = offsetParent$$1.parentNode;\n        }\n        y += getTableCaptionDeltaY(Element$$1.fromDom(elm));\n      }\n      return {\n        x: x,\n        y: y\n      };\n    };\n    var Position = { getPos: getPos };\n\n    var nu$3 = function (baseFn) {\n      var data = Option.none();\n      var callbacks = [];\n      var map$$1 = function (f) {\n        return nu$3(function (nCallback) {\n          get(function (data) {\n            nCallback(f(data));\n          });\n        });\n      };\n      var get = function (nCallback) {\n        if (isReady())\n          call(nCallback);\n        else\n          callbacks.push(nCallback);\n      };\n      var set = function (x) {\n        data = Option.some(x);\n        run(callbacks);\n        callbacks = [];\n      };\n      var isReady = function () {\n        return data.isSome();\n      };\n      var run = function (cbs) {\n        each(cbs, call);\n      };\n      var call = function (cb) {\n        data.each(function (x) {\n          setTimeout(function () {\n            cb(x);\n          }, 0);\n        });\n      };\n      baseFn(set);\n      return {\n        get: get,\n        map: map$$1,\n        isReady: isReady\n      };\n    };\n    var pure$1 = function (a) {\n      return nu$3(function (callback) {\n        callback(a);\n      });\n    };\n    var LazyValue = {\n      nu: nu$3,\n      pure: pure$1\n    };\n\n    var bounce = function (f) {\n      return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          args[_i] = arguments[_i];\n        }\n        var me = this;\n        setTimeout(function () {\n          f.apply(me, args);\n        }, 0);\n      };\n    };\n\n    var nu$4 = function (baseFn) {\n      var get = function (callback) {\n        baseFn(bounce(callback));\n      };\n      var map = function (fab) {\n        return nu$4(function (callback) {\n          get(function (a) {\n            var value = fab(a);\n            callback(value);\n          });\n        });\n      };\n      var bind = function (aFutureB) {\n        return nu$4(function (callback) {\n          get(function (a) {\n            aFutureB(a).get(callback);\n          });\n        });\n      };\n      var anonBind = function (futureB) {\n        return nu$4(function (callback) {\n          get(function (a) {\n            futureB.get(callback);\n          });\n        });\n      };\n      var toLazy = function () {\n        return LazyValue.nu(get);\n      };\n      var toCached = function () {\n        var cache = null;\n        return nu$4(function (callback) {\n          if (cache === null) {\n            cache = toLazy();\n          }\n          cache.get(callback);\n        });\n      };\n      return {\n        map: map,\n        bind: bind,\n        anonBind: anonBind,\n        toLazy: toLazy,\n        toCached: toCached,\n        get: get\n      };\n    };\n    var pure$2 = function (a) {\n      return nu$4(function (callback) {\n        callback(a);\n      });\n    };\n    var Future = {\n      nu: nu$4,\n      pure: pure$2\n    };\n\n    var par = function (asyncValues, nu) {\n      return nu(function (callback) {\n        var r = [];\n        var count = 0;\n        var cb = function (i) {\n          return function (value) {\n            r[i] = value;\n            count++;\n            if (count >= asyncValues.length) {\n              callback(r);\n            }\n          };\n        };\n        if (asyncValues.length === 0) {\n          callback([]);\n        } else {\n          each(asyncValues, function (asyncValue, i) {\n            asyncValue.get(cb(i));\n          });\n        }\n      });\n    };\n\n    var par$1 = function (futures) {\n      return par(futures, Future.nu);\n    };\n\n    var value$1 = function (o) {\n      var is = function (v) {\n        return o === v;\n      };\n      var or = function (opt) {\n        return value$1(o);\n      };\n      var orThunk = function (f) {\n        return value$1(o);\n      };\n      var map = function (f) {\n        return value$1(f(o));\n      };\n      var mapError = function (f) {\n        return value$1(o);\n      };\n      var each = function (f) {\n        f(o);\n      };\n      var bind = function (f) {\n        return f(o);\n      };\n      var fold = function (_, onValue) {\n        return onValue(o);\n      };\n      var exists = function (f) {\n        return f(o);\n      };\n      var forall = function (f) {\n        return f(o);\n      };\n      var toOption = function () {\n        return Option.some(o);\n      };\n      return {\n        is: is,\n        isValue: always,\n        isError: never,\n        getOr: constant(o),\n        getOrThunk: constant(o),\n        getOrDie: constant(o),\n        or: or,\n        orThunk: orThunk,\n        fold: fold,\n        map: map,\n        mapError: mapError,\n        each: each,\n        bind: bind,\n        exists: exists,\n        forall: forall,\n        toOption: toOption\n      };\n    };\n    var error = function (message) {\n      var getOrThunk = function (f) {\n        return f();\n      };\n      var getOrDie = function () {\n        return die(String(message))();\n      };\n      var or = function (opt) {\n        return opt;\n      };\n      var orThunk = function (f) {\n        return f();\n      };\n      var map = function (f) {\n        return error(message);\n      };\n      var mapError = function (f) {\n        return error(f(message));\n      };\n      var bind = function (f) {\n        return error(message);\n      };\n      var fold = function (onError, _) {\n        return onError(message);\n      };\n      return {\n        is: never,\n        isValue: never,\n        isError: always,\n        getOr: identity,\n        getOrThunk: getOrThunk,\n        getOrDie: getOrDie,\n        or: or,\n        orThunk: orThunk,\n        fold: fold,\n        map: map,\n        mapError: mapError,\n        each: noop,\n        bind: bind,\n        exists: never,\n        forall: always,\n        toOption: Option.none\n      };\n    };\n    var Result = {\n      value: value$1,\n      error: error\n    };\n\n    function StyleSheetLoader(document$$1, settings) {\n      if (settings === void 0) {\n        settings = {};\n      }\n      var idCount = 0;\n      var loadedStates = {};\n      var maxLoadTime;\n      maxLoadTime = settings.maxLoadTime || 5000;\n      var appendToHead = function (node) {\n        document$$1.getElementsByTagName('head')[0].appendChild(node);\n      };\n      var load = function (url, loadedCallback, errorCallback) {\n        var link, style, startTime, state;\n        var passed = function () {\n          var callbacks = state.passed;\n          var i = callbacks.length;\n          while (i--) {\n            callbacks[i]();\n          }\n          state.status = 2;\n          state.passed = [];\n          state.failed = [];\n        };\n        var failed = function () {\n          var callbacks = state.failed;\n          var i = callbacks.length;\n          while (i--) {\n            callbacks[i]();\n          }\n          state.status = 3;\n          state.passed = [];\n          state.failed = [];\n        };\n        var isOldWebKit = function () {\n          var webKitChunks = navigator.userAgent.match(/WebKit\\/(\\d*)/);\n          return !!(webKitChunks && parseInt(webKitChunks[1], 10) < 536);\n        };\n        var wait = function (testCallback, waitCallback) {\n          if (!testCallback()) {\n            if (new Date().getTime() - startTime < maxLoadTime) {\n              Delay.setTimeout(waitCallback);\n            } else {\n              failed();\n            }\n          }\n        };\n        var waitForWebKitLinkLoaded = function () {\n          wait(function () {\n            var styleSheets = document$$1.styleSheets;\n            var styleSheet, i = styleSheets.length, owner;\n            while (i--) {\n              styleSheet = styleSheets[i];\n              owner = styleSheet.ownerNode ? styleSheet.ownerNode : styleSheet.owningElement;\n              if (owner && owner.id === link.id) {\n                passed();\n                return true;\n              }\n            }\n          }, waitForWebKitLinkLoaded);\n        };\n        var waitForGeckoLinkLoaded = function () {\n          wait(function () {\n            try {\n              var cssRules = style.sheet.cssRules;\n              passed();\n              return !!cssRules;\n            } catch (ex) {\n            }\n          }, waitForGeckoLinkLoaded);\n        };\n        url = Tools._addCacheSuffix(url);\n        if (!loadedStates[url]) {\n          state = {\n            passed: [],\n            failed: []\n          };\n          loadedStates[url] = state;\n        } else {\n          state = loadedStates[url];\n        }\n        if (loadedCallback) {\n          state.passed.push(loadedCallback);\n        }\n        if (errorCallback) {\n          state.failed.push(errorCallback);\n        }\n        if (state.status === 1) {\n          return;\n        }\n        if (state.status === 2) {\n          passed();\n          return;\n        }\n        if (state.status === 3) {\n          failed();\n          return;\n        }\n        state.status = 1;\n        link = document$$1.createElement('link');\n        link.rel = 'stylesheet';\n        link.type = 'text/css';\n        link.id = 'u' + idCount++;\n        link.async = false;\n        link.defer = false;\n        startTime = new Date().getTime();\n        if (settings.contentCssCors) {\n          link.crossOrigin = 'anonymous';\n        }\n        if ('onload' in link && !isOldWebKit()) {\n          link.onload = waitForWebKitLinkLoaded;\n          link.onerror = failed;\n        } else {\n          if (navigator.userAgent.indexOf('Firefox') > 0) {\n            style = document$$1.createElement('style');\n            style.textContent = '@import \"' + url + '\"';\n            waitForGeckoLinkLoaded();\n            appendToHead(style);\n            return;\n          }\n          waitForWebKitLinkLoaded();\n        }\n        appendToHead(link);\n        link.href = url;\n      };\n      var loadF = function (url) {\n        return Future.nu(function (resolve) {\n          load(url, compose(resolve, constant(Result.value(url))), compose(resolve, constant(Result.error(url))));\n        });\n      };\n      var unbox = function (result) {\n        return result.fold(identity, identity);\n      };\n      var loadAll = function (urls, success, failure) {\n        par$1(map(urls, loadF)).get(function (result) {\n          var parts = partition(result, function (r) {\n            return r.isValue();\n          });\n          if (parts.fail.length > 0) {\n            failure(parts.fail.map(unbox));\n          } else {\n            success(parts.pass.map(unbox));\n          }\n        });\n      };\n      return {\n        load: load,\n        loadAll: loadAll\n      };\n    }\n\n    function TreeWalker (startNode, rootNode) {\n      var node = startNode;\n      var findSibling = function (node, startName, siblingName, shallow) {\n        var sibling, parent;\n        if (node) {\n          if (!shallow && node[startName]) {\n            return node[startName];\n          }\n          if (node !== rootNode) {\n            sibling = node[siblingName];\n            if (sibling) {\n              return sibling;\n            }\n            for (parent = node.parentNode; parent && parent !== rootNode; parent = parent.parentNode) {\n              sibling = parent[siblingName];\n              if (sibling) {\n                return sibling;\n              }\n            }\n          }\n        }\n      };\n      var findPreviousNode = function (node, startName, siblingName, shallow) {\n        var sibling, parent, child;\n        if (node) {\n          sibling = node[siblingName];\n          if (rootNode && sibling === rootNode) {\n            return;\n          }\n          if (sibling) {\n            if (!shallow) {\n              for (child = sibling[startName]; child; child = child[startName]) {\n                if (!child[startName]) {\n                  return child;\n                }\n              }\n            }\n            return sibling;\n          }\n          parent = node.parentNode;\n          if (parent && parent !== rootNode) {\n            return parent;\n          }\n        }\n      };\n      this.current = function () {\n        return node;\n      };\n      this.next = function (shallow) {\n        node = findSibling(node, 'firstChild', 'nextSibling', shallow);\n        return node;\n      };\n      this.prev = function (shallow) {\n        node = findSibling(node, 'lastChild', 'previousSibling', shallow);\n        return node;\n      };\n      this.prev2 = function (shallow) {\n        node = findPreviousNode(node, 'lastChild', 'previousSibling', shallow);\n        return node;\n      };\n    }\n\n    var blocks = [\n      'article',\n      'aside',\n      'details',\n      'div',\n      'dt',\n      'figcaption',\n      'footer',\n      'form',\n      'fieldset',\n      'header',\n      'hgroup',\n      'html',\n      'main',\n      'nav',\n      'section',\n      'summary',\n      'body',\n      'p',\n      'dl',\n      'multicol',\n      'dd',\n      'figure',\n      'address',\n      'center',\n      'blockquote',\n      'h1',\n      'h2',\n      'h3',\n      'h4',\n      'h5',\n      'h6',\n      'listing',\n      'xmp',\n      'pre',\n      'plaintext',\n      'menu',\n      'dir',\n      'ul',\n      'ol',\n      'li',\n      'hr',\n      'table',\n      'tbody',\n      'thead',\n      'tfoot',\n      'th',\n      'tr',\n      'td',\n      'caption'\n    ];\n    var voids = [\n      'area',\n      'base',\n      'basefont',\n      'br',\n      'col',\n      'frame',\n      'hr',\n      'img',\n      'input',\n      'isindex',\n      'link',\n      'meta',\n      'param',\n      'embed',\n      'source',\n      'wbr',\n      'track'\n    ];\n    var tableCells = [\n      'td',\n      'th'\n    ];\n    var tableSections = [\n      'thead',\n      'tbody',\n      'tfoot'\n    ];\n    var textBlocks = [\n      'h1',\n      'h2',\n      'h3',\n      'h4',\n      'h5',\n      'h6',\n      'p',\n      'div',\n      'address',\n      'pre',\n      'form',\n      'blockquote',\n      'center',\n      'dir',\n      'fieldset',\n      'header',\n      'footer',\n      'article',\n      'section',\n      'hgroup',\n      'aside',\n      'nav',\n      'figure'\n    ];\n    var headings = [\n      'h1',\n      'h2',\n      'h3',\n      'h4',\n      'h5',\n      'h6'\n    ];\n    var listItems = [\n      'li',\n      'dd',\n      'dt'\n    ];\n    var lists = [\n      'ul',\n      'ol',\n      'dl'\n    ];\n    var wsElements = [\n      'pre',\n      'script',\n      'textarea',\n      'style'\n    ];\n    var lazyLookup = function (items) {\n      var lookup;\n      return function (node) {\n        lookup = lookup ? lookup : mapToObject(items, constant(true));\n        return lookup.hasOwnProperty(name(node));\n      };\n    };\n    var isHeading = lazyLookup(headings);\n    var isBlock = lazyLookup(blocks);\n    var isInline = function (node) {\n      return isElement(node) && !isBlock(node);\n    };\n    var isBr = function (node) {\n      return isElement(node) && name(node) === 'br';\n    };\n    var isTextBlock = lazyLookup(textBlocks);\n    var isList = lazyLookup(lists);\n    var isListItem = lazyLookup(listItems);\n    var isVoid = lazyLookup(voids);\n    var isTableSection = lazyLookup(tableSections);\n    var isTableCell = lazyLookup(tableCells);\n    var isWsPreserveElement = lazyLookup(wsElements);\n\n    var isNodeType = function (type) {\n      return function (node) {\n        return !!node && node.nodeType === type;\n      };\n    };\n    var isElement$1 = isNodeType(1);\n    var matchNodeNames = function (names) {\n      var items = names.toLowerCase().split(' ');\n      return function (node) {\n        var i, name;\n        if (node && node.nodeType) {\n          name = node.nodeName.toLowerCase();\n          for (i = 0; i < items.length; i++) {\n            if (name === items[i]) {\n              return true;\n            }\n          }\n        }\n        return false;\n      };\n    };\n    var matchStyleValues = function (name, values) {\n      var items = values.toLowerCase().split(' ');\n      return function (node) {\n        var i, cssValue;\n        if (isElement$1(node)) {\n          for (i = 0; i < items.length; i++) {\n            var computed = node.ownerDocument.defaultView.getComputedStyle(node, null);\n            cssValue = computed ? computed.getPropertyValue(name) : null;\n            if (cssValue === items[i]) {\n              return true;\n            }\n          }\n        }\n        return false;\n      };\n    };\n    var hasPropValue = function (propName, propValue) {\n      return function (node) {\n        return isElement$1(node) && node[propName] === propValue;\n      };\n    };\n    var hasAttribute = function (attrName, attrValue) {\n      return function (node) {\n        return isElement$1(node) && node.hasAttribute(attrName);\n      };\n    };\n    var hasAttributeValue = function (attrName, attrValue) {\n      return function (node) {\n        return isElement$1(node) && node.getAttribute(attrName) === attrValue;\n      };\n    };\n    var isBogus = function (node) {\n      return isElement$1(node) && node.hasAttribute('data-mce-bogus');\n    };\n    var isBogusAll = function (node) {\n      return isElement$1(node) && node.getAttribute('data-mce-bogus') === 'all';\n    };\n    var isTable = function (node) {\n      return isElement$1(node) && node.tagName === 'TABLE';\n    };\n    var hasContentEditableState = function (value) {\n      return function (node) {\n        if (isElement$1(node)) {\n          if (node.contentEditable === value) {\n            return true;\n          }\n          if (node.getAttribute('data-mce-contenteditable') === value) {\n            return true;\n          }\n        }\n        return false;\n      };\n    };\n    var isText$1 = isNodeType(3);\n    var isComment$1 = isNodeType(8);\n    var isDocument$1 = isNodeType(9);\n    var isBr$1 = matchNodeNames('br');\n    var isContentEditableTrue = hasContentEditableState('true');\n    var isContentEditableFalse = hasContentEditableState('false');\n    var NodeType = {\n      isText: isText$1,\n      isElement: isElement$1,\n      isComment: isComment$1,\n      isDocument: isDocument$1,\n      isBr: isBr$1,\n      isContentEditableTrue: isContentEditableTrue,\n      isContentEditableFalse: isContentEditableFalse,\n      matchNodeNames: matchNodeNames,\n      hasPropValue: hasPropValue,\n      hasAttribute: hasAttribute,\n      hasAttributeValue: hasAttributeValue,\n      matchStyleValues: matchStyleValues,\n      isBogus: isBogus,\n      isBogusAll: isBogusAll,\n      isTable: isTable\n    };\n\n    var surroundedBySpans = function (node) {\n      var previousIsSpan = node.previousSibling && node.previousSibling.nodeName === 'SPAN';\n      var nextIsSpan = node.nextSibling && node.nextSibling.nodeName === 'SPAN';\n      return previousIsSpan && nextIsSpan;\n    };\n    var isBookmarkNode = function (node) {\n      return node && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';\n    };\n    var trimNode = function (dom, node) {\n      var i, children = node.childNodes;\n      if (NodeType.isElement(node) && isBookmarkNode(node)) {\n        return;\n      }\n      for (i = children.length - 1; i >= 0; i--) {\n        trimNode(dom, children[i]);\n      }\n      if (NodeType.isDocument(node) === false) {\n        if (NodeType.isText(node) && node.nodeValue.length > 0) {\n          var trimmedLength = Tools.trim(node.nodeValue).length;\n          if (dom.isBlock(node.parentNode) || trimmedLength > 0) {\n            return;\n          }\n          if (trimmedLength === 0 && surroundedBySpans(node)) {\n            return;\n          }\n        } else if (NodeType.isElement(node)) {\n          children = node.childNodes;\n          if (children.length === 1 && isBookmarkNode(children[0])) {\n            node.parentNode.insertBefore(children[0], node);\n          }\n          if (children.length || isVoid(Element$$1.fromDom(node))) {\n            return;\n          }\n        }\n        dom.remove(node);\n      }\n      return node;\n    };\n    var TrimNode = { trimNode: trimNode };\n\n    var makeMap$1 = Tools.makeMap;\n    var namedEntities, baseEntities, reverseEntities;\n    var attrsCharsRegExp = /[&<>\\\"\\u0060\\u007E-\\uD7FF\\uE000-\\uFFEF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n    var textCharsRegExp = /[<>&\\u007E-\\uD7FF\\uE000-\\uFFEF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n    var rawCharsRegExp = /[<>&\\\"\\']/g;\n    var entityRegExp = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi;\n    var asciiMap = {\n      128: '\\u20AC',\n      130: '\\u201A',\n      131: '\\u0192',\n      132: '\\u201E',\n      133: '\\u2026',\n      134: '\\u2020',\n      135: '\\u2021',\n      136: '\\u02c6',\n      137: '\\u2030',\n      138: '\\u0160',\n      139: '\\u2039',\n      140: '\\u0152',\n      142: '\\u017d',\n      145: '\\u2018',\n      146: '\\u2019',\n      147: '\\u201C',\n      148: '\\u201D',\n      149: '\\u2022',\n      150: '\\u2013',\n      151: '\\u2014',\n      152: '\\u02DC',\n      153: '\\u2122',\n      154: '\\u0161',\n      155: '\\u203A',\n      156: '\\u0153',\n      158: '\\u017e',\n      159: '\\u0178'\n    };\n    baseEntities = {\n      '\"': '&quot;',\n      '\\'': '&#39;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '&': '&amp;',\n      '`': '&#96;'\n    };\n    reverseEntities = {\n      '&lt;': '<',\n      '&gt;': '>',\n      '&amp;': '&',\n      '&quot;': '\"',\n      '&apos;': '\\''\n    };\n    var nativeDecode = function (text) {\n      var elm;\n      elm = Element$$1.fromTag('div').dom();\n      elm.innerHTML = text;\n      return elm.textContent || elm.innerText || text;\n    };\n    var buildEntitiesLookup = function (items, radix) {\n      var i, chr, entity;\n      var lookup = {};\n      if (items) {\n        items = items.split(',');\n        radix = radix || 10;\n        for (i = 0; i < items.length; i += 2) {\n          chr = String.fromCharCode(parseInt(items[i], radix));\n          if (!baseEntities[chr]) {\n            entity = '&' + items[i + 1] + ';';\n            lookup[chr] = entity;\n            lookup[entity] = chr;\n          }\n        }\n        return lookup;\n      }\n    };\n    namedEntities = buildEntitiesLookup('50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' + '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' + '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' + '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' + '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' + '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' + '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' + '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' + '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' + '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' + 'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' + 'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' + 't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' + 'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' + 'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' + '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' + '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' + '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' + '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' + '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' + 'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' + 'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' + 'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' + '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' + '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);\n    var encodeRaw = function (text, attr) {\n      return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\n        return baseEntities[chr] || chr;\n      });\n    };\n    var encodeAllRaw = function (text) {\n      return ('' + text).replace(rawCharsRegExp, function (chr) {\n        return baseEntities[chr] || chr;\n      });\n    };\n    var encodeNumeric = function (text, attr) {\n      return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\n        if (chr.length > 1) {\n          return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';';\n        }\n        return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';\n      });\n    };\n    var encodeNamed = function (text, attr, entities) {\n      entities = entities || namedEntities;\n      return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\n        return baseEntities[chr] || entities[chr] || chr;\n      });\n    };\n    var getEncodeFunc = function (name, entities) {\n      var entitiesMap = buildEntitiesLookup(entities) || namedEntities;\n      var encodeNamedAndNumeric = function (text, attr) {\n        return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\n          if (baseEntities[chr] !== undefined) {\n            return baseEntities[chr];\n          }\n          if (entitiesMap[chr] !== undefined) {\n            return entitiesMap[chr];\n          }\n          if (chr.length > 1) {\n            return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';';\n          }\n          return '&#' + chr.charCodeAt(0) + ';';\n        });\n      };\n      var encodeCustomNamed = function (text, attr) {\n        return encodeNamed(text, attr, entitiesMap);\n      };\n      var nameMap = makeMap$1(name.replace(/\\+/g, ','));\n      if (nameMap.named && nameMap.numeric) {\n        return encodeNamedAndNumeric;\n      }\n      if (nameMap.named) {\n        if (entities) {\n          return encodeCustomNamed;\n        }\n        return encodeNamed;\n      }\n      if (nameMap.numeric) {\n        return encodeNumeric;\n      }\n      return encodeRaw;\n    };\n    var decode = function (text) {\n      return text.replace(entityRegExp, function (all, numeric) {\n        if (numeric) {\n          if (numeric.charAt(0).toLowerCase() === 'x') {\n            numeric = parseInt(numeric.substr(1), 16);\n          } else {\n            numeric = parseInt(numeric, 10);\n          }\n          if (numeric > 65535) {\n            numeric -= 65536;\n            return String.fromCharCode(55296 + (numeric >> 10), 56320 + (numeric & 1023));\n          }\n          return asciiMap[numeric] || String.fromCharCode(numeric);\n        }\n        return reverseEntities[all] || namedEntities[all] || nativeDecode(all);\n      });\n    };\n    var Entities = {\n      encodeRaw: encodeRaw,\n      encodeAllRaw: encodeAllRaw,\n      encodeNumeric: encodeNumeric,\n      encodeNamed: encodeNamed,\n      getEncodeFunc: getEncodeFunc,\n      decode: decode\n    };\n\n    var mapCache = {}, dummyObj = {};\n    var makeMap$2 = Tools.makeMap, each$4 = Tools.each, extend$1 = Tools.extend, explode$1 = Tools.explode, inArray$1 = Tools.inArray;\n    var split = function (items, delim) {\n      items = Tools.trim(items);\n      return items ? items.split(delim || ' ') : [];\n    };\n    var compileSchema = function (type) {\n      var schema = {};\n      var globalAttributes, blockContent;\n      var phrasingContent, flowContent, html4BlockContent, html4PhrasingContent;\n      var add = function (name, attributes, children) {\n        var ni, attributesOrder, element;\n        var arrayToMap = function (array, obj) {\n          var map = {};\n          var i, l;\n          for (i = 0, l = array.length; i < l; i++) {\n            map[array[i]] = obj || {};\n          }\n          return map;\n        };\n        children = children || [];\n        attributes = attributes || '';\n        if (typeof children === 'string') {\n          children = split(children);\n        }\n        name = split(name);\n        ni = name.length;\n        while (ni--) {\n          attributesOrder = split([\n            globalAttributes,\n            attributes\n          ].join(' '));\n          element = {\n            attributes: arrayToMap(attributesOrder),\n            attributesOrder: attributesOrder,\n            children: arrayToMap(children, dummyObj)\n          };\n          schema[name[ni]] = element;\n        }\n      };\n      var addAttrs = function (name, attributes) {\n        var ni, schemaItem, i, l;\n        name = split(name);\n        ni = name.length;\n        attributes = split(attributes);\n        while (ni--) {\n          schemaItem = schema[name[ni]];\n          for (i = 0, l = attributes.length; i < l; i++) {\n            schemaItem.attributes[attributes[i]] = {};\n            schemaItem.attributesOrder.push(attributes[i]);\n          }\n        }\n      };\n      if (mapCache[type]) {\n        return mapCache[type];\n      }\n      globalAttributes = 'id accesskey class dir lang style tabindex title role';\n      blockContent = 'address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul';\n      phrasingContent = 'a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd ' + 'label map noscript object q s samp script select small span strong sub sup ' + 'textarea u var #text #comment';\n      if (type !== 'html4') {\n        globalAttributes += ' contenteditable contextmenu draggable dropzone ' + 'hidden spellcheck translate';\n        blockContent += ' article aside details dialog figure main header footer hgroup section nav';\n        phrasingContent += ' audio canvas command datalist mark meter output picture ' + 'progress time wbr video ruby bdi keygen';\n      }\n      if (type !== 'html5-strict') {\n        globalAttributes += ' xml:lang';\n        html4PhrasingContent = 'acronym applet basefont big font strike tt';\n        phrasingContent = [\n          phrasingContent,\n          html4PhrasingContent\n        ].join(' ');\n        each$4(split(html4PhrasingContent), function (name) {\n          add(name, '', phrasingContent);\n        });\n        html4BlockContent = 'center dir isindex noframes';\n        blockContent = [\n          blockContent,\n          html4BlockContent\n        ].join(' ');\n        flowContent = [\n          blockContent,\n          phrasingContent\n        ].join(' ');\n        each$4(split(html4BlockContent), function (name) {\n          add(name, '', flowContent);\n        });\n      }\n      flowContent = flowContent || [\n        blockContent,\n        phrasingContent\n      ].join(' ');\n      add('html', 'manifest', 'head body');\n      add('head', '', 'base command link meta noscript script style title');\n      add('title hr noscript br');\n      add('base', 'href target');\n      add('link', 'href rel media hreflang type sizes hreflang');\n      add('meta', 'name http-equiv content charset');\n      add('style', 'media type scoped');\n      add('script', 'src async defer type charset');\n      add('body', 'onafterprint onbeforeprint onbeforeunload onblur onerror onfocus ' + 'onhashchange onload onmessage onoffline ononline onpagehide onpageshow ' + 'onpopstate onresize onscroll onstorage onunload', flowContent);\n      add('address dt dd div caption', '', flowContent);\n      add('h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn', '', phrasingContent);\n      add('blockquote', 'cite', flowContent);\n      add('ol', 'reversed start type', 'li');\n      add('ul', '', 'li');\n      add('li', 'value', flowContent);\n      add('dl', '', 'dt dd');\n      add('a', 'href target rel media hreflang type', phrasingContent);\n      add('q', 'cite', phrasingContent);\n      add('ins del', 'cite datetime', flowContent);\n      add('img', 'src sizes srcset alt usemap ismap width height');\n      add('iframe', 'src name width height', flowContent);\n      add('embed', 'src type width height');\n      add('object', 'data type typemustmatch name usemap form width height', [\n        flowContent,\n        'param'\n      ].join(' '));\n      add('param', 'name value');\n      add('map', 'name', [\n        flowContent,\n        'area'\n      ].join(' '));\n      add('area', 'alt coords shape href target rel media hreflang type');\n      add('table', 'border', 'caption colgroup thead tfoot tbody tr' + (type === 'html4' ? ' col' : ''));\n      add('colgroup', 'span', 'col');\n      add('col', 'span');\n      add('tbody thead tfoot', '', 'tr');\n      add('tr', '', 'td th');\n      add('td', 'colspan rowspan headers', flowContent);\n      add('th', 'colspan rowspan headers scope abbr', flowContent);\n      add('form', 'accept-charset action autocomplete enctype method name novalidate target', flowContent);\n      add('fieldset', 'disabled form name', [\n        flowContent,\n        'legend'\n      ].join(' '));\n      add('label', 'form for', phrasingContent);\n      add('input', 'accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate ' + 'formtarget height list max maxlength min multiple name pattern readonly required size src step type value width');\n      add('button', 'disabled form formaction formenctype formmethod formnovalidate formtarget name type value', type === 'html4' ? flowContent : phrasingContent);\n      add('select', 'disabled form multiple name required size', 'option optgroup');\n      add('optgroup', 'disabled label', 'option');\n      add('option', 'disabled label selected value');\n      add('textarea', 'cols dirname disabled form maxlength name readonly required rows wrap');\n      add('menu', 'type label', [\n        flowContent,\n        'li'\n      ].join(' '));\n      add('noscript', '', flowContent);\n      if (type !== 'html4') {\n        add('wbr');\n        add('ruby', '', [\n          phrasingContent,\n          'rt rp'\n        ].join(' '));\n        add('figcaption', '', flowContent);\n        add('mark rt rp summary bdi', '', phrasingContent);\n        add('canvas', 'width height', flowContent);\n        add('video', 'src crossorigin poster preload autoplay mediagroup loop ' + 'muted controls width height buffered', [\n          flowContent,\n          'track source'\n        ].join(' '));\n        add('audio', 'src crossorigin preload autoplay mediagroup loop muted controls ' + 'buffered volume', [\n          flowContent,\n          'track source'\n        ].join(' '));\n        add('picture', '', 'img source');\n        add('source', 'src srcset type media sizes');\n        add('track', 'kind src srclang label default');\n        add('datalist', '', [\n          phrasingContent,\n          'option'\n        ].join(' '));\n        add('article section nav aside main header footer', '', flowContent);\n        add('hgroup', '', 'h1 h2 h3 h4 h5 h6');\n        add('figure', '', [\n          flowContent,\n          'figcaption'\n        ].join(' '));\n        add('time', 'datetime', phrasingContent);\n        add('dialog', 'open', flowContent);\n        add('command', 'type label icon disabled checked radiogroup command');\n        add('output', 'for form name', phrasingContent);\n        add('progress', 'value max', phrasingContent);\n        add('meter', 'value min max low high optimum', phrasingContent);\n        add('details', 'open', [\n          flowContent,\n          'summary'\n        ].join(' '));\n        add('keygen', 'autofocus challenge disabled form keytype name');\n      }\n      if (type !== 'html5-strict') {\n        addAttrs('script', 'language xml:space');\n        addAttrs('style', 'xml:space');\n        addAttrs('object', 'declare classid code codebase codetype archive standby align border hspace vspace');\n        addAttrs('embed', 'align name hspace vspace');\n        addAttrs('param', 'valuetype type');\n        addAttrs('a', 'charset name rev shape coords');\n        addAttrs('br', 'clear');\n        addAttrs('applet', 'codebase archive code object alt name width height align hspace vspace');\n        addAttrs('img', 'name longdesc align border hspace vspace');\n        addAttrs('iframe', 'longdesc frameborder marginwidth marginheight scrolling align');\n        addAttrs('font basefont', 'size color face');\n        addAttrs('input', 'usemap align');\n        addAttrs('select', 'onchange');\n        addAttrs('textarea');\n        addAttrs('h1 h2 h3 h4 h5 h6 div p legend caption', 'align');\n        addAttrs('ul', 'type compact');\n        addAttrs('li', 'type');\n        addAttrs('ol dl menu dir', 'compact');\n        addAttrs('pre', 'width xml:space');\n        addAttrs('hr', 'align noshade size width');\n        addAttrs('isindex', 'prompt');\n        addAttrs('table', 'summary width frame rules cellspacing cellpadding align bgcolor');\n        addAttrs('col', 'width align char charoff valign');\n        addAttrs('colgroup', 'width align char charoff valign');\n        addAttrs('thead', 'align char charoff valign');\n        addAttrs('tr', 'align char charoff valign bgcolor');\n        addAttrs('th', 'axis align char charoff valign nowrap bgcolor width height');\n        addAttrs('form', 'accept');\n        addAttrs('td', 'abbr axis scope align char charoff valign nowrap bgcolor width height');\n        addAttrs('tfoot', 'align char charoff valign');\n        addAttrs('tbody', 'align char charoff valign');\n        addAttrs('area', 'nohref');\n        addAttrs('body', 'background bgcolor text link vlink alink');\n      }\n      if (type !== 'html4') {\n        addAttrs('input button select textarea', 'autofocus');\n        addAttrs('input textarea', 'placeholder');\n        addAttrs('a', 'download');\n        addAttrs('link script img', 'crossorigin');\n        addAttrs('iframe', 'sandbox seamless allowfullscreen');\n      }\n      each$4(split('a form meter progress dfn'), function (name) {\n        if (schema[name]) {\n          delete schema[name].children[name];\n        }\n      });\n      delete schema.caption.children.table;\n      delete schema.script;\n      mapCache[type] = schema;\n      return schema;\n    };\n    var compileElementMap = function (value, mode) {\n      var styles;\n      if (value) {\n        styles = {};\n        if (typeof value === 'string') {\n          value = { '*': value };\n        }\n        each$4(value, function (value, key) {\n          styles[key] = styles[key.toUpperCase()] = mode === 'map' ? makeMap$2(value, /[, ]/) : explode$1(value, /[, ]/);\n        });\n      }\n      return styles;\n    };\n    function Schema(settings) {\n      var elements = {};\n      var children = {};\n      var patternElements = [];\n      var validStyles;\n      var invalidStyles;\n      var schemaItems;\n      var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, validClasses;\n      var blockElementsMap, nonEmptyElementsMap, moveCaretBeforeOnEnterElementsMap, textBlockElementsMap, textInlineElementsMap;\n      var customElementsMap = {}, specialElements = {};\n      var createLookupTable = function (option, defaultValue, extendWith) {\n        var value = settings[option];\n        if (!value) {\n          value = mapCache[option];\n          if (!value) {\n            value = makeMap$2(defaultValue, ' ', makeMap$2(defaultValue.toUpperCase(), ' '));\n            value = extend$1(value, extendWith);\n            mapCache[option] = value;\n          }\n        } else {\n          value = makeMap$2(value, /[, ]/, makeMap$2(value.toUpperCase(), /[, ]/));\n        }\n        return value;\n      };\n      settings = settings || {};\n      schemaItems = compileSchema(settings.schema);\n      if (settings.verify_html === false) {\n        settings.valid_elements = '*[*]';\n      }\n      validStyles = compileElementMap(settings.valid_styles);\n      invalidStyles = compileElementMap(settings.invalid_styles, 'map');\n      validClasses = compileElementMap(settings.valid_classes, 'map');\n      whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea video audio iframe object code');\n      selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr');\n      shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link ' + 'meta param embed source wbr track');\n      boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize ' + 'noshade nowrap readonly selected autoplay loop controls');\n      nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object ' + 'script pre code', shortEndedElementsMap);\n      moveCaretBeforeOnEnterElementsMap = createLookupTable('move_caret_before_on_enter_elements', 'table', nonEmptyElementsMap);\n      textBlockElementsMap = createLookupTable('text_block_elements', 'h1 h2 h3 h4 h5 h6 p div address pre form ' + 'blockquote center dir fieldset header footer article section hgroup aside main nav figure');\n      blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' + 'th tr td li ol ul caption dl dt dd noscript menu isindex option ' + 'datalist select optgroup figcaption details summary', textBlockElementsMap);\n      textInlineElementsMap = createLookupTable('text_inline_elements', 'span strong b em i font strike u var cite ' + 'dfn code mark q sup sub samp');\n      each$4((settings.special || 'script noscript noframes noembed title style textarea xmp').split(' '), function (name) {\n        specialElements[name] = new RegExp('</' + name + '[^>]*>', 'gi');\n      });\n      var patternToRegExp = function (str) {\n        return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$');\n      };\n      var addValidElements = function (validElements) {\n        var ei, el, ai, al, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder, prefix, outputName, globalAttributes, globalAttributesOrder, key, value;\n        var elementRuleRegExp = /^([#+\\-])?([^\\[!\\/]+)(?:\\/([^\\[!]+))?(?:(!?)\\[([^\\]]+)\\])?$/, attrRuleRegExp = /^([!\\-])?(\\w+[\\\\:]:\\w+|[^=:<]+)?(?:([=:<])(.*))?$/, hasPatternsRegExp = /[*?+]/;\n        if (validElements) {\n          validElements = split(validElements, ',');\n          if (elements['@']) {\n            globalAttributes = elements['@'].attributes;\n            globalAttributesOrder = elements['@'].attributesOrder;\n          }\n          for (ei = 0, el = validElements.length; ei < el; ei++) {\n            matches = elementRuleRegExp.exec(validElements[ei]);\n            if (matches) {\n              prefix = matches[1];\n              elementName = matches[2];\n              outputName = matches[3];\n              attrData = matches[5];\n              attributes = {};\n              attributesOrder = [];\n              element = {\n                attributes: attributes,\n                attributesOrder: attributesOrder\n              };\n              if (prefix === '#') {\n                element.paddEmpty = true;\n              }\n              if (prefix === '-') {\n                element.removeEmpty = true;\n              }\n              if (matches[4] === '!') {\n                element.removeEmptyAttrs = true;\n              }\n              if (globalAttributes) {\n                for (key in globalAttributes) {\n                  attributes[key] = globalAttributes[key];\n                }\n                attributesOrder.push.apply(attributesOrder, globalAttributesOrder);\n              }\n              if (attrData) {\n                attrData = split(attrData, '|');\n                for (ai = 0, al = attrData.length; ai < al; ai++) {\n                  matches = attrRuleRegExp.exec(attrData[ai]);\n                  if (matches) {\n                    attr = {};\n                    attrType = matches[1];\n                    attrName = matches[2].replace(/[\\\\:]:/g, ':');\n                    prefix = matches[3];\n                    value = matches[4];\n                    if (attrType === '!') {\n                      element.attributesRequired = element.attributesRequired || [];\n                      element.attributesRequired.push(attrName);\n                      attr.required = true;\n                    }\n                    if (attrType === '-') {\n                      delete attributes[attrName];\n                      attributesOrder.splice(inArray$1(attributesOrder, attrName), 1);\n                      continue;\n                    }\n                    if (prefix) {\n                      if (prefix === '=') {\n                        element.attributesDefault = element.attributesDefault || [];\n                        element.attributesDefault.push({\n                          name: attrName,\n                          value: value\n                        });\n                        attr.defaultValue = value;\n                      }\n                      if (prefix === ':') {\n                        element.attributesForced = element.attributesForced || [];\n                        element.attributesForced.push({\n                          name: attrName,\n                          value: value\n                        });\n                        attr.forcedValue = value;\n                      }\n                      if (prefix === '<') {\n                        attr.validValues = makeMap$2(value, '?');\n                      }\n                    }\n                    if (hasPatternsRegExp.test(attrName)) {\n                      element.attributePatterns = element.attributePatterns || [];\n                      attr.pattern = patternToRegExp(attrName);\n                      element.attributePatterns.push(attr);\n                    } else {\n                      if (!attributes[attrName]) {\n                        attributesOrder.push(attrName);\n                      }\n                      attributes[attrName] = attr;\n                    }\n                  }\n                }\n              }\n              if (!globalAttributes && elementName === '@') {\n                globalAttributes = attributes;\n                globalAttributesOrder = attributesOrder;\n              }\n              if (outputName) {\n                element.outputName = elementName;\n                elements[outputName] = element;\n              }\n              if (hasPatternsRegExp.test(elementName)) {\n                element.pattern = patternToRegExp(elementName);\n                patternElements.push(element);\n              } else {\n                elements[elementName] = element;\n              }\n            }\n          }\n        }\n      };\n      var setValidElements = function (validElements) {\n        elements = {};\n        patternElements = [];\n        addValidElements(validElements);\n        each$4(schemaItems, function (element, name) {\n          children[name] = element.children;\n        });\n      };\n      var addCustomElements = function (customElements) {\n        var customElementRegExp = /^(~)?(.+)$/;\n        if (customElements) {\n          mapCache.text_block_elements = mapCache.block_elements = null;\n          each$4(split(customElements, ','), function (rule) {\n            var matches = customElementRegExp.exec(rule), inline = matches[1] === '~', cloneName = inline ? 'span' : 'div', name = matches[2];\n            children[name] = children[cloneName];\n            customElementsMap[name] = cloneName;\n            if (!inline) {\n              blockElementsMap[name.toUpperCase()] = {};\n              blockElementsMap[name] = {};\n            }\n            if (!elements[name]) {\n              var customRule = elements[cloneName];\n              customRule = extend$1({}, customRule);\n              delete customRule.removeEmptyAttrs;\n              delete customRule.removeEmpty;\n              elements[name] = customRule;\n            }\n            each$4(children, function (element, elmName) {\n              if (element[cloneName]) {\n                children[elmName] = element = extend$1({}, children[elmName]);\n                element[name] = element[cloneName];\n              }\n            });\n          });\n        }\n      };\n      var addValidChildren = function (validChildren) {\n        var childRuleRegExp = /^([+\\-]?)(\\w+)\\[([^\\]]+)\\]$/;\n        mapCache[settings.schema] = null;\n        if (validChildren) {\n          each$4(split(validChildren, ','), function (rule) {\n            var matches = childRuleRegExp.exec(rule);\n            var parent, prefix;\n            if (matches) {\n              prefix = matches[1];\n              if (prefix) {\n                parent = children[matches[2]];\n              } else {\n                parent = children[matches[2]] = { '#comment': {} };\n              }\n              parent = children[matches[2]];\n              each$4(split(matches[3], '|'), function (child) {\n                if (prefix === '-') {\n                  delete parent[child];\n                } else {\n                  parent[child] = {};\n                }\n              });\n            }\n          });\n        }\n      };\n      var getElementRule = function (name) {\n        var element = elements[name], i;\n        if (element) {\n          return element;\n        }\n        i = patternElements.length;\n        while (i--) {\n          element = patternElements[i];\n          if (element.pattern.test(name)) {\n            return element;\n          }\n        }\n      };\n      if (!settings.valid_elements) {\n        each$4(schemaItems, function (element, name) {\n          elements[name] = {\n            attributes: element.attributes,\n            attributesOrder: element.attributesOrder\n          };\n          children[name] = element.children;\n        });\n        if (settings.schema !== 'html5') {\n          each$4(split('strong/b em/i'), function (item) {\n            item = split(item, '/');\n            elements[item[1]].outputName = item[0];\n          });\n        }\n        each$4(split('ol ul sub sup blockquote span font a table tbody tr strong em b i'), function (name) {\n          if (elements[name]) {\n            elements[name].removeEmpty = true;\n          }\n        });\n        each$4(split('p h1 h2 h3 h4 h5 h6 th td pre div address caption li'), function (name) {\n          elements[name].paddEmpty = true;\n        });\n        each$4(split('span'), function (name) {\n          elements[name].removeEmptyAttrs = true;\n        });\n      } else {\n        setValidElements(settings.valid_elements);\n      }\n      addCustomElements(settings.custom_elements);\n      addValidChildren(settings.valid_children);\n      addValidElements(settings.extended_valid_elements);\n      addValidChildren('+ol[ul|ol],+ul[ul|ol]');\n      each$4({\n        dd: 'dl',\n        dt: 'dl',\n        li: 'ul ol',\n        td: 'tr',\n        th: 'tr',\n        tr: 'tbody thead tfoot',\n        tbody: 'table',\n        thead: 'table',\n        tfoot: 'table',\n        legend: 'fieldset',\n        area: 'map',\n        param: 'video audio object'\n      }, function (parents, item) {\n        if (elements[item]) {\n          elements[item].parentsRequired = split(parents);\n        }\n      });\n      if (settings.invalid_elements) {\n        each$4(explode$1(settings.invalid_elements), function (item) {\n          if (elements[item]) {\n            delete elements[item];\n          }\n        });\n      }\n      if (!getElementRule('span')) {\n        addValidElements('span[!data-mce-type|*]');\n      }\n      var getValidStyles = function () {\n        return validStyles;\n      };\n      var getInvalidStyles = function () {\n        return invalidStyles;\n      };\n      var getValidClasses = function () {\n        return validClasses;\n      };\n      var getBoolAttrs = function () {\n        return boolAttrMap;\n      };\n      var getBlockElements = function () {\n        return blockElementsMap;\n      };\n      var getTextBlockElements = function () {\n        return textBlockElementsMap;\n      };\n      var getTextInlineElements = function () {\n        return textInlineElementsMap;\n      };\n      var getShortEndedElements = function () {\n        return shortEndedElementsMap;\n      };\n      var getSelfClosingElements = function () {\n        return selfClosingElementsMap;\n      };\n      var getNonEmptyElements = function () {\n        return nonEmptyElementsMap;\n      };\n      var getMoveCaretBeforeOnEnterElements = function () {\n        return moveCaretBeforeOnEnterElementsMap;\n      };\n      var getWhiteSpaceElements = function () {\n        return whiteSpaceElementsMap;\n      };\n      var getSpecialElements = function () {\n        return specialElements;\n      };\n      var isValidChild = function (name, child) {\n        var parent = children[name.toLowerCase()];\n        return !!(parent && parent[child.toLowerCase()]);\n      };\n      var isValid = function (name, attr) {\n        var attrPatterns, i;\n        var rule = getElementRule(name);\n        if (rule) {\n          if (attr) {\n            if (rule.attributes[attr]) {\n              return true;\n            }\n            attrPatterns = rule.attributePatterns;\n            if (attrPatterns) {\n              i = attrPatterns.length;\n              while (i--) {\n                if (attrPatterns[i].pattern.test(name)) {\n                  return true;\n                }\n              }\n            }\n          } else {\n            return true;\n          }\n        }\n        return false;\n      };\n      var getCustomElements = function () {\n        return customElementsMap;\n      };\n      return {\n        children: children,\n        elements: elements,\n        getValidStyles: getValidStyles,\n        getValidClasses: getValidClasses,\n        getBlockElements: getBlockElements,\n        getInvalidStyles: getInvalidStyles,\n        getShortEndedElements: getShortEndedElements,\n        getTextBlockElements: getTextBlockElements,\n        getTextInlineElements: getTextInlineElements,\n        getBoolAttrs: getBoolAttrs,\n        getElementRule: getElementRule,\n        getSelfClosingElements: getSelfClosingElements,\n        getNonEmptyElements: getNonEmptyElements,\n        getMoveCaretBeforeOnEnterElements: getMoveCaretBeforeOnEnterElements,\n        getWhiteSpaceElements: getWhiteSpaceElements,\n        getSpecialElements: getSpecialElements,\n        isValidChild: isValidChild,\n        isValid: isValid,\n        getCustomElements: getCustomElements,\n        addValidElements: addValidElements,\n        setValidElements: setValidElements,\n        addCustomElements: addCustomElements,\n        addValidChildren: addValidChildren\n      };\n    }\n\n    var toHex = function (match, r, g, b) {\n      var hex = function (val) {\n        val = parseInt(val, 10).toString(16);\n        return val.length > 1 ? val : '0' + val;\n      };\n      return '#' + hex(r) + hex(g) + hex(b);\n    };\n    function Styles(settings, schema) {\n      var rgbRegExp = /rgb\\s*\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/gi;\n      var urlOrStrRegExp = /(?:url(?:(?:\\(\\s*\\\"([^\\\"]+)\\\"\\s*\\))|(?:\\(\\s*\\'([^\\']+)\\'\\s*\\))|(?:\\(\\s*([^)\\s]+)\\s*\\))))|(?:\\'([^\\']+)\\')|(?:\\\"([^\\\"]+)\\\")/gi;\n      var styleRegExp = /\\s*([^:]+):\\s*([^;]+);?/g;\n      var trimRightRegExp = /\\s+$/;\n      var i;\n      var encodingLookup = {};\n      var encodingItems;\n      var validStyles;\n      var invalidStyles;\n      var invisibleChar = '\\uFEFF';\n      settings = settings || {};\n      if (schema) {\n        validStyles = schema.getValidStyles();\n        invalidStyles = schema.getInvalidStyles();\n      }\n      encodingItems = ('\\\\\" \\\\\\' \\\\; \\\\: ; : ' + invisibleChar).split(' ');\n      for (i = 0; i < encodingItems.length; i++) {\n        encodingLookup[encodingItems[i]] = invisibleChar + i;\n        encodingLookup[invisibleChar + i] = encodingItems[i];\n      }\n      return {\n        toHex: function (color) {\n          return color.replace(rgbRegExp, toHex);\n        },\n        parse: function (css) {\n          var styles = {};\n          var matches, name, value, isEncoded;\n          var urlConverter = settings.url_converter;\n          var urlConverterScope = settings.url_converter_scope || this;\n          var compress = function (prefix, suffix, noJoin) {\n            var top, right, bottom, left;\n            top = styles[prefix + '-top' + suffix];\n            if (!top) {\n              return;\n            }\n            right = styles[prefix + '-right' + suffix];\n            if (!right) {\n              return;\n            }\n            bottom = styles[prefix + '-bottom' + suffix];\n            if (!bottom) {\n              return;\n            }\n            left = styles[prefix + '-left' + suffix];\n            if (!left) {\n              return;\n            }\n            var box = [\n              top,\n              right,\n              bottom,\n              left\n            ];\n            i = box.length - 1;\n            while (i--) {\n              if (box[i] !== box[i + 1]) {\n                break;\n              }\n            }\n            if (i > -1 && noJoin) {\n              return;\n            }\n            styles[prefix + suffix] = i === -1 ? box[0] : box.join(' ');\n            delete styles[prefix + '-top' + suffix];\n            delete styles[prefix + '-right' + suffix];\n            delete styles[prefix + '-bottom' + suffix];\n            delete styles[prefix + '-left' + suffix];\n          };\n          var canCompress = function (key) {\n            var value = styles[key], i;\n            if (!value) {\n              return;\n            }\n            value = value.split(' ');\n            i = value.length;\n            while (i--) {\n              if (value[i] !== value[0]) {\n                return false;\n              }\n            }\n            styles[key] = value[0];\n            return true;\n          };\n          var compress2 = function (target, a, b, c) {\n            if (!canCompress(a)) {\n              return;\n            }\n            if (!canCompress(b)) {\n              return;\n            }\n            if (!canCompress(c)) {\n              return;\n            }\n            styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c];\n            delete styles[a];\n            delete styles[b];\n            delete styles[c];\n          };\n          var encode = function (str) {\n            isEncoded = true;\n            return encodingLookup[str];\n          };\n          var decode = function (str, keepSlashes) {\n            if (isEncoded) {\n              str = str.replace(/\\uFEFF[0-9]/g, function (str) {\n                return encodingLookup[str];\n              });\n            }\n            if (!keepSlashes) {\n              str = str.replace(/\\\\([\\'\\\";:])/g, '$1');\n            }\n            return str;\n          };\n          var decodeSingleHexSequence = function (escSeq) {\n            return String.fromCharCode(parseInt(escSeq.slice(1), 16));\n          };\n          var decodeHexSequences = function (value) {\n            return value.replace(/\\\\[0-9a-f]+/gi, decodeSingleHexSequence);\n          };\n          var processUrl = function (match, url, url2, url3, str, str2) {\n            str = str || str2;\n            if (str) {\n              str = decode(str);\n              return '\\'' + str.replace(/\\'/g, '\\\\\\'') + '\\'';\n            }\n            url = decode(url || url2 || url3);\n            if (!settings.allow_script_urls) {\n              var scriptUrl = url.replace(/[\\s\\r\\n]+/g, '');\n              if (/(java|vb)script:/i.test(scriptUrl)) {\n                return '';\n              }\n              if (!settings.allow_svg_data_urls && /^data:image\\/svg/i.test(scriptUrl)) {\n                return '';\n              }\n            }\n            if (urlConverter) {\n              url = urlConverter.call(urlConverterScope, url, 'style');\n            }\n            return 'url(\\'' + url.replace(/\\'/g, '\\\\\\'') + '\\')';\n          };\n          if (css) {\n            css = css.replace(/[\\u0000-\\u001F]/g, '');\n            css = css.replace(/\\\\[\\\"\\';:\\uFEFF]/g, encode).replace(/\\\"[^\\\"]+\\\"|\\'[^\\']+\\'/g, function (str) {\n              return str.replace(/[;:]/g, encode);\n            });\n            while (matches = styleRegExp.exec(css)) {\n              styleRegExp.lastIndex = matches.index + matches[0].length;\n              name = matches[1].replace(trimRightRegExp, '').toLowerCase();\n              value = matches[2].replace(trimRightRegExp, '');\n              if (name && value) {\n                name = decodeHexSequences(name);\n                value = decodeHexSequences(value);\n                if (name.indexOf(invisibleChar) !== -1 || name.indexOf('\"') !== -1) {\n                  continue;\n                }\n                if (!settings.allow_script_urls && (name === 'behavior' || /expression\\s*\\(|\\/\\*|\\*\\//.test(value))) {\n                  continue;\n                }\n                if (name === 'font-weight' && value === '700') {\n                  value = 'bold';\n                } else if (name === 'color' || name === 'background-color') {\n                  value = value.toLowerCase();\n                }\n                value = value.replace(rgbRegExp, toHex);\n                value = value.replace(urlOrStrRegExp, processUrl);\n                styles[name] = isEncoded ? decode(value, true) : value;\n              }\n            }\n            compress('border', '', true);\n            compress('border', '-width');\n            compress('border', '-color');\n            compress('border', '-style');\n            compress('padding', '');\n            compress('margin', '');\n            compress2('border', 'border-width', 'border-style', 'border-color');\n            if (styles.border === 'medium none') {\n              delete styles.border;\n            }\n            if (styles['border-image'] === 'none') {\n              delete styles['border-image'];\n            }\n          }\n          return styles;\n        },\n        serialize: function (styles, elementName) {\n          var css = '', name, value;\n          var serializeStyles = function (name) {\n            var styleList, i, l, value;\n            styleList = validStyles[name];\n            if (styleList) {\n              for (i = 0, l = styleList.length; i < l; i++) {\n                name = styleList[i];\n                value = styles[name];\n                if (value) {\n                  css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\n                }\n              }\n            }\n          };\n          var isValid = function (name, elementName) {\n            var styleMap;\n            styleMap = invalidStyles['*'];\n            if (styleMap && styleMap[name]) {\n              return false;\n            }\n            styleMap = invalidStyles[elementName];\n            if (styleMap && styleMap[name]) {\n              return false;\n            }\n            return true;\n          };\n          if (elementName && validStyles) {\n            serializeStyles('*');\n            serializeStyles(elementName);\n          } else {\n            for (name in styles) {\n              value = styles[name];\n              if (value && (!invalidStyles || isValid(name, elementName))) {\n                css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\n              }\n            }\n          }\n          return css;\n        }\n      };\n    }\n\n    var each$5 = Tools.each;\n    var grep$1 = Tools.grep;\n    var isIE = Env.ie;\n    var simpleSelectorRe = /^([a-z0-9],?)+$/i;\n    var whiteSpaceRegExp$2 = /^[ \\t\\r\\n]*$/;\n    var setupAttrHooks = function (styles, settings, getContext) {\n      var attrHooks = {};\n      var keepValues = settings.keep_values;\n      var keepUrlHook = {\n        set: function ($elm, value, name$$1) {\n          if (settings.url_converter) {\n            value = settings.url_converter.call(settings.url_converter_scope || getContext(), value, name$$1, $elm[0]);\n          }\n          $elm.attr('data-mce-' + name$$1, value).attr(name$$1, value);\n        },\n        get: function ($elm, name$$1) {\n          return $elm.attr('data-mce-' + name$$1) || $elm.attr(name$$1);\n        }\n      };\n      attrHooks = {\n        style: {\n          set: function ($elm, value) {\n            if (value !== null && typeof value === 'object') {\n              $elm.css(value);\n              return;\n            }\n            if (keepValues) {\n              $elm.attr('data-mce-style', value);\n            }\n            $elm.attr('style', value);\n          },\n          get: function ($elm) {\n            var value = $elm.attr('data-mce-style') || $elm.attr('style');\n            value = styles.serialize(styles.parse(value), $elm[0].nodeName);\n            return value;\n          }\n        }\n      };\n      if (keepValues) {\n        attrHooks.href = attrHooks.src = keepUrlHook;\n      }\n      return attrHooks;\n    };\n    var updateInternalStyleAttr = function (styles, $elm) {\n      var rawValue = $elm.attr('style');\n      var value = styles.serialize(styles.parse(rawValue), $elm[0].nodeName);\n      if (!value) {\n        value = null;\n      }\n      $elm.attr('data-mce-style', value);\n    };\n    var findNodeIndex = function (node, normalized) {\n      var idx = 0, lastNodeType, nodeType;\n      if (node) {\n        for (lastNodeType = node.nodeType, node = node.previousSibling; node; node = node.previousSibling) {\n          nodeType = node.nodeType;\n          if (normalized && nodeType === 3) {\n            if (nodeType === lastNodeType || !node.nodeValue.length) {\n              continue;\n            }\n          }\n          idx++;\n          lastNodeType = nodeType;\n        }\n      }\n      return idx;\n    };\n    function DOMUtils(doc, settings) {\n      var _this = this;\n      if (settings === void 0) {\n        settings = {};\n      }\n      var attrHooks;\n      var addedStyles = {};\n      var win = window;\n      var files = {};\n      var counter = 0;\n      var stdMode = true;\n      var boxModel = true;\n      var styleSheetLoader = StyleSheetLoader(doc, { contentCssCors: settings.contentCssCors });\n      var boundEvents = [];\n      var schema = settings.schema ? settings.schema : Schema({});\n      var styles = Styles({\n        url_converter: settings.url_converter,\n        url_converter_scope: settings.url_converter_scope\n      }, settings.schema);\n      var events = settings.ownEvents ? new EventUtils(settings.proxy) : EventUtils.Event;\n      var blockElementsMap = schema.getBlockElements();\n      var $ = DomQuery.overrideDefaults(function () {\n        return {\n          context: doc,\n          element: self$$1.getRoot()\n        };\n      });\n      var isBlock = function (node) {\n        if (typeof node === 'string') {\n          return !!blockElementsMap[node];\n        } else if (node) {\n          var type = node.nodeType;\n          if (type) {\n            return !!(type === 1 && blockElementsMap[node.nodeName]);\n          }\n        }\n        return false;\n      };\n      var get = function (elm) {\n        if (elm && doc && typeof elm === 'string') {\n          var node = doc.getElementById(elm);\n          if (node && node.id !== elm) {\n            return doc.getElementsByName(elm)[1];\n          } else {\n            return node;\n          }\n        }\n        return elm;\n      };\n      var $$ = function (elm) {\n        if (typeof elm === 'string') {\n          elm = get(elm);\n        }\n        return $(elm);\n      };\n      var getAttrib = function (elm, name$$1, defaultVal) {\n        var hook, value;\n        var $elm = $$(elm);\n        if ($elm.length) {\n          hook = attrHooks[name$$1];\n          if (hook && hook.get) {\n            value = hook.get($elm, name$$1);\n          } else {\n            value = $elm.attr(name$$1);\n          }\n        }\n        if (typeof value === 'undefined') {\n          value = defaultVal || '';\n        }\n        return value;\n      };\n      var getAttribs = function (elm) {\n        var node = get(elm);\n        if (!node) {\n          return [];\n        }\n        return node.attributes;\n      };\n      var setAttrib = function (elm, name$$1, value) {\n        var originalValue, hook;\n        if (value === '') {\n          value = null;\n        }\n        var $elm = $$(elm);\n        originalValue = $elm.attr(name$$1);\n        if (!$elm.length) {\n          return;\n        }\n        hook = attrHooks[name$$1];\n        if (hook && hook.set) {\n          hook.set($elm, value, name$$1);\n        } else {\n          $elm.attr(name$$1, value);\n        }\n        if (originalValue !== value && settings.onSetAttrib) {\n          settings.onSetAttrib({\n            attrElm: $elm,\n            attrName: name$$1,\n            attrValue: value\n          });\n        }\n      };\n      var clone = function (node, deep) {\n        if (!isIE || node.nodeType !== 1 || deep) {\n          return node.cloneNode(deep);\n        }\n        if (!deep) {\n          var clone_1 = doc.createElement(node.nodeName);\n          each$5(getAttribs(node), function (attr) {\n            setAttrib(clone_1, attr.nodeName, getAttrib(node, attr.nodeName));\n          });\n          return clone_1;\n        }\n        return null;\n      };\n      var getRoot = function () {\n        return settings.root_element || doc.body;\n      };\n      var getViewPort = function (argWin) {\n        var actWin = !argWin ? win : argWin;\n        var doc = actWin.document;\n        var rootElm = boxModel ? doc.documentElement : doc.body;\n        return {\n          x: actWin.pageXOffset || rootElm.scrollLeft,\n          y: actWin.pageYOffset || rootElm.scrollTop,\n          w: actWin.innerWidth || rootElm.clientWidth,\n          h: actWin.innerHeight || rootElm.clientHeight\n        };\n      };\n      var getPos = function (elm, rootElm) {\n        return Position.getPos(doc.body, get(elm), rootElm);\n      };\n      var setStyle = function (elm, name$$1, value) {\n        var $elm = $$(elm).css(name$$1, value);\n        if (settings.update_styles) {\n          updateInternalStyleAttr(styles, $elm);\n        }\n      };\n      var setStyles = function (elm, stylesArg) {\n        var $elm = $$(elm).css(stylesArg);\n        if (settings.update_styles) {\n          updateInternalStyleAttr(styles, $elm);\n        }\n      };\n      var getStyle = function (elm, name$$1, computed) {\n        var $elm = $$(elm);\n        if (computed) {\n          return $elm.css(name$$1);\n        }\n        name$$1 = name$$1.replace(/-(\\D)/g, function (a, b) {\n          return b.toUpperCase();\n        });\n        if (name$$1 === 'float') {\n          name$$1 = Env.ie && Env.ie < 12 ? 'styleFloat' : 'cssFloat';\n        }\n        return $elm[0] && $elm[0].style ? $elm[0].style[name$$1] : undefined;\n      };\n      var getSize = function (elm) {\n        var w, h;\n        elm = get(elm);\n        w = getStyle(elm, 'width');\n        h = getStyle(elm, 'height');\n        if (w.indexOf('px') === -1) {\n          w = 0;\n        }\n        if (h.indexOf('px') === -1) {\n          h = 0;\n        }\n        return {\n          w: parseInt(w, 10) || elm.offsetWidth || elm.clientWidth,\n          h: parseInt(h, 10) || elm.offsetHeight || elm.clientHeight\n        };\n      };\n      var getRect = function (elm) {\n        var pos, size;\n        elm = get(elm);\n        pos = getPos(elm);\n        size = getSize(elm);\n        return {\n          x: pos.x,\n          y: pos.y,\n          w: size.w,\n          h: size.h\n        };\n      };\n      var is = function (elm, selector) {\n        var i;\n        if (!elm) {\n          return false;\n        }\n        if (!Array.isArray(elm)) {\n          if (selector === '*') {\n            return elm.nodeType === 1;\n          }\n          if (simpleSelectorRe.test(selector)) {\n            var selectors = selector.toLowerCase().split(/,/);\n            var elmName = elm.nodeName.toLowerCase();\n            for (i = selectors.length - 1; i >= 0; i--) {\n              if (selectors[i] === elmName) {\n                return true;\n              }\n            }\n            return false;\n          }\n          if (elm.nodeType && elm.nodeType !== 1) {\n            return false;\n          }\n        }\n        var elms = !Array.isArray(elm) ? [elm] : elm;\n        return Sizzle(selector, elms[0].ownerDocument || elms[0], null, elms).length > 0;\n      };\n      var getParents = function (elm, selector, root, collect) {\n        var result = [];\n        var selectorVal;\n        var node = get(elm);\n        collect = collect === undefined;\n        root = root || (getRoot().nodeName !== 'BODY' ? getRoot().parentNode : null);\n        if (Tools.is(selector, 'string')) {\n          selectorVal = selector;\n          if (selector === '*') {\n            selector = function (node) {\n              return node.nodeType === 1;\n            };\n          } else {\n            selector = function (node) {\n              return is(node, selectorVal);\n            };\n          }\n        }\n        while (node) {\n          if (node === root || !node.nodeType || node.nodeType === 9) {\n            break;\n          }\n          if (!selector || typeof selector === 'function' && selector(node)) {\n            if (collect) {\n              result.push(node);\n            } else {\n              return [node];\n            }\n          }\n          node = node.parentNode;\n        }\n        return collect ? result : null;\n      };\n      var getParent = function (node, selector, root) {\n        var parents = getParents(node, selector, root, false);\n        return parents && parents.length > 0 ? parents[0] : null;\n      };\n      var _findSib = function (node, selector, name$$1) {\n        var func = selector;\n        if (node) {\n          if (typeof selector === 'string') {\n            func = function (node) {\n              return is(node, selector);\n            };\n          }\n          for (node = node[name$$1]; node; node = node[name$$1]) {\n            if (typeof func === 'function' && func(node)) {\n              return node;\n            }\n          }\n        }\n        return null;\n      };\n      var getNext = function (node, selector) {\n        return _findSib(node, selector, 'nextSibling');\n      };\n      var getPrev = function (node, selector) {\n        return _findSib(node, selector, 'previousSibling');\n      };\n      var select = function (selector, scope) {\n        return Sizzle(selector, get(scope) || settings.root_element || doc, []);\n      };\n      var run = function (elm, func, scope) {\n        var result;\n        var node = typeof elm === 'string' ? get(elm) : elm;\n        if (!node) {\n          return false;\n        }\n        if (Tools.isArray(node) && (node.length || node.length === 0)) {\n          result = [];\n          each$5(node, function (elm, i) {\n            if (elm) {\n              if (typeof elm === 'string') {\n                elm = get(elm);\n              }\n              result.push(func.call(scope, elm, i));\n            }\n          });\n          return result;\n        }\n        var context = scope ? scope : _this;\n        return func.call(context, node);\n      };\n      var setAttribs = function (elm, attrs) {\n        $$(elm).each(function (i, node) {\n          each$5(attrs, function (value, name$$1) {\n            setAttrib(node, name$$1, value);\n          });\n        });\n      };\n      var setHTML = function (elm, html) {\n        var $elm = $$(elm);\n        if (isIE) {\n          $elm.each(function (i, target) {\n            if (target.canHaveHTML === false) {\n              return;\n            }\n            while (target.firstChild) {\n              target.removeChild(target.firstChild);\n            }\n            try {\n              target.innerHTML = '<br>' + html;\n              target.removeChild(target.firstChild);\n            } catch (ex) {\n              DomQuery('<div></div>').html('<br>' + html).contents().slice(1).appendTo(target);\n            }\n            return html;\n          });\n        } else {\n          $elm.html(html);\n        }\n      };\n      var add = function (parentElm, name$$1, attrs, html, create) {\n        return run(parentElm, function (parentElm) {\n          var newElm = typeof name$$1 === 'string' ? doc.createElement(name$$1) : name$$1;\n          setAttribs(newElm, attrs);\n          if (html) {\n            if (typeof html !== 'string' && html.nodeType) {\n              newElm.appendChild(html);\n            } else if (typeof html === 'string') {\n              setHTML(newElm, html);\n            }\n          }\n          return !create ? parentElm.appendChild(newElm) : newElm;\n        });\n      };\n      var create = function (name$$1, attrs, html) {\n        return add(doc.createElement(name$$1), name$$1, attrs, html, true);\n      };\n      var decode = Entities.decode;\n      var encode = Entities.encodeAllRaw;\n      var createHTML = function (name$$1, attrs, html) {\n        var outHtml = '', key;\n        outHtml += '<' + name$$1;\n        for (key in attrs) {\n          if (attrs.hasOwnProperty(key) && attrs[key] !== null && typeof attrs[key] !== 'undefined') {\n            outHtml += ' ' + key + '=\"' + encode(attrs[key]) + '\"';\n          }\n        }\n        if (typeof html !== 'undefined') {\n          return outHtml + '>' + html + '</' + name$$1 + '>';\n        }\n        return outHtml + ' />';\n      };\n      var createFragment = function (html) {\n        var node;\n        var container = doc.createElement('div');\n        var frag = doc.createDocumentFragment();\n        if (html) {\n          container.innerHTML = html;\n        }\n        while (node = container.firstChild) {\n          frag.appendChild(node);\n        }\n        return frag;\n      };\n      var remove = function (node, keepChildren) {\n        var $node = $$(node);\n        if (keepChildren) {\n          $node.each(function () {\n            var child;\n            while (child = this.firstChild) {\n              if (child.nodeType === 3 && child.data.length === 0) {\n                this.removeChild(child);\n              } else {\n                this.parentNode.insertBefore(child, this);\n              }\n            }\n          }).remove();\n        } else {\n          $node.remove();\n        }\n        return $node.length > 1 ? $node.toArray() : $node[0];\n      };\n      var removeAllAttribs = function (e) {\n        return run(e, function (e) {\n          var i;\n          var attrs = e.attributes;\n          for (i = attrs.length - 1; i >= 0; i--) {\n            e.removeAttributeNode(attrs.item(i));\n          }\n        });\n      };\n      var parseStyle = function (cssText) {\n        return styles.parse(cssText);\n      };\n      var serializeStyle = function (stylesArg, name$$1) {\n        return styles.serialize(stylesArg, name$$1);\n      };\n      var addStyle = function (cssText) {\n        var head, styleElm;\n        if (self$$1 !== DOMUtils.DOM && doc === document) {\n          if (addedStyles[cssText]) {\n            return;\n          }\n          addedStyles[cssText] = true;\n        }\n        styleElm = doc.getElementById('mceDefaultStyles');\n        if (!styleElm) {\n          styleElm = doc.createElement('style');\n          styleElm.id = 'mceDefaultStyles';\n          styleElm.type = 'text/css';\n          head = doc.getElementsByTagName('head')[0];\n          if (head.firstChild) {\n            head.insertBefore(styleElm, head.firstChild);\n          } else {\n            head.appendChild(styleElm);\n          }\n        }\n        if (styleElm.styleSheet) {\n          styleElm.styleSheet.cssText += cssText;\n        } else {\n          styleElm.appendChild(doc.createTextNode(cssText));\n        }\n      };\n      var loadCSS = function (url) {\n        var head;\n        if (self$$1 !== DOMUtils.DOM && doc === document) {\n          DOMUtils.DOM.loadCSS(url);\n          return;\n        }\n        if (!url) {\n          url = '';\n        }\n        head = doc.getElementsByTagName('head')[0];\n        each$5(url.split(','), function (url) {\n          var link;\n          url = Tools._addCacheSuffix(url);\n          if (files[url]) {\n            return;\n          }\n          files[url] = true;\n          link = create('link', {\n            rel: 'stylesheet',\n            href: url\n          });\n          head.appendChild(link);\n        });\n      };\n      var toggleClass = function (elm, cls, state) {\n        $$(elm).toggleClass(cls, state).each(function () {\n          if (this.className === '') {\n            DomQuery(this).attr('class', null);\n          }\n        });\n      };\n      var addClass = function (elm, cls) {\n        $$(elm).addClass(cls);\n      };\n      var removeClass = function (elm, cls) {\n        toggleClass(elm, cls, false);\n      };\n      var hasClass = function (elm, cls) {\n        return $$(elm).hasClass(cls);\n      };\n      var show = function (elm) {\n        $$(elm).show();\n      };\n      var hide = function (elm) {\n        $$(elm).hide();\n      };\n      var isHidden = function (elm) {\n        return $$(elm).css('display') === 'none';\n      };\n      var uniqueId = function (prefix) {\n        return (!prefix ? 'mce_' : prefix) + counter++;\n      };\n      var getOuterHTML = function (elm) {\n        var node = typeof elm === 'string' ? get(elm) : elm;\n        return NodeType.isElement(node) ? node.outerHTML : DomQuery('<div></div>').append(DomQuery(node).clone()).html();\n      };\n      var setOuterHTML = function (elm, html) {\n        $$(elm).each(function () {\n          try {\n            if ('outerHTML' in this) {\n              this.outerHTML = html;\n              return;\n            }\n          } catch (ex) {\n          }\n          remove(DomQuery(this).html(html), true);\n        });\n      };\n      var insertAfter = function (node, reference) {\n        var referenceNode = get(reference);\n        return run(node, function (node) {\n          var parent$$1, nextSibling;\n          parent$$1 = referenceNode.parentNode;\n          nextSibling = referenceNode.nextSibling;\n          if (nextSibling) {\n            parent$$1.insertBefore(node, nextSibling);\n          } else {\n            parent$$1.appendChild(node);\n          }\n          return node;\n        });\n      };\n      var replace = function (newElm, oldElm, keepChildren) {\n        return run(oldElm, function (oldElm) {\n          if (Tools.is(oldElm, 'array')) {\n            newElm = newElm.cloneNode(true);\n          }\n          if (keepChildren) {\n            each$5(grep$1(oldElm.childNodes), function (node) {\n              newElm.appendChild(node);\n            });\n          }\n          return oldElm.parentNode.replaceChild(newElm, oldElm);\n        });\n      };\n      var rename = function (elm, name$$1) {\n        var newElm;\n        if (elm.nodeName !== name$$1.toUpperCase()) {\n          newElm = create(name$$1);\n          each$5(getAttribs(elm), function (attrNode) {\n            setAttrib(newElm, attrNode.nodeName, getAttrib(elm, attrNode.nodeName));\n          });\n          replace(newElm, elm, true);\n        }\n        return newElm || elm;\n      };\n      var findCommonAncestor = function (a, b) {\n        var ps = a, pe;\n        while (ps) {\n          pe = b;\n          while (pe && ps !== pe) {\n            pe = pe.parentNode;\n          }\n          if (ps === pe) {\n            break;\n          }\n          ps = ps.parentNode;\n        }\n        if (!ps && a.ownerDocument) {\n          return a.ownerDocument.documentElement;\n        }\n        return ps;\n      };\n      var toHex = function (rgbVal) {\n        return styles.toHex(Tools.trim(rgbVal));\n      };\n      var isEmpty = function (node, elements) {\n        var i, attributes, type, whitespace, walker, name$$1, brCount = 0;\n        node = node.firstChild;\n        if (node) {\n          walker = new TreeWalker(node, node.parentNode);\n          elements = elements || (schema ? schema.getNonEmptyElements() : null);\n          whitespace = schema ? schema.getWhiteSpaceElements() : {};\n          do {\n            type = node.nodeType;\n            if (NodeType.isElement(node)) {\n              var bogusVal = node.getAttribute('data-mce-bogus');\n              if (bogusVal) {\n                node = walker.next(bogusVal === 'all');\n                continue;\n              }\n              name$$1 = node.nodeName.toLowerCase();\n              if (elements && elements[name$$1]) {\n                if (name$$1 === 'br') {\n                  brCount++;\n                  node = walker.next();\n                  continue;\n                }\n                return false;\n              }\n              attributes = getAttribs(node);\n              i = attributes.length;\n              while (i--) {\n                name$$1 = attributes[i].nodeName;\n                if (name$$1 === 'name' || name$$1 === 'data-mce-bookmark') {\n                  return false;\n                }\n              }\n            }\n            if (type === 8) {\n              return false;\n            }\n            if (type === 3 && !whiteSpaceRegExp$2.test(node.nodeValue)) {\n              return false;\n            }\n            if (type === 3 && node.parentNode && whitespace[node.parentNode.nodeName] && whiteSpaceRegExp$2.test(node.nodeValue)) {\n              return false;\n            }\n            node = walker.next();\n          } while (node);\n        }\n        return brCount <= 1;\n      };\n      var createRng = function () {\n        return doc.createRange();\n      };\n      var split = function (parentElm, splitElm, replacementElm) {\n        var r = createRng(), bef, aft, pa;\n        if (parentElm && splitElm) {\n          r.setStart(parentElm.parentNode, findNodeIndex(parentElm));\n          r.setEnd(splitElm.parentNode, findNodeIndex(splitElm));\n          bef = r.extractContents();\n          r = createRng();\n          r.setStart(splitElm.parentNode, findNodeIndex(splitElm) + 1);\n          r.setEnd(parentElm.parentNode, findNodeIndex(parentElm) + 1);\n          aft = r.extractContents();\n          pa = parentElm.parentNode;\n          pa.insertBefore(TrimNode.trimNode(self$$1, bef), parentElm);\n          if (replacementElm) {\n            pa.insertBefore(replacementElm, parentElm);\n          } else {\n            pa.insertBefore(splitElm, parentElm);\n          }\n          pa.insertBefore(TrimNode.trimNode(self$$1, aft), parentElm);\n          remove(parentElm);\n          return replacementElm || splitElm;\n        }\n      };\n      var bind = function (target, name$$1, func, scope) {\n        if (Tools.isArray(target)) {\n          var i = target.length;\n          while (i--) {\n            target[i] = bind(target[i], name$$1, func, scope);\n          }\n          return target;\n        }\n        if (settings.collect && (target === doc || target === win)) {\n          boundEvents.push([\n            target,\n            name$$1,\n            func,\n            scope\n          ]);\n        }\n        return events.bind(target, name$$1, func, scope || self$$1);\n      };\n      var unbind = function (target, name$$1, func) {\n        var i;\n        if (Tools.isArray(target)) {\n          i = target.length;\n          while (i--) {\n            target[i] = unbind(target[i], name$$1, func);\n          }\n          return target;\n        }\n        if (boundEvents && (target === doc || target === win)) {\n          i = boundEvents.length;\n          while (i--) {\n            var item = boundEvents[i];\n            if (target === item[0] && (!name$$1 || name$$1 === item[1]) && (!func || func === item[2])) {\n              events.unbind(item[0], item[1], item[2]);\n            }\n          }\n        }\n        return events.unbind(target, name$$1, func);\n      };\n      var fire = function (target, name$$1, evt) {\n        return events.fire(target, name$$1, evt);\n      };\n      var getContentEditable = function (node) {\n        if (node && NodeType.isElement(node)) {\n          var contentEditable = node.getAttribute('data-mce-contenteditable');\n          if (contentEditable && contentEditable !== 'inherit') {\n            return contentEditable;\n          }\n          return node.contentEditable !== 'inherit' ? node.contentEditable : null;\n        } else {\n          return null;\n        }\n      };\n      var getContentEditableParent = function (node) {\n        var root = getRoot();\n        var state = null;\n        for (; node && node !== root; node = node.parentNode) {\n          state = getContentEditable(node);\n          if (state !== null) {\n            break;\n          }\n        }\n        return state;\n      };\n      var destroy = function () {\n        if (boundEvents) {\n          var i = boundEvents.length;\n          while (i--) {\n            var item = boundEvents[i];\n            events.unbind(item[0], item[1], item[2]);\n          }\n        }\n        if (Sizzle.setDocument) {\n          Sizzle.setDocument();\n        }\n      };\n      var isChildOf = function (node, parent$$1) {\n        while (node) {\n          if (parent$$1 === node) {\n            return true;\n          }\n          node = node.parentNode;\n        }\n        return false;\n      };\n      var dumpRng = function (r) {\n        return 'startContainer: ' + r.startContainer.nodeName + ', startOffset: ' + r.startOffset + ', endContainer: ' + r.endContainer.nodeName + ', endOffset: ' + r.endOffset;\n      };\n      var self$$1 = {\n        doc: doc,\n        settings: settings,\n        win: win,\n        files: files,\n        stdMode: stdMode,\n        boxModel: boxModel,\n        styleSheetLoader: styleSheetLoader,\n        boundEvents: boundEvents,\n        styles: styles,\n        schema: schema,\n        events: events,\n        isBlock: isBlock,\n        $: $,\n        $$: $$,\n        root: null,\n        clone: clone,\n        getRoot: getRoot,\n        getViewPort: getViewPort,\n        getRect: getRect,\n        getSize: getSize,\n        getParent: getParent,\n        getParents: getParents,\n        get: get,\n        getNext: getNext,\n        getPrev: getPrev,\n        select: select,\n        is: is,\n        add: add,\n        create: create,\n        createHTML: createHTML,\n        createFragment: createFragment,\n        remove: remove,\n        setStyle: setStyle,\n        getStyle: getStyle,\n        setStyles: setStyles,\n        removeAllAttribs: removeAllAttribs,\n        setAttrib: setAttrib,\n        setAttribs: setAttribs,\n        getAttrib: getAttrib,\n        getPos: getPos,\n        parseStyle: parseStyle,\n        serializeStyle: serializeStyle,\n        addStyle: addStyle,\n        loadCSS: loadCSS,\n        addClass: addClass,\n        removeClass: removeClass,\n        hasClass: hasClass,\n        toggleClass: toggleClass,\n        show: show,\n        hide: hide,\n        isHidden: isHidden,\n        uniqueId: uniqueId,\n        setHTML: setHTML,\n        getOuterHTML: getOuterHTML,\n        setOuterHTML: setOuterHTML,\n        decode: decode,\n        encode: encode,\n        insertAfter: insertAfter,\n        replace: replace,\n        rename: rename,\n        findCommonAncestor: findCommonAncestor,\n        toHex: toHex,\n        run: run,\n        getAttribs: getAttribs,\n        isEmpty: isEmpty,\n        createRng: createRng,\n        nodeIndex: findNodeIndex,\n        split: split,\n        bind: bind,\n        unbind: unbind,\n        fire: fire,\n        getContentEditable: getContentEditable,\n        getContentEditableParent: getContentEditableParent,\n        destroy: destroy,\n        isChildOf: isChildOf,\n        dumpRng: dumpRng\n      };\n      attrHooks = setupAttrHooks(styles, settings, function () {\n        return self$$1;\n      });\n      return self$$1;\n    }\n    (function (DOMUtils) {\n      DOMUtils.DOM = DOMUtils(document);\n      DOMUtils.nodeIndex = findNodeIndex;\n    }(DOMUtils || (DOMUtils = {})));\n    var DOMUtils$1 = DOMUtils;\n\n    var DOM = DOMUtils$1.DOM;\n    var each$6 = Tools.each, grep$2 = Tools.grep;\n    var isFunction$1 = function (f) {\n      return typeof f === 'function';\n    };\n    var ScriptLoader = function () {\n      var QUEUED = 0;\n      var LOADING = 1;\n      var LOADED = 2;\n      var FAILED = 3;\n      var states = {};\n      var queue = [];\n      var scriptLoadedCallbacks = {};\n      var queueLoadedCallbacks = [];\n      var loading = 0;\n      var loadScript = function (url, success, failure) {\n        var dom = DOM;\n        var elm, id;\n        var done = function () {\n          dom.remove(id);\n          if (elm) {\n            elm.onreadystatechange = elm.onload = elm = null;\n          }\n          success();\n        };\n        var error = function () {\n          if (isFunction$1(failure)) {\n            failure();\n          } else {\n            if (typeof console !== 'undefined' && console.log) {\n              console.log('Failed to load script: ' + url);\n            }\n          }\n        };\n        id = dom.uniqueId();\n        elm = document.createElement('script');\n        elm.id = id;\n        elm.type = 'text/javascript';\n        elm.src = Tools._addCacheSuffix(url);\n        elm.onload = done;\n        elm.onerror = error;\n        (document.getElementsByTagName('head')[0] || document.body).appendChild(elm);\n      };\n      this.isDone = function (url) {\n        return states[url] === LOADED;\n      };\n      this.markDone = function (url) {\n        states[url] = LOADED;\n      };\n      this.add = this.load = function (url, success, scope, failure) {\n        var state = states[url];\n        if (state === undefined) {\n          queue.push(url);\n          states[url] = QUEUED;\n        }\n        if (success) {\n          if (!scriptLoadedCallbacks[url]) {\n            scriptLoadedCallbacks[url] = [];\n          }\n          scriptLoadedCallbacks[url].push({\n            success: success,\n            failure: failure,\n            scope: scope || this\n          });\n        }\n      };\n      this.remove = function (url) {\n        delete states[url];\n        delete scriptLoadedCallbacks[url];\n      };\n      this.loadQueue = function (success, scope, failure) {\n        this.loadScripts(queue, success, scope, failure);\n      };\n      this.loadScripts = function (scripts, success, scope, failure) {\n        var loadScripts;\n        var failures = [];\n        var execCallbacks = function (name$$1, url) {\n          each$6(scriptLoadedCallbacks[url], function (callback) {\n            if (isFunction$1(callback[name$$1])) {\n              callback[name$$1].call(callback.scope);\n            }\n          });\n          scriptLoadedCallbacks[url] = undefined;\n        };\n        queueLoadedCallbacks.push({\n          success: success,\n          failure: failure,\n          scope: scope || this\n        });\n        loadScripts = function () {\n          var loadingScripts = grep$2(scripts);\n          scripts.length = 0;\n          each$6(loadingScripts, function (url) {\n            if (states[url] === LOADED) {\n              execCallbacks('success', url);\n              return;\n            }\n            if (states[url] === FAILED) {\n              execCallbacks('failure', url);\n              return;\n            }\n            if (states[url] !== LOADING) {\n              states[url] = LOADING;\n              loading++;\n              loadScript(url, function () {\n                states[url] = LOADED;\n                loading--;\n                execCallbacks('success', url);\n                loadScripts();\n              }, function () {\n                states[url] = FAILED;\n                loading--;\n                failures.push(url);\n                execCallbacks('failure', url);\n                loadScripts();\n              });\n            }\n          });\n          if (!loading) {\n            var notifyCallbacks = queueLoadedCallbacks.slice(0);\n            queueLoadedCallbacks.length = 0;\n            each$6(notifyCallbacks, function (callback) {\n              if (failures.length === 0) {\n                if (isFunction$1(callback.success)) {\n                  callback.success.call(callback.scope);\n                }\n              } else {\n                if (isFunction$1(callback.failure)) {\n                  callback.failure.call(callback.scope, failures);\n                }\n              }\n            });\n          }\n        };\n        loadScripts();\n      };\n    };\n    ScriptLoader.ScriptLoader = new ScriptLoader();\n\n    var each$7 = Tools.each;\n    function AddOnManager() {\n      var _this = this;\n      var items = [];\n      var urls = {};\n      var lookup = {};\n      var _listeners = [];\n      var get = function (name) {\n        if (lookup[name]) {\n          return lookup[name].instance;\n        }\n        return undefined;\n      };\n      var dependencies = function (name) {\n        var result;\n        if (lookup[name]) {\n          result = lookup[name].dependencies;\n        }\n        return result || [];\n      };\n      var requireLangPack = function (name, languages) {\n        var language = AddOnManager.language;\n        if (language && AddOnManager.languageLoad !== false) {\n          if (languages) {\n            languages = ',' + languages + ',';\n            if (languages.indexOf(',' + language.substr(0, 2) + ',') !== -1) {\n              language = language.substr(0, 2);\n            } else if (languages.indexOf(',' + language + ',') === -1) {\n              return;\n            }\n          }\n          ScriptLoader.ScriptLoader.add(urls[name] + '/langs/' + language + '.js');\n        }\n      };\n      var add = function (id, addOn, dependencies) {\n        items.push(addOn);\n        lookup[id] = {\n          instance: addOn,\n          dependencies: dependencies\n        };\n        var result = partition(_listeners, function (listener) {\n          return listener.name === id;\n        });\n        _listeners = result.fail;\n        each$7(result.pass, function (listener) {\n          listener.callback();\n        });\n        return addOn;\n      };\n      var remove = function (name) {\n        delete urls[name];\n        delete lookup[name];\n      };\n      var createUrl = function (baseUrl, dep) {\n        if (typeof dep === 'object') {\n          return dep;\n        }\n        return typeof baseUrl === 'string' ? {\n          prefix: '',\n          resource: dep,\n          suffix: ''\n        } : {\n          prefix: baseUrl.prefix,\n          resource: dep,\n          suffix: baseUrl.suffix\n        };\n      };\n      var addComponents = function (pluginName, scripts) {\n        var pluginUrl = _this.urls[pluginName];\n        each$7(scripts, function (script) {\n          ScriptLoader.ScriptLoader.add(pluginUrl + '/' + script);\n        });\n      };\n      var loadDependencies = function (name, addOnUrl, success, scope) {\n        var deps = dependencies(name);\n        each$7(deps, function (dep) {\n          var newUrl = createUrl(addOnUrl, dep);\n          load(newUrl.resource, newUrl, undefined, undefined);\n        });\n        if (success) {\n          if (scope) {\n            success.call(scope);\n          } else {\n            success.call(ScriptLoader);\n          }\n        }\n      };\n      var load = function (name, addOnUrl, success, scope, failure) {\n        if (urls[name]) {\n          return;\n        }\n        var urlString = typeof addOnUrl === 'string' ? addOnUrl : addOnUrl.prefix + addOnUrl.resource + addOnUrl.suffix;\n        if (urlString.indexOf('/') !== 0 && urlString.indexOf('://') === -1) {\n          urlString = AddOnManager.baseURL + '/' + urlString;\n        }\n        urls[name] = urlString.substring(0, urlString.lastIndexOf('/'));\n        if (lookup[name]) {\n          loadDependencies(name, addOnUrl, success, scope);\n        } else {\n          ScriptLoader.ScriptLoader.add(urlString, function () {\n            return loadDependencies(name, addOnUrl, success, scope);\n          }, scope, failure);\n        }\n      };\n      var waitFor = function (name, callback) {\n        if (lookup.hasOwnProperty(name)) {\n          callback();\n        } else {\n          _listeners.push({\n            name: name,\n            callback: callback\n          });\n        }\n      };\n      return {\n        items: items,\n        urls: urls,\n        lookup: lookup,\n        _listeners: _listeners,\n        get: get,\n        dependencies: dependencies,\n        requireLangPack: requireLangPack,\n        add: add,\n        remove: remove,\n        createUrl: createUrl,\n        addComponents: addComponents,\n        load: load,\n        waitFor: waitFor\n      };\n    }\n    (function (AddOnManager) {\n      AddOnManager.PluginManager = AddOnManager();\n      AddOnManager.ThemeManager = AddOnManager();\n    }(AddOnManager || (AddOnManager = {})));\n\n    var before = function (marker, element) {\n      var parent$$1 = parent(marker);\n      parent$$1.each(function (v) {\n        v.dom().insertBefore(element.dom(), marker.dom());\n      });\n    };\n    var after = function (marker, element) {\n      var sibling = nextSibling(marker);\n      sibling.fold(function () {\n        var parent$$1 = parent(marker);\n        parent$$1.each(function (v) {\n          append(v, element);\n        });\n      }, function (v) {\n        before(v, element);\n      });\n    };\n    var prepend = function (parent$$1, element) {\n      var firstChild$$1 = firstChild(parent$$1);\n      firstChild$$1.fold(function () {\n        append(parent$$1, element);\n      }, function (v) {\n        parent$$1.dom().insertBefore(element.dom(), v.dom());\n      });\n    };\n    var append = function (parent$$1, element) {\n      parent$$1.dom().appendChild(element.dom());\n    };\n    var wrap$1 = function (element, wrapper) {\n      before(element, wrapper);\n      append(wrapper, element);\n    };\n\n    var before$1 = function (marker, elements) {\n      each(elements, function (x) {\n        before(marker, x);\n      });\n    };\n    var append$1 = function (parent, elements) {\n      each(elements, function (x) {\n        append(parent, x);\n      });\n    };\n\n    var empty = function (element) {\n      element.dom().textContent = '';\n      each(children(element), function (rogue) {\n        remove$2(rogue);\n      });\n    };\n    var remove$2 = function (element) {\n      var dom = element.dom();\n      if (dom.parentNode !== null)\n        dom.parentNode.removeChild(dom);\n    };\n    var unwrap = function (wrapper) {\n      var children$$1 = children(wrapper);\n      if (children$$1.length > 0)\n        before$1(wrapper, children$$1);\n      remove$2(wrapper);\n    };\n\n    var first$1 = function (fn, rate) {\n      var timer = null;\n      var cancel = function () {\n        if (timer !== null) {\n          clearTimeout(timer);\n          timer = null;\n        }\n      };\n      var throttle = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          args[_i] = arguments[_i];\n        }\n        if (timer === null) {\n          timer = setTimeout(function () {\n            fn.apply(null, args);\n            timer = null;\n          }, rate);\n        }\n      };\n      return {\n        cancel: cancel,\n        throttle: throttle\n      };\n    };\n    var last$3 = function (fn, rate) {\n      var timer = null;\n      var cancel = function () {\n        if (timer !== null) {\n          clearTimeout(timer);\n          timer = null;\n        }\n      };\n      var throttle = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          args[_i] = arguments[_i];\n        }\n        if (timer !== null)\n          clearTimeout(timer);\n        timer = setTimeout(function () {\n          fn.apply(null, args);\n          timer = null;\n        }, rate);\n      };\n      return {\n        cancel: cancel,\n        throttle: throttle\n      };\n    };\n\n    var Cell = function (initial) {\n      var value = initial;\n      var get = function () {\n        return value;\n      };\n      var set = function (v) {\n        value = v;\n      };\n      var clone = function () {\n        return Cell(get());\n      };\n      return {\n        get: get,\n        set: set,\n        clone: clone\n      };\n    };\n\n    var read = function (element, attr) {\n      var value = get$1(element, attr);\n      return value === undefined || value === '' ? [] : value.split(' ');\n    };\n    var add = function (element, attr, id) {\n      var old = read(element, attr);\n      var nu = old.concat([id]);\n      set(element, attr, nu.join(' '));\n      return true;\n    };\n    var remove$3 = function (element, attr, id) {\n      var nu = filter(read(element, attr), function (v) {\n        return v !== id;\n      });\n      if (nu.length > 0)\n        set(element, attr, nu.join(' '));\n      else\n        remove(element, attr);\n      return false;\n    };\n\n    var supports = function (element) {\n      return element.dom().classList !== undefined;\n    };\n    var get$3 = function (element) {\n      return read(element, 'class');\n    };\n    var add$1 = function (element, clazz) {\n      return add(element, 'class', clazz);\n    };\n    var remove$4 = function (element, clazz) {\n      return remove$3(element, 'class', clazz);\n    };\n\n    var add$2 = function (element, clazz) {\n      if (supports(element))\n        element.dom().classList.add(clazz);\n      else\n        add$1(element, clazz);\n    };\n    var cleanClass = function (element) {\n      var classList = supports(element) ? element.dom().classList : get$3(element);\n      if (classList.length === 0) {\n        remove(element, 'class');\n      }\n    };\n    var remove$5 = function (element, clazz) {\n      if (supports(element)) {\n        var classList = element.dom().classList;\n        classList.remove(clazz);\n      } else\n        remove$4(element, clazz);\n      cleanClass(element);\n    };\n    var has$2 = function (element, clazz) {\n      return supports(element) && element.dom().classList.contains(clazz);\n    };\n\n    var descendants = function (scope, predicate) {\n      var result = [];\n      each(children(scope), function (x) {\n        if (predicate(x)) {\n          result = result.concat([x]);\n        }\n        result = result.concat(descendants(x, predicate));\n      });\n      return result;\n    };\n\n    var descendants$1 = function (scope, selector) {\n      return all(selector, scope);\n    };\n\n    function ClosestOrAncestor (is, ancestor, scope, a, isRoot) {\n      return is(scope, a) ? Option.some(scope) : isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot);\n    }\n\n    var ancestor = function (scope, predicate, isRoot) {\n      var element = scope.dom();\n      var stop = isFunction(isRoot) ? isRoot : constant(false);\n      while (element.parentNode) {\n        element = element.parentNode;\n        var el = Element$$1.fromDom(element);\n        if (predicate(el))\n          return Option.some(el);\n        else if (stop(el))\n          break;\n      }\n      return Option.none();\n    };\n    var closest = function (scope, predicate, isRoot) {\n      var is = function (scope) {\n        return predicate(scope);\n      };\n      return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot);\n    };\n\n    var ancestor$1 = function (scope, selector, isRoot) {\n      return ancestor(scope, function (e) {\n        return is$1(e, selector);\n      }, isRoot);\n    };\n    var descendant$1 = function (scope, selector) {\n      return one(selector, scope);\n    };\n    var closest$1 = function (scope, selector, isRoot) {\n      return ClosestOrAncestor(is$1, ancestor$1, scope, selector, isRoot);\n    };\n\n    var annotation = constant('mce-annotation');\n    var dataAnnotation = constant('data-mce-annotation');\n    var dataAnnotationId = constant('data-mce-annotation-uid');\n\n    var identify = function (editor, annotationName) {\n      var rng = editor.selection.getRng();\n      var start = Element$$1.fromDom(rng.startContainer);\n      var root = Element$$1.fromDom(editor.getBody());\n      var selector = annotationName.fold(function () {\n        return '.' + annotation();\n      }, function (an) {\n        return '[' + dataAnnotation() + '=\"' + an + '\"]';\n      });\n      var newStart = child(start, rng.startOffset).getOr(start);\n      var closest = closest$1(newStart, selector, function (n) {\n        return eq(n, root);\n      });\n      var getAttr = function (c, property) {\n        if (has$1(c, property)) {\n          return Option.some(get$1(c, property));\n        } else {\n          return Option.none();\n        }\n      };\n      return closest.bind(function (c) {\n        return getAttr(c, '' + dataAnnotationId()).bind(function (uid) {\n          return getAttr(c, '' + dataAnnotation()).map(function (name$$1) {\n            var elements = findMarkers(editor, uid);\n            return {\n              uid: uid,\n              name: name$$1,\n              elements: elements\n            };\n          });\n        });\n      });\n    };\n    var isAnnotation = function (elem) {\n      return isElement(elem) && has$2(elem, annotation());\n    };\n    var findMarkers = function (editor, uid) {\n      var body = Element$$1.fromDom(editor.getBody());\n      return descendants$1(body, '[' + dataAnnotationId() + '=\"' + uid + '\"]');\n    };\n    var findAll = function (editor, name$$1) {\n      var body = Element$$1.fromDom(editor.getBody());\n      var markers = descendants$1(body, '[' + dataAnnotation() + '=\"' + name$$1 + '\"]');\n      var directory = {};\n      each(markers, function (m) {\n        var uid = get$1(m, dataAnnotationId());\n        var nodesAlready = directory.hasOwnProperty(uid) ? directory[uid] : [];\n        directory[uid] = nodesAlready.concat([m]);\n      });\n      return directory;\n    };\n\n    var setup = function (editor, registry) {\n      var changeCallbacks = Cell({});\n      var initData = function () {\n        return {\n          listeners: [],\n          previous: Cell(Option.none())\n        };\n      };\n      var withCallbacks = function (name, f) {\n        updateCallbacks(name, function (data) {\n          f(data);\n          return data;\n        });\n      };\n      var updateCallbacks = function (name, f) {\n        var callbackMap = changeCallbacks.get();\n        var data = callbackMap.hasOwnProperty(name) ? callbackMap[name] : initData();\n        var outputData = f(data);\n        callbackMap[name] = outputData;\n        changeCallbacks.set(callbackMap);\n      };\n      var fireCallbacks = function (name, uid, elements) {\n        withCallbacks(name, function (data) {\n          each(data.listeners, function (f) {\n            return f(true, name, {\n              uid: uid,\n              nodes: map(elements, function (elem) {\n                return elem.dom();\n              })\n            });\n          });\n        });\n      };\n      var fireNoAnnotation = function (name) {\n        withCallbacks(name, function (data) {\n          each(data.listeners, function (f) {\n            return f(false, name);\n          });\n        });\n      };\n      var onNodeChange = last$3(function () {\n        var callbackMap = changeCallbacks.get();\n        var annotations = sort(keys(callbackMap));\n        each(annotations, function (name) {\n          updateCallbacks(name, function (data) {\n            var prev = data.previous.get();\n            identify(editor, Option.some(name)).fold(function () {\n              if (prev.isSome()) {\n                fireNoAnnotation(name);\n                data.previous.set(Option.none());\n              }\n            }, function (_a) {\n              var uid = _a.uid, name = _a.name, elements = _a.elements;\n              if (!prev.is(uid)) {\n                fireCallbacks(name, uid, elements);\n                data.previous.set(Option.some(uid));\n              }\n            });\n            return {\n              previous: data.previous,\n              listeners: data.listeners\n            };\n          });\n        });\n      }, 30);\n      editor.on('remove', function () {\n        onNodeChange.cancel();\n      });\n      editor.on('nodeChange', function () {\n        onNodeChange.throttle();\n      });\n      var addListener = function (name, f) {\n        updateCallbacks(name, function (data) {\n          return {\n            previous: data.previous,\n            listeners: data.listeners.concat([f])\n          };\n        });\n      };\n      return { addListener: addListener };\n    };\n\n    var setup$1 = function (editor, registry) {\n      var identifyParserNode = function (span) {\n        var optAnnotation = Option.from(span.attributes.map[dataAnnotation()]);\n        return optAnnotation.bind(registry.lookup);\n      };\n      editor.on('init', function () {\n        editor.serializer.addNodeFilter('span', function (spans) {\n          each(spans, function (span) {\n            identifyParserNode(span).each(function (settings) {\n              if (settings.persistent === false) {\n                span.unwrap();\n              }\n            });\n          });\n        });\n      });\n    };\n\n    var create$1 = function () {\n      var annotations = {};\n      var register = function (name, settings) {\n        annotations[name] = {\n          name: name,\n          settings: settings\n        };\n      };\n      var lookup = function (name) {\n        return annotations.hasOwnProperty(name) ? Option.from(annotations[name]).map(function (a) {\n          return a.settings;\n        }) : Option.none();\n      };\n      return {\n        register: register,\n        lookup: lookup\n      };\n    };\n\n    function __rest(s, e) {\n      var t = {};\n      for (var p in s)\n        if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n          t[p] = s[p];\n      if (s != null && typeof Object.getOwnPropertySymbols === 'function')\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++)\n          if (e.indexOf(p[i]) < 0)\n            t[p[i]] = s[p[i]];\n      return t;\n    }\n\n    var unique = 0;\n    var generate = function (prefix) {\n      var date = new Date();\n      var time = date.getTime();\n      var random = Math.floor(Math.random() * 1000000000);\n      unique++;\n      return prefix + '_' + random + unique + String(time);\n    };\n\n    var add$3 = function (element, classes) {\n      each(classes, function (x) {\n        add$2(element, x);\n      });\n    };\n\n    var clone$1 = function (original, deep) {\n      return Element$$1.fromDom(original.dom().cloneNode(deep));\n    };\n    var shallow = function (original) {\n      return clone$1(original, false);\n    };\n    var deep = function (original) {\n      return clone$1(original, true);\n    };\n\n    var fromHtml$1 = function (html, scope) {\n      var doc = scope || document;\n      var div = doc.createElement('div');\n      div.innerHTML = html;\n      return children(Element$$1.fromDom(div));\n    };\n\n    var get$5 = function (element) {\n      return element.dom().innerHTML;\n    };\n    var set$2 = function (element, content) {\n      var owner$$1 = owner(element);\n      var docDom = owner$$1.dom();\n      var fragment = Element$$1.fromDom(docDom.createDocumentFragment());\n      var contentElements = fromHtml$1(content, docDom);\n      append$1(fragment, contentElements);\n      empty(element);\n      append(element, fragment);\n    };\n\n    var ZWSP = '\\uFEFF';\n    var isZwsp = function (chr) {\n      return chr === ZWSP;\n    };\n    var trim$3 = function (text) {\n      return text.replace(new RegExp(ZWSP, 'g'), '');\n    };\n    var Zwsp = {\n      isZwsp: isZwsp,\n      ZWSP: ZWSP,\n      trim: trim$3\n    };\n\n    var isElement$2 = NodeType.isElement;\n    var isText$2 = NodeType.isText;\n    var isCaretContainerBlock = function (node) {\n      if (isText$2(node)) {\n        node = node.parentNode;\n      }\n      return isElement$2(node) && node.hasAttribute('data-mce-caret');\n    };\n    var isCaretContainerInline = function (node) {\n      return isText$2(node) && Zwsp.isZwsp(node.data);\n    };\n    var isCaretContainer = function (node) {\n      return isCaretContainerBlock(node) || isCaretContainerInline(node);\n    };\n    var hasContent = function (node) {\n      return node.firstChild !== node.lastChild || !NodeType.isBr(node.firstChild);\n    };\n    var insertInline = function (node, before) {\n      var doc, sibling, textNode, parentNode;\n      doc = node.ownerDocument;\n      textNode = doc.createTextNode(Zwsp.ZWSP);\n      parentNode = node.parentNode;\n      if (!before) {\n        sibling = node.nextSibling;\n        if (isText$2(sibling)) {\n          if (isCaretContainer(sibling)) {\n            return sibling;\n          }\n          if (startsWithCaretContainer(sibling)) {\n            sibling.splitText(1);\n            return sibling;\n          }\n        }\n        if (node.nextSibling) {\n          parentNode.insertBefore(textNode, node.nextSibling);\n        } else {\n          parentNode.appendChild(textNode);\n        }\n      } else {\n        sibling = node.previousSibling;\n        if (isText$2(sibling)) {\n          if (isCaretContainer(sibling)) {\n            return sibling;\n          }\n          if (endsWithCaretContainer(sibling)) {\n            return sibling.splitText(sibling.data.length - 1);\n          }\n        }\n        parentNode.insertBefore(textNode, node);\n      }\n      return textNode;\n    };\n    var isBeforeInline = function (pos) {\n      var container = pos.container();\n      return pos && NodeType.isText(container) && container.data.charAt(pos.offset()) === Zwsp.ZWSP;\n    };\n    var isAfterInline = function (pos) {\n      var container = pos.container();\n      return pos && NodeType.isText(container) && container.data.charAt(pos.offset() - 1) === Zwsp.ZWSP;\n    };\n    var createBogusBr = function () {\n      var br = document.createElement('br');\n      br.setAttribute('data-mce-bogus', '1');\n      return br;\n    };\n    var insertBlock = function (blockName, node, before) {\n      var doc, blockNode, parentNode;\n      doc = node.ownerDocument;\n      blockNode = doc.createElement(blockName);\n      blockNode.setAttribute('data-mce-caret', before ? 'before' : 'after');\n      blockNode.setAttribute('data-mce-bogus', 'all');\n      blockNode.appendChild(createBogusBr());\n      parentNode = node.parentNode;\n      if (!before) {\n        if (node.nextSibling) {\n          parentNode.insertBefore(blockNode, node.nextSibling);\n        } else {\n          parentNode.appendChild(blockNode);\n        }\n      } else {\n        parentNode.insertBefore(blockNode, node);\n      }\n      return blockNode;\n    };\n    var startsWithCaretContainer = function (node) {\n      return isText$2(node) && node.data[0] === Zwsp.ZWSP;\n    };\n    var endsWithCaretContainer = function (node) {\n      return isText$2(node) && node.data[node.data.length - 1] === Zwsp.ZWSP;\n    };\n    var trimBogusBr = function (elm) {\n      var brs = elm.getElementsByTagName('br');\n      var lastBr = brs[brs.length - 1];\n      if (NodeType.isBogus(lastBr)) {\n        lastBr.parentNode.removeChild(lastBr);\n      }\n    };\n    var showCaretContainerBlock = function (caretContainer) {\n      if (caretContainer && caretContainer.hasAttribute('data-mce-caret')) {\n        trimBogusBr(caretContainer);\n        caretContainer.removeAttribute('data-mce-caret');\n        caretContainer.removeAttribute('data-mce-bogus');\n        caretContainer.removeAttribute('style');\n        caretContainer.removeAttribute('_moz_abspos');\n        return caretContainer;\n      }\n      return null;\n    };\n    var isRangeInCaretContainerBlock = function (range) {\n      return isCaretContainerBlock(range.startContainer);\n    };\n\n    var isContentEditableTrue$1 = NodeType.isContentEditableTrue;\n    var isContentEditableFalse$1 = NodeType.isContentEditableFalse;\n    var isBr$2 = NodeType.isBr;\n    var isText$3 = NodeType.isText;\n    var isInvalidTextElement = NodeType.matchNodeNames('script style textarea');\n    var isAtomicInline = NodeType.matchNodeNames('img input textarea hr iframe video audio object');\n    var isTable$1 = NodeType.matchNodeNames('table');\n    var isCaretContainer$1 = isCaretContainer;\n    var isCaretCandidate = function (node) {\n      if (isCaretContainer$1(node)) {\n        return false;\n      }\n      if (isText$3(node)) {\n        if (isInvalidTextElement(node.parentNode)) {\n          return false;\n        }\n        return true;\n      }\n      return isAtomicInline(node) || isBr$2(node) || isTable$1(node) || isNonUiContentEditableFalse(node);\n    };\n    var isUnselectable = function (node) {\n      return NodeType.isElement(node) && node.getAttribute('unselectable') === 'true';\n    };\n    var isNonUiContentEditableFalse = function (node) {\n      return isUnselectable(node) === false && isContentEditableFalse$1(node);\n    };\n    var isInEditable = function (node, root) {\n      for (node = node.parentNode; node && node !== root; node = node.parentNode) {\n        if (isNonUiContentEditableFalse(node)) {\n          return false;\n        }\n        if (isContentEditableTrue$1(node)) {\n          return true;\n        }\n      }\n      return true;\n    };\n    var isAtomicContentEditableFalse = function (node) {\n      if (!isNonUiContentEditableFalse(node)) {\n        return false;\n      }\n      return foldl(from$1(node.getElementsByTagName('*')), function (result, elm) {\n        return result || isContentEditableTrue$1(elm);\n      }, false) !== true;\n    };\n    var isAtomic = function (node) {\n      return isAtomicInline(node) || isAtomicContentEditableFalse(node);\n    };\n    var isEditableCaretCandidate = function (node, root) {\n      return isCaretCandidate(node) && isInEditable(node, root);\n    };\n\n    var round = Math.round;\n    var clone$2 = function (rect) {\n      if (!rect) {\n        return {\n          left: 0,\n          top: 0,\n          bottom: 0,\n          right: 0,\n          width: 0,\n          height: 0\n        };\n      }\n      return {\n        left: round(rect.left),\n        top: round(rect.top),\n        bottom: round(rect.bottom),\n        right: round(rect.right),\n        width: round(rect.width),\n        height: round(rect.height)\n      };\n    };\n    var collapse = function (rect, toStart) {\n      rect = clone$2(rect);\n      if (toStart) {\n        rect.right = rect.left;\n      } else {\n        rect.left = rect.left + rect.width;\n        rect.right = rect.left;\n      }\n      rect.width = 0;\n      return rect;\n    };\n    var isEqual = function (rect1, rect2) {\n      return rect1.left === rect2.left && rect1.top === rect2.top && rect1.bottom === rect2.bottom && rect1.right === rect2.right;\n    };\n    var isValidOverflow = function (overflowY, rect1, rect2) {\n      return overflowY >= 0 && overflowY <= Math.min(rect1.height, rect2.height) / 2;\n    };\n    var isAbove = function (rect1, rect2) {\n      if (rect1.bottom - rect1.height / 2 < rect2.top) {\n        return true;\n      }\n      if (rect1.top > rect2.bottom) {\n        return false;\n      }\n      return isValidOverflow(rect2.top - rect1.bottom, rect1, rect2);\n    };\n    var isBelow = function (rect1, rect2) {\n      if (rect1.top > rect2.bottom) {\n        return true;\n      }\n      if (rect1.bottom < rect2.top) {\n        return false;\n      }\n      return isValidOverflow(rect2.bottom - rect1.top, rect1, rect2);\n    };\n    var containsXY = function (rect, clientX, clientY) {\n      return clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom;\n    };\n    var overflowX = function (outer, inner) {\n      if (inner.left > outer.left && inner.right < outer.right) {\n        return 0;\n      } else {\n        return inner.left < outer.left ? inner.left - outer.left : inner.right - outer.right;\n      }\n    };\n    var overflowY = function (outer, inner) {\n      if (inner.top > outer.top && inner.bottom < outer.bottom) {\n        return 0;\n      } else {\n        return inner.top < outer.top ? inner.top - outer.top : inner.bottom - outer.bottom;\n      }\n    };\n    var getOverflow = function (outer, inner) {\n      return {\n        x: overflowX(outer, inner),\n        y: overflowY(outer, inner)\n      };\n    };\n\n    var getSelectedNode = function (range) {\n      var startContainer = range.startContainer, startOffset = range.startOffset;\n      if (startContainer.hasChildNodes() && range.endOffset === startOffset + 1) {\n        return startContainer.childNodes[startOffset];\n      }\n      return null;\n    };\n    var getNode = function (container, offset) {\n      if (container.nodeType === 1 && container.hasChildNodes()) {\n        if (offset >= container.childNodes.length) {\n          offset = container.childNodes.length - 1;\n        }\n        container = container.childNodes[offset];\n      }\n      return container;\n    };\n\n    var extendingChars = new RegExp('[\\u0300-\\u036f\\u0483-\\u0487\\u0488-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1-\\u05c2\\u05c4-\\u05c5\\u05c7\\u0610-\\u061a' + '\\u064b-\\u065f\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7-\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0' + '\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08E3-\\u0902\\u093a\\u093c' + '\\u0941-\\u0948\\u094d\\u0951-\\u0957\\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\\u0c00\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55-\\u0c56' + '\\u0c62-\\u0c63\\u0c81\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc-\\u0ccd\\u0cd5-\\u0cd6\\u0ce2-\\u0ce3\\u0d01\\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\\u0f8d-\\u0f97' + '\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039-\\u103a\\u103d-\\u103e\\u1058-\\u1059\\u105e-\\u1060\\u1071-\\u1074' + '\\u1082\\u1085-\\u1086\\u108d\\u109d\\u135d-\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752-\\u1753\\u1772-\\u1773\\u17b4-\\u17b5' + '\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927-\\u1928\\u1932\\u1939-\\u193b\\u1a17-\\u1a18' + '\\u1a1b\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1ab0-\\u1abd\\u1ABE\\u1b00-\\u1b03\\u1b34' + '\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80-\\u1b81\\u1ba2-\\u1ba5\\u1ba8-\\u1ba9\\u1bab-\\u1bad\\u1be6\\u1be8-\\u1be9' + '\\u1bed\\u1bef-\\u1bf1\\u1c2c-\\u1c33\\u1c36-\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1cf4\\u1cf8-\\u1cf9' + '\\u1dc0-\\u1df5\\u1dfc-\\u1dff\\u200c-\\u200d\\u20d0-\\u20dc\\u20DD-\\u20E0\\u20e1\\u20E2-\\u20E4\\u20e5-\\u20f0\\u2cef-\\u2cf1' + '\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302d\\u302e-\\u302f\\u3099-\\u309a\\ua66f\\uA670-\\uA672\\ua674-\\ua67d\\uA69E-\\ua69f\\ua6f0-\\ua6f1' + '\\ua802\\ua806\\ua80b\\ua825-\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc' + '\\ua9e5\\uaa29-\\uaa2e\\uaa31-\\uaa32\\uaa35-\\uaa36\\uaa43\\uaa4c\\uaa7c\\uaab0\\uaab2-\\uaab4\\uaab7-\\uaab8\\uaabe-\\uaabf\\uaac1' + '\\uaaec-\\uaaed\\uaaf6\\uabe5\\uabe8\\uabed\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\uFE2F\\uff9e-\\uff9f]');\n    var isExtendingChar = function (ch) {\n      return typeof ch === 'string' && ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n    };\n\n    var liftN = function (arr, f) {\n      var r = [];\n      for (var i = 0; i < arr.length; i++) {\n        var x = arr[i];\n        if (x.isSome()) {\n          r.push(x.getOrDie());\n        } else {\n          return Option.none();\n        }\n      }\n      return Option.some(f.apply(null, r));\n    };\n\n    var slice$3 = [].slice;\n    var or = function () {\n      var x = [];\n      for (var _i = 0; _i < arguments.length; _i++) {\n        x[_i] = arguments[_i];\n      }\n      var args = slice$3.call(arguments);\n      return function (x) {\n        for (var i = 0; i < args.length; i++) {\n          if (args[i](x)) {\n            return true;\n          }\n        }\n        return false;\n      };\n    };\n    var and = function () {\n      var x = [];\n      for (var _i = 0; _i < arguments.length; _i++) {\n        x[_i] = arguments[_i];\n      }\n      var args = slice$3.call(arguments);\n      return function (x) {\n        for (var i = 0; i < args.length; i++) {\n          if (!args[i](x)) {\n            return false;\n          }\n        }\n        return true;\n      };\n    };\n    var Predicate = {\n      and: and,\n      or: or\n    };\n\n    var isElement$3 = NodeType.isElement;\n    var isCaretCandidate$1 = isCaretCandidate;\n    var isBlock$1 = NodeType.matchStyleValues('display', 'block table');\n    var isFloated = NodeType.matchStyleValues('float', 'left right');\n    var isValidElementCaretCandidate = Predicate.and(isElement$3, isCaretCandidate$1, not(isFloated));\n    var isNotPre = not(NodeType.matchStyleValues('white-space', 'pre pre-line pre-wrap'));\n    var isText$4 = NodeType.isText;\n    var isBr$3 = NodeType.isBr;\n    var nodeIndex = DOMUtils$1.nodeIndex;\n    var resolveIndex = getNode;\n    var createRange = function (doc) {\n      return 'createRange' in doc ? doc.createRange() : DOMUtils$1.DOM.createRng();\n    };\n    var isWhiteSpace = function (chr) {\n      return chr && /[\\r\\n\\t ]/.test(chr);\n    };\n    var isRange = function (rng) {\n      return !!rng.setStart && !!rng.setEnd;\n    };\n    var isHiddenWhiteSpaceRange = function (range$$1) {\n      var container = range$$1.startContainer;\n      var offset = range$$1.startOffset;\n      var text;\n      if (isWhiteSpace(range$$1.toString()) && isNotPre(container.parentNode) && NodeType.isText(container)) {\n        text = container.data;\n        if (isWhiteSpace(text[offset - 1]) || isWhiteSpace(text[offset + 1])) {\n          return true;\n        }\n      }\n      return false;\n    };\n    var getBrClientRect = function (brNode) {\n      var doc = brNode.ownerDocument;\n      var rng = createRange(doc);\n      var nbsp = doc.createTextNode('\\xA0');\n      var parentNode = brNode.parentNode;\n      var clientRect;\n      parentNode.insertBefore(nbsp, brNode);\n      rng.setStart(nbsp, 0);\n      rng.setEnd(nbsp, 1);\n      clientRect = clone$2(rng.getBoundingClientRect());\n      parentNode.removeChild(nbsp);\n      return clientRect;\n    };\n    var getBoundingClientRectWebKitText = function (rng) {\n      var sc = rng.startContainer;\n      var ec = rng.endContainer;\n      var so = rng.startOffset;\n      var eo = rng.endOffset;\n      if (sc === ec && NodeType.isText(ec) && so === 0 && eo === 1) {\n        var newRng = rng.cloneRange();\n        newRng.setEndAfter(ec);\n        return getBoundingClientRect(newRng);\n      } else {\n        return null;\n      }\n    };\n    var isZeroRect = function (r) {\n      return r.left === 0 && r.right === 0 && r.top === 0 && r.bottom === 0;\n    };\n    var getBoundingClientRect = function (item) {\n      var clientRect, clientRects;\n      clientRects = item.getClientRects();\n      if (clientRects.length > 0) {\n        clientRect = clone$2(clientRects[0]);\n      } else {\n        clientRect = clone$2(item.getBoundingClientRect());\n      }\n      if (!isRange(item) && isBr$3(item) && isZeroRect(clientRect)) {\n        return getBrClientRect(item);\n      }\n      if (isZeroRect(clientRect) && isRange(item)) {\n        return getBoundingClientRectWebKitText(item);\n      }\n      return clientRect;\n    };\n    var collapseAndInflateWidth = function (clientRect, toStart) {\n      var newClientRect = collapse(clientRect, toStart);\n      newClientRect.width = 1;\n      newClientRect.right = newClientRect.left + 1;\n      return newClientRect;\n    };\n    var getCaretPositionClientRects = function (caretPosition) {\n      var clientRects = [];\n      var beforeNode, node;\n      var addUniqueAndValidRect = function (clientRect) {\n        if (clientRect.height === 0) {\n          return;\n        }\n        if (clientRects.length > 0) {\n          if (isEqual(clientRect, clientRects[clientRects.length - 1])) {\n            return;\n          }\n        }\n        clientRects.push(clientRect);\n      };\n      var addCharacterOffset = function (container, offset) {\n        var range$$1 = createRange(container.ownerDocument);\n        if (offset < container.data.length) {\n          if (isExtendingChar(container.data[offset])) {\n            return clientRects;\n          }\n          if (isExtendingChar(container.data[offset - 1])) {\n            range$$1.setStart(container, offset);\n            range$$1.setEnd(container, offset + 1);\n            if (!isHiddenWhiteSpaceRange(range$$1)) {\n              addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range$$1), false));\n              return clientRects;\n            }\n          }\n        }\n        if (offset > 0) {\n          range$$1.setStart(container, offset - 1);\n          range$$1.setEnd(container, offset);\n          if (!isHiddenWhiteSpaceRange(range$$1)) {\n            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range$$1), false));\n          }\n        }\n        if (offset < container.data.length) {\n          range$$1.setStart(container, offset);\n          range$$1.setEnd(container, offset + 1);\n          if (!isHiddenWhiteSpaceRange(range$$1)) {\n            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range$$1), true));\n          }\n        }\n      };\n      if (isText$4(caretPosition.container())) {\n        addCharacterOffset(caretPosition.container(), caretPosition.offset());\n        return clientRects;\n      }\n      if (isElement$3(caretPosition.container())) {\n        if (caretPosition.isAtEnd()) {\n          node = resolveIndex(caretPosition.container(), caretPosition.offset());\n          if (isText$4(node)) {\n            addCharacterOffset(node, node.data.length);\n          }\n          if (isValidElementCaretCandidate(node) && !isBr$3(node)) {\n            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false));\n          }\n        } else {\n          node = resolveIndex(caretPosition.container(), caretPosition.offset());\n          if (isText$4(node)) {\n            addCharacterOffset(node, 0);\n          }\n          if (isValidElementCaretCandidate(node) && caretPosition.isAtEnd()) {\n            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false));\n            return clientRects;\n          }\n          beforeNode = resolveIndex(caretPosition.container(), caretPosition.offset() - 1);\n          if (isValidElementCaretCandidate(beforeNode) && !isBr$3(beforeNode)) {\n            if (isBlock$1(beforeNode) || isBlock$1(node) || !isValidElementCaretCandidate(node)) {\n              addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(beforeNode), false));\n            }\n          }\n          if (isValidElementCaretCandidate(node)) {\n            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), true));\n          }\n        }\n      }\n      return clientRects;\n    };\n    function CaretPosition(container, offset, clientRects) {\n      var isAtStart = function () {\n        if (isText$4(container)) {\n          return offset === 0;\n        }\n        return offset === 0;\n      };\n      var isAtEnd = function () {\n        if (isText$4(container)) {\n          return offset >= container.data.length;\n        }\n        return offset >= container.childNodes.length;\n      };\n      var toRange = function () {\n        var range$$1;\n        range$$1 = createRange(container.ownerDocument);\n        range$$1.setStart(container, offset);\n        range$$1.setEnd(container, offset);\n        return range$$1;\n      };\n      var getClientRects = function () {\n        if (!clientRects) {\n          clientRects = getCaretPositionClientRects(CaretPosition(container, offset));\n        }\n        return clientRects;\n      };\n      var isVisible = function () {\n        return getClientRects().length > 0;\n      };\n      var isEqual$$1 = function (caretPosition) {\n        return caretPosition && container === caretPosition.container() && offset === caretPosition.offset();\n      };\n      var getNode$$1 = function (before) {\n        return resolveIndex(container, before ? offset - 1 : offset);\n      };\n      return {\n        container: constant(container),\n        offset: constant(offset),\n        toRange: toRange,\n        getClientRects: getClientRects,\n        isVisible: isVisible,\n        isAtStart: isAtStart,\n        isAtEnd: isAtEnd,\n        isEqual: isEqual$$1,\n        getNode: getNode$$1\n      };\n    }\n    (function (CaretPosition) {\n      CaretPosition.fromRangeStart = function (range$$1) {\n        return CaretPosition(range$$1.startContainer, range$$1.startOffset);\n      };\n      CaretPosition.fromRangeEnd = function (range$$1) {\n        return CaretPosition(range$$1.endContainer, range$$1.endOffset);\n      };\n      CaretPosition.after = function (node) {\n        return CaretPosition(node.parentNode, nodeIndex(node) + 1);\n      };\n      CaretPosition.before = function (node) {\n        return CaretPosition(node.parentNode, nodeIndex(node));\n      };\n      CaretPosition.isAbove = function (pos1, pos2) {\n        return liftN([\n          head(pos2.getClientRects()),\n          last(pos1.getClientRects())\n        ], isAbove).getOr(false);\n      };\n      CaretPosition.isBelow = function (pos1, pos2) {\n        return liftN([\n          last(pos2.getClientRects()),\n          head(pos1.getClientRects())\n        ], isBelow).getOr(false);\n      };\n      CaretPosition.isAtStart = function (pos) {\n        return pos ? pos.isAtStart() : false;\n      };\n      CaretPosition.isAtEnd = function (pos) {\n        return pos ? pos.isAtEnd() : false;\n      };\n      CaretPosition.isTextPosition = function (pos) {\n        return pos ? NodeType.isText(pos.container()) : false;\n      };\n      CaretPosition.isElementPosition = function (pos) {\n        return CaretPosition.isTextPosition(pos) === false;\n      };\n    }(CaretPosition || (CaretPosition = {})));\n    var CaretPosition$1 = CaretPosition;\n\n    var isText$5 = NodeType.isText;\n    var isBogus$1 = NodeType.isBogus;\n    var nodeIndex$1 = DOMUtils$1.nodeIndex;\n    var normalizedParent = function (node) {\n      var parentNode = node.parentNode;\n      if (isBogus$1(parentNode)) {\n        return normalizedParent(parentNode);\n      }\n      return parentNode;\n    };\n    var getChildNodes = function (node) {\n      if (!node) {\n        return [];\n      }\n      return ArrUtils.reduce(node.childNodes, function (result, node) {\n        if (isBogus$1(node) && node.nodeName !== 'BR') {\n          result = result.concat(getChildNodes(node));\n        } else {\n          result.push(node);\n        }\n        return result;\n      }, []);\n    };\n    var normalizedTextOffset = function (node, offset) {\n      while (node = node.previousSibling) {\n        if (!isText$5(node)) {\n          break;\n        }\n        offset += node.data.length;\n      }\n      return offset;\n    };\n    var equal$1 = function (a) {\n      return function (b) {\n        return a === b;\n      };\n    };\n    var normalizedNodeIndex = function (node) {\n      var nodes, index, numTextFragments;\n      nodes = getChildNodes(normalizedParent(node));\n      index = ArrUtils.findIndex(nodes, equal$1(node), node);\n      nodes = nodes.slice(0, index + 1);\n      numTextFragments = ArrUtils.reduce(nodes, function (result, node, i) {\n        if (isText$5(node) && isText$5(nodes[i - 1])) {\n          result++;\n        }\n        return result;\n      }, 0);\n      nodes = ArrUtils.filter(nodes, NodeType.matchNodeNames(node.nodeName));\n      index = ArrUtils.findIndex(nodes, equal$1(node), node);\n      return index - numTextFragments;\n    };\n    var createPathItem = function (node) {\n      var name;\n      if (isText$5(node)) {\n        name = 'text()';\n      } else {\n        name = node.nodeName.toLowerCase();\n      }\n      return name + '[' + normalizedNodeIndex(node) + ']';\n    };\n    var parentsUntil = function (root, node, predicate) {\n      var parents = [];\n      for (node = node.parentNode; node !== root; node = node.parentNode) {\n        if (predicate && predicate(node)) {\n          break;\n        }\n        parents.push(node);\n      }\n      return parents;\n    };\n    var create$2 = function (root, caretPosition) {\n      var container, offset, path = [], outputOffset, childNodes, parents;\n      container = caretPosition.container();\n      offset = caretPosition.offset();\n      if (isText$5(container)) {\n        outputOffset = normalizedTextOffset(container, offset);\n      } else {\n        childNodes = container.childNodes;\n        if (offset >= childNodes.length) {\n          outputOffset = 'after';\n          offset = childNodes.length - 1;\n        } else {\n          outputOffset = 'before';\n        }\n        container = childNodes[offset];\n      }\n      path.push(createPathItem(container));\n      parents = parentsUntil(root, container);\n      parents = ArrUtils.filter(parents, not(NodeType.isBogus));\n      path = path.concat(ArrUtils.map(parents, function (node) {\n        return createPathItem(node);\n      }));\n      return path.reverse().join('/') + ',' + outputOffset;\n    };\n    var resolvePathItem = function (node, name, index) {\n      var nodes = getChildNodes(node);\n      nodes = ArrUtils.filter(nodes, function (node, index) {\n        return !isText$5(node) || !isText$5(nodes[index - 1]);\n      });\n      nodes = ArrUtils.filter(nodes, NodeType.matchNodeNames(name));\n      return nodes[index];\n    };\n    var findTextPosition = function (container, offset) {\n      var node = container, targetOffset = 0, dataLen;\n      while (isText$5(node)) {\n        dataLen = node.data.length;\n        if (offset >= targetOffset && offset <= targetOffset + dataLen) {\n          container = node;\n          offset = offset - targetOffset;\n          break;\n        }\n        if (!isText$5(node.nextSibling)) {\n          container = node;\n          offset = dataLen;\n          break;\n        }\n        targetOffset += dataLen;\n        node = node.nextSibling;\n      }\n      if (isText$5(container) && offset > container.data.length) {\n        offset = container.data.length;\n      }\n      return CaretPosition$1(container, offset);\n    };\n    var resolve$2 = function (root, path) {\n      var parts, container, offset;\n      if (!path) {\n        return null;\n      }\n      parts = path.split(',');\n      path = parts[0].split('/');\n      offset = parts.length > 1 ? parts[1] : 'before';\n      container = ArrUtils.reduce(path, function (result, value) {\n        value = /([\\w\\-\\(\\)]+)\\[([0-9]+)\\]/.exec(value);\n        if (!value) {\n          return null;\n        }\n        if (value[1] === 'text()') {\n          value[1] = '#text';\n        }\n        return resolvePathItem(result, value[1], parseInt(value[2], 10));\n      }, root);\n      if (!container) {\n        return null;\n      }\n      if (!isText$5(container)) {\n        if (offset === 'after') {\n          offset = nodeIndex$1(container) + 1;\n        } else {\n          offset = nodeIndex$1(container);\n        }\n        return CaretPosition$1(container.parentNode, offset);\n      }\n      return findTextPosition(container, parseInt(offset, 10));\n    };\n\n    var isContentEditableFalse$2 = NodeType.isContentEditableFalse;\n    var getNormalizedTextOffset = function (trim, container, offset) {\n      var node, trimmedOffset;\n      trimmedOffset = trim(container.data.slice(0, offset)).length;\n      for (node = container.previousSibling; node && NodeType.isText(node); node = node.previousSibling) {\n        trimmedOffset += trim(node.data).length;\n      }\n      return trimmedOffset;\n    };\n    var getPoint = function (dom, trim, normalized, rng, start) {\n      var container = rng[start ? 'startContainer' : 'endContainer'];\n      var offset = rng[start ? 'startOffset' : 'endOffset'];\n      var point = [];\n      var childNodes, after = 0;\n      var root = dom.getRoot();\n      if (NodeType.isText(container)) {\n        point.push(normalized ? getNormalizedTextOffset(trim, container, offset) : offset);\n      } else {\n        childNodes = container.childNodes;\n        if (offset >= childNodes.length && childNodes.length) {\n          after = 1;\n          offset = Math.max(0, childNodes.length - 1);\n        }\n        point.push(dom.nodeIndex(childNodes[offset], normalized) + after);\n      }\n      for (; container && container !== root; container = container.parentNode) {\n        point.push(dom.nodeIndex(container, normalized));\n      }\n      return point;\n    };\n    var getLocation = function (trim, selection, normalized, rng) {\n      var dom = selection.dom, bookmark = {};\n      bookmark.start = getPoint(dom, trim, normalized, rng, true);\n      if (!selection.isCollapsed()) {\n        bookmark.end = getPoint(dom, trim, normalized, rng, false);\n      }\n      return bookmark;\n    };\n    var trimEmptyTextNode = function (node) {\n      if (NodeType.isText(node) && node.data.length === 0) {\n        node.parentNode.removeChild(node);\n      }\n    };\n    var findIndex$3 = function (dom, name, element) {\n      var count = 0;\n      Tools.each(dom.select(name), function (node) {\n        if (node.getAttribute('data-mce-bogus') === 'all') {\n          return;\n        }\n        if (node === element) {\n          return false;\n        }\n        count++;\n      });\n      return count;\n    };\n    var moveEndPoint = function (rng, start) {\n      var container, offset, childNodes;\n      var prefix = start ? 'start' : 'end';\n      container = rng[prefix + 'Container'];\n      offset = rng[prefix + 'Offset'];\n      if (NodeType.isElement(container) && container.nodeName === 'TR') {\n        childNodes = container.childNodes;\n        container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)];\n        if (container) {\n          offset = start ? 0 : container.childNodes.length;\n          rng['set' + (start ? 'Start' : 'End')](container, offset);\n        }\n      }\n    };\n    var normalizeTableCellSelection = function (rng) {\n      moveEndPoint(rng, true);\n      moveEndPoint(rng, false);\n      return rng;\n    };\n    var findSibling = function (node, offset) {\n      var sibling;\n      if (NodeType.isElement(node)) {\n        node = getNode(node, offset);\n        if (isContentEditableFalse$2(node)) {\n          return node;\n        }\n      }\n      if (isCaretContainer(node)) {\n        if (NodeType.isText(node) && isCaretContainerBlock(node)) {\n          node = node.parentNode;\n        }\n        sibling = node.previousSibling;\n        if (isContentEditableFalse$2(sibling)) {\n          return sibling;\n        }\n        sibling = node.nextSibling;\n        if (isContentEditableFalse$2(sibling)) {\n          return sibling;\n        }\n      }\n    };\n    var findAdjacentContentEditableFalseElm = function (rng) {\n      return findSibling(rng.startContainer, rng.startOffset) || findSibling(rng.endContainer, rng.endOffset);\n    };\n    var getOffsetBookmark = function (trim, normalized, selection) {\n      var element = selection.getNode();\n      var name = element ? element.nodeName : null;\n      var rng = selection.getRng();\n      if (isContentEditableFalse$2(element) || name === 'IMG') {\n        return {\n          name: name,\n          index: findIndex$3(selection.dom, name, element)\n        };\n      }\n      var sibling = findAdjacentContentEditableFalseElm(rng);\n      if (sibling) {\n        name = sibling.tagName;\n        return {\n          name: name,\n          index: findIndex$3(selection.dom, name, sibling)\n        };\n      }\n      return getLocation(trim, selection, normalized, rng);\n    };\n    var getCaretBookmark = function (selection) {\n      var rng = selection.getRng();\n      return {\n        start: create$2(selection.dom.getRoot(), CaretPosition$1.fromRangeStart(rng)),\n        end: create$2(selection.dom.getRoot(), CaretPosition$1.fromRangeEnd(rng))\n      };\n    };\n    var getRangeBookmark = function (selection) {\n      return { rng: selection.getRng() };\n    };\n    var createBookmarkSpan = function (dom, id, filled) {\n      var args = {\n        'data-mce-type': 'bookmark',\n        'id': id,\n        'style': 'overflow:hidden;line-height:0px'\n      };\n      return filled ? dom.create('span', args, '&#xFEFF;') : dom.create('span', args);\n    };\n    var getPersistentBookmark = function (selection, filled) {\n      var dom = selection.dom;\n      var rng = selection.getRng();\n      var id = dom.uniqueId();\n      var collapsed = selection.isCollapsed();\n      var element = selection.getNode();\n      var name = element.nodeName;\n      if (name === 'IMG') {\n        return {\n          name: name,\n          index: findIndex$3(dom, name, element)\n        };\n      }\n      var rng2 = normalizeTableCellSelection(rng.cloneRange());\n      if (!collapsed) {\n        rng2.collapse(false);\n        var endBookmarkNode = createBookmarkSpan(dom, id + '_end', filled);\n        rng2.insertNode(endBookmarkNode);\n        trimEmptyTextNode(endBookmarkNode.nextSibling);\n      }\n      rng = normalizeTableCellSelection(rng);\n      rng.collapse(true);\n      var startBookmarkNode = createBookmarkSpan(dom, id + '_start', filled);\n      rng.insertNode(startBookmarkNode);\n      trimEmptyTextNode(startBookmarkNode.previousSibling);\n      trimEmptyTextNode(startBookmarkNode.nextSibling);\n      selection.moveToBookmark({\n        id: id,\n        keep: 1\n      });\n      return { id: id };\n    };\n    var getBookmark = function (selection, type, normalized) {\n      if (type === 2) {\n        return getOffsetBookmark(Zwsp.trim, normalized, selection);\n      } else if (type === 3) {\n        return getCaretBookmark(selection);\n      } else if (type) {\n        return getRangeBookmark(selection);\n      } else {\n        return getPersistentBookmark(selection, false);\n      }\n    };\n    var GetBookmark = {\n      getBookmark: getBookmark,\n      getUndoBookmark: curry(getOffsetBookmark, identity, true),\n      getPersistentBookmark: getPersistentBookmark\n    };\n\n    var CARET_ID = '_mce_caret';\n    var isCaretNode = function (node) {\n      return NodeType.isElement(node) && node.id === CARET_ID;\n    };\n    var getParentCaretContainer = function (body, node) {\n      while (node && node !== body) {\n        if (node.id === CARET_ID) {\n          return node;\n        }\n        node = node.parentNode;\n      }\n      return null;\n    };\n\n    var isElement$4 = NodeType.isElement;\n    var isText$6 = NodeType.isText;\n    var removeNode = function (node) {\n      var parentNode = node.parentNode;\n      if (parentNode) {\n        parentNode.removeChild(node);\n      }\n    };\n    var getNodeValue = function (node) {\n      try {\n        return node.nodeValue;\n      } catch (ex) {\n        return '';\n      }\n    };\n    var setNodeValue = function (node, text) {\n      if (text.length === 0) {\n        removeNode(node);\n      } else {\n        node.nodeValue = text;\n      }\n    };\n    var trimCount = function (text) {\n      var trimmedText = Zwsp.trim(text);\n      return {\n        count: text.length - trimmedText.length,\n        text: trimmedText\n      };\n    };\n    var removeUnchanged = function (caretContainer, pos) {\n      remove$7(caretContainer);\n      return pos;\n    };\n    var removeTextAndReposition = function (caretContainer, pos) {\n      var before = trimCount(caretContainer.data.substr(0, pos.offset()));\n      var after = trimCount(caretContainer.data.substr(pos.offset()));\n      var text = before.text + after.text;\n      if (text.length > 0) {\n        setNodeValue(caretContainer, text);\n        return CaretPosition$1(caretContainer, pos.offset() - before.count);\n      } else {\n        return pos;\n      }\n    };\n    var removeElementAndReposition = function (caretContainer, pos) {\n      var parentNode = pos.container();\n      var newPosition = indexOf(from$1(parentNode.childNodes), caretContainer).map(function (index) {\n        return index < pos.offset() ? CaretPosition$1(parentNode, pos.offset() - 1) : pos;\n      }).getOr(pos);\n      remove$7(caretContainer);\n      return newPosition;\n    };\n    var removeTextCaretContainer = function (caretContainer, pos) {\n      return isText$6(caretContainer) && pos.container() === caretContainer ? removeTextAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos);\n    };\n    var removeElementCaretContainer = function (caretContainer, pos) {\n      return pos.container() === caretContainer.parentNode ? removeElementAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos);\n    };\n    var removeAndReposition = function (container, pos) {\n      return CaretPosition$1.isTextPosition(pos) ? removeTextCaretContainer(container, pos) : removeElementCaretContainer(container, pos);\n    };\n    var remove$7 = function (caretContainerNode) {\n      if (isElement$4(caretContainerNode) && isCaretContainer(caretContainerNode)) {\n        if (hasContent(caretContainerNode)) {\n          caretContainerNode.removeAttribute('data-mce-caret');\n        } else {\n          removeNode(caretContainerNode);\n        }\n      }\n      if (isText$6(caretContainerNode)) {\n        var text = Zwsp.trim(getNodeValue(caretContainerNode));\n        setNodeValue(caretContainerNode, text);\n      }\n    };\n    var CaretContainerRemove = {\n      removeAndReposition: removeAndReposition,\n      remove: remove$7\n    };\n\n    var browser$2 = PlatformDetection$1.detect().browser;\n    var isContentEditableFalse$3 = NodeType.isContentEditableFalse;\n    var isTableCell$1 = function (node) {\n      return NodeType.isElement(node) && /^(TD|TH)$/i.test(node.tagName);\n    };\n    var getAbsoluteClientRect = function (root, element, before) {\n      var clientRect = collapse(element.getBoundingClientRect(), before);\n      var docElm, scrollX, scrollY, margin, rootRect;\n      if (root.tagName === 'BODY') {\n        docElm = root.ownerDocument.documentElement;\n        scrollX = root.scrollLeft || docElm.scrollLeft;\n        scrollY = root.scrollTop || docElm.scrollTop;\n      } else {\n        rootRect = root.getBoundingClientRect();\n        scrollX = root.scrollLeft - rootRect.left;\n        scrollY = root.scrollTop - rootRect.top;\n      }\n      clientRect.left += scrollX;\n      clientRect.right += scrollX;\n      clientRect.top += scrollY;\n      clientRect.bottom += scrollY;\n      clientRect.width = 1;\n      margin = element.offsetWidth - element.clientWidth;\n      if (margin > 0) {\n        if (before) {\n          margin *= -1;\n        }\n        clientRect.left += margin;\n        clientRect.right += margin;\n      }\n      return clientRect;\n    };\n    var trimInlineCaretContainers = function (root) {\n      var contentEditableFalseNodes, node, sibling, i, data;\n      contentEditableFalseNodes = DomQuery('*[contentEditable=false]', root);\n      for (i = 0; i < contentEditableFalseNodes.length; i++) {\n        node = contentEditableFalseNodes[i];\n        sibling = node.previousSibling;\n        if (endsWithCaretContainer(sibling)) {\n          data = sibling.data;\n          if (data.length === 1) {\n            sibling.parentNode.removeChild(sibling);\n          } else {\n            sibling.deleteData(data.length - 1, 1);\n          }\n        }\n        sibling = node.nextSibling;\n        if (startsWithCaretContainer(sibling)) {\n          data = sibling.data;\n          if (data.length === 1) {\n            sibling.parentNode.removeChild(sibling);\n          } else {\n            sibling.deleteData(0, 1);\n          }\n        }\n      }\n    };\n    var FakeCaret = function (root, isBlock, hasFocus) {\n      var lastVisualCaret = Cell(Option.none());\n      var cursorInterval, caretContainerNode;\n      var show = function (before, element) {\n        var clientRect, rng;\n        hide();\n        if (isTableCell$1(element)) {\n          return null;\n        }\n        if (isBlock(element)) {\n          caretContainerNode = insertBlock('p', element, before);\n          clientRect = getAbsoluteClientRect(root, element, before);\n          DomQuery(caretContainerNode).css('top', clientRect.top);\n          var caret = DomQuery('<div class=\"mce-visual-caret\" data-mce-bogus=\"all\"></div>').css(clientRect).appendTo(root)[0];\n          lastVisualCaret.set(Option.some({\n            caret: caret,\n            element: element,\n            before: before\n          }));\n          lastVisualCaret.get().each(function (caretState) {\n            if (before) {\n              DomQuery(caretState.caret).addClass('mce-visual-caret-before');\n            }\n          });\n          startBlink();\n          rng = element.ownerDocument.createRange();\n          rng.setStart(caretContainerNode, 0);\n          rng.setEnd(caretContainerNode, 0);\n        } else {\n          caretContainerNode = insertInline(element, before);\n          rng = element.ownerDocument.createRange();\n          if (isContentEditableFalse$3(caretContainerNode.nextSibling)) {\n            rng.setStart(caretContainerNode, 0);\n            rng.setEnd(caretContainerNode, 0);\n          } else {\n            rng.setStart(caretContainerNode, 1);\n            rng.setEnd(caretContainerNode, 1);\n          }\n          return rng;\n        }\n        return rng;\n      };\n      var hide = function () {\n        trimInlineCaretContainers(root);\n        if (caretContainerNode) {\n          CaretContainerRemove.remove(caretContainerNode);\n          caretContainerNode = null;\n        }\n        lastVisualCaret.get().each(function (caretState) {\n          DomQuery(caretState.caret).remove();\n          lastVisualCaret.set(Option.none());\n        });\n        clearInterval(cursorInterval);\n      };\n      var startBlink = function () {\n        cursorInterval = Delay.setInterval(function () {\n          if (hasFocus()) {\n            DomQuery('div.mce-visual-caret', root).toggleClass('mce-visual-caret-hidden');\n          } else {\n            DomQuery('div.mce-visual-caret', root).addClass('mce-visual-caret-hidden');\n          }\n        }, 500);\n      };\n      var reposition = function () {\n        lastVisualCaret.get().each(function (caretState) {\n          var clientRect = getAbsoluteClientRect(root, caretState.element, caretState.before);\n          DomQuery(caretState.caret).css(clientRect);\n        });\n      };\n      var destroy = function () {\n        return Delay.clearInterval(cursorInterval);\n      };\n      var getCss = function () {\n        return '.mce-visual-caret {' + 'position: absolute;' + 'background-color: black;' + 'background-color: currentcolor;' + '}' + '.mce-visual-caret-hidden {' + 'display: none;' + '}' + '*[data-mce-caret] {' + 'position: absolute;' + 'left: -1000px;' + 'right: auto;' + 'top: 0;' + 'margin: 0;' + 'padding: 0;' + '}';\n      };\n      return {\n        show: show,\n        hide: hide,\n        getCss: getCss,\n        reposition: reposition,\n        destroy: destroy\n      };\n    };\n    var isFakeCaretTableBrowser = function () {\n      return browser$2.isIE() || browser$2.isEdge() || browser$2.isFirefox();\n    };\n    var isFakeCaretTarget = function (node) {\n      return isContentEditableFalse$3(node) || NodeType.isTable(node) && isFakeCaretTableBrowser();\n    };\n\n    var is$3 = function (expected) {\n      return function (actual) {\n        return expected === actual;\n      };\n    };\n    var isNbsp = is$3('\\xA0');\n    var isWhiteSpace$1 = function (chr) {\n      return /^[\\r\\n\\t ]$/.test(chr);\n    };\n    var isContent = function (chr) {\n      return !isWhiteSpace$1(chr) && !isNbsp(chr);\n    };\n\n    var isContentEditableFalse$4 = NodeType.isContentEditableFalse;\n    var isBlockLike = NodeType.matchStyleValues('display', 'block table table-cell table-caption list-item');\n    var isCaretContainer$2 = isCaretContainer;\n    var isCaretContainerBlock$1 = isCaretContainerBlock;\n    var isElement$5 = NodeType.isElement;\n    var isCaretCandidate$2 = isCaretCandidate;\n    var isForwards = function (direction) {\n      return direction > 0;\n    };\n    var isBackwards = function (direction) {\n      return direction < 0;\n    };\n    var skipCaretContainers = function (walk, shallow) {\n      var node;\n      while (node = walk(shallow)) {\n        if (!isCaretContainerBlock$1(node)) {\n          return node;\n        }\n      }\n      return null;\n    };\n    var findNode = function (node, direction, predicateFn, rootNode, shallow) {\n      var walker = new TreeWalker(node, rootNode);\n      if (isBackwards(direction)) {\n        if (isContentEditableFalse$4(node) || isCaretContainerBlock$1(node)) {\n          node = skipCaretContainers(walker.prev, true);\n          if (predicateFn(node)) {\n            return node;\n          }\n        }\n        while (node = skipCaretContainers(walker.prev, shallow)) {\n          if (predicateFn(node)) {\n            return node;\n          }\n        }\n      }\n      if (isForwards(direction)) {\n        if (isContentEditableFalse$4(node) || isCaretContainerBlock$1(node)) {\n          node = skipCaretContainers(walker.next, true);\n          if (predicateFn(node)) {\n            return node;\n          }\n        }\n        while (node = skipCaretContainers(walker.next, shallow)) {\n          if (predicateFn(node)) {\n            return node;\n          }\n        }\n      }\n      return null;\n    };\n    var getParentBlock = function (node, rootNode) {\n      while (node && node !== rootNode) {\n        if (isBlockLike(node)) {\n          return node;\n        }\n        node = node.parentNode;\n      }\n      return null;\n    };\n    var isInSameBlock = function (caretPosition1, caretPosition2, rootNode) {\n      return getParentBlock(caretPosition1.container(), rootNode) === getParentBlock(caretPosition2.container(), rootNode);\n    };\n    var getChildNodeAtRelativeOffset = function (relativeOffset, caretPosition) {\n      var container, offset;\n      if (!caretPosition) {\n        return null;\n      }\n      container = caretPosition.container();\n      offset = caretPosition.offset();\n      if (!isElement$5(container)) {\n        return null;\n      }\n      return container.childNodes[offset + relativeOffset];\n    };\n    var beforeAfter = function (before, node) {\n      var range = node.ownerDocument.createRange();\n      if (before) {\n        range.setStartBefore(node);\n        range.setEndBefore(node);\n      } else {\n        range.setStartAfter(node);\n        range.setEndAfter(node);\n      }\n      return range;\n    };\n    var isNodesInSameBlock = function (root, node1, node2) {\n      return getParentBlock(node1, root) === getParentBlock(node2, root);\n    };\n    var lean = function (left, root, node) {\n      var sibling, siblingName;\n      if (left) {\n        siblingName = 'previousSibling';\n      } else {\n        siblingName = 'nextSibling';\n      }\n      while (node && node !== root) {\n        sibling = node[siblingName];\n        if (isCaretContainer$2(sibling)) {\n          sibling = sibling[siblingName];\n        }\n        if (isContentEditableFalse$4(sibling)) {\n          if (isNodesInSameBlock(root, sibling, node)) {\n            return sibling;\n          }\n          break;\n        }\n        if (isCaretCandidate$2(sibling)) {\n          break;\n        }\n        node = node.parentNode;\n      }\n      return null;\n    };\n    var before$2 = curry(beforeAfter, true);\n    var after$2 = curry(beforeAfter, false);\n    var normalizeRange = function (direction, root, range) {\n      var node, container, offset, location;\n      var leanLeft = curry(lean, true, root);\n      var leanRight = curry(lean, false, root);\n      container = range.startContainer;\n      offset = range.startOffset;\n      if (isCaretContainerBlock(container)) {\n        if (!isElement$5(container)) {\n          container = container.parentNode;\n        }\n        location = container.getAttribute('data-mce-caret');\n        if (location === 'before') {\n          node = container.nextSibling;\n          if (isFakeCaretTarget(node)) {\n            return before$2(node);\n          }\n        }\n        if (location === 'after') {\n          node = container.previousSibling;\n          if (isFakeCaretTarget(node)) {\n            return after$2(node);\n          }\n        }\n      }\n      if (!range.collapsed) {\n        return range;\n      }\n      if (NodeType.isText(container)) {\n        if (isCaretContainer$2(container)) {\n          if (direction === 1) {\n            node = leanRight(container);\n            if (node) {\n              return before$2(node);\n            }\n            node = leanLeft(container);\n            if (node) {\n              return after$2(node);\n            }\n          }\n          if (direction === -1) {\n            node = leanLeft(container);\n            if (node) {\n              return after$2(node);\n            }\n            node = leanRight(container);\n            if (node) {\n              return before$2(node);\n            }\n          }\n          return range;\n        }\n        if (endsWithCaretContainer(container) && offset >= container.data.length - 1) {\n          if (direction === 1) {\n            node = leanRight(container);\n            if (node) {\n              return before$2(node);\n            }\n          }\n          return range;\n        }\n        if (startsWithCaretContainer(container) && offset <= 1) {\n          if (direction === -1) {\n            node = leanLeft(container);\n            if (node) {\n              return after$2(node);\n            }\n          }\n          return range;\n        }\n        if (offset === container.data.length) {\n          node = leanRight(container);\n          if (node) {\n            return before$2(node);\n          }\n          return range;\n        }\n        if (offset === 0) {\n          node = leanLeft(container);\n          if (node) {\n            return after$2(node);\n          }\n          return range;\n        }\n      }\n      return range;\n    };\n    var isNextToContentEditableFalse = function (relativeOffset, caretPosition) {\n      var node = getChildNodeAtRelativeOffset(relativeOffset, caretPosition);\n      return isContentEditableFalse$4(node) && !NodeType.isBogusAll(node);\n    };\n    var isNextToTable = function (relativeOffset, caretPosition) {\n      return NodeType.isTable(getChildNodeAtRelativeOffset(relativeOffset, caretPosition));\n    };\n    var getRelativeCefElm = function (forward, caretPosition) {\n      return Option.from(getChildNodeAtRelativeOffset(forward ? 0 : -1, caretPosition)).filter(isContentEditableFalse$4);\n    };\n    var getNormalizedRangeEndPoint = function (direction, root, range) {\n      var normalizedRange = normalizeRange(direction, root, range);\n      if (direction === -1) {\n        return CaretPosition.fromRangeStart(normalizedRange);\n      }\n      return CaretPosition.fromRangeEnd(normalizedRange);\n    };\n    var isBeforeContentEditableFalse = curry(isNextToContentEditableFalse, 0);\n    var isAfterContentEditableFalse = curry(isNextToContentEditableFalse, -1);\n    var isBeforeTable = curry(isNextToTable, 0);\n    var isAfterTable = curry(isNextToTable, -1);\n    var isChar = function (forward, predicate, pos) {\n      return Option.from(pos.container()).filter(NodeType.isText).exists(function (text) {\n        var delta = forward ? 0 : -1;\n        return predicate(text.data.charAt(pos.offset() + delta));\n      });\n    };\n    var isBeforeSpace = curry(isChar, true, isWhiteSpace$1);\n    var isAfterSpace = curry(isChar, false, isWhiteSpace$1);\n    var getElementFromPosition = function (pos) {\n      return Option.from(pos.getNode()).map(Element$$1.fromDom);\n    };\n    var getElementFromPrevPosition = function (pos) {\n      return Option.from(pos.getNode(true)).map(Element$$1.fromDom);\n    };\n\n    var HDirection;\n    (function (HDirection) {\n      HDirection[HDirection['Backwards'] = -1] = 'Backwards';\n      HDirection[HDirection['Forwards'] = 1] = 'Forwards';\n    }(HDirection || (HDirection = {})));\n    var isContentEditableFalse$5 = NodeType.isContentEditableFalse;\n    var isText$7 = NodeType.isText;\n    var isElement$6 = NodeType.isElement;\n    var isBr$4 = NodeType.isBr;\n    var isCaretCandidate$3 = isCaretCandidate;\n    var isAtomic$1 = isAtomic;\n    var isEditableCaretCandidate$1 = isEditableCaretCandidate;\n    var getParents = function (node, root) {\n      var parents = [];\n      while (node && node !== root) {\n        parents.push(node);\n        node = node.parentNode;\n      }\n      return parents;\n    };\n    var nodeAtIndex = function (container, offset) {\n      if (container.hasChildNodes() && offset < container.childNodes.length) {\n        return container.childNodes[offset];\n      }\n      return null;\n    };\n    var getCaretCandidatePosition = function (direction, node) {\n      if (isForwards(direction)) {\n        if (isCaretCandidate$3(node.previousSibling) && !isText$7(node.previousSibling)) {\n          return CaretPosition$1.before(node);\n        }\n        if (isText$7(node)) {\n          return CaretPosition$1(node, 0);\n        }\n      }\n      if (isBackwards(direction)) {\n        if (isCaretCandidate$3(node.nextSibling) && !isText$7(node.nextSibling)) {\n          return CaretPosition$1.after(node);\n        }\n        if (isText$7(node)) {\n          return CaretPosition$1(node, node.data.length);\n        }\n      }\n      if (isBackwards(direction)) {\n        if (isBr$4(node)) {\n          return CaretPosition$1.before(node);\n        }\n        return CaretPosition$1.after(node);\n      }\n      return CaretPosition$1.before(node);\n    };\n    var moveForwardFromBr = function (root, nextNode) {\n      var nextSibling = nextNode.nextSibling;\n      if (nextSibling && isCaretCandidate$3(nextSibling)) {\n        if (isText$7(nextSibling)) {\n          return CaretPosition$1(nextSibling, 0);\n        } else {\n          return CaretPosition$1.before(nextSibling);\n        }\n      } else {\n        return findCaretPosition(HDirection.Forwards, CaretPosition$1.after(nextNode), root);\n      }\n    };\n    var findCaretPosition = function (direction, startPos, root) {\n      var node, nextNode, innerNode;\n      var rootContentEditableFalseElm, caretPosition;\n      if (!isElement$6(root) || !startPos) {\n        return null;\n      }\n      if (startPos.isEqual(CaretPosition$1.after(root)) && root.lastChild) {\n        caretPosition = CaretPosition$1.after(root.lastChild);\n        if (isBackwards(direction) && isCaretCandidate$3(root.lastChild) && isElement$6(root.lastChild)) {\n          return isBr$4(root.lastChild) ? CaretPosition$1.before(root.lastChild) : caretPosition;\n        }\n      } else {\n        caretPosition = startPos;\n      }\n      var container = caretPosition.container();\n      var offset = caretPosition.offset();\n      if (isText$7(container)) {\n        if (isBackwards(direction) && offset > 0) {\n          return CaretPosition$1(container, --offset);\n        }\n        if (isForwards(direction) && offset < container.length) {\n          return CaretPosition$1(container, ++offset);\n        }\n        node = container;\n      } else {\n        if (isBackwards(direction) && offset > 0) {\n          nextNode = nodeAtIndex(container, offset - 1);\n          if (isCaretCandidate$3(nextNode)) {\n            if (!isAtomic$1(nextNode)) {\n              innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode);\n              if (innerNode) {\n                if (isText$7(innerNode)) {\n                  return CaretPosition$1(innerNode, innerNode.data.length);\n                }\n                return CaretPosition$1.after(innerNode);\n              }\n            }\n            if (isText$7(nextNode)) {\n              return CaretPosition$1(nextNode, nextNode.data.length);\n            }\n            return CaretPosition$1.before(nextNode);\n          }\n        }\n        if (isForwards(direction) && offset < container.childNodes.length) {\n          nextNode = nodeAtIndex(container, offset);\n          if (isCaretCandidate$3(nextNode)) {\n            if (isBr$4(nextNode)) {\n              return moveForwardFromBr(root, nextNode);\n            }\n            if (!isAtomic$1(nextNode)) {\n              innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode);\n              if (innerNode) {\n                if (isText$7(innerNode)) {\n                  return CaretPosition$1(innerNode, 0);\n                }\n                return CaretPosition$1.before(innerNode);\n              }\n            }\n            if (isText$7(nextNode)) {\n              return CaretPosition$1(nextNode, 0);\n            }\n            return CaretPosition$1.after(nextNode);\n          }\n        }\n        node = nextNode ? nextNode : caretPosition.getNode();\n      }\n      if (isForwards(direction) && caretPosition.isAtEnd() || isBackwards(direction) && caretPosition.isAtStart()) {\n        node = findNode(node, direction, constant(true), root, true);\n        if (isEditableCaretCandidate$1(node, root)) {\n          return getCaretCandidatePosition(direction, node);\n        }\n      }\n      nextNode = findNode(node, direction, isEditableCaretCandidate$1, root);\n      rootContentEditableFalseElm = ArrUtils.last(filter(getParents(container, root), isContentEditableFalse$5));\n      if (rootContentEditableFalseElm && (!nextNode || !rootContentEditableFalseElm.contains(nextNode))) {\n        if (isForwards(direction)) {\n          caretPosition = CaretPosition$1.after(rootContentEditableFalseElm);\n        } else {\n          caretPosition = CaretPosition$1.before(rootContentEditableFalseElm);\n        }\n        return caretPosition;\n      }\n      if (nextNode) {\n        return getCaretCandidatePosition(direction, nextNode);\n      }\n      return null;\n    };\n    var CaretWalker = function (root) {\n      return {\n        next: function (caretPosition) {\n          return findCaretPosition(HDirection.Forwards, caretPosition, root);\n        },\n        prev: function (caretPosition) {\n          return findCaretPosition(HDirection.Backwards, caretPosition, root);\n        }\n      };\n    };\n\n    var walkToPositionIn = function (forward, root, start) {\n      var position = forward ? CaretPosition$1.before(start) : CaretPosition$1.after(start);\n      return fromPosition(forward, root, position);\n    };\n    var afterElement = function (node) {\n      return NodeType.isBr(node) ? CaretPosition$1.before(node) : CaretPosition$1.after(node);\n    };\n    var isBeforeOrStart = function (position) {\n      if (CaretPosition$1.isTextPosition(position)) {\n        return position.offset() === 0;\n      } else {\n        return isCaretCandidate(position.getNode());\n      }\n    };\n    var isAfterOrEnd = function (position) {\n      if (CaretPosition$1.isTextPosition(position)) {\n        var container = position.container();\n        return position.offset() === container.data.length;\n      } else {\n        return isCaretCandidate(position.getNode(true));\n      }\n    };\n    var isBeforeAfterSameElement = function (from, to) {\n      return !CaretPosition$1.isTextPosition(from) && !CaretPosition$1.isTextPosition(to) && from.getNode() === to.getNode(true);\n    };\n    var isAtBr = function (position) {\n      return !CaretPosition$1.isTextPosition(position) && NodeType.isBr(position.getNode());\n    };\n    var shouldSkipPosition = function (forward, from, to) {\n      if (forward) {\n        return !isBeforeAfterSameElement(from, to) && !isAtBr(from) && isAfterOrEnd(from) && isBeforeOrStart(to);\n      } else {\n        return !isBeforeAfterSameElement(to, from) && isBeforeOrStart(from) && isAfterOrEnd(to);\n      }\n    };\n    var fromPosition = function (forward, root, pos) {\n      var walker = CaretWalker(root);\n      return Option.from(forward ? walker.next(pos) : walker.prev(pos));\n    };\n    var navigate = function (forward, root, from) {\n      return fromPosition(forward, root, from).bind(function (to) {\n        if (isInSameBlock(from, to, root) && shouldSkipPosition(forward, from, to)) {\n          return fromPosition(forward, root, to);\n        } else {\n          return Option.some(to);\n        }\n      });\n    };\n    var positionIn = function (forward, element) {\n      var startNode = forward ? element.firstChild : element.lastChild;\n      if (NodeType.isText(startNode)) {\n        return Option.some(CaretPosition$1(startNode, forward ? 0 : startNode.data.length));\n      } else if (startNode) {\n        if (isCaretCandidate(startNode)) {\n          return Option.some(forward ? CaretPosition$1.before(startNode) : afterElement(startNode));\n        } else {\n          return walkToPositionIn(forward, element, startNode);\n        }\n      } else {\n        return Option.none();\n      }\n    };\n    var nextPosition = curry(fromPosition, true);\n    var prevPosition = curry(fromPosition, false);\n    var CaretFinder = {\n      fromPosition: fromPosition,\n      nextPosition: nextPosition,\n      prevPosition: prevPosition,\n      navigate: navigate,\n      positionIn: positionIn,\n      firstPositionIn: curry(positionIn, true),\n      lastPositionIn: curry(positionIn, false)\n    };\n\n    var isStringPathBookmark = function (bookmark) {\n      return typeof bookmark.start === 'string';\n    };\n    var isRangeBookmark = function (bookmark) {\n      return bookmark.hasOwnProperty('rng');\n    };\n    var isIdBookmark = function (bookmark) {\n      return bookmark.hasOwnProperty('id');\n    };\n    var isIndexBookmark = function (bookmark) {\n      return bookmark.hasOwnProperty('name');\n    };\n    var isPathBookmark = function (bookmark) {\n      return Tools.isArray(bookmark.start);\n    };\n\n    var addBogus = function (dom, node) {\n      if (dom.isBlock(node) && !node.innerHTML && !Env.ie) {\n        node.innerHTML = '<br data-mce-bogus=\"1\" />';\n      }\n      return node;\n    };\n    var resolveCaretPositionBookmark = function (dom, bookmark) {\n      var rng, pos;\n      rng = dom.createRng();\n      pos = resolve$2(dom.getRoot(), bookmark.start);\n      rng.setStart(pos.container(), pos.offset());\n      pos = resolve$2(dom.getRoot(), bookmark.end);\n      rng.setEnd(pos.container(), pos.offset());\n      return rng;\n    };\n    var insertZwsp = function (node, rng) {\n      var textNode = node.ownerDocument.createTextNode(Zwsp.ZWSP);\n      node.appendChild(textNode);\n      rng.setStart(textNode, 0);\n      rng.setEnd(textNode, 0);\n    };\n    var isEmpty = function (node) {\n      return node.hasChildNodes() === false;\n    };\n    var tryFindRangePosition = function (node, rng) {\n      return CaretFinder.lastPositionIn(node).fold(function () {\n        return false;\n      }, function (pos) {\n        rng.setStart(pos.container(), pos.offset());\n        rng.setEnd(pos.container(), pos.offset());\n        return true;\n      });\n    };\n    var padEmptyCaretContainer = function (root, node, rng) {\n      if (isEmpty(node) && getParentCaretContainer(root, node)) {\n        insertZwsp(node, rng);\n        return true;\n      } else {\n        return false;\n      }\n    };\n    var setEndPoint = function (dom, start, bookmark, rng) {\n      var point = bookmark[start ? 'start' : 'end'];\n      var i, node, offset, children;\n      var root = dom.getRoot();\n      if (point) {\n        offset = point[0];\n        for (node = root, i = point.length - 1; i >= 1; i--) {\n          children = node.childNodes;\n          if (padEmptyCaretContainer(root, node, rng)) {\n            return true;\n          }\n          if (point[i] > children.length - 1) {\n            if (padEmptyCaretContainer(root, node, rng)) {\n              return true;\n            }\n            return tryFindRangePosition(node, rng);\n          }\n          node = children[point[i]];\n        }\n        if (node.nodeType === 3) {\n          offset = Math.min(point[0], node.nodeValue.length);\n        }\n        if (node.nodeType === 1) {\n          offset = Math.min(point[0], node.childNodes.length);\n        }\n        if (start) {\n          rng.setStart(node, offset);\n        } else {\n          rng.setEnd(node, offset);\n        }\n      }\n      return true;\n    };\n    var isValidTextNode = function (node) {\n      return NodeType.isText(node) && node.data.length > 0;\n    };\n    var restoreEndPoint = function (dom, suffix, bookmark) {\n      var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev;\n      var keep = bookmark.keep;\n      var container, offset;\n      if (marker) {\n        node = marker.parentNode;\n        if (suffix === 'start') {\n          if (!keep) {\n            idx = dom.nodeIndex(marker);\n          } else {\n            if (marker.hasChildNodes()) {\n              node = marker.firstChild;\n              idx = 1;\n            } else if (isValidTextNode(marker.nextSibling)) {\n              node = marker.nextSibling;\n              idx = 0;\n            } else if (isValidTextNode(marker.previousSibling)) {\n              node = marker.previousSibling;\n              idx = marker.previousSibling.data.length;\n            } else {\n              node = marker.parentNode;\n              idx = dom.nodeIndex(marker) + 1;\n            }\n          }\n          container = node;\n          offset = idx;\n        } else {\n          if (!keep) {\n            idx = dom.nodeIndex(marker);\n          } else {\n            if (marker.hasChildNodes()) {\n              node = marker.firstChild;\n              idx = 1;\n            } else if (isValidTextNode(marker.previousSibling)) {\n              node = marker.previousSibling;\n              idx = marker.previousSibling.data.length;\n            } else {\n              node = marker.parentNode;\n              idx = dom.nodeIndex(marker);\n            }\n          }\n          container = node;\n          offset = idx;\n        }\n        if (!keep) {\n          prev = marker.previousSibling;\n          next = marker.nextSibling;\n          Tools.each(Tools.grep(marker.childNodes), function (node) {\n            if (NodeType.isText(node)) {\n              node.nodeValue = node.nodeValue.replace(/\\uFEFF/g, '');\n            }\n          });\n          while (marker = dom.get(bookmark.id + '_' + suffix)) {\n            dom.remove(marker, true);\n          }\n          if (prev && next && prev.nodeType === next.nodeType && NodeType.isText(prev) && !Env.opera) {\n            idx = prev.nodeValue.length;\n            prev.appendData(next.nodeValue);\n            dom.remove(next);\n            if (suffix === 'start') {\n              container = prev;\n              offset = idx;\n            } else {\n              container = prev;\n              offset = idx;\n            }\n          }\n        }\n        return Option.some(CaretPosition$1(container, offset));\n      } else {\n        return Option.none();\n      }\n    };\n    var alt = function (o1, o2) {\n      return o1.isSome() ? o1 : o2;\n    };\n    var resolvePaths = function (dom, bookmark) {\n      var rng = dom.createRng();\n      if (setEndPoint(dom, true, bookmark, rng) && setEndPoint(dom, false, bookmark, rng)) {\n        return Option.some(rng);\n      } else {\n        return Option.none();\n      }\n    };\n    var resolveId = function (dom, bookmark) {\n      var startPos = restoreEndPoint(dom, 'start', bookmark);\n      var endPos = restoreEndPoint(dom, 'end', bookmark);\n      return liftN([\n        startPos,\n        alt(endPos, startPos)\n      ], function (spos, epos) {\n        var rng = dom.createRng();\n        rng.setStart(addBogus(dom, spos.container()), spos.offset());\n        rng.setEnd(addBogus(dom, epos.container()), epos.offset());\n        return rng;\n      });\n    };\n    var resolveIndex$1 = function (dom, bookmark) {\n      return Option.from(dom.select(bookmark.name)[bookmark.index]).map(function (elm) {\n        var rng = dom.createRng();\n        rng.selectNode(elm);\n        return rng;\n      });\n    };\n    var resolve$3 = function (selection, bookmark) {\n      var dom = selection.dom;\n      if (bookmark) {\n        if (isPathBookmark(bookmark)) {\n          return resolvePaths(dom, bookmark);\n        } else if (isStringPathBookmark(bookmark)) {\n          return Option.some(resolveCaretPositionBookmark(dom, bookmark));\n        } else if (isIdBookmark(bookmark)) {\n          return resolveId(dom, bookmark);\n        } else if (isIndexBookmark(bookmark)) {\n          return resolveIndex$1(dom, bookmark);\n        } else if (isRangeBookmark(bookmark)) {\n          return Option.some(bookmark.rng);\n        }\n      }\n      return Option.none();\n    };\n    var ResolveBookmark = { resolve: resolve$3 };\n\n    var getBookmark$1 = function (selection, type, normalized) {\n      return GetBookmark.getBookmark(selection, type, normalized);\n    };\n    var moveToBookmark = function (selection, bookmark) {\n      ResolveBookmark.resolve(selection, bookmark).each(function (rng) {\n        selection.setRng(rng);\n      });\n    };\n    var isBookmarkNode$1 = function (node) {\n      return NodeType.isElement(node) && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';\n    };\n    var Bookmarks = {\n      getBookmark: getBookmark$1,\n      moveToBookmark: moveToBookmark,\n      isBookmarkNode: isBookmarkNode$1\n    };\n\n    var isInlineBlock = function (node) {\n      return node && /^(IMG)$/.test(node.nodeName);\n    };\n    var moveStart = function (dom, selection, rng) {\n      var offset = rng.startOffset;\n      var container = rng.startContainer, walker, node, nodes;\n      if (rng.startContainer === rng.endContainer) {\n        if (isInlineBlock(rng.startContainer.childNodes[rng.startOffset])) {\n          return;\n        }\n      }\n      if (container.nodeType === 1) {\n        nodes = container.childNodes;\n        if (offset < nodes.length) {\n          container = nodes[offset];\n          walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));\n        } else {\n          container = nodes[nodes.length - 1];\n          walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));\n          walker.next(true);\n        }\n        for (node = walker.current(); node; node = walker.next()) {\n          if (node.nodeType === 3 && !isWhiteSpaceNode(node)) {\n            rng.setStart(node, 0);\n            selection.setRng(rng);\n            return;\n          }\n        }\n      }\n    };\n    var getNonWhiteSpaceSibling = function (node, next, inc) {\n      if (node) {\n        next = next ? 'nextSibling' : 'previousSibling';\n        for (node = inc ? node : node[next]; node; node = node[next]) {\n          if (node.nodeType === 1 || !isWhiteSpaceNode(node)) {\n            return node;\n          }\n        }\n      }\n    };\n    var isTextBlock$1 = function (editor, name) {\n      if (name.nodeType) {\n        name = name.nodeName;\n      }\n      return !!editor.schema.getTextBlockElements()[name.toLowerCase()];\n    };\n    var isValid = function (ed, parent, child) {\n      return ed.schema.isValidChild(parent, child);\n    };\n    var isWhiteSpaceNode = function (node) {\n      return node && node.nodeType === 3 && /^([\\t \\r\\n]+|)$/.test(node.nodeValue);\n    };\n    var replaceVars = function (value, vars) {\n      if (typeof value !== 'string') {\n        value = value(vars);\n      } else if (vars) {\n        value = value.replace(/%(\\w+)/g, function (str, name) {\n          return vars[name] || str;\n        });\n      }\n      return value;\n    };\n    var isEq = function (str1, str2) {\n      str1 = str1 || '';\n      str2 = str2 || '';\n      str1 = '' + (str1.nodeName || str1);\n      str2 = '' + (str2.nodeName || str2);\n      return str1.toLowerCase() === str2.toLowerCase();\n    };\n    var normalizeStyleValue = function (dom, value, name) {\n      if (name === 'color' || name === 'backgroundColor') {\n        value = dom.toHex(value);\n      }\n      if (name === 'fontWeight' && value === 700) {\n        value = 'bold';\n      }\n      if (name === 'fontFamily') {\n        value = value.replace(/[\\'\\\"]/g, '').replace(/,\\s+/g, ',');\n      }\n      return '' + value;\n    };\n    var getStyle = function (dom, node, name) {\n      return normalizeStyleValue(dom, dom.getStyle(node, name), name);\n    };\n    var getTextDecoration = function (dom, node) {\n      var decoration;\n      dom.getParent(node, function (n) {\n        decoration = dom.getStyle(n, 'text-decoration');\n        return decoration && decoration !== 'none';\n      });\n      return decoration;\n    };\n    var getParents$1 = function (dom, node, selector) {\n      return dom.getParents(node, selector, dom.getRoot());\n    };\n    var FormatUtils = {\n      isInlineBlock: isInlineBlock,\n      moveStart: moveStart,\n      getNonWhiteSpaceSibling: getNonWhiteSpaceSibling,\n      isTextBlock: isTextBlock$1,\n      isValid: isValid,\n      isWhiteSpaceNode: isWhiteSpaceNode,\n      replaceVars: replaceVars,\n      isEq: isEq,\n      normalizeStyleValue: normalizeStyleValue,\n      getStyle: getStyle,\n      getTextDecoration: getTextDecoration,\n      getParents: getParents$1\n    };\n\n    var isBookmarkNode$2 = Bookmarks.isBookmarkNode;\n    var getParents$2 = FormatUtils.getParents, isWhiteSpaceNode$1 = FormatUtils.isWhiteSpaceNode, isTextBlock$2 = FormatUtils.isTextBlock;\n    var findLeaf = function (node, offset) {\n      if (typeof offset === 'undefined') {\n        offset = node.nodeType === 3 ? node.length : node.childNodes.length;\n      }\n      while (node && node.hasChildNodes()) {\n        node = node.childNodes[offset];\n        if (node) {\n          offset = node.nodeType === 3 ? node.length : node.childNodes.length;\n        }\n      }\n      return {\n        node: node,\n        offset: offset\n      };\n    };\n    var excludeTrailingWhitespace = function (endContainer, endOffset) {\n      var leaf = findLeaf(endContainer, endOffset);\n      if (leaf.node) {\n        while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling) {\n          leaf = findLeaf(leaf.node.previousSibling);\n        }\n        if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 && leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') {\n          if (leaf.offset > 1) {\n            endContainer = leaf.node;\n            endContainer.splitText(leaf.offset - 1);\n          }\n        }\n      }\n      return endContainer;\n    };\n    var isBogusBr = function (node) {\n      return node.nodeName === 'BR' && node.getAttribute('data-mce-bogus') && !node.nextSibling;\n    };\n    var findParentContentEditable = function (dom, node) {\n      var parent = node;\n      while (parent) {\n        if (parent.nodeType === 1 && dom.getContentEditable(parent)) {\n          return dom.getContentEditable(parent) === 'false' ? parent : node;\n        }\n        parent = parent.parentNode;\n      }\n      return node;\n    };\n    var findSpace = function (start, remove, node, offset) {\n      var pos, pos2;\n      var str = node.nodeValue;\n      if (typeof offset === 'undefined') {\n        offset = start ? str.length : 0;\n      }\n      if (start) {\n        pos = str.lastIndexOf(' ', offset);\n        pos2 = str.lastIndexOf('\\xA0', offset);\n        pos = pos > pos2 ? pos : pos2;\n        if (pos !== -1 && !remove && (pos < offset || !start) && pos <= str.length) {\n          pos++;\n        }\n      } else {\n        pos = str.indexOf(' ', offset);\n        pos2 = str.indexOf('\\xA0', offset);\n        pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2;\n      }\n      return pos;\n    };\n    var findWordEndPoint = function (dom, body, container, offset, start, remove) {\n      var walker, node, pos, lastTextNode;\n      if (container.nodeType === 3) {\n        pos = findSpace(start, remove, container, offset);\n        if (pos !== -1) {\n          return {\n            container: container,\n            offset: pos\n          };\n        }\n        lastTextNode = container;\n      }\n      walker = new TreeWalker(container, dom.getParent(container, dom.isBlock) || body);\n      while (node = walker[start ? 'prev' : 'next']()) {\n        if (node.nodeType === 3 && !isBookmarkNode$2(node.parentNode)) {\n          lastTextNode = node;\n          pos = findSpace(start, remove, node);\n          if (pos !== -1) {\n            return {\n              container: node,\n              offset: pos\n            };\n          }\n        } else if (dom.isBlock(node) || FormatUtils.isEq(node, 'BR')) {\n          break;\n        }\n      }\n      if (lastTextNode) {\n        if (start) {\n          offset = 0;\n        } else {\n          offset = lastTextNode.length;\n        }\n        return {\n          container: lastTextNode,\n          offset: offset\n        };\n      }\n    };\n    var findSelectorEndPoint = function (dom, format, rng, container, siblingName) {\n      var parents, i, y, curFormat;\n      if (container.nodeType === 3 && container.nodeValue.length === 0 && container[siblingName]) {\n        container = container[siblingName];\n      }\n      parents = getParents$2(dom, container);\n      for (i = 0; i < parents.length; i++) {\n        for (y = 0; y < format.length; y++) {\n          curFormat = format[y];\n          if ('collapsed' in curFormat && curFormat.collapsed !== rng.collapsed) {\n            continue;\n          }\n          if (dom.is(parents[i], curFormat.selector)) {\n            return parents[i];\n          }\n        }\n      }\n      return container;\n    };\n    var findBlockEndPoint = function (editor, format, container, siblingName) {\n      var node;\n      var dom = editor.dom;\n      var root = dom.getRoot();\n      if (!format[0].wrapper) {\n        node = dom.getParent(container, format[0].block, root);\n      }\n      if (!node) {\n        var scopeRoot = dom.getParent(container, 'LI,TD,TH');\n        node = dom.getParent(container.nodeType === 3 ? container.parentNode : container, function (node) {\n          return node !== root && isTextBlock$2(editor, node);\n        }, scopeRoot);\n      }\n      if (node && format[0].wrapper) {\n        node = getParents$2(dom, node, 'ul,ol').reverse()[0] || node;\n      }\n      if (!node) {\n        node = container;\n        while (node[siblingName] && !dom.isBlock(node[siblingName])) {\n          node = node[siblingName];\n          if (FormatUtils.isEq(node, 'br')) {\n            break;\n          }\n        }\n      }\n      return node || container;\n    };\n    var findParentContainer = function (dom, format, startContainer, startOffset, endContainer, endOffset, start) {\n      var container, parent, sibling, siblingName, root;\n      container = parent = start ? startContainer : endContainer;\n      siblingName = start ? 'previousSibling' : 'nextSibling';\n      root = dom.getRoot();\n      if (container.nodeType === 3 && !isWhiteSpaceNode$1(container)) {\n        if (start ? startOffset > 0 : endOffset < container.nodeValue.length) {\n          return container;\n        }\n      }\n      while (true) {\n        if (!format[0].block_expand && dom.isBlock(parent)) {\n          return parent;\n        }\n        for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) {\n          if (!isBookmarkNode$2(sibling) && !isWhiteSpaceNode$1(sibling) && !isBogusBr(sibling)) {\n            return parent;\n          }\n        }\n        if (parent === root || parent.parentNode === root) {\n          container = parent;\n          break;\n        }\n        parent = parent.parentNode;\n      }\n      return container;\n    };\n    var expandRng = function (editor, rng, format, remove) {\n      var endPoint, startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset;\n      var dom = editor.dom;\n      if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) {\n        startContainer = getNode(startContainer, startOffset);\n        if (startContainer.nodeType === 3) {\n          startOffset = 0;\n        }\n      }\n      if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) {\n        endContainer = getNode(endContainer, rng.collapsed ? endOffset : endOffset - 1);\n        if (endContainer.nodeType === 3) {\n          endOffset = endContainer.nodeValue.length;\n        }\n      }\n      startContainer = findParentContentEditable(dom, startContainer);\n      endContainer = findParentContentEditable(dom, endContainer);\n      if (isBookmarkNode$2(startContainer.parentNode) || isBookmarkNode$2(startContainer)) {\n        startContainer = isBookmarkNode$2(startContainer) ? startContainer : startContainer.parentNode;\n        if (rng.collapsed) {\n          startContainer = startContainer.previousSibling || startContainer;\n        } else {\n          startContainer = startContainer.nextSibling || startContainer;\n        }\n        if (startContainer.nodeType === 3) {\n          startOffset = rng.collapsed ? startContainer.length : 0;\n        }\n      }\n      if (isBookmarkNode$2(endContainer.parentNode) || isBookmarkNode$2(endContainer)) {\n        endContainer = isBookmarkNode$2(endContainer) ? endContainer : endContainer.parentNode;\n        if (rng.collapsed) {\n          endContainer = endContainer.nextSibling || endContainer;\n        } else {\n          endContainer = endContainer.previousSibling || endContainer;\n        }\n        if (endContainer.nodeType === 3) {\n          endOffset = rng.collapsed ? 0 : endContainer.length;\n        }\n      }\n      if (rng.collapsed) {\n        endPoint = findWordEndPoint(dom, editor.getBody(), startContainer, startOffset, true, remove);\n        if (endPoint) {\n          startContainer = endPoint.container;\n          startOffset = endPoint.offset;\n        }\n        endPoint = findWordEndPoint(dom, editor.getBody(), endContainer, endOffset, false, remove);\n        if (endPoint) {\n          endContainer = endPoint.container;\n          endOffset = endPoint.offset;\n        }\n      }\n      if (format[0].inline) {\n        endContainer = remove ? endContainer : excludeTrailingWhitespace(endContainer, endOffset);\n      }\n      if (format[0].inline || format[0].block_expand) {\n        if (!format[0].inline || (startContainer.nodeType !== 3 || startOffset === 0)) {\n          startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true);\n        }\n        if (!format[0].inline || (endContainer.nodeType !== 3 || endOffset === endContainer.nodeValue.length)) {\n          endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false);\n        }\n      }\n      if (format[0].selector && format[0].expand !== false && !format[0].inline) {\n        startContainer = findSelectorEndPoint(dom, format, rng, startContainer, 'previousSibling');\n        endContainer = findSelectorEndPoint(dom, format, rng, endContainer, 'nextSibling');\n      }\n      if (format[0].block || format[0].selector) {\n        startContainer = findBlockEndPoint(editor, format, startContainer, 'previousSibling');\n        endContainer = findBlockEndPoint(editor, format, endContainer, 'nextSibling');\n        if (format[0].block) {\n          if (!dom.isBlock(startContainer)) {\n            startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true);\n          }\n          if (!dom.isBlock(endContainer)) {\n            endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false);\n          }\n        }\n      }\n      if (startContainer.nodeType === 1) {\n        startOffset = dom.nodeIndex(startContainer);\n        startContainer = startContainer.parentNode;\n      }\n      if (endContainer.nodeType === 1) {\n        endOffset = dom.nodeIndex(endContainer) + 1;\n        endContainer = endContainer.parentNode;\n      }\n      return {\n        startContainer: startContainer,\n        startOffset: startOffset,\n        endContainer: endContainer,\n        endOffset: endOffset\n      };\n    };\n    var ExpandRange = { expandRng: expandRng };\n\n    var each$8 = Tools.each;\n    var getEndChild = function (container, index) {\n      var childNodes = container.childNodes;\n      index--;\n      if (index > childNodes.length - 1) {\n        index = childNodes.length - 1;\n      } else if (index < 0) {\n        index = 0;\n      }\n      return childNodes[index] || container;\n    };\n    var walk$1 = function (dom, rng, callback) {\n      var startContainer = rng.startContainer;\n      var startOffset = rng.startOffset;\n      var endContainer = rng.endContainer;\n      var endOffset = rng.endOffset;\n      var ancestor;\n      var startPoint;\n      var endPoint;\n      var node;\n      var parent;\n      var siblings;\n      var nodes;\n      nodes = dom.select('td[data-mce-selected],th[data-mce-selected]');\n      if (nodes.length > 0) {\n        each$8(nodes, function (node) {\n          callback([node]);\n        });\n        return;\n      }\n      var exclude = function (nodes) {\n        var node;\n        node = nodes[0];\n        if (node.nodeType === 3 && node === startContainer && startOffset >= node.nodeValue.length) {\n          nodes.splice(0, 1);\n        }\n        node = nodes[nodes.length - 1];\n        if (endOffset === 0 && nodes.length > 0 && node === endContainer && node.nodeType === 3) {\n          nodes.splice(nodes.length - 1, 1);\n        }\n        return nodes;\n      };\n      var collectSiblings = function (node, name, endNode) {\n        var siblings = [];\n        for (; node && node !== endNode; node = node[name]) {\n          siblings.push(node);\n        }\n        return siblings;\n      };\n      var findEndPoint = function (node, root) {\n        do {\n          if (node.parentNode === root) {\n            return node;\n          }\n          node = node.parentNode;\n        } while (node);\n      };\n      var walkBoundary = function (startNode, endNode, next) {\n        var siblingName = next ? 'nextSibling' : 'previousSibling';\n        for (node = startNode, parent = node.parentNode; node && node !== endNode; node = parent) {\n          parent = node.parentNode;\n          siblings = collectSiblings(node === startNode ? node : node[siblingName], siblingName);\n          if (siblings.length) {\n            if (!next) {\n              siblings.reverse();\n            }\n            callback(exclude(siblings));\n          }\n        }\n      };\n      if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) {\n        startContainer = startContainer.childNodes[startOffset];\n      }\n      if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) {\n        endContainer = getEndChild(endContainer, endOffset);\n      }\n      if (startContainer === endContainer) {\n        return callback(exclude([startContainer]));\n      }\n      ancestor = dom.findCommonAncestor(startContainer, endContainer);\n      for (node = startContainer; node; node = node.parentNode) {\n        if (node === endContainer) {\n          return walkBoundary(startContainer, ancestor, true);\n        }\n        if (node === ancestor) {\n          break;\n        }\n      }\n      for (node = endContainer; node; node = node.parentNode) {\n        if (node === startContainer) {\n          return walkBoundary(endContainer, ancestor);\n        }\n        if (node === ancestor) {\n          break;\n        }\n      }\n      startPoint = findEndPoint(startContainer, ancestor) || startContainer;\n      endPoint = findEndPoint(endContainer, ancestor) || endContainer;\n      walkBoundary(startContainer, startPoint, true);\n      siblings = collectSiblings(startPoint === startContainer ? startPoint : startPoint.nextSibling, 'nextSibling', endPoint === endContainer ? endPoint.nextSibling : endPoint);\n      if (siblings.length) {\n        callback(exclude(siblings));\n      }\n      walkBoundary(endContainer, endPoint);\n    };\n    var RangeWalk = { walk: walk$1 };\n\n    var zeroWidth = function () {\n      return '\\uFEFF';\n    };\n\n    function NodeValue (is, name) {\n      var get = function (element) {\n        if (!is(element))\n          throw new Error('Can only get ' + name + ' value of a ' + name + ' node');\n        return getOption(element).getOr('');\n      };\n      var getOptionIE10 = function (element) {\n        try {\n          return getOptionSafe(element);\n        } catch (e) {\n          return Option.none();\n        }\n      };\n      var getOptionSafe = function (element) {\n        return is(element) ? Option.from(element.dom().nodeValue) : Option.none();\n      };\n      var browser = PlatformDetection$1.detect().browser;\n      var getOption = browser.isIE() && browser.version.major === 10 ? getOptionIE10 : getOptionSafe;\n      var set = function (element, value) {\n        if (!is(element))\n          throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');\n        element.dom().nodeValue = value;\n      };\n      return {\n        get: get,\n        getOption: getOption,\n        set: set\n      };\n    }\n\n    var api = NodeValue(isText, 'text');\n    var get$6 = function (element) {\n      return api.get(element);\n    };\n\n    var isZeroWidth = function (elem) {\n      return isText(elem) && get$6(elem) === zeroWidth();\n    };\n    var context = function (editor, elem, wrapName, nodeName) {\n      return parent(elem).fold(function () {\n        return 'skipping';\n      }, function (parent$$1) {\n        if (nodeName === 'br' || isZeroWidth(elem)) {\n          return 'valid';\n        } else if (isAnnotation(elem)) {\n          return 'existing';\n        } else if (isCaretNode(elem)) {\n          return 'caret';\n        } else if (!FormatUtils.isValid(editor, wrapName, nodeName) || !FormatUtils.isValid(editor, name(parent$$1), wrapName)) {\n          return 'invalid-child';\n        } else {\n          return 'valid';\n        }\n      });\n    };\n\n    var shouldApplyToTrailingSpaces = function (rng) {\n      return rng.startContainer.nodeType === 3 && rng.startContainer.nodeValue.length >= rng.startOffset && rng.startContainer.nodeValue[rng.startOffset] === '\\xA0';\n    };\n    var applyWordGrab = function (editor, rng) {\n      var r = ExpandRange.expandRng(editor, rng, [{ inline: true }], shouldApplyToTrailingSpaces(rng));\n      rng.setStart(r.startContainer, r.startOffset);\n      rng.setEnd(r.endContainer, r.endOffset);\n      editor.selection.setRng(rng);\n    };\n    var makeAnnotation = function (eDoc, _a, annotationName, decorate) {\n      var _b = _a.uid, uid = _b === void 0 ? generate('mce-annotation') : _b, data = __rest(_a, ['uid']);\n      var master = Element$$1.fromTag('span', eDoc);\n      add$2(master, annotation());\n      set(master, '' + dataAnnotationId(), uid);\n      set(master, '' + dataAnnotation(), annotationName);\n      var _c = decorate(uid, data), _d = _c.attributes, attributes = _d === void 0 ? {} : _d, _e = _c.classes, classes = _e === void 0 ? [] : _e;\n      setAll(master, attributes);\n      add$3(master, classes);\n      return master;\n    };\n    var annotate = function (editor, rng, annotationName, decorate, data) {\n      var newWrappers = [];\n      var master = makeAnnotation(editor.getDoc(), data, annotationName, decorate);\n      var wrapper = Cell(Option.none());\n      var finishWrapper = function () {\n        wrapper.set(Option.none());\n      };\n      var getOrOpenWrapper = function () {\n        return wrapper.get().getOrThunk(function () {\n          var nu = shallow(master);\n          newWrappers.push(nu);\n          wrapper.set(Option.some(nu));\n          return nu;\n        });\n      };\n      var processElements = function (elems) {\n        each(elems, processElement);\n      };\n      var processElement = function (elem) {\n        var ctx = context(editor, elem, 'span', name(elem));\n        switch (ctx) {\n        case 'invalid-child': {\n            finishWrapper();\n            var children$$1 = children(elem);\n            processElements(children$$1);\n            finishWrapper();\n            break;\n          }\n        case 'valid': {\n            var w = getOrOpenWrapper();\n            wrap$1(elem, w);\n            break;\n          }\n        case 'skipping':\n        case 'existing':\n        case 'caret':\n        }\n      };\n      var processNodes = function (nodes) {\n        var elems = map(nodes, Element$$1.fromDom);\n        processElements(elems);\n      };\n      RangeWalk.walk(editor.dom, rng, function (nodes) {\n        finishWrapper();\n        processNodes(nodes);\n      });\n      return newWrappers;\n    };\n    var annotateWithBookmark = function (editor, name$$1, settings, data) {\n      editor.undoManager.transact(function () {\n        var initialRng = editor.selection.getRng();\n        if (initialRng.collapsed) {\n          applyWordGrab(editor, initialRng);\n        }\n        if (editor.selection.getRng().collapsed) {\n          var wrapper = makeAnnotation(editor.getDoc(), data, name$$1, settings.decorate);\n          set$2(wrapper, '\\xA0');\n          editor.selection.getRng().insertNode(wrapper.dom());\n          editor.selection.select(wrapper.dom());\n        } else {\n          var bookmark = GetBookmark.getPersistentBookmark(editor.selection, false);\n          var rng = editor.selection.getRng();\n          annotate(editor, rng, name$$1, settings.decorate, data);\n          editor.selection.moveToBookmark(bookmark);\n        }\n      });\n    };\n\n    function Annotator (editor) {\n      var registry = create$1();\n      setup$1(editor, registry);\n      var changes = setup(editor, registry);\n      return {\n        register: function (name, settings) {\n          registry.register(name, settings);\n        },\n        annotate: function (name, data) {\n          registry.lookup(name).each(function (settings) {\n            annotateWithBookmark(editor, name, settings, data);\n          });\n        },\n        annotationChanged: function (name, callback) {\n          changes.addListener(name, callback);\n        },\n        remove: function (name) {\n          identify(editor, Option.some(name)).each(function (_a) {\n            var elements = _a.elements;\n            each(elements, unwrap);\n          });\n        },\n        getAll: function (name) {\n          var directory = findAll(editor, name);\n          return map$2(directory, function (elems) {\n            return map(elems, function (elem) {\n              return elem.dom();\n            });\n          });\n        }\n      };\n    }\n\n    var hasOnlyOneChild = function (node) {\n      return node.firstChild && node.firstChild === node.lastChild;\n    };\n    var isPaddingNode = function (node) {\n      return node.name === 'br' || node.value === '\\xA0';\n    };\n    var isPaddedEmptyBlock = function (schema, node) {\n      var blockElements = schema.getBlockElements();\n      return blockElements[node.name] && hasOnlyOneChild(node) && isPaddingNode(node.firstChild);\n    };\n    var isEmptyFragmentElement = function (schema, node) {\n      var nonEmptyElements = schema.getNonEmptyElements();\n      return node && (node.isEmpty(nonEmptyElements) || isPaddedEmptyBlock(schema, node));\n    };\n    var isListFragment = function (schema, fragment) {\n      var firstChild = fragment.firstChild;\n      var lastChild = fragment.lastChild;\n      if (firstChild && firstChild.name === 'meta') {\n        firstChild = firstChild.next;\n      }\n      if (lastChild && lastChild.attr('id') === 'mce_marker') {\n        lastChild = lastChild.prev;\n      }\n      if (isEmptyFragmentElement(schema, lastChild)) {\n        lastChild = lastChild.prev;\n      }\n      if (!firstChild || firstChild !== lastChild) {\n        return false;\n      }\n      return firstChild.name === 'ul' || firstChild.name === 'ol';\n    };\n    var cleanupDomFragment = function (domFragment) {\n      var firstChild = domFragment.firstChild;\n      var lastChild = domFragment.lastChild;\n      if (firstChild && firstChild.nodeName === 'META') {\n        firstChild.parentNode.removeChild(firstChild);\n      }\n      if (lastChild && lastChild.id === 'mce_marker') {\n        lastChild.parentNode.removeChild(lastChild);\n      }\n      return domFragment;\n    };\n    var toDomFragment = function (dom, serializer, fragment) {\n      var html = serializer.serialize(fragment);\n      var domFragment = dom.createFragment(html);\n      return cleanupDomFragment(domFragment);\n    };\n    var listItems$1 = function (elm) {\n      return Tools.grep(elm.childNodes, function (child) {\n        return child.nodeName === 'LI';\n      });\n    };\n    var isPadding = function (node) {\n      return node.data === '\\xA0' || NodeType.isBr(node);\n    };\n    var isListItemPadded = function (node) {\n      return node && node.firstChild && node.firstChild === node.lastChild && isPadding(node.firstChild);\n    };\n    var isEmptyOrPadded = function (elm) {\n      return !elm.firstChild || isListItemPadded(elm);\n    };\n    var trimListItems = function (elms) {\n      return elms.length > 0 && isEmptyOrPadded(elms[elms.length - 1]) ? elms.slice(0, -1) : elms;\n    };\n    var getParentLi = function (dom, node) {\n      var parentBlock = dom.getParent(node, dom.isBlock);\n      return parentBlock && parentBlock.nodeName === 'LI' ? parentBlock : null;\n    };\n    var isParentBlockLi = function (dom, node) {\n      return !!getParentLi(dom, node);\n    };\n    var getSplit = function (parentNode, rng) {\n      var beforeRng = rng.cloneRange();\n      var afterRng = rng.cloneRange();\n      beforeRng.setStartBefore(parentNode);\n      afterRng.setEndAfter(parentNode);\n      return [\n        beforeRng.cloneContents(),\n        afterRng.cloneContents()\n      ];\n    };\n    var findFirstIn = function (node, rootNode) {\n      var caretPos = CaretPosition$1.before(node);\n      var caretWalker = CaretWalker(rootNode);\n      var newCaretPos = caretWalker.next(caretPos);\n      return newCaretPos ? newCaretPos.toRange() : null;\n    };\n    var findLastOf = function (node, rootNode) {\n      var caretPos = CaretPosition$1.after(node);\n      var caretWalker = CaretWalker(rootNode);\n      var newCaretPos = caretWalker.prev(caretPos);\n      return newCaretPos ? newCaretPos.toRange() : null;\n    };\n    var insertMiddle = function (target, elms, rootNode, rng) {\n      var parts = getSplit(target, rng);\n      var parentElm = target.parentNode;\n      parentElm.insertBefore(parts[0], target);\n      Tools.each(elms, function (li) {\n        parentElm.insertBefore(li, target);\n      });\n      parentElm.insertBefore(parts[1], target);\n      parentElm.removeChild(target);\n      return findLastOf(elms[elms.length - 1], rootNode);\n    };\n    var insertBefore = function (target, elms, rootNode) {\n      var parentElm = target.parentNode;\n      Tools.each(elms, function (elm) {\n        parentElm.insertBefore(elm, target);\n      });\n      return findFirstIn(target, rootNode);\n    };\n    var insertAfter = function (target, elms, rootNode, dom) {\n      dom.insertAfter(elms.reverse(), target);\n      return findLastOf(elms[0], rootNode);\n    };\n    var insertAtCaret = function (serializer, dom, rng, fragment) {\n      var domFragment = toDomFragment(dom, serializer, fragment);\n      var liTarget = getParentLi(dom, rng.startContainer);\n      var liElms = trimListItems(listItems$1(domFragment.firstChild));\n      var BEGINNING = 1, END = 2;\n      var rootNode = dom.getRoot();\n      var isAt = function (location) {\n        var caretPos = CaretPosition$1.fromRangeStart(rng);\n        var caretWalker = CaretWalker(dom.getRoot());\n        var newPos = location === BEGINNING ? caretWalker.prev(caretPos) : caretWalker.next(caretPos);\n        return newPos ? getParentLi(dom, newPos.getNode()) !== liTarget : true;\n      };\n      if (isAt(BEGINNING)) {\n        return insertBefore(liTarget, liElms, rootNode);\n      } else if (isAt(END)) {\n        return insertAfter(liTarget, liElms, rootNode, dom);\n      }\n      return insertMiddle(liTarget, liElms, rootNode, rng);\n    };\n    var InsertList = {\n      isListFragment: isListFragment,\n      insertAtCaret: insertAtCaret,\n      isParentBlockLi: isParentBlockLi,\n      trimListItems: trimListItems,\n      listItems: listItems$1\n    };\n\n    var each$9 = Tools.each;\n    var ElementUtils = function (dom) {\n      this.compare = function (node1, node2) {\n        if (node1.nodeName !== node2.nodeName) {\n          return false;\n        }\n        var getAttribs = function (node) {\n          var attribs = {};\n          each$9(dom.getAttribs(node), function (attr) {\n            var name = attr.nodeName.toLowerCase();\n            if (name.indexOf('_') !== 0 && name !== 'style' && name.indexOf('data-') !== 0) {\n              attribs[name] = dom.getAttrib(node, name);\n            }\n          });\n          return attribs;\n        };\n        var compareObjects = function (obj1, obj2) {\n          var value, name;\n          for (name in obj1) {\n            if (obj1.hasOwnProperty(name)) {\n              value = obj2[name];\n              if (typeof value === 'undefined') {\n                return false;\n              }\n              if (obj1[name] !== value) {\n                return false;\n              }\n              delete obj2[name];\n            }\n          }\n          for (name in obj2) {\n            if (obj2.hasOwnProperty(name)) {\n              return false;\n            }\n          }\n          return true;\n        };\n        if (!compareObjects(getAttribs(node1), getAttribs(node2))) {\n          return false;\n        }\n        if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) {\n          return false;\n        }\n        return !Bookmarks.isBookmarkNode(node1) && !Bookmarks.isBookmarkNode(node2);\n      };\n    };\n\n    var getLastChildren = function (elm) {\n      var children$$1 = [];\n      var rawNode = elm.dom();\n      while (rawNode) {\n        children$$1.push(Element$$1.fromDom(rawNode));\n        rawNode = rawNode.lastChild;\n      }\n      return children$$1;\n    };\n    var removeTrailingBr = function (elm) {\n      var allBrs = descendants$1(elm, 'br');\n      var brs = filter(getLastChildren(elm).slice(-1), isBr);\n      if (allBrs.length === brs.length) {\n        each(brs, remove$2);\n      }\n    };\n    var fillWithPaddingBr = function (elm) {\n      empty(elm);\n      append(elm, Element$$1.fromHtml('<br data-mce-bogus=\"1\">'));\n    };\n    var isPaddingContents = function (elm) {\n      return isText(elm) ? get$6(elm) === '\\xA0' : isBr(elm);\n    };\n    var isPaddedElement = function (elm) {\n      return filter(children(elm), isPaddingContents).length === 1;\n    };\n    var trimBlockTrailingBr = function (elm) {\n      lastChild(elm).each(function (lastChild$$1) {\n        prevSibling(lastChild$$1).each(function (lastChildPrevSibling) {\n          if (isBlock(elm) && isBr(lastChild$$1) && isBlock(lastChildPrevSibling)) {\n            remove$2(lastChild$$1);\n          }\n        });\n      });\n    };\n    var PaddingBr = {\n      removeTrailingBr: removeTrailingBr,\n      fillWithPaddingBr: fillWithPaddingBr,\n      isPaddedElement: isPaddedElement,\n      trimBlockTrailingBr: trimBlockTrailingBr\n    };\n\n    var makeMap$3 = Tools.makeMap;\n    function Writer (settings) {\n      var html = [];\n      var indent, indentBefore, indentAfter, encode, htmlOutput;\n      settings = settings || {};\n      indent = settings.indent;\n      indentBefore = makeMap$3(settings.indent_before || '');\n      indentAfter = makeMap$3(settings.indent_after || '');\n      encode = Entities.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);\n      htmlOutput = settings.element_format === 'html';\n      return {\n        start: function (name, attrs, empty) {\n          var i, l, attr, value;\n          if (indent && indentBefore[name] && html.length > 0) {\n            value = html[html.length - 1];\n            if (value.length > 0 && value !== '\\n') {\n              html.push('\\n');\n            }\n          }\n          html.push('<', name);\n          if (attrs) {\n            for (i = 0, l = attrs.length; i < l; i++) {\n              attr = attrs[i];\n              html.push(' ', attr.name, '=\"', encode(attr.value, true), '\"');\n            }\n          }\n          if (!empty || htmlOutput) {\n            html[html.length] = '>';\n          } else {\n            html[html.length] = ' />';\n          }\n          if (empty && indent && indentAfter[name] && html.length > 0) {\n            value = html[html.length - 1];\n            if (value.length > 0 && value !== '\\n') {\n              html.push('\\n');\n            }\n          }\n        },\n        end: function (name) {\n          var value;\n          html.push('</', name, '>');\n          if (indent && indentAfter[name] && html.length > 0) {\n            value = html[html.length - 1];\n            if (value.length > 0 && value !== '\\n') {\n              html.push('\\n');\n            }\n          }\n        },\n        text: function (text, raw) {\n          if (text.length > 0) {\n            html[html.length] = raw ? text : encode(text);\n          }\n        },\n        cdata: function (text) {\n          html.push('<![CDATA[', text, ']]>');\n        },\n        comment: function (text) {\n          html.push('<!--', text, '-->');\n        },\n        pi: function (name, text) {\n          if (text) {\n            html.push('<?', name, ' ', encode(text), '?>');\n          } else {\n            html.push('<?', name, '?>');\n          }\n          if (indent) {\n            html.push('\\n');\n          }\n        },\n        doctype: function (text) {\n          html.push('<!DOCTYPE', text, '>', indent ? '\\n' : '');\n        },\n        reset: function () {\n          html.length = 0;\n        },\n        getContent: function () {\n          return html.join('').replace(/\\n$/, '');\n        }\n      };\n    }\n\n    function Serializer (settings, schema) {\n      if (schema === void 0) {\n        schema = Schema();\n      }\n      var writer = Writer(settings);\n      settings = settings || {};\n      settings.validate = 'validate' in settings ? settings.validate : true;\n      var serialize = function (node) {\n        var handlers, validate;\n        validate = settings.validate;\n        handlers = {\n          3: function (node) {\n            writer.text(node.value, node.raw);\n          },\n          8: function (node) {\n            writer.comment(node.value);\n          },\n          7: function (node) {\n            writer.pi(node.name, node.value);\n          },\n          10: function (node) {\n            writer.doctype(node.value);\n          },\n          4: function (node) {\n            writer.cdata(node.value);\n          },\n          11: function (node) {\n            if (node = node.firstChild) {\n              do {\n                walk(node);\n              } while (node = node.next);\n            }\n          }\n        };\n        writer.reset();\n        var walk = function (node) {\n          var handler = handlers[node.type];\n          var name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule;\n          if (!handler) {\n            name = node.name;\n            isEmpty = node.shortEnded;\n            attrs = node.attributes;\n            if (validate && attrs && attrs.length > 1) {\n              sortedAttrs = [];\n              sortedAttrs.map = {};\n              elementRule = schema.getElementRule(node.name);\n              if (elementRule) {\n                for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) {\n                  attrName = elementRule.attributesOrder[i];\n                  if (attrName in attrs.map) {\n                    attrValue = attrs.map[attrName];\n                    sortedAttrs.map[attrName] = attrValue;\n                    sortedAttrs.push({\n                      name: attrName,\n                      value: attrValue\n                    });\n                  }\n                }\n                for (i = 0, l = attrs.length; i < l; i++) {\n                  attrName = attrs[i].name;\n                  if (!(attrName in sortedAttrs.map)) {\n                    attrValue = attrs.map[attrName];\n                    sortedAttrs.map[attrName] = attrValue;\n                    sortedAttrs.push({\n                      name: attrName,\n                      value: attrValue\n                    });\n                  }\n                }\n                attrs = sortedAttrs;\n              }\n            }\n            writer.start(node.name, attrs, isEmpty);\n            if (!isEmpty) {\n              if (node = node.firstChild) {\n                do {\n                  walk(node);\n                } while (node = node.next);\n              }\n              writer.end(name);\n            }\n          } else {\n            handler(node);\n          }\n        };\n        if (node.type === 1 && !settings.inner) {\n          walk(node);\n        } else {\n          handlers[11](node);\n        }\n        return writer.getContent();\n      };\n      return { serialize: serialize };\n    }\n\n    var createRange$1 = function (sc, so, ec, eo) {\n      var rng = document.createRange();\n      rng.setStart(sc, so);\n      rng.setEnd(ec, eo);\n      return rng;\n    };\n    var normalizeBlockSelectionRange = function (rng) {\n      var startPos = CaretPosition$1.fromRangeStart(rng);\n      var endPos = CaretPosition$1.fromRangeEnd(rng);\n      var rootNode = rng.commonAncestorContainer;\n      return CaretFinder.fromPosition(false, rootNode, endPos).map(function (newEndPos) {\n        if (!isInSameBlock(startPos, endPos, rootNode) && isInSameBlock(startPos, newEndPos, rootNode)) {\n          return createRange$1(startPos.container(), startPos.offset(), newEndPos.container(), newEndPos.offset());\n        } else {\n          return rng;\n        }\n      }).getOr(rng);\n    };\n    var normalize = function (rng) {\n      return rng.collapsed ? rng : normalizeBlockSelectionRange(rng);\n    };\n    var RangeNormalizer = { normalize: normalize };\n\n    var isAfterNbsp = function (container, offset) {\n      return NodeType.isText(container) && container.nodeValue[offset - 1] === '\\xA0';\n    };\n    var trimOrPadLeftRight = function (rng, html) {\n      var container, offset;\n      container = rng.startContainer;\n      offset = rng.startOffset;\n      var hasSiblingText = function (siblingName) {\n        return container[siblingName] && container[siblingName].nodeType === 3;\n      };\n      if (container.nodeType === 3) {\n        if (offset > 0) {\n          html = html.replace(/^&nbsp;/, ' ');\n        } else if (!hasSiblingText('previousSibling')) {\n          html = html.replace(/^ /, '&nbsp;');\n        }\n        if (offset < container.length) {\n          html = html.replace(/&nbsp;(<br>|)$/, ' ');\n        } else if (!hasSiblingText('nextSibling')) {\n          html = html.replace(/(&nbsp;| )(<br>|)$/, '&nbsp;');\n        }\n      }\n      return html;\n    };\n    var trimNbspAfterDeleteAndPadValue = function (rng, value) {\n      var container, offset;\n      container = rng.startContainer;\n      offset = rng.startOffset;\n      if (container.nodeType === 3 && rng.collapsed) {\n        if (container.data[offset] === '\\xA0') {\n          container.deleteData(offset, 1);\n          if (!/[\\u00a0| ]$/.test(value)) {\n            value += ' ';\n          }\n        } else if (container.data[offset - 1] === '\\xA0') {\n          container.deleteData(offset - 1, 1);\n          if (!/[\\u00a0| ]$/.test(value)) {\n            value = ' ' + value;\n          }\n        }\n      }\n      return value;\n    };\n\n    var isTableCell$2 = NodeType.matchNodeNames('td th');\n    var selectionSetContent = function (editor, content) {\n      var rng = editor.selection.getRng();\n      var container = rng.startContainer;\n      var offset = rng.startOffset;\n      if (rng.collapsed && isAfterNbsp(container, offset) && NodeType.isText(container)) {\n        container.insertData(offset - 1, ' ');\n        container.deleteData(offset, 1);\n        rng.setStart(container, offset);\n        rng.setEnd(container, offset);\n        editor.selection.setRng(rng);\n      }\n      editor.selection.setContent(content);\n    };\n    var validInsertion = function (editor, value, parentNode) {\n      if (parentNode.getAttribute('data-mce-bogus') === 'all') {\n        parentNode.parentNode.insertBefore(editor.dom.createFragment(value), parentNode);\n      } else {\n        var node = parentNode.firstChild;\n        var node2 = parentNode.lastChild;\n        if (!node || node === node2 && node.nodeName === 'BR') {\n          editor.dom.setHTML(parentNode, value);\n        } else {\n          selectionSetContent(editor, value);\n        }\n      }\n    };\n    var trimBrsFromTableCell = function (dom, elm) {\n      Option.from(dom.getParent(elm, 'td,th')).map(Element$$1.fromDom).each(PaddingBr.trimBlockTrailingBr);\n    };\n    var reduceInlineTextElements = function (editor, merge) {\n      var textInlineElements = editor.schema.getTextInlineElements();\n      var dom = editor.dom;\n      if (merge) {\n        var root_1 = editor.getBody(), elementUtils_1 = new ElementUtils(dom);\n        Tools.each(dom.select('*[data-mce-fragment]'), function (node) {\n          for (var testNode = node.parentNode; testNode && testNode !== root_1; testNode = testNode.parentNode) {\n            if (textInlineElements[node.nodeName.toLowerCase()] && elementUtils_1.compare(testNode, node)) {\n              dom.remove(node, true);\n            }\n          }\n        });\n      }\n    };\n    var markFragmentElements = function (fragment) {\n      var node = fragment;\n      while (node = node.walk()) {\n        if (node.type === 1) {\n          node.attr('data-mce-fragment', '1');\n        }\n      }\n    };\n    var umarkFragmentElements = function (elm) {\n      Tools.each(elm.getElementsByTagName('*'), function (elm) {\n        elm.removeAttribute('data-mce-fragment');\n      });\n    };\n    var isPartOfFragment = function (node) {\n      return !!node.getAttribute('data-mce-fragment');\n    };\n    var canHaveChildren = function (editor, node) {\n      return node && !editor.schema.getShortEndedElements()[node.nodeName];\n    };\n    var moveSelectionToMarker = function (editor, marker) {\n      var parentEditableFalseElm, parentBlock, nextRng;\n      var dom = editor.dom, selection = editor.selection;\n      var node, node2;\n      var getContentEditableFalseParent = function (node) {\n        var root = editor.getBody();\n        for (; node && node !== root; node = node.parentNode) {\n          if (editor.dom.getContentEditable(node) === 'false') {\n            return node;\n          }\n        }\n        return null;\n      };\n      if (!marker) {\n        return;\n      }\n      editor.selection.scrollIntoView(marker);\n      parentEditableFalseElm = getContentEditableFalseParent(marker);\n      if (parentEditableFalseElm) {\n        dom.remove(marker);\n        selection.select(parentEditableFalseElm);\n        return;\n      }\n      var rng = dom.createRng();\n      node = marker.previousSibling;\n      if (node && node.nodeType === 3) {\n        rng.setStart(node, node.nodeValue.length);\n        if (!Env.ie) {\n          node2 = marker.nextSibling;\n          if (node2 && node2.nodeType === 3) {\n            node.appendData(node2.data);\n            node2.parentNode.removeChild(node2);\n          }\n        }\n      } else {\n        rng.setStartBefore(marker);\n        rng.setEndBefore(marker);\n      }\n      var findNextCaretRng = function (rng) {\n        var caretPos = CaretPosition$1.fromRangeStart(rng);\n        var caretWalker = CaretWalker(editor.getBody());\n        caretPos = caretWalker.next(caretPos);\n        if (caretPos) {\n          return caretPos.toRange();\n        }\n      };\n      parentBlock = dom.getParent(marker, dom.isBlock);\n      dom.remove(marker);\n      if (parentBlock && dom.isEmpty(parentBlock)) {\n        editor.$(parentBlock).empty();\n        rng.setStart(parentBlock, 0);\n        rng.setEnd(parentBlock, 0);\n        if (!isTableCell$2(parentBlock) && !isPartOfFragment(parentBlock) && (nextRng = findNextCaretRng(rng))) {\n          rng = nextRng;\n          dom.remove(parentBlock);\n        } else {\n          dom.add(parentBlock, dom.create('br', { 'data-mce-bogus': '1' }));\n        }\n      }\n      selection.setRng(rng);\n    };\n    var insertHtmlAtCaret = function (editor, value, details) {\n      var parser, serializer, parentNode, rootNode, fragment, args;\n      var marker, rng, node, bookmarkHtml, merge;\n      var selection = editor.selection, dom = editor.dom;\n      if (/^ | $/.test(value)) {\n        value = trimOrPadLeftRight(selection.getRng(), value);\n      }\n      parser = editor.parser;\n      merge = details.merge;\n      serializer = Serializer({ validate: editor.settings.validate }, editor.schema);\n      bookmarkHtml = '<span id=\"mce_marker\" data-mce-type=\"bookmark\">&#xFEFF;&#x200B;</span>';\n      args = {\n        content: value,\n        format: 'html',\n        selection: true,\n        paste: details.paste\n      };\n      args = editor.fire('BeforeSetContent', args);\n      if (args.isDefaultPrevented()) {\n        editor.fire('SetContent', {\n          content: args.content,\n          format: 'html',\n          selection: true,\n          paste: details.paste\n        });\n        return;\n      }\n      value = args.content;\n      if (value.indexOf('{$caret}') === -1) {\n        value += '{$caret}';\n      }\n      value = value.replace(/\\{\\$caret\\}/, bookmarkHtml);\n      rng = selection.getRng();\n      var caretElement = rng.startContainer || (rng.parentElement ? rng.parentElement() : null);\n      var body = editor.getBody();\n      if (caretElement === body && selection.isCollapsed()) {\n        if (dom.isBlock(body.firstChild) && canHaveChildren(editor, body.firstChild) && dom.isEmpty(body.firstChild)) {\n          rng = dom.createRng();\n          rng.setStart(body.firstChild, 0);\n          rng.setEnd(body.firstChild, 0);\n          selection.setRng(rng);\n        }\n      }\n      if (!selection.isCollapsed()) {\n        editor.selection.setRng(RangeNormalizer.normalize(editor.selection.getRng()));\n        editor.getDoc().execCommand('Delete', false, null);\n        value = trimNbspAfterDeleteAndPadValue(editor.selection.getRng(), value);\n      }\n      parentNode = selection.getNode();\n      var parserArgs = {\n        context: parentNode.nodeName.toLowerCase(),\n        data: details.data,\n        insert: true\n      };\n      fragment = parser.parse(value, parserArgs);\n      if (details.paste === true && InsertList.isListFragment(editor.schema, fragment) && InsertList.isParentBlockLi(dom, parentNode)) {\n        rng = InsertList.insertAtCaret(serializer, dom, editor.selection.getRng(), fragment);\n        editor.selection.setRng(rng);\n        editor.fire('SetContent', args);\n        return;\n      }\n      markFragmentElements(fragment);\n      node = fragment.lastChild;\n      if (node.attr('id') === 'mce_marker') {\n        marker = node;\n        for (node = node.prev; node; node = node.walk(true)) {\n          if (node.type === 3 || !dom.isBlock(node.name)) {\n            if (editor.schema.isValidChild(node.parent.name, 'span')) {\n              node.parent.insert(marker, node, node.name === 'br');\n            }\n            break;\n          }\n        }\n      }\n      editor._selectionOverrides.showBlockCaretContainer(parentNode);\n      if (!parserArgs.invalid) {\n        value = serializer.serialize(fragment);\n        validInsertion(editor, value, parentNode);\n      } else {\n        selectionSetContent(editor, bookmarkHtml);\n        parentNode = selection.getNode();\n        rootNode = editor.getBody();\n        if (parentNode.nodeType === 9) {\n          parentNode = node = rootNode;\n        } else {\n          node = parentNode;\n        }\n        while (node !== rootNode) {\n          parentNode = node;\n          node = node.parentNode;\n        }\n        value = parentNode === rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode);\n        value = serializer.serialize(parser.parse(value.replace(/<span (id=\"mce_marker\"|id=mce_marker).+?<\\/span>/i, function () {\n          return serializer.serialize(fragment);\n        })));\n        if (parentNode === rootNode) {\n          dom.setHTML(rootNode, value);\n        } else {\n          dom.setOuterHTML(parentNode, value);\n        }\n      }\n      reduceInlineTextElements(editor, merge);\n      moveSelectionToMarker(editor, dom.get('mce_marker'));\n      umarkFragmentElements(editor.getBody());\n      trimBrsFromTableCell(editor.dom, editor.selection.getStart());\n      editor.fire('SetContent', args);\n      editor.addVisual();\n    };\n    var processValue = function (value) {\n      var details;\n      if (typeof value !== 'string') {\n        details = Tools.extend({\n          paste: value.paste,\n          data: { paste: value.paste }\n        }, value);\n        return {\n          content: value.content,\n          details: details\n        };\n      }\n      return {\n        content: value,\n        details: {}\n      };\n    };\n    var insertAtCaret$1 = function (editor, value) {\n      var result = processValue(value);\n      insertHtmlAtCaret(editor, result.content, result.details);\n    };\n    var InsertContent = { insertAtCaret: insertAtCaret$1 };\n\n    var sectionResult = Immutable('sections', 'settings');\n    var detection = PlatformDetection$1.detect();\n    var isTouch = detection.deviceType.isTouch();\n    var mobilePlugins = [\n      'lists',\n      'autolink',\n      'autosave'\n    ];\n    var defaultMobileSettings = { theme: 'mobile' };\n    var normalizePlugins = function (plugins) {\n      var pluginNames = isArray(plugins) ? plugins.join(' ') : plugins;\n      var trimmedPlugins = map(isString(pluginNames) ? pluginNames.split(' ') : [], trim$2);\n      return filter(trimmedPlugins, function (item) {\n        return item.length > 0;\n      });\n    };\n    var filterMobilePlugins = function (plugins) {\n      return filter(plugins, curry(contains, mobilePlugins));\n    };\n    var extractSections = function (keys$$1, settings) {\n      var result = bifilter(settings, function (value, key) {\n        return contains(keys$$1, key);\n      });\n      return sectionResult(result.t, result.f);\n    };\n    var getSection = function (sectionResult, name, defaults) {\n      var sections = sectionResult.sections();\n      var sectionSettings = sections.hasOwnProperty(name) ? sections[name] : {};\n      return Tools.extend({}, defaults, sectionSettings);\n    };\n    var hasSection = function (sectionResult, name) {\n      return sectionResult.sections().hasOwnProperty(name);\n    };\n    var getDefaultSettings = function (id, documentBaseUrl, editor) {\n      return {\n        id: id,\n        theme: 'modern',\n        delta_width: 0,\n        delta_height: 0,\n        popup_css: '',\n        plugins: '',\n        document_base_url: documentBaseUrl,\n        add_form_submit_trigger: true,\n        submit_patch: true,\n        add_unload_trigger: true,\n        convert_urls: true,\n        relative_urls: true,\n        remove_script_host: true,\n        object_resizing: true,\n        doctype: '<!DOCTYPE html>',\n        visual: true,\n        font_size_style_values: 'xx-small,x-small,small,medium,large,x-large,xx-large',\n        font_size_legacy_values: 'xx-small,small,medium,large,x-large,xx-large,300%',\n        forced_root_block: 'p',\n        hidden_input: true,\n        render_ui: true,\n        indentation: '40px',\n        inline_styles: true,\n        convert_fonts_to_spans: true,\n        indent: 'simple',\n        indent_before: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist',\n        indent_after: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist',\n        entity_encoding: 'named',\n        url_converter: editor.convertURL,\n        url_converter_scope: editor,\n        ie7_compat: true\n      };\n    };\n    var getExternalPlugins = function (overrideSettings, settings) {\n      var userDefinedExternalPlugins = settings.external_plugins ? settings.external_plugins : {};\n      if (overrideSettings && overrideSettings.external_plugins) {\n        return Tools.extend({}, overrideSettings.external_plugins, userDefinedExternalPlugins);\n      } else {\n        return userDefinedExternalPlugins;\n      }\n    };\n    var combinePlugins = function (forcedPlugins, plugins) {\n      return [].concat(normalizePlugins(forcedPlugins)).concat(normalizePlugins(plugins));\n    };\n    var processPlugins = function (isTouchDevice, sectionResult, defaultOverrideSettings, settings) {\n      var forcedPlugins = normalizePlugins(defaultOverrideSettings.forced_plugins);\n      var plugins = normalizePlugins(settings.plugins);\n      var platformPlugins = isTouchDevice && hasSection(sectionResult, 'mobile') ? filterMobilePlugins(plugins) : plugins;\n      var combinedPlugins = combinePlugins(forcedPlugins, platformPlugins);\n      return Tools.extend(settings, { plugins: combinedPlugins.join(' ') });\n    };\n    var isOnMobile = function (isTouchDevice, sectionResult) {\n      var isInline = sectionResult.settings().inline;\n      return isTouchDevice && hasSection(sectionResult, 'mobile') && !isInline;\n    };\n    var combineSettings = function (isTouchDevice, defaultSettings, defaultOverrideSettings, settings) {\n      var sectionResult = extractSections(['mobile'], settings);\n      var extendedSettings = Tools.extend(defaultSettings, defaultOverrideSettings, sectionResult.settings(), isOnMobile(isTouchDevice, sectionResult) ? getSection(sectionResult, 'mobile', defaultMobileSettings) : {}, {\n        validate: true,\n        content_editable: sectionResult.settings().inline,\n        external_plugins: getExternalPlugins(defaultOverrideSettings, sectionResult.settings())\n      });\n      return processPlugins(isTouchDevice, sectionResult, defaultOverrideSettings, extendedSettings);\n    };\n    var getEditorSettings = function (editor, id, documentBaseUrl, defaultOverrideSettings, settings) {\n      var defaultSettings = getDefaultSettings(id, documentBaseUrl, editor);\n      return combineSettings(isTouch, defaultSettings, defaultOverrideSettings, settings);\n    };\n    var getFiltered = function (predicate, editor, name) {\n      return Option.from(editor.settings[name]).filter(predicate);\n    };\n    var getString = curry(getFiltered, isString);\n    var getParamObject = function (value) {\n      var output = {};\n      if (typeof value === 'string') {\n        each(value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(','), function (val) {\n          var arr = val.split('=');\n          if (arr.length > 1) {\n            output[Tools.trim(arr[0])] = Tools.trim(arr[1]);\n          } else {\n            output[Tools.trim(arr[0])] = Tools.trim(arr);\n          }\n        });\n      } else {\n        output = value;\n      }\n      return output;\n    };\n    var isArrayOf = function (p) {\n      return function (a) {\n        return isArray(a) && forall(a, p);\n      };\n    };\n    var getParam = function (editor, name, defaultVal, type) {\n      var value = name in editor.settings ? editor.settings[name] : defaultVal;\n      if (type === 'hash') {\n        return getParamObject(value);\n      } else if (type === 'string') {\n        return getFiltered(isString, editor, name).getOr(defaultVal);\n      } else if (type === 'number') {\n        return getFiltered(isNumber, editor, name).getOr(defaultVal);\n      } else if (type === 'boolean') {\n        return getFiltered(isBoolean, editor, name).getOr(defaultVal);\n      } else if (type === 'object') {\n        return getFiltered(isObject, editor, name).getOr(defaultVal);\n      } else if (type === 'array') {\n        return getFiltered(isArray, editor, name).getOr(defaultVal);\n      } else if (type === 'string[]') {\n        return getFiltered(isArrayOf(isString), editor, name).getOr(defaultVal);\n      } else if (type === 'function') {\n        return getFiltered(isFunction, editor, name).getOr(defaultVal);\n      } else {\n        return value;\n      }\n    };\n\n    var strongRtl = /[\\u0591-\\u07FF\\uFB1D-\\uFDFF\\uFE70-\\uFEFC]/;\n    var hasStrongRtl = function (text) {\n      return strongRtl.test(text);\n    };\n\n    var isInlineTarget = function (editor, elm) {\n      var selector = getString(editor, 'inline_boundaries_selector').getOr('a[href],code');\n      return is$1(Element$$1.fromDom(elm), selector);\n    };\n    var isRtl = function (element) {\n      return DOMUtils$1.DOM.getStyle(element, 'direction', true) === 'rtl' || hasStrongRtl(element.textContent);\n    };\n    var findInlineParents = function (isInlineTarget, rootNode, pos) {\n      return filter(DOMUtils$1.DOM.getParents(pos.container(), '*', rootNode), isInlineTarget);\n    };\n    var findRootInline = function (isInlineTarget, rootNode, pos) {\n      var parents = findInlineParents(isInlineTarget, rootNode, pos);\n      return Option.from(parents[parents.length - 1]);\n    };\n    var hasSameParentBlock = function (rootNode, node1, node2) {\n      var block1 = getParentBlock(node1, rootNode);\n      var block2 = getParentBlock(node2, rootNode);\n      return block1 && block1 === block2;\n    };\n    var isAtZwsp = function (pos) {\n      return isBeforeInline(pos) || isAfterInline(pos);\n    };\n    var normalizePosition = function (forward, pos) {\n      var container = pos.container(), offset = pos.offset();\n      if (forward) {\n        if (isCaretContainerInline(container)) {\n          if (NodeType.isText(container.nextSibling)) {\n            return CaretPosition$1(container.nextSibling, 0);\n          } else {\n            return CaretPosition$1.after(container);\n          }\n        } else {\n          return isBeforeInline(pos) ? CaretPosition$1(container, offset + 1) : pos;\n        }\n      } else {\n        if (isCaretContainerInline(container)) {\n          if (NodeType.isText(container.previousSibling)) {\n            return CaretPosition$1(container.previousSibling, container.previousSibling.data.length);\n          } else {\n            return CaretPosition$1.before(container);\n          }\n        } else {\n          return isAfterInline(pos) ? CaretPosition$1(container, offset - 1) : pos;\n        }\n      }\n    };\n    var normalizeForwards = curry(normalizePosition, true);\n    var normalizeBackwards = curry(normalizePosition, false);\n    var InlineUtils = {\n      isInlineTarget: isInlineTarget,\n      findRootInline: findRootInline,\n      isRtl: isRtl,\n      isAtZwsp: isAtZwsp,\n      normalizePosition: normalizePosition,\n      normalizeForwards: normalizeForwards,\n      normalizeBackwards: normalizeBackwards,\n      hasSameParentBlock: hasSameParentBlock\n    };\n\n    var isBeforeRoot = function (rootNode) {\n      return function (elm) {\n        return eq(rootNode, Element$$1.fromDom(elm.dom().parentNode));\n      };\n    };\n    var getParentBlock$1 = function (rootNode, elm) {\n      return contains$3(rootNode, elm) ? closest(elm, function (element) {\n        return isTextBlock(element) || isListItem(element);\n      }, isBeforeRoot(rootNode)) : Option.none();\n    };\n    var placeCaretInEmptyBody = function (editor) {\n      var body = editor.getBody();\n      var node = body.firstChild && editor.dom.isBlock(body.firstChild) ? body.firstChild : body;\n      editor.selection.setCursorLocation(node, 0);\n    };\n    var paddEmptyBody = function (editor) {\n      if (editor.dom.isEmpty(editor.getBody())) {\n        editor.setContent('');\n        placeCaretInEmptyBody(editor);\n      }\n    };\n    var willDeleteLastPositionInElement = function (forward, fromPos, elm) {\n      return liftN([\n        CaretFinder.firstPositionIn(elm),\n        CaretFinder.lastPositionIn(elm)\n      ], function (firstPos, lastPos) {\n        var normalizedFirstPos = InlineUtils.normalizePosition(true, firstPos);\n        var normalizedLastPos = InlineUtils.normalizePosition(false, lastPos);\n        var normalizedFromPos = InlineUtils.normalizePosition(false, fromPos);\n        if (forward) {\n          return CaretFinder.nextPosition(elm, normalizedFromPos).map(function (nextPos) {\n            return nextPos.isEqual(normalizedLastPos) && fromPos.isEqual(normalizedFirstPos);\n          }).getOr(false);\n        } else {\n          return CaretFinder.prevPosition(elm, normalizedFromPos).map(function (prevPos) {\n            return prevPos.isEqual(normalizedFirstPos) && fromPos.isEqual(normalizedLastPos);\n          }).getOr(false);\n        }\n      }).getOr(true);\n    };\n    var DeleteUtils = {\n      getParentBlock: getParentBlock$1,\n      paddEmptyBody: paddEmptyBody,\n      willDeleteLastPositionInElement: willDeleteLastPositionInElement\n    };\n\n    var ancestor$2 = function (scope, selector, isRoot) {\n      return ancestor$1(scope, selector, isRoot).isSome();\n    };\n\n    var hasWhitespacePreserveParent = function (rootNode, node) {\n      var rootElement = Element$$1.fromDom(rootNode);\n      var startNode = Element$$1.fromDom(node);\n      return ancestor$2(startNode, 'pre,code', curry(eq, rootElement));\n    };\n    var isWhitespace = function (rootNode, node) {\n      return NodeType.isText(node) && /^[ \\t\\r\\n]*$/.test(node.data) && hasWhitespacePreserveParent(rootNode, node) === false;\n    };\n    var isNamedAnchor = function (node) {\n      return NodeType.isElement(node) && node.nodeName === 'A' && node.hasAttribute('name');\n    };\n    var isContent$1 = function (rootNode, node) {\n      return isCaretCandidate(node) && isWhitespace(rootNode, node) === false || isNamedAnchor(node) || isBookmark(node);\n    };\n    var isBookmark = NodeType.hasAttribute('data-mce-bookmark');\n    var isBogus$2 = NodeType.hasAttribute('data-mce-bogus');\n    var isBogusAll$1 = NodeType.hasAttributeValue('data-mce-bogus', 'all');\n    var isEmptyNode = function (targetNode) {\n      var walker, node, brCount = 0;\n      if (isContent$1(targetNode, targetNode)) {\n        return false;\n      } else {\n        node = targetNode.firstChild;\n        if (!node) {\n          return true;\n        }\n        walker = new TreeWalker(node, targetNode);\n        do {\n          if (isBogusAll$1(node)) {\n            node = walker.next(true);\n            continue;\n          }\n          if (isBogus$2(node)) {\n            node = walker.next();\n            continue;\n          }\n          if (NodeType.isBr(node)) {\n            brCount++;\n            node = walker.next();\n            continue;\n          }\n          if (isContent$1(targetNode, node)) {\n            return false;\n          }\n          node = walker.next();\n        } while (node);\n        return brCount <= 1;\n      }\n    };\n    var isEmpty$1 = function (elm) {\n      return isEmptyNode(elm.dom());\n    };\n    var Empty = { isEmpty: isEmpty$1 };\n\n    var BlockPosition = Immutable('block', 'position');\n    var BlockBoundary = Immutable('from', 'to');\n    var getBlockPosition = function (rootNode, pos) {\n      var rootElm = Element$$1.fromDom(rootNode);\n      var containerElm = Element$$1.fromDom(pos.container());\n      return DeleteUtils.getParentBlock(rootElm, containerElm).map(function (block) {\n        return BlockPosition(block, pos);\n      });\n    };\n    var isDifferentBlocks = function (blockBoundary) {\n      return eq(blockBoundary.from().block(), blockBoundary.to().block()) === false;\n    };\n    var hasSameParent = function (blockBoundary) {\n      return parent(blockBoundary.from().block()).bind(function (parent1) {\n        return parent(blockBoundary.to().block()).filter(function (parent2) {\n          return eq(parent1, parent2);\n        });\n      }).isSome();\n    };\n    var isEditable = function (blockBoundary) {\n      return NodeType.isContentEditableFalse(blockBoundary.from().block()) === false && NodeType.isContentEditableFalse(blockBoundary.to().block()) === false;\n    };\n    var skipLastBr = function (rootNode, forward, blockPosition) {\n      if (NodeType.isBr(blockPosition.position().getNode()) && Empty.isEmpty(blockPosition.block()) === false) {\n        return CaretFinder.positionIn(false, blockPosition.block().dom()).bind(function (lastPositionInBlock) {\n          if (lastPositionInBlock.isEqual(blockPosition.position())) {\n            return CaretFinder.fromPosition(forward, rootNode, lastPositionInBlock).bind(function (to) {\n              return getBlockPosition(rootNode, to);\n            });\n          } else {\n            return Option.some(blockPosition);\n          }\n        }).getOr(blockPosition);\n      } else {\n        return blockPosition;\n      }\n    };\n    var readFromRange = function (rootNode, forward, rng) {\n      var fromBlockPos = getBlockPosition(rootNode, CaretPosition$1.fromRangeStart(rng));\n      var toBlockPos = fromBlockPos.bind(function (blockPos) {\n        return CaretFinder.fromPosition(forward, rootNode, blockPos.position()).bind(function (to) {\n          return getBlockPosition(rootNode, to).map(function (blockPos) {\n            return skipLastBr(rootNode, forward, blockPos);\n          });\n        });\n      });\n      return liftN([\n        fromBlockPos,\n        toBlockPos\n      ], BlockBoundary).filter(function (blockBoundary) {\n        return isDifferentBlocks(blockBoundary) && hasSameParent(blockBoundary) && isEditable(blockBoundary);\n      });\n    };\n    var read$1 = function (rootNode, forward, rng) {\n      return rng.collapsed ? readFromRange(rootNode, forward, rng) : Option.none();\n    };\n    var BlockMergeBoundary = { read: read$1 };\n\n    var dropLast = function (xs) {\n      return xs.slice(0, -1);\n    };\n    var parentsUntil$1 = function (start, root, predicate) {\n      if (contains$3(root, start)) {\n        return dropLast(parents(start, function (elm) {\n          return predicate(elm) || eq(elm, root);\n        }));\n      } else {\n        return [];\n      }\n    };\n    var parents$1 = function (start, root) {\n      return parentsUntil$1(start, root, constant(false));\n    };\n    var parentsAndSelf = function (start, root) {\n      return [start].concat(parents$1(start, root));\n    };\n    var Parents = {\n      parentsUntil: parentsUntil$1,\n      parents: parents$1,\n      parentsAndSelf: parentsAndSelf\n    };\n\n    var getChildrenUntilBlockBoundary = function (block) {\n      var children$$1 = children(block);\n      return findIndex(children$$1, isBlock).fold(function () {\n        return children$$1;\n      }, function (index) {\n        return children$$1.slice(0, index);\n      });\n    };\n    var extractChildren = function (block) {\n      var children$$1 = getChildrenUntilBlockBoundary(block);\n      each(children$$1, remove$2);\n      return children$$1;\n    };\n    var removeEmptyRoot = function (rootNode, block) {\n      var parents$$1 = Parents.parentsAndSelf(block, rootNode);\n      return find(parents$$1.reverse(), Empty.isEmpty).each(remove$2);\n    };\n    var isEmptyBefore = function (el) {\n      return filter(prevSiblings(el), function (el) {\n        return !Empty.isEmpty(el);\n      }).length === 0;\n    };\n    var nestedBlockMerge = function (rootNode, fromBlock, toBlock, insertionPoint) {\n      if (Empty.isEmpty(toBlock)) {\n        PaddingBr.fillWithPaddingBr(toBlock);\n        return CaretFinder.firstPositionIn(toBlock.dom());\n      }\n      if (isEmptyBefore(insertionPoint) && Empty.isEmpty(fromBlock)) {\n        before(insertionPoint, Element$$1.fromTag('br'));\n      }\n      var position = CaretFinder.prevPosition(toBlock.dom(), CaretPosition$1.before(insertionPoint.dom()));\n      each(extractChildren(fromBlock), function (child$$1) {\n        before(insertionPoint, child$$1);\n      });\n      removeEmptyRoot(rootNode, fromBlock);\n      return position;\n    };\n    var sidelongBlockMerge = function (rootNode, fromBlock, toBlock) {\n      if (Empty.isEmpty(toBlock)) {\n        remove$2(toBlock);\n        if (Empty.isEmpty(fromBlock)) {\n          PaddingBr.fillWithPaddingBr(fromBlock);\n        }\n        return CaretFinder.firstPositionIn(fromBlock.dom());\n      }\n      var position = CaretFinder.lastPositionIn(toBlock.dom());\n      each(extractChildren(fromBlock), function (child$$1) {\n        append(toBlock, child$$1);\n      });\n      removeEmptyRoot(rootNode, fromBlock);\n      return position;\n    };\n    var findInsertionPoint = function (toBlock, block) {\n      var parentsAndSelf = Parents.parentsAndSelf(block, toBlock);\n      return Option.from(parentsAndSelf[parentsAndSelf.length - 1]);\n    };\n    var getInsertionPoint = function (fromBlock, toBlock) {\n      return contains$3(toBlock, fromBlock) ? findInsertionPoint(toBlock, fromBlock) : Option.none();\n    };\n    var trimBr = function (first, block) {\n      CaretFinder.positionIn(first, block.dom()).map(function (position) {\n        return position.getNode();\n      }).map(Element$$1.fromDom).filter(isBr).each(remove$2);\n    };\n    var mergeBlockInto = function (rootNode, fromBlock, toBlock) {\n      trimBr(true, fromBlock);\n      trimBr(false, toBlock);\n      return getInsertionPoint(fromBlock, toBlock).fold(curry(sidelongBlockMerge, rootNode, fromBlock, toBlock), curry(nestedBlockMerge, rootNode, fromBlock, toBlock));\n    };\n    var mergeBlocks = function (rootNode, forward, block1, block2) {\n      return forward ? mergeBlockInto(rootNode, block2, block1) : mergeBlockInto(rootNode, block1, block2);\n    };\n    var MergeBlocks = { mergeBlocks: mergeBlocks };\n\n    var backspaceDelete = function (editor, forward) {\n      var position;\n      var rootNode = Element$$1.fromDom(editor.getBody());\n      position = BlockMergeBoundary.read(rootNode.dom(), forward, editor.selection.getRng()).bind(function (blockBoundary) {\n        return MergeBlocks.mergeBlocks(rootNode, forward, blockBoundary.from().block(), blockBoundary.to().block());\n      });\n      position.each(function (pos) {\n        editor.selection.setRng(pos.toRange());\n      });\n      return position.isSome();\n    };\n    var BlockBoundaryDelete = { backspaceDelete: backspaceDelete };\n\n    var deleteRangeMergeBlocks = function (rootNode, selection) {\n      var rng = selection.getRng();\n      return liftN([\n        DeleteUtils.getParentBlock(rootNode, Element$$1.fromDom(rng.startContainer)),\n        DeleteUtils.getParentBlock(rootNode, Element$$1.fromDom(rng.endContainer))\n      ], function (block1, block2) {\n        if (eq(block1, block2) === false) {\n          rng.deleteContents();\n          MergeBlocks.mergeBlocks(rootNode, true, block1, block2).each(function (pos) {\n            selection.setRng(pos.toRange());\n          });\n          return true;\n        } else {\n          return false;\n        }\n      }).getOr(false);\n    };\n    var isRawNodeInTable = function (root, rawNode) {\n      var node = Element$$1.fromDom(rawNode);\n      var isRoot = curry(eq, root);\n      return ancestor(node, isTableCell, isRoot).isSome();\n    };\n    var isSelectionInTable = function (root, rng) {\n      return isRawNodeInTable(root, rng.startContainer) || isRawNodeInTable(root, rng.endContainer);\n    };\n    var isEverythingSelected = function (root, rng) {\n      var noPrevious = CaretFinder.prevPosition(root.dom(), CaretPosition$1.fromRangeStart(rng)).isNone();\n      var noNext = CaretFinder.nextPosition(root.dom(), CaretPosition$1.fromRangeEnd(rng)).isNone();\n      return !isSelectionInTable(root, rng) && noPrevious && noNext;\n    };\n    var emptyEditor = function (editor) {\n      editor.setContent('');\n      editor.selection.setCursorLocation();\n      return true;\n    };\n    var deleteRange = function (editor) {\n      var rootNode = Element$$1.fromDom(editor.getBody());\n      var rng = editor.selection.getRng();\n      return isEverythingSelected(rootNode, rng) ? emptyEditor(editor) : deleteRangeMergeBlocks(rootNode, editor.selection);\n    };\n    var backspaceDelete$1 = function (editor, forward) {\n      return editor.selection.isCollapsed() ? false : deleteRange(editor);\n    };\n    var BlockRangeDelete = { backspaceDelete: backspaceDelete$1 };\n\n    var generate$1 = function (cases) {\n      if (!isArray(cases)) {\n        throw new Error('cases must be an array');\n      }\n      if (cases.length === 0) {\n        throw new Error('there must be at least one case');\n      }\n      var constructors = [];\n      var adt = {};\n      each(cases, function (acase, count) {\n        var keys$$1 = keys(acase);\n        if (keys$$1.length !== 1) {\n          throw new Error('one and only one name per case');\n        }\n        var key = keys$$1[0];\n        var value = acase[key];\n        if (adt[key] !== undefined) {\n          throw new Error('duplicate key detected:' + key);\n        } else if (key === 'cata') {\n          throw new Error('cannot have a case named cata (sorry)');\n        } else if (!isArray(value)) {\n          throw new Error('case arguments must be an array');\n        }\n        constructors.push(key);\n        adt[key] = function () {\n          var argLength = arguments.length;\n          if (argLength !== value.length) {\n            throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);\n          }\n          var args = new Array(argLength);\n          for (var i = 0; i < args.length; i++)\n            args[i] = arguments[i];\n          var match = function (branches) {\n            var branchKeys = keys(branches);\n            if (constructors.length !== branchKeys.length) {\n              throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\\nActual: ' + branchKeys.join(','));\n            }\n            var allReqd = forall(constructors, function (reqKey) {\n              return contains(branchKeys, reqKey);\n            });\n            if (!allReqd)\n              throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\\nRequired: ' + constructors.join(', '));\n            return branches[key].apply(null, args);\n          };\n          return {\n            fold: function () {\n              if (arguments.length !== cases.length) {\n                throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + arguments.length);\n              }\n              var target = arguments[count];\n              return target.apply(null, args);\n            },\n            match: match,\n            log: function (label) {\n              console.log(label, {\n                constructors: constructors,\n                constructor: key,\n                params: args\n              });\n            }\n          };\n        };\n      });\n      return adt;\n    };\n    var Adt = { generate: generate$1 };\n\n    var isBr$5 = function (pos) {\n      return getElementFromPosition(pos).exists(isBr);\n    };\n    var findBr = function (forward, root, pos) {\n      var parentBlocks = filter(Parents.parentsAndSelf(Element$$1.fromDom(pos.container()), root), isBlock);\n      var scope = head(parentBlocks).getOr(root);\n      return CaretFinder.fromPosition(forward, scope.dom(), pos).filter(isBr$5);\n    };\n    var isBeforeBr = function (root, pos) {\n      return getElementFromPosition(pos).exists(isBr) || findBr(true, root, pos).isSome();\n    };\n    var isAfterBr = function (root, pos) {\n      return getElementFromPrevPosition(pos).exists(isBr) || findBr(false, root, pos).isSome();\n    };\n    var findPreviousBr = curry(findBr, false);\n    var findNextBr = curry(findBr, true);\n\n    var isCompoundElement = function (node) {\n      return isTableCell(Element$$1.fromDom(node)) || isListItem(Element$$1.fromDom(node));\n    };\n    var DeleteAction = Adt.generate([\n      { remove: ['element'] },\n      { moveToElement: ['element'] },\n      { moveToPosition: ['position'] }\n    ]);\n    var isAtContentEditableBlockCaret = function (forward, from) {\n      var elm = from.getNode(forward === false);\n      var caretLocation = forward ? 'after' : 'before';\n      return NodeType.isElement(elm) && elm.getAttribute('data-mce-caret') === caretLocation;\n    };\n    var isDeleteFromCefDifferentBlocks = function (root, forward, from, to) {\n      var inSameBlock = function (elm) {\n        return isInline(Element$$1.fromDom(elm)) && !isInSameBlock(from, to, root);\n      };\n      return getRelativeCefElm(!forward, from).fold(function () {\n        return getRelativeCefElm(forward, to).fold(constant(false), inSameBlock);\n      }, inSameBlock);\n    };\n    var deleteEmptyBlockOrMoveToCef = function (root, forward, from, to) {\n      var toCefElm = to.getNode(forward === false);\n      return DeleteUtils.getParentBlock(Element$$1.fromDom(root), Element$$1.fromDom(from.getNode())).map(function (blockElm) {\n        return Empty.isEmpty(blockElm) ? DeleteAction.remove(blockElm.dom()) : DeleteAction.moveToElement(toCefElm);\n      }).orThunk(function () {\n        return Option.some(DeleteAction.moveToElement(toCefElm));\n      });\n    };\n    var findCefPosition = function (root, forward, from) {\n      return CaretFinder.fromPosition(forward, root, from).bind(function (to) {\n        if (isCompoundElement(to.getNode())) {\n          return Option.none();\n        } else if (isDeleteFromCefDifferentBlocks(root, forward, from, to)) {\n          return Option.none();\n        } else if (forward && NodeType.isContentEditableFalse(to.getNode())) {\n          return deleteEmptyBlockOrMoveToCef(root, forward, from, to);\n        } else if (forward === false && NodeType.isContentEditableFalse(to.getNode(true))) {\n          return deleteEmptyBlockOrMoveToCef(root, forward, from, to);\n        } else if (forward && isAfterContentEditableFalse(from)) {\n          return Option.some(DeleteAction.moveToPosition(to));\n        } else if (forward === false && isBeforeContentEditableFalse(from)) {\n          return Option.some(DeleteAction.moveToPosition(to));\n        } else {\n          return Option.none();\n        }\n      });\n    };\n    var getContentEditableBlockAction = function (forward, elm) {\n      if (forward && NodeType.isContentEditableFalse(elm.nextSibling)) {\n        return Option.some(DeleteAction.moveToElement(elm.nextSibling));\n      } else if (forward === false && NodeType.isContentEditableFalse(elm.previousSibling)) {\n        return Option.some(DeleteAction.moveToElement(elm.previousSibling));\n      } else {\n        return Option.none();\n      }\n    };\n    var skipMoveToActionFromInlineCefToContent = function (root, from, deleteAction) {\n      return deleteAction.fold(function (elm) {\n        return Option.some(DeleteAction.remove(elm));\n      }, function (elm) {\n        return Option.some(DeleteAction.moveToElement(elm));\n      }, function (to) {\n        if (isInSameBlock(from, to, root)) {\n          return Option.none();\n        } else {\n          return Option.some(DeleteAction.moveToPosition(to));\n        }\n      });\n    };\n    var getContentEditableAction = function (root, forward, from) {\n      if (isAtContentEditableBlockCaret(forward, from)) {\n        return getContentEditableBlockAction(forward, from.getNode(forward === false)).fold(function () {\n          return findCefPosition(root, forward, from);\n        }, Option.some);\n      } else {\n        return findCefPosition(root, forward, from).bind(function (deleteAction) {\n          return skipMoveToActionFromInlineCefToContent(root, from, deleteAction);\n        });\n      }\n    };\n    var read$2 = function (root, forward, rng) {\n      var normalizedRange = normalizeRange(forward ? 1 : -1, root, rng);\n      var from = CaretPosition$1.fromRangeStart(normalizedRange);\n      var rootElement = Element$$1.fromDom(root);\n      if (forward === false && isAfterContentEditableFalse(from)) {\n        return Option.some(DeleteAction.remove(from.getNode(true)));\n      } else if (forward && isBeforeContentEditableFalse(from)) {\n        return Option.some(DeleteAction.remove(from.getNode()));\n      } else if (forward === false && isBeforeContentEditableFalse(from) && isAfterBr(rootElement, from)) {\n        return findPreviousBr(rootElement, from).map(function (br) {\n          return DeleteAction.remove(br.getNode());\n        });\n      } else if (forward && isAfterContentEditableFalse(from) && isBeforeBr(rootElement, from)) {\n        return findNextBr(rootElement, from).map(function (br) {\n          return DeleteAction.remove(br.getNode());\n        });\n      } else {\n        return getContentEditableAction(root, forward, from);\n      }\n    };\n\n    var isCollapsibleWhitespace = function (c) {\n      return ' \\f\\n\\r\\t\\x0B'.indexOf(c) !== -1;\n    };\n    var normalizeContent = function (content, isStartOfContent, isEndOfContent) {\n      var result = foldl(content.split(''), function (acc, c) {\n        if (isCollapsibleWhitespace(c) || c === '\\xA0') {\n          if (acc.previousCharIsSpace || acc.str === '' && isStartOfContent || acc.str.length === content.length - 1 && isEndOfContent) {\n            return {\n              previousCharIsSpace: false,\n              str: acc.str + '\\xA0'\n            };\n          } else {\n            return {\n              previousCharIsSpace: true,\n              str: acc.str + ' '\n            };\n          }\n        } else {\n          return {\n            previousCharIsSpace: false,\n            str: acc.str + c\n          };\n        }\n      }, {\n        previousCharIsSpace: false,\n        str: ''\n      });\n      return result.str;\n    };\n    var normalize$1 = function (node, offset, count) {\n      if (count === 0) {\n        return;\n      }\n      var whitespace = node.data.slice(offset, offset + count);\n      var isEndOfContent = offset + count >= node.data.length;\n      var isStartOfContent = offset === 0;\n      node.replaceData(offset, count, normalizeContent(whitespace, isStartOfContent, isEndOfContent));\n    };\n    var normalizeWhitespaceAfter = function (node, offset) {\n      var content = node.data.slice(offset);\n      var whitespaceCount = content.length - lTrim(content).length;\n      return normalize$1(node, offset, whitespaceCount);\n    };\n    var normalizeWhitespaceBefore = function (node, offset) {\n      var content = node.data.slice(0, offset);\n      var whitespaceCount = content.length - rTrim(content).length;\n      return normalize$1(node, offset - whitespaceCount, whitespaceCount);\n    };\n    var mergeTextNodes = function (prevNode, nextNode, normalizeWhitespace) {\n      var whitespaceOffset = rTrim(prevNode.data).length;\n      prevNode.appendData(nextNode.data);\n      remove$2(Element$$1.fromDom(nextNode));\n      if (normalizeWhitespace) {\n        normalizeWhitespaceAfter(prevNode, whitespaceOffset);\n      }\n      return prevNode;\n    };\n\n    var needsReposition = function (pos, elm) {\n      var container = pos.container();\n      var offset = pos.offset();\n      return CaretPosition$1.isTextPosition(pos) === false && container === elm.parentNode && offset > CaretPosition$1.before(elm).offset();\n    };\n    var reposition = function (elm, pos) {\n      return needsReposition(pos, elm) ? CaretPosition$1(pos.container(), pos.offset() - 1) : pos;\n    };\n    var beforeOrStartOf = function (node) {\n      return NodeType.isText(node) ? CaretPosition$1(node, 0) : CaretPosition$1.before(node);\n    };\n    var afterOrEndOf = function (node) {\n      return NodeType.isText(node) ? CaretPosition$1(node, node.data.length) : CaretPosition$1.after(node);\n    };\n    var getPreviousSiblingCaretPosition = function (elm) {\n      if (isCaretCandidate(elm.previousSibling)) {\n        return Option.some(afterOrEndOf(elm.previousSibling));\n      } else {\n        return elm.previousSibling ? CaretFinder.lastPositionIn(elm.previousSibling) : Option.none();\n      }\n    };\n    var getNextSiblingCaretPosition = function (elm) {\n      if (isCaretCandidate(elm.nextSibling)) {\n        return Option.some(beforeOrStartOf(elm.nextSibling));\n      } else {\n        return elm.nextSibling ? CaretFinder.firstPositionIn(elm.nextSibling) : Option.none();\n      }\n    };\n    var findCaretPositionBackwardsFromElm = function (rootElement, elm) {\n      var startPosition = CaretPosition$1.before(elm.previousSibling ? elm.previousSibling : elm.parentNode);\n      return CaretFinder.prevPosition(rootElement, startPosition).fold(function () {\n        return CaretFinder.nextPosition(rootElement, CaretPosition$1.after(elm));\n      }, Option.some);\n    };\n    var findCaretPositionForwardsFromElm = function (rootElement, elm) {\n      return CaretFinder.nextPosition(rootElement, CaretPosition$1.after(elm)).fold(function () {\n        return CaretFinder.prevPosition(rootElement, CaretPosition$1.before(elm));\n      }, Option.some);\n    };\n    var findCaretPositionBackwards = function (rootElement, elm) {\n      return getPreviousSiblingCaretPosition(elm).orThunk(function () {\n        return getNextSiblingCaretPosition(elm);\n      }).orThunk(function () {\n        return findCaretPositionBackwardsFromElm(rootElement, elm);\n      });\n    };\n    var findCaretPositionForward = function (rootElement, elm) {\n      return getNextSiblingCaretPosition(elm).orThunk(function () {\n        return getPreviousSiblingCaretPosition(elm);\n      }).orThunk(function () {\n        return findCaretPositionForwardsFromElm(rootElement, elm);\n      });\n    };\n    var findCaretPosition$1 = function (forward, rootElement, elm) {\n      return forward ? findCaretPositionForward(rootElement, elm) : findCaretPositionBackwards(rootElement, elm);\n    };\n    var findCaretPosOutsideElmAfterDelete = function (forward, rootElement, elm) {\n      return findCaretPosition$1(forward, rootElement, elm).map(curry(reposition, elm));\n    };\n    var setSelection = function (editor, forward, pos) {\n      pos.fold(function () {\n        editor.focus();\n      }, function (pos) {\n        editor.selection.setRng(pos.toRange(), forward);\n      });\n    };\n    var eqRawNode = function (rawNode) {\n      return function (elm) {\n        return elm.dom() === rawNode;\n      };\n    };\n    var isBlock$2 = function (editor, elm) {\n      return elm && editor.schema.getBlockElements().hasOwnProperty(name(elm));\n    };\n    var paddEmptyBlock = function (elm) {\n      if (Empty.isEmpty(elm)) {\n        var br = Element$$1.fromHtml('<br data-mce-bogus=\"1\">');\n        empty(elm);\n        append(elm, br);\n        return Option.some(CaretPosition$1.before(br.dom()));\n      } else {\n        return Option.none();\n      }\n    };\n    var deleteNormalized = function (elm, afterDeletePosOpt, normalizeWhitespace) {\n      var prevTextOpt = prevSibling(elm).filter(function (e) {\n        return NodeType.isText(e.dom());\n      });\n      var nextTextOpt = nextSibling(elm).filter(function (e) {\n        return NodeType.isText(e.dom());\n      });\n      remove$2(elm);\n      return liftN([\n        prevTextOpt,\n        nextTextOpt,\n        afterDeletePosOpt\n      ], function (prev, next, pos) {\n        var prevNode = prev.dom(), nextNode = next.dom();\n        var offset = prevNode.data.length;\n        mergeTextNodes(prevNode, nextNode, normalizeWhitespace);\n        return pos.container() === nextNode ? CaretPosition$1(prevNode, offset) : pos;\n      }).orThunk(function () {\n        if (normalizeWhitespace) {\n          prevTextOpt.each(function (elm) {\n            return normalizeWhitespaceBefore(elm.dom(), elm.dom().length);\n          });\n          nextTextOpt.each(function (elm) {\n            return normalizeWhitespaceAfter(elm.dom(), 0);\n          });\n        }\n        return afterDeletePosOpt;\n      });\n    };\n    var isInlineElement = function (editor, element) {\n      return has(editor.schema.getTextInlineElements(), name(element));\n    };\n    var deleteElement = function (editor, forward, elm, moveCaret) {\n      if (moveCaret === void 0) {\n        moveCaret = true;\n      }\n      var afterDeletePos = findCaretPosOutsideElmAfterDelete(forward, editor.getBody(), elm.dom());\n      var parentBlock = ancestor(elm, curry(isBlock$2, editor), eqRawNode(editor.getBody()));\n      var normalizedAfterDeletePos = deleteNormalized(elm, afterDeletePos, isInlineElement(editor, elm));\n      if (editor.dom.isEmpty(editor.getBody())) {\n        editor.setContent('');\n        editor.selection.setCursorLocation();\n      } else {\n        parentBlock.bind(paddEmptyBlock).fold(function () {\n          if (moveCaret) {\n            setSelection(editor, forward, normalizedAfterDeletePos);\n          }\n        }, function (paddPos) {\n          if (moveCaret) {\n            setSelection(editor, forward, Option.some(paddPos));\n          }\n        });\n      }\n    };\n    var DeleteElement = { deleteElement: deleteElement };\n\n    var deleteElement$1 = function (editor, forward) {\n      return function (element) {\n        editor._selectionOverrides.hideFakeCaret();\n        DeleteElement.deleteElement(editor, forward, Element$$1.fromDom(element));\n        return true;\n      };\n    };\n    var moveToElement = function (editor, forward) {\n      return function (element) {\n        var pos = forward ? CaretPosition$1.before(element) : CaretPosition$1.after(element);\n        editor.selection.setRng(pos.toRange());\n        return true;\n      };\n    };\n    var moveToPosition = function (editor) {\n      return function (pos) {\n        editor.selection.setRng(pos.toRange());\n        return true;\n      };\n    };\n    var backspaceDeleteCaret = function (editor, forward) {\n      var result = read$2(editor.getBody(), forward, editor.selection.getRng()).map(function (deleteAction) {\n        return deleteAction.fold(deleteElement$1(editor, forward), moveToElement(editor, forward), moveToPosition(editor));\n      });\n      return result.getOr(false);\n    };\n    var deleteOffscreenSelection = function (rootElement) {\n      each(descendants$1(rootElement, '.mce-offscreen-selection'), remove$2);\n    };\n    var backspaceDeleteRange = function (editor, forward) {\n      var selectedElement = editor.selection.getNode();\n      if (NodeType.isContentEditableFalse(selectedElement)) {\n        deleteOffscreenSelection(Element$$1.fromDom(editor.getBody()));\n        DeleteElement.deleteElement(editor, forward, Element$$1.fromDom(editor.selection.getNode()));\n        DeleteUtils.paddEmptyBody(editor);\n        return true;\n      } else {\n        return false;\n      }\n    };\n    var getContentEditableRoot = function (root, node) {\n      while (node && node !== root) {\n        if (NodeType.isContentEditableTrue(node) || NodeType.isContentEditableFalse(node)) {\n          return node;\n        }\n        node = node.parentNode;\n      }\n      return null;\n    };\n    var paddEmptyElement = function (editor) {\n      var br;\n      var ceRoot = getContentEditableRoot(editor.getBody(), editor.selection.getNode());\n      if (NodeType.isContentEditableTrue(ceRoot) && editor.dom.isBlock(ceRoot) && editor.dom.isEmpty(ceRoot)) {\n        br = editor.dom.create('br', { 'data-mce-bogus': '1' });\n        editor.dom.setHTML(ceRoot, '');\n        ceRoot.appendChild(br);\n        editor.selection.setRng(CaretPosition$1.before(br).toRange());\n      }\n      return true;\n    };\n    var backspaceDelete$2 = function (editor, forward) {\n      if (editor.selection.isCollapsed()) {\n        return backspaceDeleteCaret(editor, forward);\n      } else {\n        return backspaceDeleteRange(editor, forward);\n      }\n    };\n    var CefDelete = {\n      backspaceDelete: backspaceDelete$2,\n      paddEmptyElement: paddEmptyElement\n    };\n\n    var isText$8 = NodeType.isText;\n    var startsWithCaretContainer$1 = function (node) {\n      return isText$8(node) && node.data[0] === Zwsp.ZWSP;\n    };\n    var endsWithCaretContainer$1 = function (node) {\n      return isText$8(node) && node.data[node.data.length - 1] === Zwsp.ZWSP;\n    };\n    var createZwsp = function (node) {\n      return node.ownerDocument.createTextNode(Zwsp.ZWSP);\n    };\n    var insertBefore$1 = function (node) {\n      if (isText$8(node.previousSibling)) {\n        if (endsWithCaretContainer$1(node.previousSibling)) {\n          return node.previousSibling;\n        } else {\n          node.previousSibling.appendData(Zwsp.ZWSP);\n          return node.previousSibling;\n        }\n      } else if (isText$8(node)) {\n        if (startsWithCaretContainer$1(node)) {\n          return node;\n        } else {\n          node.insertData(0, Zwsp.ZWSP);\n          return node;\n        }\n      } else {\n        var newNode = createZwsp(node);\n        node.parentNode.insertBefore(newNode, node);\n        return newNode;\n      }\n    };\n    var insertAfter$1 = function (node) {\n      if (isText$8(node.nextSibling)) {\n        if (startsWithCaretContainer$1(node.nextSibling)) {\n          return node.nextSibling;\n        } else {\n          node.nextSibling.insertData(0, Zwsp.ZWSP);\n          return node.nextSibling;\n        }\n      } else if (isText$8(node)) {\n        if (endsWithCaretContainer$1(node)) {\n          return node;\n        } else {\n          node.appendData(Zwsp.ZWSP);\n          return node;\n        }\n      } else {\n        var newNode = createZwsp(node);\n        if (node.nextSibling) {\n          node.parentNode.insertBefore(newNode, node.nextSibling);\n        } else {\n          node.parentNode.appendChild(newNode);\n        }\n        return newNode;\n      }\n    };\n    var insertInline$1 = function (before, node) {\n      return before ? insertBefore$1(node) : insertAfter$1(node);\n    };\n    var insertInlineBefore = curry(insertInline$1, true);\n    var insertInlineAfter = curry(insertInline$1, false);\n\n    var insertInlinePos = function (pos, before) {\n      if (NodeType.isText(pos.container())) {\n        return insertInline$1(before, pos.container());\n      } else {\n        return insertInline$1(before, pos.getNode());\n      }\n    };\n    var isPosCaretContainer = function (pos, caret) {\n      var caretNode = caret.get();\n      return caretNode && pos.container() === caretNode && isCaretContainerInline(caretNode);\n    };\n    var renderCaret = function (caret, location) {\n      return location.fold(function (element) {\n        CaretContainerRemove.remove(caret.get());\n        var text = insertInlineBefore(element);\n        caret.set(text);\n        return Option.some(CaretPosition$1(text, text.length - 1));\n      }, function (element) {\n        return CaretFinder.firstPositionIn(element).map(function (pos) {\n          if (!isPosCaretContainer(pos, caret)) {\n            CaretContainerRemove.remove(caret.get());\n            var text = insertInlinePos(pos, true);\n            caret.set(text);\n            return CaretPosition$1(text, 1);\n          } else {\n            return CaretPosition$1(caret.get(), 1);\n          }\n        });\n      }, function (element) {\n        return CaretFinder.lastPositionIn(element).map(function (pos) {\n          if (!isPosCaretContainer(pos, caret)) {\n            CaretContainerRemove.remove(caret.get());\n            var text = insertInlinePos(pos, false);\n            caret.set(text);\n            return CaretPosition$1(text, text.length - 1);\n          } else {\n            return CaretPosition$1(caret.get(), caret.get().length - 1);\n          }\n        });\n      }, function (element) {\n        CaretContainerRemove.remove(caret.get());\n        var text = insertInlineAfter(element);\n        caret.set(text);\n        return Option.some(CaretPosition$1(text, 1));\n      });\n    };\n    var BoundaryCaret = { renderCaret: renderCaret };\n\n    var evaluateUntil = function (fns, args) {\n      for (var i = 0; i < fns.length; i++) {\n        var result = fns[i].apply(null, args);\n        if (result.isSome()) {\n          return result;\n        }\n      }\n      return Option.none();\n    };\n    var LazyEvaluator = { evaluateUntil: evaluateUntil };\n\n    var Location = Adt.generate([\n      { before: ['element'] },\n      { start: ['element'] },\n      { end: ['element'] },\n      { after: ['element'] }\n    ]);\n    var rescope = function (rootNode, node) {\n      var parentBlock = getParentBlock(node, rootNode);\n      return parentBlock ? parentBlock : rootNode;\n    };\n    var before$3 = function (isInlineTarget, rootNode, pos) {\n      var nPos = InlineUtils.normalizeForwards(pos);\n      var scope = rescope(rootNode, nPos.container());\n      return InlineUtils.findRootInline(isInlineTarget, scope, nPos).fold(function () {\n        return CaretFinder.nextPosition(scope, nPos).bind(curry(InlineUtils.findRootInline, isInlineTarget, scope)).map(function (inline) {\n          return Location.before(inline);\n        });\n      }, Option.none);\n    };\n    var isNotInsideFormatCaretContainer = function (rootNode, elm) {\n      return getParentCaretContainer(rootNode, elm) === null;\n    };\n    var findInsideRootInline = function (isInlineTarget, rootNode, pos) {\n      return InlineUtils.findRootInline(isInlineTarget, rootNode, pos).filter(curry(isNotInsideFormatCaretContainer, rootNode));\n    };\n    var start = function (isInlineTarget, rootNode, pos) {\n      var nPos = InlineUtils.normalizeBackwards(pos);\n      return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) {\n        var prevPos = CaretFinder.prevPosition(inline, nPos);\n        return prevPos.isNone() ? Option.some(Location.start(inline)) : Option.none();\n      });\n    };\n    var end = function (isInlineTarget, rootNode, pos) {\n      var nPos = InlineUtils.normalizeForwards(pos);\n      return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) {\n        var nextPos = CaretFinder.nextPosition(inline, nPos);\n        return nextPos.isNone() ? Option.some(Location.end(inline)) : Option.none();\n      });\n    };\n    var after$3 = function (isInlineTarget, rootNode, pos) {\n      var nPos = InlineUtils.normalizeBackwards(pos);\n      var scope = rescope(rootNode, nPos.container());\n      return InlineUtils.findRootInline(isInlineTarget, scope, nPos).fold(function () {\n        return CaretFinder.prevPosition(scope, nPos).bind(curry(InlineUtils.findRootInline, isInlineTarget, scope)).map(function (inline) {\n          return Location.after(inline);\n        });\n      }, Option.none);\n    };\n    var isValidLocation = function (location) {\n      return InlineUtils.isRtl(getElement(location)) === false;\n    };\n    var readLocation = function (isInlineTarget, rootNode, pos) {\n      var location = LazyEvaluator.evaluateUntil([\n        before$3,\n        start,\n        end,\n        after$3\n      ], [\n        isInlineTarget,\n        rootNode,\n        pos\n      ]);\n      return location.filter(isValidLocation);\n    };\n    var getElement = function (location) {\n      return location.fold(identity, identity, identity, identity);\n    };\n    var getName = function (location) {\n      return location.fold(constant('before'), constant('start'), constant('end'), constant('after'));\n    };\n    var outside = function (location) {\n      return location.fold(Location.before, Location.before, Location.after, Location.after);\n    };\n    var inside = function (location) {\n      return location.fold(Location.start, Location.start, Location.end, Location.end);\n    };\n    var isEq$1 = function (location1, location2) {\n      return getName(location1) === getName(location2) && getElement(location1) === getElement(location2);\n    };\n    var betweenInlines = function (forward, isInlineTarget, rootNode, from, to, location) {\n      return liftN([\n        InlineUtils.findRootInline(isInlineTarget, rootNode, from),\n        InlineUtils.findRootInline(isInlineTarget, rootNode, to)\n      ], function (fromInline, toInline) {\n        if (fromInline !== toInline && InlineUtils.hasSameParentBlock(rootNode, fromInline, toInline)) {\n          return Location.after(forward ? fromInline : toInline);\n        } else {\n          return location;\n        }\n      }).getOr(location);\n    };\n    var skipNoMovement = function (fromLocation, toLocation) {\n      return fromLocation.fold(constant(true), function (fromLocation) {\n        return !isEq$1(fromLocation, toLocation);\n      });\n    };\n    var findLocationTraverse = function (forward, isInlineTarget, rootNode, fromLocation, pos) {\n      var from = InlineUtils.normalizePosition(forward, pos);\n      var to = CaretFinder.fromPosition(forward, rootNode, from).map(curry(InlineUtils.normalizePosition, forward));\n      var location = to.fold(function () {\n        return fromLocation.map(outside);\n      }, function (to) {\n        return readLocation(isInlineTarget, rootNode, to).map(curry(betweenInlines, forward, isInlineTarget, rootNode, from, to)).filter(curry(skipNoMovement, fromLocation));\n      });\n      return location.filter(isValidLocation);\n    };\n    var findLocationSimple = function (forward, location) {\n      if (forward) {\n        return location.fold(compose(Option.some, Location.start), Option.none, compose(Option.some, Location.after), Option.none);\n      } else {\n        return location.fold(Option.none, compose(Option.some, Location.before), Option.none, compose(Option.some, Location.end));\n      }\n    };\n    var findLocation = function (forward, isInlineTarget, rootNode, pos) {\n      var from = InlineUtils.normalizePosition(forward, pos);\n      var fromLocation = readLocation(isInlineTarget, rootNode, from);\n      return readLocation(isInlineTarget, rootNode, from).bind(curry(findLocationSimple, forward)).orThunk(function () {\n        return findLocationTraverse(forward, isInlineTarget, rootNode, fromLocation, pos);\n      });\n    };\n    var BoundaryLocation = {\n      readLocation: readLocation,\n      findLocation: findLocation,\n      prevLocation: curry(findLocation, false),\n      nextLocation: curry(findLocation, true),\n      getElement: getElement,\n      outside: outside,\n      inside: inside\n    };\n\n    var hasSelectionModifyApi = function (editor) {\n      return isFunction(editor.selection.getSel().modify);\n    };\n    var moveRel = function (forward, selection, pos) {\n      var delta = forward ? 1 : -1;\n      selection.setRng(CaretPosition$1(pos.container(), pos.offset() + delta).toRange());\n      selection.getSel().modify('move', forward ? 'forward' : 'backward', 'word');\n      return true;\n    };\n    var moveByWord = function (forward, editor) {\n      var rng = editor.selection.getRng();\n      var pos = forward ? CaretPosition$1.fromRangeEnd(rng) : CaretPosition$1.fromRangeStart(rng);\n      if (!hasSelectionModifyApi(editor)) {\n        return false;\n      } else if (forward && isBeforeInline(pos)) {\n        return moveRel(true, editor.selection, pos);\n      } else if (!forward && isAfterInline(pos)) {\n        return moveRel(false, editor.selection, pos);\n      } else {\n        return false;\n      }\n    };\n    var WordSelection = {\n      hasSelectionModifyApi: hasSelectionModifyApi,\n      moveByWord: moveByWord\n    };\n\n    var setCaretPosition = function (editor, pos) {\n      var rng = editor.dom.createRng();\n      rng.setStart(pos.container(), pos.offset());\n      rng.setEnd(pos.container(), pos.offset());\n      editor.selection.setRng(rng);\n    };\n    var isFeatureEnabled = function (editor) {\n      return editor.settings.inline_boundaries !== false;\n    };\n    var setSelected = function (state, elm) {\n      if (state) {\n        elm.setAttribute('data-mce-selected', 'inline-boundary');\n      } else {\n        elm.removeAttribute('data-mce-selected');\n      }\n    };\n    var renderCaretLocation = function (editor, caret, location) {\n      return BoundaryCaret.renderCaret(caret, location).map(function (pos) {\n        setCaretPosition(editor, pos);\n        return location;\n      });\n    };\n    var findLocation$1 = function (editor, caret, forward) {\n      var rootNode = editor.getBody();\n      var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n      var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);\n      var location = BoundaryLocation.findLocation(forward, isInlineTarget, rootNode, from);\n      return location.bind(function (location) {\n        return renderCaretLocation(editor, caret, location);\n      });\n    };\n    var toggleInlines = function (isInlineTarget, dom, elms) {\n      var selectedInlines = filter(dom.select('*[data-mce-selected=\"inline-boundary\"]'), isInlineTarget);\n      var targetInlines = filter(elms, isInlineTarget);\n      each(difference(selectedInlines, targetInlines), curry(setSelected, false));\n      each(difference(targetInlines, selectedInlines), curry(setSelected, true));\n    };\n    var safeRemoveCaretContainer = function (editor, caret) {\n      if (editor.selection.isCollapsed() && editor.composing !== true && caret.get()) {\n        var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n        if (CaretPosition$1.isTextPosition(pos) && InlineUtils.isAtZwsp(pos) === false) {\n          setCaretPosition(editor, CaretContainerRemove.removeAndReposition(caret.get(), pos));\n          caret.set(null);\n        }\n      }\n    };\n    var renderInsideInlineCaret = function (isInlineTarget, editor, caret, elms) {\n      if (editor.selection.isCollapsed()) {\n        var inlines = filter(elms, isInlineTarget);\n        each(inlines, function (inline) {\n          var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n          BoundaryLocation.readLocation(isInlineTarget, editor.getBody(), pos).bind(function (location) {\n            return renderCaretLocation(editor, caret, location);\n          });\n        });\n      }\n    };\n    var move = function (editor, caret, forward) {\n      return function () {\n        return isFeatureEnabled(editor) ? findLocation$1(editor, caret, forward).isSome() : false;\n      };\n    };\n    var moveWord = function (forward, editor, caret) {\n      return function () {\n        return isFeatureEnabled(editor) ? WordSelection.moveByWord(forward, editor) : false;\n      };\n    };\n    var setupSelectedState = function (editor) {\n      var caret = Cell(null);\n      var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);\n      editor.on('NodeChange', function (e) {\n        if (isFeatureEnabled(editor)) {\n          toggleInlines(isInlineTarget, editor.dom, e.parents);\n          safeRemoveCaretContainer(editor, caret);\n          renderInsideInlineCaret(isInlineTarget, editor, caret, e.parents);\n        }\n      });\n      return caret;\n    };\n    var moveNextWord = curry(moveWord, true);\n    var movePrevWord = curry(moveWord, false);\n    var BoundarySelection = {\n      move: move,\n      moveNextWord: moveNextWord,\n      movePrevWord: movePrevWord,\n      setupSelectedState: setupSelectedState,\n      setCaretPosition: setCaretPosition\n    };\n\n    var isFeatureEnabled$1 = function (editor) {\n      return editor.settings.inline_boundaries !== false;\n    };\n    var rangeFromPositions = function (from, to) {\n      var range = document.createRange();\n      range.setStart(from.container(), from.offset());\n      range.setEnd(to.container(), to.offset());\n      return range;\n    };\n    var hasOnlyTwoOrLessPositionsLeft = function (elm) {\n      return liftN([\n        CaretFinder.firstPositionIn(elm),\n        CaretFinder.lastPositionIn(elm)\n      ], function (firstPos, lastPos) {\n        var normalizedFirstPos = InlineUtils.normalizePosition(true, firstPos);\n        var normalizedLastPos = InlineUtils.normalizePosition(false, lastPos);\n        return CaretFinder.nextPosition(elm, normalizedFirstPos).map(function (pos) {\n          return pos.isEqual(normalizedLastPos);\n        }).getOr(true);\n      }).getOr(true);\n    };\n    var setCaretLocation = function (editor, caret) {\n      return function (location$$1) {\n        return BoundaryCaret.renderCaret(caret, location$$1).map(function (pos) {\n          BoundarySelection.setCaretPosition(editor, pos);\n          return true;\n        }).getOr(false);\n      };\n    };\n    var deleteFromTo = function (editor, caret, from, to) {\n      var rootNode = editor.getBody();\n      var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);\n      editor.undoManager.ignore(function () {\n        editor.selection.setRng(rangeFromPositions(from, to));\n        editor.execCommand('Delete');\n        BoundaryLocation.readLocation(isInlineTarget, rootNode, CaretPosition$1.fromRangeStart(editor.selection.getRng())).map(BoundaryLocation.inside).map(setCaretLocation(editor, caret));\n      });\n      editor.nodeChanged();\n    };\n    var rescope$1 = function (rootNode, node) {\n      var parentBlock = getParentBlock(node, rootNode);\n      return parentBlock ? parentBlock : rootNode;\n    };\n    var backspaceDeleteCollapsed = function (editor, caret, forward, from) {\n      var rootNode = rescope$1(editor.getBody(), from.container());\n      var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);\n      var fromLocation = BoundaryLocation.readLocation(isInlineTarget, rootNode, from);\n      return fromLocation.bind(function (location$$1) {\n        if (forward) {\n          return location$$1.fold(constant(Option.some(BoundaryLocation.inside(location$$1))), Option.none, constant(Option.some(BoundaryLocation.outside(location$$1))), Option.none);\n        } else {\n          return location$$1.fold(Option.none, constant(Option.some(BoundaryLocation.outside(location$$1))), Option.none, constant(Option.some(BoundaryLocation.inside(location$$1))));\n        }\n      }).map(setCaretLocation(editor, caret)).getOrThunk(function () {\n        var toPosition = CaretFinder.navigate(forward, rootNode, from);\n        var toLocation = toPosition.bind(function (pos) {\n          return BoundaryLocation.readLocation(isInlineTarget, rootNode, pos);\n        });\n        if (fromLocation.isSome() && toLocation.isSome()) {\n          return InlineUtils.findRootInline(isInlineTarget, rootNode, from).map(function (elm) {\n            if (hasOnlyTwoOrLessPositionsLeft(elm)) {\n              DeleteElement.deleteElement(editor, forward, Element$$1.fromDom(elm));\n              return true;\n            } else {\n              return false;\n            }\n          }).getOr(false);\n        } else {\n          return toLocation.bind(function (_) {\n            return toPosition.map(function (to) {\n              if (forward) {\n                deleteFromTo(editor, caret, from, to);\n              } else {\n                deleteFromTo(editor, caret, to, from);\n              }\n              return true;\n            });\n          }).getOr(false);\n        }\n      });\n    };\n    var backspaceDelete$3 = function (editor, caret, forward) {\n      if (editor.selection.isCollapsed() && isFeatureEnabled$1(editor)) {\n        var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n        return backspaceDeleteCollapsed(editor, caret, forward, from);\n      }\n      return false;\n    };\n    var InlineBoundaryDelete = { backspaceDelete: backspaceDelete$3 };\n\n    var tableCellRng = Immutable('start', 'end');\n    var tableSelection = Immutable('rng', 'table', 'cells');\n    var deleteAction = Adt.generate([\n      { removeTable: ['element'] },\n      { emptyCells: ['cells'] }\n    ]);\n    var isRootFromElement = function (root) {\n      return curry(eq, root);\n    };\n    var getClosestCell = function (container, isRoot) {\n      return closest$1(Element$$1.fromDom(container), 'td,th', isRoot);\n    };\n    var getClosestTable = function (cell, isRoot) {\n      return ancestor$1(cell, 'table', isRoot);\n    };\n    var isExpandedCellRng = function (cellRng) {\n      return eq(cellRng.start(), cellRng.end()) === false;\n    };\n    var getTableFromCellRng = function (cellRng, isRoot) {\n      return getClosestTable(cellRng.start(), isRoot).bind(function (startParentTable) {\n        return getClosestTable(cellRng.end(), isRoot).bind(function (endParentTable) {\n          return eq(startParentTable, endParentTable) ? Option.some(startParentTable) : Option.none();\n        });\n      });\n    };\n    var getTableCells = function (table) {\n      return descendants$1(table, 'td,th');\n    };\n    var getCellRangeFromStartTable = function (cellRng, isRoot) {\n      return getClosestTable(cellRng.start(), isRoot).bind(function (table) {\n        return last(getTableCells(table)).map(function (endCell) {\n          return tableCellRng(cellRng.start(), endCell);\n        });\n      });\n    };\n    var partialSelection = function (isRoot, rng) {\n      var startCell = getClosestCell(rng.startContainer, isRoot);\n      var endCell = getClosestCell(rng.endContainer, isRoot);\n      return rng.collapsed ? Option.none() : liftN([\n        startCell,\n        endCell\n      ], tableCellRng).fold(function () {\n        return startCell.fold(function () {\n          return endCell.bind(function (endCell) {\n            return getClosestTable(endCell, isRoot).bind(function (table) {\n              return head(getTableCells(table)).map(function (startCell) {\n                return tableCellRng(startCell, endCell);\n              });\n            });\n          });\n        }, function (startCell) {\n          return getClosestTable(startCell, isRoot).bind(function (table) {\n            return last(getTableCells(table)).map(function (endCell) {\n              return tableCellRng(startCell, endCell);\n            });\n          });\n        });\n      }, function (cellRng) {\n        return isWithinSameTable(isRoot, cellRng) ? Option.none() : getCellRangeFromStartTable(cellRng, isRoot);\n      });\n    };\n    var isWithinSameTable = function (isRoot, cellRng) {\n      return getTableFromCellRng(cellRng, isRoot).isSome();\n    };\n    var getCellRng = function (rng, isRoot) {\n      var startCell = getClosestCell(rng.startContainer, isRoot);\n      var endCell = getClosestCell(rng.endContainer, isRoot);\n      return liftN([\n        startCell,\n        endCell\n      ], tableCellRng).filter(isExpandedCellRng).filter(function (cellRng) {\n        return isWithinSameTable(isRoot, cellRng);\n      }).orThunk(function () {\n        return partialSelection(isRoot, rng);\n      });\n    };\n    var getTableSelectionFromCellRng = function (cellRng, isRoot) {\n      return getTableFromCellRng(cellRng, isRoot).map(function (table) {\n        return tableSelection(cellRng, table, getTableCells(table));\n      });\n    };\n    var getTableSelectionFromRng = function (root, rng) {\n      var isRoot = isRootFromElement(root);\n      return getCellRng(rng, isRoot).bind(function (cellRng) {\n        return getTableSelectionFromCellRng(cellRng, isRoot);\n      });\n    };\n    var getCellIndex = function (cells, cell) {\n      return findIndex(cells, function (x) {\n        return eq(x, cell);\n      });\n    };\n    var getSelectedCells = function (tableSelection) {\n      return liftN([\n        getCellIndex(tableSelection.cells(), tableSelection.rng().start()),\n        getCellIndex(tableSelection.cells(), tableSelection.rng().end())\n      ], function (startIndex, endIndex) {\n        return tableSelection.cells().slice(startIndex, endIndex + 1);\n      });\n    };\n    var getAction = function (tableSelection) {\n      return getSelectedCells(tableSelection).map(function (selected) {\n        var cells = tableSelection.cells();\n        return selected.length === cells.length ? deleteAction.removeTable(tableSelection.table()) : deleteAction.emptyCells(selected);\n      });\n    };\n    var getActionFromCells = function (cells) {\n      return deleteAction.emptyCells(cells);\n    };\n    var getActionFromRange = function (root, rng) {\n      return getTableSelectionFromRng(root, rng).bind(getAction);\n    };\n    var TableDeleteAction = {\n      getActionFromRange: getActionFromRange,\n      getActionFromCells: getActionFromCells\n    };\n\n    var getRanges = function (selection) {\n      var ranges = [];\n      if (selection) {\n        for (var i = 0; i < selection.rangeCount; i++) {\n          ranges.push(selection.getRangeAt(i));\n        }\n      }\n      return ranges;\n    };\n    var getSelectedNodes = function (ranges) {\n      return bind(ranges, function (range$$1) {\n        var node = getSelectedNode(range$$1);\n        return node ? [Element$$1.fromDom(node)] : [];\n      });\n    };\n    var hasMultipleRanges = function (selection) {\n      return getRanges(selection).length > 1;\n    };\n    var MultiRange = {\n      getRanges: getRanges,\n      getSelectedNodes: getSelectedNodes,\n      hasMultipleRanges: hasMultipleRanges\n    };\n\n    var getCellsFromRanges = function (ranges) {\n      return filter(MultiRange.getSelectedNodes(ranges), isTableCell);\n    };\n    var getCellsFromElement = function (elm) {\n      var selectedCells = descendants$1(elm, 'td[data-mce-selected],th[data-mce-selected]');\n      return selectedCells;\n    };\n    var getCellsFromElementOrRanges = function (ranges, element) {\n      var selectedCells = getCellsFromElement(element);\n      var rangeCells = getCellsFromRanges(ranges);\n      return selectedCells.length > 0 ? selectedCells : rangeCells;\n    };\n    var getCellsFromEditor = function (editor) {\n      return getCellsFromElementOrRanges(MultiRange.getRanges(editor.selection.getSel()), Element$$1.fromDom(editor.getBody()));\n    };\n    var TableCellSelection = {\n      getCellsFromRanges: getCellsFromRanges,\n      getCellsFromElement: getCellsFromElement,\n      getCellsFromElementOrRanges: getCellsFromElementOrRanges,\n      getCellsFromEditor: getCellsFromEditor\n    };\n\n    var emptyCells = function (editor, cells) {\n      each(cells, PaddingBr.fillWithPaddingBr);\n      editor.selection.setCursorLocation(cells[0].dom(), 0);\n      return true;\n    };\n    var deleteTableElement = function (editor, table) {\n      DeleteElement.deleteElement(editor, false, table);\n      return true;\n    };\n    var deleteCellRange = function (editor, rootElm, rng) {\n      return TableDeleteAction.getActionFromRange(rootElm, rng).map(function (action) {\n        return action.fold(curry(deleteTableElement, editor), curry(emptyCells, editor));\n      });\n    };\n    var deleteCaptionRange = function (editor, caption) {\n      return emptyElement(editor, caption);\n    };\n    var deleteTableRange = function (editor, rootElm, rng, startElm) {\n      return getParentCaption(rootElm, startElm).fold(function () {\n        return deleteCellRange(editor, rootElm, rng);\n      }, function (caption) {\n        return deleteCaptionRange(editor, caption);\n      }).getOr(false);\n    };\n    var deleteRange$1 = function (editor, startElm) {\n      var rootNode = Element$$1.fromDom(editor.getBody());\n      var rng = editor.selection.getRng();\n      var selectedCells = TableCellSelection.getCellsFromEditor(editor);\n      return selectedCells.length !== 0 ? emptyCells(editor, selectedCells) : deleteTableRange(editor, rootNode, rng, startElm);\n    };\n    var getParentCell = function (rootElm, elm) {\n      return find(Parents.parentsAndSelf(elm, rootElm), isTableCell);\n    };\n    var getParentCaption = function (rootElm, elm) {\n      return find(Parents.parentsAndSelf(elm, rootElm), function (elm) {\n        return name(elm) === 'caption';\n      });\n    };\n    var deleteBetweenCells = function (editor, rootElm, forward, fromCell, from) {\n      return CaretFinder.navigate(forward, editor.getBody(), from).bind(function (to) {\n        return getParentCell(rootElm, Element$$1.fromDom(to.getNode())).map(function (toCell) {\n          return eq(toCell, fromCell) === false;\n        });\n      });\n    };\n    var emptyElement = function (editor, elm) {\n      PaddingBr.fillWithPaddingBr(elm);\n      editor.selection.setCursorLocation(elm.dom(), 0);\n      return Option.some(true);\n    };\n    var isDeleteOfLastCharPos = function (fromCaption, forward, from, to) {\n      return CaretFinder.firstPositionIn(fromCaption.dom()).bind(function (first) {\n        return CaretFinder.lastPositionIn(fromCaption.dom()).map(function (last$$1) {\n          return forward ? from.isEqual(first) && to.isEqual(last$$1) : from.isEqual(last$$1) && to.isEqual(first);\n        });\n      }).getOr(true);\n    };\n    var emptyCaretCaption = function (editor, elm) {\n      return emptyElement(editor, elm);\n    };\n    var validateCaretCaption = function (rootElm, fromCaption, to) {\n      return getParentCaption(rootElm, Element$$1.fromDom(to.getNode())).map(function (toCaption) {\n        return eq(toCaption, fromCaption) === false;\n      });\n    };\n    var deleteCaretInsideCaption = function (editor, rootElm, forward, fromCaption, from) {\n      return CaretFinder.navigate(forward, editor.getBody(), from).bind(function (to) {\n        return isDeleteOfLastCharPos(fromCaption, forward, from, to) ? emptyCaretCaption(editor, fromCaption) : validateCaretCaption(rootElm, fromCaption, to);\n      }).or(Option.some(true));\n    };\n    var deleteCaretCells = function (editor, forward, rootElm, startElm) {\n      var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n      return getParentCell(rootElm, startElm).bind(function (fromCell) {\n        return Empty.isEmpty(fromCell) ? emptyElement(editor, fromCell) : deleteBetweenCells(editor, rootElm, forward, fromCell, from);\n      });\n    };\n    var deleteCaretCaption = function (editor, forward, rootElm, fromCaption) {\n      var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n      return Empty.isEmpty(fromCaption) ? emptyElement(editor, fromCaption) : deleteCaretInsideCaption(editor, rootElm, forward, fromCaption, from);\n    };\n    var deleteCaret = function (editor, forward, startElm) {\n      var rootElm = Element$$1.fromDom(editor.getBody());\n      return getParentCaption(rootElm, startElm).fold(function () {\n        return deleteCaretCells(editor, forward, rootElm, startElm);\n      }, function (fromCaption) {\n        return deleteCaretCaption(editor, forward, rootElm, fromCaption);\n      }).getOr(false);\n    };\n    var backspaceDelete$4 = function (editor, forward) {\n      var startElm = Element$$1.fromDom(editor.selection.getStart(true));\n      var cells = TableCellSelection.getCellsFromEditor(editor);\n      return editor.selection.isCollapsed() && cells.length === 0 ? deleteCaret(editor, forward, startElm) : deleteRange$1(editor, startElm);\n    };\n    var TableDelete = { backspaceDelete: backspaceDelete$4 };\n\n    var nativeCommand = function (editor, command) {\n      editor.getDoc().execCommand(command, false, null);\n    };\n    var deleteCommand = function (editor) {\n      if (CefDelete.backspaceDelete(editor, false)) {\n        return;\n      } else if (InlineBoundaryDelete.backspaceDelete(editor, false)) {\n        return;\n      } else if (BlockBoundaryDelete.backspaceDelete(editor, false)) {\n        return;\n      } else if (TableDelete.backspaceDelete(editor)) {\n        return;\n      } else if (BlockRangeDelete.backspaceDelete(editor, false)) {\n        return;\n      } else {\n        nativeCommand(editor, 'Delete');\n        DeleteUtils.paddEmptyBody(editor);\n      }\n    };\n    var forwardDeleteCommand = function (editor) {\n      if (CefDelete.backspaceDelete(editor, true)) {\n        return;\n      } else if (InlineBoundaryDelete.backspaceDelete(editor, true)) {\n        return;\n      } else if (BlockBoundaryDelete.backspaceDelete(editor, true)) {\n        return;\n      } else if (TableDelete.backspaceDelete(editor)) {\n        return;\n      } else if (BlockRangeDelete.backspaceDelete(editor, true)) {\n        return;\n      } else {\n        nativeCommand(editor, 'ForwardDelete');\n      }\n    };\n    var DeleteCommands = {\n      deleteCommand: deleteCommand,\n      forwardDeleteCommand: forwardDeleteCommand\n    };\n\n    var getBodySetting = function (editor, name, defaultValue) {\n      var value = editor.getParam(name, defaultValue);\n      if (value.indexOf('=') !== -1) {\n        var bodyObj = editor.getParam(name, '', 'hash');\n        return bodyObj.hasOwnProperty(editor.id) ? bodyObj[editor.id] : defaultValue;\n      } else {\n        return value;\n      }\n    };\n    var getIframeAttrs = function (editor) {\n      return editor.getParam('iframe_attrs', {});\n    };\n    var getDocType = function (editor) {\n      return editor.getParam('doctype', '<!DOCTYPE html>');\n    };\n    var getDocumentBaseUrl = function (editor) {\n      return editor.getParam('document_base_url', '');\n    };\n    var getBodyId = function (editor) {\n      return getBodySetting(editor, 'body_id', 'tinymce');\n    };\n    var getBodyClass = function (editor) {\n      return getBodySetting(editor, 'body_class', '');\n    };\n    var getContentSecurityPolicy = function (editor) {\n      return editor.getParam('content_security_policy', '');\n    };\n    var shouldPutBrInPre = function (editor) {\n      return editor.getParam('br_in_pre', true);\n    };\n    var getForcedRootBlock = function (editor) {\n      if (editor.getParam('force_p_newlines', false)) {\n        return 'p';\n      }\n      var block = editor.getParam('forced_root_block', 'p');\n      return block === false ? '' : block;\n    };\n    var getForcedRootBlockAttrs = function (editor) {\n      return editor.getParam('forced_root_block_attrs', {});\n    };\n    var getBrNewLineSelector = function (editor) {\n      return editor.getParam('br_newline_selector', '.mce-toc h2,figcaption,caption');\n    };\n    var getNoNewLineSelector = function (editor) {\n      return editor.getParam('no_newline_selector', '');\n    };\n    var shouldKeepStyles = function (editor) {\n      return editor.getParam('keep_styles', true);\n    };\n    var shouldEndContainerOnEmptyBlock = function (editor) {\n      return editor.getParam('end_container_on_empty_block', false);\n    };\n    var getFontStyleValues = function (editor) {\n      return Tools.explode(editor.getParam('font_size_style_values', ''));\n    };\n    var getFontSizeClasses = function (editor) {\n      return Tools.explode(editor.getParam('font_size_classes', ''));\n    };\n    var getImagesDataImgFilter = function (editor) {\n      return editor.getParam('images_dataimg_filter', constant(true), 'function');\n    };\n    var isAutomaticUploadsEnabled = function (editor) {\n      return editor.getParam('automatic_uploads', true, 'boolean');\n    };\n    var shouldReuseFileName = function (editor) {\n      return editor.getParam('images_reuse_filename', false, 'boolean');\n    };\n    var shouldReplaceBlobUris = function (editor) {\n      return editor.getParam('images_replace_blob_uris', true, 'boolean');\n    };\n    var getImageUploadUrl = function (editor) {\n      return editor.getParam('images_upload_url', '', 'string');\n    };\n    var getImageUploadBasePath = function (editor) {\n      return editor.getParam('images_upload_base_path', '', 'string');\n    };\n    var getImagesUploadCredentials = function (editor) {\n      return editor.getParam('images_upload_credentials', false, 'boolean');\n    };\n    var getImagesUploadHandler = function (editor) {\n      return editor.getParam('images_upload_handler', null, 'function');\n    };\n    var shouldUseContentCssCors = function (editor) {\n      return editor.getParam('content_css_cors', false, 'boolean');\n    };\n    var Settings = {\n      getIframeAttrs: getIframeAttrs,\n      getDocType: getDocType,\n      getDocumentBaseUrl: getDocumentBaseUrl,\n      getBodyId: getBodyId,\n      getBodyClass: getBodyClass,\n      getContentSecurityPolicy: getContentSecurityPolicy,\n      shouldPutBrInPre: shouldPutBrInPre,\n      getForcedRootBlock: getForcedRootBlock,\n      getForcedRootBlockAttrs: getForcedRootBlockAttrs,\n      getBrNewLineSelector: getBrNewLineSelector,\n      getNoNewLineSelector: getNoNewLineSelector,\n      shouldKeepStyles: shouldKeepStyles,\n      shouldEndContainerOnEmptyBlock: shouldEndContainerOnEmptyBlock,\n      getFontStyleValues: getFontStyleValues,\n      getFontSizeClasses: getFontSizeClasses,\n      getImagesDataImgFilter: getImagesDataImgFilter,\n      isAutomaticUploadsEnabled: isAutomaticUploadsEnabled,\n      shouldReuseFileName: shouldReuseFileName,\n      shouldReplaceBlobUris: shouldReplaceBlobUris,\n      getImageUploadUrl: getImageUploadUrl,\n      getImageUploadBasePath: getImageUploadBasePath,\n      getImagesUploadCredentials: getImagesUploadCredentials,\n      getImagesUploadHandler: getImagesUploadHandler,\n      shouldUseContentCssCors: shouldUseContentCssCors\n    };\n\n    var getSpecifiedFontProp = function (propName, rootElm, elm) {\n      var getProperty = function (elm) {\n        return getRaw(elm, propName);\n      };\n      var isRoot = function (elm) {\n        return eq(Element$$1.fromDom(rootElm), elm);\n      };\n      return closest(Element$$1.fromDom(elm), function (elm) {\n        return getProperty(elm).isSome();\n      }, isRoot).bind(getProperty);\n    };\n    var round$1 = function (number, precision) {\n      var factor = Math.pow(10, precision);\n      return Math.round(number * factor) / factor;\n    };\n    var toPt = function (fontSize, precision) {\n      if (/[0-9.]+px$/.test(fontSize)) {\n        return round$1(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';\n      }\n      return fontSize;\n    };\n    var normalizeFontFamily = function (fontFamily) {\n      return fontFamily.replace(/[\\'\\\"\\\\]/g, '').replace(/,\\s+/g, ',');\n    };\n    var getComputedFontProp = function (propName, elm) {\n      return Option.from(DOMUtils$1.DOM.getStyle(elm, propName, true));\n    };\n    var getFontProp = function (propName) {\n      return function (rootElm, elm) {\n        return Option.from(elm).map(Element$$1.fromDom).filter(isElement).bind(function (element) {\n          return getSpecifiedFontProp(propName, rootElm, element.dom()).or(getComputedFontProp(propName, element.dom()));\n        }).getOr('');\n      };\n    };\n    var FontInfo = {\n      getFontSize: getFontProp('font-size'),\n      getFontFamily: compose(normalizeFontFamily, getFontProp('font-family')),\n      toPt: toPt\n    };\n\n    var findFirstCaretElement = function (editor) {\n      return CaretFinder.firstPositionIn(editor.getBody()).map(function (caret) {\n        var container = caret.container();\n        return NodeType.isText(container) ? container.parentNode : container;\n      });\n    };\n    var isRangeAtStartOfNode = function (rng, root) {\n      return rng.startContainer === root && rng.startOffset === 0;\n    };\n    var getCaretElement = function (editor) {\n      return Option.from(editor.selection.getRng()).bind(function (rng) {\n        var root = editor.getBody();\n        return isRangeAtStartOfNode(rng, root) ? Option.none() : Option.from(editor.selection.getStart(true));\n      });\n    };\n    var fromFontSizeNumber = function (editor, value) {\n      if (/^[0-9\\.]+$/.test(value)) {\n        var fontSizeNumber = parseInt(value, 10);\n        if (fontSizeNumber >= 1 && fontSizeNumber <= 7) {\n          var fontSizes = Settings.getFontStyleValues(editor);\n          var fontClasses = Settings.getFontSizeClasses(editor);\n          if (fontClasses) {\n            return fontClasses[fontSizeNumber - 1] || value;\n          } else {\n            return fontSizes[fontSizeNumber - 1] || value;\n          }\n        } else {\n          return value;\n        }\n      } else {\n        return value;\n      }\n    };\n    var fontNameAction = function (editor, value) {\n      editor.formatter.toggle('fontname', { value: fromFontSizeNumber(editor, value) });\n      editor.nodeChanged();\n    };\n    var fontNameQuery = function (editor) {\n      return getCaretElement(editor).fold(function () {\n        return findFirstCaretElement(editor).map(function (caretElement) {\n          return FontInfo.getFontFamily(editor.getBody(), caretElement);\n        }).getOr('');\n      }, function (caretElement) {\n        return FontInfo.getFontFamily(editor.getBody(), caretElement);\n      });\n    };\n    var fontSizeAction = function (editor, value) {\n      editor.formatter.toggle('fontsize', { value: fromFontSizeNumber(editor, value) });\n      editor.nodeChanged();\n    };\n    var fontSizeQuery = function (editor) {\n      return getCaretElement(editor).fold(function () {\n        return findFirstCaretElement(editor).map(function (caretElement) {\n          return FontInfo.getFontSize(editor.getBody(), caretElement);\n        }).getOr('');\n      }, function (caretElement) {\n        return FontInfo.getFontSize(editor.getBody(), caretElement);\n      });\n    };\n\n    var isEq$2 = function (rng1, rng2) {\n      return rng1 && rng2 && (rng1.startContainer === rng2.startContainer && rng1.startOffset === rng2.startOffset) && (rng1.endContainer === rng2.endContainer && rng1.endOffset === rng2.endOffset);\n    };\n    var RangeCompare = { isEq: isEq$2 };\n\n    var findParent = function (node, rootNode, predicate) {\n      while (node && node !== rootNode) {\n        if (predicate(node)) {\n          return node;\n        }\n        node = node.parentNode;\n      }\n      return null;\n    };\n    var hasParent = function (node, rootNode, predicate) {\n      return findParent(node, rootNode, predicate) !== null;\n    };\n    var hasParentWithName = function (node, rootNode, name) {\n      return hasParent(node, rootNode, function (node) {\n        return node.nodeName === name;\n      });\n    };\n    var isTable$2 = function (node) {\n      return node && node.nodeName === 'TABLE';\n    };\n    var isTableCell$3 = function (node) {\n      return node && /^(TD|TH|CAPTION)$/.test(node.nodeName);\n    };\n    var isCeFalseCaretContainer = function (node, rootNode) {\n      return isCaretContainer(node) && hasParent(node, rootNode, isCaretNode) === false;\n    };\n    var hasBrBeforeAfter = function (dom, node, left) {\n      var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || dom.getRoot());\n      while (node = walker[left ? 'prev' : 'next']()) {\n        if (NodeType.isBr(node)) {\n          return true;\n        }\n      }\n    };\n    var isPrevNode = function (node, name) {\n      return node.previousSibling && node.previousSibling.nodeName === name;\n    };\n    var hasContentEditableFalseParent = function (body, node) {\n      while (node && node !== body) {\n        if (NodeType.isContentEditableFalse(node)) {\n          return true;\n        }\n        node = node.parentNode;\n      }\n      return false;\n    };\n    var findTextNodeRelative = function (dom, isAfterNode, collapsed, left, startNode) {\n      var walker, lastInlineElement, parentBlockContainer;\n      var body = dom.getRoot();\n      var node;\n      var nonEmptyElementsMap = dom.schema.getNonEmptyElements();\n      parentBlockContainer = dom.getParent(startNode.parentNode, dom.isBlock) || body;\n      if (left && NodeType.isBr(startNode) && isAfterNode && dom.isEmpty(parentBlockContainer)) {\n        return Option.some(CaretPosition(startNode.parentNode, dom.nodeIndex(startNode)));\n      }\n      walker = new TreeWalker(startNode, parentBlockContainer);\n      while (node = walker[left ? 'prev' : 'next']()) {\n        if (dom.getContentEditableParent(node) === 'false' || isCeFalseCaretContainer(node, body)) {\n          return Option.none();\n        }\n        if (NodeType.isText(node) && node.nodeValue.length > 0) {\n          if (hasParentWithName(node, body, 'A') === false) {\n            return Option.some(CaretPosition(node, left ? node.nodeValue.length : 0));\n          }\n          return Option.none();\n        }\n        if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {\n          return Option.none();\n        }\n        lastInlineElement = node;\n      }\n      if (collapsed && lastInlineElement) {\n        return Option.some(CaretPosition(lastInlineElement, 0));\n      }\n      return Option.none();\n    };\n    var normalizeEndPoint = function (dom, collapsed, start, rng) {\n      var container, offset, walker;\n      var body = dom.getRoot();\n      var node, nonEmptyElementsMap;\n      var directionLeft, isAfterNode, normalized = false;\n      container = rng[(start ? 'start' : 'end') + 'Container'];\n      offset = rng[(start ? 'start' : 'end') + 'Offset'];\n      isAfterNode = NodeType.isElement(container) && offset === container.childNodes.length;\n      nonEmptyElementsMap = dom.schema.getNonEmptyElements();\n      directionLeft = start;\n      if (isCaretContainer(container)) {\n        return Option.none();\n      }\n      if (NodeType.isElement(container) && offset > container.childNodes.length - 1) {\n        directionLeft = false;\n      }\n      if (NodeType.isDocument(container)) {\n        container = body;\n        offset = 0;\n      }\n      if (container === body) {\n        if (directionLeft) {\n          node = container.childNodes[offset > 0 ? offset - 1 : 0];\n          if (node) {\n            if (isCaretContainer(node)) {\n              return Option.none();\n            }\n            if (nonEmptyElementsMap[node.nodeName] || isTable$2(node)) {\n              return Option.none();\n            }\n          }\n        }\n        if (container.hasChildNodes()) {\n          offset = Math.min(!directionLeft && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1);\n          container = container.childNodes[offset];\n          offset = NodeType.isText(container) && isAfterNode ? container.data.length : 0;\n          if (!collapsed && container === body.lastChild && isTable$2(container)) {\n            return Option.none();\n          }\n          if (hasContentEditableFalseParent(body, container) || isCaretContainer(container)) {\n            return Option.none();\n          }\n          if (container.hasChildNodes() && isTable$2(container) === false) {\n            node = container;\n            walker = new TreeWalker(container, body);\n            do {\n              if (NodeType.isContentEditableFalse(node) || isCaretContainer(node)) {\n                normalized = false;\n                break;\n              }\n              if (NodeType.isText(node) && node.nodeValue.length > 0) {\n                offset = directionLeft ? 0 : node.nodeValue.length;\n                container = node;\n                normalized = true;\n                break;\n              }\n              if (nonEmptyElementsMap[node.nodeName.toLowerCase()] && !isTableCell$3(node)) {\n                offset = dom.nodeIndex(node);\n                container = node.parentNode;\n                if (!directionLeft) {\n                  offset++;\n                }\n                normalized = true;\n                break;\n              }\n            } while (node = directionLeft ? walker.next() : walker.prev());\n          }\n        }\n      }\n      if (collapsed) {\n        if (NodeType.isText(container) && offset === 0) {\n          findTextNodeRelative(dom, isAfterNode, collapsed, true, container).each(function (pos) {\n            container = pos.container();\n            offset = pos.offset();\n            normalized = true;\n          });\n        }\n        if (NodeType.isElement(container)) {\n          node = container.childNodes[offset];\n          if (!node) {\n            node = container.childNodes[offset - 1];\n          }\n          if (node && NodeType.isBr(node) && !isPrevNode(node, 'A') && !hasBrBeforeAfter(dom, node, false) && !hasBrBeforeAfter(dom, node, true)) {\n            findTextNodeRelative(dom, isAfterNode, collapsed, true, node).each(function (pos) {\n              container = pos.container();\n              offset = pos.offset();\n              normalized = true;\n            });\n          }\n        }\n      }\n      if (directionLeft && !collapsed && NodeType.isText(container) && offset === container.nodeValue.length) {\n        findTextNodeRelative(dom, isAfterNode, collapsed, false, container).each(function (pos) {\n          container = pos.container();\n          offset = pos.offset();\n          normalized = true;\n        });\n      }\n      return normalized ? Option.some(CaretPosition(container, offset)) : Option.none();\n    };\n    var normalize$2 = function (dom, rng) {\n      var collapsed = rng.collapsed, normRng = rng.cloneRange();\n      var startPos = CaretPosition.fromRangeStart(rng);\n      normalizeEndPoint(dom, collapsed, true, normRng).each(function (pos) {\n        if (!collapsed || !CaretPosition.isAbove(startPos, pos)) {\n          normRng.setStart(pos.container(), pos.offset());\n        }\n      });\n      if (!collapsed) {\n        normalizeEndPoint(dom, collapsed, false, normRng).each(function (pos) {\n          normRng.setEnd(pos.container(), pos.offset());\n        });\n      }\n      if (collapsed) {\n        normRng.collapse(true);\n      }\n      return RangeCompare.isEq(rng, normRng) ? Option.none() : Option.some(normRng);\n    };\n    var NormalizeRange = { normalize: normalize$2 };\n\n    var hasRightSideContent = function (schema, container, parentBlock) {\n      var walker = new TreeWalker(container, parentBlock);\n      var node;\n      var nonEmptyElementsMap = schema.getNonEmptyElements();\n      while (node = walker.next()) {\n        if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || node.length > 0) {\n          return true;\n        }\n      }\n    };\n    var scrollToBr = function (dom, selection, brElm) {\n      var marker = dom.create('span', {}, '&nbsp;');\n      brElm.parentNode.insertBefore(marker, brElm);\n      selection.scrollIntoView(marker);\n      dom.remove(marker);\n    };\n    var moveSelectionToBr = function (dom, selection, brElm, extraBr) {\n      var rng = dom.createRng();\n      if (!extraBr) {\n        rng.setStartAfter(brElm);\n        rng.setEndAfter(brElm);\n      } else {\n        rng.setStartBefore(brElm);\n        rng.setEndBefore(brElm);\n      }\n      selection.setRng(rng);\n    };\n    var insertBrAtCaret = function (editor, evt) {\n      var selection = editor.selection, dom = editor.dom;\n      var brElm, extraBr;\n      var rng = selection.getRng();\n      NormalizeRange.normalize(dom, rng).each(function (normRng) {\n        rng.setStart(normRng.startContainer, normRng.startOffset);\n        rng.setEnd(normRng.endContainer, normRng.endOffset);\n      });\n      var offset = rng.startOffset;\n      var container = rng.startContainer;\n      if (container.nodeType === 1 && container.hasChildNodes()) {\n        var isAfterLastNodeInContainer = offset > container.childNodes.length - 1;\n        container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n        if (isAfterLastNodeInContainer && container.nodeType === 3) {\n          offset = container.nodeValue.length;\n        } else {\n          offset = 0;\n        }\n      }\n      var parentBlock = dom.getParent(container, dom.isBlock);\n      var containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;\n      var containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : '';\n      var isControlKey = evt && evt.ctrlKey;\n      if (containerBlockName === 'LI' && !isControlKey) {\n        parentBlock = containerBlock;\n      }\n      if (container && container.nodeType === 3 && offset >= container.nodeValue.length) {\n        if (!hasRightSideContent(editor.schema, container, parentBlock)) {\n          brElm = dom.create('br');\n          rng.insertNode(brElm);\n          rng.setStartAfter(brElm);\n          rng.setEndAfter(brElm);\n          extraBr = true;\n        }\n      }\n      brElm = dom.create('br');\n      rng.insertNode(brElm);\n      scrollToBr(dom, selection, brElm);\n      moveSelectionToBr(dom, selection, brElm, extraBr);\n      editor.undoManager.add();\n    };\n    var insertBrBefore = function (editor, inline) {\n      var br = Element$$1.fromTag('br');\n      before(Element$$1.fromDom(inline), br);\n      editor.undoManager.add();\n    };\n    var insertBrAfter = function (editor, inline) {\n      if (!hasBrAfter(editor.getBody(), inline)) {\n        after(Element$$1.fromDom(inline), Element$$1.fromTag('br'));\n      }\n      var br = Element$$1.fromTag('br');\n      after(Element$$1.fromDom(inline), br);\n      scrollToBr(editor.dom, editor.selection, br.dom());\n      moveSelectionToBr(editor.dom, editor.selection, br.dom(), false);\n      editor.undoManager.add();\n    };\n    var isBeforeBr$1 = function (pos) {\n      return NodeType.isBr(pos.getNode());\n    };\n    var hasBrAfter = function (rootNode, startNode) {\n      if (isBeforeBr$1(CaretPosition$1.after(startNode))) {\n        return true;\n      } else {\n        return CaretFinder.nextPosition(rootNode, CaretPosition$1.after(startNode)).map(function (pos) {\n          return NodeType.isBr(pos.getNode());\n        }).getOr(false);\n      }\n    };\n    var isAnchorLink = function (elm) {\n      return elm && elm.nodeName === 'A' && 'href' in elm;\n    };\n    var isInsideAnchor = function (location) {\n      return location.fold(constant(false), isAnchorLink, isAnchorLink, constant(false));\n    };\n    var readInlineAnchorLocation = function (editor) {\n      var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);\n      var position = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n      return BoundaryLocation.readLocation(isInlineTarget, editor.getBody(), position).filter(isInsideAnchor);\n    };\n    var insertBrOutsideAnchor = function (editor, location) {\n      location.fold(noop, curry(insertBrBefore, editor), curry(insertBrAfter, editor), noop);\n    };\n    var insert = function (editor, evt) {\n      var anchorLocation = readInlineAnchorLocation(editor);\n      if (anchorLocation.isSome()) {\n        anchorLocation.each(curry(insertBrOutsideAnchor, editor));\n      } else {\n        insertBrAtCaret(editor, evt);\n      }\n    };\n    var InsertBr = { insert: insert };\n\n    var adt = Adt.generate([\n      { 'before': ['element'] },\n      {\n        'on': [\n          'element',\n          'offset'\n        ]\n      },\n      { after: ['element'] }\n    ]);\n\n    var type$1 = Adt.generate([\n      { domRange: ['rng'] },\n      {\n        relative: [\n          'startSitu',\n          'finishSitu'\n        ]\n      },\n      {\n        exact: [\n          'start',\n          'soffset',\n          'finish',\n          'foffset'\n        ]\n      }\n    ]);\n    var range$1 = Immutable('start', 'soffset', 'finish', 'foffset');\n    var domRange = type$1.domRange;\n    var relative = type$1.relative;\n    var exact = type$1.exact;\n\n    var browser$3 = PlatformDetection$1.detect().browser;\n    var clamp = function (offset, element) {\n      var max = isText(element) ? get$6(element).length : children(element).length + 1;\n      if (offset > max) {\n        return max;\n      } else if (offset < 0) {\n        return 0;\n      }\n      return offset;\n    };\n    var normalizeRng = function (rng) {\n      return range$1(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish()));\n    };\n    var isOrContains = function (root, elm) {\n      return contains$3(root, elm) || eq(root, elm);\n    };\n    var isRngInRoot = function (root) {\n      return function (rng) {\n        return isOrContains(root, rng.start()) && isOrContains(root, rng.finish());\n      };\n    };\n    var shouldStore = function (editor) {\n      return editor.inline === true || browser$3.isIE();\n    };\n    var nativeRangeToSelectionRange = function (r) {\n      return range$1(Element$$1.fromDom(r.startContainer), r.startOffset, Element$$1.fromDom(r.endContainer), r.endOffset);\n    };\n    var readRange = function (win) {\n      var selection = win.getSelection();\n      var rng = !selection || selection.rangeCount === 0 ? Option.none() : Option.from(selection.getRangeAt(0));\n      return rng.map(nativeRangeToSelectionRange);\n    };\n    var getBookmark$2 = function (root) {\n      var win = defaultView(root);\n      return readRange(win.dom()).filter(isRngInRoot(root));\n    };\n    var validate = function (root, bookmark) {\n      return Option.from(bookmark).filter(isRngInRoot(root)).map(normalizeRng);\n    };\n    var bookmarkToNativeRng = function (bookmark) {\n      var rng = document.createRange();\n      try {\n        rng.setStart(bookmark.start().dom(), bookmark.soffset());\n        rng.setEnd(bookmark.finish().dom(), bookmark.foffset());\n        return Option.some(rng);\n      } catch (_) {\n        return Option.none();\n      }\n    };\n    var store = function (editor) {\n      var newBookmark = shouldStore(editor) ? getBookmark$2(Element$$1.fromDom(editor.getBody())) : Option.none();\n      editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark;\n    };\n    var storeNative = function (editor, rng) {\n      var root = Element$$1.fromDom(editor.getBody());\n      var range = shouldStore(editor) ? Option.from(rng) : Option.none();\n      var newBookmark = range.map(nativeRangeToSelectionRange).filter(isRngInRoot(root));\n      editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark;\n    };\n    var getRng = function (editor) {\n      var bookmark = editor.bookmark ? editor.bookmark : Option.none();\n      return bookmark.bind(curry(validate, Element$$1.fromDom(editor.getBody()))).bind(bookmarkToNativeRng);\n    };\n    var restore = function (editor) {\n      getRng(editor).each(function (rng) {\n        editor.selection.setRng(rng);\n      });\n    };\n    var SelectionBookmark = {\n      store: store,\n      storeNative: storeNative,\n      readRange: readRange,\n      restore: restore,\n      getRng: getRng,\n      getBookmark: getBookmark$2,\n      validate: validate\n    };\n\n    var indentElement = function (dom, command, useMargin, value, unit, element) {\n      if (dom.getContentEditable(element) === 'false') {\n        return;\n      }\n      var indentStyleName = useMargin ? 'margin' : 'padding';\n      indentStyleName = element.nodeName === 'TABLE' ? 'margin' : indentStyleName;\n      indentStyleName += dom.getStyle(element, 'direction', true) === 'rtl' ? 'Right' : 'Left';\n      if (command === 'outdent') {\n        var styleValue = Math.max(0, parseInt(element.style[indentStyleName] || 0, 10) - value);\n        dom.setStyle(element, indentStyleName, styleValue ? styleValue + unit : '');\n      } else {\n        var styleValue = parseInt(element.style[indentStyleName] || 0, 10) + value + unit;\n        dom.setStyle(element, indentStyleName, styleValue);\n      }\n    };\n    var isListComponent = function (el) {\n      return isList(el) || isListItem(el);\n    };\n    var parentIsListComponent = function (el) {\n      return parent(el).map(isListComponent).getOr(false);\n    };\n    var getBlocksToIndent = function (editor) {\n      return filter(map(editor.selection.getSelectedBlocks(), Element$$1.fromDom), function (el) {\n        return !isListComponent(el) && !parentIsListComponent(el);\n      });\n    };\n    var handle = function (editor, command) {\n      var settings = editor.settings, dom = editor.dom, selection = editor.selection, formatter = editor.formatter;\n      var indentUnit = /[a-z%]+$/i.exec(settings.indentation)[0];\n      var indentValue = parseInt(settings.indentation, 10);\n      var useMargin = editor.getParam('indent_use_margin', false);\n      if (!editor.queryCommandState('InsertUnorderedList') && !editor.queryCommandState('InsertOrderedList')) {\n        if (!settings.forced_root_block && !dom.getParent(selection.getNode(), dom.isBlock)) {\n          formatter.apply('div');\n        }\n      }\n      each(getBlocksToIndent(editor), function (block) {\n        indentElement(dom, command, useMargin, indentValue, indentUnit, block.dom());\n      });\n    };\n\n    var each$a = Tools.each, extend$2 = Tools.extend;\n    var map$3 = Tools.map, inArray$2 = Tools.inArray;\n    function EditorCommands (editor) {\n      var dom, selection, formatter;\n      var commands = {\n        state: {},\n        exec: {},\n        value: {}\n      };\n      var settings = editor.settings, bookmark;\n      editor.on('PreInit', function () {\n        dom = editor.dom;\n        selection = editor.selection;\n        settings = editor.settings;\n        formatter = editor.formatter;\n      });\n      var execCommand = function (command, ui, value, args) {\n        var func, customCommand, state = false;\n        if (editor.removed) {\n          return;\n        }\n        if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(command) && (!args || !args.skip_focus)) {\n          editor.focus();\n        } else {\n          SelectionBookmark.restore(editor);\n        }\n        args = editor.fire('BeforeExecCommand', {\n          command: command,\n          ui: ui,\n          value: value\n        });\n        if (args.isDefaultPrevented()) {\n          return false;\n        }\n        customCommand = command.toLowerCase();\n        if (func = commands.exec[customCommand]) {\n          func(customCommand, ui, value);\n          editor.fire('ExecCommand', {\n            command: command,\n            ui: ui,\n            value: value\n          });\n          return true;\n        }\n        each$a(editor.plugins, function (p) {\n          if (p.execCommand && p.execCommand(command, ui, value)) {\n            editor.fire('ExecCommand', {\n              command: command,\n              ui: ui,\n              value: value\n            });\n            state = true;\n            return false;\n          }\n        });\n        if (state) {\n          return state;\n        }\n        if (editor.theme && editor.theme.execCommand && editor.theme.execCommand(command, ui, value)) {\n          editor.fire('ExecCommand', {\n            command: command,\n            ui: ui,\n            value: value\n          });\n          return true;\n        }\n        try {\n          state = editor.getDoc().execCommand(command, ui, value);\n        } catch (ex) {\n        }\n        if (state) {\n          editor.fire('ExecCommand', {\n            command: command,\n            ui: ui,\n            value: value\n          });\n          return true;\n        }\n        return false;\n      };\n      var queryCommandState = function (command) {\n        var func;\n        if (editor.quirks.isHidden() || editor.removed) {\n          return;\n        }\n        command = command.toLowerCase();\n        if (func = commands.state[command]) {\n          return func(command);\n        }\n        try {\n          return editor.getDoc().queryCommandState(command);\n        } catch (ex) {\n        }\n        return false;\n      };\n      var queryCommandValue = function (command) {\n        var func;\n        if (editor.quirks.isHidden() || editor.removed) {\n          return;\n        }\n        command = command.toLowerCase();\n        if (func = commands.value[command]) {\n          return func(command);\n        }\n        try {\n          return editor.getDoc().queryCommandValue(command);\n        } catch (ex) {\n        }\n      };\n      var addCommands = function (commandList, type) {\n        type = type || 'exec';\n        each$a(commandList, function (callback, command) {\n          each$a(command.toLowerCase().split(','), function (command) {\n            commands[type][command] = callback;\n          });\n        });\n      };\n      var addCommand = function (command, callback, scope) {\n        command = command.toLowerCase();\n        commands.exec[command] = function (command, ui, value, args) {\n          return callback.call(scope || editor, ui, value, args);\n        };\n      };\n      var queryCommandSupported = function (command) {\n        command = command.toLowerCase();\n        if (commands.exec[command]) {\n          return true;\n        }\n        try {\n          return editor.getDoc().queryCommandSupported(command);\n        } catch (ex) {\n        }\n        return false;\n      };\n      var addQueryStateHandler = function (command, callback, scope) {\n        command = command.toLowerCase();\n        commands.state[command] = function () {\n          return callback.call(scope || editor);\n        };\n      };\n      var addQueryValueHandler = function (command, callback, scope) {\n        command = command.toLowerCase();\n        commands.value[command] = function () {\n          return callback.call(scope || editor);\n        };\n      };\n      var hasCustomCommand = function (command) {\n        command = command.toLowerCase();\n        return !!commands.exec[command];\n      };\n      extend$2(this, {\n        execCommand: execCommand,\n        queryCommandState: queryCommandState,\n        queryCommandValue: queryCommandValue,\n        queryCommandSupported: queryCommandSupported,\n        addCommands: addCommands,\n        addCommand: addCommand,\n        addQueryStateHandler: addQueryStateHandler,\n        addQueryValueHandler: addQueryValueHandler,\n        hasCustomCommand: hasCustomCommand\n      });\n      var execNativeCommand = function (command, ui, value) {\n        if (ui === undefined) {\n          ui = false;\n        }\n        if (value === undefined) {\n          value = null;\n        }\n        return editor.getDoc().execCommand(command, ui, value);\n      };\n      var isFormatMatch = function (name) {\n        return formatter.match(name);\n      };\n      var toggleFormat = function (name, value) {\n        formatter.toggle(name, value ? { value: value } : undefined);\n        editor.nodeChanged();\n      };\n      var storeSelection = function (type) {\n        bookmark = selection.getBookmark(type);\n      };\n      var restoreSelection = function () {\n        selection.moveToBookmark(bookmark);\n      };\n      addCommands({\n        'mceResetDesignMode,mceBeginUndoLevel': function () {\n        },\n        'mceEndUndoLevel,mceAddUndoLevel': function () {\n          editor.undoManager.add();\n        },\n        'Cut,Copy,Paste': function (command) {\n          var doc = editor.getDoc();\n          var failed;\n          try {\n            execNativeCommand(command);\n          } catch (ex) {\n            failed = true;\n          }\n          if (command === 'paste' && !doc.queryCommandEnabled(command)) {\n            failed = true;\n          }\n          if (failed || !doc.queryCommandSupported(command)) {\n            var msg = editor.translate('Your browser doesn\\'t support direct access to the clipboard. ' + 'Please use the Ctrl+X/C/V keyboard shortcuts instead.');\n            if (Env.mac) {\n              msg = msg.replace(/Ctrl\\+/g, '\\u2318+');\n            }\n            editor.notificationManager.open({\n              text: msg,\n              type: 'error'\n            });\n          }\n        },\n        'unlink': function () {\n          if (selection.isCollapsed()) {\n            var elm = editor.dom.getParent(editor.selection.getStart(), 'a');\n            if (elm) {\n              editor.dom.remove(elm, true);\n            }\n            return;\n          }\n          formatter.remove('link');\n        },\n        'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone': function (command) {\n          var align = command.substring(7);\n          if (align === 'full') {\n            align = 'justify';\n          }\n          each$a('left,center,right,justify'.split(','), function (name) {\n            if (align !== name) {\n              formatter.remove('align' + name);\n            }\n          });\n          if (align !== 'none') {\n            toggleFormat('align' + align);\n          }\n        },\n        'InsertUnorderedList,InsertOrderedList': function (command) {\n          var listElm, listParent;\n          execNativeCommand(command);\n          listElm = dom.getParent(selection.getNode(), 'ol,ul');\n          if (listElm) {\n            listParent = listElm.parentNode;\n            if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) {\n              storeSelection();\n              dom.split(listParent, listElm);\n              restoreSelection();\n            }\n          }\n        },\n        'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) {\n          toggleFormat(command);\n        },\n        'ForeColor,HiliteColor': function (command, ui, value) {\n          toggleFormat(command, value);\n        },\n        'FontName': function (command, ui, value) {\n          fontNameAction(editor, value);\n        },\n        'FontSize': function (command, ui, value) {\n          fontSizeAction(editor, value);\n        },\n        'RemoveFormat': function (command) {\n          formatter.remove(command);\n        },\n        'mceBlockQuote': function () {\n          toggleFormat('blockquote');\n        },\n        'FormatBlock': function (command, ui, value) {\n          return toggleFormat(value || 'p');\n        },\n        'mceCleanup': function () {\n          var bookmark = selection.getBookmark();\n          editor.setContent(editor.getContent());\n          selection.moveToBookmark(bookmark);\n        },\n        'mceRemoveNode': function (command, ui, value) {\n          var node = value || selection.getNode();\n          if (node !== editor.getBody()) {\n            storeSelection();\n            editor.dom.remove(node, true);\n            restoreSelection();\n          }\n        },\n        'mceSelectNodeDepth': function (command, ui, value) {\n          var counter = 0;\n          dom.getParent(selection.getNode(), function (node) {\n            if (node.nodeType === 1 && counter++ === value) {\n              selection.select(node);\n              return false;\n            }\n          }, editor.getBody());\n        },\n        'mceSelectNode': function (command, ui, value) {\n          selection.select(value);\n        },\n        'mceInsertContent': function (command, ui, value) {\n          InsertContent.insertAtCaret(editor, value);\n        },\n        'mceInsertRawHTML': function (command, ui, value) {\n          selection.setContent('tiny_mce_marker');\n          var content = editor.getContent();\n          editor.setContent(content.replace(/tiny_mce_marker/g, function () {\n            return value;\n          }));\n        },\n        'mceToggleFormat': function (command, ui, value) {\n          toggleFormat(value);\n        },\n        'mceSetContent': function (command, ui, value) {\n          editor.setContent(value);\n        },\n        'Indent,Outdent': function (command) {\n          handle(editor, command);\n        },\n        'mceRepaint': function () {\n        },\n        'InsertHorizontalRule': function () {\n          editor.execCommand('mceInsertContent', false, '<hr />');\n        },\n        'mceToggleVisualAid': function () {\n          editor.hasVisual = !editor.hasVisual;\n          editor.addVisual();\n        },\n        'mceReplaceContent': function (command, ui, value) {\n          editor.execCommand('mceInsertContent', false, value.replace(/\\{\\$selection\\}/g, selection.getContent({ format: 'text' })));\n        },\n        'mceInsertLink': function (command, ui, value) {\n          var anchor;\n          if (typeof value === 'string') {\n            value = { href: value };\n          }\n          anchor = dom.getParent(selection.getNode(), 'a');\n          value.href = value.href.replace(' ', '%20');\n          if (!anchor || !value.href) {\n            formatter.remove('link');\n          }\n          if (value.href) {\n            formatter.apply('link', value, anchor);\n          }\n        },\n        'selectAll': function () {\n          var editingHost = dom.getParent(selection.getStart(), NodeType.isContentEditableTrue);\n          if (editingHost) {\n            var rng = dom.createRng();\n            rng.selectNodeContents(editingHost);\n            selection.setRng(rng);\n          }\n        },\n        'delete': function () {\n          DeleteCommands.deleteCommand(editor);\n        },\n        'forwardDelete': function () {\n          DeleteCommands.forwardDeleteCommand(editor);\n        },\n        'mceNewDocument': function () {\n          editor.setContent('');\n        },\n        'InsertLineBreak': function (command, ui, value) {\n          InsertBr.insert(editor, value);\n          return true;\n        }\n      });\n      var alignStates = function (name) {\n        return function () {\n          var nodes = selection.isCollapsed() ? [dom.getParent(selection.getNode(), dom.isBlock)] : selection.getSelectedBlocks();\n          var matches = map$3(nodes, function (node) {\n            return !!formatter.matchNode(node, name);\n          });\n          return inArray$2(matches, true) !== -1;\n        };\n      };\n      addCommands({\n        'JustifyLeft': alignStates('alignleft'),\n        'JustifyCenter': alignStates('aligncenter'),\n        'JustifyRight': alignStates('alignright'),\n        'JustifyFull': alignStates('alignjustify'),\n        'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) {\n          return isFormatMatch(command);\n        },\n        'mceBlockQuote': function () {\n          return isFormatMatch('blockquote');\n        },\n        'Outdent': function () {\n          var node;\n          if (settings.inline_styles) {\n            if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) {\n              return true;\n            }\n            if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) {\n              return true;\n            }\n          }\n          return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || !settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE');\n        },\n        'InsertUnorderedList,InsertOrderedList': function (command) {\n          var list = dom.getParent(selection.getNode(), 'ul,ol');\n          return list && (command === 'insertunorderedlist' && list.tagName === 'UL' || command === 'insertorderedlist' && list.tagName === 'OL');\n        }\n      }, 'state');\n      addCommands({\n        Undo: function () {\n          editor.undoManager.undo();\n        },\n        Redo: function () {\n          editor.undoManager.redo();\n        }\n      });\n      addQueryValueHandler('FontName', function () {\n        return fontNameQuery(editor);\n      }, this);\n      addQueryValueHandler('FontSize', function () {\n        return fontSizeQuery(editor);\n      }, this);\n    }\n\n    var nativeEvents = Tools.makeMap('focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange ' + 'mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover ' + 'draggesture dragdrop drop drag submit ' + 'compositionstart compositionend compositionupdate touchstart touchmove touchend', ' ');\n    var Dispatcher = function (settings) {\n      var self = this;\n      var scope, bindings = {}, toggleEvent;\n      var returnFalse = function () {\n        return false;\n      };\n      var returnTrue = function () {\n        return true;\n      };\n      settings = settings || {};\n      scope = settings.scope || self;\n      toggleEvent = settings.toggleEvent || returnFalse;\n      var fire = function (name, args) {\n        var handlers, i, l, callback;\n        name = name.toLowerCase();\n        args = args || {};\n        args.type = name;\n        if (!args.target) {\n          args.target = scope;\n        }\n        if (!args.preventDefault) {\n          args.preventDefault = function () {\n            args.isDefaultPrevented = returnTrue;\n          };\n          args.stopPropagation = function () {\n            args.isPropagationStopped = returnTrue;\n          };\n          args.stopImmediatePropagation = function () {\n            args.isImmediatePropagationStopped = returnTrue;\n          };\n          args.isDefaultPrevented = returnFalse;\n          args.isPropagationStopped = returnFalse;\n          args.isImmediatePropagationStopped = returnFalse;\n        }\n        if (settings.beforeFire) {\n          settings.beforeFire(args);\n        }\n        handlers = bindings[name];\n        if (handlers) {\n          for (i = 0, l = handlers.length; i < l; i++) {\n            callback = handlers[i];\n            if (callback.once) {\n              off(name, callback.func);\n            }\n            if (args.isImmediatePropagationStopped()) {\n              args.stopPropagation();\n              return args;\n            }\n            if (callback.func.call(scope, args) === false) {\n              args.preventDefault();\n              return args;\n            }\n          }\n        }\n        return args;\n      };\n      var on = function (name, callback, prepend, extra) {\n        var handlers, names, i;\n        if (callback === false) {\n          callback = returnFalse;\n        }\n        if (callback) {\n          callback = { func: callback };\n          if (extra) {\n            Tools.extend(callback, extra);\n          }\n          names = name.toLowerCase().split(' ');\n          i = names.length;\n          while (i--) {\n            name = names[i];\n            handlers = bindings[name];\n            if (!handlers) {\n              handlers = bindings[name] = [];\n              toggleEvent(name, true);\n            }\n            if (prepend) {\n              handlers.unshift(callback);\n            } else {\n              handlers.push(callback);\n            }\n          }\n        }\n        return self;\n      };\n      var off = function (name, callback) {\n        var i, handlers, bindingName, names, hi;\n        if (name) {\n          names = name.toLowerCase().split(' ');\n          i = names.length;\n          while (i--) {\n            name = names[i];\n            handlers = bindings[name];\n            if (!name) {\n              for (bindingName in bindings) {\n                toggleEvent(bindingName, false);\n                delete bindings[bindingName];\n              }\n              return self;\n            }\n            if (handlers) {\n              if (!callback) {\n                handlers.length = 0;\n              } else {\n                hi = handlers.length;\n                while (hi--) {\n                  if (handlers[hi].func === callback) {\n                    handlers = handlers.slice(0, hi).concat(handlers.slice(hi + 1));\n                    bindings[name] = handlers;\n                  }\n                }\n              }\n              if (!handlers.length) {\n                toggleEvent(name, false);\n                delete bindings[name];\n              }\n            }\n          }\n        } else {\n          for (name in bindings) {\n            toggleEvent(name, false);\n          }\n          bindings = {};\n        }\n        return self;\n      };\n      var once = function (name, callback, prepend) {\n        return on(name, callback, prepend, { once: true });\n      };\n      var has = function (name) {\n        name = name.toLowerCase();\n        return !(!bindings[name] || bindings[name].length === 0);\n      };\n      self.fire = fire;\n      self.on = on;\n      self.off = off;\n      self.once = once;\n      self.has = has;\n    };\n    Dispatcher.isNative = function (name) {\n      return !!nativeEvents[name.toLowerCase()];\n    };\n\n    var getEventDispatcher = function (obj) {\n      if (!obj._eventDispatcher) {\n        obj._eventDispatcher = new Dispatcher({\n          scope: obj,\n          toggleEvent: function (name, state) {\n            if (Dispatcher.isNative(name) && obj.toggleNativeEvent) {\n              obj.toggleNativeEvent(name, state);\n            }\n          }\n        });\n      }\n      return obj._eventDispatcher;\n    };\n    var Observable = {\n      fire: function (name, args, bubble) {\n        var self = this;\n        if (self.removed && name !== 'remove') {\n          return args;\n        }\n        args = getEventDispatcher(self).fire(name, args, bubble);\n        if (bubble !== false && self.parent) {\n          var parent = self.parent();\n          while (parent && !args.isPropagationStopped()) {\n            parent.fire(name, args, false);\n            parent = parent.parent();\n          }\n        }\n        return args;\n      },\n      on: function (name, callback, prepend) {\n        return getEventDispatcher(this).on(name, callback, prepend);\n      },\n      off: function (name, callback) {\n        return getEventDispatcher(this).off(name, callback);\n      },\n      once: function (name, callback) {\n        return getEventDispatcher(this).once(name, callback);\n      },\n      hasEventListeners: function (name) {\n        return getEventDispatcher(this).has(name);\n      }\n    };\n\n    var firePreProcess = function (editor, args) {\n      return editor.fire('PreProcess', args);\n    };\n    var firePostProcess = function (editor, args) {\n      return editor.fire('PostProcess', args);\n    };\n    var fireRemove = function (editor) {\n      return editor.fire('remove');\n    };\n    var fireSwitchMode = function (editor, mode) {\n      return editor.fire('SwitchMode', { mode: mode });\n    };\n    var fireObjectResizeStart = function (editor, target, width, height) {\n      editor.fire('ObjectResizeStart', {\n        target: target,\n        width: width,\n        height: height\n      });\n    };\n    var fireObjectResized = function (editor, target, width, height) {\n      editor.fire('ObjectResized', {\n        target: target,\n        width: width,\n        height: height\n      });\n    };\n    var Events = {\n      firePreProcess: firePreProcess,\n      firePostProcess: firePostProcess,\n      fireRemove: fireRemove,\n      fireSwitchMode: fireSwitchMode,\n      fireObjectResizeStart: fireObjectResizeStart,\n      fireObjectResized: fireObjectResized\n    };\n\n    var setEditorCommandState = function (editor, cmd, state) {\n      try {\n        editor.getDoc().execCommand(cmd, false, state);\n      } catch (ex) {\n      }\n    };\n    var toggleClass = function (elm, cls, state) {\n      if (has$2(elm, cls) && state === false) {\n        remove$5(elm, cls);\n      } else if (state) {\n        add$2(elm, cls);\n      }\n    };\n    var toggleReadOnly = function (editor, state) {\n      toggleClass(Element$$1.fromDom(editor.getBody()), 'mce-content-readonly', state);\n      if (state) {\n        editor.selection.controlSelection.hideResizeRect();\n        editor.readonly = true;\n        editor.getBody().contentEditable = 'false';\n      } else {\n        editor.readonly = false;\n        editor.getBody().contentEditable = 'true';\n        setEditorCommandState(editor, 'StyleWithCSS', false);\n        setEditorCommandState(editor, 'enableInlineTableEditing', false);\n        setEditorCommandState(editor, 'enableObjectResizing', false);\n        editor.focus();\n        editor.nodeChanged();\n      }\n    };\n    var setMode = function (editor, mode) {\n      if (mode === getMode(editor)) {\n        return;\n      }\n      if (editor.initialized) {\n        toggleReadOnly(editor, mode === 'readonly');\n      } else {\n        editor.on('init', function () {\n          toggleReadOnly(editor, mode === 'readonly');\n        });\n      }\n      Events.fireSwitchMode(editor, mode);\n    };\n    var getMode = function (editor) {\n      return editor.readonly ? 'readonly' : 'design';\n    };\n    var isReadOnly = function (editor) {\n      return editor.readonly === true;\n    };\n\n    var DOM$1 = DOMUtils$1.DOM;\n    var customEventRootDelegates;\n    var getEventTarget = function (editor, eventName) {\n      if (eventName === 'selectionchange') {\n        return editor.getDoc();\n      }\n      if (!editor.inline && /^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(eventName)) {\n        return editor.getDoc().documentElement;\n      }\n      if (editor.settings.event_root) {\n        if (!editor.eventRoot) {\n          editor.eventRoot = DOM$1.select(editor.settings.event_root)[0];\n        }\n        return editor.eventRoot;\n      }\n      return editor.getBody();\n    };\n    var isListening = function (editor) {\n      return !editor.hidden && !editor.readonly;\n    };\n    var fireEvent = function (editor, eventName, e) {\n      if (isListening(editor)) {\n        editor.fire(eventName, e);\n      } else if (isReadOnly(editor)) {\n        e.preventDefault();\n      }\n    };\n    var bindEventDelegate = function (editor, eventName) {\n      var eventRootElm, delegate;\n      if (!editor.delegates) {\n        editor.delegates = {};\n      }\n      if (editor.delegates[eventName] || editor.removed) {\n        return;\n      }\n      eventRootElm = getEventTarget(editor, eventName);\n      if (editor.settings.event_root) {\n        if (!customEventRootDelegates) {\n          customEventRootDelegates = {};\n          editor.editorManager.on('removeEditor', function () {\n            var name;\n            if (!editor.editorManager.activeEditor) {\n              if (customEventRootDelegates) {\n                for (name in customEventRootDelegates) {\n                  editor.dom.unbind(getEventTarget(editor, name));\n                }\n                customEventRootDelegates = null;\n              }\n            }\n          });\n        }\n        if (customEventRootDelegates[eventName]) {\n          return;\n        }\n        delegate = function (e) {\n          var target = e.target;\n          var editors = editor.editorManager.get();\n          var i = editors.length;\n          while (i--) {\n            var body = editors[i].getBody();\n            if (body === target || DOM$1.isChildOf(target, body)) {\n              fireEvent(editors[i], eventName, e);\n            }\n          }\n        };\n        customEventRootDelegates[eventName] = delegate;\n        DOM$1.bind(eventRootElm, eventName, delegate);\n      } else {\n        delegate = function (e) {\n          fireEvent(editor, eventName, e);\n        };\n        DOM$1.bind(eventRootElm, eventName, delegate);\n        editor.delegates[eventName] = delegate;\n      }\n    };\n    var EditorObservable = {\n      bindPendingEventDelegates: function () {\n        var self = this;\n        Tools.each(self._pendingNativeEvents, function (name) {\n          bindEventDelegate(self, name);\n        });\n      },\n      toggleNativeEvent: function (name, state) {\n        var self = this;\n        if (name === 'focus' || name === 'blur') {\n          return;\n        }\n        if (state) {\n          if (self.initialized) {\n            bindEventDelegate(self, name);\n          } else {\n            if (!self._pendingNativeEvents) {\n              self._pendingNativeEvents = [name];\n            } else {\n              self._pendingNativeEvents.push(name);\n            }\n          }\n        } else if (self.initialized) {\n          self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);\n          delete self.delegates[name];\n        }\n      },\n      unbindAllNativeEvents: function () {\n        var self = this;\n        var body = self.getBody();\n        var dom = self.dom;\n        var name;\n        if (self.delegates) {\n          for (name in self.delegates) {\n            self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);\n          }\n          delete self.delegates;\n        }\n        if (!self.inline && body && dom) {\n          body.onload = null;\n          dom.unbind(self.getWin());\n          dom.unbind(self.getDoc());\n        }\n        if (dom) {\n          dom.unbind(body);\n          dom.unbind(self.getContainer());\n        }\n      }\n    };\n    EditorObservable = Tools.extend({}, Observable, EditorObservable);\n    var EditorObservable$1 = EditorObservable;\n\n    var each$b = Tools.each, explode$2 = Tools.explode;\n    var keyCodeLookup = {\n      f9: 120,\n      f10: 121,\n      f11: 122\n    };\n    var modifierNames = Tools.makeMap('alt,ctrl,shift,meta,access');\n    function Shortcuts (editor) {\n      var self = this;\n      var shortcuts = {};\n      var pendingPatterns = [];\n      var parseShortcut = function (pattern) {\n        var id, key;\n        var shortcut = {};\n        each$b(explode$2(pattern, '+'), function (value) {\n          if (value in modifierNames) {\n            shortcut[value] = true;\n          } else {\n            if (/^[0-9]{2,}$/.test(value)) {\n              shortcut.keyCode = parseInt(value, 10);\n            } else {\n              shortcut.charCode = value.charCodeAt(0);\n              shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0);\n            }\n          }\n        });\n        id = [shortcut.keyCode];\n        for (key in modifierNames) {\n          if (shortcut[key]) {\n            id.push(key);\n          } else {\n            shortcut[key] = false;\n          }\n        }\n        shortcut.id = id.join(',');\n        if (shortcut.access) {\n          shortcut.alt = true;\n          if (Env.mac) {\n            shortcut.ctrl = true;\n          } else {\n            shortcut.shift = true;\n          }\n        }\n        if (shortcut.meta) {\n          if (Env.mac) {\n            shortcut.meta = true;\n          } else {\n            shortcut.ctrl = true;\n            shortcut.meta = false;\n          }\n        }\n        return shortcut;\n      };\n      var createShortcut = function (pattern, desc, cmdFunc, scope) {\n        var shortcuts;\n        shortcuts = Tools.map(explode$2(pattern, '>'), parseShortcut);\n        shortcuts[shortcuts.length - 1] = Tools.extend(shortcuts[shortcuts.length - 1], {\n          func: cmdFunc,\n          scope: scope || editor\n        });\n        return Tools.extend(shortcuts[0], {\n          desc: editor.translate(desc),\n          subpatterns: shortcuts.slice(1)\n        });\n      };\n      var hasModifier = function (e) {\n        return e.altKey || e.ctrlKey || e.metaKey;\n      };\n      var isFunctionKey = function (e) {\n        return e.type === 'keydown' && e.keyCode >= 112 && e.keyCode <= 123;\n      };\n      var matchShortcut = function (e, shortcut) {\n        if (!shortcut) {\n          return false;\n        }\n        if (shortcut.ctrl !== e.ctrlKey || shortcut.meta !== e.metaKey) {\n          return false;\n        }\n        if (shortcut.alt !== e.altKey || shortcut.shift !== e.shiftKey) {\n          return false;\n        }\n        if (e.keyCode === shortcut.keyCode || e.charCode && e.charCode === shortcut.charCode) {\n          e.preventDefault();\n          return true;\n        }\n        return false;\n      };\n      var executeShortcutAction = function (shortcut) {\n        return shortcut.func ? shortcut.func.call(shortcut.scope) : null;\n      };\n      editor.on('keyup keypress keydown', function (e) {\n        if ((hasModifier(e) || isFunctionKey(e)) && !e.isDefaultPrevented()) {\n          each$b(shortcuts, function (shortcut) {\n            if (matchShortcut(e, shortcut)) {\n              pendingPatterns = shortcut.subpatterns.slice(0);\n              if (e.type === 'keydown') {\n                executeShortcutAction(shortcut);\n              }\n              return true;\n            }\n          });\n          if (matchShortcut(e, pendingPatterns[0])) {\n            if (pendingPatterns.length === 1) {\n              if (e.type === 'keydown') {\n                executeShortcutAction(pendingPatterns[0]);\n              }\n            }\n            pendingPatterns.shift();\n          }\n        }\n      });\n      self.add = function (pattern, desc, cmdFunc, scope) {\n        var cmd;\n        cmd = cmdFunc;\n        if (typeof cmdFunc === 'string') {\n          cmdFunc = function () {\n            editor.execCommand(cmd, false, null);\n          };\n        } else if (Tools.isArray(cmd)) {\n          cmdFunc = function () {\n            editor.execCommand(cmd[0], cmd[1], cmd[2]);\n          };\n        }\n        each$b(explode$2(Tools.trim(pattern.toLowerCase())), function (pattern) {\n          var shortcut = createShortcut(pattern, desc, cmdFunc, scope);\n          shortcuts[shortcut.id] = shortcut;\n        });\n        return true;\n      };\n      self.remove = function (pattern) {\n        var shortcut = createShortcut(pattern);\n        if (shortcuts[shortcut.id]) {\n          delete shortcuts[shortcut.id];\n          return true;\n        }\n        return false;\n      };\n    }\n\n    var hasFocus = function (element) {\n      var doc = owner(element).dom();\n      return element.dom() === doc.activeElement;\n    };\n    var active = function (_doc) {\n      var doc = _doc !== undefined ? _doc.dom() : document;\n      return Option.from(doc.activeElement).map(Element$$1.fromDom);\n    };\n    var search = function (element) {\n      return active(owner(element)).filter(function (e) {\n        return element.dom().contains(e.dom());\n      });\n    };\n\n    var getContentEditableHost = function (editor, node) {\n      return editor.dom.getParent(node, function (node) {\n        return editor.dom.getContentEditable(node) === 'true';\n      });\n    };\n    var getCollapsedNode = function (rng) {\n      return rng.collapsed ? Option.from(getNode(rng.startContainer, rng.startOffset)).map(Element$$1.fromDom) : Option.none();\n    };\n    var getFocusInElement = function (root, rng) {\n      return getCollapsedNode(rng).bind(function (node) {\n        if (isTableSection(node)) {\n          return Option.some(node);\n        } else if (contains$3(root, node) === false) {\n          return Option.some(root);\n        } else {\n          return Option.none();\n        }\n      });\n    };\n    var normalizeSelection = function (editor, rng) {\n      getFocusInElement(Element$$1.fromDom(editor.getBody()), rng).bind(function (elm) {\n        return CaretFinder.firstPositionIn(elm.dom());\n      }).fold(function () {\n        editor.selection.normalize();\n        return;\n      }, function (caretPos) {\n        return editor.selection.setRng(caretPos.toRange());\n      });\n    };\n    var focusBody = function (body) {\n      if (body.setActive) {\n        try {\n          body.setActive();\n        } catch (ex) {\n          body.focus();\n        }\n      } else {\n        body.focus();\n      }\n    };\n    var hasElementFocus = function (elm) {\n      return hasFocus(elm) || search(elm).isSome();\n    };\n    var hasIframeFocus = function (editor) {\n      return editor.iframeElement && hasFocus(Element$$1.fromDom(editor.iframeElement));\n    };\n    var hasInlineFocus = function (editor) {\n      var rawBody = editor.getBody();\n      return rawBody && hasElementFocus(Element$$1.fromDom(rawBody));\n    };\n    var hasFocus$1 = function (editor) {\n      return editor.inline ? hasInlineFocus(editor) : hasIframeFocus(editor);\n    };\n    var focusEditor = function (editor) {\n      var selection = editor.selection, contentEditable = editor.settings.content_editable;\n      var body = editor.getBody();\n      var rng = selection.getRng();\n      editor.quirks.refreshContentEditable();\n      var contentEditableHost = getContentEditableHost(editor, selection.getNode());\n      if (editor.$.contains(body, contentEditableHost)) {\n        focusBody(contentEditableHost);\n        normalizeSelection(editor, rng);\n        activateEditor(editor);\n        return;\n      }\n      if (editor.bookmark !== undefined && hasFocus$1(editor) === false) {\n        SelectionBookmark.getRng(editor).each(function (bookmarkRng) {\n          editor.selection.setRng(bookmarkRng);\n          rng = bookmarkRng;\n        });\n      }\n      if (!contentEditable) {\n        if (!Env.opera) {\n          focusBody(body);\n        }\n        editor.getWin().focus();\n      }\n      if (Env.gecko || contentEditable) {\n        focusBody(body);\n        normalizeSelection(editor, rng);\n      }\n      activateEditor(editor);\n    };\n    var activateEditor = function (editor) {\n      return editor.editorManager.setActive(editor);\n    };\n    var focus$1 = function (editor, skipFocus) {\n      if (editor.removed) {\n        return;\n      }\n      skipFocus ? activateEditor(editor) : focusEditor(editor);\n    };\n    var EditorFocus = {\n      focus: focus$1,\n      hasFocus: hasFocus$1\n    };\n\n    var getProp = function (propName, elm) {\n      var rawElm = elm.dom();\n      return rawElm[propName];\n    };\n    var getComputedSizeProp = function (propName, elm) {\n      return parseInt(get$2(elm, propName), 10);\n    };\n    var getClientWidth = curry(getProp, 'clientWidth');\n    var getClientHeight = curry(getProp, 'clientHeight');\n    var getMarginTop = curry(getComputedSizeProp, 'margin-top');\n    var getMarginLeft = curry(getComputedSizeProp, 'margin-left');\n    var getBoundingClientRect$1 = function (elm) {\n      return elm.dom().getBoundingClientRect();\n    };\n    var isInsideElementContentArea = function (bodyElm, clientX, clientY) {\n      var clientWidth = getClientWidth(bodyElm);\n      var clientHeight = getClientHeight(bodyElm);\n      return clientX >= 0 && clientY >= 0 && clientX <= clientWidth && clientY <= clientHeight;\n    };\n    var transpose = function (inline, elm, clientX, clientY) {\n      var clientRect = getBoundingClientRect$1(elm);\n      var deltaX = inline ? clientRect.left + elm.dom().clientLeft + getMarginLeft(elm) : 0;\n      var deltaY = inline ? clientRect.top + elm.dom().clientTop + getMarginTop(elm) : 0;\n      var x = clientX - deltaX;\n      var y = clientY - deltaY;\n      return {\n        x: x,\n        y: y\n      };\n    };\n    var isXYInContentArea = function (editor, clientX, clientY) {\n      var bodyElm = Element$$1.fromDom(editor.getBody());\n      var targetElm = editor.inline ? bodyElm : documentElement(bodyElm);\n      var transposedPoint = transpose(editor.inline, targetElm, clientX, clientY);\n      return isInsideElementContentArea(targetElm, transposedPoint.x, transposedPoint.y);\n    };\n    var fromDomSafe = function (node) {\n      return Option.from(node).map(Element$$1.fromDom);\n    };\n    var isEditorAttachedToDom = function (editor) {\n      var rawContainer = editor.inline ? editor.getBody() : editor.getContentAreaContainer();\n      return fromDomSafe(rawContainer).map(function (container) {\n        return contains$3(owner(container), container);\n      }).getOr(false);\n    };\n    var EditorView = {\n      isXYInContentArea: isXYInContentArea,\n      isEditorAttachedToDom: isEditorAttachedToDom\n    };\n\n    function NotificationManagerImpl () {\n      var unimplemented = function () {\n        throw new Error('Theme did not provide a NotificationManager implementation.');\n      };\n      return {\n        open: unimplemented,\n        close: unimplemented,\n        reposition: unimplemented,\n        getArgs: unimplemented\n      };\n    }\n\n    function NotificationManager (editor) {\n      var notifications = [];\n      var getImplementation = function () {\n        var theme = editor.theme;\n        return theme && theme.getNotificationManagerImpl ? theme.getNotificationManagerImpl() : NotificationManagerImpl();\n      };\n      var getTopNotification = function () {\n        return Option.from(notifications[0]);\n      };\n      var isEqual = function (a, b) {\n        return a.type === b.type && a.text === b.text && !a.progressBar && !a.timeout && !b.progressBar && !b.timeout;\n      };\n      var reposition = function () {\n        if (notifications.length > 0) {\n          getImplementation().reposition(notifications);\n        }\n      };\n      var addNotification = function (notification) {\n        notifications.push(notification);\n      };\n      var closeNotification = function (notification) {\n        findIndex(notifications, function (otherNotification) {\n          return otherNotification === notification;\n        }).each(function (index) {\n          notifications.splice(index, 1);\n        });\n      };\n      var open = function (args) {\n        if (editor.removed || !EditorView.isEditorAttachedToDom(editor)) {\n          return;\n        }\n        return find(notifications, function (notification) {\n          return isEqual(getImplementation().getArgs(notification), args);\n        }).getOrThunk(function () {\n          editor.editorManager.setActive(editor);\n          var notification = getImplementation().open(args, function () {\n            closeNotification(notification);\n            reposition();\n          });\n          addNotification(notification);\n          reposition();\n          return notification;\n        });\n      };\n      var close = function () {\n        getTopNotification().each(function (notification) {\n          getImplementation().close(notification);\n          closeNotification(notification);\n          reposition();\n        });\n      };\n      var getNotifications = function () {\n        return notifications;\n      };\n      var registerEvents = function (editor) {\n        editor.on('SkinLoaded', function () {\n          var serviceMessage = editor.settings.service_message;\n          if (serviceMessage) {\n            open({\n              text: serviceMessage,\n              type: 'warning',\n              timeout: 0,\n              icon: ''\n            });\n          }\n        });\n        editor.on('ResizeEditor ResizeWindow', function () {\n          Delay.requestAnimationFrame(reposition);\n        });\n        editor.on('remove', function () {\n          each(notifications.slice(), function (notification) {\n            getImplementation().close(notification);\n          });\n        });\n      };\n      registerEvents(editor);\n      return {\n        open: open,\n        close: close,\n        getNotifications: getNotifications\n      };\n    }\n\n    function WindowManagerImpl () {\n      var unimplemented = function () {\n        throw new Error('Theme did not provide a WindowManager implementation.');\n      };\n      return {\n        open: unimplemented,\n        alert: unimplemented,\n        confirm: unimplemented,\n        close: unimplemented,\n        getParams: unimplemented,\n        setParams: unimplemented\n      };\n    }\n\n    function WindowManager (editor) {\n      var windows = [];\n      var getImplementation = function () {\n        var theme = editor.theme;\n        return theme && theme.getWindowManagerImpl ? theme.getWindowManagerImpl() : WindowManagerImpl();\n      };\n      var funcBind = function (scope, f) {\n        return function () {\n          return f ? f.apply(scope, arguments) : undefined;\n        };\n      };\n      var fireOpenEvent = function (win) {\n        editor.fire('OpenWindow', { win: win });\n      };\n      var fireCloseEvent = function (win) {\n        editor.fire('CloseWindow', { win: win });\n      };\n      var addWindow = function (win) {\n        windows.push(win);\n        fireOpenEvent(win);\n      };\n      var closeWindow = function (win) {\n        findIndex(windows, function (otherWindow) {\n          return otherWindow === win;\n        }).each(function (index) {\n          windows.splice(index, 1);\n          fireCloseEvent(win);\n          if (windows.length === 0) {\n            editor.focus();\n          }\n        });\n      };\n      var getTopWindow = function () {\n        return Option.from(windows[windows.length - 1]);\n      };\n      var open = function (args, params) {\n        editor.editorManager.setActive(editor);\n        SelectionBookmark.store(editor);\n        var win = getImplementation().open(args, params, closeWindow);\n        addWindow(win);\n        return win;\n      };\n      var alert = function (message, callback, scope) {\n        var win = getImplementation().alert(message, funcBind(scope ? scope : this, callback), closeWindow);\n        addWindow(win);\n      };\n      var confirm = function (message, callback, scope) {\n        var win = getImplementation().confirm(message, funcBind(scope ? scope : this, callback), closeWindow);\n        addWindow(win);\n      };\n      var close = function () {\n        getTopWindow().each(function (win) {\n          getImplementation().close(win);\n          closeWindow(win);\n        });\n      };\n      var getParams = function () {\n        return getTopWindow().map(getImplementation().getParams).getOr(null);\n      };\n      var setParams = function (params) {\n        getTopWindow().each(function (win) {\n          getImplementation().setParams(win, params);\n        });\n      };\n      var getWindows = function () {\n        return windows;\n      };\n      editor.on('remove', function () {\n        each(windows.slice(0), function (win) {\n          getImplementation().close(win);\n        });\n      });\n      return {\n        windows: windows,\n        open: open,\n        alert: alert,\n        confirm: confirm,\n        close: close,\n        getParams: getParams,\n        setParams: setParams,\n        getWindows: getWindows\n      };\n    }\n\n    var PluginManager = AddOnManager.PluginManager;\n    var resolvePluginName = function (targetUrl, suffix) {\n      for (var name$$1 in PluginManager.urls) {\n        var matchUrl = PluginManager.urls[name$$1] + '/plugin' + suffix + '.js';\n        if (matchUrl === targetUrl) {\n          return name$$1;\n        }\n      }\n      return null;\n    };\n    var pluginUrlToMessage = function (editor, url) {\n      var plugin = resolvePluginName(url, editor.suffix);\n      return plugin ? 'Failed to load plugin: ' + plugin + ' from url ' + url : 'Failed to load plugin url: ' + url;\n    };\n    var displayNotification = function (editor, message) {\n      editor.notificationManager.open({\n        type: 'error',\n        text: message\n      });\n    };\n    var displayError = function (editor, message) {\n      if (editor._skinLoaded) {\n        displayNotification(editor, message);\n      } else {\n        editor.on('SkinLoaded', function () {\n          displayNotification(editor, message);\n        });\n      }\n    };\n    var uploadError = function (editor, message) {\n      displayError(editor, 'Failed to upload image: ' + message);\n    };\n    var pluginLoadError = function (editor, url) {\n      displayError(editor, pluginUrlToMessage(editor, url));\n    };\n    var initError = function (message) {\n      var x = [];\n      for (var _i = 1; _i < arguments.length; _i++) {\n        x[_i - 1] = arguments[_i];\n      }\n      var console$$1 = window.console;\n      if (console$$1) {\n        if (console$$1.error) {\n          console$$1.error.apply(console$$1, arguments);\n        } else {\n          console$$1.log.apply(console$$1, arguments);\n        }\n      }\n    };\n    var ErrorReporter = {\n      pluginLoadError: pluginLoadError,\n      uploadError: uploadError,\n      displayError: displayError,\n      initError: initError\n    };\n\n    var PluginManager$1 = AddOnManager.PluginManager;\n\n    var ThemeManager = AddOnManager.ThemeManager;\n\n    function XMLHttpRequest () {\n      var f = Global$1.getOrDie('XMLHttpRequest');\n      return new f();\n    }\n\n    function Uploader (uploadStatus, settings) {\n      var pendingPromises = {};\n      var pathJoin = function (path1, path2) {\n        if (path1) {\n          return path1.replace(/\\/$/, '') + '/' + path2.replace(/^\\//, '');\n        }\n        return path2;\n      };\n      var defaultHandler = function (blobInfo, success, failure, progress) {\n        var xhr, formData;\n        xhr = XMLHttpRequest();\n        xhr.open('POST', settings.url);\n        xhr.withCredentials = settings.credentials;\n        xhr.upload.onprogress = function (e) {\n          progress(e.loaded / e.total * 100);\n        };\n        xhr.onerror = function () {\n          failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);\n        };\n        xhr.onload = function () {\n          var json;\n          if (xhr.status < 200 || xhr.status >= 300) {\n            failure('HTTP Error: ' + xhr.status);\n            return;\n          }\n          json = JSON.parse(xhr.responseText);\n          if (!json || typeof json.location !== 'string') {\n            failure('Invalid JSON: ' + xhr.responseText);\n            return;\n          }\n          success(pathJoin(settings.basePath, json.location));\n        };\n        formData = new FormData();\n        formData.append('file', blobInfo.blob(), blobInfo.filename());\n        xhr.send(formData);\n      };\n      var noUpload = function () {\n        return new promiseObj(function (resolve) {\n          resolve([]);\n        });\n      };\n      var handlerSuccess = function (blobInfo, url) {\n        return {\n          url: url,\n          blobInfo: blobInfo,\n          status: true\n        };\n      };\n      var handlerFailure = function (blobInfo, error) {\n        return {\n          url: '',\n          blobInfo: blobInfo,\n          status: false,\n          error: error\n        };\n      };\n      var resolvePending = function (blobUri, result) {\n        Tools.each(pendingPromises[blobUri], function (resolve) {\n          resolve(result);\n        });\n        delete pendingPromises[blobUri];\n      };\n      var uploadBlobInfo = function (blobInfo, handler, openNotification) {\n        uploadStatus.markPending(blobInfo.blobUri());\n        return new promiseObj(function (resolve) {\n          var notification, progress;\n          var noop = function () {\n          };\n          try {\n            var closeNotification_1 = function () {\n              if (notification) {\n                notification.close();\n                progress = noop;\n              }\n            };\n            var success = function (url) {\n              closeNotification_1();\n              uploadStatus.markUploaded(blobInfo.blobUri(), url);\n              resolvePending(blobInfo.blobUri(), handlerSuccess(blobInfo, url));\n              resolve(handlerSuccess(blobInfo, url));\n            };\n            var failure = function (error) {\n              closeNotification_1();\n              uploadStatus.removeFailed(blobInfo.blobUri());\n              resolvePending(blobInfo.blobUri(), handlerFailure(blobInfo, error));\n              resolve(handlerFailure(blobInfo, error));\n            };\n            progress = function (percent) {\n              if (percent < 0 || percent > 100) {\n                return;\n              }\n              if (!notification) {\n                notification = openNotification();\n              }\n              notification.progressBar.value(percent);\n            };\n            handler(blobInfo, success, failure, progress);\n          } catch (ex) {\n            resolve(handlerFailure(blobInfo, ex.message));\n          }\n        });\n      };\n      var isDefaultHandler = function (handler) {\n        return handler === defaultHandler;\n      };\n      var pendingUploadBlobInfo = function (blobInfo) {\n        var blobUri = blobInfo.blobUri();\n        return new promiseObj(function (resolve) {\n          pendingPromises[blobUri] = pendingPromises[blobUri] || [];\n          pendingPromises[blobUri].push(resolve);\n        });\n      };\n      var uploadBlobs = function (blobInfos, openNotification) {\n        blobInfos = Tools.grep(blobInfos, function (blobInfo) {\n          return !uploadStatus.isUploaded(blobInfo.blobUri());\n        });\n        return promiseObj.all(Tools.map(blobInfos, function (blobInfo) {\n          return uploadStatus.isPending(blobInfo.blobUri()) ? pendingUploadBlobInfo(blobInfo) : uploadBlobInfo(blobInfo, settings.handler, openNotification);\n        }));\n      };\n      var upload = function (blobInfos, openNotification) {\n        return !settings.url && isDefaultHandler(settings.handler) ? noUpload() : uploadBlobs(blobInfos, openNotification);\n      };\n      if (isFunction(settings.handler) === false) {\n        settings.handler = defaultHandler;\n      }\n      return { upload: upload };\n    }\n\n    function FileReader () {\n      var f = Global$1.getOrDie('FileReader');\n      return new f();\n    }\n\n    function Uint8Array (arr) {\n      var f = Global$1.getOrDie('Uint8Array');\n      return new f(arr);\n    }\n\n    var requestAnimationFrame$1 = function (callback) {\n      var f = Global$1.getOrDie('requestAnimationFrame');\n      f(callback);\n    };\n    var atob = function (base64) {\n      var f = Global$1.getOrDie('atob');\n      return f(base64);\n    };\n    var Window = {\n      atob: atob,\n      requestAnimationFrame: requestAnimationFrame$1\n    };\n\n    var blobUriToBlob = function (url) {\n      return new promiseObj(function (resolve, reject) {\n        var rejectWithError = function () {\n          reject('Cannot convert ' + url + ' to Blob. Resource might not exist or is inaccessible.');\n        };\n        try {\n          var xhr = XMLHttpRequest();\n          xhr.open('GET', url, true);\n          xhr.responseType = 'blob';\n          xhr.onload = function () {\n            if (this.status === 200) {\n              resolve(this.response);\n            } else {\n              rejectWithError();\n            }\n          };\n          xhr.onerror = rejectWithError;\n          xhr.send();\n        } catch (ex) {\n          rejectWithError();\n        }\n      });\n    };\n    var parseDataUri = function (uri) {\n      var type, matches;\n      var uriParts = decodeURIComponent(uri).split(',');\n      matches = /data:([^;]+)/.exec(uriParts[0]);\n      if (matches) {\n        type = matches[1];\n      }\n      return {\n        type: type,\n        data: uriParts[1]\n      };\n    };\n    var dataUriToBlob = function (uri) {\n      return new promiseObj(function (resolve) {\n        var str, arr, i;\n        var uriParts = parseDataUri(uri);\n        try {\n          str = Window.atob(uriParts.data);\n        } catch (e) {\n          resolve(new Blob([]));\n          return;\n        }\n        arr = Uint8Array(str.length);\n        for (i = 0; i < arr.length; i++) {\n          arr[i] = str.charCodeAt(i);\n        }\n        resolve(new Blob([arr], { type: uriParts.type }));\n      });\n    };\n    var uriToBlob = function (url) {\n      if (url.indexOf('blob:') === 0) {\n        return blobUriToBlob(url);\n      }\n      if (url.indexOf('data:') === 0) {\n        return dataUriToBlob(url);\n      }\n      return null;\n    };\n    var blobToDataUri = function (blob) {\n      return new promiseObj(function (resolve) {\n        var reader = FileReader();\n        reader.onloadend = function () {\n          resolve(reader.result);\n        };\n        reader.readAsDataURL(blob);\n      });\n    };\n    var Conversions = {\n      uriToBlob: uriToBlob,\n      blobToDataUri: blobToDataUri,\n      parseDataUri: parseDataUri\n    };\n\n    var count = 0;\n    var uniqueId = function (prefix) {\n      return (prefix || 'blobid') + count++;\n    };\n    var imageToBlobInfo = function (blobCache, img, resolve, reject) {\n      var base64, blobInfo;\n      if (img.src.indexOf('blob:') === 0) {\n        blobInfo = blobCache.getByUri(img.src);\n        if (blobInfo) {\n          resolve({\n            image: img,\n            blobInfo: blobInfo\n          });\n        } else {\n          Conversions.uriToBlob(img.src).then(function (blob) {\n            Conversions.blobToDataUri(blob).then(function (dataUri) {\n              base64 = Conversions.parseDataUri(dataUri).data;\n              blobInfo = blobCache.create(uniqueId(), blob, base64);\n              blobCache.add(blobInfo);\n              resolve({\n                image: img,\n                blobInfo: blobInfo\n              });\n            });\n          }, function (err) {\n            reject(err);\n          });\n        }\n        return;\n      }\n      base64 = Conversions.parseDataUri(img.src).data;\n      blobInfo = blobCache.findFirst(function (cachedBlobInfo) {\n        return cachedBlobInfo.base64() === base64;\n      });\n      if (blobInfo) {\n        resolve({\n          image: img,\n          blobInfo: blobInfo\n        });\n      } else {\n        Conversions.uriToBlob(img.src).then(function (blob) {\n          blobInfo = blobCache.create(uniqueId(), blob, base64);\n          blobCache.add(blobInfo);\n          resolve({\n            image: img,\n            blobInfo: blobInfo\n          });\n        }, function (err) {\n          reject(err);\n        });\n      }\n    };\n    var getAllImages = function (elm) {\n      return elm ? from$1(elm.getElementsByTagName('img')) : [];\n    };\n    function ImageScanner (uploadStatus, blobCache) {\n      var cachedPromises = {};\n      var findAll = function (elm, predicate) {\n        var images;\n        if (!predicate) {\n          predicate = constant(true);\n        }\n        images = filter(getAllImages(elm), function (img) {\n          var src = img.src;\n          if (!Env.fileApi) {\n            return false;\n          }\n          if (img.hasAttribute('data-mce-bogus')) {\n            return false;\n          }\n          if (img.hasAttribute('data-mce-placeholder')) {\n            return false;\n          }\n          if (!src || src === Env.transparentSrc) {\n            return false;\n          }\n          if (src.indexOf('blob:') === 0) {\n            return !uploadStatus.isUploaded(src) && predicate(img);\n          }\n          if (src.indexOf('data:') === 0) {\n            return predicate(img);\n          }\n          return false;\n        });\n        var promises = map(images, function (img) {\n          if (cachedPromises[img.src]) {\n            return new promiseObj(function (resolve) {\n              cachedPromises[img.src].then(function (imageInfo) {\n                if (typeof imageInfo === 'string') {\n                  return imageInfo;\n                }\n                resolve({\n                  image: img,\n                  blobInfo: imageInfo.blobInfo\n                });\n              });\n            });\n          }\n          var newPromise = new promiseObj(function (resolve, reject) {\n            imageToBlobInfo(blobCache, img, resolve, reject);\n          }).then(function (result) {\n            delete cachedPromises[result.image.src];\n            return result;\n          }).catch(function (error) {\n            delete cachedPromises[img.src];\n            return error;\n          });\n          cachedPromises[img.src] = newPromise;\n          return newPromise;\n        });\n        return promiseObj.all(promises);\n      };\n      return { findAll: findAll };\n    }\n\n    var count$1 = 0;\n    var seed = function () {\n      var rnd = function () {\n        return Math.round(Math.random() * 4294967295).toString(36);\n      };\n      var now = new Date().getTime();\n      return 's' + now.toString(36) + rnd() + rnd() + rnd();\n    };\n    var uuid = function (prefix) {\n      return prefix + count$1++ + seed();\n    };\n    var Uuid = { uuid: uuid };\n\n    function BlobCache () {\n      var cache = [];\n      var mimeToExt = function (mime) {\n        var mimes = {\n          'image/jpeg': 'jpg',\n          'image/jpg': 'jpg',\n          'image/gif': 'gif',\n          'image/png': 'png'\n        };\n        return mimes[mime.toLowerCase()] || 'dat';\n      };\n      var create = function (o, blob, base64, filename) {\n        if (isString(o)) {\n          var id = o;\n          return toBlobInfo({\n            id: id,\n            name: filename,\n            blob: blob,\n            base64: base64\n          });\n        } else if (isObject(o)) {\n          return toBlobInfo(o);\n        } else {\n          throw new Error('Unknown input type');\n        }\n      };\n      var toBlobInfo = function (o) {\n        var id, name;\n        if (!o.blob || !o.base64) {\n          throw new Error('blob and base64 representations of the image are required for BlobInfo to be created');\n        }\n        id = o.id || Uuid.uuid('blobid');\n        name = o.name || id;\n        return {\n          id: constant(id),\n          name: constant(name),\n          filename: constant(name + '.' + mimeToExt(o.blob.type)),\n          blob: constant(o.blob),\n          base64: constant(o.base64),\n          blobUri: constant(o.blobUri || URL.createObjectURL(o.blob)),\n          uri: constant(o.uri)\n        };\n      };\n      var add = function (blobInfo) {\n        if (!get(blobInfo.id())) {\n          cache.push(blobInfo);\n        }\n      };\n      var get = function (id) {\n        return findFirst(function (cachedBlobInfo) {\n          return cachedBlobInfo.id() === id;\n        });\n      };\n      var findFirst = function (predicate) {\n        return filter(cache, predicate)[0];\n      };\n      var getByUri = function (blobUri) {\n        return findFirst(function (blobInfo) {\n          return blobInfo.blobUri() === blobUri;\n        });\n      };\n      var removeByUri = function (blobUri) {\n        cache = filter(cache, function (blobInfo) {\n          if (blobInfo.blobUri() === blobUri) {\n            URL.revokeObjectURL(blobInfo.blobUri());\n            return false;\n          }\n          return true;\n        });\n      };\n      var destroy = function () {\n        each(cache, function (cachedBlobInfo) {\n          URL.revokeObjectURL(cachedBlobInfo.blobUri());\n        });\n        cache = [];\n      };\n      return {\n        create: create,\n        add: add,\n        get: get,\n        getByUri: getByUri,\n        findFirst: findFirst,\n        removeByUri: removeByUri,\n        destroy: destroy\n      };\n    }\n\n    function UploadStatus () {\n      var PENDING = 1, UPLOADED = 2;\n      var blobUriStatuses = {};\n      var createStatus = function (status, resultUri) {\n        return {\n          status: status,\n          resultUri: resultUri\n        };\n      };\n      var hasBlobUri = function (blobUri) {\n        return blobUri in blobUriStatuses;\n      };\n      var getResultUri = function (blobUri) {\n        var result = blobUriStatuses[blobUri];\n        return result ? result.resultUri : null;\n      };\n      var isPending = function (blobUri) {\n        return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === PENDING : false;\n      };\n      var isUploaded = function (blobUri) {\n        return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === UPLOADED : false;\n      };\n      var markPending = function (blobUri) {\n        blobUriStatuses[blobUri] = createStatus(PENDING, null);\n      };\n      var markUploaded = function (blobUri, resultUri) {\n        blobUriStatuses[blobUri] = createStatus(UPLOADED, resultUri);\n      };\n      var removeFailed = function (blobUri) {\n        delete blobUriStatuses[blobUri];\n      };\n      var destroy = function () {\n        blobUriStatuses = {};\n      };\n      return {\n        hasBlobUri: hasBlobUri,\n        getResultUri: getResultUri,\n        isPending: isPending,\n        isUploaded: isUploaded,\n        markPending: markPending,\n        markUploaded: markUploaded,\n        removeFailed: removeFailed,\n        destroy: destroy\n      };\n    }\n\n    function EditorUpload (editor) {\n      var blobCache = BlobCache();\n      var uploader, imageScanner;\n      var uploadStatus = UploadStatus();\n      var urlFilters = [];\n      var aliveGuard = function (callback) {\n        return function (result) {\n          if (editor.selection) {\n            return callback(result);\n          }\n          return [];\n        };\n      };\n      var cacheInvalidator = function () {\n        return '?' + new Date().getTime();\n      };\n      var replaceString = function (content, search, replace) {\n        var index = 0;\n        do {\n          index = content.indexOf(search, index);\n          if (index !== -1) {\n            content = content.substring(0, index) + replace + content.substr(index + search.length);\n            index += replace.length - search.length + 1;\n          }\n        } while (index !== -1);\n        return content;\n      };\n      var replaceImageUrl = function (content, targetUrl, replacementUrl) {\n        content = replaceString(content, 'src=\"' + targetUrl + '\"', 'src=\"' + replacementUrl + '\"');\n        content = replaceString(content, 'data-mce-src=\"' + targetUrl + '\"', 'data-mce-src=\"' + replacementUrl + '\"');\n        return content;\n      };\n      var replaceUrlInUndoStack = function (targetUrl, replacementUrl) {\n        each(editor.undoManager.data, function (level) {\n          if (level.type === 'fragmented') {\n            level.fragments = map(level.fragments, function (fragment) {\n              return replaceImageUrl(fragment, targetUrl, replacementUrl);\n            });\n          } else {\n            level.content = replaceImageUrl(level.content, targetUrl, replacementUrl);\n          }\n        });\n      };\n      var openNotification = function () {\n        return editor.notificationManager.open({\n          text: editor.translate('Image uploading...'),\n          type: 'info',\n          timeout: -1,\n          progressBar: true\n        });\n      };\n      var replaceImageUri = function (image, resultUri) {\n        blobCache.removeByUri(image.src);\n        replaceUrlInUndoStack(image.src, resultUri);\n        editor.$(image).attr({\n          'src': Settings.shouldReuseFileName(editor) ? resultUri + cacheInvalidator() : resultUri,\n          'data-mce-src': editor.convertURL(resultUri, 'src')\n        });\n      };\n      var uploadImages = function (callback) {\n        if (!uploader) {\n          uploader = Uploader(uploadStatus, {\n            url: Settings.getImageUploadUrl(editor),\n            basePath: Settings.getImageUploadBasePath(editor),\n            credentials: Settings.getImagesUploadCredentials(editor),\n            handler: Settings.getImagesUploadHandler(editor)\n          });\n        }\n        return scanForImages().then(aliveGuard(function (imageInfos) {\n          var blobInfos;\n          blobInfos = map(imageInfos, function (imageInfo) {\n            return imageInfo.blobInfo;\n          });\n          return uploader.upload(blobInfos, openNotification).then(aliveGuard(function (result) {\n            var filteredResult = map(result, function (uploadInfo, index) {\n              var image = imageInfos[index].image;\n              if (uploadInfo.status && Settings.shouldReplaceBlobUris(editor)) {\n                replaceImageUri(image, uploadInfo.url);\n              } else if (uploadInfo.error) {\n                ErrorReporter.uploadError(editor, uploadInfo.error);\n              }\n              return {\n                element: image,\n                status: uploadInfo.status\n              };\n            });\n            if (callback) {\n              callback(filteredResult);\n            }\n            return filteredResult;\n          }));\n        }));\n      };\n      var uploadImagesAuto = function (callback) {\n        if (Settings.isAutomaticUploadsEnabled(editor)) {\n          return uploadImages(callback);\n        }\n      };\n      var isValidDataUriImage = function (imgElm) {\n        if (forall(urlFilters, function (filter$$1) {\n            return filter$$1(imgElm);\n          }) === false) {\n          return false;\n        }\n        if (imgElm.getAttribute('src').indexOf('data:') === 0) {\n          var dataImgFilter = Settings.getImagesDataImgFilter(editor);\n          return dataImgFilter(imgElm);\n        }\n        return true;\n      };\n      var addFilter = function (filter$$1) {\n        urlFilters.push(filter$$1);\n      };\n      var scanForImages = function () {\n        if (!imageScanner) {\n          imageScanner = ImageScanner(uploadStatus, blobCache);\n        }\n        return imageScanner.findAll(editor.getBody(), isValidDataUriImage).then(aliveGuard(function (result) {\n          result = filter(result, function (resultItem) {\n            if (typeof resultItem === 'string') {\n              ErrorReporter.displayError(editor, resultItem);\n              return false;\n            }\n            return true;\n          });\n          each(result, function (resultItem) {\n            replaceUrlInUndoStack(resultItem.image.src, resultItem.blobInfo.blobUri());\n            resultItem.image.src = resultItem.blobInfo.blobUri();\n            resultItem.image.removeAttribute('data-mce-src');\n          });\n          return result;\n        }));\n      };\n      var destroy = function () {\n        blobCache.destroy();\n        uploadStatus.destroy();\n        imageScanner = uploader = null;\n      };\n      var replaceBlobUris = function (content) {\n        return content.replace(/src=\"(blob:[^\"]+)\"/g, function (match, blobUri) {\n          var resultUri = uploadStatus.getResultUri(blobUri);\n          if (resultUri) {\n            return 'src=\"' + resultUri + '\"';\n          }\n          var blobInfo = blobCache.getByUri(blobUri);\n          if (!blobInfo) {\n            blobInfo = foldl(editor.editorManager.get(), function (result, editor) {\n              return result || editor.editorUpload && editor.editorUpload.blobCache.getByUri(blobUri);\n            }, null);\n          }\n          if (blobInfo) {\n            var blob = blobInfo.blob();\n            return 'src=\"data:' + blob.type + ';base64,' + blobInfo.base64() + '\"';\n          }\n          return match;\n        });\n      };\n      editor.on('setContent', function () {\n        if (Settings.isAutomaticUploadsEnabled(editor)) {\n          uploadImagesAuto();\n        } else {\n          scanForImages();\n        }\n      });\n      editor.on('RawSaveContent', function (e) {\n        e.content = replaceBlobUris(e.content);\n      });\n      editor.on('getContent', function (e) {\n        if (e.source_view || e.format === 'raw') {\n          return;\n        }\n        e.content = replaceBlobUris(e.content);\n      });\n      editor.on('PostRender', function () {\n        editor.parser.addNodeFilter('img', function (images) {\n          each(images, function (img) {\n            var src = img.attr('src');\n            if (blobCache.getByUri(src)) {\n              return;\n            }\n            var resultUri = uploadStatus.getResultUri(src);\n            if (resultUri) {\n              img.attr('src', resultUri);\n            }\n          });\n        });\n      });\n      return {\n        blobCache: blobCache,\n        addFilter: addFilter,\n        uploadImages: uploadImages,\n        uploadImagesAuto: uploadImagesAuto,\n        scanForImages: scanForImages,\n        destroy: destroy\n      };\n    }\n\n    var isBlockElement = function (blockElements, node) {\n      return blockElements.hasOwnProperty(node.nodeName);\n    };\n    var isValidTarget = function (blockElements, node) {\n      if (NodeType.isText(node)) {\n        return true;\n      } else if (NodeType.isElement(node)) {\n        return !isBlockElement(blockElements, node) && !Bookmarks.isBookmarkNode(node);\n      } else {\n        return false;\n      }\n    };\n    var hasBlockParent = function (blockElements, root, node) {\n      return exists(Parents.parents(Element$$1.fromDom(node), Element$$1.fromDom(root)), function (elm) {\n        return isBlockElement(blockElements, elm.dom());\n      });\n    };\n    var shouldRemoveTextNode = function (blockElements, node) {\n      if (NodeType.isText(node)) {\n        if (node.nodeValue.length === 0) {\n          return true;\n        } else if (/^\\s+$/.test(node.nodeValue) && (!node.nextSibling || isBlockElement(blockElements, node.nextSibling))) {\n          return true;\n        }\n      }\n      return false;\n    };\n    var addRootBlocks = function (editor) {\n      var settings = editor.settings, dom = editor.dom, selection = editor.selection;\n      var schema = editor.schema, blockElements = schema.getBlockElements();\n      var node = selection.getStart();\n      var rootNode = editor.getBody();\n      var rng;\n      var startContainer, startOffset, endContainer, endOffset, rootBlockNode;\n      var tempNode, wrapped, restoreSelection;\n      var rootNodeName, forcedRootBlock;\n      forcedRootBlock = settings.forced_root_block;\n      if (!node || !NodeType.isElement(node) || !forcedRootBlock) {\n        return;\n      }\n      rootNodeName = rootNode.nodeName.toLowerCase();\n      if (!schema.isValidChild(rootNodeName, forcedRootBlock.toLowerCase()) || hasBlockParent(blockElements, rootNode, node)) {\n        return;\n      }\n      rng = selection.getRng();\n      startContainer = rng.startContainer;\n      startOffset = rng.startOffset;\n      endContainer = rng.endContainer;\n      endOffset = rng.endOffset;\n      restoreSelection = EditorFocus.hasFocus(editor);\n      node = rootNode.firstChild;\n      while (node) {\n        if (isValidTarget(blockElements, node)) {\n          if (shouldRemoveTextNode(blockElements, node)) {\n            tempNode = node;\n            node = node.nextSibling;\n            dom.remove(tempNode);\n            continue;\n          }\n          if (!rootBlockNode) {\n            rootBlockNode = dom.create(forcedRootBlock, editor.settings.forced_root_block_attrs);\n            node.parentNode.insertBefore(rootBlockNode, node);\n            wrapped = true;\n          }\n          tempNode = node;\n          node = node.nextSibling;\n          rootBlockNode.appendChild(tempNode);\n        } else {\n          rootBlockNode = null;\n          node = node.nextSibling;\n        }\n      }\n      if (wrapped && restoreSelection) {\n        rng.setStart(startContainer, startOffset);\n        rng.setEnd(endContainer, endOffset);\n        selection.setRng(rng);\n        editor.nodeChanged();\n      }\n    };\n    var setup$2 = function (editor) {\n      if (editor.settings.forced_root_block) {\n        editor.on('NodeChange', curry(addRootBlocks, editor));\n      }\n    };\n    var ForceBlocks = { setup: setup$2 };\n\n    var getStartNode = function (rng) {\n      var sc = rng.startContainer, so = rng.startOffset;\n      if (NodeType.isText(sc)) {\n        return so === 0 ? Option.some(Element$$1.fromDom(sc)) : Option.none();\n      } else {\n        return Option.from(sc.childNodes[so]).map(Element$$1.fromDom);\n      }\n    };\n    var getEndNode = function (rng) {\n      var ec = rng.endContainer, eo = rng.endOffset;\n      if (NodeType.isText(ec)) {\n        return eo === ec.data.length ? Option.some(Element$$1.fromDom(ec)) : Option.none();\n      } else {\n        return Option.from(ec.childNodes[eo - 1]).map(Element$$1.fromDom);\n      }\n    };\n    var getFirstChildren = function (node) {\n      return firstChild(node).fold(constant([node]), function (child$$1) {\n        return [node].concat(getFirstChildren(child$$1));\n      });\n    };\n    var getLastChildren$1 = function (node) {\n      return lastChild(node).fold(constant([node]), function (child$$1) {\n        if (name(child$$1) === 'br') {\n          return prevSibling(child$$1).map(function (sibling) {\n            return [node].concat(getLastChildren$1(sibling));\n          }).getOr([]);\n        } else {\n          return [node].concat(getLastChildren$1(child$$1));\n        }\n      });\n    };\n    var hasAllContentsSelected = function (elm, rng) {\n      return liftN([\n        getStartNode(rng),\n        getEndNode(rng)\n      ], function (startNode, endNode) {\n        var start = find(getFirstChildren(elm), curry(eq, startNode));\n        var end = find(getLastChildren$1(elm), curry(eq, endNode));\n        return start.isSome() && end.isSome();\n      }).getOr(false);\n    };\n    var moveEndPoint$1 = function (dom, rng, node, start) {\n      var root = node, walker = new TreeWalker(node, root);\n      var nonEmptyElementsMap = dom.schema.getNonEmptyElements();\n      do {\n        if (node.nodeType === 3 && Tools.trim(node.nodeValue).length !== 0) {\n          if (start) {\n            rng.setStart(node, 0);\n          } else {\n            rng.setEnd(node, node.nodeValue.length);\n          }\n          return;\n        }\n        if (nonEmptyElementsMap[node.nodeName] && !/^(TD|TH)$/.test(node.nodeName)) {\n          if (start) {\n            rng.setStartBefore(node);\n          } else {\n            if (node.nodeName === 'BR') {\n              rng.setEndBefore(node);\n            } else {\n              rng.setEndAfter(node);\n            }\n          }\n          return;\n        }\n        if (Env.ie && Env.ie < 11 && dom.isBlock(node) && dom.isEmpty(node)) {\n          if (start) {\n            rng.setStart(node, 0);\n          } else {\n            rng.setEnd(node, 0);\n          }\n          return;\n        }\n      } while (node = start ? walker.next() : walker.prev());\n      if (root.nodeName === 'BODY') {\n        if (start) {\n          rng.setStart(root, 0);\n        } else {\n          rng.setEnd(root, root.childNodes.length);\n        }\n      }\n    };\n    var hasAnyRanges = function (editor) {\n      var sel = editor.selection.getSel();\n      return sel && sel.rangeCount > 0;\n    };\n\n    function NodeChange (editor) {\n      var lastRng, lastPath = [];\n      var isSameElementPath = function (startElm) {\n        var i, currentPath;\n        currentPath = editor.$(startElm).parentsUntil(editor.getBody()).add(startElm);\n        if (currentPath.length === lastPath.length) {\n          for (i = currentPath.length; i >= 0; i--) {\n            if (currentPath[i] !== lastPath[i]) {\n              break;\n            }\n          }\n          if (i === -1) {\n            lastPath = currentPath;\n            return true;\n          }\n        }\n        lastPath = currentPath;\n        return false;\n      };\n      if (!('onselectionchange' in editor.getDoc())) {\n        editor.on('NodeChange Click MouseUp KeyUp Focus', function (e) {\n          var nativeRng, fakeRng;\n          nativeRng = editor.selection.getRng();\n          fakeRng = {\n            startContainer: nativeRng.startContainer,\n            startOffset: nativeRng.startOffset,\n            endContainer: nativeRng.endContainer,\n            endOffset: nativeRng.endOffset\n          };\n          if (e.type === 'nodechange' || !RangeCompare.isEq(fakeRng, lastRng)) {\n            editor.fire('SelectionChange');\n          }\n          lastRng = fakeRng;\n        });\n      }\n      editor.on('contextmenu', function () {\n        editor.fire('SelectionChange');\n      });\n      editor.on('SelectionChange', function () {\n        var startElm = editor.selection.getStart(true);\n        if (!startElm || !Env.range && editor.selection.isCollapsed()) {\n          return;\n        }\n        if (hasAnyRanges(editor) && !isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) {\n          editor.nodeChanged({ selectionChange: true });\n        }\n      });\n      editor.on('MouseUp', function (e) {\n        if (!e.isDefaultPrevented() && hasAnyRanges(editor)) {\n          if (editor.selection.getNode().nodeName === 'IMG') {\n            Delay.setEditorTimeout(editor, function () {\n              editor.nodeChanged();\n            });\n          } else {\n            editor.nodeChanged();\n          }\n        }\n      });\n      this.nodeChanged = function (args) {\n        var selection = editor.selection;\n        var node, parents, root;\n        if (editor.initialized && selection && !editor.settings.disable_nodechange && !editor.readonly) {\n          root = editor.getBody();\n          node = selection.getStart(true) || root;\n          if (node.ownerDocument !== editor.getDoc() || !editor.dom.isChildOf(node, root)) {\n            node = root;\n          }\n          parents = [];\n          editor.dom.getParent(node, function (node) {\n            if (node === root) {\n              return true;\n            }\n            parents.push(node);\n          });\n          args = args || {};\n          args.element = node;\n          args.parents = parents;\n          editor.fire('NodeChange', args);\n        }\n      };\n    }\n\n    var getAbsolutePosition = function (elm) {\n      var doc, docElem, win, clientRect;\n      clientRect = elm.getBoundingClientRect();\n      doc = elm.ownerDocument;\n      docElem = doc.documentElement;\n      win = doc.defaultView;\n      return {\n        top: clientRect.top + win.pageYOffset - docElem.clientTop,\n        left: clientRect.left + win.pageXOffset - docElem.clientLeft\n      };\n    };\n    var getBodyPosition = function (editor) {\n      return editor.inline ? getAbsolutePosition(editor.getBody()) : {\n        left: 0,\n        top: 0\n      };\n    };\n    var getScrollPosition = function (editor) {\n      var body = editor.getBody();\n      return editor.inline ? {\n        left: body.scrollLeft,\n        top: body.scrollTop\n      } : {\n        left: 0,\n        top: 0\n      };\n    };\n    var getBodyScroll = function (editor) {\n      var body = editor.getBody(), docElm = editor.getDoc().documentElement;\n      var inlineScroll = {\n        left: body.scrollLeft,\n        top: body.scrollTop\n      };\n      var iframeScroll = {\n        left: body.scrollLeft || docElm.scrollLeft,\n        top: body.scrollTop || docElm.scrollTop\n      };\n      return editor.inline ? inlineScroll : iframeScroll;\n    };\n    var getMousePosition = function (editor, event) {\n      if (event.target.ownerDocument !== editor.getDoc()) {\n        var iframePosition = getAbsolutePosition(editor.getContentAreaContainer());\n        var scrollPosition = getBodyScroll(editor);\n        return {\n          left: event.pageX - iframePosition.left + scrollPosition.left,\n          top: event.pageY - iframePosition.top + scrollPosition.top\n        };\n      }\n      return {\n        left: event.pageX,\n        top: event.pageY\n      };\n    };\n    var calculatePosition = function (bodyPosition, scrollPosition, mousePosition) {\n      return {\n        pageX: mousePosition.left - bodyPosition.left + scrollPosition.left,\n        pageY: mousePosition.top - bodyPosition.top + scrollPosition.top\n      };\n    };\n    var calc = function (editor, event) {\n      return calculatePosition(getBodyPosition(editor), getScrollPosition(editor), getMousePosition(editor, event));\n    };\n    var MousePosition = { calc: calc };\n\n    var isContentEditableFalse$6 = NodeType.isContentEditableFalse, isContentEditableTrue$3 = NodeType.isContentEditableTrue;\n    var isDraggable = function (rootElm, elm) {\n      return isContentEditableFalse$6(elm) && elm !== rootElm;\n    };\n    var isValidDropTarget = function (editor, targetElement, dragElement) {\n      if (targetElement === dragElement || editor.dom.isChildOf(targetElement, dragElement)) {\n        return false;\n      }\n      if (isContentEditableFalse$6(targetElement)) {\n        return false;\n      }\n      return true;\n    };\n    var cloneElement = function (elm) {\n      var cloneElm = elm.cloneNode(true);\n      cloneElm.removeAttribute('data-mce-selected');\n      return cloneElm;\n    };\n    var createGhost = function (editor, elm, width, height) {\n      var clonedElm = elm.cloneNode(true);\n      editor.dom.setStyles(clonedElm, {\n        width: width,\n        height: height\n      });\n      editor.dom.setAttrib(clonedElm, 'data-mce-selected', null);\n      var ghostElm = editor.dom.create('div', {\n        'class': 'mce-drag-container',\n        'data-mce-bogus': 'all',\n        'unselectable': 'on',\n        'contenteditable': 'false'\n      });\n      editor.dom.setStyles(ghostElm, {\n        position: 'absolute',\n        opacity: 0.5,\n        overflow: 'hidden',\n        border: 0,\n        padding: 0,\n        margin: 0,\n        width: width,\n        height: height\n      });\n      editor.dom.setStyles(clonedElm, {\n        margin: 0,\n        boxSizing: 'border-box'\n      });\n      ghostElm.appendChild(clonedElm);\n      return ghostElm;\n    };\n    var appendGhostToBody = function (ghostElm, bodyElm) {\n      if (ghostElm.parentNode !== bodyElm) {\n        bodyElm.appendChild(ghostElm);\n      }\n    };\n    var moveGhost = function (ghostElm, position, width, height, maxX, maxY) {\n      var overflowX = 0, overflowY = 0;\n      ghostElm.style.left = position.pageX + 'px';\n      ghostElm.style.top = position.pageY + 'px';\n      if (position.pageX + width > maxX) {\n        overflowX = position.pageX + width - maxX;\n      }\n      if (position.pageY + height > maxY) {\n        overflowY = position.pageY + height - maxY;\n      }\n      ghostElm.style.width = width - overflowX + 'px';\n      ghostElm.style.height = height - overflowY + 'px';\n    };\n    var removeElement = function (elm) {\n      if (elm && elm.parentNode) {\n        elm.parentNode.removeChild(elm);\n      }\n    };\n    var isLeftMouseButtonPressed = function (e) {\n      return e.button === 0;\n    };\n    var hasDraggableElement = function (state) {\n      return state.element;\n    };\n    var applyRelPos = function (state, position) {\n      return {\n        pageX: position.pageX - state.relX,\n        pageY: position.pageY + 5\n      };\n    };\n    var start$1 = function (state, editor) {\n      return function (e) {\n        if (isLeftMouseButtonPressed(e)) {\n          var ceElm = find(editor.dom.getParents(e.target), Predicate.or(isContentEditableFalse$6, isContentEditableTrue$3)).getOr(null);\n          if (isDraggable(editor.getBody(), ceElm)) {\n            var elmPos = editor.dom.getPos(ceElm);\n            var bodyElm = editor.getBody();\n            var docElm = editor.getDoc().documentElement;\n            state.element = ceElm;\n            state.screenX = e.screenX;\n            state.screenY = e.screenY;\n            state.maxX = (editor.inline ? bodyElm.scrollWidth : docElm.offsetWidth) - 2;\n            state.maxY = (editor.inline ? bodyElm.scrollHeight : docElm.offsetHeight) - 2;\n            state.relX = e.pageX - elmPos.x;\n            state.relY = e.pageY - elmPos.y;\n            state.width = ceElm.offsetWidth;\n            state.height = ceElm.offsetHeight;\n            state.ghost = createGhost(editor, ceElm, state.width, state.height);\n          }\n        }\n      };\n    };\n    var move$1 = function (state, editor) {\n      var throttledPlaceCaretAt = Delay.throttle(function (clientX, clientY) {\n        editor._selectionOverrides.hideFakeCaret();\n        editor.selection.placeCaretAt(clientX, clientY);\n      }, 0);\n      return function (e) {\n        var movement = Math.max(Math.abs(e.screenX - state.screenX), Math.abs(e.screenY - state.screenY));\n        if (hasDraggableElement(state) && !state.dragging && movement > 10) {\n          var args = editor.fire('dragstart', { target: state.element });\n          if (args.isDefaultPrevented()) {\n            return;\n          }\n          state.dragging = true;\n          editor.focus();\n        }\n        if (state.dragging) {\n          var targetPos = applyRelPos(state, MousePosition.calc(editor, e));\n          appendGhostToBody(state.ghost, editor.getBody());\n          moveGhost(state.ghost, targetPos, state.width, state.height, state.maxX, state.maxY);\n          throttledPlaceCaretAt(e.clientX, e.clientY);\n        }\n      };\n    };\n    var getRawTarget = function (selection) {\n      var rng = selection.getSel().getRangeAt(0);\n      var startContainer = rng.startContainer;\n      return startContainer.nodeType === 3 ? startContainer.parentNode : startContainer;\n    };\n    var drop = function (state, editor) {\n      return function (e) {\n        if (state.dragging) {\n          if (isValidDropTarget(editor, getRawTarget(editor.selection), state.element)) {\n            var targetClone_1 = cloneElement(state.element);\n            var args = editor.fire('drop', {\n              targetClone: targetClone_1,\n              clientX: e.clientX,\n              clientY: e.clientY\n            });\n            if (!args.isDefaultPrevented()) {\n              targetClone_1 = args.targetClone;\n              editor.undoManager.transact(function () {\n                removeElement(state.element);\n                editor.insertContent(editor.dom.getOuterHTML(targetClone_1));\n                editor._selectionOverrides.hideFakeCaret();\n              });\n            }\n          }\n        }\n        removeDragState(state);\n      };\n    };\n    var stop$$1 = function (state, editor) {\n      return function () {\n        if (state.dragging) {\n          editor.fire('dragend');\n        }\n        removeDragState(state);\n      };\n    };\n    var removeDragState = function (state) {\n      state.dragging = false;\n      state.element = null;\n      removeElement(state.ghost);\n    };\n    var bindFakeDragEvents = function (editor) {\n      var state = {};\n      var pageDom, dragStartHandler, dragHandler, dropHandler, dragEndHandler, rootDocument;\n      pageDom = DOMUtils$1.DOM;\n      rootDocument = document;\n      dragStartHandler = start$1(state, editor);\n      dragHandler = move$1(state, editor);\n      dropHandler = drop(state, editor);\n      dragEndHandler = stop$$1(state, editor);\n      editor.on('mousedown', dragStartHandler);\n      editor.on('mousemove', dragHandler);\n      editor.on('mouseup', dropHandler);\n      pageDom.bind(rootDocument, 'mousemove', dragHandler);\n      pageDom.bind(rootDocument, 'mouseup', dragEndHandler);\n      editor.on('remove', function () {\n        pageDom.unbind(rootDocument, 'mousemove', dragHandler);\n        pageDom.unbind(rootDocument, 'mouseup', dragEndHandler);\n      });\n    };\n    var blockIeDrop = function (editor) {\n      editor.on('drop', function (e) {\n        var realTarget = typeof e.clientX !== 'undefined' ? editor.getDoc().elementFromPoint(e.clientX, e.clientY) : null;\n        if (isContentEditableFalse$6(realTarget) || isContentEditableFalse$6(editor.dom.getContentEditableParent(realTarget))) {\n          e.preventDefault();\n        }\n      });\n    };\n    var init = function (editor) {\n      bindFakeDragEvents(editor);\n      blockIeDrop(editor);\n    };\n    var DragDropOverrides = { init: init };\n\n    var getNodeClientRects = function (node) {\n      var toArrayWithNode = function (clientRects) {\n        return map(clientRects, function (clientRect) {\n          clientRect = clone$2(clientRect);\n          clientRect.node = node;\n          return clientRect;\n        });\n      };\n      if (NodeType.isElement(node)) {\n        return toArrayWithNode(node.getClientRects());\n      }\n      if (NodeType.isText(node)) {\n        var rng = node.ownerDocument.createRange();\n        rng.setStart(node, 0);\n        rng.setEnd(node, node.data.length);\n        return toArrayWithNode(rng.getClientRects());\n      }\n    };\n    var getClientRects = function (node) {\n      return foldl(node, function (result, node) {\n        return result.concat(getNodeClientRects(node));\n      }, []);\n    };\n\n    var VDirection;\n    (function (VDirection) {\n      VDirection[VDirection['Up'] = -1] = 'Up';\n      VDirection[VDirection['Down'] = 1] = 'Down';\n    }(VDirection || (VDirection = {})));\n    var findUntil = function (direction, root, predicateFn, node) {\n      while (node = findNode(node, direction, isEditableCaretCandidate, root)) {\n        if (predicateFn(node)) {\n          return;\n        }\n      }\n    };\n    var walkUntil = function (direction, isAboveFn, isBeflowFn, root, predicateFn, caretPosition) {\n      var line = 0, node;\n      var result = [];\n      var targetClientRect;\n      var add = function (node) {\n        var i, clientRect, clientRects;\n        clientRects = getClientRects([node]);\n        if (direction === -1) {\n          clientRects = clientRects.reverse();\n        }\n        for (i = 0; i < clientRects.length; i++) {\n          clientRect = clientRects[i];\n          if (isBeflowFn(clientRect, targetClientRect)) {\n            continue;\n          }\n          if (result.length > 0 && isAboveFn(clientRect, ArrUtils.last(result))) {\n            line++;\n          }\n          clientRect.line = line;\n          if (predicateFn(clientRect)) {\n            return true;\n          }\n          result.push(clientRect);\n        }\n      };\n      targetClientRect = ArrUtils.last(caretPosition.getClientRects());\n      if (!targetClientRect) {\n        return result;\n      }\n      node = caretPosition.getNode();\n      add(node);\n      findUntil(direction, root, add, node);\n      return result;\n    };\n    var aboveLineNumber = function (lineNumber, clientRect) {\n      return clientRect.line > lineNumber;\n    };\n    var isLineNumber = function (lineNumber, clientRect) {\n      return clientRect.line === lineNumber;\n    };\n    var upUntil = curry(walkUntil, VDirection.Up, isAbove, isBelow);\n    var downUntil = curry(walkUntil, VDirection.Down, isBelow, isAbove);\n    var positionsUntil = function (direction, root, predicateFn, node) {\n      var caretWalker = CaretWalker(root);\n      var walkFn, isBelowFn, isAboveFn, caretPosition;\n      var result = [];\n      var line = 0, clientRect, targetClientRect;\n      var getClientRect = function (caretPosition) {\n        if (direction === 1) {\n          return ArrUtils.last(caretPosition.getClientRects());\n        }\n        return ArrUtils.last(caretPosition.getClientRects());\n      };\n      if (direction === 1) {\n        walkFn = caretWalker.next;\n        isBelowFn = isBelow;\n        isAboveFn = isAbove;\n        caretPosition = CaretPosition$1.after(node);\n      } else {\n        walkFn = caretWalker.prev;\n        isBelowFn = isAbove;\n        isAboveFn = isBelow;\n        caretPosition = CaretPosition$1.before(node);\n      }\n      targetClientRect = getClientRect(caretPosition);\n      do {\n        if (!caretPosition.isVisible()) {\n          continue;\n        }\n        clientRect = getClientRect(caretPosition);\n        if (isAboveFn(clientRect, targetClientRect)) {\n          continue;\n        }\n        if (result.length > 0 && isBelowFn(clientRect, ArrUtils.last(result))) {\n          line++;\n        }\n        clientRect = clone$2(clientRect);\n        clientRect.position = caretPosition;\n        clientRect.line = line;\n        if (predicateFn(clientRect)) {\n          return result;\n        }\n        result.push(clientRect);\n      } while (caretPosition = walkFn(caretPosition));\n      return result;\n    };\n    var isAboveLine = function (lineNumber) {\n      return function (clientRect) {\n        return aboveLineNumber(lineNumber, clientRect);\n      };\n    };\n    var isLine = function (lineNumber) {\n      return function (clientRect) {\n        return isLineNumber(lineNumber, clientRect);\n      };\n    };\n\n    var isContentEditableFalse$7 = NodeType.isContentEditableFalse;\n    var findNode$1 = findNode;\n    var distanceToRectLeft = function (clientRect, clientX) {\n      return Math.abs(clientRect.left - clientX);\n    };\n    var distanceToRectRight = function (clientRect, clientX) {\n      return Math.abs(clientRect.right - clientX);\n    };\n    var isInside = function (clientX, clientRect) {\n      return clientX >= clientRect.left && clientX <= clientRect.right;\n    };\n    var findClosestClientRect = function (clientRects, clientX) {\n      return ArrUtils.reduce(clientRects, function (oldClientRect, clientRect) {\n        var oldDistance, newDistance;\n        oldDistance = Math.min(distanceToRectLeft(oldClientRect, clientX), distanceToRectRight(oldClientRect, clientX));\n        newDistance = Math.min(distanceToRectLeft(clientRect, clientX), distanceToRectRight(clientRect, clientX));\n        if (isInside(clientX, clientRect)) {\n          return clientRect;\n        }\n        if (isInside(clientX, oldClientRect)) {\n          return oldClientRect;\n        }\n        if (newDistance === oldDistance && isContentEditableFalse$7(clientRect.node)) {\n          return clientRect;\n        }\n        if (newDistance < oldDistance) {\n          return clientRect;\n        }\n        return oldClientRect;\n      });\n    };\n    var walkUntil$1 = function (direction, root, predicateFn, node) {\n      while (node = findNode$1(node, direction, isEditableCaretCandidate, root)) {\n        if (predicateFn(node)) {\n          return;\n        }\n      }\n    };\n    var findLineNodeRects = function (root, targetNodeRect) {\n      var clientRects = [];\n      var collect = function (checkPosFn, node) {\n        var lineRects;\n        lineRects = filter(getClientRects([node]), function (clientRect) {\n          return !checkPosFn(clientRect, targetNodeRect);\n        });\n        clientRects = clientRects.concat(lineRects);\n        return lineRects.length === 0;\n      };\n      clientRects.push(targetNodeRect);\n      walkUntil$1(VDirection.Up, root, curry(collect, isAbove), targetNodeRect.node);\n      walkUntil$1(VDirection.Down, root, curry(collect, isBelow), targetNodeRect.node);\n      return clientRects;\n    };\n    var getFakeCaretTargets = function (root) {\n      return filter(from$1(root.getElementsByTagName('*')), isFakeCaretTarget);\n    };\n    var caretInfo = function (clientRect, clientX) {\n      return {\n        node: clientRect.node,\n        before: distanceToRectLeft(clientRect, clientX) < distanceToRectRight(clientRect, clientX)\n      };\n    };\n    var closestCaret = function (root, clientX, clientY) {\n      var closestNodeRect;\n      var contentEditableFalseNodeRects = getClientRects(getFakeCaretTargets(root));\n      var targetNodeRects = filter(contentEditableFalseNodeRects, function (rect) {\n        return clientY >= rect.top && clientY <= rect.bottom;\n      });\n      closestNodeRect = findClosestClientRect(targetNodeRects, clientX);\n      if (closestNodeRect) {\n        closestNodeRect = findClosestClientRect(findLineNodeRects(root, closestNodeRect), clientX);\n        if (closestNodeRect && isFakeCaretTarget(closestNodeRect.node)) {\n          return caretInfo(closestNodeRect, clientX);\n        }\n      }\n      return null;\n    };\n\n    var isXYWithinRange = function (clientX, clientY, range$$1) {\n      if (range$$1.collapsed) {\n        return false;\n      }\n      return foldl(range$$1.getClientRects(), function (state, rect) {\n        return state || containsXY(rect, clientX, clientY);\n      }, false);\n    };\n    var RangePoint = { isXYWithinRange: isXYWithinRange };\n\n    var isContentEditableTrue$4 = NodeType.isContentEditableTrue;\n    var isContentEditableFalse$8 = NodeType.isContentEditableFalse;\n    var showCaret = function (direction, editor, node, before, scrollIntoView) {\n      return editor._selectionOverrides.showCaret(direction, node, before, scrollIntoView);\n    };\n    var getNodeRange = function (node) {\n      var rng = node.ownerDocument.createRange();\n      rng.selectNode(node);\n      return rng;\n    };\n    var selectNode = function (editor, node) {\n      var e = editor.fire('BeforeObjectSelected', { target: node });\n      if (e.isDefaultPrevented()) {\n        return null;\n      }\n      return getNodeRange(node);\n    };\n    var renderCaretAtRange = function (editor, range, scrollIntoView) {\n      var normalizedRange = normalizeRange(1, editor.getBody(), range);\n      var caretPosition = CaretPosition$1.fromRangeStart(normalizedRange);\n      var caretPositionNode = caretPosition.getNode();\n      if (isContentEditableFalse$8(caretPositionNode)) {\n        return showCaret(1, editor, caretPositionNode, !caretPosition.isAtEnd(), false);\n      }\n      var caretPositionBeforeNode = caretPosition.getNode(true);\n      if (isContentEditableFalse$8(caretPositionBeforeNode)) {\n        return showCaret(1, editor, caretPositionBeforeNode, false, false);\n      }\n      var ceRoot = editor.dom.getParent(caretPosition.getNode(), function (node) {\n        return isContentEditableFalse$8(node) || isContentEditableTrue$4(node);\n      });\n      if (isContentEditableFalse$8(ceRoot)) {\n        return showCaret(1, editor, ceRoot, false, scrollIntoView);\n      }\n      return null;\n    };\n    var renderRangeCaret = function (editor, range, scrollIntoView) {\n      if (!range || !range.collapsed) {\n        return range;\n      }\n      var caretRange = renderCaretAtRange(editor, range, scrollIntoView);\n      if (caretRange) {\n        return caretRange;\n      }\n      return range;\n    };\n\n    var setup$3 = function (editor) {\n      var renderFocusCaret = first$1(function () {\n        if (!editor.removed) {\n          var rng = editor.selection.getRng();\n          if (rng.collapsed) {\n            var caretRange = renderRangeCaret(editor, editor.selection.getRng(), false);\n            editor.selection.setRng(caretRange);\n          }\n        }\n      }, 0);\n      editor.on('focus', function () {\n        renderFocusCaret.throttle();\n      });\n      editor.on('blur', function () {\n        renderFocusCaret.cancel();\n      });\n    };\n    var CefFocus = { setup: setup$3 };\n\n    var VK = {\n      BACKSPACE: 8,\n      DELETE: 46,\n      DOWN: 40,\n      ENTER: 13,\n      LEFT: 37,\n      RIGHT: 39,\n      SPACEBAR: 32,\n      TAB: 9,\n      UP: 38,\n      modifierPressed: function (e) {\n        return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e);\n      },\n      metaKeyPressed: function (e) {\n        return Env.mac ? e.metaKey : e.ctrlKey && !e.altKey;\n      }\n    };\n\n    var isContentEditableTrue$5 = NodeType.isContentEditableTrue;\n    var isContentEditableFalse$9 = NodeType.isContentEditableFalse;\n    var isAfterContentEditableFalse$1 = isAfterContentEditableFalse;\n    var isBeforeContentEditableFalse$1 = isBeforeContentEditableFalse;\n    var getContentEditableRoot$1 = function (editor, node) {\n      var root = editor.getBody();\n      while (node && node !== root) {\n        if (isContentEditableTrue$5(node) || isContentEditableFalse$9(node)) {\n          return node;\n        }\n        node = node.parentNode;\n      }\n      return null;\n    };\n    var SelectionOverrides = function (editor) {\n      var isBlock = function (node) {\n        return editor.dom.isBlock(node);\n      };\n      var rootNode = editor.getBody();\n      var fakeCaret = FakeCaret(editor.getBody(), isBlock, function () {\n        return EditorFocus.hasFocus(editor);\n      });\n      var realSelectionId = 'sel-' + editor.dom.uniqueId();\n      var selectedContentEditableNode;\n      var isFakeSelectionElement = function (elm) {\n        return editor.dom.hasClass(elm, 'mce-offscreen-selection');\n      };\n      var getRealSelectionElement = function () {\n        var container = editor.dom.get(realSelectionId);\n        return container ? container.getElementsByTagName('*')[0] : container;\n      };\n      var setRange = function (range$$1) {\n        if (range$$1) {\n          editor.selection.setRng(range$$1);\n        }\n      };\n      var getRange = function () {\n        return editor.selection.getRng();\n      };\n      var showCaret$$1 = function (direction, node, before, scrollIntoView) {\n        if (scrollIntoView === void 0) {\n          scrollIntoView = true;\n        }\n        var e;\n        e = editor.fire('ShowCaret', {\n          target: node,\n          direction: direction,\n          before: before\n        });\n        if (e.isDefaultPrevented()) {\n          return null;\n        }\n        if (scrollIntoView) {\n          editor.selection.scrollIntoView(node, direction === -1);\n        }\n        return fakeCaret.show(before, node);\n      };\n      var getNormalizedRangeEndPoint$$1 = function (direction, range$$1) {\n        range$$1 = normalizeRange(direction, rootNode, range$$1);\n        if (direction === -1) {\n          return CaretPosition$1.fromRangeStart(range$$1);\n        }\n        return CaretPosition$1.fromRangeEnd(range$$1);\n      };\n      var showBlockCaretContainer = function (blockCaretContainer) {\n        if (blockCaretContainer.hasAttribute('data-mce-caret')) {\n          showCaretContainerBlock(blockCaretContainer);\n          setRange(getRange());\n          editor.selection.scrollIntoView(blockCaretContainer[0]);\n        }\n      };\n      var registerEvents = function () {\n        editor.on('mouseup', function (e) {\n          var range$$1 = getRange();\n          if (range$$1.collapsed && EditorView.isXYInContentArea(editor, e.clientX, e.clientY)) {\n            setRange(renderCaretAtRange(editor, range$$1, false));\n          }\n        });\n        editor.on('click', function (e) {\n          var contentEditableRoot;\n          contentEditableRoot = getContentEditableRoot$1(editor, e.target);\n          if (contentEditableRoot) {\n            if (isContentEditableFalse$9(contentEditableRoot)) {\n              e.preventDefault();\n              editor.focus();\n            }\n            if (isContentEditableTrue$5(contentEditableRoot)) {\n              if (editor.dom.isChildOf(contentEditableRoot, editor.selection.getNode())) {\n                removeContentEditableSelection();\n              }\n            }\n          }\n        });\n        editor.on('blur NewBlock', function () {\n          removeContentEditableSelection();\n        });\n        editor.on('ResizeWindow FullscreenStateChanged', function () {\n          return fakeCaret.reposition();\n        });\n        var handleTouchSelect = function (editor) {\n          var moved = false;\n          editor.on('touchstart', function () {\n            moved = false;\n          });\n          editor.on('touchmove', function () {\n            moved = true;\n          });\n          editor.on('touchend', function (e) {\n            var contentEditableRoot = getContentEditableRoot$1(editor, e.target);\n            if (isContentEditableFalse$9(contentEditableRoot)) {\n              if (!moved) {\n                e.preventDefault();\n                setContentEditableSelection(selectNode(editor, contentEditableRoot));\n              }\n            }\n          });\n        };\n        var hasNormalCaretPosition = function (elm) {\n          var caretWalker = CaretWalker(elm);\n          if (!elm.firstChild) {\n            return false;\n          }\n          var startPos = CaretPosition$1.before(elm.firstChild);\n          var newPos = caretWalker.next(startPos);\n          return newPos && !isBeforeContentEditableFalse$1(newPos) && !isAfterContentEditableFalse$1(newPos);\n        };\n        var isInSameBlock$$1 = function (node1, node2) {\n          var block1 = editor.dom.getParent(node1, editor.dom.isBlock);\n          var block2 = editor.dom.getParent(node2, editor.dom.isBlock);\n          return block1 === block2;\n        };\n        var hasBetterMouseTarget = function (targetNode, caretNode) {\n          var targetBlock = editor.dom.getParent(targetNode, editor.dom.isBlock);\n          var caretBlock = editor.dom.getParent(caretNode, editor.dom.isBlock);\n          if (targetBlock && editor.dom.isChildOf(targetBlock, caretBlock) && isContentEditableFalse$9(getContentEditableRoot$1(editor, targetBlock)) === false) {\n            return true;\n          }\n          return targetBlock && !isInSameBlock$$1(targetBlock, caretBlock) && hasNormalCaretPosition(targetBlock);\n        };\n        handleTouchSelect(editor);\n        editor.on('mousedown', function (e) {\n          var contentEditableRoot;\n          var targetElm = e.target;\n          if (targetElm !== rootNode && targetElm.nodeName !== 'HTML' && !editor.dom.isChildOf(targetElm, rootNode)) {\n            return;\n          }\n          if (EditorView.isXYInContentArea(editor, e.clientX, e.clientY) === false) {\n            return;\n          }\n          contentEditableRoot = getContentEditableRoot$1(editor, targetElm);\n          if (contentEditableRoot) {\n            if (isContentEditableFalse$9(contentEditableRoot)) {\n              e.preventDefault();\n              setContentEditableSelection(selectNode(editor, contentEditableRoot));\n            } else {\n              removeContentEditableSelection();\n              if (!(isContentEditableTrue$5(contentEditableRoot) && e.shiftKey) && !RangePoint.isXYWithinRange(e.clientX, e.clientY, editor.selection.getRng())) {\n                hideFakeCaret();\n                editor.selection.placeCaretAt(e.clientX, e.clientY);\n              }\n            }\n          } else if (isFakeCaretTarget(targetElm) === false) {\n            removeContentEditableSelection();\n            hideFakeCaret();\n            var caretInfo = closestCaret(rootNode, e.clientX, e.clientY);\n            if (caretInfo) {\n              if (!hasBetterMouseTarget(e.target, caretInfo.node)) {\n                e.preventDefault();\n                var range$$1 = showCaret$$1(1, caretInfo.node, caretInfo.before, false);\n                editor.getBody().focus();\n                setRange(range$$1);\n              }\n            }\n          }\n        });\n        editor.on('keypress', function (e) {\n          if (VK.modifierPressed(e)) {\n            return;\n          }\n          switch (e.keyCode) {\n          default:\n            if (isContentEditableFalse$9(editor.selection.getNode())) {\n              e.preventDefault();\n            }\n            break;\n          }\n        });\n        editor.on('getSelectionRange', function (e) {\n          var rng = e.range;\n          if (selectedContentEditableNode) {\n            if (!selectedContentEditableNode.parentNode) {\n              selectedContentEditableNode = null;\n              return;\n            }\n            rng = rng.cloneRange();\n            rng.selectNode(selectedContentEditableNode);\n            e.range = rng;\n          }\n        });\n        editor.on('setSelectionRange', function (e) {\n          var rng;\n          rng = setContentEditableSelection(e.range, e.forward);\n          if (rng) {\n            e.range = rng;\n          }\n        });\n        var isPasteBin = function (node) {\n          return node.id === 'mcepastebin';\n        };\n        editor.on('AfterSetSelectionRange', function (e) {\n          var rng = e.range;\n          if (!isRangeInCaretContainer(rng) && !isPasteBin(rng.startContainer.parentNode)) {\n            hideFakeCaret();\n          }\n          if (!isFakeSelectionElement(rng.startContainer.parentNode)) {\n            removeContentEditableSelection();\n          }\n        });\n        editor.on('copy', function (e) {\n          var clipboardData = e.clipboardData;\n          if (!e.isDefaultPrevented() && e.clipboardData && !Env.ie) {\n            var realSelectionElement = getRealSelectionElement();\n            if (realSelectionElement) {\n              e.preventDefault();\n              clipboardData.clearData();\n              clipboardData.setData('text/html', realSelectionElement.outerHTML);\n              clipboardData.setData('text/plain', realSelectionElement.outerText);\n            }\n          }\n        });\n        DragDropOverrides.init(editor);\n        CefFocus.setup(editor);\n      };\n      var addCss = function () {\n        var styles = editor.contentStyles, rootClass = '.mce-content-body';\n        styles.push(fakeCaret.getCss());\n        styles.push(rootClass + ' .mce-offscreen-selection {' + 'position: absolute;' + 'left: -9999999999px;' + 'max-width: 1000000px;' + '}' + rootClass + ' *[contentEditable=false] {' + 'cursor: default;' + '}' + rootClass + ' *[contentEditable=true] {' + 'cursor: text;' + '}');\n      };\n      var isWithinCaretContainer = function (node) {\n        return isCaretContainer(node) || startsWithCaretContainer(node) || endsWithCaretContainer(node);\n      };\n      var isRangeInCaretContainer = function (rng) {\n        return isWithinCaretContainer(rng.startContainer) || isWithinCaretContainer(rng.endContainer);\n      };\n      var setContentEditableSelection = function (range$$1, forward) {\n        var node;\n        var $ = editor.$;\n        var dom = editor.dom;\n        var $realSelectionContainer, sel, startContainer, startOffset, endOffset, e, caretPosition, targetClone, origTargetClone;\n        if (!range$$1) {\n          return null;\n        }\n        if (range$$1.collapsed) {\n          if (!isRangeInCaretContainer(range$$1)) {\n            if (forward === false) {\n              caretPosition = getNormalizedRangeEndPoint$$1(-1, range$$1);\n              if (isFakeCaretTarget(caretPosition.getNode(true))) {\n                return showCaret$$1(-1, caretPosition.getNode(true), false, false);\n              }\n              if (isFakeCaretTarget(caretPosition.getNode())) {\n                return showCaret$$1(-1, caretPosition.getNode(), !caretPosition.isAtEnd(), false);\n              }\n            } else {\n              caretPosition = getNormalizedRangeEndPoint$$1(1, range$$1);\n              if (isFakeCaretTarget(caretPosition.getNode())) {\n                return showCaret$$1(1, caretPosition.getNode(), !caretPosition.isAtEnd(), false);\n              }\n              if (isFakeCaretTarget(caretPosition.getNode(true))) {\n                return showCaret$$1(1, caretPosition.getNode(true), false, false);\n              }\n            }\n          }\n          return null;\n        }\n        startContainer = range$$1.startContainer;\n        startOffset = range$$1.startOffset;\n        endOffset = range$$1.endOffset;\n        if (startContainer.nodeType === 3 && startOffset === 0 && isContentEditableFalse$9(startContainer.parentNode)) {\n          startContainer = startContainer.parentNode;\n          startOffset = dom.nodeIndex(startContainer);\n          startContainer = startContainer.parentNode;\n        }\n        if (startContainer.nodeType !== 1) {\n          return null;\n        }\n        if (endOffset === startOffset + 1) {\n          node = startContainer.childNodes[startOffset];\n        }\n        if (!isContentEditableFalse$9(node)) {\n          return null;\n        }\n        targetClone = origTargetClone = node.cloneNode(true);\n        e = editor.fire('ObjectSelected', {\n          target: node,\n          targetClone: targetClone\n        });\n        if (e.isDefaultPrevented()) {\n          return null;\n        }\n        $realSelectionContainer = descendant$1(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).fold(function () {\n          return $([]);\n        }, function (elm) {\n          return $([elm.dom()]);\n        });\n        targetClone = e.targetClone;\n        if ($realSelectionContainer.length === 0) {\n          $realSelectionContainer = $('<div data-mce-bogus=\"all\" class=\"mce-offscreen-selection\"></div>').attr('id', realSelectionId);\n          $realSelectionContainer.appendTo(editor.getBody());\n        }\n        range$$1 = editor.dom.createRng();\n        if (targetClone === origTargetClone && Env.ie) {\n          $realSelectionContainer.empty().append('<p style=\"font-size: 0\" data-mce-bogus=\"all\">\\xA0</p>').append(targetClone);\n          range$$1.setStartAfter($realSelectionContainer[0].firstChild.firstChild);\n          range$$1.setEndAfter(targetClone);\n        } else {\n          $realSelectionContainer.empty().append('\\xA0').append(targetClone).append('\\xA0');\n          range$$1.setStart($realSelectionContainer[0].firstChild, 1);\n          range$$1.setEnd($realSelectionContainer[0].lastChild, 0);\n        }\n        $realSelectionContainer.css({ top: dom.getPos(node, editor.getBody()).y });\n        $realSelectionContainer[0].focus();\n        sel = editor.selection.getSel();\n        sel.removeAllRanges();\n        sel.addRange(range$$1);\n        each(descendants$1(Element$$1.fromDom(editor.getBody()), '*[data-mce-selected]'), function (elm) {\n          remove(elm, 'data-mce-selected');\n        });\n        node.setAttribute('data-mce-selected', '1');\n        selectedContentEditableNode = node;\n        hideFakeCaret();\n        return range$$1;\n      };\n      var removeContentEditableSelection = function () {\n        if (selectedContentEditableNode) {\n          selectedContentEditableNode.removeAttribute('data-mce-selected');\n          descendant$1(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).each(remove$2);\n          selectedContentEditableNode = null;\n        }\n        descendant$1(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).each(remove$2);\n        selectedContentEditableNode = null;\n      };\n      var destroy = function () {\n        fakeCaret.destroy();\n        selectedContentEditableNode = null;\n      };\n      var hideFakeCaret = function () {\n        fakeCaret.hide();\n      };\n      if (Env.ceFalse) {\n        registerEvents();\n        addCss();\n      }\n      return {\n        showCaret: showCaret$$1,\n        showBlockCaretContainer: showBlockCaretContainer,\n        hideFakeCaret: hideFakeCaret,\n        destroy: destroy\n      };\n    };\n\n    var isValidPrefixAttrName = function (name) {\n      return name.indexOf('data-') === 0 || name.indexOf('aria-') === 0;\n    };\n    var trimComments = function (text) {\n      return text.replace(/<!--|-->/g, '');\n    };\n    var isInvalidUri = function (settings, uri) {\n      if (settings.allow_html_data_urls) {\n        return false;\n      } else if (/^data:image\\//i.test(uri)) {\n        return settings.allow_svg_data_urls === false && /^data:image\\/svg\\+xml/i.test(uri);\n      } else {\n        return /^data:/i.test(uri);\n      }\n    };\n    var findEndTagIndex = function (schema, html, startIndex) {\n      var count = 1, index, matches, tokenRegExp, shortEndedElements;\n      shortEndedElements = schema.getShortEndedElements();\n      tokenRegExp = /<([!?\\/])?([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^\"\\'>]+(?:(?:\"[^\"]*\")|(?:\\'[^\\']*\\')|[^>]*))*|\\/|\\s+)>/g;\n      tokenRegExp.lastIndex = index = startIndex;\n      while (matches = tokenRegExp.exec(html)) {\n        index = tokenRegExp.lastIndex;\n        if (matches[1] === '/') {\n          count--;\n        } else if (!matches[1]) {\n          if (matches[2] in shortEndedElements) {\n            continue;\n          }\n          count++;\n        }\n        if (count === 0) {\n          break;\n        }\n      }\n      return index;\n    };\n    function SaxParser(settings, schema) {\n      if (schema === void 0) {\n        schema = Schema();\n      }\n      var noop = function () {\n      };\n      settings = settings || {};\n      if (settings.fix_self_closing !== false) {\n        settings.fix_self_closing = true;\n      }\n      var comment = settings.comment ? settings.comment : noop;\n      var cdata = settings.cdata ? settings.cdata : noop;\n      var text = settings.text ? settings.text : noop;\n      var start = settings.start ? settings.start : noop;\n      var end = settings.end ? settings.end : noop;\n      var pi = settings.pi ? settings.pi : noop;\n      var doctype = settings.doctype ? settings.doctype : noop;\n      var parse = function (html) {\n        var matches, index = 0, value, endRegExp;\n        var stack = [];\n        var attrList, i, textData, name;\n        var isInternalElement, removeInternalElements, shortEndedElements, fillAttrsMap, isShortEnded;\n        var validate, elementRule, isValidElement, attr, attribsValue, validAttributesMap, validAttributePatterns;\n        var attributesRequired, attributesDefault, attributesForced, processHtml;\n        var anyAttributesRequired, selfClosing, tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0;\n        var decode = Entities.decode;\n        var fixSelfClosing;\n        var filteredUrlAttrs = Tools.makeMap('src,href,data,background,formaction,poster,xlink:href');\n        var scriptUriRegExp = /((java|vb)script|mhtml):/i;\n        var processEndTag = function (name) {\n          var pos, i;\n          pos = stack.length;\n          while (pos--) {\n            if (stack[pos].name === name) {\n              break;\n            }\n          }\n          if (pos >= 0) {\n            for (i = stack.length - 1; i >= pos; i--) {\n              name = stack[i];\n              if (name.valid) {\n                end(name.name);\n              }\n            }\n            stack.length = pos;\n          }\n        };\n        var parseAttribute = function (match, name, value, val2, val3) {\n          var attrRule, i;\n          var trimRegExp = /[\\s\\u0000-\\u001F]+/g;\n          name = name.toLowerCase();\n          value = name in fillAttrsMap ? name : decode(value || val2 || val3 || '');\n          if (validate && !isInternalElement && isValidPrefixAttrName(name) === false) {\n            attrRule = validAttributesMap[name];\n            if (!attrRule && validAttributePatterns) {\n              i = validAttributePatterns.length;\n              while (i--) {\n                attrRule = validAttributePatterns[i];\n                if (attrRule.pattern.test(name)) {\n                  break;\n                }\n              }\n              if (i === -1) {\n                attrRule = null;\n              }\n            }\n            if (!attrRule) {\n              return;\n            }\n            if (attrRule.validValues && !(value in attrRule.validValues)) {\n              return;\n            }\n          }\n          if (filteredUrlAttrs[name] && !settings.allow_script_urls) {\n            var uri = value.replace(trimRegExp, '');\n            try {\n              uri = decodeURIComponent(uri);\n            } catch (ex) {\n              uri = unescape(uri);\n            }\n            if (scriptUriRegExp.test(uri)) {\n              return;\n            }\n            if (isInvalidUri(settings, uri)) {\n              return;\n            }\n          }\n          if (isInternalElement && (name in filteredUrlAttrs || name.indexOf('on') === 0)) {\n            return;\n          }\n          attrList.map[name] = value;\n          attrList.push({\n            name: name,\n            value: value\n          });\n        };\n        tokenRegExp = new RegExp('<(?:' + '(?:!--([\\\\w\\\\W]*?)-->)|' + '(?:!\\\\[CDATA\\\\[([\\\\w\\\\W]*?)\\\\]\\\\]>)|' + '(?:!DOCTYPE([\\\\w\\\\W]*?)>)|' + '(?:\\\\?([^\\\\s\\\\/<>]+) ?([\\\\w\\\\W]*?)[?/]>)|' + '(?:\\\\/([A-Za-z][A-Za-z0-9\\\\-_\\\\:\\\\.]*)>)|' + '(?:([A-Za-z][A-Za-z0-9\\\\-_\\\\:\\\\.]*)((?:\\\\s+[^\"\\'>]+(?:(?:\"[^\"]*\")|(?:\\'[^\\']*\\')|[^>]*))*|\\\\/|\\\\s+)>)' + ')', 'g');\n        attrRegExp = /([\\w:\\-]+)(?:\\s*=\\s*(?:(?:\\\"((?:[^\\\"])*)\\\")|(?:\\'((?:[^\\'])*)\\')|([^>\\s]+)))?/g;\n        shortEndedElements = schema.getShortEndedElements();\n        selfClosing = settings.self_closing_elements || schema.getSelfClosingElements();\n        fillAttrsMap = schema.getBoolAttrs();\n        validate = settings.validate;\n        removeInternalElements = settings.remove_internals;\n        fixSelfClosing = settings.fix_self_closing;\n        specialElements = schema.getSpecialElements();\n        processHtml = html + '>';\n        while (matches = tokenRegExp.exec(processHtml)) {\n          if (index < matches.index) {\n            text(decode(html.substr(index, matches.index - index)));\n          }\n          if (value = matches[6]) {\n            value = value.toLowerCase();\n            if (value.charAt(0) === ':') {\n              value = value.substr(1);\n            }\n            processEndTag(value);\n          } else if (value = matches[7]) {\n            if (matches.index + matches[0].length > html.length) {\n              text(decode(html.substr(matches.index)));\n              index = matches.index + matches[0].length;\n              continue;\n            }\n            value = value.toLowerCase();\n            if (value.charAt(0) === ':') {\n              value = value.substr(1);\n            }\n            isShortEnded = value in shortEndedElements;\n            if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value) {\n              processEndTag(value);\n            }\n            if (!validate || (elementRule = schema.getElementRule(value))) {\n              isValidElement = true;\n              if (validate) {\n                validAttributesMap = elementRule.attributes;\n                validAttributePatterns = elementRule.attributePatterns;\n              }\n              if (attribsValue = matches[8]) {\n                isInternalElement = attribsValue.indexOf('data-mce-type') !== -1;\n                if (isInternalElement && removeInternalElements) {\n                  isValidElement = false;\n                }\n                attrList = [];\n                attrList.map = {};\n                attribsValue.replace(attrRegExp, parseAttribute);\n              } else {\n                attrList = [];\n                attrList.map = {};\n              }\n              if (validate && !isInternalElement) {\n                attributesRequired = elementRule.attributesRequired;\n                attributesDefault = elementRule.attributesDefault;\n                attributesForced = elementRule.attributesForced;\n                anyAttributesRequired = elementRule.removeEmptyAttrs;\n                if (anyAttributesRequired && !attrList.length) {\n                  isValidElement = false;\n                }\n                if (attributesForced) {\n                  i = attributesForced.length;\n                  while (i--) {\n                    attr = attributesForced[i];\n                    name = attr.name;\n                    attrValue = attr.value;\n                    if (attrValue === '{$uid}') {\n                      attrValue = 'mce_' + idCount++;\n                    }\n                    attrList.map[name] = attrValue;\n                    attrList.push({\n                      name: name,\n                      value: attrValue\n                    });\n                  }\n                }\n                if (attributesDefault) {\n                  i = attributesDefault.length;\n                  while (i--) {\n                    attr = attributesDefault[i];\n                    name = attr.name;\n                    if (!(name in attrList.map)) {\n                      attrValue = attr.value;\n                      if (attrValue === '{$uid}') {\n                        attrValue = 'mce_' + idCount++;\n                      }\n                      attrList.map[name] = attrValue;\n                      attrList.push({\n                        name: name,\n                        value: attrValue\n                      });\n                    }\n                  }\n                }\n                if (attributesRequired) {\n                  i = attributesRequired.length;\n                  while (i--) {\n                    if (attributesRequired[i] in attrList.map) {\n                      break;\n                    }\n                  }\n                  if (i === -1) {\n                    isValidElement = false;\n                  }\n                }\n                if (attr = attrList.map['data-mce-bogus']) {\n                  if (attr === 'all') {\n                    index = findEndTagIndex(schema, html, tokenRegExp.lastIndex);\n                    tokenRegExp.lastIndex = index;\n                    continue;\n                  }\n                  isValidElement = false;\n                }\n              }\n              if (isValidElement) {\n                start(value, attrList, isShortEnded);\n              }\n            } else {\n              isValidElement = false;\n            }\n            if (endRegExp = specialElements[value]) {\n              endRegExp.lastIndex = index = matches.index + matches[0].length;\n              if (matches = endRegExp.exec(html)) {\n                if (isValidElement) {\n                  textData = html.substr(index, matches.index - index);\n                }\n                index = matches.index + matches[0].length;\n              } else {\n                textData = html.substr(index);\n                index = html.length;\n              }\n              if (isValidElement) {\n                if (textData.length > 0) {\n                  text(textData, true);\n                }\n                end(value);\n              }\n              tokenRegExp.lastIndex = index;\n              continue;\n            }\n            if (!isShortEnded) {\n              if (!attribsValue || attribsValue.indexOf('/') !== attribsValue.length - 1) {\n                stack.push({\n                  name: value,\n                  valid: isValidElement\n                });\n              } else if (isValidElement) {\n                end(value);\n              }\n            }\n          } else if (value = matches[1]) {\n            if (value.charAt(0) === '>') {\n              value = ' ' + value;\n            }\n            if (!settings.allow_conditional_comments && value.substr(0, 3).toLowerCase() === '[if') {\n              value = ' ' + value;\n            }\n            comment(value);\n          } else if (value = matches[2]) {\n            cdata(trimComments(value));\n          } else if (value = matches[3]) {\n            doctype(value);\n          } else if (value = matches[4]) {\n            pi(value, matches[5]);\n          }\n          index = matches.index + matches[0].length;\n        }\n        if (index < html.length) {\n          text(decode(html.substr(index)));\n        }\n        for (i = stack.length - 1; i >= 0; i--) {\n          value = stack[i];\n          if (value.valid) {\n            end(value.name);\n          }\n        }\n      };\n      return { parse: parse };\n    }\n    (function (SaxParser) {\n      SaxParser.findEndTag = findEndTagIndex;\n    }(SaxParser || (SaxParser = {})));\n    var SaxParser$1 = SaxParser;\n\n    var trimHtml = function (tempAttrs, html) {\n      var trimContentRegExp = new RegExp(['\\\\s?(' + tempAttrs.join('|') + ')=\"[^\"]+\"'].join('|'), 'gi');\n      return html.replace(trimContentRegExp, '');\n    };\n    var trimInternal = function (serializer, html) {\n      var content = html;\n      var bogusAllRegExp = /<(\\w+) [^>]*data-mce-bogus=\"all\"[^>]*>/g;\n      var endTagIndex, index, matchLength, matches, shortEndedElements;\n      var schema = serializer.schema;\n      content = trimHtml(serializer.getTempAttrs(), content);\n      shortEndedElements = schema.getShortEndedElements();\n      while (matches = bogusAllRegExp.exec(content)) {\n        index = bogusAllRegExp.lastIndex;\n        matchLength = matches[0].length;\n        if (shortEndedElements[matches[1]]) {\n          endTagIndex = index;\n        } else {\n          endTagIndex = SaxParser$1.findEndTag(schema, content, index);\n        }\n        content = content.substring(0, index - matchLength) + content.substring(endTagIndex);\n        bogusAllRegExp.lastIndex = index - matchLength;\n      }\n      return Zwsp.trim(content);\n    };\n    var trimExternal = trimInternal;\n    var TrimHtml = {\n      trimExternal: trimExternal,\n      trimInternal: trimInternal\n    };\n\n    var KEEP = 0, INSERT = 1, DELETE = 2;\n    var diff = function (left, right) {\n      var size = left.length + right.length + 2;\n      var vDown = new Array(size);\n      var vUp = new Array(size);\n      var snake = function (start, end, diag) {\n        return {\n          start: start,\n          end: end,\n          diag: diag\n        };\n      };\n      var buildScript = function (start1, end1, start2, end2, script) {\n        var middle = getMiddleSnake(start1, end1, start2, end2);\n        if (middle === null || middle.start === end1 && middle.diag === end1 - end2 || middle.end === start1 && middle.diag === start1 - start2) {\n          var i = start1;\n          var j = start2;\n          while (i < end1 || j < end2) {\n            if (i < end1 && j < end2 && left[i] === right[j]) {\n              script.push([\n                KEEP,\n                left[i]\n              ]);\n              ++i;\n              ++j;\n            } else {\n              if (end1 - start1 > end2 - start2) {\n                script.push([\n                  DELETE,\n                  left[i]\n                ]);\n                ++i;\n              } else {\n                script.push([\n                  INSERT,\n                  right[j]\n                ]);\n                ++j;\n              }\n            }\n          }\n        } else {\n          buildScript(start1, middle.start, start2, middle.start - middle.diag, script);\n          for (var i2 = middle.start; i2 < middle.end; ++i2) {\n            script.push([\n              KEEP,\n              left[i2]\n            ]);\n          }\n          buildScript(middle.end, end1, middle.end - middle.diag, end2, script);\n        }\n      };\n      var buildSnake = function (start, diag, end1, end2) {\n        var end = start;\n        while (end - diag < end2 && end < end1 && left[end] === right[end - diag]) {\n          ++end;\n        }\n        return snake(start, end, diag);\n      };\n      var getMiddleSnake = function (start1, end1, start2, end2) {\n        var m = end1 - start1;\n        var n = end2 - start2;\n        if (m === 0 || n === 0) {\n          return null;\n        }\n        var delta = m - n;\n        var sum = n + m;\n        var offset = (sum % 2 === 0 ? sum : sum + 1) / 2;\n        vDown[1 + offset] = start1;\n        vUp[1 + offset] = end1 + 1;\n        var d, k, i, x, y;\n        for (d = 0; d <= offset; ++d) {\n          for (k = -d; k <= d; k += 2) {\n            i = k + offset;\n            if (k === -d || k !== d && vDown[i - 1] < vDown[i + 1]) {\n              vDown[i] = vDown[i + 1];\n            } else {\n              vDown[i] = vDown[i - 1] + 1;\n            }\n            x = vDown[i];\n            y = x - start1 + start2 - k;\n            while (x < end1 && y < end2 && left[x] === right[y]) {\n              vDown[i] = ++x;\n              ++y;\n            }\n            if (delta % 2 !== 0 && delta - d <= k && k <= delta + d) {\n              if (vUp[i - delta] <= vDown[i]) {\n                return buildSnake(vUp[i - delta], k + start1 - start2, end1, end2);\n              }\n            }\n          }\n          for (k = delta - d; k <= delta + d; k += 2) {\n            i = k + offset - delta;\n            if (k === delta - d || k !== delta + d && vUp[i + 1] <= vUp[i - 1]) {\n              vUp[i] = vUp[i + 1] - 1;\n            } else {\n              vUp[i] = vUp[i - 1];\n            }\n            x = vUp[i] - 1;\n            y = x - start1 + start2 - k;\n            while (x >= start1 && y >= start2 && left[x] === right[y]) {\n              vUp[i] = x--;\n              y--;\n            }\n            if (delta % 2 === 0 && -d <= k && k <= d) {\n              if (vUp[i] <= vDown[i + delta]) {\n                return buildSnake(vUp[i], k + start1 - start2, end1, end2);\n              }\n            }\n          }\n        }\n      };\n      var script = [];\n      buildScript(0, left.length, 0, right.length, script);\n      return script;\n    };\n    var Diff = {\n      KEEP: KEEP,\n      DELETE: DELETE,\n      INSERT: INSERT,\n      diff: diff\n    };\n\n    var getOuterHtml = function (elm) {\n      if (NodeType.isElement(elm)) {\n        return elm.outerHTML;\n      } else if (NodeType.isText(elm)) {\n        return Entities.encodeRaw(elm.data, false);\n      } else if (NodeType.isComment(elm)) {\n        return '<!--' + elm.data + '-->';\n      }\n      return '';\n    };\n    var createFragment$1 = function (html) {\n      var frag, node, container;\n      container = document.createElement('div');\n      frag = document.createDocumentFragment();\n      if (html) {\n        container.innerHTML = html;\n      }\n      while (node = container.firstChild) {\n        frag.appendChild(node);\n      }\n      return frag;\n    };\n    var insertAt = function (elm, html, index) {\n      var fragment = createFragment$1(html);\n      if (elm.hasChildNodes() && index < elm.childNodes.length) {\n        var target = elm.childNodes[index];\n        target.parentNode.insertBefore(fragment, target);\n      } else {\n        elm.appendChild(fragment);\n      }\n    };\n    var removeAt = function (elm, index) {\n      if (elm.hasChildNodes() && index < elm.childNodes.length) {\n        var target = elm.childNodes[index];\n        target.parentNode.removeChild(target);\n      }\n    };\n    var applyDiff = function (diff, elm) {\n      var index = 0;\n      each(diff, function (action) {\n        if (action[0] === Diff.KEEP) {\n          index++;\n        } else if (action[0] === Diff.INSERT) {\n          insertAt(elm, action[1], index);\n          index++;\n        } else if (action[0] === Diff.DELETE) {\n          removeAt(elm, index);\n        }\n      });\n    };\n    var read$3 = function (elm) {\n      return filter(map(from$1(elm.childNodes), getOuterHtml), function (item) {\n        return item.length > 0;\n      });\n    };\n    var write = function (fragments, elm) {\n      var currentFragments = map(from$1(elm.childNodes), getOuterHtml);\n      applyDiff(Diff.diff(currentFragments, fragments), elm);\n      return elm;\n    };\n    var Fragments = {\n      read: read$3,\n      write: write\n    };\n\n    var undoLevelDocument = Cell(Option.none());\n    var lazyTempDocument = function () {\n      return undoLevelDocument.get().getOrThunk(function () {\n        var doc = document.implementation.createHTMLDocument('undo');\n        undoLevelDocument.set(Option.some(doc));\n        return doc;\n      });\n    };\n    var hasIframes = function (html) {\n      return html.indexOf('</iframe>') !== -1;\n    };\n    var createFragmentedLevel = function (fragments) {\n      return {\n        type: 'fragmented',\n        fragments: fragments,\n        content: '',\n        bookmark: null,\n        beforeBookmark: null\n      };\n    };\n    var createCompleteLevel = function (content) {\n      return {\n        type: 'complete',\n        fragments: null,\n        content: content,\n        bookmark: null,\n        beforeBookmark: null\n      };\n    };\n    var createFromEditor = function (editor) {\n      var fragments, content, trimmedFragments;\n      fragments = Fragments.read(editor.getBody());\n      trimmedFragments = bind(fragments, function (html) {\n        var trimmed = TrimHtml.trimInternal(editor.serializer, html);\n        return trimmed.length > 0 ? [trimmed] : [];\n      });\n      content = trimmedFragments.join('');\n      return hasIframes(content) ? createFragmentedLevel(trimmedFragments) : createCompleteLevel(content);\n    };\n    var applyToEditor = function (editor, level, before) {\n      if (level.type === 'fragmented') {\n        Fragments.write(level.fragments, editor.getBody());\n      } else {\n        editor.setContent(level.content, { format: 'raw' });\n      }\n      editor.selection.moveToBookmark(before ? level.beforeBookmark : level.bookmark);\n    };\n    var getLevelContent = function (level) {\n      return level.type === 'fragmented' ? level.fragments.join('') : level.content;\n    };\n    var getCleanLevelContent = function (level) {\n      var elm = Element$$1.fromTag('body', lazyTempDocument());\n      set$2(elm, getLevelContent(level));\n      each(descendants$1(elm, '*[data-mce-bogus]'), unwrap);\n      return get$5(elm);\n    };\n    var hasEqualContent = function (level1, level2) {\n      return getLevelContent(level1) === getLevelContent(level2);\n    };\n    var hasEqualCleanedContent = function (level1, level2) {\n      return getCleanLevelContent(level1) === getCleanLevelContent(level2);\n    };\n    var isEq$3 = function (level1, level2) {\n      if (!level1 || !level2) {\n        return false;\n      } else if (hasEqualContent(level1, level2)) {\n        return true;\n      } else {\n        return hasEqualCleanedContent(level1, level2);\n      }\n    };\n    var Levels = {\n      createFragmentedLevel: createFragmentedLevel,\n      createCompleteLevel: createCompleteLevel,\n      createFromEditor: createFromEditor,\n      applyToEditor: applyToEditor,\n      isEq: isEq$3\n    };\n\n    function UndoManager (editor) {\n      var self = this, index = 0, data = [], beforeBookmark, isFirstTypedCharacter, locks = 0;\n      var isUnlocked = function () {\n        return locks === 0;\n      };\n      var setTyping = function (typing) {\n        if (isUnlocked()) {\n          self.typing = typing;\n        }\n      };\n      var setDirty = function (state) {\n        editor.setDirty(state);\n      };\n      var addNonTypingUndoLevel = function (e) {\n        setTyping(false);\n        self.add({}, e);\n      };\n      var endTyping = function () {\n        if (self.typing) {\n          setTyping(false);\n          self.add();\n        }\n      };\n      editor.on('init', function () {\n        self.add();\n      });\n      editor.on('BeforeExecCommand', function (e) {\n        var cmd = e.command;\n        if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') {\n          endTyping();\n          self.beforeChange();\n        }\n      });\n      editor.on('ExecCommand', function (e) {\n        var cmd = e.command;\n        if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') {\n          addNonTypingUndoLevel(e);\n        }\n      });\n      editor.on('ObjectResizeStart Cut', function () {\n        self.beforeChange();\n      });\n      editor.on('SaveContent ObjectResized blur', addNonTypingUndoLevel);\n      editor.on('DragEnd', addNonTypingUndoLevel);\n      editor.on('KeyUp', function (e) {\n        var keyCode = e.keyCode;\n        if (e.isDefaultPrevented()) {\n          return;\n        }\n        if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45 || e.ctrlKey) {\n          addNonTypingUndoLevel();\n          editor.nodeChanged();\n        }\n        if (keyCode === 46 || keyCode === 8) {\n          editor.nodeChanged();\n        }\n        if (isFirstTypedCharacter && self.typing && Levels.isEq(Levels.createFromEditor(editor), data[0]) === false) {\n          if (editor.isDirty() === false) {\n            setDirty(true);\n            editor.fire('change', {\n              level: data[0],\n              lastLevel: null\n            });\n          }\n          editor.fire('TypingUndo');\n          isFirstTypedCharacter = false;\n          editor.nodeChanged();\n        }\n      });\n      editor.on('KeyDown', function (e) {\n        var keyCode = e.keyCode;\n        if (e.isDefaultPrevented()) {\n          return;\n        }\n        if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45) {\n          if (self.typing) {\n            addNonTypingUndoLevel(e);\n          }\n          return;\n        }\n        var modKey = e.ctrlKey && !e.altKey || e.metaKey;\n        if ((keyCode < 16 || keyCode > 20) && keyCode !== 224 && keyCode !== 91 && !self.typing && !modKey) {\n          self.beforeChange();\n          setTyping(true);\n          self.add({}, e);\n          isFirstTypedCharacter = true;\n        }\n      });\n      editor.on('MouseDown', function (e) {\n        if (self.typing) {\n          addNonTypingUndoLevel(e);\n        }\n      });\n      var isInsertReplacementText = function (event) {\n        return event.inputType === 'insertReplacementText';\n      };\n      var isInsertTextDataNull = function (event) {\n        return event.inputType === 'insertText' && event.data === null;\n      };\n      editor.on('input', function (e) {\n        if (e.inputType && (isInsertReplacementText(e) || isInsertTextDataNull(e))) {\n          addNonTypingUndoLevel(e);\n        }\n      });\n      editor.addShortcut('meta+z', '', 'Undo');\n      editor.addShortcut('meta+y,meta+shift+z', '', 'Redo');\n      editor.on('AddUndo Undo Redo ClearUndos', function (e) {\n        if (!e.isDefaultPrevented()) {\n          editor.nodeChanged();\n        }\n      });\n      self = {\n        data: data,\n        typing: false,\n        beforeChange: function () {\n          if (isUnlocked()) {\n            beforeBookmark = GetBookmark.getUndoBookmark(editor.selection);\n          }\n        },\n        add: function (level, event) {\n          var i;\n          var settings = editor.settings;\n          var lastLevel, currentLevel;\n          currentLevel = Levels.createFromEditor(editor);\n          level = level || {};\n          level = Tools.extend(level, currentLevel);\n          if (isUnlocked() === false || editor.removed) {\n            return null;\n          }\n          lastLevel = data[index];\n          if (editor.fire('BeforeAddUndo', {\n              level: level,\n              lastLevel: lastLevel,\n              originalEvent: event\n            }).isDefaultPrevented()) {\n            return null;\n          }\n          if (lastLevel && Levels.isEq(lastLevel, level)) {\n            return null;\n          }\n          if (data[index]) {\n            data[index].beforeBookmark = beforeBookmark;\n          }\n          if (settings.custom_undo_redo_levels) {\n            if (data.length > settings.custom_undo_redo_levels) {\n              for (i = 0; i < data.length - 1; i++) {\n                data[i] = data[i + 1];\n              }\n              data.length--;\n              index = data.length;\n            }\n          }\n          level.bookmark = GetBookmark.getUndoBookmark(editor.selection);\n          if (index < data.length - 1) {\n            data.length = index + 1;\n          }\n          data.push(level);\n          index = data.length - 1;\n          var args = {\n            level: level,\n            lastLevel: lastLevel,\n            originalEvent: event\n          };\n          editor.fire('AddUndo', args);\n          if (index > 0) {\n            setDirty(true);\n            editor.fire('change', args);\n          }\n          return level;\n        },\n        undo: function () {\n          var level;\n          if (self.typing) {\n            self.add();\n            self.typing = false;\n            setTyping(false);\n          }\n          if (index > 0) {\n            level = data[--index];\n            Levels.applyToEditor(editor, level, true);\n            setDirty(true);\n            editor.fire('undo', { level: level });\n          }\n          return level;\n        },\n        redo: function () {\n          var level;\n          if (index < data.length - 1) {\n            level = data[++index];\n            Levels.applyToEditor(editor, level, false);\n            setDirty(true);\n            editor.fire('redo', { level: level });\n          }\n          return level;\n        },\n        clear: function () {\n          data = [];\n          index = 0;\n          self.typing = false;\n          self.data = data;\n          editor.fire('ClearUndos');\n        },\n        hasUndo: function () {\n          return index > 0 || self.typing && data[0] && !Levels.isEq(Levels.createFromEditor(editor), data[0]);\n        },\n        hasRedo: function () {\n          return index < data.length - 1 && !self.typing;\n        },\n        transact: function (callback) {\n          endTyping();\n          self.beforeChange();\n          self.ignore(callback);\n          return self.add();\n        },\n        ignore: function (callback) {\n          try {\n            locks++;\n            callback();\n          } finally {\n            locks--;\n          }\n        },\n        extra: function (callback1, callback2) {\n          var lastLevel, bookmark;\n          if (self.transact(callback1)) {\n            bookmark = data[index].bookmark;\n            lastLevel = data[index - 1];\n            Levels.applyToEditor(editor, lastLevel, true);\n            if (self.transact(callback2)) {\n              data[index - 1].beforeBookmark = bookmark;\n            }\n          }\n        }\n      };\n      return self;\n    }\n\n    var isEq$4 = FormatUtils.isEq;\n    var matchesUnInheritedFormatSelector = function (ed, node, name) {\n      var formatList = ed.formatter.get(name);\n      if (formatList) {\n        for (var i = 0; i < formatList.length; i++) {\n          if (formatList[i].inherit === false && ed.dom.is(node, formatList[i].selector)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    };\n    var matchParents = function (editor, node, name, vars) {\n      var root = editor.dom.getRoot();\n      if (node === root) {\n        return false;\n      }\n      node = editor.dom.getParent(node, function (node) {\n        if (matchesUnInheritedFormatSelector(editor, node, name)) {\n          return true;\n        }\n        return node.parentNode === root || !!matchNode(editor, node, name, vars, true);\n      });\n      return matchNode(editor, node, name, vars);\n    };\n    var matchName = function (dom, node, format) {\n      if (isEq$4(node, format.inline)) {\n        return true;\n      }\n      if (isEq$4(node, format.block)) {\n        return true;\n      }\n      if (format.selector) {\n        return node.nodeType === 1 && dom.is(node, format.selector);\n      }\n    };\n    var matchItems = function (dom, node, format, itemName, similar, vars) {\n      var key, value;\n      var items = format[itemName];\n      var i;\n      if (format.onmatch) {\n        return format.onmatch(node, format, itemName);\n      }\n      if (items) {\n        if (typeof items.length === 'undefined') {\n          for (key in items) {\n            if (items.hasOwnProperty(key)) {\n              if (itemName === 'attributes') {\n                value = dom.getAttrib(node, key);\n              } else {\n                value = FormatUtils.getStyle(dom, node, key);\n              }\n              if (similar && !value && !format.exact) {\n                return;\n              }\n              if ((!similar || format.exact) && !isEq$4(value, FormatUtils.normalizeStyleValue(dom, FormatUtils.replaceVars(items[key], vars), key))) {\n                return;\n              }\n            }\n          }\n        } else {\n          for (i = 0; i < items.length; i++) {\n            if (itemName === 'attributes' ? dom.getAttrib(node, items[i]) : FormatUtils.getStyle(dom, node, items[i])) {\n              return format;\n            }\n          }\n        }\n      }\n      return format;\n    };\n    var matchNode = function (ed, node, name, vars, similar) {\n      var formatList = ed.formatter.get(name);\n      var format, i, x, classes;\n      var dom = ed.dom;\n      if (formatList && node) {\n        for (i = 0; i < formatList.length; i++) {\n          format = formatList[i];\n          if (matchName(ed.dom, node, format) && matchItems(dom, node, format, 'attributes', similar, vars) && matchItems(dom, node, format, 'styles', similar, vars)) {\n            if (classes = format.classes) {\n              for (x = 0; x < classes.length; x++) {\n                if (!ed.dom.hasClass(node, classes[x])) {\n                  return;\n                }\n              }\n            }\n            return format;\n          }\n        }\n      }\n    };\n    var match = function (editor, name, vars, node) {\n      var startNode;\n      if (node) {\n        return matchParents(editor, node, name, vars);\n      }\n      node = editor.selection.getNode();\n      if (matchParents(editor, node, name, vars)) {\n        return true;\n      }\n      startNode = editor.selection.getStart();\n      if (startNode !== node) {\n        if (matchParents(editor, startNode, name, vars)) {\n          return true;\n        }\n      }\n      return false;\n    };\n    var matchAll = function (editor, names, vars) {\n      var startElement;\n      var matchedFormatNames = [];\n      var checkedMap = {};\n      startElement = editor.selection.getStart();\n      editor.dom.getParent(startElement, function (node) {\n        var i, name;\n        for (i = 0; i < names.length; i++) {\n          name = names[i];\n          if (!checkedMap[name] && matchNode(editor, node, name, vars)) {\n            checkedMap[name] = true;\n            matchedFormatNames.push(name);\n          }\n        }\n      }, editor.dom.getRoot());\n      return matchedFormatNames;\n    };\n    var canApply = function (editor, name) {\n      var formatList = editor.formatter.get(name);\n      var startNode, parents, i, x, selector;\n      var dom = editor.dom;\n      if (formatList) {\n        startNode = editor.selection.getStart();\n        parents = FormatUtils.getParents(dom, startNode);\n        for (x = formatList.length - 1; x >= 0; x--) {\n          selector = formatList[x].selector;\n          if (!selector || formatList[x].defaultBlock) {\n            return true;\n          }\n          for (i = parents.length - 1; i >= 0; i--) {\n            if (dom.is(parents[i], selector)) {\n              return true;\n            }\n          }\n        }\n      }\n      return false;\n    };\n    var MatchFormat = {\n      matchNode: matchNode,\n      matchName: matchName,\n      match: match,\n      matchAll: matchAll,\n      canApply: canApply,\n      matchesUnInheritedFormatSelector: matchesUnInheritedFormatSelector\n    };\n\n    var splitText = function (node, offset) {\n      return node.splitText(offset);\n    };\n    var split$1 = function (rng) {\n      var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset;\n      if (startContainer === endContainer && NodeType.isText(startContainer)) {\n        if (startOffset > 0 && startOffset < startContainer.nodeValue.length) {\n          endContainer = splitText(startContainer, startOffset);\n          startContainer = endContainer.previousSibling;\n          if (endOffset > startOffset) {\n            endOffset = endOffset - startOffset;\n            startContainer = endContainer = splitText(endContainer, endOffset).previousSibling;\n            endOffset = endContainer.nodeValue.length;\n            startOffset = 0;\n          } else {\n            endOffset = 0;\n          }\n        }\n      } else {\n        if (NodeType.isText(startContainer) && startOffset > 0 && startOffset < startContainer.nodeValue.length) {\n          startContainer = splitText(startContainer, startOffset);\n          startOffset = 0;\n        }\n        if (NodeType.isText(endContainer) && endOffset > 0 && endOffset < endContainer.nodeValue.length) {\n          endContainer = splitText(endContainer, endOffset).previousSibling;\n          endOffset = endContainer.nodeValue.length;\n        }\n      }\n      return {\n        startContainer: startContainer,\n        startOffset: startOffset,\n        endContainer: endContainer,\n        endOffset: endOffset\n      };\n    };\n    var SplitRange = { split: split$1 };\n\n    var ZWSP$1 = Zwsp.ZWSP, CARET_ID$1 = '_mce_caret';\n    var importNode = function (ownerDocument, node) {\n      return ownerDocument.importNode(node, true);\n    };\n    var getEmptyCaretContainers = function (node) {\n      var nodes = [];\n      while (node) {\n        if (node.nodeType === 3 && node.nodeValue !== ZWSP$1 || node.childNodes.length > 1) {\n          return [];\n        }\n        if (node.nodeType === 1) {\n          nodes.push(node);\n        }\n        node = node.firstChild;\n      }\n      return nodes;\n    };\n    var isCaretContainerEmpty = function (node) {\n      return getEmptyCaretContainers(node).length > 0;\n    };\n    var findFirstTextNode = function (node) {\n      var walker;\n      if (node) {\n        walker = new TreeWalker(node, node);\n        for (node = walker.current(); node; node = walker.next()) {\n          if (node.nodeType === 3) {\n            return node;\n          }\n        }\n      }\n      return null;\n    };\n    var createCaretContainer = function (fill) {\n      var caretContainer = Element$$1.fromTag('span');\n      setAll(caretContainer, {\n        'id': CARET_ID$1,\n        'data-mce-bogus': '1',\n        'data-mce-type': 'format-caret'\n      });\n      if (fill) {\n        append(caretContainer, Element$$1.fromText(ZWSP$1));\n      }\n      return caretContainer;\n    };\n    var trimZwspFromCaretContainer = function (caretContainerNode) {\n      var textNode = findFirstTextNode(caretContainerNode);\n      if (textNode && textNode.nodeValue.charAt(0) === ZWSP$1) {\n        textNode.deleteData(0, 1);\n      }\n      return textNode;\n    };\n    var removeCaretContainerNode = function (editor, node, moveCaret) {\n      if (moveCaret === void 0) {\n        moveCaret = true;\n      }\n      var dom = editor.dom, selection = editor.selection;\n      if (isCaretContainerEmpty(node)) {\n        DeleteElement.deleteElement(editor, false, Element$$1.fromDom(node), moveCaret);\n      } else {\n        var rng = selection.getRng();\n        var block = dom.getParent(node, dom.isBlock);\n        var textNode = trimZwspFromCaretContainer(node);\n        if (rng.startContainer === textNode && rng.startOffset > 0) {\n          rng.setStart(textNode, rng.startOffset - 1);\n        }\n        if (rng.endContainer === textNode && rng.endOffset > 0) {\n          rng.setEnd(textNode, rng.endOffset - 1);\n        }\n        dom.remove(node, true);\n        if (block && dom.isEmpty(block)) {\n          PaddingBr.fillWithPaddingBr(Element$$1.fromDom(block));\n        }\n        selection.setRng(rng);\n      }\n    };\n    var removeCaretContainer = function (editor, node, moveCaret) {\n      if (moveCaret === void 0) {\n        moveCaret = true;\n      }\n      var dom = editor.dom, selection = editor.selection;\n      if (!node) {\n        node = getParentCaretContainer(editor.getBody(), selection.getStart());\n        if (!node) {\n          while (node = dom.get(CARET_ID$1)) {\n            removeCaretContainerNode(editor, node, false);\n          }\n        }\n      } else {\n        removeCaretContainerNode(editor, node, moveCaret);\n      }\n    };\n    var insertCaretContainerNode = function (editor, caretContainer, formatNode) {\n      var dom = editor.dom, block = dom.getParent(formatNode, curry(FormatUtils.isTextBlock, editor));\n      if (block && dom.isEmpty(block)) {\n        formatNode.parentNode.replaceChild(caretContainer, formatNode);\n      } else {\n        PaddingBr.removeTrailingBr(Element$$1.fromDom(formatNode));\n        if (dom.isEmpty(formatNode)) {\n          formatNode.parentNode.replaceChild(caretContainer, formatNode);\n        } else {\n          dom.insertAfter(caretContainer, formatNode);\n        }\n      }\n    };\n    var appendNode = function (parentNode, node) {\n      parentNode.appendChild(node);\n      return node;\n    };\n    var insertFormatNodesIntoCaretContainer = function (formatNodes, caretContainer) {\n      var innerMostFormatNode = foldr(formatNodes, function (parentNode, formatNode) {\n        return appendNode(parentNode, formatNode.cloneNode(false));\n      }, caretContainer);\n      return appendNode(innerMostFormatNode, innerMostFormatNode.ownerDocument.createTextNode(ZWSP$1));\n    };\n    var applyCaretFormat = function (editor, name$$1, vars) {\n      var rng, caretContainer, textNode, offset, bookmark, container, text;\n      var selection = editor.selection;\n      rng = selection.getRng(true);\n      offset = rng.startOffset;\n      container = rng.startContainer;\n      text = container.nodeValue;\n      caretContainer = getParentCaretContainer(editor.getBody(), selection.getStart());\n      if (caretContainer) {\n        textNode = findFirstTextNode(caretContainer);\n      }\n      var wordcharRegex = /[^\\s\\u00a0\\u00ad\\u200b\\ufeff]/;\n      if (text && offset > 0 && offset < text.length && wordcharRegex.test(text.charAt(offset)) && wordcharRegex.test(text.charAt(offset - 1))) {\n        bookmark = selection.getBookmark();\n        rng.collapse(true);\n        rng = ExpandRange.expandRng(editor, rng, editor.formatter.get(name$$1));\n        rng = SplitRange.split(rng);\n        editor.formatter.apply(name$$1, vars, rng);\n        selection.moveToBookmark(bookmark);\n      } else {\n        if (!caretContainer || textNode.nodeValue !== ZWSP$1) {\n          caretContainer = importNode(editor.getDoc(), createCaretContainer(true).dom());\n          textNode = caretContainer.firstChild;\n          rng.insertNode(caretContainer);\n          offset = 1;\n          editor.formatter.apply(name$$1, vars, caretContainer);\n        } else {\n          editor.formatter.apply(name$$1, vars, caretContainer);\n        }\n        selection.setCursorLocation(textNode, offset);\n      }\n    };\n    var removeCaretFormat = function (editor, name$$1, vars, similar) {\n      var dom = editor.dom, selection = editor.selection;\n      var container, offset, bookmark;\n      var hasContentAfter, node, formatNode;\n      var parents = [], rng = selection.getRng();\n      var caretContainer;\n      container = rng.startContainer;\n      offset = rng.startOffset;\n      node = container;\n      if (container.nodeType === 3) {\n        if (offset !== container.nodeValue.length) {\n          hasContentAfter = true;\n        }\n        node = node.parentNode;\n      }\n      while (node) {\n        if (MatchFormat.matchNode(editor, node, name$$1, vars, similar)) {\n          formatNode = node;\n          break;\n        }\n        if (node.nextSibling) {\n          hasContentAfter = true;\n        }\n        parents.push(node);\n        node = node.parentNode;\n      }\n      if (!formatNode) {\n        return;\n      }\n      if (hasContentAfter) {\n        bookmark = selection.getBookmark();\n        rng.collapse(true);\n        var expandedRng = ExpandRange.expandRng(editor, rng, editor.formatter.get(name$$1), true);\n        expandedRng = SplitRange.split(expandedRng);\n        editor.formatter.remove(name$$1, vars, expandedRng);\n        selection.moveToBookmark(bookmark);\n      } else {\n        caretContainer = getParentCaretContainer(editor.getBody(), formatNode);\n        var newCaretContainer = createCaretContainer(false).dom();\n        var caretNode = insertFormatNodesIntoCaretContainer(parents, newCaretContainer);\n        if (caretContainer) {\n          insertCaretContainerNode(editor, newCaretContainer, caretContainer);\n        } else {\n          insertCaretContainerNode(editor, newCaretContainer, formatNode);\n        }\n        removeCaretContainerNode(editor, caretContainer, false);\n        selection.setCursorLocation(caretNode, 1);\n        if (dom.isEmpty(formatNode)) {\n          dom.remove(formatNode);\n        }\n      }\n    };\n    var disableCaretContainer = function (editor, keyCode) {\n      var selection = editor.selection, body = editor.getBody();\n      removeCaretContainer(editor, null, false);\n      if ((keyCode === 8 || keyCode === 46) && selection.isCollapsed() && selection.getStart().innerHTML === ZWSP$1) {\n        removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart()));\n      }\n      if (keyCode === 37 || keyCode === 39) {\n        removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart()));\n      }\n    };\n    var setup$4 = function (editor) {\n      editor.on('mouseup keydown', function (e) {\n        disableCaretContainer(editor, e.keyCode);\n      });\n    };\n    var replaceWithCaretFormat = function (targetNode, formatNodes) {\n      var caretContainer = createCaretContainer(false);\n      var innerMost = insertFormatNodesIntoCaretContainer(formatNodes, caretContainer.dom());\n      before(Element$$1.fromDom(targetNode), caretContainer);\n      remove$2(Element$$1.fromDom(targetNode));\n      return CaretPosition$1(innerMost, 0);\n    };\n    var isFormatElement = function (editor, element) {\n      var inlineElements = editor.schema.getTextInlineElements();\n      return inlineElements.hasOwnProperty(name(element)) && !isCaretNode(element.dom()) && !NodeType.isBogus(element.dom());\n    };\n    var isEmptyCaretFormatElement = function (element) {\n      return isCaretNode(element.dom()) && isCaretContainerEmpty(element.dom());\n    };\n\n    var postProcessHooks = {}, filter$2 = ArrUtils.filter, each$c = ArrUtils.each;\n    var addPostProcessHook = function (name, hook) {\n      var hooks = postProcessHooks[name];\n      if (!hooks) {\n        postProcessHooks[name] = hooks = [];\n      }\n      postProcessHooks[name].push(hook);\n    };\n    var postProcess = function (name, editor) {\n      each$c(postProcessHooks[name], function (hook) {\n        hook(editor);\n      });\n    };\n    addPostProcessHook('pre', function (editor) {\n      var rng = editor.selection.getRng();\n      var isPre, blocks;\n      var hasPreSibling = function (pre) {\n        return isPre(pre.previousSibling) && ArrUtils.indexOf(blocks, pre.previousSibling) !== -1;\n      };\n      var joinPre = function (pre1, pre2) {\n        DomQuery(pre2).remove();\n        DomQuery(pre1).append('<br><br>').append(pre2.childNodes);\n      };\n      isPre = NodeType.matchNodeNames('pre');\n      if (!rng.collapsed) {\n        blocks = editor.selection.getSelectedBlocks();\n        each$c(filter$2(filter$2(blocks, isPre), hasPreSibling), function (pre) {\n          joinPre(pre.previousSibling, pre);\n        });\n      }\n    });\n    var Hooks = { postProcess: postProcess };\n\n    var MCE_ATTR_RE = /^(src|href|style)$/;\n    var each$d = Tools.each;\n    var isEq$5 = FormatUtils.isEq;\n    var isTableCell$4 = function (node) {\n      return /^(TH|TD)$/.test(node.nodeName);\n    };\n    var isChildOfInlineParent = function (dom, node, parent$$1) {\n      return dom.isChildOf(node, parent$$1) && node !== parent$$1 && !dom.isBlock(parent$$1);\n    };\n    var getContainer = function (ed, rng, start) {\n      var container, offset, lastIdx;\n      container = rng[start ? 'startContainer' : 'endContainer'];\n      offset = rng[start ? 'startOffset' : 'endOffset'];\n      if (NodeType.isElement(container)) {\n        lastIdx = container.childNodes.length - 1;\n        if (!start && offset) {\n          offset--;\n        }\n        container = container.childNodes[offset > lastIdx ? lastIdx : offset];\n      }\n      if (NodeType.isText(container) && start && offset >= container.nodeValue.length) {\n        container = new TreeWalker(container, ed.getBody()).next() || container;\n      }\n      if (NodeType.isText(container) && !start && offset === 0) {\n        container = new TreeWalker(container, ed.getBody()).prev() || container;\n      }\n      return container;\n    };\n    var wrap$2 = function (dom, node, name, attrs) {\n      var wrapper = dom.create(name, attrs);\n      node.parentNode.insertBefore(wrapper, node);\n      wrapper.appendChild(node);\n      return wrapper;\n    };\n    var wrapWithSiblings = function (dom, node, next, name, attrs) {\n      var start = Element$$1.fromDom(node);\n      var wrapper = Element$$1.fromDom(dom.create(name, attrs));\n      var siblings$$1 = next ? nextSiblings(start) : prevSiblings(start);\n      append$1(wrapper, siblings$$1);\n      if (next) {\n        before(start, wrapper);\n        prepend(wrapper, start);\n      } else {\n        after(start, wrapper);\n        append(wrapper, start);\n      }\n      return wrapper.dom();\n    };\n    var matchName$1 = function (dom, node, format) {\n      if (isEq$5(node, format.inline)) {\n        return true;\n      }\n      if (isEq$5(node, format.block)) {\n        return true;\n      }\n      if (format.selector) {\n        return NodeType.isElement(node) && dom.is(node, format.selector);\n      }\n    };\n    var isColorFormatAndAnchor = function (node, format) {\n      return format.links && node.tagName === 'A';\n    };\n    var find$4 = function (dom, node, next, inc) {\n      node = FormatUtils.getNonWhiteSpaceSibling(node, next, inc);\n      return !node || (node.nodeName === 'BR' || dom.isBlock(node));\n    };\n    var removeNode$1 = function (ed, node, format) {\n      var parentNode = node.parentNode;\n      var rootBlockElm;\n      var dom = ed.dom, forcedRootBlock = ed.settings.forced_root_block;\n      if (format.block) {\n        if (!forcedRootBlock) {\n          if (dom.isBlock(node) && !dom.isBlock(parentNode)) {\n            if (!find$4(dom, node, false) && !find$4(dom, node.firstChild, true, 1)) {\n              node.insertBefore(dom.create('br'), node.firstChild);\n            }\n            if (!find$4(dom, node, true) && !find$4(dom, node.lastChild, false, 1)) {\n              node.appendChild(dom.create('br'));\n            }\n          }\n        } else {\n          if (parentNode === dom.getRoot()) {\n            if (!format.list_block || !isEq$5(node, format.list_block)) {\n              each$d(Tools.grep(node.childNodes), function (node) {\n                if (FormatUtils.isValid(ed, forcedRootBlock, node.nodeName.toLowerCase())) {\n                  if (!rootBlockElm) {\n                    rootBlockElm = wrap$2(dom, node, forcedRootBlock);\n                    dom.setAttribs(rootBlockElm, ed.settings.forced_root_block_attrs);\n                  } else {\n                    rootBlockElm.appendChild(node);\n                  }\n                } else {\n                  rootBlockElm = 0;\n                }\n              });\n            }\n          }\n        }\n      }\n      if (format.selector && format.inline && !isEq$5(format.inline, node)) {\n        return;\n      }\n      dom.remove(node, 1);\n    };\n    var removeFormat = function (ed, format, vars, node, compareNode) {\n      var i, attrs, stylesModified;\n      var dom = ed.dom;\n      if (!matchName$1(dom, node, format) && !isColorFormatAndAnchor(node, format)) {\n        return false;\n      }\n      if (format.remove !== 'all') {\n        each$d(format.styles, function (value, name) {\n          value = FormatUtils.normalizeStyleValue(dom, FormatUtils.replaceVars(value, vars), name);\n          if (typeof name === 'number') {\n            name = value;\n            compareNode = 0;\n          }\n          if (format.remove_similar || (!compareNode || isEq$5(FormatUtils.getStyle(dom, compareNode, name), value))) {\n            dom.setStyle(node, name, '');\n          }\n          stylesModified = 1;\n        });\n        if (stylesModified && dom.getAttrib(node, 'style') === '') {\n          node.removeAttribute('style');\n          node.removeAttribute('data-mce-style');\n        }\n        each$d(format.attributes, function (value, name) {\n          var valueOut;\n          value = FormatUtils.replaceVars(value, vars);\n          if (typeof name === 'number') {\n            name = value;\n            compareNode = 0;\n          }\n          if (!compareNode || isEq$5(dom.getAttrib(compareNode, name), value)) {\n            if (name === 'class') {\n              value = dom.getAttrib(node, name);\n              if (value) {\n                valueOut = '';\n                each$d(value.split(/\\s+/), function (cls) {\n                  if (/mce\\-\\w+/.test(cls)) {\n                    valueOut += (valueOut ? ' ' : '') + cls;\n                  }\n                });\n                if (valueOut) {\n                  dom.setAttrib(node, name, valueOut);\n                  return;\n                }\n              }\n            }\n            if (name === 'class') {\n              node.removeAttribute('className');\n            }\n            if (MCE_ATTR_RE.test(name)) {\n              node.removeAttribute('data-mce-' + name);\n            }\n            node.removeAttribute(name);\n          }\n        });\n        each$d(format.classes, function (value) {\n          value = FormatUtils.replaceVars(value, vars);\n          if (!compareNode || dom.hasClass(compareNode, value)) {\n            dom.removeClass(node, value);\n          }\n        });\n        attrs = dom.getAttribs(node);\n        for (i = 0; i < attrs.length; i++) {\n          var attrName = attrs[i].nodeName;\n          if (attrName.indexOf('_') !== 0 && attrName.indexOf('data-') !== 0) {\n            return false;\n          }\n        }\n      }\n      if (format.remove !== 'none') {\n        removeNode$1(ed, node, format);\n        return true;\n      }\n    };\n    var findFormatRoot = function (editor, container, name, vars, similar) {\n      var formatRoot;\n      each$d(FormatUtils.getParents(editor.dom, container.parentNode).reverse(), function (parent$$1) {\n        var format;\n        if (!formatRoot && parent$$1.id !== '_start' && parent$$1.id !== '_end') {\n          format = MatchFormat.matchNode(editor, parent$$1, name, vars, similar);\n          if (format && format.split !== false) {\n            formatRoot = parent$$1;\n          }\n        }\n      });\n      return formatRoot;\n    };\n    var wrapAndSplit = function (editor, formatList, formatRoot, container, target, split, format, vars) {\n      var parent$$1, clone, lastClone, firstClone, i, formatRootParent;\n      var dom = editor.dom;\n      if (formatRoot) {\n        formatRootParent = formatRoot.parentNode;\n        for (parent$$1 = container.parentNode; parent$$1 && parent$$1 !== formatRootParent; parent$$1 = parent$$1.parentNode) {\n          clone = dom.clone(parent$$1, false);\n          for (i = 0; i < formatList.length; i++) {\n            if (removeFormat(editor, formatList[i], vars, clone, clone)) {\n              clone = 0;\n              break;\n            }\n          }\n          if (clone) {\n            if (lastClone) {\n              clone.appendChild(lastClone);\n            }\n            if (!firstClone) {\n              firstClone = clone;\n            }\n            lastClone = clone;\n          }\n        }\n        if (split && (!format.mixed || !dom.isBlock(formatRoot))) {\n          container = dom.split(formatRoot, container);\n        }\n        if (lastClone) {\n          target.parentNode.insertBefore(lastClone, target);\n          firstClone.appendChild(target);\n        }\n      }\n      return container;\n    };\n    var remove$8 = function (ed, name, vars, node, similar) {\n      var formatList = ed.formatter.get(name), format = formatList[0];\n      var bookmark, rng, contentEditable = true;\n      var dom = ed.dom;\n      var selection = ed.selection;\n      var splitToFormatRoot = function (container) {\n        var formatRoot = findFormatRoot(ed, container, name, vars, similar);\n        return wrapAndSplit(ed, formatList, formatRoot, container, container, true, format, vars);\n      };\n      var isRemoveBookmarkNode = function (node) {\n        return Bookmarks.isBookmarkNode(node) && NodeType.isElement(node) && (node.id === '_start' || node.id === '_end');\n      };\n      var process = function (node) {\n        var children$$1, i, l, lastContentEditable, hasContentEditableState;\n        if (NodeType.isElement(node) && dom.getContentEditable(node)) {\n          lastContentEditable = contentEditable;\n          contentEditable = dom.getContentEditable(node) === 'true';\n          hasContentEditableState = true;\n        }\n        children$$1 = Tools.grep(node.childNodes);\n        if (contentEditable && !hasContentEditableState) {\n          for (i = 0, l = formatList.length; i < l; i++) {\n            if (removeFormat(ed, formatList[i], vars, node, node)) {\n              break;\n            }\n          }\n        }\n        if (format.deep) {\n          if (children$$1.length) {\n            for (i = 0, l = children$$1.length; i < l; i++) {\n              process(children$$1[i]);\n            }\n            if (hasContentEditableState) {\n              contentEditable = lastContentEditable;\n            }\n          }\n        }\n      };\n      var unwrap = function (start) {\n        var node = dom.get(start ? '_start' : '_end');\n        var out = node[start ? 'firstChild' : 'lastChild'];\n        if (isRemoveBookmarkNode(out)) {\n          out = out[start ? 'firstChild' : 'lastChild'];\n        }\n        if (NodeType.isText(out) && out.data.length === 0) {\n          out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling;\n        }\n        dom.remove(node, true);\n        return out;\n      };\n      var removeRngStyle = function (rng) {\n        var startContainer, endContainer;\n        var commonAncestorContainer = rng.commonAncestorContainer;\n        rng = ExpandRange.expandRng(ed, rng, formatList, true);\n        if (format.split) {\n          rng = SplitRange.split(rng);\n          startContainer = getContainer(ed, rng, true);\n          endContainer = getContainer(ed, rng);\n          if (startContainer !== endContainer) {\n            if (/^(TR|TH|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) {\n              if (startContainer.nodeName === 'TR') {\n                startContainer = startContainer.firstChild.firstChild || startContainer;\n              } else {\n                startContainer = startContainer.firstChild || startContainer;\n              }\n            }\n            if (commonAncestorContainer && /^T(HEAD|BODY|FOOT|R)$/.test(commonAncestorContainer.nodeName) && isTableCell$4(endContainer) && endContainer.firstChild) {\n              endContainer = endContainer.firstChild || endContainer;\n            }\n            if (isChildOfInlineParent(dom, startContainer, endContainer)) {\n              var marker = Option.from(startContainer.firstChild).getOr(startContainer);\n              splitToFormatRoot(wrapWithSiblings(dom, marker, true, 'span', {\n                'id': '_start',\n                'data-mce-type': 'bookmark'\n              }));\n              unwrap(true);\n              return;\n            }\n            if (isChildOfInlineParent(dom, endContainer, startContainer)) {\n              var marker = Option.from(endContainer.lastChild).getOr(endContainer);\n              splitToFormatRoot(wrapWithSiblings(dom, marker, false, 'span', {\n                'id': '_end',\n                'data-mce-type': 'bookmark'\n              }));\n              unwrap(false);\n              return;\n            }\n            startContainer = wrap$2(dom, startContainer, 'span', {\n              'id': '_start',\n              'data-mce-type': 'bookmark'\n            });\n            endContainer = wrap$2(dom, endContainer, 'span', {\n              'id': '_end',\n              'data-mce-type': 'bookmark'\n            });\n            splitToFormatRoot(startContainer);\n            splitToFormatRoot(endContainer);\n            startContainer = unwrap(true);\n            endContainer = unwrap();\n          } else {\n            startContainer = endContainer = splitToFormatRoot(startContainer);\n          }\n          rng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer;\n          rng.startOffset = dom.nodeIndex(startContainer);\n          rng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer;\n          rng.endOffset = dom.nodeIndex(endContainer) + 1;\n        }\n        RangeWalk.walk(dom, rng, function (nodes) {\n          each$d(nodes, function (node) {\n            process(node);\n            if (NodeType.isElement(node) && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && FormatUtils.getTextDecoration(dom, node.parentNode) === 'underline') {\n              removeFormat(ed, {\n                deep: false,\n                exact: true,\n                inline: 'span',\n                styles: { textDecoration: 'underline' }\n              }, null, node);\n            }\n          });\n        });\n      };\n      if (node) {\n        if (node.nodeType) {\n          rng = dom.createRng();\n          rng.setStartBefore(node);\n          rng.setEndAfter(node);\n          removeRngStyle(rng);\n        } else {\n          removeRngStyle(node);\n        }\n        return;\n      }\n      if (dom.getContentEditable(selection.getNode()) === 'false') {\n        node = selection.getNode();\n        for (var i = 0, l = formatList.length; i < l; i++) {\n          if (formatList[i].ceFalseOverride) {\n            if (removeFormat(ed, formatList[i], vars, node, node)) {\n              break;\n            }\n          }\n        }\n        return;\n      }\n      if (!selection.isCollapsed() || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) {\n        bookmark = GetBookmark.getPersistentBookmark(ed.selection, true);\n        removeRngStyle(selection.getRng());\n        selection.moveToBookmark(bookmark);\n        if (format.inline && MatchFormat.match(ed, name, vars, selection.getStart())) {\n          FormatUtils.moveStart(dom, selection, selection.getRng());\n        }\n        ed.nodeChanged();\n      } else {\n        removeCaretFormat(ed, name, vars, similar);\n      }\n    };\n    var RemoveFormat = {\n      removeFormat: removeFormat,\n      remove: remove$8\n    };\n\n    var each$e = Tools.each;\n    var isElementNode = function (node) {\n      return node && node.nodeType === 1 && !Bookmarks.isBookmarkNode(node) && !isCaretNode(node) && !NodeType.isBogus(node);\n    };\n    var findElementSibling = function (node, siblingName) {\n      var sibling;\n      for (sibling = node; sibling; sibling = sibling[siblingName]) {\n        if (sibling.nodeType === 3 && sibling.nodeValue.length !== 0) {\n          return node;\n        }\n        if (sibling.nodeType === 1 && !Bookmarks.isBookmarkNode(sibling)) {\n          return sibling;\n        }\n      }\n      return node;\n    };\n    var mergeSiblingsNodes = function (dom, prev, next) {\n      var sibling, tmpSibling;\n      var elementUtils = new ElementUtils(dom);\n      if (prev && next) {\n        prev = findElementSibling(prev, 'previousSibling');\n        next = findElementSibling(next, 'nextSibling');\n        if (elementUtils.compare(prev, next)) {\n          for (sibling = prev.nextSibling; sibling && sibling !== next;) {\n            tmpSibling = sibling;\n            sibling = sibling.nextSibling;\n            prev.appendChild(tmpSibling);\n          }\n          dom.remove(next);\n          Tools.each(Tools.grep(next.childNodes), function (node) {\n            prev.appendChild(node);\n          });\n          return prev;\n        }\n      }\n      return next;\n    };\n    var processChildElements = function (node, filter, process) {\n      each$e(node.childNodes, function (node) {\n        if (isElementNode(node)) {\n          if (filter(node)) {\n            process(node);\n          }\n          if (node.hasChildNodes()) {\n            processChildElements(node, filter, process);\n          }\n        }\n      });\n    };\n    var hasStyle = function (dom, name) {\n      return curry(function (name, node) {\n        return !!(node && FormatUtils.getStyle(dom, node, name));\n      }, name);\n    };\n    var applyStyle = function (dom, name, value) {\n      return curry(function (name, value, node) {\n        dom.setStyle(node, name, value);\n        if (node.getAttribute('style') === '') {\n          node.removeAttribute('style');\n        }\n        unwrapEmptySpan(dom, node);\n      }, name, value);\n    };\n    var unwrapEmptySpan = function (dom, node) {\n      if (node.nodeName === 'SPAN' && dom.getAttribs(node).length === 0) {\n        dom.remove(node, true);\n      }\n    };\n    var processUnderlineAndColor = function (dom, node) {\n      var textDecoration;\n      if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) {\n        textDecoration = FormatUtils.getTextDecoration(dom, node.parentNode);\n        if (dom.getStyle(node, 'color') && textDecoration) {\n          dom.setStyle(node, 'text-decoration', textDecoration);\n        } else if (dom.getStyle(node, 'text-decoration') === textDecoration) {\n          dom.setStyle(node, 'text-decoration', null);\n        }\n      }\n    };\n    var mergeUnderlineAndColor = function (dom, format, vars, node) {\n      if (format.styles.color || format.styles.textDecoration) {\n        Tools.walk(node, curry(processUnderlineAndColor, dom), 'childNodes');\n        processUnderlineAndColor(dom, node);\n      }\n    };\n    var mergeBackgroundColorAndFontSize = function (dom, format, vars, node) {\n      if (format.styles && format.styles.backgroundColor) {\n        processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'backgroundColor', FormatUtils.replaceVars(format.styles.backgroundColor, vars)));\n      }\n    };\n    var mergeSubSup = function (dom, format, vars, node) {\n      if (format.inline === 'sub' || format.inline === 'sup') {\n        processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'fontSize', ''));\n        dom.remove(dom.select(format.inline === 'sup' ? 'sub' : 'sup', node), true);\n      }\n    };\n    var mergeSiblings = function (dom, format, vars, node) {\n      if (node && format.merge_siblings !== false) {\n        node = mergeSiblingsNodes(dom, FormatUtils.getNonWhiteSpaceSibling(node), node);\n        node = mergeSiblingsNodes(dom, node, FormatUtils.getNonWhiteSpaceSibling(node, true));\n      }\n    };\n    var clearChildStyles = function (dom, format, node) {\n      if (format.clear_child_styles) {\n        var selector = format.links ? '*:not(a)' : '*';\n        each$e(dom.select(selector, node), function (node) {\n          if (isElementNode(node)) {\n            each$e(format.styles, function (value, name) {\n              dom.setStyle(node, name, '');\n            });\n          }\n        });\n      }\n    };\n    var mergeWithChildren = function (editor, formatList, vars, node) {\n      each$e(formatList, function (format) {\n        each$e(editor.dom.select(format.inline, node), function (child) {\n          if (!isElementNode(child)) {\n            return;\n          }\n          RemoveFormat.removeFormat(editor, format, vars, child, format.exact ? child : null);\n        });\n        clearChildStyles(editor.dom, format, node);\n      });\n    };\n    var mergeWithParents = function (editor, format, name, vars, node) {\n      if (MatchFormat.matchNode(editor, node.parentNode, name, vars)) {\n        if (RemoveFormat.removeFormat(editor, format, vars, node)) {\n          return;\n        }\n      }\n      if (format.merge_with_parents) {\n        editor.dom.getParent(node.parentNode, function (parent) {\n          if (MatchFormat.matchNode(editor, parent, name, vars)) {\n            RemoveFormat.removeFormat(editor, format, vars, node);\n            return true;\n          }\n        });\n      }\n    };\n    var MergeFormats = {\n      mergeWithChildren: mergeWithChildren,\n      mergeUnderlineAndColor: mergeUnderlineAndColor,\n      mergeBackgroundColorAndFontSize: mergeBackgroundColorAndFontSize,\n      mergeSubSup: mergeSubSup,\n      mergeSiblings: mergeSiblings,\n      mergeWithParents: mergeWithParents\n    };\n\n    var each$f = Tools.each;\n    var isElementNode$1 = function (node) {\n      return node && node.nodeType === 1 && !Bookmarks.isBookmarkNode(node) && !isCaretNode(node) && !NodeType.isBogus(node);\n    };\n    var applyFormat = function (ed, name, vars, node) {\n      var formatList = ed.formatter.get(name);\n      var format = formatList[0];\n      var bookmark, rng;\n      var isCollapsed = !node && ed.selection.isCollapsed();\n      var dom = ed.dom, selection = ed.selection;\n      var setElementFormat = function (elm, fmt) {\n        fmt = fmt || format;\n        if (elm) {\n          if (fmt.onformat) {\n            fmt.onformat(elm, fmt, vars, node);\n          }\n          each$f(fmt.styles, function (value, name) {\n            dom.setStyle(elm, name, FormatUtils.replaceVars(value, vars));\n          });\n          if (fmt.styles) {\n            var styleVal = dom.getAttrib(elm, 'style');\n            if (styleVal) {\n              elm.setAttribute('data-mce-style', styleVal);\n            }\n          }\n          each$f(fmt.attributes, function (value, name) {\n            dom.setAttrib(elm, name, FormatUtils.replaceVars(value, vars));\n          });\n          each$f(fmt.classes, function (value) {\n            value = FormatUtils.replaceVars(value, vars);\n            if (!dom.hasClass(elm, value)) {\n              dom.addClass(elm, value);\n            }\n          });\n        }\n      };\n      var applyNodeStyle = function (formatList, node) {\n        var found = false;\n        if (!format.selector) {\n          return false;\n        }\n        each$f(formatList, function (format) {\n          if ('collapsed' in format && format.collapsed !== isCollapsed) {\n            return;\n          }\n          if (dom.is(node, format.selector) && !isCaretNode(node)) {\n            setElementFormat(node, format);\n            found = true;\n            return false;\n          }\n        });\n        return found;\n      };\n      var applyRngStyle = function (dom, rng, bookmark, nodeSpecific) {\n        var newWrappers = [];\n        var wrapName, wrapElm, contentEditable = true;\n        wrapName = format.inline || format.block;\n        wrapElm = dom.create(wrapName);\n        setElementFormat(wrapElm);\n        RangeWalk.walk(dom, rng, function (nodes) {\n          var currentWrapElm;\n          var process = function (node) {\n            var nodeName, parentName, hasContentEditableState, lastContentEditable;\n            lastContentEditable = contentEditable;\n            nodeName = node.nodeName.toLowerCase();\n            parentName = node.parentNode.nodeName.toLowerCase();\n            if (node.nodeType === 1 && dom.getContentEditable(node)) {\n              lastContentEditable = contentEditable;\n              contentEditable = dom.getContentEditable(node) === 'true';\n              hasContentEditableState = true;\n            }\n            if (FormatUtils.isEq(nodeName, 'br')) {\n              currentWrapElm = 0;\n              if (format.block) {\n                dom.remove(node);\n              }\n              return;\n            }\n            if (format.wrapper && MatchFormat.matchNode(ed, node, name, vars)) {\n              currentWrapElm = 0;\n              return;\n            }\n            if (contentEditable && !hasContentEditableState && format.block && !format.wrapper && FormatUtils.isTextBlock(ed, nodeName) && FormatUtils.isValid(ed, parentName, wrapName)) {\n              node = dom.rename(node, wrapName);\n              setElementFormat(node);\n              newWrappers.push(node);\n              currentWrapElm = 0;\n              return;\n            }\n            if (format.selector) {\n              var found = applyNodeStyle(formatList, node);\n              if (!format.inline || found) {\n                currentWrapElm = 0;\n                return;\n              }\n            }\n            if (contentEditable && !hasContentEditableState && FormatUtils.isValid(ed, wrapName, nodeName) && FormatUtils.isValid(ed, parentName, wrapName) && !(!nodeSpecific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !isCaretNode(node) && (!format.inline || !dom.isBlock(node))) {\n              if (!currentWrapElm) {\n                currentWrapElm = dom.clone(wrapElm, false);\n                node.parentNode.insertBefore(currentWrapElm, node);\n                newWrappers.push(currentWrapElm);\n              }\n              currentWrapElm.appendChild(node);\n            } else {\n              currentWrapElm = 0;\n              each$f(Tools.grep(node.childNodes), process);\n              if (hasContentEditableState) {\n                contentEditable = lastContentEditable;\n              }\n              currentWrapElm = 0;\n            }\n          };\n          each$f(nodes, process);\n        });\n        if (format.links === true) {\n          each$f(newWrappers, function (node) {\n            var process = function (node) {\n              if (node.nodeName === 'A') {\n                setElementFormat(node, format);\n              }\n              each$f(Tools.grep(node.childNodes), process);\n            };\n            process(node);\n          });\n        }\n        each$f(newWrappers, function (node) {\n          var childCount;\n          var getChildCount = function (node) {\n            var count = 0;\n            each$f(node.childNodes, function (node) {\n              if (!FormatUtils.isWhiteSpaceNode(node) && !Bookmarks.isBookmarkNode(node)) {\n                count++;\n              }\n            });\n            return count;\n          };\n          var getChildElementNode = function (root) {\n            var child = false;\n            each$f(root.childNodes, function (node) {\n              if (isElementNode$1(node)) {\n                child = node;\n                return false;\n              }\n            });\n            return child;\n          };\n          var mergeStyles = function (node) {\n            var child, clone;\n            child = getChildElementNode(node);\n            if (child && !Bookmarks.isBookmarkNode(child) && MatchFormat.matchName(dom, child, format)) {\n              clone = dom.clone(child, false);\n              setElementFormat(clone);\n              dom.replace(clone, node, true);\n              dom.remove(child, 1);\n            }\n            return clone || node;\n          };\n          childCount = getChildCount(node);\n          if ((newWrappers.length > 1 || !dom.isBlock(node)) && childCount === 0) {\n            dom.remove(node, 1);\n            return;\n          }\n          if (format.inline || format.wrapper) {\n            if (!format.exact && childCount === 1) {\n              node = mergeStyles(node);\n            }\n            MergeFormats.mergeWithChildren(ed, formatList, vars, node);\n            MergeFormats.mergeWithParents(ed, format, name, vars, node);\n            MergeFormats.mergeBackgroundColorAndFontSize(dom, format, vars, node);\n            MergeFormats.mergeSubSup(dom, format, vars, node);\n            MergeFormats.mergeSiblings(dom, format, vars, node);\n          }\n        });\n      };\n      if (dom.getContentEditable(selection.getNode()) === 'false') {\n        node = selection.getNode();\n        for (var i = 0, l = formatList.length; i < l; i++) {\n          if (formatList[i].ceFalseOverride && dom.is(node, formatList[i].selector)) {\n            setElementFormat(node, formatList[i]);\n            return;\n          }\n        }\n        return;\n      }\n      if (format) {\n        if (node) {\n          if (node.nodeType) {\n            if (!applyNodeStyle(formatList, node)) {\n              rng = dom.createRng();\n              rng.setStartBefore(node);\n              rng.setEndAfter(node);\n              applyRngStyle(dom, ExpandRange.expandRng(ed, rng, formatList), null, true);\n            }\n          } else {\n            applyRngStyle(dom, node, null, true);\n          }\n        } else {\n          if (!isCollapsed || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) {\n            var curSelNode = ed.selection.getNode();\n            if (!ed.settings.forced_root_block && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) {\n              applyFormat(ed, formatList[0].defaultBlock);\n            }\n            ed.selection.setRng(RangeNormalizer.normalize(ed.selection.getRng()));\n            bookmark = GetBookmark.getPersistentBookmark(ed.selection, true);\n            applyRngStyle(dom, ExpandRange.expandRng(ed, selection.getRng(), formatList), bookmark);\n            if (format.styles) {\n              MergeFormats.mergeUnderlineAndColor(dom, format, vars, curSelNode);\n            }\n            selection.moveToBookmark(bookmark);\n            FormatUtils.moveStart(dom, selection, selection.getRng());\n            ed.nodeChanged();\n          } else {\n            applyCaretFormat(ed, name, vars);\n          }\n        }\n        Hooks.postProcess(name, ed);\n      }\n    };\n    var ApplyFormat = { applyFormat: applyFormat };\n\n    var each$g = Tools.each;\n    var setup$5 = function (formatChangeData, editor) {\n      var currentFormats = {};\n      formatChangeData.set({});\n      editor.on('NodeChange', function (e) {\n        var parents = FormatUtils.getParents(editor.dom, e.element);\n        var matchedFormats = {};\n        parents = Tools.grep(parents, function (node) {\n          return node.nodeType === 1 && !node.getAttribute('data-mce-bogus');\n        });\n        each$g(formatChangeData.get(), function (callbacks, format) {\n          each$g(parents, function (node) {\n            if (editor.formatter.matchNode(node, format, {}, callbacks.similar)) {\n              if (!currentFormats[format]) {\n                each$g(callbacks, function (callback) {\n                  callback(true, {\n                    node: node,\n                    format: format,\n                    parents: parents\n                  });\n                });\n                currentFormats[format] = callbacks;\n              }\n              matchedFormats[format] = callbacks;\n              return false;\n            }\n            if (MatchFormat.matchesUnInheritedFormatSelector(editor, node, format)) {\n              return false;\n            }\n          });\n        });\n        each$g(currentFormats, function (callbacks, format) {\n          if (!matchedFormats[format]) {\n            delete currentFormats[format];\n            each$g(callbacks, function (callback) {\n              callback(false, {\n                node: e.element,\n                format: format,\n                parents: parents\n              });\n            });\n          }\n        });\n      });\n    };\n    var addListeners = function (formatChangeData, formats, callback, similar) {\n      var formatChangeItems = formatChangeData.get();\n      each$g(formats.split(','), function (format) {\n        if (!formatChangeItems[format]) {\n          formatChangeItems[format] = [];\n          formatChangeItems[format].similar = similar;\n        }\n        formatChangeItems[format].push(callback);\n      });\n      formatChangeData.set(formatChangeItems);\n    };\n    var formatChanged = function (editor, formatChangeState, formats, callback, similar) {\n      if (formatChangeState.get() === null) {\n        setup$5(formatChangeState, editor);\n      }\n      addListeners(formatChangeState, formats, callback, similar);\n    };\n    var FormatChanged = { formatChanged: formatChanged };\n\n    var get$8 = function (dom) {\n      var formats = {\n        valigntop: [{\n            selector: 'td,th',\n            styles: { verticalAlign: 'top' }\n          }],\n        valignmiddle: [{\n            selector: 'td,th',\n            styles: { verticalAlign: 'middle' }\n          }],\n        valignbottom: [{\n            selector: 'td,th',\n            styles: { verticalAlign: 'bottom' }\n          }],\n        alignleft: [\n          {\n            selector: 'figure.image',\n            collapsed: false,\n            classes: 'align-left',\n            ceFalseOverride: true,\n            preview: 'font-family font-size'\n          },\n          {\n            selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n            styles: { textAlign: 'left' },\n            inherit: false,\n            preview: false,\n            defaultBlock: 'div'\n          },\n          {\n            selector: 'img,table',\n            collapsed: false,\n            styles: { float: 'left' },\n            preview: 'font-family font-size'\n          }\n        ],\n        aligncenter: [\n          {\n            selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n            styles: { textAlign: 'center' },\n            inherit: false,\n            preview: 'font-family font-size',\n            defaultBlock: 'div'\n          },\n          {\n            selector: 'figure.image',\n            collapsed: false,\n            classes: 'align-center',\n            ceFalseOverride: true,\n            preview: 'font-family font-size'\n          },\n          {\n            selector: 'img',\n            collapsed: false,\n            styles: {\n              display: 'block',\n              marginLeft: 'auto',\n              marginRight: 'auto'\n            },\n            preview: false\n          },\n          {\n            selector: 'table',\n            collapsed: false,\n            styles: {\n              marginLeft: 'auto',\n              marginRight: 'auto'\n            },\n            preview: 'font-family font-size'\n          }\n        ],\n        alignright: [\n          {\n            selector: 'figure.image',\n            collapsed: false,\n            classes: 'align-right',\n            ceFalseOverride: true,\n            preview: 'font-family font-size'\n          },\n          {\n            selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n            styles: { textAlign: 'right' },\n            inherit: false,\n            preview: 'font-family font-size',\n            defaultBlock: 'div'\n          },\n          {\n            selector: 'img,table',\n            collapsed: false,\n            styles: { float: 'right' },\n            preview: 'font-family font-size'\n          }\n        ],\n        alignjustify: [{\n            selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n            styles: { textAlign: 'justify' },\n            inherit: false,\n            defaultBlock: 'div',\n            preview: 'font-family font-size'\n          }],\n        bold: [\n          {\n            inline: 'strong',\n            remove: 'all'\n          },\n          {\n            inline: 'span',\n            styles: { fontWeight: 'bold' }\n          },\n          {\n            inline: 'b',\n            remove: 'all'\n          }\n        ],\n        italic: [\n          {\n            inline: 'em',\n            remove: 'all'\n          },\n          {\n            inline: 'span',\n            styles: { fontStyle: 'italic' }\n          },\n          {\n            inline: 'i',\n            remove: 'all'\n          }\n        ],\n        underline: [\n          {\n            inline: 'span',\n            styles: { textDecoration: 'underline' },\n            exact: true\n          },\n          {\n            inline: 'u',\n            remove: 'all'\n          }\n        ],\n        strikethrough: [\n          {\n            inline: 'span',\n            styles: { textDecoration: 'line-through' },\n            exact: true\n          },\n          {\n            inline: 'strike',\n            remove: 'all'\n          }\n        ],\n        forecolor: {\n          inline: 'span',\n          styles: { color: '%value' },\n          links: true,\n          remove_similar: true,\n          clear_child_styles: true\n        },\n        hilitecolor: {\n          inline: 'span',\n          styles: { backgroundColor: '%value' },\n          links: true,\n          remove_similar: true,\n          clear_child_styles: true\n        },\n        fontname: {\n          inline: 'span',\n          toggle: false,\n          styles: { fontFamily: '%value' },\n          clear_child_styles: true\n        },\n        fontsize: {\n          inline: 'span',\n          toggle: false,\n          styles: { fontSize: '%value' },\n          clear_child_styles: true\n        },\n        fontsize_class: {\n          inline: 'span',\n          attributes: { class: '%value' }\n        },\n        blockquote: {\n          block: 'blockquote',\n          wrapper: 1,\n          remove: 'all'\n        },\n        subscript: { inline: 'sub' },\n        superscript: { inline: 'sup' },\n        code: { inline: 'code' },\n        link: {\n          inline: 'a',\n          selector: 'a',\n          remove: 'all',\n          split: true,\n          deep: true,\n          onmatch: function () {\n            return true;\n          },\n          onformat: function (elm, fmt, vars) {\n            Tools.each(vars, function (value, key) {\n              dom.setAttrib(elm, key, value);\n            });\n          }\n        },\n        removeformat: [\n          {\n            selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins',\n            remove: 'all',\n            split: true,\n            expand: false,\n            block_expand: true,\n            deep: true\n          },\n          {\n            selector: 'span',\n            attributes: [\n              'style',\n              'class'\n            ],\n            remove: 'empty',\n            split: true,\n            expand: false,\n            deep: true\n          },\n          {\n            selector: '*',\n            attributes: [\n              'style',\n              'class'\n            ],\n            split: false,\n            expand: false,\n            deep: true\n          }\n        ]\n      };\n      Tools.each('p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp'.split(/\\s/), function (name) {\n        formats[name] = {\n          block: name,\n          remove: 'all'\n        };\n      });\n      return formats;\n    };\n    var DefaultFormats = { get: get$8 };\n\n    function FormatRegistry (editor) {\n      var formats = {};\n      var get = function (name) {\n        return name ? formats[name] : formats;\n      };\n      var register = function (name, format) {\n        if (name) {\n          if (typeof name !== 'string') {\n            Tools.each(name, function (format, name) {\n              register(name, format);\n            });\n          } else {\n            format = format.length ? format : [format];\n            Tools.each(format, function (format) {\n              if (typeof format.deep === 'undefined') {\n                format.deep = !format.selector;\n              }\n              if (typeof format.split === 'undefined') {\n                format.split = !format.selector || format.inline;\n              }\n              if (typeof format.remove === 'undefined' && format.selector && !format.inline) {\n                format.remove = 'none';\n              }\n              if (format.selector && format.inline) {\n                format.mixed = true;\n                format.block_expand = true;\n              }\n              if (typeof format.classes === 'string') {\n                format.classes = format.classes.split(/\\s+/);\n              }\n            });\n            formats[name] = format;\n          }\n        }\n      };\n      var unregister = function (name) {\n        if (name && formats[name]) {\n          delete formats[name];\n        }\n        return formats;\n      };\n      register(DefaultFormats.get(editor.dom));\n      register(editor.settings.formats);\n      return {\n        get: get,\n        register: register,\n        unregister: unregister\n      };\n    }\n\n    var each$h = Tools.each;\n    var dom = DOMUtils$1.DOM;\n    var parsedSelectorToHtml = function (ancestry, editor) {\n      var elm, item, fragment;\n      var schema = editor && editor.schema || Schema({});\n      var decorate = function (elm, item) {\n        if (item.classes.length) {\n          dom.addClass(elm, item.classes.join(' '));\n        }\n        dom.setAttribs(elm, item.attrs);\n      };\n      var createElement = function (sItem) {\n        var elm;\n        item = typeof sItem === 'string' ? {\n          name: sItem,\n          classes: [],\n          attrs: {}\n        } : sItem;\n        elm = dom.create(item.name);\n        decorate(elm, item);\n        return elm;\n      };\n      var getRequiredParent = function (elm, candidate) {\n        var name = typeof elm !== 'string' ? elm.nodeName.toLowerCase() : elm;\n        var elmRule = schema.getElementRule(name);\n        var parentsRequired = elmRule && elmRule.parentsRequired;\n        if (parentsRequired && parentsRequired.length) {\n          return candidate && Tools.inArray(parentsRequired, candidate) !== -1 ? candidate : parentsRequired[0];\n        } else {\n          return false;\n        }\n      };\n      var wrapInHtml = function (elm, ancestry, siblings) {\n        var parent, parentCandidate, parentRequired;\n        var ancestor = ancestry.length > 0 && ancestry[0];\n        var ancestorName = ancestor && ancestor.name;\n        parentRequired = getRequiredParent(elm, ancestorName);\n        if (parentRequired) {\n          if (ancestorName === parentRequired) {\n            parentCandidate = ancestry[0];\n            ancestry = ancestry.slice(1);\n          } else {\n            parentCandidate = parentRequired;\n          }\n        } else if (ancestor) {\n          parentCandidate = ancestry[0];\n          ancestry = ancestry.slice(1);\n        } else if (!siblings) {\n          return elm;\n        }\n        if (parentCandidate) {\n          parent = createElement(parentCandidate);\n          parent.appendChild(elm);\n        }\n        if (siblings) {\n          if (!parent) {\n            parent = dom.create('div');\n            parent.appendChild(elm);\n          }\n          Tools.each(siblings, function (sibling) {\n            var siblingElm = createElement(sibling);\n            parent.insertBefore(siblingElm, elm);\n          });\n        }\n        return wrapInHtml(parent, ancestry, parentCandidate && parentCandidate.siblings);\n      };\n      if (ancestry && ancestry.length) {\n        item = ancestry[0];\n        elm = createElement(item);\n        fragment = dom.create('div');\n        fragment.appendChild(wrapInHtml(elm, ancestry.slice(1), item.siblings));\n        return fragment;\n      } else {\n        return '';\n      }\n    };\n    var selectorToHtml = function (selector, editor) {\n      return parsedSelectorToHtml(parseSelector(selector), editor);\n    };\n    var parseSelectorItem = function (item) {\n      var tagName;\n      var obj = {\n        classes: [],\n        attrs: {}\n      };\n      item = obj.selector = Tools.trim(item);\n      if (item !== '*') {\n        tagName = item.replace(/(?:([#\\.]|::?)([\\w\\-]+)|(\\[)([^\\]]+)\\]?)/g, function ($0, $1, $2, $3, $4) {\n          switch ($1) {\n          case '#':\n            obj.attrs.id = $2;\n            break;\n          case '.':\n            obj.classes.push($2);\n            break;\n          case ':':\n            if (Tools.inArray('checked disabled enabled read-only required'.split(' '), $2) !== -1) {\n              obj.attrs[$2] = $2;\n            }\n            break;\n          }\n          if ($3 === '[') {\n            var m = $4.match(/([\\w\\-]+)(?:\\=\\\"([^\\\"]+))?/);\n            if (m) {\n              obj.attrs[m[1]] = m[2];\n            }\n          }\n          return '';\n        });\n      }\n      obj.name = tagName || 'div';\n      return obj;\n    };\n    var parseSelector = function (selector) {\n      if (!selector || typeof selector !== 'string') {\n        return [];\n      }\n      selector = selector.split(/\\s*,\\s*/)[0];\n      selector = selector.replace(/\\s*(~\\+|~|\\+|>)\\s*/g, '$1');\n      return Tools.map(selector.split(/(?:>|\\s+(?![^\\[\\]]+\\]))/), function (item) {\n        var siblings = Tools.map(item.split(/(?:~\\+|~|\\+)/), parseSelectorItem);\n        var obj = siblings.pop();\n        if (siblings.length) {\n          obj.siblings = siblings;\n        }\n        return obj;\n      }).reverse();\n    };\n    var getCssText = function (editor, format) {\n      var name, previewFrag, previewElm, items;\n      var previewCss = '', parentFontSize, previewStyles;\n      previewStyles = editor.settings.preview_styles;\n      if (previewStyles === false) {\n        return '';\n      }\n      if (typeof previewStyles !== 'string') {\n        previewStyles = 'font-family font-size font-weight font-style text-decoration ' + 'text-transform color background-color border border-radius outline text-shadow';\n      }\n      var removeVars = function (val) {\n        return val.replace(/%(\\w+)/g, '');\n      };\n      if (typeof format === 'string') {\n        format = editor.formatter.get(format);\n        if (!format) {\n          return;\n        }\n        format = format[0];\n      }\n      if ('preview' in format) {\n        previewStyles = format.preview;\n        if (previewStyles === false) {\n          return '';\n        }\n      }\n      name = format.block || format.inline || 'span';\n      items = parseSelector(format.selector);\n      if (items.length) {\n        if (!items[0].name) {\n          items[0].name = name;\n        }\n        name = format.selector;\n        previewFrag = parsedSelectorToHtml(items, editor);\n      } else {\n        previewFrag = parsedSelectorToHtml([name], editor);\n      }\n      previewElm = dom.select(name, previewFrag)[0] || previewFrag.firstChild;\n      each$h(format.styles, function (value, name) {\n        value = removeVars(value);\n        if (value) {\n          dom.setStyle(previewElm, name, value);\n        }\n      });\n      each$h(format.attributes, function (value, name) {\n        value = removeVars(value);\n        if (value) {\n          dom.setAttrib(previewElm, name, value);\n        }\n      });\n      each$h(format.classes, function (value) {\n        value = removeVars(value);\n        if (!dom.hasClass(previewElm, value)) {\n          dom.addClass(previewElm, value);\n        }\n      });\n      editor.fire('PreviewFormats');\n      dom.setStyles(previewFrag, {\n        position: 'absolute',\n        left: -65535\n      });\n      editor.getBody().appendChild(previewFrag);\n      parentFontSize = dom.getStyle(editor.getBody(), 'fontSize', true);\n      parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0;\n      each$h(previewStyles.split(' '), function (name) {\n        var value = dom.getStyle(previewElm, name, true);\n        if (name === 'background-color' && /transparent|rgba\\s*\\([^)]+,\\s*0\\)/.test(value)) {\n          value = dom.getStyle(editor.getBody(), name, true);\n          if (dom.toHex(value).toLowerCase() === '#ffffff') {\n            return;\n          }\n        }\n        if (name === 'color') {\n          if (dom.toHex(value).toLowerCase() === '#000000') {\n            return;\n          }\n        }\n        if (name === 'font-size') {\n          if (/em|%$/.test(value)) {\n            if (parentFontSize === 0) {\n              return;\n            }\n            var numValue = parseFloat(value) / (/%$/.test(value) ? 100 : 1);\n            value = numValue * parentFontSize + 'px';\n          }\n        }\n        if (name === 'border' && value) {\n          previewCss += 'padding:0 2px;';\n        }\n        previewCss += name + ':' + value + ';';\n      });\n      editor.fire('AfterPreviewFormats');\n      dom.remove(previewFrag);\n      return previewCss;\n    };\n    var Preview = {\n      getCssText: getCssText,\n      parseSelector: parseSelector,\n      selectorToHtml: selectorToHtml\n    };\n\n    var toggle$3 = function (editor, formats, name, vars, node) {\n      var fmt = formats.get(name);\n      if (MatchFormat.match(editor, name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) {\n        RemoveFormat.remove(editor, name, vars, node);\n      } else {\n        ApplyFormat.applyFormat(editor, name, vars, node);\n      }\n    };\n    var ToggleFormat = { toggle: toggle$3 };\n\n    var setup$6 = function (editor) {\n      editor.addShortcut('meta+b', '', 'Bold');\n      editor.addShortcut('meta+i', '', 'Italic');\n      editor.addShortcut('meta+u', '', 'Underline');\n      for (var i = 1; i <= 6; i++) {\n        editor.addShortcut('access+' + i, '', [\n          'FormatBlock',\n          false,\n          'h' + i\n        ]);\n      }\n      editor.addShortcut('access+7', '', [\n        'FormatBlock',\n        false,\n        'p'\n      ]);\n      editor.addShortcut('access+8', '', [\n        'FormatBlock',\n        false,\n        'div'\n      ]);\n      editor.addShortcut('access+9', '', [\n        'FormatBlock',\n        false,\n        'address'\n      ]);\n    };\n    var FormatShortcuts = { setup: setup$6 };\n\n    function Formatter (editor) {\n      var formats = FormatRegistry(editor);\n      var formatChangeState = Cell(null);\n      FormatShortcuts.setup(editor);\n      setup$4(editor);\n      return {\n        get: formats.get,\n        register: formats.register,\n        unregister: formats.unregister,\n        apply: curry(ApplyFormat.applyFormat, editor),\n        remove: curry(RemoveFormat.remove, editor),\n        toggle: curry(ToggleFormat.toggle, editor, formats),\n        match: curry(MatchFormat.match, editor),\n        matchAll: curry(MatchFormat.matchAll, editor),\n        matchNode: curry(MatchFormat.matchNode, editor),\n        canApply: curry(MatchFormat.canApply, editor),\n        formatChanged: curry(FormatChanged.formatChanged, editor, formatChangeState),\n        getCssText: curry(Preview.getCssText, editor)\n      };\n    }\n\n    var hasOwnProperty$2 = Object.prototype.hasOwnProperty;\n    var shallow$1 = function (old, nu) {\n      return nu;\n    };\n    var baseMerge = function (merger) {\n      return function () {\n        var objects = new Array(arguments.length);\n        for (var i = 0; i < objects.length; i++)\n          objects[i] = arguments[i];\n        if (objects.length === 0)\n          throw new Error('Can\\'t merge zero objects');\n        var ret = {};\n        for (var j = 0; j < objects.length; j++) {\n          var curObject = objects[j];\n          for (var key in curObject)\n            if (hasOwnProperty$2.call(curObject, key)) {\n              ret[key] = merger(ret[key], curObject[key]);\n            }\n        }\n        return ret;\n      };\n    };\n    var merge = baseMerge(shallow$1);\n\n    var register = function (htmlParser, settings, dom) {\n      htmlParser.addAttributeFilter('data-mce-tabindex', function (nodes, name) {\n        var i = nodes.length, node;\n        while (i--) {\n          node = nodes[i];\n          node.attr('tabindex', node.attributes.map['data-mce-tabindex']);\n          node.attr(name, null);\n        }\n      });\n      htmlParser.addAttributeFilter('src,href,style', function (nodes, name) {\n        var i = nodes.length, node, value;\n        var internalName = 'data-mce-' + name;\n        var urlConverter = settings.url_converter;\n        var urlConverterScope = settings.url_converter_scope;\n        while (i--) {\n          node = nodes[i];\n          value = node.attributes.map[internalName];\n          if (value !== undefined) {\n            node.attr(name, value.length > 0 ? value : null);\n            node.attr(internalName, null);\n          } else {\n            value = node.attributes.map[name];\n            if (name === 'style') {\n              value = dom.serializeStyle(dom.parseStyle(value), node.name);\n            } else if (urlConverter) {\n              value = urlConverter.call(urlConverterScope, value, name, node.name);\n            }\n            node.attr(name, value.length > 0 ? value : null);\n          }\n        }\n      });\n      htmlParser.addAttributeFilter('class', function (nodes) {\n        var i = nodes.length, node, value;\n        while (i--) {\n          node = nodes[i];\n          value = node.attr('class');\n          if (value) {\n            value = node.attr('class').replace(/(?:^|\\s)mce-item-\\w+(?!\\S)/g, '');\n            node.attr('class', value.length > 0 ? value : null);\n          }\n        }\n      });\n      htmlParser.addAttributeFilter('data-mce-type', function (nodes, name, args) {\n        var i = nodes.length, node;\n        while (i--) {\n          node = nodes[i];\n          if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup) {\n            node.remove();\n          }\n        }\n      });\n      htmlParser.addNodeFilter('noscript', function (nodes) {\n        var i = nodes.length, node;\n        while (i--) {\n          node = nodes[i].firstChild;\n          if (node) {\n            node.value = Entities.decode(node.value);\n          }\n        }\n      });\n      htmlParser.addNodeFilter('script,style', function (nodes, name) {\n        var i = nodes.length, node, value, type;\n        var trim = function (value) {\n          return value.replace(/(<!--\\[CDATA\\[|\\]\\]-->)/g, '\\n').replace(/^[\\r\\n]*|[\\r\\n]*$/g, '').replace(/^\\s*((<!--)?(\\s*\\/\\/)?\\s*<!\\[CDATA\\[|(<!--\\s*)?\\/\\*\\s*<!\\[CDATA\\[\\s*\\*\\/|(\\/\\/)?\\s*<!--|\\/\\*\\s*<!--\\s*\\*\\/)\\s*[\\r\\n]*/gi, '').replace(/\\s*(\\/\\*\\s*\\]\\]>\\s*\\*\\/(-->)?|\\s*\\/\\/\\s*\\]\\]>(-->)?|\\/\\/\\s*(-->)?|\\]\\]>|\\/\\*\\s*-->\\s*\\*\\/|\\s*-->\\s*)\\s*$/g, '');\n        };\n        while (i--) {\n          node = nodes[i];\n          value = node.firstChild ? node.firstChild.value : '';\n          if (name === 'script') {\n            type = node.attr('type');\n            if (type) {\n              node.attr('type', type === 'mce-no/type' ? null : type.replace(/^mce\\-/, ''));\n            }\n            if (settings.element_format === 'xhtml' && value.length > 0) {\n              node.firstChild.value = '// <![CDATA[\\n' + trim(value) + '\\n// ]]>';\n            }\n          } else {\n            if (settings.element_format === 'xhtml' && value.length > 0) {\n              node.firstChild.value = '<!--\\n' + trim(value) + '\\n-->';\n            }\n          }\n        }\n      });\n      htmlParser.addNodeFilter('#comment', function (nodes) {\n        var i = nodes.length, node;\n        while (i--) {\n          node = nodes[i];\n          if (node.value.indexOf('[CDATA[') === 0) {\n            node.name = '#cdata';\n            node.type = 4;\n            node.value = node.value.replace(/^\\[CDATA\\[|\\]\\]$/g, '');\n          } else if (node.value.indexOf('mce:protected ') === 0) {\n            node.name = '#text';\n            node.type = 3;\n            node.raw = true;\n            node.value = unescape(node.value).substr(14);\n          }\n        }\n      });\n      htmlParser.addNodeFilter('xml:namespace,input', function (nodes, name) {\n        var i = nodes.length, node;\n        while (i--) {\n          node = nodes[i];\n          if (node.type === 7) {\n            node.remove();\n          } else if (node.type === 1) {\n            if (name === 'input' && !('type' in node.attributes.map)) {\n              node.attr('type', 'text');\n            }\n          }\n        }\n      });\n      htmlParser.addAttributeFilter('data-mce-type', function (nodes) {\n        each(nodes, function (node) {\n          if (node.attr('data-mce-type') === 'format-caret') {\n            if (node.isEmpty(htmlParser.schema.getNonEmptyElements())) {\n              node.remove();\n            } else {\n              node.unwrap();\n            }\n          }\n        });\n      });\n      htmlParser.addAttributeFilter('data-mce-src,data-mce-href,data-mce-style,' + 'data-mce-selected,data-mce-expando,' + 'data-mce-type,data-mce-resize', function (nodes, name) {\n        var i = nodes.length;\n        while (i--) {\n          nodes[i].attr(name, null);\n        }\n      });\n    };\n    var trimTrailingBr = function (rootNode) {\n      var brNode1, brNode2;\n      var isBr = function (node) {\n        return node && node.name === 'br';\n      };\n      brNode1 = rootNode.lastChild;\n      if (isBr(brNode1)) {\n        brNode2 = brNode1.prev;\n        if (isBr(brNode2)) {\n          brNode1.remove();\n          brNode2.remove();\n        }\n      }\n    };\n    var DomSerializerFilters = {\n      register: register,\n      trimTrailingBr: trimTrailingBr\n    };\n\n    var preProcess = function (editor, node, args) {\n      var impl, doc, oldDoc;\n      var dom = editor.dom;\n      node = node.cloneNode(true);\n      impl = document.implementation;\n      if (impl.createHTMLDocument) {\n        doc = impl.createHTMLDocument('');\n        Tools.each(node.nodeName === 'BODY' ? node.childNodes : [node], function (node) {\n          doc.body.appendChild(doc.importNode(node, true));\n        });\n        if (node.nodeName !== 'BODY') {\n          node = doc.body.firstChild;\n        } else {\n          node = doc.body;\n        }\n        oldDoc = dom.doc;\n        dom.doc = doc;\n      }\n      Events.firePreProcess(editor, merge(args, { node: node }));\n      if (oldDoc) {\n        dom.doc = oldDoc;\n      }\n      return node;\n    };\n    var shouldFireEvent = function (editor, args) {\n      return editor && editor.hasEventListeners('PreProcess') && !args.no_events;\n    };\n    var process = function (editor, node, args) {\n      return shouldFireEvent(editor, args) ? preProcess(editor, node, args) : node;\n    };\n    var DomSerializerPreProcess = { process: process };\n\n    var removeAttrs = function (node, names) {\n      each(names, function (name) {\n        node.attr(name, null);\n      });\n    };\n    var addFontToSpansFilter = function (domParser, styles, fontSizes) {\n      domParser.addNodeFilter('font', function (nodes) {\n        each(nodes, function (node) {\n          var props = styles.parse(node.attr('style'));\n          var color = node.attr('color');\n          var face = node.attr('face');\n          var size = node.attr('size');\n          if (color) {\n            props.color = color;\n          }\n          if (face) {\n            props['font-family'] = face;\n          }\n          if (size) {\n            props['font-size'] = fontSizes[parseInt(node.attr('size'), 10) - 1];\n          }\n          node.name = 'span';\n          node.attr('style', styles.serialize(props));\n          removeAttrs(node, [\n            'color',\n            'face',\n            'size'\n          ]);\n        });\n      });\n    };\n    var addStrikeToSpanFilter = function (domParser, styles) {\n      domParser.addNodeFilter('strike', function (nodes) {\n        each(nodes, function (node) {\n          var props = styles.parse(node.attr('style'));\n          props['text-decoration'] = 'line-through';\n          node.name = 'span';\n          node.attr('style', styles.serialize(props));\n        });\n      });\n    };\n    var addFilters = function (domParser, settings) {\n      var styles = Styles();\n      if (settings.convert_fonts_to_spans) {\n        addFontToSpansFilter(domParser, styles, Tools.explode(settings.font_size_legacy_values));\n      }\n      addStrikeToSpanFilter(domParser, styles);\n    };\n    var register$1 = function (domParser, settings) {\n      if (settings.inline_styles) {\n        addFilters(domParser, settings);\n      }\n    };\n    var LegacyFilter = { register: register$1 };\n\n    var whiteSpaceRegExp$3 = /^[ \\t\\r\\n]*$/;\n    var typeLookup = {\n      '#text': 3,\n      '#comment': 8,\n      '#cdata': 4,\n      '#pi': 7,\n      '#doctype': 10,\n      '#document-fragment': 11\n    };\n    var walk$2 = function (node, root, prev) {\n      var sibling;\n      var parent;\n      var startName = prev ? 'lastChild' : 'firstChild';\n      var siblingName = prev ? 'prev' : 'next';\n      if (node[startName]) {\n        return node[startName];\n      }\n      if (node !== root) {\n        sibling = node[siblingName];\n        if (sibling) {\n          return sibling;\n        }\n        for (parent = node.parent; parent && parent !== root; parent = parent.parent) {\n          sibling = parent[siblingName];\n          if (sibling) {\n            return sibling;\n          }\n        }\n      }\n    };\n    var Node$2 = function () {\n      function Node(name, type) {\n        this.name = name;\n        this.type = type;\n        if (type === 1) {\n          this.attributes = [];\n          this.attributes.map = {};\n        }\n      }\n      Node.create = function (name, attrs) {\n        var node, attrName;\n        node = new Node(name, typeLookup[name] || 1);\n        if (attrs) {\n          for (attrName in attrs) {\n            node.attr(attrName, attrs[attrName]);\n          }\n        }\n        return node;\n      };\n      Node.prototype.replace = function (node) {\n        var self = this;\n        if (node.parent) {\n          node.remove();\n        }\n        self.insert(node, self);\n        self.remove();\n        return self;\n      };\n      Node.prototype.attr = function (name, value) {\n        var self = this;\n        var attrs, i;\n        if (typeof name !== 'string') {\n          for (i in name) {\n            self.attr(i, name[i]);\n          }\n          return self;\n        }\n        if (attrs = self.attributes) {\n          if (value !== undefined) {\n            if (value === null) {\n              if (name in attrs.map) {\n                delete attrs.map[name];\n                i = attrs.length;\n                while (i--) {\n                  if (attrs[i].name === name) {\n                    attrs = attrs.splice(i, 1);\n                    return self;\n                  }\n                }\n              }\n              return self;\n            }\n            if (name in attrs.map) {\n              i = attrs.length;\n              while (i--) {\n                if (attrs[i].name === name) {\n                  attrs[i].value = value;\n                  break;\n                }\n              }\n            } else {\n              attrs.push({\n                name: name,\n                value: value\n              });\n            }\n            attrs.map[name] = value;\n            return self;\n          }\n          return attrs.map[name];\n        }\n      };\n      Node.prototype.clone = function () {\n        var self = this;\n        var clone = new Node(self.name, self.type);\n        var i, l, selfAttrs, selfAttr, cloneAttrs;\n        if (selfAttrs = self.attributes) {\n          cloneAttrs = [];\n          cloneAttrs.map = {};\n          for (i = 0, l = selfAttrs.length; i < l; i++) {\n            selfAttr = selfAttrs[i];\n            if (selfAttr.name !== 'id') {\n              cloneAttrs[cloneAttrs.length] = {\n                name: selfAttr.name,\n                value: selfAttr.value\n              };\n              cloneAttrs.map[selfAttr.name] = selfAttr.value;\n            }\n          }\n          clone.attributes = cloneAttrs;\n        }\n        clone.value = self.value;\n        clone.shortEnded = self.shortEnded;\n        return clone;\n      };\n      Node.prototype.wrap = function (wrapper) {\n        var self = this;\n        self.parent.insert(wrapper, self);\n        wrapper.append(self);\n        return self;\n      };\n      Node.prototype.unwrap = function () {\n        var self = this;\n        var node, next;\n        for (node = self.firstChild; node;) {\n          next = node.next;\n          self.insert(node, self, true);\n          node = next;\n        }\n        self.remove();\n      };\n      Node.prototype.remove = function () {\n        var self = this, parent = self.parent, next = self.next, prev = self.prev;\n        if (parent) {\n          if (parent.firstChild === self) {\n            parent.firstChild = next;\n            if (next) {\n              next.prev = null;\n            }\n          } else {\n            prev.next = next;\n          }\n          if (parent.lastChild === self) {\n            parent.lastChild = prev;\n            if (prev) {\n              prev.next = null;\n            }\n          } else {\n            next.prev = prev;\n          }\n          self.parent = self.next = self.prev = null;\n        }\n        return self;\n      };\n      Node.prototype.append = function (node) {\n        var self = this;\n        var last;\n        if (node.parent) {\n          node.remove();\n        }\n        last = self.lastChild;\n        if (last) {\n          last.next = node;\n          node.prev = last;\n          self.lastChild = node;\n        } else {\n          self.lastChild = self.firstChild = node;\n        }\n        node.parent = self;\n        return node;\n      };\n      Node.prototype.insert = function (node, refNode, before) {\n        var parent;\n        if (node.parent) {\n          node.remove();\n        }\n        parent = refNode.parent || this;\n        if (before) {\n          if (refNode === parent.firstChild) {\n            parent.firstChild = node;\n          } else {\n            refNode.prev.next = node;\n          }\n          node.prev = refNode.prev;\n          node.next = refNode;\n          refNode.prev = node;\n        } else {\n          if (refNode === parent.lastChild) {\n            parent.lastChild = node;\n          } else {\n            refNode.next.prev = node;\n          }\n          node.next = refNode.next;\n          node.prev = refNode;\n          refNode.next = node;\n        }\n        node.parent = parent;\n        return node;\n      };\n      Node.prototype.getAll = function (name) {\n        var self = this;\n        var node;\n        var collection = [];\n        for (node = self.firstChild; node; node = walk$2(node, self)) {\n          if (node.name === name) {\n            collection.push(node);\n          }\n        }\n        return collection;\n      };\n      Node.prototype.empty = function () {\n        var self = this;\n        var nodes, i, node;\n        if (self.firstChild) {\n          nodes = [];\n          for (node = self.firstChild; node; node = walk$2(node, self)) {\n            nodes.push(node);\n          }\n          i = nodes.length;\n          while (i--) {\n            node = nodes[i];\n            node.parent = node.firstChild = node.lastChild = node.next = node.prev = null;\n          }\n        }\n        self.firstChild = self.lastChild = null;\n        return self;\n      };\n      Node.prototype.isEmpty = function (elements, whitespace, predicate) {\n        var self = this;\n        var node = self.firstChild, i, name;\n        whitespace = whitespace || {};\n        if (node) {\n          do {\n            if (node.type === 1) {\n              if (node.attributes.map['data-mce-bogus']) {\n                continue;\n              }\n              if (elements[node.name]) {\n                return false;\n              }\n              i = node.attributes.length;\n              while (i--) {\n                name = node.attributes[i].name;\n                if (name === 'name' || name.indexOf('data-mce-bookmark') === 0) {\n                  return false;\n                }\n              }\n            }\n            if (node.type === 8) {\n              return false;\n            }\n            if (node.type === 3 && !whiteSpaceRegExp$3.test(node.value)) {\n              return false;\n            }\n            if (node.type === 3 && node.parent && whitespace[node.parent.name] && whiteSpaceRegExp$3.test(node.value)) {\n              return false;\n            }\n            if (predicate && predicate(node)) {\n              return false;\n            }\n          } while (node = walk$2(node, self));\n        }\n        return true;\n      };\n      Node.prototype.walk = function (prev) {\n        return walk$2(this, null, prev);\n      };\n      return Node;\n    }();\n\n    var paddEmptyNode = function (settings, args, blockElements, node) {\n      var brPreferred = settings.padd_empty_with_br || args.insert;\n      if (brPreferred && blockElements[node.name]) {\n        node.empty().append(new Node$2('br', 1)).shortEnded = true;\n      } else {\n        node.empty().append(new Node$2('#text', 3)).value = '\\xA0';\n      }\n    };\n    var isPaddedWithNbsp = function (node) {\n      return hasOnlyChild(node, '#text') && node.firstChild.value === '\\xA0';\n    };\n    var hasOnlyChild = function (node, name) {\n      return node && node.firstChild && node.firstChild === node.lastChild && node.firstChild.name === name;\n    };\n    var isPadded = function (schema, node) {\n      var rule = schema.getElementRule(node.name);\n      return rule && rule.paddEmpty;\n    };\n    var isEmpty$2 = function (schema, nonEmptyElements, whitespaceElements, node) {\n      return node.isEmpty(nonEmptyElements, whitespaceElements, function (node) {\n        return isPadded(schema, node);\n      });\n    };\n    var isLineBreakNode = function (node, blockElements) {\n      return node && (blockElements[node.name] || node.name === 'br');\n    };\n\n    var register$2 = function (parser, settings) {\n      var schema = parser.schema;\n      if (settings.remove_trailing_brs) {\n        parser.addNodeFilter('br', function (nodes, _, args) {\n          var i;\n          var l = nodes.length;\n          var node;\n          var blockElements = Tools.extend({}, schema.getBlockElements());\n          var nonEmptyElements = schema.getNonEmptyElements();\n          var parent, lastParent, prev, prevName;\n          var whiteSpaceElements = schema.getNonEmptyElements();\n          var elementRule, textNode;\n          blockElements.body = 1;\n          for (i = 0; i < l; i++) {\n            node = nodes[i];\n            parent = node.parent;\n            if (blockElements[node.parent.name] && node === parent.lastChild) {\n              prev = node.prev;\n              while (prev) {\n                prevName = prev.name;\n                if (prevName !== 'span' || prev.attr('data-mce-type') !== 'bookmark') {\n                  if (prevName !== 'br') {\n                    break;\n                  }\n                  if (prevName === 'br') {\n                    node = null;\n                    break;\n                  }\n                }\n                prev = prev.prev;\n              }\n              if (node) {\n                node.remove();\n                if (isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, parent)) {\n                  elementRule = schema.getElementRule(parent.name);\n                  if (elementRule) {\n                    if (elementRule.removeEmpty) {\n                      parent.remove();\n                    } else if (elementRule.paddEmpty) {\n                      paddEmptyNode(settings, args, blockElements, parent);\n                    }\n                  }\n                }\n              }\n            } else {\n              lastParent = node;\n              while (parent && parent.firstChild === lastParent && parent.lastChild === lastParent) {\n                lastParent = parent;\n                if (blockElements[parent.name]) {\n                  break;\n                }\n                parent = parent.parent;\n              }\n              if (lastParent === parent && settings.padd_empty_with_br !== true) {\n                textNode = new Node$2('#text', 3);\n                textNode.value = '\\xA0';\n                node.replace(textNode);\n              }\n            }\n          }\n        });\n      }\n      parser.addAttributeFilter('href', function (nodes) {\n        var i = nodes.length, node;\n        var appendRel = function (rel) {\n          var parts = rel.split(' ').filter(function (p) {\n            return p.length > 0;\n          });\n          return parts.concat(['noopener']).sort().join(' ');\n        };\n        var addNoOpener = function (rel) {\n          var newRel = rel ? Tools.trim(rel) : '';\n          if (!/\\b(noopener)\\b/g.test(newRel)) {\n            return appendRel(newRel);\n          } else {\n            return newRel;\n          }\n        };\n        if (!settings.allow_unsafe_link_target) {\n          while (i--) {\n            node = nodes[i];\n            if (node.name === 'a' && node.attr('target') === '_blank') {\n              node.attr('rel', addNoOpener(node.attr('rel')));\n            }\n          }\n        }\n      });\n      if (!settings.allow_html_in_named_anchor) {\n        parser.addAttributeFilter('id,name', function (nodes) {\n          var i = nodes.length, sibling, prevSibling, parent, node;\n          while (i--) {\n            node = nodes[i];\n            if (node.name === 'a' && node.firstChild && !node.attr('href')) {\n              parent = node.parent;\n              sibling = node.lastChild;\n              do {\n                prevSibling = sibling.prev;\n                parent.insert(sibling, node);\n                sibling = prevSibling;\n              } while (sibling);\n            }\n          }\n        });\n      }\n      if (settings.fix_list_elements) {\n        parser.addNodeFilter('ul,ol', function (nodes) {\n          var i = nodes.length, node, parentNode;\n          while (i--) {\n            node = nodes[i];\n            parentNode = node.parent;\n            if (parentNode.name === 'ul' || parentNode.name === 'ol') {\n              if (node.prev && node.prev.name === 'li') {\n                node.prev.append(node);\n              } else {\n                var li = new Node$2('li', 1);\n                li.attr('style', 'list-style-type: none');\n                node.wrap(li);\n              }\n            }\n          }\n        });\n      }\n      if (settings.validate && schema.getValidClasses()) {\n        parser.addAttributeFilter('class', function (nodes) {\n          var i = nodes.length, node, classList, ci, className, classValue;\n          var validClasses = schema.getValidClasses();\n          var validClassesMap, valid;\n          while (i--) {\n            node = nodes[i];\n            classList = node.attr('class').split(' ');\n            classValue = '';\n            for (ci = 0; ci < classList.length; ci++) {\n              className = classList[ci];\n              valid = false;\n              validClassesMap = validClasses['*'];\n              if (validClassesMap && validClassesMap[className]) {\n                valid = true;\n              }\n              validClassesMap = validClasses[node.name];\n              if (!valid && validClassesMap && validClassesMap[className]) {\n                valid = true;\n              }\n              if (valid) {\n                if (classValue) {\n                  classValue += ' ';\n                }\n                classValue += className;\n              }\n            }\n            if (!classValue.length) {\n              classValue = null;\n            }\n            node.attr('class', classValue);\n          }\n        });\n      }\n    };\n\n    var makeMap$4 = Tools.makeMap, each$i = Tools.each, explode$3 = Tools.explode, extend$3 = Tools.extend;\n    function DomParser (settings, schema) {\n      if (schema === void 0) {\n        schema = Schema();\n      }\n      var nodeFilters = {};\n      var attributeFilters = [];\n      var matchedNodes = {};\n      var matchedAttributes = {};\n      settings = settings || {};\n      settings.validate = 'validate' in settings ? settings.validate : true;\n      settings.root_name = settings.root_name || 'body';\n      var fixInvalidChildren = function (nodes) {\n        var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i;\n        var nonEmptyElements, whitespaceElements, nonSplitableElements, textBlockElements, specialElements, sibling, nextNode;\n        nonSplitableElements = makeMap$4('tr,td,th,tbody,thead,tfoot,table');\n        nonEmptyElements = schema.getNonEmptyElements();\n        whitespaceElements = schema.getWhiteSpaceElements();\n        textBlockElements = schema.getTextBlockElements();\n        specialElements = schema.getSpecialElements();\n        for (ni = 0; ni < nodes.length; ni++) {\n          node = nodes[ni];\n          if (!node.parent || node.fixed) {\n            continue;\n          }\n          if (textBlockElements[node.name] && node.parent.name === 'li') {\n            sibling = node.next;\n            while (sibling) {\n              if (textBlockElements[sibling.name]) {\n                sibling.name = 'li';\n                sibling.fixed = true;\n                node.parent.insert(sibling, node.parent);\n              } else {\n                break;\n              }\n              sibling = sibling.next;\n            }\n            node.unwrap(node);\n            continue;\n          }\n          parents = [node];\n          for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && !nonSplitableElements[parent.name]; parent = parent.parent) {\n            parents.push(parent);\n          }\n          if (parent && parents.length > 1) {\n            parents.reverse();\n            newParent = currentNode = filterNode(parents[0].clone());\n            for (i = 0; i < parents.length - 1; i++) {\n              if (schema.isValidChild(currentNode.name, parents[i].name)) {\n                tempNode = filterNode(parents[i].clone());\n                currentNode.append(tempNode);\n              } else {\n                tempNode = currentNode;\n              }\n              for (childNode = parents[i].firstChild; childNode && childNode !== parents[i + 1];) {\n                nextNode = childNode.next;\n                tempNode.append(childNode);\n                childNode = nextNode;\n              }\n              currentNode = tempNode;\n            }\n            if (!isEmpty$2(schema, nonEmptyElements, whitespaceElements, newParent)) {\n              parent.insert(newParent, parents[0], true);\n              parent.insert(node, newParent);\n            } else {\n              parent.insert(node, parents[0], true);\n            }\n            parent = parents[0];\n            if (isEmpty$2(schema, nonEmptyElements, whitespaceElements, parent) || hasOnlyChild(parent, 'br')) {\n              parent.empty().remove();\n            }\n          } else if (node.parent) {\n            if (node.name === 'li') {\n              sibling = node.prev;\n              if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {\n                sibling.append(node);\n                continue;\n              }\n              sibling = node.next;\n              if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {\n                sibling.insert(node, sibling.firstChild, true);\n                continue;\n              }\n              node.wrap(filterNode(new Node$2('ul', 1)));\n              continue;\n            }\n            if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {\n              node.wrap(filterNode(new Node$2('div', 1)));\n            } else {\n              if (specialElements[node.name]) {\n                node.empty().remove();\n              } else {\n                node.unwrap();\n              }\n            }\n          }\n        }\n      };\n      var filterNode = function (node) {\n        var i, name, list;\n        name = node.name;\n        if (name in nodeFilters) {\n          list = matchedNodes[name];\n          if (list) {\n            list.push(node);\n          } else {\n            matchedNodes[name] = [node];\n          }\n        }\n        i = attributeFilters.length;\n        while (i--) {\n          name = attributeFilters[i].name;\n          if (name in node.attributes.map) {\n            list = matchedAttributes[name];\n            if (list) {\n              list.push(node);\n            } else {\n              matchedAttributes[name] = [node];\n            }\n          }\n        }\n        return node;\n      };\n      var addNodeFilter = function (name, callback) {\n        each$i(explode$3(name), function (name) {\n          var list = nodeFilters[name];\n          if (!list) {\n            nodeFilters[name] = list = [];\n          }\n          list.push(callback);\n        });\n      };\n      var getNodeFilters = function () {\n        var out = [];\n        for (var name in nodeFilters) {\n          if (nodeFilters.hasOwnProperty(name)) {\n            out.push({\n              name: name,\n              callbacks: nodeFilters[name]\n            });\n          }\n        }\n        return out;\n      };\n      var addAttributeFilter = function (name, callback) {\n        each$i(explode$3(name), function (name) {\n          var i;\n          for (i = 0; i < attributeFilters.length; i++) {\n            if (attributeFilters[i].name === name) {\n              attributeFilters[i].callbacks.push(callback);\n              return;\n            }\n          }\n          attributeFilters.push({\n            name: name,\n            callbacks: [callback]\n          });\n        });\n      };\n      var getAttributeFilters = function () {\n        return [].concat(attributeFilters);\n      };\n      var parse = function (html, args) {\n        var parser, nodes, i, l, fi, fl, list, name;\n        var blockElements;\n        var invalidChildren = [];\n        var isInWhiteSpacePreservedElement;\n        var node;\n        args = args || {};\n        matchedNodes = {};\n        matchedAttributes = {};\n        blockElements = extend$3(makeMap$4('script,style,head,html,body,title,meta,param'), schema.getBlockElements());\n        var nonEmptyElements = schema.getNonEmptyElements();\n        var children = schema.children;\n        var validate = settings.validate;\n        var rootBlockName = 'forced_root_block' in args ? args.forced_root_block : settings.forced_root_block;\n        var whiteSpaceElements = schema.getWhiteSpaceElements();\n        var startWhiteSpaceRegExp = /^[ \\t\\r\\n]+/;\n        var endWhiteSpaceRegExp = /[ \\t\\r\\n]+$/;\n        var allWhiteSpaceRegExp = /[ \\t\\r\\n]+/g;\n        var isAllWhiteSpaceRegExp = /^[ \\t\\r\\n]+$/;\n        isInWhiteSpacePreservedElement = whiteSpaceElements.hasOwnProperty(args.context) || whiteSpaceElements.hasOwnProperty(settings.root_name);\n        var addRootBlocks = function () {\n          var node = rootNode.firstChild, next, rootBlockNode;\n          var trim = function (rootBlockNode) {\n            if (rootBlockNode) {\n              node = rootBlockNode.firstChild;\n              if (node && node.type === 3) {\n                node.value = node.value.replace(startWhiteSpaceRegExp, '');\n              }\n              node = rootBlockNode.lastChild;\n              if (node && node.type === 3) {\n                node.value = node.value.replace(endWhiteSpaceRegExp, '');\n              }\n            }\n          };\n          if (!schema.isValidChild(rootNode.name, rootBlockName.toLowerCase())) {\n            return;\n          }\n          while (node) {\n            next = node.next;\n            if (node.type === 3 || node.type === 1 && node.name !== 'p' && !blockElements[node.name] && !node.attr('data-mce-type')) {\n              if (!rootBlockNode) {\n                rootBlockNode = createNode(rootBlockName, 1);\n                rootBlockNode.attr(settings.forced_root_block_attrs);\n                rootNode.insert(rootBlockNode, node);\n                rootBlockNode.append(node);\n              } else {\n                rootBlockNode.append(node);\n              }\n            } else {\n              trim(rootBlockNode);\n              rootBlockNode = null;\n            }\n            node = next;\n          }\n          trim(rootBlockNode);\n        };\n        var createNode = function (name, type) {\n          var node = new Node$2(name, type);\n          var list;\n          if (name in nodeFilters) {\n            list = matchedNodes[name];\n            if (list) {\n              list.push(node);\n            } else {\n              matchedNodes[name] = [node];\n            }\n          }\n          return node;\n        };\n        var removeWhitespaceBefore = function (node) {\n          var textNode, textNodeNext, textVal, sibling;\n          var blockElements = schema.getBlockElements();\n          for (textNode = node.prev; textNode && textNode.type === 3;) {\n            textVal = textNode.value.replace(endWhiteSpaceRegExp, '');\n            if (textVal.length > 0) {\n              textNode.value = textVal;\n              return;\n            }\n            textNodeNext = textNode.next;\n            if (textNodeNext) {\n              if (textNodeNext.type === 3 && textNodeNext.value.length) {\n                textNode = textNode.prev;\n                continue;\n              }\n              if (!blockElements[textNodeNext.name] && textNodeNext.name !== 'script' && textNodeNext.name !== 'style') {\n                textNode = textNode.prev;\n                continue;\n              }\n            }\n            sibling = textNode.prev;\n            textNode.remove();\n            textNode = sibling;\n          }\n        };\n        var cloneAndExcludeBlocks = function (input) {\n          var name;\n          var output = {};\n          for (name in input) {\n            if (name !== 'li' && name !== 'p') {\n              output[name] = input[name];\n            }\n          }\n          return output;\n        };\n        parser = SaxParser$1({\n          validate: validate,\n          allow_script_urls: settings.allow_script_urls,\n          allow_conditional_comments: settings.allow_conditional_comments,\n          self_closing_elements: cloneAndExcludeBlocks(schema.getSelfClosingElements()),\n          cdata: function (text) {\n            node.append(createNode('#cdata', 4)).value = text;\n          },\n          text: function (text, raw) {\n            var textNode;\n            if (!isInWhiteSpacePreservedElement) {\n              text = text.replace(allWhiteSpaceRegExp, ' ');\n              if (isLineBreakNode(node.lastChild, blockElements)) {\n                text = text.replace(startWhiteSpaceRegExp, '');\n              }\n            }\n            if (text.length !== 0) {\n              textNode = createNode('#text', 3);\n              textNode.raw = !!raw;\n              node.append(textNode).value = text;\n            }\n          },\n          comment: function (text) {\n            node.append(createNode('#comment', 8)).value = text;\n          },\n          pi: function (name, text) {\n            node.append(createNode(name, 7)).value = text;\n            removeWhitespaceBefore(node);\n          },\n          doctype: function (text) {\n            var newNode;\n            newNode = node.append(createNode('#doctype', 10));\n            newNode.value = text;\n            removeWhitespaceBefore(node);\n          },\n          start: function (name, attrs, empty) {\n            var newNode, attrFiltersLen, elementRule, attrName, parent;\n            elementRule = validate ? schema.getElementRule(name) : {};\n            if (elementRule) {\n              newNode = createNode(elementRule.outputName || name, 1);\n              newNode.attributes = attrs;\n              newNode.shortEnded = empty;\n              node.append(newNode);\n              parent = children[node.name];\n              if (parent && children[newNode.name] && !parent[newNode.name]) {\n                invalidChildren.push(newNode);\n              }\n              attrFiltersLen = attributeFilters.length;\n              while (attrFiltersLen--) {\n                attrName = attributeFilters[attrFiltersLen].name;\n                if (attrName in attrs.map) {\n                  list = matchedAttributes[attrName];\n                  if (list) {\n                    list.push(newNode);\n                  } else {\n                    matchedAttributes[attrName] = [newNode];\n                  }\n                }\n              }\n              if (blockElements[name]) {\n                removeWhitespaceBefore(newNode);\n              }\n              if (!empty) {\n                node = newNode;\n              }\n              if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {\n                isInWhiteSpacePreservedElement = true;\n              }\n            }\n          },\n          end: function (name) {\n            var textNode, elementRule, text, sibling, tempNode;\n            elementRule = validate ? schema.getElementRule(name) : {};\n            if (elementRule) {\n              if (blockElements[name]) {\n                if (!isInWhiteSpacePreservedElement) {\n                  textNode = node.firstChild;\n                  if (textNode && textNode.type === 3) {\n                    text = textNode.value.replace(startWhiteSpaceRegExp, '');\n                    if (text.length > 0) {\n                      textNode.value = text;\n                      textNode = textNode.next;\n                    } else {\n                      sibling = textNode.next;\n                      textNode.remove();\n                      textNode = sibling;\n                      while (textNode && textNode.type === 3) {\n                        text = textNode.value;\n                        sibling = textNode.next;\n                        if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {\n                          textNode.remove();\n                          textNode = sibling;\n                        }\n                        textNode = sibling;\n                      }\n                    }\n                  }\n                  textNode = node.lastChild;\n                  if (textNode && textNode.type === 3) {\n                    text = textNode.value.replace(endWhiteSpaceRegExp, '');\n                    if (text.length > 0) {\n                      textNode.value = text;\n                      textNode = textNode.prev;\n                    } else {\n                      sibling = textNode.prev;\n                      textNode.remove();\n                      textNode = sibling;\n                      while (textNode && textNode.type === 3) {\n                        text = textNode.value;\n                        sibling = textNode.prev;\n                        if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {\n                          textNode.remove();\n                          textNode = sibling;\n                        }\n                        textNode = sibling;\n                      }\n                    }\n                  }\n                }\n              }\n              if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {\n                isInWhiteSpacePreservedElement = false;\n              }\n              if (elementRule.removeEmpty && isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, node)) {\n                if (!node.attributes.map.name && !node.attr('id')) {\n                  tempNode = node.parent;\n                  if (blockElements[node.name]) {\n                    node.empty().remove();\n                  } else {\n                    node.unwrap();\n                  }\n                  node = tempNode;\n                  return;\n                }\n              }\n              if (elementRule.paddEmpty && (isPaddedWithNbsp(node) || isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, node))) {\n                paddEmptyNode(settings, args, blockElements, node);\n              }\n              node = node.parent;\n            }\n          }\n        }, schema);\n        var rootNode = node = new Node$2(args.context || settings.root_name, 11);\n        parser.parse(html);\n        if (validate && invalidChildren.length) {\n          if (!args.context) {\n            fixInvalidChildren(invalidChildren);\n          } else {\n            args.invalid = true;\n          }\n        }\n        if (rootBlockName && (rootNode.name === 'body' || args.isRootContent)) {\n          addRootBlocks();\n        }\n        if (!args.invalid) {\n          for (name in matchedNodes) {\n            list = nodeFilters[name];\n            nodes = matchedNodes[name];\n            fi = nodes.length;\n            while (fi--) {\n              if (!nodes[fi].parent) {\n                nodes.splice(fi, 1);\n              }\n            }\n            for (i = 0, l = list.length; i < l; i++) {\n              list[i](nodes, name, args);\n            }\n          }\n          for (i = 0, l = attributeFilters.length; i < l; i++) {\n            list = attributeFilters[i];\n            if (list.name in matchedAttributes) {\n              nodes = matchedAttributes[list.name];\n              fi = nodes.length;\n              while (fi--) {\n                if (!nodes[fi].parent) {\n                  nodes.splice(fi, 1);\n                }\n              }\n              for (fi = 0, fl = list.callbacks.length; fi < fl; fi++) {\n                list.callbacks[fi](nodes, list.name, args);\n              }\n            }\n          }\n        }\n        return rootNode;\n      };\n      var exports = {\n        schema: schema,\n        addAttributeFilter: addAttributeFilter,\n        getAttributeFilters: getAttributeFilters,\n        addNodeFilter: addNodeFilter,\n        getNodeFilters: getNodeFilters,\n        filterNode: filterNode,\n        parse: parse\n      };\n      register$2(exports, settings);\n      LegacyFilter.register(exports, settings);\n      return exports;\n    }\n\n    var addTempAttr = function (htmlParser, tempAttrs, name) {\n      if (Tools.inArray(tempAttrs, name) === -1) {\n        htmlParser.addAttributeFilter(name, function (nodes, name) {\n          var i = nodes.length;\n          while (i--) {\n            nodes[i].attr(name, null);\n          }\n        });\n        tempAttrs.push(name);\n      }\n    };\n    var postProcess$1 = function (editor, args, content) {\n      if (!args.no_events && editor) {\n        var outArgs = Events.firePostProcess(editor, merge(args, { content: content }));\n        return outArgs.content;\n      } else {\n        return content;\n      }\n    };\n    var getHtmlFromNode = function (dom, node, args) {\n      var html = Zwsp.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node));\n      return args.selection || isWsPreserveElement(Element$$1.fromDom(node)) ? html : Tools.trim(html);\n    };\n    var parseHtml = function (htmlParser, html, args) {\n      var parserArgs = args.selection ? merge({ forced_root_block: false }, args) : args;\n      var rootNode = htmlParser.parse(html, parserArgs);\n      DomSerializerFilters.trimTrailingBr(rootNode);\n      return rootNode;\n    };\n    var serializeNode = function (settings, schema, node) {\n      var htmlSerializer = Serializer(settings, schema);\n      return htmlSerializer.serialize(node);\n    };\n    var toHtml = function (editor, settings, schema, rootNode, args) {\n      var content = serializeNode(settings, schema, rootNode);\n      return postProcess$1(editor, args, content);\n    };\n    function DomSerializer (settings, editor) {\n      var dom, schema, htmlParser;\n      var tempAttrs = ['data-mce-selected'];\n      dom = editor && editor.dom ? editor.dom : DOMUtils$1.DOM;\n      schema = editor && editor.schema ? editor.schema : Schema(settings);\n      settings.entity_encoding = settings.entity_encoding || 'named';\n      settings.remove_trailing_brs = 'remove_trailing_brs' in settings ? settings.remove_trailing_brs : true;\n      htmlParser = DomParser(settings, schema);\n      DomSerializerFilters.register(htmlParser, settings, dom);\n      var serialize = function (node, parserArgs) {\n        var args = merge({ format: 'html' }, parserArgs ? parserArgs : {});\n        var targetNode = DomSerializerPreProcess.process(editor, node, args);\n        var html = getHtmlFromNode(dom, targetNode, args);\n        var rootNode = parseHtml(htmlParser, html, args);\n        return args.format === 'tree' ? rootNode : toHtml(editor, settings, schema, rootNode, args);\n      };\n      return {\n        schema: schema,\n        addNodeFilter: htmlParser.addNodeFilter,\n        addAttributeFilter: htmlParser.addAttributeFilter,\n        serialize: serialize,\n        addRules: function (rules) {\n          schema.addValidElements(rules);\n        },\n        setRules: function (rules) {\n          schema.setValidElements(rules);\n        },\n        addTempAttr: curry(addTempAttr, htmlParser, tempAttrs),\n        getTempAttrs: function () {\n          return tempAttrs;\n        }\n      };\n    }\n\n    function Serializer$1 (settings, editor) {\n      var domSerializer = DomSerializer(settings, editor);\n      return {\n        schema: domSerializer.schema,\n        addNodeFilter: domSerializer.addNodeFilter,\n        addAttributeFilter: domSerializer.addAttributeFilter,\n        serialize: domSerializer.serialize,\n        addRules: domSerializer.addRules,\n        setRules: domSerializer.setRules,\n        addTempAttr: domSerializer.addTempAttr,\n        getTempAttrs: domSerializer.getTempAttrs\n      };\n    }\n\n    function BookmarkManager(selection) {\n      return {\n        getBookmark: curry(Bookmarks.getBookmark, selection),\n        moveToBookmark: curry(Bookmarks.moveToBookmark, selection)\n      };\n    }\n    (function (BookmarkManager) {\n      BookmarkManager.isBookmarkNode = Bookmarks.isBookmarkNode;\n    }(BookmarkManager || (BookmarkManager = {})));\n    var BookmarkManager$1 = BookmarkManager;\n\n    var isContentEditableFalse$a = NodeType.isContentEditableFalse;\n    var isContentEditableTrue$6 = NodeType.isContentEditableTrue;\n    var getContentEditableRoot$2 = function (root, node) {\n      while (node && node !== root) {\n        if (isContentEditableTrue$6(node) || isContentEditableFalse$a(node)) {\n          return node;\n        }\n        node = node.parentNode;\n      }\n      return null;\n    };\n    var ControlSelection = function (selection, editor) {\n      var dom = editor.dom, each = Tools.each;\n      var selectedElm, selectedElmGhost, resizeHelper, resizeHandles, selectedHandle;\n      var startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted;\n      var width, height;\n      var editableDoc = editor.getDoc(), rootDocument = document;\n      var abs = Math.abs, round = Math.round, rootElement = editor.getBody();\n      var startScrollWidth, startScrollHeight;\n      resizeHandles = {\n        nw: [\n          0,\n          0,\n          -1,\n          -1\n        ],\n        ne: [\n          1,\n          0,\n          1,\n          -1\n        ],\n        se: [\n          1,\n          1,\n          1,\n          1\n        ],\n        sw: [\n          0,\n          1,\n          -1,\n          1\n        ]\n      };\n      var rootClass = '.mce-content-body';\n      editor.contentStyles.push(rootClass + ' div.mce-resizehandle {' + 'position: absolute;' + 'border: 1px solid black;' + 'box-sizing: content-box;' + 'background: #FFF;' + 'width: 7px;' + 'height: 7px;' + 'z-index: 10000' + '}' + rootClass + ' .mce-resizehandle:hover {' + 'background: #000' + '}' + rootClass + ' img[data-mce-selected],' + rootClass + ' hr[data-mce-selected] {' + 'outline: 1px solid black;' + 'resize: none' + '}' + rootClass + ' .mce-clonedresizable {' + 'position: absolute;' + (Env.gecko ? '' : 'outline: 1px dashed black;') + 'opacity: .5;' + 'filter: alpha(opacity=50);' + 'z-index: 10000' + '}' + rootClass + ' .mce-resize-helper {' + 'background: #555;' + 'background: rgba(0,0,0,0.75);' + 'border-radius: 3px;' + 'border: 1px;' + 'color: white;' + 'display: none;' + 'font-family: sans-serif;' + 'font-size: 12px;' + 'white-space: nowrap;' + 'line-height: 14px;' + 'margin: 5px 10px;' + 'padding: 5px;' + 'position: absolute;' + 'z-index: 10001' + '}');\n      var isImage = function (elm) {\n        return elm && (elm.nodeName === 'IMG' || editor.dom.is(elm, 'figure.image'));\n      };\n      var isEventOnImageOutsideRange = function (evt, range) {\n        return isImage(evt.target) && !RangePoint.isXYWithinRange(evt.clientX, evt.clientY, range);\n      };\n      var contextMenuSelectImage = function (evt) {\n        var target = evt.target;\n        if (isEventOnImageOutsideRange(evt, editor.selection.getRng()) && !evt.isDefaultPrevented()) {\n          evt.preventDefault();\n          editor.selection.select(target);\n        }\n      };\n      var getResizeTarget = function (elm) {\n        return editor.dom.is(elm, 'figure.image') ? elm.querySelector('img') : elm;\n      };\n      var isResizable = function (elm) {\n        var selector = editor.settings.object_resizing;\n        if (selector === false || Env.iOS) {\n          return false;\n        }\n        if (typeof selector !== 'string') {\n          selector = 'table,img,figure.image,div';\n        }\n        if (elm.getAttribute('data-mce-resize') === 'false') {\n          return false;\n        }\n        if (elm === editor.getBody()) {\n          return false;\n        }\n        return is$1(Element$$1.fromDom(elm), selector);\n      };\n      var resizeGhostElement = function (e) {\n        var deltaX, deltaY, proportional;\n        var resizeHelperX, resizeHelperY;\n        deltaX = e.screenX - startX;\n        deltaY = e.screenY - startY;\n        width = deltaX * selectedHandle[2] + startW;\n        height = deltaY * selectedHandle[3] + startH;\n        width = width < 5 ? 5 : width;\n        height = height < 5 ? 5 : height;\n        if (isImage(selectedElm) && editor.settings.resize_img_proportional !== false) {\n          proportional = !VK.modifierPressed(e);\n        } else {\n          proportional = VK.modifierPressed(e) || isImage(selectedElm) && selectedHandle[2] * selectedHandle[3] !== 0;\n        }\n        if (proportional) {\n          if (abs(deltaX) > abs(deltaY)) {\n            height = round(width * ratio);\n            width = round(height / ratio);\n          } else {\n            width = round(height / ratio);\n            height = round(width * ratio);\n          }\n        }\n        dom.setStyles(getResizeTarget(selectedElmGhost), {\n          width: width,\n          height: height\n        });\n        resizeHelperX = selectedHandle.startPos.x + deltaX;\n        resizeHelperY = selectedHandle.startPos.y + deltaY;\n        resizeHelperX = resizeHelperX > 0 ? resizeHelperX : 0;\n        resizeHelperY = resizeHelperY > 0 ? resizeHelperY : 0;\n        dom.setStyles(resizeHelper, {\n          left: resizeHelperX,\n          top: resizeHelperY,\n          display: 'block'\n        });\n        resizeHelper.innerHTML = width + ' &times; ' + height;\n        if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) {\n          dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width));\n        }\n        if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) {\n          dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height));\n        }\n        deltaX = rootElement.scrollWidth - startScrollWidth;\n        deltaY = rootElement.scrollHeight - startScrollHeight;\n        if (deltaX + deltaY !== 0) {\n          dom.setStyles(resizeHelper, {\n            left: resizeHelperX - deltaX,\n            top: resizeHelperY - deltaY\n          });\n        }\n        if (!resizeStarted) {\n          Events.fireObjectResizeStart(editor, selectedElm, startW, startH);\n          resizeStarted = true;\n        }\n      };\n      var endGhostResize = function () {\n        resizeStarted = false;\n        var setSizeProp = function (name$$1, value) {\n          if (value) {\n            if (selectedElm.style[name$$1] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name$$1)) {\n              dom.setStyle(getResizeTarget(selectedElm), name$$1, value);\n            } else {\n              dom.setAttrib(getResizeTarget(selectedElm), name$$1, value);\n            }\n          }\n        };\n        setSizeProp('width', width);\n        setSizeProp('height', height);\n        dom.unbind(editableDoc, 'mousemove', resizeGhostElement);\n        dom.unbind(editableDoc, 'mouseup', endGhostResize);\n        if (rootDocument !== editableDoc) {\n          dom.unbind(rootDocument, 'mousemove', resizeGhostElement);\n          dom.unbind(rootDocument, 'mouseup', endGhostResize);\n        }\n        dom.remove(selectedElmGhost);\n        dom.remove(resizeHelper);\n        showResizeRect(selectedElm);\n        Events.fireObjectResized(editor, selectedElm, width, height);\n        dom.setAttrib(selectedElm, 'style', dom.getAttrib(selectedElm, 'style'));\n        editor.nodeChanged();\n      };\n      var showResizeRect = function (targetElm) {\n        var position, targetWidth, targetHeight, e, rect;\n        hideResizeRect();\n        unbindResizeHandleEvents();\n        position = dom.getPos(targetElm, rootElement);\n        selectedElmX = position.x;\n        selectedElmY = position.y;\n        rect = targetElm.getBoundingClientRect();\n        targetWidth = rect.width || rect.right - rect.left;\n        targetHeight = rect.height || rect.bottom - rect.top;\n        if (selectedElm !== targetElm) {\n          selectedElm = targetElm;\n          width = height = 0;\n        }\n        e = editor.fire('ObjectSelected', { target: targetElm });\n        if (isResizable(targetElm) && !e.isDefaultPrevented()) {\n          each(resizeHandles, function (handle, name$$1) {\n            var handleElm;\n            var startDrag = function (e) {\n              startX = e.screenX;\n              startY = e.screenY;\n              startW = getResizeTarget(selectedElm).clientWidth;\n              startH = getResizeTarget(selectedElm).clientHeight;\n              ratio = startH / startW;\n              selectedHandle = handle;\n              handle.startPos = {\n                x: targetWidth * handle[0] + selectedElmX,\n                y: targetHeight * handle[1] + selectedElmY\n              };\n              startScrollWidth = rootElement.scrollWidth;\n              startScrollHeight = rootElement.scrollHeight;\n              selectedElmGhost = selectedElm.cloneNode(true);\n              dom.addClass(selectedElmGhost, 'mce-clonedresizable');\n              dom.setAttrib(selectedElmGhost, 'data-mce-bogus', 'all');\n              selectedElmGhost.contentEditable = false;\n              selectedElmGhost.unSelectabe = true;\n              dom.setStyles(selectedElmGhost, {\n                left: selectedElmX,\n                top: selectedElmY,\n                margin: 0\n              });\n              selectedElmGhost.removeAttribute('data-mce-selected');\n              rootElement.appendChild(selectedElmGhost);\n              dom.bind(editableDoc, 'mousemove', resizeGhostElement);\n              dom.bind(editableDoc, 'mouseup', endGhostResize);\n              if (rootDocument !== editableDoc) {\n                dom.bind(rootDocument, 'mousemove', resizeGhostElement);\n                dom.bind(rootDocument, 'mouseup', endGhostResize);\n              }\n              resizeHelper = dom.add(rootElement, 'div', {\n                'class': 'mce-resize-helper',\n                'data-mce-bogus': 'all'\n              }, startW + ' &times; ' + startH);\n            };\n            handleElm = dom.get('mceResizeHandle' + name$$1);\n            if (handleElm) {\n              dom.remove(handleElm);\n            }\n            handleElm = dom.add(rootElement, 'div', {\n              'id': 'mceResizeHandle' + name$$1,\n              'data-mce-bogus': 'all',\n              'class': 'mce-resizehandle',\n              'unselectable': true,\n              'style': 'cursor:' + name$$1 + '-resize; margin:0; padding:0'\n            });\n            if (Env.ie === 11) {\n              handleElm.contentEditable = false;\n            }\n            dom.bind(handleElm, 'mousedown', function (e) {\n              e.stopImmediatePropagation();\n              e.preventDefault();\n              startDrag(e);\n            });\n            handle.elm = handleElm;\n            dom.setStyles(handleElm, {\n              left: targetWidth * handle[0] + selectedElmX - handleElm.offsetWidth / 2,\n              top: targetHeight * handle[1] + selectedElmY - handleElm.offsetHeight / 2\n            });\n          });\n        } else {\n          hideResizeRect();\n        }\n        selectedElm.setAttribute('data-mce-selected', '1');\n      };\n      var hideResizeRect = function () {\n        var name$$1, handleElm;\n        unbindResizeHandleEvents();\n        if (selectedElm) {\n          selectedElm.removeAttribute('data-mce-selected');\n        }\n        for (name$$1 in resizeHandles) {\n          handleElm = dom.get('mceResizeHandle' + name$$1);\n          if (handleElm) {\n            dom.unbind(handleElm);\n            dom.remove(handleElm);\n          }\n        }\n      };\n      var updateResizeRect = function (e) {\n        var startElm, controlElm;\n        var isChildOrEqual = function (node, parent$$1) {\n          if (node) {\n            do {\n              if (node === parent$$1) {\n                return true;\n              }\n            } while (node = node.parentNode);\n          }\n        };\n        if (resizeStarted || editor.removed) {\n          return;\n        }\n        each(dom.select('img[data-mce-selected],hr[data-mce-selected]'), function (img) {\n          img.removeAttribute('data-mce-selected');\n        });\n        controlElm = e.type === 'mousedown' ? e.target : selection.getNode();\n        controlElm = dom.$(controlElm).closest('table,img,figure.image,hr')[0];\n        if (isChildOrEqual(controlElm, rootElement)) {\n          disableGeckoResize();\n          startElm = selection.getStart(true);\n          if (isChildOrEqual(startElm, controlElm) && isChildOrEqual(selection.getEnd(true), controlElm)) {\n            showResizeRect(controlElm);\n            return;\n          }\n        }\n        hideResizeRect();\n      };\n      var isWithinContentEditableFalse = function (elm) {\n        return isContentEditableFalse$a(getContentEditableRoot$2(editor.getBody(), elm));\n      };\n      var unbindResizeHandleEvents = function () {\n        for (var name$$1 in resizeHandles) {\n          var handle = resizeHandles[name$$1];\n          if (handle.elm) {\n            dom.unbind(handle.elm);\n            delete handle.elm;\n          }\n        }\n      };\n      var disableGeckoResize = function () {\n        try {\n          editor.getDoc().execCommand('enableObjectResizing', false, false);\n        } catch (ex) {\n        }\n      };\n      editor.on('init', function () {\n        disableGeckoResize();\n        if (Env.ie && Env.ie >= 11) {\n          editor.on('mousedown click', function (e) {\n            var target = e.target, nodeName = target.nodeName;\n            if (!resizeStarted && /^(TABLE|IMG|HR)$/.test(nodeName) && !isWithinContentEditableFalse(target)) {\n              if (e.button !== 2) {\n                editor.selection.select(target, nodeName === 'TABLE');\n              }\n              if (e.type === 'mousedown') {\n                editor.nodeChanged();\n              }\n            }\n          });\n          editor.dom.bind(rootElement, 'mscontrolselect', function (e) {\n            var delayedSelect = function (node) {\n              Delay.setEditorTimeout(editor, function () {\n                editor.selection.select(node);\n              });\n            };\n            if (isWithinContentEditableFalse(e.target)) {\n              e.preventDefault();\n              delayedSelect(e.target);\n              return;\n            }\n            if (/^(TABLE|IMG|HR)$/.test(e.target.nodeName)) {\n              e.preventDefault();\n              if (e.target.tagName === 'IMG') {\n                delayedSelect(e.target);\n              }\n            }\n          });\n        }\n        var throttledUpdateResizeRect = Delay.throttle(function (e) {\n          if (!editor.composing) {\n            updateResizeRect(e);\n          }\n        });\n        editor.on('nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged', throttledUpdateResizeRect);\n        editor.on('keyup compositionend', function (e) {\n          if (selectedElm && selectedElm.nodeName === 'TABLE') {\n            throttledUpdateResizeRect(e);\n          }\n        });\n        editor.on('hide blur', hideResizeRect);\n        editor.on('contextmenu', contextMenuSelectImage);\n      });\n      editor.on('remove', unbindResizeHandleEvents);\n      var destroy = function () {\n        selectedElm = selectedElmGhost = null;\n      };\n      return {\n        isResizable: isResizable,\n        showResizeRect: showResizeRect,\n        hideResizeRect: hideResizeRect,\n        updateResizeRect: updateResizeRect,\n        destroy: destroy\n      };\n    };\n\n    var getPos$1 = function (elm) {\n      var x = 0, y = 0;\n      var offsetParent = elm;\n      while (offsetParent && offsetParent.nodeType) {\n        x += offsetParent.offsetLeft || 0;\n        y += offsetParent.offsetTop || 0;\n        offsetParent = offsetParent.offsetParent;\n      }\n      return {\n        x: x,\n        y: y\n      };\n    };\n    var fireScrollIntoViewEvent = function (editor, elm, alignToTop) {\n      var scrollEvent = {\n        elm: elm,\n        alignToTop: alignToTop\n      };\n      editor.fire('scrollIntoView', scrollEvent);\n      return scrollEvent.isDefaultPrevented();\n    };\n    var scrollElementIntoView = function (editor, elm, alignToTop) {\n      var y, viewPort;\n      var dom = editor.dom;\n      var root = dom.getRoot();\n      var viewPortY, viewPortH, offsetY = 0;\n      if (fireScrollIntoViewEvent(editor, elm, alignToTop)) {\n        return;\n      }\n      if (!NodeType.isElement(elm)) {\n        return;\n      }\n      if (alignToTop === false) {\n        offsetY = elm.offsetHeight;\n      }\n      if (root.nodeName !== 'BODY') {\n        var scrollContainer = editor.selection.getScrollContainer();\n        if (scrollContainer) {\n          y = getPos$1(elm).y - getPos$1(scrollContainer).y + offsetY;\n          viewPortH = scrollContainer.clientHeight;\n          viewPortY = scrollContainer.scrollTop;\n          if (y < viewPortY || y + 25 > viewPortY + viewPortH) {\n            scrollContainer.scrollTop = y < viewPortY ? y : y - viewPortH + 25;\n          }\n          return;\n        }\n      }\n      viewPort = dom.getViewPort(editor.getWin());\n      y = dom.getPos(elm).y + offsetY;\n      viewPortY = viewPort.y;\n      viewPortH = viewPort.h;\n      if (y < viewPort.y || y + 25 > viewPortY + viewPortH) {\n        editor.getWin().scrollTo(0, y < viewPortY ? y : y - viewPortH + 25);\n      }\n    };\n    var getViewPortRect = function (editor) {\n      if (editor.inline) {\n        return editor.getBody().getBoundingClientRect();\n      } else {\n        var win = editor.getWin();\n        return {\n          left: 0,\n          right: win.innerWidth,\n          top: 0,\n          bottom: win.innerHeight,\n          width: win.innerWidth,\n          height: win.innerHeight\n        };\n      }\n    };\n    var scrollBy = function (editor, dx, dy) {\n      if (editor.inline) {\n        editor.getBody().scrollLeft += dx;\n        editor.getBody().scrollTop += dy;\n      } else {\n        editor.getWin().scrollBy(dx, dy);\n      }\n    };\n    var scrollRangeIntoView = function (editor, rng) {\n      head(CaretPosition.fromRangeStart(rng).getClientRects()).each(function (rngRect) {\n        var bodyRect = getViewPortRect(editor);\n        var overflow = getOverflow(bodyRect, rngRect);\n        var margin = 4;\n        var dx = overflow.x > 0 ? overflow.x + margin : overflow.x - margin;\n        var dy = overflow.y > 0 ? overflow.y + margin : overflow.y - margin;\n        scrollBy(editor, overflow.x !== 0 ? dx : 0, overflow.y !== 0 ? dy : 0);\n      });\n    };\n    var ScrollIntoView = {\n      scrollElementIntoView: scrollElementIntoView,\n      scrollRangeIntoView: scrollRangeIntoView\n    };\n\n    var hasCeProperty = function (node) {\n      return NodeType.isContentEditableTrue(node) || NodeType.isContentEditableFalse(node);\n    };\n    var findParent$1 = function (node, rootNode, predicate) {\n      while (node && node !== rootNode) {\n        if (predicate(node)) {\n          return node;\n        }\n        node = node.parentNode;\n      }\n      return null;\n    };\n    var findClosestIeRange = function (clientX, clientY, doc) {\n      var element, rng, rects;\n      element = doc.elementFromPoint(clientX, clientY);\n      rng = doc.body.createTextRange();\n      if (!element || element.tagName === 'HTML') {\n        element = doc.body;\n      }\n      rng.moveToElementText(element);\n      rects = Tools.toArray(rng.getClientRects());\n      rects = rects.sort(function (a, b) {\n        a = Math.abs(Math.max(a.top - clientY, a.bottom - clientY));\n        b = Math.abs(Math.max(b.top - clientY, b.bottom - clientY));\n        return a - b;\n      });\n      if (rects.length > 0) {\n        clientY = (rects[0].bottom + rects[0].top) / 2;\n        try {\n          rng.moveToPoint(clientX, clientY);\n          rng.collapse(true);\n          return rng;\n        } catch (ex) {\n        }\n      }\n      return null;\n    };\n    var moveOutOfContentEditableFalse = function (rng, rootNode) {\n      var parentElement = rng && rng.parentElement ? rng.parentElement() : null;\n      return NodeType.isContentEditableFalse(findParent$1(parentElement, rootNode, hasCeProperty)) ? null : rng;\n    };\n    var fromPoint$1 = function (clientX, clientY, doc) {\n      var rng, point;\n      var pointDoc = doc;\n      if (pointDoc.caretPositionFromPoint) {\n        point = pointDoc.caretPositionFromPoint(clientX, clientY);\n        if (point) {\n          rng = doc.createRange();\n          rng.setStart(point.offsetNode, point.offset);\n          rng.collapse(true);\n        }\n      } else if (doc.caretRangeFromPoint) {\n        rng = doc.caretRangeFromPoint(clientX, clientY);\n      } else if (pointDoc.body.createTextRange) {\n        rng = pointDoc.body.createTextRange();\n        try {\n          rng.moveToPoint(clientX, clientY);\n          rng.collapse(true);\n        } catch (ex) {\n          rng = findClosestIeRange(clientX, clientY, doc);\n        }\n        return moveOutOfContentEditableFalse(rng, doc.body);\n      }\n      return rng;\n    };\n    var CaretRangeFromPoint = { fromPoint: fromPoint$1 };\n\n    var processRanges = function (editor, ranges) {\n      return map(ranges, function (range$$1) {\n        var evt = editor.fire('GetSelectionRange', { range: range$$1 });\n        return evt.range !== range$$1 ? evt.range : range$$1;\n      });\n    };\n    var EventProcessRanges = { processRanges: processRanges };\n\n    var fromElements = function (elements, scope) {\n      var doc = scope || document;\n      var fragment = doc.createDocumentFragment();\n      each(elements, function (element) {\n        fragment.appendChild(element.dom());\n      });\n      return Element$$1.fromDom(fragment);\n    };\n\n    var tableModel = Immutable('element', 'width', 'rows');\n    var tableRow = Immutable('element', 'cells');\n    var cellPosition = Immutable('x', 'y');\n    var getSpan = function (td, key) {\n      var value = parseInt(get$1(td, key), 10);\n      return isNaN(value) ? 1 : value;\n    };\n    var fillout = function (table, x, y, tr, td) {\n      var rowspan = getSpan(td, 'rowspan');\n      var colspan = getSpan(td, 'colspan');\n      var rows = table.rows();\n      for (var y2 = y; y2 < y + rowspan; y2++) {\n        if (!rows[y2]) {\n          rows[y2] = tableRow(deep(tr), []);\n        }\n        for (var x2 = x; x2 < x + colspan; x2++) {\n          var cells = rows[y2].cells();\n          cells[x2] = y2 === y && x2 === x ? td : shallow(td);\n        }\n      }\n    };\n    var cellExists = function (table, x, y) {\n      var rows = table.rows();\n      var cells = rows[y] ? rows[y].cells() : [];\n      return !!cells[x];\n    };\n    var skipCellsX = function (table, x, y) {\n      while (cellExists(table, x, y)) {\n        x++;\n      }\n      return x;\n    };\n    var getWidth = function (rows) {\n      return foldl(rows, function (acc, row) {\n        return row.cells().length > acc ? row.cells().length : acc;\n      }, 0);\n    };\n    var findElementPos = function (table, element) {\n      var rows = table.rows();\n      for (var y = 0; y < rows.length; y++) {\n        var cells = rows[y].cells();\n        for (var x = 0; x < cells.length; x++) {\n          if (eq(cells[x], element)) {\n            return Option.some(cellPosition(x, y));\n          }\n        }\n      }\n      return Option.none();\n    };\n    var extractRows = function (table, sx, sy, ex, ey) {\n      var newRows = [];\n      var rows = table.rows();\n      for (var y = sy; y <= ey; y++) {\n        var cells = rows[y].cells();\n        var slice = sx < ex ? cells.slice(sx, ex + 1) : cells.slice(ex, sx + 1);\n        newRows.push(tableRow(rows[y].element(), slice));\n      }\n      return newRows;\n    };\n    var subTable = function (table, startPos, endPos) {\n      var sx = startPos.x(), sy = startPos.y();\n      var ex = endPos.x(), ey = endPos.y();\n      var newRows = sy < ey ? extractRows(table, sx, sy, ex, ey) : extractRows(table, sx, ey, ex, sy);\n      return tableModel(table.element(), getWidth(newRows), newRows);\n    };\n    var createDomTable = function (table, rows) {\n      var tableElement = shallow(table.element());\n      var tableBody = Element$$1.fromTag('tbody');\n      append$1(tableBody, rows);\n      append(tableElement, tableBody);\n      return tableElement;\n    };\n    var modelRowsToDomRows = function (table) {\n      return map(table.rows(), function (row) {\n        var cells = map(row.cells(), function (cell) {\n          var td = deep(cell);\n          remove(td, 'colspan');\n          remove(td, 'rowspan');\n          return td;\n        });\n        var tr = shallow(row.element());\n        append$1(tr, cells);\n        return tr;\n      });\n    };\n    var fromDom$2 = function (tableElm) {\n      var table = tableModel(shallow(tableElm), 0, []);\n      each(descendants$1(tableElm, 'tr'), function (tr, y) {\n        each(descendants$1(tr, 'td,th'), function (td, x) {\n          fillout(table, skipCellsX(table, x, y), y, tr, td);\n        });\n      });\n      return tableModel(table.element(), getWidth(table.rows()), table.rows());\n    };\n    var toDom = function (table) {\n      return createDomTable(table, modelRowsToDomRows(table));\n    };\n    var subsection = function (table, startElement, endElement) {\n      return findElementPos(table, startElement).bind(function (startPos) {\n        return findElementPos(table, endElement).map(function (endPos) {\n          return subTable(table, startPos, endPos);\n        });\n      });\n    };\n    var SimpleTableModel = {\n      fromDom: fromDom$2,\n      toDom: toDom,\n      subsection: subsection\n    };\n\n    var findParentListContainer = function (parents$$1) {\n      return find(parents$$1, function (elm) {\n        return name(elm) === 'ul' || name(elm) === 'ol';\n      });\n    };\n    var getFullySelectedListWrappers = function (parents$$1, rng) {\n      return find(parents$$1, function (elm) {\n        return name(elm) === 'li' && hasAllContentsSelected(elm, rng);\n      }).fold(constant([]), function (li) {\n        return findParentListContainer(parents$$1).map(function (listCont) {\n          return [\n            Element$$1.fromTag('li'),\n            Element$$1.fromTag(name(listCont))\n          ];\n        }).getOr([]);\n      });\n    };\n    var wrap$3 = function (innerElm, elms) {\n      var wrapped = foldl(elms, function (acc, elm) {\n        append(elm, acc);\n        return elm;\n      }, innerElm);\n      return elms.length > 0 ? fromElements([wrapped]) : wrapped;\n    };\n    var directListWrappers = function (commonAnchorContainer) {\n      if (isListItem(commonAnchorContainer)) {\n        return parent(commonAnchorContainer).filter(isList).fold(constant([]), function (listElm) {\n          return [\n            commonAnchorContainer,\n            listElm\n          ];\n        });\n      } else {\n        return isList(commonAnchorContainer) ? [commonAnchorContainer] : [];\n      }\n    };\n    var getWrapElements = function (rootNode, rng) {\n      var commonAnchorContainer = Element$$1.fromDom(rng.commonAncestorContainer);\n      var parents$$1 = Parents.parentsAndSelf(commonAnchorContainer, rootNode);\n      var wrapElements = filter(parents$$1, function (elm) {\n        return isInline(elm) || isHeading(elm);\n      });\n      var listWrappers = getFullySelectedListWrappers(parents$$1, rng);\n      var allWrappers = wrapElements.concat(listWrappers.length ? listWrappers : directListWrappers(commonAnchorContainer));\n      return map(allWrappers, shallow);\n    };\n    var emptyFragment = function () {\n      return fromElements([]);\n    };\n    var getFragmentFromRange = function (rootNode, rng) {\n      return wrap$3(Element$$1.fromDom(rng.cloneContents()), getWrapElements(rootNode, rng));\n    };\n    var getParentTable = function (rootElm, cell) {\n      return ancestor$1(cell, 'table', curry(eq, rootElm));\n    };\n    var getTableFragment = function (rootNode, selectedTableCells) {\n      return getParentTable(rootNode, selectedTableCells[0]).bind(function (tableElm) {\n        var firstCell = selectedTableCells[0];\n        var lastCell = selectedTableCells[selectedTableCells.length - 1];\n        var fullTableModel = SimpleTableModel.fromDom(tableElm);\n        return SimpleTableModel.subsection(fullTableModel, firstCell, lastCell).map(function (sectionedTableModel) {\n          return fromElements([SimpleTableModel.toDom(sectionedTableModel)]);\n        });\n      }).getOrThunk(emptyFragment);\n    };\n    var getSelectionFragment = function (rootNode, ranges) {\n      return ranges.length > 0 && ranges[0].collapsed ? emptyFragment() : getFragmentFromRange(rootNode, ranges[0]);\n    };\n    var read$4 = function (rootNode, ranges) {\n      var selectedCells = TableCellSelection.getCellsFromElementOrRanges(ranges, rootNode);\n      return selectedCells.length > 0 ? getTableFragment(rootNode, selectedCells) : getSelectionFragment(rootNode, ranges);\n    };\n    var FragmentReader = { read: read$4 };\n\n    var getTextContent = function (editor) {\n      return Option.from(editor.selection.getRng()).map(function (r) {\n        return Zwsp.trim(r.toString());\n      }).getOr('');\n    };\n    var getHtmlContent = function (editor, args) {\n      var rng = editor.selection.getRng(), tmpElm = editor.dom.create('body');\n      var sel = editor.selection.getSel();\n      var fragment;\n      var ranges = EventProcessRanges.processRanges(editor, MultiRange.getRanges(sel));\n      if (rng.cloneContents) {\n        fragment = args.contextual ? FragmentReader.read(Element$$1.fromDom(editor.getBody()), ranges).dom() : rng.cloneContents();\n        if (fragment) {\n          tmpElm.appendChild(fragment);\n        }\n      } else {\n        tmpElm.innerHTML = rng.toString();\n      }\n      return editor.selection.serializer.serialize(tmpElm, args);\n    };\n    var getContent = function (editor, args) {\n      if (args === void 0) {\n        args = {};\n      }\n      args.get = true;\n      args.format = args.format || 'html';\n      args.selection = true;\n      args = editor.fire('BeforeGetContent', args);\n      if (args.isDefaultPrevented()) {\n        editor.fire('GetContent', args);\n        return args.content;\n      }\n      if (args.format === 'text') {\n        return getTextContent(editor);\n      } else {\n        args.getInner = true;\n        var content = getHtmlContent(editor, args);\n        if (args.format === 'tree') {\n          return content;\n        } else {\n          args.content = editor.selection.isCollapsed() ? '' : content;\n          editor.fire('GetContent', args);\n          return args.content;\n        }\n      }\n    };\n    var GetSelectionContent = { getContent: getContent };\n\n    var setContent = function (editor, content, args) {\n      var rng = editor.selection.getRng(), caretNode;\n      var doc = editor.getDoc();\n      var frag, temp;\n      args = args || { format: 'html' };\n      args.set = true;\n      args.selection = true;\n      args.content = content;\n      if (!args.no_events) {\n        args = editor.fire('BeforeSetContent', args);\n        if (args.isDefaultPrevented()) {\n          editor.fire('SetContent', args);\n          return;\n        }\n      }\n      content = args.content;\n      if (rng.insertNode) {\n        content += '<span id=\"__caret\">_</span>';\n        if (rng.startContainer === doc && rng.endContainer === doc) {\n          doc.body.innerHTML = content;\n        } else {\n          rng.deleteContents();\n          if (doc.body.childNodes.length === 0) {\n            doc.body.innerHTML = content;\n          } else {\n            if (rng.createContextualFragment) {\n              rng.insertNode(rng.createContextualFragment(content));\n            } else {\n              frag = doc.createDocumentFragment();\n              temp = doc.createElement('div');\n              frag.appendChild(temp);\n              temp.outerHTML = content;\n              rng.insertNode(frag);\n            }\n          }\n        }\n        caretNode = editor.dom.get('__caret');\n        rng = doc.createRange();\n        rng.setStartBefore(caretNode);\n        rng.setEndBefore(caretNode);\n        editor.selection.setRng(rng);\n        editor.dom.remove('__caret');\n        try {\n          editor.selection.setRng(rng);\n        } catch (ex) {\n        }\n      } else {\n        if (rng.item) {\n          doc.execCommand('Delete', false, null);\n          rng = editor.getRng();\n        }\n        if (/^\\s+/.test(content)) {\n          rng.pasteHTML('<span id=\"__mce_tmp\">_</span>' + content);\n          editor.dom.remove('__mce_tmp');\n        } else {\n          rng.pasteHTML(content);\n        }\n      }\n      if (!args.no_events) {\n        editor.fire('SetContent', args);\n      }\n    };\n    var SetSelectionContent = { setContent: setContent };\n\n    var getEndpointElement = function (root, rng, start, real, resolve) {\n      var container = start ? rng.startContainer : rng.endContainer;\n      var offset = start ? rng.startOffset : rng.endOffset;\n      return Option.from(container).map(Element$$1.fromDom).map(function (elm) {\n        return !real || !rng.collapsed ? child(elm, resolve(elm, offset)).getOr(elm) : elm;\n      }).bind(function (elm) {\n        return isElement(elm) ? Option.some(elm) : parent(elm);\n      }).map(function (elm) {\n        return elm.dom();\n      }).getOr(root);\n    };\n    var getStart$2 = function (root, rng, real) {\n      return getEndpointElement(root, rng, true, real, function (elm, offset) {\n        return Math.min(childNodesCount(elm), offset);\n      });\n    };\n    var getEnd = function (root, rng, real) {\n      return getEndpointElement(root, rng, false, real, function (elm, offset) {\n        return offset > 0 ? offset - 1 : offset;\n      });\n    };\n    var skipEmptyTextNodes = function (node, forwards) {\n      var orig = node;\n      while (node && NodeType.isText(node) && node.length === 0) {\n        node = forwards ? node.nextSibling : node.previousSibling;\n      }\n      return node || orig;\n    };\n    var getNode$1 = function (root, rng) {\n      var elm, startContainer, endContainer, startOffset, endOffset;\n      if (!rng) {\n        return root;\n      }\n      startContainer = rng.startContainer;\n      endContainer = rng.endContainer;\n      startOffset = rng.startOffset;\n      endOffset = rng.endOffset;\n      elm = rng.commonAncestorContainer;\n      if (!rng.collapsed) {\n        if (startContainer === endContainer) {\n          if (endOffset - startOffset < 2) {\n            if (startContainer.hasChildNodes()) {\n              elm = startContainer.childNodes[startOffset];\n            }\n          }\n        }\n        if (startContainer.nodeType === 3 && endContainer.nodeType === 3) {\n          if (startContainer.length === startOffset) {\n            startContainer = skipEmptyTextNodes(startContainer.nextSibling, true);\n          } else {\n            startContainer = startContainer.parentNode;\n          }\n          if (endOffset === 0) {\n            endContainer = skipEmptyTextNodes(endContainer.previousSibling, false);\n          } else {\n            endContainer = endContainer.parentNode;\n          }\n          if (startContainer && startContainer === endContainer) {\n            return startContainer;\n          }\n        }\n      }\n      if (elm && elm.nodeType === 3) {\n        return elm.parentNode;\n      }\n      return elm;\n    };\n    var getSelectedBlocks = function (dom, rng, startElm, endElm) {\n      var node, root;\n      var selectedBlocks = [];\n      root = dom.getRoot();\n      startElm = dom.getParent(startElm || getStart$2(root, rng, rng.collapsed), dom.isBlock);\n      endElm = dom.getParent(endElm || getEnd(root, rng, rng.collapsed), dom.isBlock);\n      if (startElm && startElm !== root) {\n        selectedBlocks.push(startElm);\n      }\n      if (startElm && endElm && startElm !== endElm) {\n        node = startElm;\n        var walker = new TreeWalker(startElm, root);\n        while ((node = walker.next()) && node !== endElm) {\n          if (dom.isBlock(node)) {\n            selectedBlocks.push(node);\n          }\n        }\n      }\n      if (endElm && startElm !== endElm && endElm !== root) {\n        selectedBlocks.push(endElm);\n      }\n      return selectedBlocks;\n    };\n    var select$1 = function (dom, node, content) {\n      return Option.from(node).map(function (node) {\n        var idx = dom.nodeIndex(node);\n        var rng = dom.createRng();\n        rng.setStart(node.parentNode, idx);\n        rng.setEnd(node.parentNode, idx + 1);\n        if (content) {\n          moveEndPoint$1(dom, rng, node, true);\n          moveEndPoint$1(dom, rng, node, false);\n        }\n        return rng;\n      });\n    };\n\n    var each$j = Tools.each;\n    var isNativeIeSelection = function (rng) {\n      return !!rng.select;\n    };\n    var isAttachedToDom = function (node) {\n      return !!(node && node.ownerDocument) && contains$3(Element$$1.fromDom(node.ownerDocument), Element$$1.fromDom(node));\n    };\n    var isValidRange = function (rng) {\n      if (!rng) {\n        return false;\n      } else if (isNativeIeSelection(rng)) {\n        return true;\n      } else {\n        return isAttachedToDom(rng.startContainer) && isAttachedToDom(rng.endContainer);\n      }\n    };\n    var Selection = function (dom, win, serializer, editor) {\n      var bookmarkManager, controlSelection;\n      var selectedRange, explicitRange, selectorChangedData;\n      var setCursorLocation = function (node, offset) {\n        var rng = dom.createRng();\n        if (!node) {\n          moveEndPoint$1(dom, rng, editor.getBody(), true);\n          setRng(rng);\n        } else {\n          rng.setStart(node, offset);\n          rng.setEnd(node, offset);\n          setRng(rng);\n          collapse(false);\n        }\n      };\n      var getContent = function (args) {\n        return GetSelectionContent.getContent(editor, args);\n      };\n      var setContent = function (content, args) {\n        return SetSelectionContent.setContent(editor, content, args);\n      };\n      var getStart = function (real) {\n        return getStart$2(editor.getBody(), getRng(), real);\n      };\n      var getEnd$$1 = function (real) {\n        return getEnd(editor.getBody(), getRng(), real);\n      };\n      var getBookmark = function (type, normalized) {\n        return bookmarkManager.getBookmark(type, normalized);\n      };\n      var moveToBookmark = function (bookmark) {\n        return bookmarkManager.moveToBookmark(bookmark);\n      };\n      var select = function (node, content) {\n        select$1(dom, node, content).each(setRng);\n        return node;\n      };\n      var isCollapsed = function () {\n        var rng = getRng(), sel = getSel();\n        if (!rng || rng.item) {\n          return false;\n        }\n        if (rng.compareEndPoints) {\n          return rng.compareEndPoints('StartToEnd', rng) === 0;\n        }\n        return !sel || rng.collapsed;\n      };\n      var collapse = function (toStart) {\n        var rng = getRng();\n        rng.collapse(!!toStart);\n        setRng(rng);\n      };\n      var getSel = function () {\n        return win.getSelection ? win.getSelection() : win.document.selection;\n      };\n      var getRng = function () {\n        var selection, rng, elm, doc;\n        var tryCompareBoundaryPoints = function (how, sourceRange, destinationRange) {\n          try {\n            return sourceRange.compareBoundaryPoints(how, destinationRange);\n          } catch (ex) {\n            return -1;\n          }\n        };\n        if (!win) {\n          return null;\n        }\n        doc = win.document;\n        if (typeof doc === 'undefined' || doc === null) {\n          return null;\n        }\n        if (editor.bookmark !== undefined && EditorFocus.hasFocus(editor) === false) {\n          var bookmark = SelectionBookmark.getRng(editor);\n          if (bookmark.isSome()) {\n            return bookmark.map(function (r) {\n              return EventProcessRanges.processRanges(editor, [r])[0];\n            }).getOr(doc.createRange());\n          }\n        }\n        try {\n          if (selection = getSel()) {\n            if (selection.rangeCount > 0) {\n              rng = selection.getRangeAt(0);\n            } else {\n              rng = selection.createRange ? selection.createRange() : doc.createRange();\n            }\n          }\n        } catch (ex) {\n        }\n        rng = EventProcessRanges.processRanges(editor, [rng])[0];\n        if (!rng) {\n          rng = doc.createRange ? doc.createRange() : doc.body.createTextRange();\n        }\n        if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) {\n          elm = dom.getRoot();\n          rng.setStart(elm, 0);\n          rng.setEnd(elm, 0);\n        }\n        if (selectedRange && explicitRange) {\n          if (tryCompareBoundaryPoints(rng.START_TO_START, rng, selectedRange) === 0 && tryCompareBoundaryPoints(rng.END_TO_END, rng, selectedRange) === 0) {\n            rng = explicitRange;\n          } else {\n            selectedRange = null;\n            explicitRange = null;\n          }\n        }\n        return rng;\n      };\n      var setRng = function (rng, forward) {\n        var sel, node, evt;\n        if (!isValidRange(rng)) {\n          return;\n        }\n        var ieRange = isNativeIeSelection(rng) ? rng : null;\n        if (ieRange) {\n          explicitRange = null;\n          try {\n            ieRange.select();\n          } catch (ex) {\n          }\n          return;\n        }\n        sel = getSel();\n        evt = editor.fire('SetSelectionRange', {\n          range: rng,\n          forward: forward\n        });\n        rng = evt.range;\n        if (sel) {\n          explicitRange = rng;\n          try {\n            sel.removeAllRanges();\n            sel.addRange(rng);\n          } catch (ex) {\n          }\n          if (forward === false && sel.extend) {\n            sel.collapse(rng.endContainer, rng.endOffset);\n            sel.extend(rng.startContainer, rng.startOffset);\n          }\n          selectedRange = sel.rangeCount > 0 ? sel.getRangeAt(0) : null;\n        }\n        if (!rng.collapsed && rng.startContainer === rng.endContainer && sel.setBaseAndExtent && !Env.ie) {\n          if (rng.endOffset - rng.startOffset < 2) {\n            if (rng.startContainer.hasChildNodes()) {\n              node = rng.startContainer.childNodes[rng.startOffset];\n              if (node && node.tagName === 'IMG') {\n                sel.setBaseAndExtent(rng.startContainer, rng.startOffset, rng.endContainer, rng.endOffset);\n                if (sel.anchorNode !== rng.startContainer || sel.focusNode !== rng.endContainer) {\n                  sel.setBaseAndExtent(node, 0, node, 1);\n                }\n              }\n            }\n          }\n        }\n        editor.fire('AfterSetSelectionRange', {\n          range: rng,\n          forward: forward\n        });\n      };\n      var setNode = function (elm) {\n        setContent(dom.getOuterHTML(elm));\n        return elm;\n      };\n      var getNode = function () {\n        return getNode$1(editor.getBody(), getRng());\n      };\n      var getSelectedBlocks$$1 = function (startElm, endElm) {\n        return getSelectedBlocks(dom, getRng(), startElm, endElm);\n      };\n      var isForward = function () {\n        var sel = getSel();\n        var anchorRange, focusRange;\n        if (!sel || !sel.anchorNode || !sel.focusNode) {\n          return true;\n        }\n        anchorRange = dom.createRng();\n        anchorRange.setStart(sel.anchorNode, sel.anchorOffset);\n        anchorRange.collapse(true);\n        focusRange = dom.createRng();\n        focusRange.setStart(sel.focusNode, sel.focusOffset);\n        focusRange.collapse(true);\n        return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0;\n      };\n      var normalize = function () {\n        var rng = getRng();\n        var sel = getSel();\n        if (!MultiRange.hasMultipleRanges(sel) && hasAnyRanges(editor)) {\n          var normRng = NormalizeRange.normalize(dom, rng);\n          normRng.each(function (normRng) {\n            setRng(normRng, isForward());\n          });\n          return normRng.getOr(rng);\n        }\n        return rng;\n      };\n      var selectorChanged = function (selector, callback) {\n        var currentSelectors;\n        if (!selectorChangedData) {\n          selectorChangedData = {};\n          currentSelectors = {};\n          editor.on('NodeChange', function (e) {\n            var node = e.element, parents = dom.getParents(node, null, dom.getRoot()), matchedSelectors = {};\n            each$j(selectorChangedData, function (callbacks, selector) {\n              each$j(parents, function (node) {\n                if (dom.is(node, selector)) {\n                  if (!currentSelectors[selector]) {\n                    each$j(callbacks, function (callback) {\n                      callback(true, {\n                        node: node,\n                        selector: selector,\n                        parents: parents\n                      });\n                    });\n                    currentSelectors[selector] = callbacks;\n                  }\n                  matchedSelectors[selector] = callbacks;\n                  return false;\n                }\n              });\n            });\n            each$j(currentSelectors, function (callbacks, selector) {\n              if (!matchedSelectors[selector]) {\n                delete currentSelectors[selector];\n                each$j(callbacks, function (callback) {\n                  callback(false, {\n                    node: node,\n                    selector: selector,\n                    parents: parents\n                  });\n                });\n              }\n            });\n          });\n        }\n        if (!selectorChangedData[selector]) {\n          selectorChangedData[selector] = [];\n        }\n        selectorChangedData[selector].push(callback);\n        return exports;\n      };\n      var getScrollContainer = function () {\n        var scrollContainer;\n        var node = dom.getRoot();\n        while (node && node.nodeName !== 'BODY') {\n          if (node.scrollHeight > node.clientHeight) {\n            scrollContainer = node;\n            break;\n          }\n          node = node.parentNode;\n        }\n        return scrollContainer;\n      };\n      var scrollIntoView = function (elm, alignToTop) {\n        return ScrollIntoView.scrollElementIntoView(editor, elm, alignToTop);\n      };\n      var placeCaretAt = function (clientX, clientY) {\n        return setRng(CaretRangeFromPoint.fromPoint(clientX, clientY, editor.getDoc()));\n      };\n      var getBoundingClientRect = function () {\n        var rng = getRng();\n        return rng.collapsed ? CaretPosition$1.fromRangeStart(rng).getClientRects()[0] : rng.getBoundingClientRect();\n      };\n      var destroy = function () {\n        win = selectedRange = explicitRange = null;\n        controlSelection.destroy();\n      };\n      var exports = {\n        bookmarkManager: null,\n        controlSelection: null,\n        dom: dom,\n        win: win,\n        serializer: serializer,\n        editor: editor,\n        collapse: collapse,\n        setCursorLocation: setCursorLocation,\n        getContent: getContent,\n        setContent: setContent,\n        getBookmark: getBookmark,\n        moveToBookmark: moveToBookmark,\n        select: select,\n        isCollapsed: isCollapsed,\n        isForward: isForward,\n        setNode: setNode,\n        getNode: getNode,\n        getSel: getSel,\n        setRng: setRng,\n        getRng: getRng,\n        getStart: getStart,\n        getEnd: getEnd$$1,\n        getSelectedBlocks: getSelectedBlocks$$1,\n        normalize: normalize,\n        selectorChanged: selectorChanged,\n        getScrollContainer: getScrollContainer,\n        scrollIntoView: scrollIntoView,\n        placeCaretAt: placeCaretAt,\n        getBoundingClientRect: getBoundingClientRect,\n        destroy: destroy\n      };\n      bookmarkManager = BookmarkManager$1(exports);\n      controlSelection = ControlSelection(exports, editor);\n      exports.bookmarkManager = bookmarkManager;\n      exports.controlSelection = controlSelection;\n      return exports;\n    };\n\n    var isContentEditableFalse$b = NodeType.isContentEditableFalse;\n    var getSelectedNode$1 = getSelectedNode;\n    var isAfterContentEditableFalse$2 = isAfterContentEditableFalse;\n    var isBeforeContentEditableFalse$2 = isBeforeContentEditableFalse;\n    var getVisualCaretPosition = function (walkFn, caretPosition) {\n      while (caretPosition = walkFn(caretPosition)) {\n        if (caretPosition.isVisible()) {\n          return caretPosition;\n        }\n      }\n      return caretPosition;\n    };\n    var isMoveInsideSameBlock = function (from, to) {\n      var inSameBlock = isInSameBlock(from, to);\n      if (!inSameBlock && NodeType.isBr(from.getNode())) {\n        return true;\n      }\n      return inSameBlock;\n    };\n    var moveToCeFalseHorizontally = function (direction, editor, getNextPosFn, range$$1) {\n      var node, caretPosition, peekCaretPosition, rangeIsInContainerBlock;\n      var forwards = direction === HDirection.Forwards;\n      var isBeforeContentEditableFalseFn = forwards ? isBeforeContentEditableFalse$2 : isAfterContentEditableFalse$2;\n      if (!range$$1.collapsed) {\n        node = getSelectedNode$1(range$$1);\n        if (isContentEditableFalse$b(node)) {\n          return showCaret(direction, editor, node, direction === HDirection.Backwards, true);\n        }\n      }\n      rangeIsInContainerBlock = isRangeInCaretContainerBlock(range$$1);\n      caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range$$1);\n      if (isBeforeContentEditableFalseFn(caretPosition)) {\n        return selectNode(editor, caretPosition.getNode(!forwards));\n      }\n      caretPosition = getNextPosFn(caretPosition);\n      if (!caretPosition) {\n        if (rangeIsInContainerBlock) {\n          return range$$1;\n        }\n        return null;\n      }\n      if (isBeforeContentEditableFalseFn(caretPosition)) {\n        return showCaret(direction, editor, caretPosition.getNode(!forwards), forwards, true);\n      }\n      peekCaretPosition = getNextPosFn(caretPosition);\n      if (isBeforeContentEditableFalseFn(peekCaretPosition)) {\n        if (isMoveInsideSameBlock(caretPosition, peekCaretPosition)) {\n          return showCaret(direction, editor, peekCaretPosition.getNode(!forwards), forwards, true);\n        }\n      }\n      if (rangeIsInContainerBlock) {\n        return renderRangeCaret(editor, caretPosition.toRange(), true);\n      }\n      return null;\n    };\n    var moveToCeFalseVertically = function (direction, editor, walkerFn, range$$1) {\n      var caretPosition, linePositions, nextLinePositions;\n      var closestNextLineRect, caretClientRect, clientX;\n      var dist1, dist2, contentEditableFalseNode;\n      contentEditableFalseNode = getSelectedNode$1(range$$1);\n      caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range$$1);\n      linePositions = walkerFn(editor.getBody(), isAboveLine(1), caretPosition);\n      nextLinePositions = filter(linePositions, isLine(1));\n      caretClientRect = ArrUtils.last(caretPosition.getClientRects());\n      if (isBeforeContentEditableFalse$2(caretPosition) || isBeforeTable(caretPosition)) {\n        contentEditableFalseNode = caretPosition.getNode();\n      }\n      if (isAfterContentEditableFalse$2(caretPosition) || isAfterTable(caretPosition)) {\n        contentEditableFalseNode = caretPosition.getNode(true);\n      }\n      if (!caretClientRect) {\n        return null;\n      }\n      clientX = caretClientRect.left;\n      closestNextLineRect = findClosestClientRect(nextLinePositions, clientX);\n      if (closestNextLineRect) {\n        if (isContentEditableFalse$b(closestNextLineRect.node)) {\n          dist1 = Math.abs(clientX - closestNextLineRect.left);\n          dist2 = Math.abs(clientX - closestNextLineRect.right);\n          return showCaret(direction, editor, closestNextLineRect.node, dist1 < dist2, true);\n        }\n      }\n      if (contentEditableFalseNode) {\n        var caretPositions = positionsUntil(direction, editor.getBody(), isAboveLine(1), contentEditableFalseNode);\n        closestNextLineRect = findClosestClientRect(filter(caretPositions, isLine(1)), clientX);\n        if (closestNextLineRect) {\n          return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true);\n        }\n        closestNextLineRect = ArrUtils.last(filter(caretPositions, isLine(0)));\n        if (closestNextLineRect) {\n          return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true);\n        }\n      }\n    };\n    var createTextBlock = function (editor) {\n      var textBlock = editor.dom.create(editor.settings.forced_root_block);\n      if (!Env.ie || Env.ie >= 11) {\n        textBlock.innerHTML = '<br data-mce-bogus=\"1\">';\n      }\n      return textBlock;\n    };\n    var exitPreBlock = function (editor, direction, range$$1) {\n      var pre, caretPos, newBlock;\n      var caretWalker = CaretWalker(editor.getBody());\n      var getNextVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.next);\n      var getPrevVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.prev);\n      if (range$$1.collapsed && editor.settings.forced_root_block) {\n        pre = editor.dom.getParent(range$$1.startContainer, 'PRE');\n        if (!pre) {\n          return;\n        }\n        if (direction === 1) {\n          caretPos = getNextVisualCaretPosition(CaretPosition$1.fromRangeStart(range$$1));\n        } else {\n          caretPos = getPrevVisualCaretPosition(CaretPosition$1.fromRangeStart(range$$1));\n        }\n        if (!caretPos) {\n          newBlock = createTextBlock(editor);\n          if (direction === 1) {\n            editor.$(pre).after(newBlock);\n          } else {\n            editor.$(pre).before(newBlock);\n          }\n          editor.selection.select(newBlock, true);\n          editor.selection.collapse();\n        }\n      }\n    };\n    var getHorizontalRange = function (editor, forward) {\n      var caretWalker = CaretWalker(editor.getBody());\n      var getNextVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.next);\n      var getPrevVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.prev);\n      var newRange;\n      var direction = forward ? HDirection.Forwards : HDirection.Backwards;\n      var getNextPosFn = forward ? getNextVisualCaretPosition : getPrevVisualCaretPosition;\n      var range$$1 = editor.selection.getRng();\n      newRange = moveToCeFalseHorizontally(direction, editor, getNextPosFn, range$$1);\n      if (newRange) {\n        return newRange;\n      }\n      newRange = exitPreBlock(editor, direction, range$$1);\n      if (newRange) {\n        return newRange;\n      }\n      return null;\n    };\n    var getVerticalRange = function (editor, down) {\n      var newRange;\n      var direction = down ? 1 : -1;\n      var walkerFn = down ? downUntil : upUntil;\n      var range$$1 = editor.selection.getRng();\n      newRange = moveToCeFalseVertically(direction, editor, walkerFn, range$$1);\n      if (newRange) {\n        return newRange;\n      }\n      newRange = exitPreBlock(editor, direction, range$$1);\n      if (newRange) {\n        return newRange;\n      }\n      return null;\n    };\n    var moveH = function (editor, forward) {\n      return function () {\n        var newRng = getHorizontalRange(editor, forward);\n        if (newRng) {\n          editor.selection.setRng(newRng);\n          return true;\n        } else {\n          return false;\n        }\n      };\n    };\n    var moveV = function (editor, down) {\n      return function () {\n        var newRng = getVerticalRange(editor, down);\n        if (newRng) {\n          editor.selection.setRng(newRng);\n          return true;\n        } else {\n          return false;\n        }\n      };\n    };\n\n    var BreakType;\n    (function (BreakType) {\n      BreakType[BreakType['Br'] = 0] = 'Br';\n      BreakType[BreakType['Block'] = 1] = 'Block';\n      BreakType[BreakType['Wrap'] = 2] = 'Wrap';\n      BreakType[BreakType['Eol'] = 3] = 'Eol';\n    }(BreakType || (BreakType = {})));\n    var flip = function (direction, positions) {\n      return direction === HDirection.Backwards ? positions.reverse() : positions;\n    };\n    var walk$3 = function (direction, caretWalker, pos) {\n      return direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos);\n    };\n    var getBreakType = function (scope, direction, currentPos, nextPos) {\n      if (NodeType.isBr(nextPos.getNode(direction === HDirection.Forwards))) {\n        return BreakType.Br;\n      } else if (isInSameBlock(currentPos, nextPos) === false) {\n        return BreakType.Block;\n      } else {\n        return BreakType.Wrap;\n      }\n    };\n    var getPositionsUntil = function (predicate, direction, scope, start) {\n      var caretWalker = CaretWalker(scope);\n      var currentPos = start, nextPos;\n      var positions = [];\n      while (currentPos) {\n        nextPos = walk$3(direction, caretWalker, currentPos);\n        if (!nextPos) {\n          break;\n        }\n        if (NodeType.isBr(nextPos.getNode(false))) {\n          if (direction === HDirection.Forwards) {\n            return {\n              positions: flip(direction, positions).concat([nextPos]),\n              breakType: BreakType.Br,\n              breakAt: Option.some(nextPos)\n            };\n          } else {\n            return {\n              positions: flip(direction, positions),\n              breakType: BreakType.Br,\n              breakAt: Option.some(nextPos)\n            };\n          }\n        }\n        if (!nextPos.isVisible()) {\n          currentPos = nextPos;\n          continue;\n        }\n        if (predicate(currentPos, nextPos)) {\n          var breakType = getBreakType(scope, direction, currentPos, nextPos);\n          return {\n            positions: flip(direction, positions),\n            breakType: breakType,\n            breakAt: Option.some(nextPos)\n          };\n        }\n        positions.push(nextPos);\n        currentPos = nextPos;\n      }\n      return {\n        positions: flip(direction, positions),\n        breakType: BreakType.Eol,\n        breakAt: Option.none()\n      };\n    };\n    var getAdjacentLinePositions = function (direction, getPositionsUntilBreak, scope, start) {\n      return getPositionsUntilBreak(scope, start).breakAt.map(function (pos) {\n        var positions = getPositionsUntilBreak(scope, pos).positions;\n        return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions);\n      }).getOr([]);\n    };\n    var findClosestHorizontalPositionFromPoint = function (positions, x) {\n      return foldl(positions, function (acc, newPos) {\n        return acc.fold(function () {\n          return Option.some(newPos);\n        }, function (lastPos) {\n          return liftN([\n            head(lastPos.getClientRects()),\n            head(newPos.getClientRects())\n          ], function (lastRect, newRect) {\n            var lastDist = Math.abs(x - lastRect.left);\n            var newDist = Math.abs(x - newRect.left);\n            return newDist <= lastDist ? newPos : lastPos;\n          }).or(acc);\n        });\n      }, Option.none());\n    };\n    var findClosestHorizontalPosition = function (positions, pos) {\n      return head(pos.getClientRects()).bind(function (targetRect) {\n        return findClosestHorizontalPositionFromPoint(positions, targetRect.left);\n      });\n    };\n    var getPositionsUntilPreviousLine = curry(getPositionsUntil, CaretPosition.isAbove, -1);\n    var getPositionsUntilNextLine = curry(getPositionsUntil, CaretPosition.isBelow, 1);\n    var isAtFirstLine = function (scope, pos) {\n      return getPositionsUntilPreviousLine(scope, pos).breakAt.isNone();\n    };\n    var isAtLastLine = function (scope, pos) {\n      return getPositionsUntilNextLine(scope, pos).breakAt.isNone();\n    };\n    var getPositionsAbove = curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine);\n    var getPositionsBelow = curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine);\n    var getFirstLinePositions = function (scope) {\n      return CaretFinder.firstPositionIn(scope).map(function (pos) {\n        return [pos].concat(getPositionsUntilNextLine(scope, pos).positions);\n      }).getOr([]);\n    };\n    var getLastLinePositions = function (scope) {\n      return CaretFinder.lastPositionIn(scope).map(function (pos) {\n        return getPositionsUntilPreviousLine(scope, pos).positions.concat(pos);\n      }).getOr([]);\n    };\n\n    var deflate = function (rect, delta) {\n      return {\n        left: rect.left - delta,\n        top: rect.top - delta,\n        right: rect.right + delta * 2,\n        bottom: rect.bottom + delta * 2,\n        width: rect.width + delta,\n        height: rect.height + delta\n      };\n    };\n    var getCorners = function (getYAxisValue, tds) {\n      return bind(tds, function (td) {\n        var rect = deflate(clone$2(td.getBoundingClientRect()), -1);\n        return [\n          {\n            x: rect.left,\n            y: getYAxisValue(rect),\n            cell: td\n          },\n          {\n            x: rect.right,\n            y: getYAxisValue(rect),\n            cell: td\n          }\n        ];\n      });\n    };\n    var findClosestCorner = function (corners, x, y) {\n      return foldl(corners, function (acc, newCorner) {\n        return acc.fold(function () {\n          return Option.some(newCorner);\n        }, function (oldCorner) {\n          var oldDist = Math.sqrt(Math.abs(oldCorner.x - x) + Math.abs(oldCorner.y - y));\n          var newDist = Math.sqrt(Math.abs(newCorner.x - x) + Math.abs(newCorner.y - y));\n          return Option.some(newDist < oldDist ? newCorner : oldCorner);\n        });\n      }, Option.none());\n    };\n    var getClosestCell$1 = function (getYAxisValue, isTargetCorner, table, x, y) {\n      var cells = descendants$1(Element$$1.fromDom(table), 'td,th,caption').map(function (e) {\n        return e.dom();\n      });\n      var corners = filter(getCorners(getYAxisValue, cells), function (corner) {\n        return isTargetCorner(corner, y);\n      });\n      return findClosestCorner(corners, x, y).map(function (corner) {\n        return corner.cell;\n      });\n    };\n    var getBottomValue = function (rect) {\n      return rect.bottom;\n    };\n    var getTopValue = function (rect) {\n      return rect.top;\n    };\n    var isAbove$1 = function (corner, y) {\n      return corner.y < y;\n    };\n    var isBelow$1 = function (corner, y) {\n      return corner.y > y;\n    };\n    var getClosestCellAbove = curry(getClosestCell$1, getBottomValue, isAbove$1);\n    var getClosestCellBelow = curry(getClosestCell$1, getTopValue, isBelow$1);\n    var findClosestPositionInAboveCell = function (table, pos) {\n      return head(pos.getClientRects()).bind(function (rect) {\n        return getClosestCellAbove(table, rect.left, rect.top);\n      }).bind(function (cell) {\n        return findClosestHorizontalPosition(getLastLinePositions(cell), pos);\n      });\n    };\n    var findClosestPositionInBelowCell = function (table, pos) {\n      return last(pos.getClientRects()).bind(function (rect) {\n        return getClosestCellBelow(table, rect.left, rect.top);\n      }).bind(function (cell) {\n        return findClosestHorizontalPosition(getFirstLinePositions(cell), pos);\n      });\n    };\n\n    var moveToRange = function (editor, rng) {\n      editor.selection.setRng(rng);\n      ScrollIntoView.scrollRangeIntoView(editor, rng);\n    };\n    var hasNextBreak = function (getPositionsUntil, scope, lineInfo) {\n      return lineInfo.breakAt.map(function (breakPos) {\n        return getPositionsUntil(scope, breakPos).breakAt.isSome();\n      }).getOr(false);\n    };\n    var startsWithWrapBreak = function (lineInfo) {\n      return lineInfo.breakType === BreakType.Wrap && lineInfo.positions.length === 0;\n    };\n    var startsWithBrBreak = function (lineInfo) {\n      return lineInfo.breakType === BreakType.Br && lineInfo.positions.length === 1;\n    };\n    var isAtTableCellLine = function (getPositionsUntil, scope, pos) {\n      var lineInfo = getPositionsUntil(scope, pos);\n      if (startsWithWrapBreak(lineInfo) || !NodeType.isBr(pos.getNode()) && startsWithBrBreak(lineInfo)) {\n        return !hasNextBreak(getPositionsUntil, scope, lineInfo);\n      } else {\n        return lineInfo.breakAt.isNone();\n      }\n    };\n    var isAtFirstTableCellLine = curry(isAtTableCellLine, getPositionsUntilPreviousLine);\n    var isAtLastTableCellLine = curry(isAtTableCellLine, getPositionsUntilNextLine);\n    var isCaretAtStartOrEndOfTable = function (forward, rng, table) {\n      var caretPos = CaretPosition$1.fromRangeStart(rng);\n      return CaretFinder.positionIn(!forward, table).map(function (pos) {\n        return pos.isEqual(caretPos);\n      }).getOr(false);\n    };\n    var navigateHorizontally = function (editor, forward, table, td) {\n      var rng = editor.selection.getRng();\n      var direction = forward ? 1 : -1;\n      if (isFakeCaretTableBrowser() && isCaretAtStartOrEndOfTable(forward, rng, table)) {\n        var newRng = showCaret(direction, editor, table, !forward, true);\n        moveToRange(editor, newRng);\n        return true;\n      }\n      return false;\n    };\n    var getClosestAbovePosition = function (root, table, start) {\n      return findClosestPositionInAboveCell(table, start).orThunk(function () {\n        return head(start.getClientRects()).bind(function (rect) {\n          return findClosestHorizontalPositionFromPoint(getPositionsAbove(root, CaretPosition$1.before(table)), rect.left);\n        });\n      }).getOr(CaretPosition$1.before(table));\n    };\n    var getClosestBelowPosition = function (root, table, start) {\n      return findClosestPositionInBelowCell(table, start).orThunk(function () {\n        return head(start.getClientRects()).bind(function (rect) {\n          return findClosestHorizontalPositionFromPoint(getPositionsBelow(root, CaretPosition$1.after(table)), rect.left);\n        });\n      }).getOr(CaretPosition$1.after(table));\n    };\n    var getTable = function (previous, pos) {\n      var node = pos.getNode(previous);\n      return NodeType.isElement(node) && node.nodeName === 'TABLE' ? Option.some(node) : Option.none();\n    };\n    var renderBlock = function (down, editor, table, pos) {\n      var forcedRootBlock = Settings.getForcedRootBlock(editor);\n      if (forcedRootBlock) {\n        editor.undoManager.transact(function () {\n          var element = Element$$1.fromTag(forcedRootBlock);\n          setAll(element, Settings.getForcedRootBlockAttrs(editor));\n          append(element, Element$$1.fromTag('br'));\n          if (down) {\n            after(Element$$1.fromDom(table), element);\n          } else {\n            before(Element$$1.fromDom(table), element);\n          }\n          var rng = editor.dom.createRng();\n          rng.setStart(element.dom(), 0);\n          rng.setEnd(element.dom(), 0);\n          moveToRange(editor, rng);\n        });\n      } else {\n        moveToRange(editor, pos.toRange());\n      }\n    };\n    var moveCaret = function (editor, down, pos) {\n      var table = down ? getTable(true, pos) : getTable(false, pos);\n      var last$$1 = down === false;\n      table.fold(function () {\n        return moveToRange(editor, pos.toRange());\n      }, function (table) {\n        return CaretFinder.positionIn(last$$1, editor.getBody()).filter(function (lastPos) {\n          return lastPos.isEqual(pos);\n        }).fold(function () {\n          return moveToRange(editor, pos.toRange());\n        }, function (_) {\n          return renderBlock(down, editor, table, pos);\n        });\n      });\n    };\n    var navigateVertically = function (editor, down, table, td) {\n      var rng = editor.selection.getRng();\n      var pos = CaretPosition$1.fromRangeStart(rng);\n      var root = editor.getBody();\n      if (!down && isAtFirstTableCellLine(td, pos)) {\n        var newPos = getClosestAbovePosition(root, table, pos);\n        moveCaret(editor, down, newPos);\n        return true;\n      } else if (down && isAtLastTableCellLine(td, pos)) {\n        var newPos = getClosestBelowPosition(root, table, pos);\n        moveCaret(editor, down, newPos);\n        return true;\n      } else {\n        return false;\n      }\n    };\n    var moveH$1 = function (editor, forward) {\n      return function () {\n        return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) {\n          return Option.from(editor.dom.getParent(td, 'table')).map(function (table) {\n            return navigateHorizontally(editor, forward, table, td);\n          });\n        }).getOr(false);\n      };\n    };\n    var moveV$1 = function (editor, forward) {\n      return function () {\n        return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) {\n          return Option.from(editor.dom.getParent(td, 'table')).map(function (table) {\n            return navigateVertically(editor, forward, table, td);\n          });\n        }).getOr(false);\n      };\n    };\n\n    var isTarget = function (node) {\n      return contains(['figcaption'], name(node));\n    };\n    var rangeBefore = function (target) {\n      var rng = document.createRange();\n      rng.setStartBefore(target.dom());\n      rng.setEndBefore(target.dom());\n      return rng;\n    };\n    var insertElement = function (root, elm, forward) {\n      if (forward) {\n        append(root, elm);\n      } else {\n        prepend(root, elm);\n      }\n    };\n    var insertBr = function (root, forward) {\n      var br = Element$$1.fromTag('br');\n      insertElement(root, br, forward);\n      return rangeBefore(br);\n    };\n    var insertBlock$1 = function (root, forward, blockName, attrs) {\n      var block = Element$$1.fromTag(blockName);\n      var br = Element$$1.fromTag('br');\n      setAll(block, attrs);\n      append(block, br);\n      insertElement(root, block, forward);\n      return rangeBefore(br);\n    };\n    var insertEmptyLine = function (root, rootBlockName, attrs, forward) {\n      if (rootBlockName === '') {\n        return insertBr(root, forward);\n      } else {\n        return insertBlock$1(root, forward, rootBlockName, attrs);\n      }\n    };\n    var getClosestTargetBlock = function (pos, root) {\n      var isRoot = curry(eq, root);\n      return closest(Element$$1.fromDom(pos.container()), isBlock, isRoot).filter(isTarget);\n    };\n    var isAtFirstOrLastLine = function (root, forward, pos) {\n      return forward ? isAtLastLine(root.dom(), pos) : isAtFirstLine(root.dom(), pos);\n    };\n    var moveCaretToNewEmptyLine = function (editor, forward) {\n      var root = Element$$1.fromDom(editor.getBody());\n      var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n      var rootBlock = Settings.getForcedRootBlock(editor);\n      var rootBlockAttrs = Settings.getForcedRootBlockAttrs(editor);\n      return getClosestTargetBlock(pos, root).exists(function () {\n        if (isAtFirstOrLastLine(root, forward, pos)) {\n          var rng = insertEmptyLine(root, rootBlock, rootBlockAttrs, forward);\n          editor.selection.setRng(rng);\n          return true;\n        } else {\n          return false;\n        }\n      });\n    };\n    var moveV$2 = function (editor, forward) {\n      return function () {\n        if (editor.selection.isCollapsed()) {\n          return moveCaretToNewEmptyLine(editor, forward);\n        } else {\n          return false;\n        }\n      };\n    };\n\n    var defaultPatterns = function (patterns) {\n      return map(patterns, function (pattern) {\n        return merge({\n          shiftKey: false,\n          altKey: false,\n          ctrlKey: false,\n          metaKey: false,\n          keyCode: 0,\n          action: noop\n        }, pattern);\n      });\n    };\n    var matchesEvent = function (pattern, evt) {\n      return evt.keyCode === pattern.keyCode && evt.shiftKey === pattern.shiftKey && evt.altKey === pattern.altKey && evt.ctrlKey === pattern.ctrlKey && evt.metaKey === pattern.metaKey;\n    };\n    var match$1 = function (patterns, evt) {\n      return bind(defaultPatterns(patterns), function (pattern) {\n        return matchesEvent(pattern, evt) ? [pattern] : [];\n      });\n    };\n    var action = function (f) {\n      var x = [];\n      for (var _i = 1; _i < arguments.length; _i++) {\n        x[_i - 1] = arguments[_i];\n      }\n      var args = Array.prototype.slice.call(arguments, 1);\n      return function () {\n        return f.apply(null, args);\n      };\n    };\n    var execute = function (patterns, evt) {\n      return find(match$1(patterns, evt), function (pattern) {\n        return pattern.action();\n      });\n    };\n    var MatchKeys = {\n      match: match$1,\n      action: action,\n      execute: execute\n    };\n\n    var executeKeydownOverride = function (editor, caret, evt) {\n      var os = PlatformDetection$1.detect().os;\n      MatchKeys.execute([\n        {\n          keyCode: VK.RIGHT,\n          action: moveH(editor, true)\n        },\n        {\n          keyCode: VK.LEFT,\n          action: moveH(editor, false)\n        },\n        {\n          keyCode: VK.UP,\n          action: moveV(editor, false)\n        },\n        {\n          keyCode: VK.DOWN,\n          action: moveV(editor, true)\n        },\n        {\n          keyCode: VK.RIGHT,\n          action: moveH$1(editor, true)\n        },\n        {\n          keyCode: VK.LEFT,\n          action: moveH$1(editor, false)\n        },\n        {\n          keyCode: VK.UP,\n          action: moveV$1(editor, false)\n        },\n        {\n          keyCode: VK.DOWN,\n          action: moveV$1(editor, true)\n        },\n        {\n          keyCode: VK.RIGHT,\n          action: BoundarySelection.move(editor, caret, true)\n        },\n        {\n          keyCode: VK.LEFT,\n          action: BoundarySelection.move(editor, caret, false)\n        },\n        {\n          keyCode: VK.RIGHT,\n          ctrlKey: !os.isOSX(),\n          altKey: os.isOSX(),\n          action: BoundarySelection.moveNextWord(editor, caret)\n        },\n        {\n          keyCode: VK.LEFT,\n          ctrlKey: !os.isOSX(),\n          altKey: os.isOSX(),\n          action: BoundarySelection.movePrevWord(editor, caret)\n        },\n        {\n          keyCode: VK.UP,\n          action: moveV$2(editor, false)\n        },\n        {\n          keyCode: VK.DOWN,\n          action: moveV$2(editor, true)\n        }\n      ], evt).each(function (_) {\n        evt.preventDefault();\n      });\n    };\n    var setup$7 = function (editor, caret) {\n      editor.on('keydown', function (evt) {\n        if (evt.isDefaultPrevented() === false) {\n          executeKeydownOverride(editor, caret, evt);\n        }\n      });\n    };\n    var ArrowKeys = { setup: setup$7 };\n\n    var getParentInlines = function (rootElm, startElm) {\n      var parents$$1 = Parents.parentsAndSelf(startElm, rootElm);\n      return findIndex(parents$$1, isBlock).fold(constant(parents$$1), function (index) {\n        return parents$$1.slice(0, index);\n      });\n    };\n    var hasOnlyOneChild$1 = function (elm) {\n      return children(elm).length === 1;\n    };\n    var deleteLastPosition = function (forward, editor, target, parentInlines) {\n      var isFormatElement$$1 = curry(isFormatElement, editor);\n      var formatNodes = map(filter(parentInlines, isFormatElement$$1), function (elm) {\n        return elm.dom();\n      });\n      if (formatNodes.length === 0) {\n        DeleteElement.deleteElement(editor, forward, target);\n      } else {\n        var pos = replaceWithCaretFormat(target.dom(), formatNodes);\n        editor.selection.setRng(pos.toRange());\n      }\n    };\n    var deleteCaret$1 = function (editor, forward) {\n      var rootElm = Element$$1.fromDom(editor.getBody());\n      var startElm = Element$$1.fromDom(editor.selection.getStart());\n      var parentInlines = filter(getParentInlines(rootElm, startElm), hasOnlyOneChild$1);\n      return last(parentInlines).map(function (target) {\n        var fromPos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n        if (DeleteUtils.willDeleteLastPositionInElement(forward, fromPos, target.dom()) && !isEmptyCaretFormatElement(target)) {\n          deleteLastPosition(forward, editor, target, parentInlines);\n          return true;\n        } else {\n          return false;\n        }\n      }).getOr(false);\n    };\n    var backspaceDelete$5 = function (editor, forward) {\n      return editor.selection.isCollapsed() ? deleteCaret$1(editor, forward) : false;\n    };\n    var InlineFormatDelete = { backspaceDelete: backspaceDelete$5 };\n\n    var executeKeydownOverride$1 = function (editor, caret, evt) {\n      MatchKeys.execute([\n        {\n          keyCode: VK.BACKSPACE,\n          action: MatchKeys.action(CefDelete.backspaceDelete, editor, false)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: MatchKeys.action(CefDelete.backspaceDelete, editor, true)\n        },\n        {\n          keyCode: VK.BACKSPACE,\n          action: MatchKeys.action(InlineBoundaryDelete.backspaceDelete, editor, caret, false)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: MatchKeys.action(InlineBoundaryDelete.backspaceDelete, editor, caret, true)\n        },\n        {\n          keyCode: VK.BACKSPACE,\n          action: MatchKeys.action(TableDelete.backspaceDelete, editor, false)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: MatchKeys.action(TableDelete.backspaceDelete, editor, true)\n        },\n        {\n          keyCode: VK.BACKSPACE,\n          action: MatchKeys.action(BlockRangeDelete.backspaceDelete, editor, false)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: MatchKeys.action(BlockRangeDelete.backspaceDelete, editor, true)\n        },\n        {\n          keyCode: VK.BACKSPACE,\n          action: MatchKeys.action(BlockBoundaryDelete.backspaceDelete, editor, false)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: MatchKeys.action(BlockBoundaryDelete.backspaceDelete, editor, true)\n        },\n        {\n          keyCode: VK.BACKSPACE,\n          action: MatchKeys.action(InlineFormatDelete.backspaceDelete, editor, false)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: MatchKeys.action(InlineFormatDelete.backspaceDelete, editor, true)\n        }\n      ], evt).each(function (_) {\n        evt.preventDefault();\n      });\n    };\n    var executeKeyupOverride = function (editor, evt) {\n      MatchKeys.execute([\n        {\n          keyCode: VK.BACKSPACE,\n          action: MatchKeys.action(CefDelete.paddEmptyElement, editor)\n        },\n        {\n          keyCode: VK.DELETE,\n          action: MatchKeys.action(CefDelete.paddEmptyElement, editor)\n        }\n      ], evt);\n    };\n    var setup$8 = function (editor, caret) {\n      editor.on('keydown', function (evt) {\n        if (evt.isDefaultPrevented() === false) {\n          executeKeydownOverride$1(editor, caret, evt);\n        }\n      });\n      editor.on('keyup', function (evt) {\n        if (evt.isDefaultPrevented() === false) {\n          executeKeyupOverride(editor, evt);\n        }\n      });\n    };\n    var DeleteBackspaceKeys = { setup: setup$8 };\n\n    var firstNonWhiteSpaceNodeSibling = function (node) {\n      while (node) {\n        if (node.nodeType === 1 || node.nodeType === 3 && node.data && /[\\r\\n\\s]/.test(node.data)) {\n          return node;\n        }\n        node = node.nextSibling;\n      }\n    };\n    var moveToCaretPosition = function (editor, root) {\n      var walker, node, rng, lastNode = root, tempElm;\n      var dom = editor.dom;\n      var moveCaretBeforeOnEnterElementsMap = editor.schema.getMoveCaretBeforeOnEnterElements();\n      if (!root) {\n        return;\n      }\n      if (/^(LI|DT|DD)$/.test(root.nodeName)) {\n        var firstChild = firstNonWhiteSpaceNodeSibling(root.firstChild);\n        if (firstChild && /^(UL|OL|DL)$/.test(firstChild.nodeName)) {\n          root.insertBefore(dom.doc.createTextNode('\\xA0'), root.firstChild);\n        }\n      }\n      rng = dom.createRng();\n      root.normalize();\n      if (root.hasChildNodes()) {\n        walker = new TreeWalker(root, root);\n        while (node = walker.current()) {\n          if (NodeType.isText(node)) {\n            rng.setStart(node, 0);\n            rng.setEnd(node, 0);\n            break;\n          }\n          if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) {\n            rng.setStartBefore(node);\n            rng.setEndBefore(node);\n            break;\n          }\n          lastNode = node;\n          node = walker.next();\n        }\n        if (!node) {\n          rng.setStart(lastNode, 0);\n          rng.setEnd(lastNode, 0);\n        }\n      } else {\n        if (NodeType.isBr(root)) {\n          if (root.nextSibling && dom.isBlock(root.nextSibling)) {\n            rng.setStartBefore(root);\n            rng.setEndBefore(root);\n          } else {\n            rng.setStartAfter(root);\n            rng.setEndAfter(root);\n          }\n        } else {\n          rng.setStart(root, 0);\n          rng.setEnd(root, 0);\n        }\n      }\n      editor.selection.setRng(rng);\n      dom.remove(tempElm);\n      editor.selection.scrollIntoView(root);\n    };\n    var getEditableRoot = function (dom, node) {\n      var root = dom.getRoot();\n      var parent, editableRoot;\n      parent = node;\n      while (parent !== root && dom.getContentEditable(parent) !== 'false') {\n        if (dom.getContentEditable(parent) === 'true') {\n          editableRoot = parent;\n        }\n        parent = parent.parentNode;\n      }\n      return parent !== root ? editableRoot : root;\n    };\n    var getParentBlock$2 = function (editor) {\n      return Option.from(editor.dom.getParent(editor.selection.getStart(true), editor.dom.isBlock));\n    };\n    var getParentBlockName = function (editor) {\n      return getParentBlock$2(editor).fold(constant(''), function (parentBlock) {\n        return parentBlock.nodeName.toUpperCase();\n      });\n    };\n    var isListItemParentBlock = function (editor) {\n      return getParentBlock$2(editor).filter(function (elm) {\n        return isListItem(Element$$1.fromDom(elm));\n      }).isSome();\n    };\n    var NewLineUtils = {\n      moveToCaretPosition: moveToCaretPosition,\n      getEditableRoot: getEditableRoot,\n      getParentBlock: getParentBlock$2,\n      getParentBlockName: getParentBlockName,\n      isListItemParentBlock: isListItemParentBlock\n    };\n\n    var hasFirstChild = function (elm, name) {\n      return elm.firstChild && elm.firstChild.nodeName === name;\n    };\n    var hasParent$1 = function (elm, parentName) {\n      return elm && elm.parentNode && elm.parentNode.nodeName === parentName;\n    };\n    var isListBlock = function (elm) {\n      return elm && /^(OL|UL|LI)$/.test(elm.nodeName);\n    };\n    var isNestedList = function (elm) {\n      return isListBlock(elm) && isListBlock(elm.parentNode);\n    };\n    var getContainerBlock = function (containerBlock) {\n      var containerBlockParent = containerBlock.parentNode;\n      if (/^(LI|DT|DD)$/.test(containerBlockParent.nodeName)) {\n        return containerBlockParent;\n      }\n      return containerBlock;\n    };\n    var isFirstOrLastLi = function (containerBlock, parentBlock, first) {\n      var node = containerBlock[first ? 'firstChild' : 'lastChild'];\n      while (node) {\n        if (NodeType.isElement(node)) {\n          break;\n        }\n        node = node[first ? 'nextSibling' : 'previousSibling'];\n      }\n      return node === parentBlock;\n    };\n    var insert$1 = function (editor, createNewBlock, containerBlock, parentBlock, newBlockName) {\n      var dom = editor.dom;\n      var rng = editor.selection.getRng();\n      if (containerBlock === editor.getBody()) {\n        return;\n      }\n      if (isNestedList(containerBlock)) {\n        newBlockName = 'LI';\n      }\n      var newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR');\n      if (isFirstOrLastLi(containerBlock, parentBlock, true) && isFirstOrLastLi(containerBlock, parentBlock, false)) {\n        if (hasParent$1(containerBlock, 'LI')) {\n          dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n        } else {\n          dom.replace(newBlock, containerBlock);\n        }\n      } else if (isFirstOrLastLi(containerBlock, parentBlock, true)) {\n        if (hasParent$1(containerBlock, 'LI')) {\n          dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n          newBlock.appendChild(dom.doc.createTextNode(' '));\n          newBlock.appendChild(containerBlock);\n        } else {\n          containerBlock.parentNode.insertBefore(newBlock, containerBlock);\n        }\n      } else if (isFirstOrLastLi(containerBlock, parentBlock, false)) {\n        dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n      } else {\n        containerBlock = getContainerBlock(containerBlock);\n        var tmpRng = rng.cloneRange();\n        tmpRng.setStartAfter(parentBlock);\n        tmpRng.setEndAfter(containerBlock);\n        var fragment = tmpRng.extractContents();\n        if (newBlockName === 'LI' && hasFirstChild(fragment, 'LI')) {\n          newBlock = fragment.firstChild;\n          dom.insertAfter(fragment, containerBlock);\n        } else {\n          dom.insertAfter(fragment, containerBlock);\n          dom.insertAfter(newBlock, containerBlock);\n        }\n      }\n      dom.remove(parentBlock);\n      NewLineUtils.moveToCaretPosition(editor, newBlock);\n    };\n    var InsertLi = { insert: insert$1 };\n\n    var trimZwsp = function (fragment) {\n      each(descendants(Element$$1.fromDom(fragment), isText), function (text) {\n        var rawNode = text.dom();\n        rawNode.nodeValue = Zwsp.trim(rawNode.nodeValue);\n      });\n    };\n    var isEmptyAnchor = function (dom, elm) {\n      return elm && elm.nodeName === 'A' && dom.isEmpty(elm);\n    };\n    var isTableCell$5 = function (node) {\n      return node && /^(TD|TH|CAPTION)$/.test(node.nodeName);\n    };\n    var emptyBlock = function (elm) {\n      elm.innerHTML = '<br data-mce-bogus=\"1\">';\n    };\n    var containerAndSiblingName = function (container, nodeName) {\n      return container.nodeName === nodeName || container.previousSibling && container.previousSibling.nodeName === nodeName;\n    };\n    var canSplitBlock = function (dom, node) {\n      return node && dom.isBlock(node) && !/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) && !/^(fixed|absolute)/i.test(node.style.position) && dom.getContentEditable(node) !== 'true';\n    };\n    var trimInlineElementsOnLeftSideOfBlock = function (dom, nonEmptyElementsMap, block) {\n      var node = block;\n      var firstChilds = [];\n      var i;\n      if (!node) {\n        return;\n      }\n      while (node = node.firstChild) {\n        if (dom.isBlock(node)) {\n          return;\n        }\n        if (NodeType.isElement(node) && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) {\n          firstChilds.push(node);\n        }\n      }\n      i = firstChilds.length;\n      while (i--) {\n        node = firstChilds[i];\n        if (!node.hasChildNodes() || node.firstChild === node.lastChild && node.firstChild.nodeValue === '') {\n          dom.remove(node);\n        } else {\n          if (isEmptyAnchor(dom, node)) {\n            dom.remove(node);\n          }\n        }\n      }\n    };\n    var normalizeZwspOffset = function (start, container, offset) {\n      if (NodeType.isText(container) === false) {\n        return offset;\n      } else if (start) {\n        return offset === 1 && container.data.charAt(offset - 1) === Zwsp.ZWSP ? 0 : offset;\n      } else {\n        return offset === container.data.length - 1 && container.data.charAt(offset) === Zwsp.ZWSP ? container.data.length : offset;\n      }\n    };\n    var includeZwspInRange = function (rng) {\n      var newRng = rng.cloneRange();\n      newRng.setStart(rng.startContainer, normalizeZwspOffset(true, rng.startContainer, rng.startOffset));\n      newRng.setEnd(rng.endContainer, normalizeZwspOffset(false, rng.endContainer, rng.endOffset));\n      return newRng;\n    };\n    var trimLeadingLineBreaks = function (node) {\n      do {\n        if (NodeType.isText(node)) {\n          node.nodeValue = node.nodeValue.replace(/^[\\r\\n]+/, '');\n        }\n        node = node.firstChild;\n      } while (node);\n    };\n    var getEditableRoot$1 = function (dom, node) {\n      var root = dom.getRoot();\n      var parent, editableRoot;\n      parent = node;\n      while (parent !== root && dom.getContentEditable(parent) !== 'false') {\n        if (dom.getContentEditable(parent) === 'true') {\n          editableRoot = parent;\n        }\n        parent = parent.parentNode;\n      }\n      return parent !== root ? editableRoot : root;\n    };\n    var setForcedBlockAttrs = function (editor, node) {\n      var forcedRootBlockName = Settings.getForcedRootBlock(editor);\n      if (forcedRootBlockName && forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) {\n        editor.dom.setAttribs(node, Settings.getForcedRootBlockAttrs(editor));\n      }\n    };\n    var wrapSelfAndSiblingsInDefaultBlock = function (editor, newBlockName, rng, container, offset) {\n      var newBlock, parentBlock, startNode, node, next, rootBlockName;\n      var blockName = newBlockName || 'P';\n      var dom = editor.dom, editableRoot = getEditableRoot$1(dom, container);\n      parentBlock = dom.getParent(container, dom.isBlock);\n      if (!parentBlock || !canSplitBlock(dom, parentBlock)) {\n        parentBlock = parentBlock || editableRoot;\n        if (parentBlock === editor.getBody() || isTableCell$5(parentBlock)) {\n          rootBlockName = parentBlock.nodeName.toLowerCase();\n        } else {\n          rootBlockName = parentBlock.parentNode.nodeName.toLowerCase();\n        }\n        if (!parentBlock.hasChildNodes()) {\n          newBlock = dom.create(blockName);\n          setForcedBlockAttrs(editor, newBlock);\n          parentBlock.appendChild(newBlock);\n          rng.setStart(newBlock, 0);\n          rng.setEnd(newBlock, 0);\n          return newBlock;\n        }\n        node = container;\n        while (node.parentNode !== parentBlock) {\n          node = node.parentNode;\n        }\n        while (node && !dom.isBlock(node)) {\n          startNode = node;\n          node = node.previousSibling;\n        }\n        if (startNode && editor.schema.isValidChild(rootBlockName, blockName.toLowerCase())) {\n          newBlock = dom.create(blockName);\n          setForcedBlockAttrs(editor, newBlock);\n          startNode.parentNode.insertBefore(newBlock, startNode);\n          node = startNode;\n          while (node && !dom.isBlock(node)) {\n            next = node.nextSibling;\n            newBlock.appendChild(node);\n            node = next;\n          }\n          rng.setStart(container, offset);\n          rng.setEnd(container, offset);\n        }\n      }\n      return container;\n    };\n    var addBrToBlockIfNeeded = function (dom, block) {\n      var lastChild;\n      block.normalize();\n      lastChild = block.lastChild;\n      if (!lastChild || /^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true))) {\n        dom.add(block, 'br');\n      }\n    };\n    var insert$2 = function (editor, evt) {\n      var tmpRng, editableRoot, container, offset, parentBlock, shiftKey;\n      var newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer;\n      var dom = editor.dom;\n      var schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements();\n      var rng = editor.selection.getRng();\n      var createNewBlock = function (name$$1) {\n        var node = container, block, clonedNode, caretNode;\n        var textInlineElements = schema.getTextInlineElements();\n        if (name$$1 || parentBlockName === 'TABLE' || parentBlockName === 'HR') {\n          block = dom.create(name$$1 || newBlockName);\n          setForcedBlockAttrs(editor, block);\n        } else {\n          block = parentBlock.cloneNode(false);\n        }\n        caretNode = block;\n        if (Settings.shouldKeepStyles(editor) === false) {\n          dom.setAttrib(block, 'style', null);\n          dom.setAttrib(block, 'class', null);\n        } else {\n          do {\n            if (textInlineElements[node.nodeName]) {\n              if (isCaretNode(node)) {\n                continue;\n              }\n              clonedNode = node.cloneNode(false);\n              dom.setAttrib(clonedNode, 'id', '');\n              if (block.hasChildNodes()) {\n                clonedNode.appendChild(block.firstChild);\n                block.appendChild(clonedNode);\n              } else {\n                caretNode = clonedNode;\n                block.appendChild(clonedNode);\n              }\n            }\n          } while ((node = node.parentNode) && node !== editableRoot);\n        }\n        emptyBlock(caretNode);\n        return block;\n      };\n      var isCaretAtStartOrEndOfBlock = function (start) {\n        var walker, node, name$$1, normalizedOffset;\n        normalizedOffset = normalizeZwspOffset(start, container, offset);\n        if (NodeType.isText(container) && (start ? normalizedOffset > 0 : normalizedOffset < container.nodeValue.length)) {\n          return false;\n        }\n        if (container.parentNode === parentBlock && isAfterLastNodeInContainer && !start) {\n          return true;\n        }\n        if (start && NodeType.isElement(container) && container === parentBlock.firstChild) {\n          return true;\n        }\n        if (containerAndSiblingName(container, 'TABLE') || containerAndSiblingName(container, 'HR')) {\n          return isAfterLastNodeInContainer && !start || !isAfterLastNodeInContainer && start;\n        }\n        walker = new TreeWalker(container, parentBlock);\n        if (NodeType.isText(container)) {\n          if (start && normalizedOffset === 0) {\n            walker.prev();\n          } else if (!start && normalizedOffset === container.nodeValue.length) {\n            walker.next();\n          }\n        }\n        while (node = walker.current()) {\n          if (NodeType.isElement(node)) {\n            if (!node.getAttribute('data-mce-bogus')) {\n              name$$1 = node.nodeName.toLowerCase();\n              if (nonEmptyElementsMap[name$$1] && name$$1 !== 'br') {\n                return false;\n              }\n            }\n          } else if (NodeType.isText(node) && !/^[ \\t\\r\\n]*$/.test(node.nodeValue)) {\n            return false;\n          }\n          if (start) {\n            walker.prev();\n          } else {\n            walker.next();\n          }\n        }\n        return true;\n      };\n      var insertNewBlockAfter = function () {\n        if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName !== 'HGROUP') {\n          newBlock = createNewBlock(newBlockName);\n        } else {\n          newBlock = createNewBlock();\n        }\n        if (Settings.shouldEndContainerOnEmptyBlock(editor) && canSplitBlock(dom, containerBlock) && dom.isEmpty(parentBlock)) {\n          newBlock = dom.split(containerBlock, parentBlock);\n        } else {\n          dom.insertAfter(newBlock, parentBlock);\n        }\n        NewLineUtils.moveToCaretPosition(editor, newBlock);\n      };\n      NormalizeRange.normalize(dom, rng).each(function (normRng) {\n        rng.setStart(normRng.startContainer, normRng.startOffset);\n        rng.setEnd(normRng.endContainer, normRng.endOffset);\n      });\n      container = rng.startContainer;\n      offset = rng.startOffset;\n      newBlockName = Settings.getForcedRootBlock(editor);\n      shiftKey = evt.shiftKey;\n      if (NodeType.isElement(container) && container.hasChildNodes()) {\n        isAfterLastNodeInContainer = offset > container.childNodes.length - 1;\n        container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n        if (isAfterLastNodeInContainer && NodeType.isText(container)) {\n          offset = container.nodeValue.length;\n        } else {\n          offset = 0;\n        }\n      }\n      editableRoot = getEditableRoot$1(dom, container);\n      if (!editableRoot) {\n        return;\n      }\n      if (newBlockName && !shiftKey || !newBlockName && shiftKey) {\n        container = wrapSelfAndSiblingsInDefaultBlock(editor, newBlockName, rng, container, offset);\n      }\n      parentBlock = dom.getParent(container, dom.isBlock);\n      containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;\n      parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : '';\n      containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : '';\n      if (containerBlockName === 'LI' && !evt.ctrlKey) {\n        parentBlock = containerBlock;\n        containerBlock = containerBlock.parentNode;\n        parentBlockName = containerBlockName;\n      }\n      if (/^(LI|DT|DD)$/.test(parentBlockName)) {\n        if (dom.isEmpty(parentBlock)) {\n          InsertLi.insert(editor, createNewBlock, containerBlock, parentBlock, newBlockName);\n          return;\n        }\n      }\n      if (newBlockName && parentBlock === editor.getBody()) {\n        return;\n      }\n      newBlockName = newBlockName || 'P';\n      if (isCaretContainerBlock(parentBlock)) {\n        newBlock = showCaretContainerBlock(parentBlock);\n        if (dom.isEmpty(parentBlock)) {\n          emptyBlock(parentBlock);\n        }\n        NewLineUtils.moveToCaretPosition(editor, newBlock);\n      } else if (isCaretAtStartOrEndOfBlock()) {\n        insertNewBlockAfter();\n      } else if (isCaretAtStartOrEndOfBlock(true)) {\n        newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock);\n        NewLineUtils.moveToCaretPosition(editor, containerAndSiblingName(parentBlock, 'HR') ? newBlock : parentBlock);\n      } else {\n        tmpRng = includeZwspInRange(rng).cloneRange();\n        tmpRng.setEndAfter(parentBlock);\n        fragment = tmpRng.extractContents();\n        trimZwsp(fragment);\n        trimLeadingLineBreaks(fragment);\n        newBlock = fragment.firstChild;\n        dom.insertAfter(fragment, parentBlock);\n        trimInlineElementsOnLeftSideOfBlock(dom, nonEmptyElementsMap, newBlock);\n        addBrToBlockIfNeeded(dom, parentBlock);\n        if (dom.isEmpty(parentBlock)) {\n          emptyBlock(parentBlock);\n        }\n        newBlock.normalize();\n        if (dom.isEmpty(newBlock)) {\n          dom.remove(newBlock);\n          insertNewBlockAfter();\n        } else {\n          NewLineUtils.moveToCaretPosition(editor, newBlock);\n        }\n      }\n      dom.setAttrib(newBlock, 'id', '');\n      editor.fire('NewBlock', { newBlock: newBlock });\n    };\n    var InsertBlock = { insert: insert$2 };\n\n    var matchesSelector = function (editor, selector) {\n      return NewLineUtils.getParentBlock(editor).filter(function (parentBlock) {\n        return selector.length > 0 && is$1(Element$$1.fromDom(parentBlock), selector);\n      }).isSome();\n    };\n    var shouldInsertBr = function (editor) {\n      return matchesSelector(editor, Settings.getBrNewLineSelector(editor));\n    };\n    var shouldBlockNewLine = function (editor) {\n      return matchesSelector(editor, Settings.getNoNewLineSelector(editor));\n    };\n    var ContextSelectors = {\n      shouldInsertBr: shouldInsertBr,\n      shouldBlockNewLine: shouldBlockNewLine\n    };\n\n    var newLineAction = Adt.generate([\n      { br: [] },\n      { block: [] },\n      { none: [] }\n    ]);\n    var shouldBlockNewLine$1 = function (editor, shiftKey) {\n      return ContextSelectors.shouldBlockNewLine(editor);\n    };\n    var isBrMode = function (requiredState) {\n      return function (editor, shiftKey) {\n        var brMode = Settings.getForcedRootBlock(editor) === '';\n        return brMode === requiredState;\n      };\n    };\n    var inListBlock = function (requiredState) {\n      return function (editor, shiftKey) {\n        return NewLineUtils.isListItemParentBlock(editor) === requiredState;\n      };\n    };\n    var inBlock = function (blockName, requiredState) {\n      return function (editor, shiftKey) {\n        var state = NewLineUtils.getParentBlockName(editor) === blockName.toUpperCase();\n        return state === requiredState;\n      };\n    };\n    var inPreBlock = function (requiredState) {\n      return inBlock('pre', requiredState);\n    };\n    var inSummaryBlock = function () {\n      return inBlock('summary', true);\n    };\n    var shouldPutBrInPre$1 = function (requiredState) {\n      return function (editor, shiftKey) {\n        return Settings.shouldPutBrInPre(editor) === requiredState;\n      };\n    };\n    var inBrContext = function (editor, shiftKey) {\n      return ContextSelectors.shouldInsertBr(editor);\n    };\n    var hasShiftKey = function (editor, shiftKey) {\n      return shiftKey;\n    };\n    var canInsertIntoEditableRoot = function (editor) {\n      var forcedRootBlock = Settings.getForcedRootBlock(editor);\n      var rootEditable = NewLineUtils.getEditableRoot(editor.dom, editor.selection.getStart());\n      return rootEditable && editor.schema.isValidChild(rootEditable.nodeName, forcedRootBlock ? forcedRootBlock : 'P');\n    };\n    var match$2 = function (predicates, action) {\n      return function (editor, shiftKey) {\n        var isMatch = foldl(predicates, function (res, p) {\n          return res && p(editor, shiftKey);\n        }, true);\n        return isMatch ? Option.some(action) : Option.none();\n      };\n    };\n    var getAction$1 = function (editor, evt) {\n      return LazyEvaluator.evaluateUntil([\n        match$2([shouldBlockNewLine$1], newLineAction.none()),\n        match$2([inSummaryBlock()], newLineAction.br()),\n        match$2([\n          inPreBlock(true),\n          shouldPutBrInPre$1(false),\n          hasShiftKey\n        ], newLineAction.br()),\n        match$2([\n          inPreBlock(true),\n          shouldPutBrInPre$1(false)\n        ], newLineAction.block()),\n        match$2([\n          inPreBlock(true),\n          shouldPutBrInPre$1(true),\n          hasShiftKey\n        ], newLineAction.block()),\n        match$2([\n          inPreBlock(true),\n          shouldPutBrInPre$1(true)\n        ], newLineAction.br()),\n        match$2([\n          inListBlock(true),\n          hasShiftKey\n        ], newLineAction.br()),\n        match$2([inListBlock(true)], newLineAction.block()),\n        match$2([\n          isBrMode(true),\n          hasShiftKey,\n          canInsertIntoEditableRoot\n        ], newLineAction.block()),\n        match$2([isBrMode(true)], newLineAction.br()),\n        match$2([inBrContext], newLineAction.br()),\n        match$2([\n          isBrMode(false),\n          hasShiftKey\n        ], newLineAction.br()),\n        match$2([canInsertIntoEditableRoot], newLineAction.block())\n      ], [\n        editor,\n        evt.shiftKey\n      ]).getOr(newLineAction.none());\n    };\n    var NewLineAction = { getAction: getAction$1 };\n\n    var insert$3 = function (editor, evt) {\n      NewLineAction.getAction(editor, evt).fold(function () {\n        InsertBr.insert(editor, evt);\n      }, function () {\n        InsertBlock.insert(editor, evt);\n      }, noop);\n    };\n    var InsertNewLine = { insert: insert$3 };\n\n    var endTypingLevel = function (undoManager) {\n      if (undoManager.typing) {\n        undoManager.typing = false;\n        undoManager.add();\n      }\n    };\n    var handleEnterKeyEvent = function (editor, event) {\n      if (event.isDefaultPrevented()) {\n        return;\n      }\n      event.preventDefault();\n      endTypingLevel(editor.undoManager);\n      editor.undoManager.transact(function () {\n        if (editor.selection.isCollapsed() === false) {\n          editor.execCommand('Delete');\n        }\n        InsertNewLine.insert(editor, event);\n      });\n    };\n    var setup$9 = function (editor) {\n      editor.on('keydown', function (event) {\n        if (event.keyCode === VK.ENTER) {\n          handleEnterKeyEvent(editor, event);\n        }\n      });\n    };\n    var EnterKey = { setup: setup$9 };\n\n    var insertTextAtPosition = function (text, pos) {\n      var container = pos.container();\n      var offset = pos.offset();\n      if (NodeType.isText(container)) {\n        container.insertData(offset, text);\n        return Option.some(CaretPosition(container, offset + text.length));\n      } else {\n        return getElementFromPosition(pos).map(function (elm) {\n          var textNode = Element$$1.fromText(text);\n          if (pos.isAtEnd()) {\n            after(elm, textNode);\n          } else {\n            before(elm, textNode);\n          }\n          return CaretPosition(textNode.dom(), text.length);\n        });\n      }\n    };\n    var insertNbspAtPosition = curry(insertTextAtPosition, '\\xA0');\n    var insertSpaceAtPosition = curry(insertTextAtPosition, ' ');\n\n    var isAtBlockBoundary = function (forward, root, pos) {\n      var parentBlocks = filter(Parents.parentsAndSelf(Element$$1.fromDom(pos.container()), root), isBlock);\n      return head(parentBlocks).fold(function () {\n        return CaretFinder.navigate(forward, root.dom(), pos).forall(function (newPos) {\n          return isInSameBlock(newPos, pos, root.dom()) === false;\n        });\n      }, function (parent) {\n        return CaretFinder.navigate(forward, parent.dom(), pos).isNone();\n      });\n    };\n    var isAtStartOfBlock = curry(isAtBlockBoundary, false);\n    var isAtEndOfBlock = curry(isAtBlockBoundary, true);\n\n    var nbsp = '\\xA0';\n    var isInMiddleOfText = function (pos) {\n      return CaretPosition.isTextPosition(pos) && !pos.isAtStart() && !pos.isAtEnd();\n    };\n    var getClosestBlock = function (root, pos) {\n      var parentBlocks = filter(Parents.parentsAndSelf(Element$$1.fromDom(pos.container()), root), isBlock);\n      return head(parentBlocks).getOr(root);\n    };\n    var hasSpaceBefore = function (root, pos) {\n      if (isInMiddleOfText(pos)) {\n        return isAfterSpace(pos);\n      } else {\n        return isAfterSpace(pos) || CaretFinder.prevPosition(getClosestBlock(root, pos).dom(), pos).exists(isAfterSpace);\n      }\n    };\n    var hasSpaceAfter = function (root, pos) {\n      if (isInMiddleOfText(pos)) {\n        return isBeforeSpace(pos);\n      } else {\n        return isBeforeSpace(pos) || CaretFinder.nextPosition(getClosestBlock(root, pos).dom(), pos).exists(isBeforeSpace);\n      }\n    };\n    var isPreValue = function (value$$1) {\n      return contains([\n        'pre',\n        'pre-line',\n        'pre-wrap'\n      ], value$$1);\n    };\n    var isInPre = function (pos) {\n      return getElementFromPosition(pos).bind(function (elm) {\n        return closest(elm, isElement);\n      }).exists(function (elm) {\n        return isPreValue(get$2(elm, 'white-space'));\n      });\n    };\n    var isAtBeginningOfBody = function (root, pos) {\n      return CaretFinder.prevPosition(root.dom(), pos).isNone();\n    };\n    var isAtEndOfBody = function (root, pos) {\n      return CaretFinder.nextPosition(root.dom(), pos).isNone();\n    };\n    var isAtLineBoundary = function (root, pos) {\n      return isAtBeginningOfBody(root, pos) || isAtEndOfBody(root, pos) || isAtStartOfBlock(root, pos) || isAtEndOfBlock(root, pos) || isAfterBr(root, pos) || isBeforeBr(root, pos);\n    };\n    var needsToHaveNbsp = function (root, pos) {\n      if (isInPre(pos)) {\n        return false;\n      } else {\n        return isAtLineBoundary(root, pos) || hasSpaceBefore(root, pos) || hasSpaceAfter(root, pos);\n      }\n    };\n    var needsToBeNbspLeft = function (root, pos) {\n      if (isInPre(pos)) {\n        return false;\n      } else {\n        return isAtStartOfBlock(root, pos) || isAfterBr(root, pos) || hasSpaceBefore(root, pos);\n      }\n    };\n    var needsToBeNbspRight = function (root, pos) {\n      if (isInPre(pos)) {\n        return false;\n      } else {\n        return isAtEndOfBlock(root, pos) || isBeforeBr(root, pos) || hasSpaceAfter(root, pos);\n      }\n    };\n    var isNbspAt = function (text, offset) {\n      return isNbsp(text.charAt(offset));\n    };\n    var hasNbsp = function (pos) {\n      var container = pos.container();\n      return NodeType.isText(container) && contains$2(container.data, nbsp);\n    };\n    var normalizeNbspAtStart = function (root, node, text) {\n      var firstPos = CaretPosition(node, 0);\n      if (isNbspAt(text, 0) && !needsToBeNbspLeft(root, firstPos)) {\n        return ' ' + text.slice(1);\n      } else {\n        return text;\n      }\n    };\n    var normalizeNbspMiddle = function (text) {\n      return map(text.split(''), function (chr, i, chars) {\n        if (isNbsp(chr) && i > 0 && i < chars.length - 1 && isContent(chars[i - 1]) && isContent(chars[i + 1])) {\n          return ' ';\n        } else {\n          return chr;\n        }\n      }).join('');\n    };\n    var normalizeNbspAtEnd = function (root, node, text) {\n      var lastPos = CaretPosition(node, text.length);\n      if (isNbspAt(text, text.length - 1) && !needsToBeNbspRight(root, lastPos)) {\n        return text.slice(0, -1) + ' ';\n      } else {\n        return text;\n      }\n    };\n    var normalizeNbsps = function (root, pos) {\n      return Option.some(pos).filter(hasNbsp).bind(function (pos) {\n        var container = pos.container();\n        var text = container.nodeValue;\n        var newText = normalizeNbspAtStart(root, container, normalizeNbspMiddle(normalizeNbspAtEnd(root, container, text)));\n        if (text !== newText) {\n          pos.container().nodeValue = newText;\n          return Option.some(pos);\n        } else {\n          return Option.none();\n        }\n      });\n    };\n    var normalizeNbspsInEditor = function (editor) {\n      var root = Element$$1.fromDom(editor.getBody());\n      if (editor.selection.isCollapsed()) {\n        normalizeNbsps(root, CaretPosition.fromRangeStart(editor.selection.getRng())).each(function (pos) {\n          editor.selection.setRng(pos.toRange());\n        });\n      }\n    };\n\n    var locationToCaretPosition = function (root) {\n      return function (location) {\n        return location.fold(function (element) {\n          return CaretFinder.prevPosition(root.dom(), CaretPosition$1.before(element));\n        }, function (element) {\n          return CaretFinder.firstPositionIn(element);\n        }, function (element) {\n          return CaretFinder.lastPositionIn(element);\n        }, function (element) {\n          return CaretFinder.nextPosition(root.dom(), CaretPosition$1.after(element));\n        });\n      };\n    };\n    var insertInlineBoundarySpaceOrNbsp = function (root, pos) {\n      return function (checkPos) {\n        return needsToHaveNbsp(root, checkPos) ? insertNbspAtPosition(pos) : insertSpaceAtPosition(pos);\n      };\n    };\n    var setSelection$1 = function (editor) {\n      return function (pos) {\n        editor.selection.setRng(pos.toRange());\n        editor.nodeChanged();\n        return true;\n      };\n    };\n    var insertSpaceOrNbspAtSelection = function (editor) {\n      var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n      var root = Element$$1.fromDom(editor.getBody());\n      if (editor.selection.isCollapsed()) {\n        var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);\n        var caretPosition = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n        return BoundaryLocation.readLocation(isInlineTarget, editor.getBody(), caretPosition).bind(locationToCaretPosition(root)).bind(insertInlineBoundarySpaceOrNbsp(root, pos)).exists(setSelection$1(editor));\n      } else {\n        return false;\n      }\n    };\n\n    var executeKeydownOverride$2 = function (editor, evt) {\n      MatchKeys.execute([{\n          keyCode: VK.SPACEBAR,\n          action: MatchKeys.action(insertSpaceOrNbspAtSelection, editor)\n        }], evt).each(function (_) {\n        evt.preventDefault();\n      });\n    };\n    var setup$a = function (editor) {\n      editor.on('keydown', function (evt) {\n        if (evt.isDefaultPrevented() === false) {\n          executeKeydownOverride$2(editor, evt);\n        }\n      });\n    };\n    var SpaceKey = { setup: setup$a };\n\n    var findBlockCaretContainer = function (editor) {\n      return descendant$1(Element$$1.fromDom(editor.getBody()), '*[data-mce-caret]').fold(constant(null), function (elm) {\n        return elm.dom();\n      });\n    };\n    var removeIeControlRect = function (editor) {\n      editor.selection.setRng(editor.selection.getRng());\n    };\n    var showBlockCaretContainer = function (editor, blockCaretContainer) {\n      if (blockCaretContainer.hasAttribute('data-mce-caret')) {\n        showCaretContainerBlock(blockCaretContainer);\n        removeIeControlRect(editor);\n        editor.selection.scrollIntoView(blockCaretContainer);\n      }\n    };\n    var handleBlockContainer = function (editor, e) {\n      var blockCaretContainer = findBlockCaretContainer(editor);\n      if (!blockCaretContainer) {\n        return;\n      }\n      if (e.type === 'compositionstart') {\n        e.preventDefault();\n        e.stopPropagation();\n        showBlockCaretContainer(editor, blockCaretContainer);\n        return;\n      }\n      if (hasContent(blockCaretContainer)) {\n        showBlockCaretContainer(editor, blockCaretContainer);\n        editor.undoManager.add();\n      }\n    };\n    var setup$b = function (editor) {\n      editor.on('keyup compositionstart', curry(handleBlockContainer, editor));\n    };\n    var CaretContainerInput = { setup: setup$b };\n\n    var browser$4 = PlatformDetection$1.detect().browser;\n    var setupIeInput = function (editor) {\n      var keypressThrotter = first$1(function () {\n        if (!editor.composing) {\n          normalizeNbspsInEditor(editor);\n        }\n      }, 0);\n      if (browser$4.isIE()) {\n        editor.on('keypress', function (e) {\n          keypressThrotter.throttle();\n        });\n        editor.on('remove', function (e) {\n          keypressThrotter.cancel();\n        });\n      }\n    };\n    var setup$c = function (editor) {\n      setupIeInput(editor);\n      editor.on('input', function (e) {\n        if (e.isComposing === false) {\n          normalizeNbspsInEditor(editor);\n        }\n      });\n    };\n\n    var setup$d = function (editor) {\n      var caret = BoundarySelection.setupSelectedState(editor);\n      CaretContainerInput.setup(editor);\n      ArrowKeys.setup(editor, caret);\n      DeleteBackspaceKeys.setup(editor, caret);\n      EnterKey.setup(editor);\n      SpaceKey.setup(editor);\n      setup$c(editor);\n    };\n    var KeyboardOverrides = { setup: setup$d };\n\n    function Quirks (editor) {\n      var each = Tools.each;\n      var BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE, dom = editor.dom, selection = editor.selection, settings = editor.settings, parser = editor.parser;\n      var isGecko = Env.gecko, isIE = Env.ie, isWebKit = Env.webkit;\n      var mceInternalUrlPrefix = 'data:text/mce-internal,';\n      var mceInternalDataType = isIE ? 'Text' : 'URL';\n      var setEditorCommandState = function (cmd, state) {\n        try {\n          editor.getDoc().execCommand(cmd, false, state);\n        } catch (ex) {\n        }\n      };\n      var isDefaultPrevented = function (e) {\n        return e.isDefaultPrevented();\n      };\n      var setMceInternalContent = function (e) {\n        var selectionHtml, internalContent;\n        if (e.dataTransfer) {\n          if (editor.selection.isCollapsed() && e.target.tagName === 'IMG') {\n            selection.select(e.target);\n          }\n          selectionHtml = editor.selection.getContent();\n          if (selectionHtml.length > 0) {\n            internalContent = mceInternalUrlPrefix + escape(editor.id) + ',' + escape(selectionHtml);\n            e.dataTransfer.setData(mceInternalDataType, internalContent);\n          }\n        }\n      };\n      var getMceInternalContent = function (e) {\n        var internalContent;\n        if (e.dataTransfer) {\n          internalContent = e.dataTransfer.getData(mceInternalDataType);\n          if (internalContent && internalContent.indexOf(mceInternalUrlPrefix) >= 0) {\n            internalContent = internalContent.substr(mceInternalUrlPrefix.length).split(',');\n            return {\n              id: unescape(internalContent[0]),\n              html: unescape(internalContent[1])\n            };\n          }\n        }\n        return null;\n      };\n      var insertClipboardContents = function (content, internal) {\n        if (editor.queryCommandSupported('mceInsertClipboardContent')) {\n          editor.execCommand('mceInsertClipboardContent', false, {\n            content: content,\n            internal: internal\n          });\n        } else {\n          editor.execCommand('mceInsertContent', false, content);\n        }\n      };\n      var emptyEditorWhenDeleting = function () {\n        var serializeRng = function (rng) {\n          var body = dom.create('body');\n          var contents = rng.cloneContents();\n          body.appendChild(contents);\n          return selection.serializer.serialize(body, { format: 'html' });\n        };\n        var allContentsSelected = function (rng) {\n          var selection = serializeRng(rng);\n          var allRng = dom.createRng();\n          allRng.selectNode(editor.getBody());\n          var allSelection = serializeRng(allRng);\n          return selection === allSelection;\n        };\n        editor.on('keydown', function (e) {\n          var keyCode = e.keyCode;\n          var isCollapsed, body;\n          if (!isDefaultPrevented(e) && (keyCode === DELETE || keyCode === BACKSPACE)) {\n            isCollapsed = editor.selection.isCollapsed();\n            body = editor.getBody();\n            if (isCollapsed && !dom.isEmpty(body)) {\n              return;\n            }\n            if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) {\n              return;\n            }\n            e.preventDefault();\n            editor.setContent('');\n            if (body.firstChild && dom.isBlock(body.firstChild)) {\n              editor.selection.setCursorLocation(body.firstChild, 0);\n            } else {\n              editor.selection.setCursorLocation(body, 0);\n            }\n            editor.nodeChanged();\n          }\n        });\n      };\n      var selectAll = function () {\n        editor.shortcuts.add('meta+a', null, 'SelectAll');\n      };\n      var inputMethodFocus = function () {\n        if (!editor.settings.content_editable) {\n          dom.bind(editor.getDoc(), 'mousedown mouseup', function (e) {\n            var rng;\n            if (e.target === editor.getDoc().documentElement) {\n              rng = selection.getRng();\n              editor.getBody().focus();\n              if (e.type === 'mousedown') {\n                if (isCaretContainer(rng.startContainer)) {\n                  return;\n                }\n                selection.placeCaretAt(e.clientX, e.clientY);\n              } else {\n                selection.setRng(rng);\n              }\n            }\n          });\n        }\n      };\n      var removeHrOnBackspace = function () {\n        editor.on('keydown', function (e) {\n          if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {\n            if (!editor.getBody().getElementsByTagName('hr').length) {\n              return;\n            }\n            if (selection.isCollapsed() && selection.getRng().startOffset === 0) {\n              var node = selection.getNode();\n              var previousSibling = node.previousSibling;\n              if (node.nodeName === 'HR') {\n                dom.remove(node);\n                e.preventDefault();\n                return;\n              }\n              if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'hr') {\n                dom.remove(previousSibling);\n                e.preventDefault();\n              }\n            }\n          }\n        });\n      };\n      var focusBody = function () {\n        if (!Range.prototype.getClientRects) {\n          editor.on('mousedown', function (e) {\n            if (!isDefaultPrevented(e) && e.target.nodeName === 'HTML') {\n              var body_1 = editor.getBody();\n              body_1.blur();\n              Delay.setEditorTimeout(editor, function () {\n                body_1.focus();\n              });\n            }\n          });\n        }\n      };\n      var selectControlElements = function () {\n        editor.on('click', function (e) {\n          var target = e.target;\n          if (/^(IMG|HR)$/.test(target.nodeName) && dom.getContentEditableParent(target) !== 'false') {\n            e.preventDefault();\n            editor.selection.select(target);\n            editor.nodeChanged();\n          }\n          if (target.nodeName === 'A' && dom.hasClass(target, 'mce-item-anchor')) {\n            e.preventDefault();\n            selection.select(target);\n          }\n        });\n      };\n      var removeStylesWhenDeletingAcrossBlockElements = function () {\n        var getAttributeApplyFunction = function () {\n          var template = dom.getAttribs(selection.getStart().cloneNode(false));\n          return function () {\n            var target = selection.getStart();\n            if (target !== editor.getBody()) {\n              dom.setAttrib(target, 'style', null);\n              each(template, function (attr) {\n                target.setAttributeNode(attr.cloneNode(true));\n              });\n            }\n          };\n        };\n        var isSelectionAcrossElements = function () {\n          return !selection.isCollapsed() && dom.getParent(selection.getStart(), dom.isBlock) !== dom.getParent(selection.getEnd(), dom.isBlock);\n        };\n        editor.on('keypress', function (e) {\n          var applyAttributes;\n          if (!isDefaultPrevented(e) && (e.keyCode === 8 || e.keyCode === 46) && isSelectionAcrossElements()) {\n            applyAttributes = getAttributeApplyFunction();\n            editor.getDoc().execCommand('delete', false, null);\n            applyAttributes();\n            e.preventDefault();\n            return false;\n          }\n        });\n        dom.bind(editor.getDoc(), 'cut', function (e) {\n          var applyAttributes;\n          if (!isDefaultPrevented(e) && isSelectionAcrossElements()) {\n            applyAttributes = getAttributeApplyFunction();\n            Delay.setEditorTimeout(editor, function () {\n              applyAttributes();\n            });\n          }\n        });\n      };\n      var disableBackspaceIntoATable = function () {\n        editor.on('keydown', function (e) {\n          if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {\n            if (selection.isCollapsed() && selection.getRng().startOffset === 0) {\n              var previousSibling = selection.getNode().previousSibling;\n              if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'table') {\n                e.preventDefault();\n                return false;\n              }\n            }\n          }\n        });\n      };\n      var removeBlockQuoteOnBackSpace = function () {\n        editor.on('keydown', function (e) {\n          var rng, container, offset, root, parent$$1;\n          if (isDefaultPrevented(e) || e.keyCode !== VK.BACKSPACE) {\n            return;\n          }\n          rng = selection.getRng();\n          container = rng.startContainer;\n          offset = rng.startOffset;\n          root = dom.getRoot();\n          parent$$1 = container;\n          if (!rng.collapsed || offset !== 0) {\n            return;\n          }\n          while (parent$$1 && parent$$1.parentNode && parent$$1.parentNode.firstChild === parent$$1 && parent$$1.parentNode !== root) {\n            parent$$1 = parent$$1.parentNode;\n          }\n          if (parent$$1.tagName === 'BLOCKQUOTE') {\n            editor.formatter.toggle('blockquote', null, parent$$1);\n            rng = dom.createRng();\n            rng.setStart(container, 0);\n            rng.setEnd(container, 0);\n            selection.setRng(rng);\n          }\n        });\n      };\n      var setGeckoEditingOptions = function () {\n        var setOpts = function () {\n          setEditorCommandState('StyleWithCSS', false);\n          setEditorCommandState('enableInlineTableEditing', false);\n          if (!settings.object_resizing) {\n            setEditorCommandState('enableObjectResizing', false);\n          }\n        };\n        if (!settings.readonly) {\n          editor.on('BeforeExecCommand MouseDown', setOpts);\n        }\n      };\n      var addBrAfterLastLinks = function () {\n        var fixLinks = function () {\n          each(dom.select('a'), function (node) {\n            var parentNode = node.parentNode;\n            var root = dom.getRoot();\n            if (parentNode.lastChild === node) {\n              while (parentNode && !dom.isBlock(parentNode)) {\n                if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) {\n                  return;\n                }\n                parentNode = parentNode.parentNode;\n              }\n              dom.add(parentNode, 'br', { 'data-mce-bogus': 1 });\n            }\n          });\n        };\n        editor.on('SetContent ExecCommand', function (e) {\n          if (e.type === 'setcontent' || e.command === 'mceInsertLink') {\n            fixLinks();\n          }\n        });\n      };\n      var setDefaultBlockType = function () {\n        if (settings.forced_root_block) {\n          editor.on('init', function () {\n            setEditorCommandState('DefaultParagraphSeparator', settings.forced_root_block);\n          });\n        }\n      };\n      var normalizeSelection = function () {\n        editor.on('keyup focusin mouseup', function (e) {\n          if (!VK.modifierPressed(e)) {\n            selection.normalize();\n          }\n        }, true);\n      };\n      var showBrokenImageIcon = function () {\n        editor.contentStyles.push('img:-moz-broken {' + '-moz-force-broken-image-icon:1;' + 'min-width:24px;' + 'min-height:24px' + '}');\n      };\n      var restoreFocusOnKeyDown = function () {\n        if (!editor.inline) {\n          editor.on('keydown', function () {\n            if (document.activeElement === document.body) {\n              editor.getWin().focus();\n            }\n          });\n        }\n      };\n      var bodyHeight = function () {\n        if (!editor.inline) {\n          editor.contentStyles.push('body {min-height: 150px}');\n          editor.on('click', function (e) {\n            var rng;\n            if (e.target.nodeName === 'HTML') {\n              if (Env.ie > 11) {\n                editor.getBody().focus();\n                return;\n              }\n              rng = editor.selection.getRng();\n              editor.getBody().focus();\n              editor.selection.setRng(rng);\n              editor.selection.normalize();\n              editor.nodeChanged();\n            }\n          });\n        }\n      };\n      var blockCmdArrowNavigation = function () {\n        if (Env.mac) {\n          editor.on('keydown', function (e) {\n            if (VK.metaKeyPressed(e) && !e.shiftKey && (e.keyCode === 37 || e.keyCode === 39)) {\n              e.preventDefault();\n              editor.selection.getSel().modify('move', e.keyCode === 37 ? 'backward' : 'forward', 'lineboundary');\n            }\n          });\n        }\n      };\n      var disableAutoUrlDetect = function () {\n        setEditorCommandState('AutoUrlDetect', false);\n      };\n      var tapLinksAndImages = function () {\n        editor.on('click', function (e) {\n          var elm = e.target;\n          do {\n            if (elm.tagName === 'A') {\n              e.preventDefault();\n              return;\n            }\n          } while (elm = elm.parentNode);\n        });\n        editor.contentStyles.push('.mce-content-body {-webkit-touch-callout: none}');\n      };\n      var blockFormSubmitInsideEditor = function () {\n        editor.on('init', function () {\n          editor.dom.bind(editor.getBody(), 'submit', function (e) {\n            e.preventDefault();\n          });\n        });\n      };\n      var removeAppleInterchangeBrs = function () {\n        parser.addNodeFilter('br', function (nodes) {\n          var i = nodes.length;\n          while (i--) {\n            if (nodes[i].attr('class') === 'Apple-interchange-newline') {\n              nodes[i].remove();\n            }\n          }\n        });\n      };\n      var ieInternalDragAndDrop = function () {\n        editor.on('dragstart', function (e) {\n          setMceInternalContent(e);\n        });\n        editor.on('drop', function (e) {\n          if (!isDefaultPrevented(e)) {\n            var internalContent = getMceInternalContent(e);\n            if (internalContent && internalContent.id !== editor.id) {\n              e.preventDefault();\n              var rng = CaretRangeFromPoint.fromPoint(e.x, e.y, editor.getDoc());\n              selection.setRng(rng);\n              insertClipboardContents(internalContent.html, true);\n            }\n          }\n        });\n      };\n      var refreshContentEditable = function () {\n      };\n      var isHidden = function () {\n        var sel;\n        if (!isGecko || editor.removed) {\n          return 0;\n        }\n        sel = editor.selection.getSel();\n        return !sel || !sel.rangeCount || sel.rangeCount === 0;\n      };\n      removeBlockQuoteOnBackSpace();\n      emptyEditorWhenDeleting();\n      if (!Env.windowsPhone) {\n        normalizeSelection();\n      }\n      if (isWebKit) {\n        inputMethodFocus();\n        selectControlElements();\n        setDefaultBlockType();\n        blockFormSubmitInsideEditor();\n        disableBackspaceIntoATable();\n        removeAppleInterchangeBrs();\n        if (Env.iOS) {\n          restoreFocusOnKeyDown();\n          bodyHeight();\n          tapLinksAndImages();\n        } else {\n          selectAll();\n        }\n      }\n      if (Env.ie >= 11) {\n        bodyHeight();\n        disableBackspaceIntoATable();\n      }\n      if (Env.ie) {\n        selectAll();\n        disableAutoUrlDetect();\n        ieInternalDragAndDrop();\n      }\n      if (isGecko) {\n        removeHrOnBackspace();\n        focusBody();\n        removeStylesWhenDeletingAcrossBlockElements();\n        setGeckoEditingOptions();\n        addBrAfterLastLinks();\n        showBrokenImageIcon();\n        blockCmdArrowNavigation();\n        disableBackspaceIntoATable();\n      }\n      return {\n        refreshContentEditable: refreshContentEditable,\n        isHidden: isHidden\n      };\n    }\n\n    var isTextBlockNode = function (node) {\n      return NodeType.isElement(node) && isTextBlock(Element$$1.fromDom(node));\n    };\n    var normalizeSelection$1 = function (editor) {\n      var rng = editor.selection.getRng();\n      var startPos = CaretPosition.fromRangeStart(rng);\n      var endPos = CaretPosition.fromRangeEnd(rng);\n      if (CaretPosition.isElementPosition(startPos)) {\n        var container = startPos.container();\n        if (isTextBlockNode(container)) {\n          CaretFinder.firstPositionIn(container).each(function (pos) {\n            return rng.setStart(pos.container(), pos.offset());\n          });\n        }\n      }\n      if (CaretPosition.isElementPosition(endPos)) {\n        var container = startPos.container();\n        if (isTextBlockNode(container)) {\n          CaretFinder.lastPositionIn(container).each(function (pos) {\n            return rng.setEnd(pos.container(), pos.offset());\n          });\n        }\n      }\n      editor.selection.setRng(RangeNormalizer.normalize(rng));\n    };\n    var setup$e = function (editor) {\n      editor.on('click', function (e) {\n        if (e.detail >= 3) {\n          normalizeSelection$1(editor);\n        }\n      });\n    };\n\n    var preventSummaryToggle = function (editor) {\n      editor.on('click', function (e) {\n        if (editor.dom.getParent(e.target, 'details')) {\n          e.preventDefault();\n        }\n      });\n    };\n    var filterDetails = function (editor) {\n      editor.parser.addNodeFilter('details', function (elms) {\n        each(elms, function (details) {\n          details.attr('data-mce-open', details.attr('open'));\n          details.attr('open', 'open');\n        });\n      });\n      editor.serializer.addNodeFilter('details', function (elms) {\n        each(elms, function (details) {\n          var open = details.attr('data-mce-open');\n          details.attr('open', isString(open) ? open : null);\n          details.attr('data-mce-open', null);\n        });\n      });\n    };\n    var setup$f = function (editor) {\n      preventSummaryToggle(editor);\n      filterDetails(editor);\n    };\n\n    var DOM$2 = DOMUtils$1.DOM;\n    var appendStyle = function (editor, text) {\n      var head = Element$$1.fromDom(editor.getDoc().head);\n      var tag = Element$$1.fromTag('style');\n      set(tag, 'type', 'text/css');\n      append(tag, Element$$1.fromText(text));\n      append(head, tag);\n    };\n    var createParser = function (editor) {\n      var parser = DomParser(editor.settings, editor.schema);\n      parser.addAttributeFilter('src,href,style,tabindex', function (nodes, name$$1) {\n        var i = nodes.length, node;\n        var dom = editor.dom;\n        var value, internalName;\n        while (i--) {\n          node = nodes[i];\n          value = node.attr(name$$1);\n          internalName = 'data-mce-' + name$$1;\n          if (!node.attributes.map[internalName]) {\n            if (value.indexOf('data:') === 0 || value.indexOf('blob:') === 0) {\n              continue;\n            }\n            if (name$$1 === 'style') {\n              value = dom.serializeStyle(dom.parseStyle(value), node.name);\n              if (!value.length) {\n                value = null;\n              }\n              node.attr(internalName, value);\n              node.attr(name$$1, value);\n            } else if (name$$1 === 'tabindex') {\n              node.attr(internalName, value);\n              node.attr(name$$1, null);\n            } else {\n              node.attr(internalName, editor.convertURL(value, name$$1, node.name));\n            }\n          }\n        }\n      });\n      parser.addNodeFilter('script', function (nodes) {\n        var i = nodes.length, node, type;\n        while (i--) {\n          node = nodes[i];\n          type = node.attr('type') || 'no/type';\n          if (type.indexOf('mce-') !== 0) {\n            node.attr('type', 'mce-' + type);\n          }\n        }\n      });\n      parser.addNodeFilter('#cdata', function (nodes) {\n        var i = nodes.length, node;\n        while (i--) {\n          node = nodes[i];\n          node.type = 8;\n          node.name = '#comment';\n          node.value = '[CDATA[' + node.value + ']]';\n        }\n      });\n      parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function (nodes) {\n        var i = nodes.length, node;\n        var nonEmptyElements = editor.schema.getNonEmptyElements();\n        while (i--) {\n          node = nodes[i];\n          if (node.isEmpty(nonEmptyElements) && node.getAll('br').length === 0) {\n            node.append(new Node$2('br', 1)).shortEnded = true;\n          }\n        }\n      });\n      return parser;\n    };\n    var autoFocus = function (editor) {\n      if (editor.settings.auto_focus) {\n        Delay.setEditorTimeout(editor, function () {\n          var focusEditor;\n          if (editor.settings.auto_focus === true) {\n            focusEditor = editor;\n          } else {\n            focusEditor = editor.editorManager.get(editor.settings.auto_focus);\n          }\n          if (!focusEditor.destroyed) {\n            focusEditor.focus();\n          }\n        }, 100);\n      }\n    };\n    var initEditor = function (editor) {\n      editor.bindPendingEventDelegates();\n      editor.initialized = true;\n      editor.fire('init');\n      editor.focus(true);\n      editor.nodeChanged({ initial: true });\n      editor.execCallback('init_instance_callback', editor);\n      autoFocus(editor);\n    };\n    var getStyleSheetLoader = function (editor) {\n      return editor.inline ? DOM$2.styleSheetLoader : editor.dom.styleSheetLoader;\n    };\n    var initContentBody = function (editor, skipWrite) {\n      var settings = editor.settings;\n      var targetElm = editor.getElement();\n      var doc = editor.getDoc(), body, contentCssText;\n      if (!settings.inline) {\n        editor.getElement().style.visibility = editor.orgVisibility;\n      }\n      if (!skipWrite && !settings.content_editable) {\n        doc.open();\n        doc.write(editor.iframeHTML);\n        doc.close();\n      }\n      if (settings.content_editable) {\n        editor.on('remove', function () {\n          var bodyEl = this.getBody();\n          DOM$2.removeClass(bodyEl, 'mce-content-body');\n          DOM$2.removeClass(bodyEl, 'mce-edit-focus');\n          DOM$2.setAttrib(bodyEl, 'contentEditable', null);\n        });\n        DOM$2.addClass(targetElm, 'mce-content-body');\n        editor.contentDocument = doc = settings.content_document || document;\n        editor.contentWindow = settings.content_window || window;\n        editor.bodyElement = targetElm;\n        settings.content_document = settings.content_window = null;\n        settings.root_name = targetElm.nodeName.toLowerCase();\n      }\n      body = editor.getBody();\n      body.disabled = true;\n      editor.readonly = settings.readonly;\n      if (!editor.readonly) {\n        if (editor.inline && DOM$2.getStyle(body, 'position', true) === 'static') {\n          body.style.position = 'relative';\n        }\n        body.contentEditable = editor.getParam('content_editable_state', true);\n      }\n      body.disabled = false;\n      editor.editorUpload = EditorUpload(editor);\n      editor.schema = Schema(settings);\n      editor.dom = DOMUtils$1(doc, {\n        keep_values: true,\n        url_converter: editor.convertURL,\n        url_converter_scope: editor,\n        hex_colors: settings.force_hex_style_colors,\n        class_filter: settings.class_filter,\n        update_styles: true,\n        root_element: editor.inline ? editor.getBody() : null,\n        collect: settings.content_editable,\n        schema: editor.schema,\n        contentCssCors: Settings.shouldUseContentCssCors(editor),\n        onSetAttrib: function (e) {\n          editor.fire('SetAttrib', e);\n        }\n      });\n      editor.parser = createParser(editor);\n      editor.serializer = Serializer$1(settings, editor);\n      editor.selection = Selection(editor.dom, editor.getWin(), editor.serializer, editor);\n      editor.annotator = Annotator(editor);\n      editor.formatter = Formatter(editor);\n      editor.undoManager = UndoManager(editor);\n      editor._nodeChangeDispatcher = new NodeChange(editor);\n      editor._selectionOverrides = SelectionOverrides(editor);\n      setup$f(editor);\n      setup$e(editor);\n      KeyboardOverrides.setup(editor);\n      ForceBlocks.setup(editor);\n      editor.fire('PreInit');\n      if (!settings.browser_spellcheck && !settings.gecko_spellcheck) {\n        doc.body.spellcheck = false;\n        DOM$2.setAttrib(body, 'spellcheck', 'false');\n      }\n      editor.quirks = Quirks(editor);\n      editor.fire('PostRender');\n      if (settings.directionality) {\n        body.dir = settings.directionality;\n      }\n      if (settings.nowrap) {\n        body.style.whiteSpace = 'nowrap';\n      }\n      if (settings.protect) {\n        editor.on('BeforeSetContent', function (e) {\n          Tools.each(settings.protect, function (pattern) {\n            e.content = e.content.replace(pattern, function (str) {\n              return '<!--mce:protected ' + escape(str) + '-->';\n            });\n          });\n        });\n      }\n      editor.on('SetContent', function () {\n        editor.addVisual(editor.getBody());\n      });\n      editor.load({\n        initial: true,\n        format: 'html'\n      });\n      editor.startContent = editor.getContent({ format: 'raw' });\n      editor.on('compositionstart compositionend', function (e) {\n        editor.composing = e.type === 'compositionstart';\n      });\n      if (editor.contentStyles.length > 0) {\n        contentCssText = '';\n        Tools.each(editor.contentStyles, function (style) {\n          contentCssText += style + '\\r\\n';\n        });\n        editor.dom.addStyle(contentCssText);\n      }\n      getStyleSheetLoader(editor).loadAll(editor.contentCSS, function (_) {\n        initEditor(editor);\n      }, function (urls) {\n        initEditor(editor);\n      });\n      if (settings.content_style) {\n        appendStyle(editor, settings.content_style);\n      }\n    };\n    var InitContentBody = { initContentBody: initContentBody };\n\n    var DOM$3 = DOMUtils$1.DOM;\n    var relaxDomain = function (editor, ifr) {\n      if (document.domain !== window.location.hostname && Env.ie && Env.ie < 12) {\n        var bodyUuid = Uuid.uuid('mce');\n        editor[bodyUuid] = function () {\n          InitContentBody.initContentBody(editor);\n        };\n        var domainRelaxUrl = 'javascript:(function(){' + 'document.open();document.domain=\"' + document.domain + '\";' + 'var ed = window.parent.tinymce.get(\"' + editor.id + '\");document.write(ed.iframeHTML);' + 'document.close();ed.' + bodyUuid + '(true);})()';\n        DOM$3.setAttrib(ifr, 'src', domainRelaxUrl);\n        return true;\n      }\n      return false;\n    };\n    var normalizeHeight = function (height) {\n      var normalizedHeight = typeof height === 'number' ? height + 'px' : height;\n      return normalizedHeight ? normalizedHeight : '';\n    };\n    var createIframeElement = function (id, title, height, customAttrs) {\n      var iframe = Element$$1.fromTag('iframe');\n      setAll(iframe, customAttrs);\n      setAll(iframe, {\n        id: id + '_ifr',\n        frameBorder: '0',\n        allowTransparency: 'true',\n        title: title\n      });\n      setAll$1(iframe, {\n        width: '100%',\n        height: normalizeHeight(height),\n        display: 'block'\n      });\n      return iframe;\n    };\n    var getIframeHtml = function (editor) {\n      var bodyId, bodyClass, iframeHTML;\n      iframeHTML = Settings.getDocType(editor) + '<html><head>';\n      if (Settings.getDocumentBaseUrl(editor) !== editor.documentBaseUrl) {\n        iframeHTML += '<base href=\"' + editor.documentBaseURI.getURI() + '\" />';\n      }\n      iframeHTML += '<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />';\n      bodyId = Settings.getBodyId(editor);\n      bodyClass = Settings.getBodyClass(editor);\n      if (Settings.getContentSecurityPolicy(editor)) {\n        iframeHTML += '<meta http-equiv=\"Content-Security-Policy\" content=\"' + Settings.getContentSecurityPolicy(editor) + '\" />';\n      }\n      iframeHTML += '</head><body id=\"' + bodyId + '\" class=\"mce-content-body ' + bodyClass + '\" data-id=\"' + editor.id + '\"><br></body></html>';\n      return iframeHTML;\n    };\n    var createIframe = function (editor, o) {\n      var title = editor.editorManager.translate('Rich Text Area. Press ALT-F9 for menu. ' + 'Press ALT-F10 for toolbar. Press ALT-0 for help');\n      var ifr = createIframeElement(editor.id, title, o.height, Settings.getIframeAttrs(editor)).dom();\n      ifr.onload = function () {\n        ifr.onload = null;\n        editor.fire('load');\n      };\n      var isDomainRelaxed = relaxDomain(editor, ifr);\n      editor.contentAreaContainer = o.iframeContainer;\n      editor.iframeElement = ifr;\n      editor.iframeHTML = getIframeHtml(editor);\n      DOM$3.add(o.iframeContainer, ifr);\n      return isDomainRelaxed;\n    };\n    var init$1 = function (editor, boxInfo) {\n      var isDomainRelaxed = createIframe(editor, boxInfo);\n      if (boxInfo.editorContainer) {\n        DOM$3.get(boxInfo.editorContainer).style.display = editor.orgDisplay;\n        editor.hidden = DOM$3.isHidden(boxInfo.editorContainer);\n      }\n      editor.getElement().style.display = 'none';\n      DOM$3.setAttrib(editor.id, 'aria-hidden', 'true');\n      if (!isDomainRelaxed) {\n        InitContentBody.initContentBody(editor);\n      }\n    };\n    var InitIframe = { init: init$1 };\n\n    var DOM$4 = DOMUtils$1.DOM;\n    var initPlugin = function (editor, initializedPlugins, plugin) {\n      var Plugin = PluginManager$1.get(plugin);\n      var pluginUrl, pluginInstance;\n      pluginUrl = PluginManager$1.urls[plugin] || editor.documentBaseUrl.replace(/\\/$/, '');\n      plugin = Tools.trim(plugin);\n      if (Plugin && Tools.inArray(initializedPlugins, plugin) === -1) {\n        Tools.each(PluginManager$1.dependencies(plugin), function (dep) {\n          initPlugin(editor, initializedPlugins, dep);\n        });\n        if (editor.plugins[plugin]) {\n          return;\n        }\n        pluginInstance = new Plugin(editor, pluginUrl, editor.$);\n        editor.plugins[plugin] = pluginInstance;\n        if (pluginInstance.init) {\n          pluginInstance.init(editor, pluginUrl);\n          initializedPlugins.push(plugin);\n        }\n      }\n    };\n    var trimLegacyPrefix = function (name) {\n      return name.replace(/^\\-/, '');\n    };\n    var initPlugins = function (editor) {\n      var initializedPlugins = [];\n      Tools.each(editor.settings.plugins.split(/[ ,]/), function (name) {\n        initPlugin(editor, initializedPlugins, trimLegacyPrefix(name));\n      });\n    };\n    var initTheme = function (editor) {\n      var Theme;\n      var theme = editor.settings.theme;\n      if (isString(theme)) {\n        editor.settings.theme = trimLegacyPrefix(theme);\n        Theme = ThemeManager.get(theme);\n        editor.theme = new Theme(editor, ThemeManager.urls[theme]);\n        if (editor.theme.init) {\n          editor.theme.init(editor, ThemeManager.urls[theme] || editor.documentBaseUrl.replace(/\\/$/, ''), editor.$);\n        }\n      } else {\n        editor.theme = {};\n      }\n    };\n    var renderFromLoadedTheme = function (editor) {\n      var w, h, minHeight, re, info;\n      var settings = editor.settings;\n      var elm = editor.getElement();\n      w = settings.width || DOM$4.getStyle(elm, 'width') || '100%';\n      h = settings.height || DOM$4.getStyle(elm, 'height') || elm.offsetHeight;\n      minHeight = settings.min_height || 100;\n      re = /^[0-9\\.]+(|px)$/i;\n      if (re.test('' + w)) {\n        w = Math.max(parseInt(w, 10), 100);\n      }\n      if (re.test('' + h)) {\n        h = Math.max(parseInt(h, 10), minHeight);\n      }\n      info = editor.theme.renderUI({\n        targetNode: elm,\n        width: w,\n        height: h,\n        deltaWidth: settings.delta_width,\n        deltaHeight: settings.delta_height\n      });\n      if (!settings.content_editable) {\n        h = (info.iframeHeight || h) + (typeof h === 'number' ? info.deltaHeight || 0 : '');\n        if (h < minHeight) {\n          h = minHeight;\n        }\n      }\n      info.height = h;\n      return info;\n    };\n    var renderFromThemeFunc = function (editor) {\n      var info;\n      var elm = editor.getElement();\n      info = editor.settings.theme(editor, elm);\n      if (info.editorContainer.nodeType) {\n        info.editorContainer.id = info.editorContainer.id || editor.id + '_parent';\n      }\n      if (info.iframeContainer && info.iframeContainer.nodeType) {\n        info.iframeContainer.id = info.iframeContainer.id || editor.id + '_iframecontainer';\n      }\n      info.height = info.iframeHeight ? info.iframeHeight : elm.offsetHeight;\n      return info;\n    };\n    var createThemeFalseResult = function (element) {\n      return {\n        editorContainer: element,\n        iframeContainer: element\n      };\n    };\n    var renderThemeFalseIframe = function (targetElement) {\n      var iframeContainer = DOM$4.create('div');\n      DOM$4.insertAfter(iframeContainer, targetElement);\n      return createThemeFalseResult(iframeContainer);\n    };\n    var renderThemeFalse = function (editor) {\n      var targetElement = editor.getElement();\n      return editor.inline ? createThemeFalseResult(null) : renderThemeFalseIframe(targetElement);\n    };\n    var renderThemeUi = function (editor) {\n      var settings = editor.settings, elm = editor.getElement();\n      editor.orgDisplay = elm.style.display;\n      if (isString(settings.theme)) {\n        return renderFromLoadedTheme(editor);\n      } else if (isFunction(settings.theme)) {\n        return renderFromThemeFunc(editor);\n      } else {\n        return renderThemeFalse(editor);\n      }\n    };\n    var init$2 = function (editor) {\n      var settings = editor.settings;\n      var elm = editor.getElement();\n      var boxInfo;\n      editor.rtl = settings.rtl_ui || editor.editorManager.i18n.rtl;\n      editor.editorManager.i18n.setCode(settings.language);\n      settings.aria_label = settings.aria_label || DOM$4.getAttrib(elm, 'aria-label', editor.getLang('aria.rich_text_area'));\n      editor.fire('ScriptsLoaded');\n      initTheme(editor);\n      initPlugins(editor);\n      boxInfo = renderThemeUi(editor);\n      editor.editorContainer = boxInfo.editorContainer ? boxInfo.editorContainer : null;\n      if (settings.content_css) {\n        Tools.each(Tools.explode(settings.content_css), function (u) {\n          editor.contentCSS.push(editor.documentBaseURI.toAbsolute(u));\n        });\n      }\n      if (settings.content_editable) {\n        return InitContentBody.initContentBody(editor);\n      } else {\n        return InitIframe.init(editor, boxInfo);\n      }\n    };\n    var Init = { init: init$2 };\n\n    var DOM$5 = DOMUtils$1.DOM;\n    var hasSkipLoadPrefix = function (name$$1) {\n      return name$$1.charAt(0) === '-';\n    };\n    var loadLanguage = function (scriptLoader, editor) {\n      var settings = editor.settings;\n      if (settings.language && settings.language !== 'en' && !settings.language_url) {\n        settings.language_url = editor.editorManager.baseURL + '/langs/' + settings.language + '.js';\n      }\n      if (settings.language_url && !editor.editorManager.i18n.data[settings.language]) {\n        scriptLoader.add(settings.language_url);\n      }\n    };\n    var loadTheme = function (scriptLoader, editor, suffix, callback) {\n      var settings = editor.settings, theme = settings.theme;\n      if (isString(theme)) {\n        if (!hasSkipLoadPrefix(theme) && !ThemeManager.urls.hasOwnProperty(theme)) {\n          var themeUrl = settings.theme_url;\n          if (themeUrl) {\n            ThemeManager.load(theme, editor.documentBaseURI.toAbsolute(themeUrl));\n          } else {\n            ThemeManager.load(theme, 'themes/' + theme + '/theme' + suffix + '.js');\n          }\n        }\n        scriptLoader.loadQueue(function () {\n          ThemeManager.waitFor(theme, callback);\n        });\n      } else {\n        callback();\n      }\n    };\n    var loadPlugins = function (settings, suffix) {\n      if (Tools.isArray(settings.plugins)) {\n        settings.plugins = settings.plugins.join(' ');\n      }\n      Tools.each(settings.external_plugins, function (url, name$$1) {\n        PluginManager$1.load(name$$1, url);\n        settings.plugins += ' ' + name$$1;\n      });\n      Tools.each(settings.plugins.split(/[ ,]/), function (plugin) {\n        plugin = Tools.trim(plugin);\n        if (plugin && !PluginManager$1.urls[plugin]) {\n          if (hasSkipLoadPrefix(plugin)) {\n            plugin = plugin.substr(1, plugin.length);\n            var dependencies = PluginManager$1.dependencies(plugin);\n            Tools.each(dependencies, function (dep) {\n              var defaultSettings = {\n                prefix: 'plugins/',\n                resource: dep,\n                suffix: '/plugin' + suffix + '.js'\n              };\n              dep = PluginManager$1.createUrl(defaultSettings, dep);\n              PluginManager$1.load(dep.resource, dep);\n            });\n          } else {\n            PluginManager$1.load(plugin, {\n              prefix: 'plugins/',\n              resource: plugin,\n              suffix: '/plugin' + suffix + '.js'\n            });\n          }\n        }\n      });\n    };\n    var loadScripts = function (editor, suffix) {\n      var scriptLoader = ScriptLoader.ScriptLoader;\n      loadTheme(scriptLoader, editor, suffix, function () {\n        loadLanguage(scriptLoader, editor);\n        loadPlugins(editor.settings, suffix);\n        scriptLoader.loadQueue(function () {\n          if (!editor.removed) {\n            Init.init(editor);\n          }\n        }, editor, function (urls) {\n          ErrorReporter.pluginLoadError(editor, urls[0]);\n          if (!editor.removed) {\n            Init.init(editor);\n          }\n        });\n      });\n    };\n    var render = function (editor) {\n      var settings = editor.settings, id = editor.id;\n      var readyHandler = function () {\n        DOM$5.unbind(window, 'ready', readyHandler);\n        editor.render();\n      };\n      if (!EventUtils.Event.domLoaded) {\n        DOM$5.bind(window, 'ready', readyHandler);\n        return;\n      }\n      if (!editor.getElement()) {\n        return;\n      }\n      if (!Env.contentEditable) {\n        return;\n      }\n      if (!settings.inline) {\n        editor.orgVisibility = editor.getElement().style.visibility;\n        editor.getElement().style.visibility = 'hidden';\n      } else {\n        editor.inline = true;\n      }\n      var form = editor.getElement().form || DOM$5.getParent(id, 'form');\n      if (form) {\n        editor.formElement = form;\n        if (settings.hidden_input && !/TEXTAREA|INPUT/i.test(editor.getElement().nodeName)) {\n          DOM$5.insertAfter(DOM$5.create('input', {\n            type: 'hidden',\n            name: id\n          }), id);\n          editor.hasHiddenInput = true;\n        }\n        editor.formEventDelegate = function (e) {\n          editor.fire(e.type, e);\n        };\n        DOM$5.bind(form, 'submit reset', editor.formEventDelegate);\n        editor.on('reset', function () {\n          editor.setContent(editor.startContent, { format: 'raw' });\n        });\n        if (settings.submit_patch && !form.submit.nodeType && !form.submit.length && !form._mceOldSubmit) {\n          form._mceOldSubmit = form.submit;\n          form.submit = function () {\n            editor.editorManager.triggerSave();\n            editor.setDirty(false);\n            return form._mceOldSubmit(form);\n          };\n        }\n      }\n      editor.windowManager = WindowManager(editor);\n      editor.notificationManager = NotificationManager(editor);\n      if (settings.encoding === 'xml') {\n        editor.on('GetContent', function (e) {\n          if (e.save) {\n            e.content = DOM$5.encode(e.content);\n          }\n        });\n      }\n      if (settings.add_form_submit_trigger) {\n        editor.on('submit', function () {\n          if (editor.initialized) {\n            editor.save();\n          }\n        });\n      }\n      if (settings.add_unload_trigger) {\n        editor._beforeUnload = function () {\n          if (editor.initialized && !editor.destroyed && !editor.isHidden()) {\n            editor.save({\n              format: 'raw',\n              no_events: true,\n              set_dirty: false\n            });\n          }\n        };\n        editor.editorManager.on('BeforeUnload', editor._beforeUnload);\n      }\n      editor.editorManager.add(editor);\n      loadScripts(editor, editor.suffix);\n    };\n    var Render = { render: render };\n\n    var add$4 = function (editor, name, settings) {\n      var sidebars = editor.sidebars ? editor.sidebars : [];\n      sidebars.push({\n        name: name,\n        settings: settings\n      });\n      editor.sidebars = sidebars;\n    };\n    var Sidebar = { add: add$4 };\n\n    var each$k = Tools.each, trim$4 = Tools.trim;\n    var queryParts = 'source protocol authority userInfo user password host port relative path directory file query anchor'.split(' ');\n    var DEFAULT_PORTS = {\n      ftp: 21,\n      http: 80,\n      https: 443,\n      mailto: 25\n    };\n    var URI = function (url, settings) {\n      var self$$1 = this;\n      var baseUri, baseUrl;\n      url = trim$4(url);\n      settings = self$$1.settings = settings || {};\n      baseUri = settings.base_uri;\n      if (/^([\\w\\-]+):([^\\/]{2})/i.test(url) || /^\\s*#/.test(url)) {\n        self$$1.source = url;\n        return;\n      }\n      var isProtocolRelative = url.indexOf('//') === 0;\n      if (url.indexOf('/') === 0 && !isProtocolRelative) {\n        url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url;\n      }\n      if (!/^[\\w\\-]*:?\\/\\//.test(url)) {\n        baseUrl = settings.base_uri ? settings.base_uri.path : new URI(document.location.href).directory;\n        if (settings.base_uri.protocol == '') {\n          url = '//mce_host' + self$$1.toAbsPath(baseUrl, url);\n        } else {\n          url = /([^#?]*)([#?]?.*)/.exec(url);\n          url = (baseUri && baseUri.protocol || 'http') + '://mce_host' + self$$1.toAbsPath(baseUrl, url[1]) + url[2];\n        }\n      }\n      url = url.replace(/@@/g, '(mce_at)');\n      url = /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@\\/]*):?([^:@\\/]*))?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/.exec(url);\n      each$k(queryParts, function (v, i) {\n        var part = url[i];\n        if (part) {\n          part = part.replace(/\\(mce_at\\)/g, '@@');\n        }\n        self$$1[v] = part;\n      });\n      if (baseUri) {\n        if (!self$$1.protocol) {\n          self$$1.protocol = baseUri.protocol;\n        }\n        if (!self$$1.userInfo) {\n          self$$1.userInfo = baseUri.userInfo;\n        }\n        if (!self$$1.port && self$$1.host === 'mce_host') {\n          self$$1.port = baseUri.port;\n        }\n        if (!self$$1.host || self$$1.host === 'mce_host') {\n          self$$1.host = baseUri.host;\n        }\n        self$$1.source = '';\n      }\n      if (isProtocolRelative) {\n        self$$1.protocol = '';\n      }\n    };\n    URI.prototype = {\n      setPath: function (path) {\n        var self$$1 = this;\n        path = /^(.*?)\\/?(\\w+)?$/.exec(path);\n        self$$1.path = path[0];\n        self$$1.directory = path[1];\n        self$$1.file = path[2];\n        self$$1.source = '';\n        self$$1.getURI();\n      },\n      toRelative: function (uri) {\n        var self$$1 = this;\n        var output;\n        if (uri === './') {\n          return uri;\n        }\n        uri = new URI(uri, { base_uri: self$$1 });\n        if (uri.host !== 'mce_host' && self$$1.host !== uri.host && uri.host || self$$1.port !== uri.port || self$$1.protocol !== uri.protocol && uri.protocol !== '') {\n          return uri.getURI();\n        }\n        var tu = self$$1.getURI(), uu = uri.getURI();\n        if (tu === uu || tu.charAt(tu.length - 1) === '/' && tu.substr(0, tu.length - 1) === uu) {\n          return tu;\n        }\n        output = self$$1.toRelPath(self$$1.path, uri.path);\n        if (uri.query) {\n          output += '?' + uri.query;\n        }\n        if (uri.anchor) {\n          output += '#' + uri.anchor;\n        }\n        return output;\n      },\n      toAbsolute: function (uri, noHost) {\n        uri = new URI(uri, { base_uri: this });\n        return uri.getURI(noHost && this.isSameOrigin(uri));\n      },\n      isSameOrigin: function (uri) {\n        if (this.host == uri.host && this.protocol == uri.protocol) {\n          if (this.port == uri.port) {\n            return true;\n          }\n          var defaultPort = DEFAULT_PORTS[this.protocol];\n          if (defaultPort && (this.port || defaultPort) == (uri.port || defaultPort)) {\n            return true;\n          }\n        }\n        return false;\n      },\n      toRelPath: function (base, path) {\n        var items, breakPoint = 0, out = '', i, l;\n        base = base.substring(0, base.lastIndexOf('/'));\n        base = base.split('/');\n        items = path.split('/');\n        if (base.length >= items.length) {\n          for (i = 0, l = base.length; i < l; i++) {\n            if (i >= items.length || base[i] !== items[i]) {\n              breakPoint = i + 1;\n              break;\n            }\n          }\n        }\n        if (base.length < items.length) {\n          for (i = 0, l = items.length; i < l; i++) {\n            if (i >= base.length || base[i] !== items[i]) {\n              breakPoint = i + 1;\n              break;\n            }\n          }\n        }\n        if (breakPoint === 1) {\n          return path;\n        }\n        for (i = 0, l = base.length - (breakPoint - 1); i < l; i++) {\n          out += '../';\n        }\n        for (i = breakPoint - 1, l = items.length; i < l; i++) {\n          if (i !== breakPoint - 1) {\n            out += '/' + items[i];\n          } else {\n            out += items[i];\n          }\n        }\n        return out;\n      },\n      toAbsPath: function (base, path) {\n        var i, nb = 0, o = [], tr, outPath;\n        tr = /\\/$/.test(path) ? '/' : '';\n        base = base.split('/');\n        path = path.split('/');\n        each$k(base, function (k) {\n          if (k) {\n            o.push(k);\n          }\n        });\n        base = o;\n        for (i = path.length - 1, o = []; i >= 0; i--) {\n          if (path[i].length === 0 || path[i] === '.') {\n            continue;\n          }\n          if (path[i] === '..') {\n            nb++;\n            continue;\n          }\n          if (nb > 0) {\n            nb--;\n            continue;\n          }\n          o.push(path[i]);\n        }\n        i = base.length - nb;\n        if (i <= 0) {\n          outPath = o.reverse().join('/');\n        } else {\n          outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/');\n        }\n        if (outPath.indexOf('/') !== 0) {\n          outPath = '/' + outPath;\n        }\n        if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) {\n          outPath += tr;\n        }\n        return outPath;\n      },\n      getURI: function (noProtoHost) {\n        var s;\n        var self$$1 = this;\n        if (!self$$1.source || noProtoHost) {\n          s = '';\n          if (!noProtoHost) {\n            if (self$$1.protocol) {\n              s += self$$1.protocol + '://';\n            } else {\n              s += '//';\n            }\n            if (self$$1.userInfo) {\n              s += self$$1.userInfo + '@';\n            }\n            if (self$$1.host) {\n              s += self$$1.host;\n            }\n            if (self$$1.port) {\n              s += ':' + self$$1.port;\n            }\n          }\n          if (self$$1.path) {\n            s += self$$1.path;\n          }\n          if (self$$1.query) {\n            s += '?' + self$$1.query;\n          }\n          if (self$$1.anchor) {\n            s += '#' + self$$1.anchor;\n          }\n          self$$1.source = s;\n        }\n        return self$$1.source;\n      }\n    };\n    URI.parseDataUri = function (uri) {\n      var type, matches;\n      uri = decodeURIComponent(uri).split(',');\n      matches = /data:([^;]+)/.exec(uri[0]);\n      if (matches) {\n        type = matches[1];\n      }\n      return {\n        type: type,\n        data: uri[1]\n      };\n    };\n    URI.getDocumentBaseUrl = function (loc) {\n      var baseUrl;\n      if (loc.protocol.indexOf('http') !== 0 && loc.protocol !== 'file:') {\n        baseUrl = loc.href;\n      } else {\n        baseUrl = loc.protocol + '//' + loc.host + loc.pathname;\n      }\n      if (/^[^:]+:\\/\\/\\/?[^\\/]+\\//.test(baseUrl)) {\n        baseUrl = baseUrl.replace(/[\\?#].*$/, '').replace(/[\\/\\\\][^\\/]+$/, '');\n        if (!/[\\/\\\\]$/.test(baseUrl)) {\n          baseUrl += '/';\n        }\n      }\n      return baseUrl;\n    };\n\n    var defaultFormat = 'html';\n    var trimEmptyContents = function (editor, html) {\n      var blockName = Settings.getForcedRootBlock(editor);\n      var emptyRegExp = new RegExp('^(<' + blockName + '[^>]*>(&nbsp;|&#160;|\\\\s|\\xA0|<br \\\\/>|)<\\\\/' + blockName + '>[\\r\\n]*|<br \\\\/>[\\r\\n]*)$');\n      return html.replace(emptyRegExp, '');\n    };\n    var getContentFromBody = function (editor, args, body) {\n      var content;\n      args.format = args.format ? args.format : defaultFormat;\n      args.get = true;\n      args.getInner = true;\n      if (!args.no_events) {\n        editor.fire('BeforeGetContent', args);\n      }\n      if (args.format === 'raw') {\n        content = Tools.trim(TrimHtml.trimExternal(editor.serializer, body.innerHTML));\n      } else if (args.format === 'text') {\n        content = Zwsp.trim(body.innerText || body.textContent);\n      } else if (args.format === 'tree') {\n        return editor.serializer.serialize(body, args);\n      } else {\n        content = trimEmptyContents(editor, editor.serializer.serialize(body, args));\n      }\n      if (args.format !== 'text' && !isWsPreserveElement(Element$$1.fromDom(body))) {\n        args.content = Tools.trim(content);\n      } else {\n        args.content = content;\n      }\n      if (!args.no_events) {\n        editor.fire('GetContent', args);\n      }\n      return args.content;\n    };\n    var getContent$1 = function (editor, args) {\n      if (args === void 0) {\n        args = {};\n      }\n      return Option.from(editor.getBody()).fold(constant(args.format === 'tree' ? new Node$2('body', 11) : ''), function (body) {\n        return getContentFromBody(editor, args, body);\n      });\n    };\n\n    var traverse = function (node, fn) {\n      fn(node);\n      if (node.firstChild) {\n        traverse(node.firstChild, fn);\n      }\n      if (node.next) {\n        traverse(node.next, fn);\n      }\n    };\n    var findMatchingNodes = function (nodeFilters, attributeFilters, node) {\n      var nodeMatches = {};\n      var attrMatches = {};\n      var matches = [];\n      if (node.firstChild) {\n        traverse(node.firstChild, function (node) {\n          each(nodeFilters, function (filter$$1) {\n            if (filter$$1.name === node.name) {\n              if (nodeMatches[filter$$1.name]) {\n                nodeMatches[filter$$1.name].nodes.push(node);\n              } else {\n                nodeMatches[filter$$1.name] = {\n                  filter: filter$$1,\n                  nodes: [node]\n                };\n              }\n            }\n          });\n          each(attributeFilters, function (filter$$1) {\n            if (typeof node.attr(filter$$1.name) === 'string') {\n              if (attrMatches[filter$$1.name]) {\n                attrMatches[filter$$1.name].nodes.push(node);\n              } else {\n                attrMatches[filter$$1.name] = {\n                  filter: filter$$1,\n                  nodes: [node]\n                };\n              }\n            }\n          });\n        });\n      }\n      for (var name in nodeMatches) {\n        if (nodeMatches.hasOwnProperty(name)) {\n          matches.push(nodeMatches[name]);\n        }\n      }\n      for (var name in attrMatches) {\n        if (attrMatches.hasOwnProperty(name)) {\n          matches.push(attrMatches[name]);\n        }\n      }\n      return matches;\n    };\n    var filter$3 = function (nodeFilters, attributeFilters, node) {\n      var matches = findMatchingNodes(nodeFilters, attributeFilters, node);\n      each(matches, function (match) {\n        each(match.filter.callbacks, function (callback) {\n          callback(match.nodes, match.filter.name, {});\n        });\n      });\n    };\n\n    var defaultFormat$1 = 'html';\n    var isTreeNode = function (content) {\n      return content instanceof Node$2;\n    };\n    var moveSelection = function (editor) {\n      if (EditorFocus.hasFocus(editor)) {\n        CaretFinder.firstPositionIn(editor.getBody()).each(function (pos) {\n          var node = pos.getNode();\n          var caretPos = NodeType.isTable(node) ? CaretFinder.firstPositionIn(node).getOr(pos) : pos;\n          editor.selection.setRng(caretPos.toRange());\n        });\n      }\n    };\n    var setEditorHtml = function (editor, html) {\n      editor.dom.setHTML(editor.getBody(), html);\n      moveSelection(editor);\n    };\n    var setContentString = function (editor, body, content, args) {\n      var forcedRootBlockName, padd;\n      if (content.length === 0 || /^\\s+$/.test(content)) {\n        padd = '<br data-mce-bogus=\"1\">';\n        if (body.nodeName === 'TABLE') {\n          content = '<tr><td>' + padd + '</td></tr>';\n        } else if (/^(UL|OL)$/.test(body.nodeName)) {\n          content = '<li>' + padd + '</li>';\n        }\n        forcedRootBlockName = Settings.getForcedRootBlock(editor);\n        if (forcedRootBlockName && editor.schema.isValidChild(body.nodeName.toLowerCase(), forcedRootBlockName.toLowerCase())) {\n          content = padd;\n          content = editor.dom.createHTML(forcedRootBlockName, editor.settings.forced_root_block_attrs, content);\n        } else if (!content) {\n          content = '<br data-mce-bogus=\"1\">';\n        }\n        setEditorHtml(editor, content);\n        editor.fire('SetContent', args);\n      } else {\n        if (args.format !== 'raw') {\n          content = Serializer({ validate: editor.validate }, editor.schema).serialize(editor.parser.parse(content, {\n            isRootContent: true,\n            insert: true\n          }));\n        }\n        args.content = isWsPreserveElement(Element$$1.fromDom(body)) ? content : Tools.trim(content);\n        setEditorHtml(editor, args.content);\n        if (!args.no_events) {\n          editor.fire('SetContent', args);\n        }\n      }\n      return args.content;\n    };\n    var setContentTree = function (editor, body, content, args) {\n      filter$3(editor.parser.getNodeFilters(), editor.parser.getAttributeFilters(), content);\n      var html = Serializer({ validate: editor.validate }, editor.schema).serialize(content);\n      args.content = isWsPreserveElement(Element$$1.fromDom(body)) ? html : Tools.trim(html);\n      setEditorHtml(editor, args.content);\n      if (!args.no_events) {\n        editor.fire('SetContent', args);\n      }\n      return content;\n    };\n    var setContent$1 = function (editor, content, args) {\n      if (args === void 0) {\n        args = {};\n      }\n      args.format = args.format ? args.format : defaultFormat$1;\n      args.set = true;\n      args.content = isTreeNode(content) ? '' : content;\n      if (!isTreeNode(content) && !args.no_events) {\n        editor.fire('BeforeSetContent', args);\n        content = args.content;\n      }\n      return Option.from(editor.getBody()).fold(constant(content), function (body) {\n        return isTreeNode(content) ? setContentTree(editor, body, content, args) : setContentString(editor, body, content, args);\n      });\n    };\n\n    var DOM$6 = DOMUtils$1.DOM;\n    var restoreOriginalStyles = function (editor) {\n      DOM$6.setStyle(editor.id, 'display', editor.orgDisplay);\n    };\n    var safeDestroy = function (x) {\n      return Option.from(x).each(function (x) {\n        return x.destroy();\n      });\n    };\n    var clearDomReferences = function (editor) {\n      editor.contentAreaContainer = editor.formElement = editor.container = editor.editorContainer = null;\n      editor.bodyElement = editor.contentDocument = editor.contentWindow = null;\n      editor.iframeElement = editor.targetElm = null;\n      if (editor.selection) {\n        editor.selection = editor.selection.win = editor.selection.dom = editor.selection.dom.doc = null;\n      }\n    };\n    var restoreForm = function (editor) {\n      var form = editor.formElement;\n      if (form) {\n        if (form._mceOldSubmit) {\n          form.submit = form._mceOldSubmit;\n          form._mceOldSubmit = null;\n        }\n        DOM$6.unbind(form, 'submit reset', editor.formEventDelegate);\n      }\n    };\n    var remove$9 = function (editor) {\n      if (!editor.removed) {\n        var _selectionOverrides = editor._selectionOverrides, editorUpload = editor.editorUpload;\n        var body = editor.getBody();\n        var element = editor.getElement();\n        if (body) {\n          editor.save({ is_removing: true });\n        }\n        editor.removed = true;\n        editor.unbindAllNativeEvents();\n        if (editor.hasHiddenInput && element) {\n          DOM$6.remove(element.nextSibling);\n        }\n        if (!editor.inline && body) {\n          restoreOriginalStyles(editor);\n        }\n        Events.fireRemove(editor);\n        editor.editorManager.remove(editor);\n        DOM$6.remove(editor.getContainer());\n        safeDestroy(_selectionOverrides);\n        safeDestroy(editorUpload);\n        editor.destroy();\n      }\n    };\n    var destroy = function (editor, automatic) {\n      var selection = editor.selection, dom = editor.dom;\n      if (editor.destroyed) {\n        return;\n      }\n      if (!automatic && !editor.removed) {\n        editor.remove();\n        return;\n      }\n      if (!automatic) {\n        editor.editorManager.off('beforeunload', editor._beforeUnload);\n        if (editor.theme && editor.theme.destroy) {\n          editor.theme.destroy();\n        }\n        safeDestroy(selection);\n        safeDestroy(dom);\n      }\n      restoreForm(editor);\n      clearDomReferences(editor);\n      editor.destroyed = true;\n    };\n\n    var DOM$7 = DOMUtils$1.DOM;\n    var extend$4 = Tools.extend, each$l = Tools.each;\n    var resolve$4 = Tools.resolve;\n    var ie$2 = Env.ie;\n    var Editor = function (id, settings, editorManager) {\n      var self = this;\n      var documentBaseUrl = self.documentBaseUrl = editorManager.documentBaseURL;\n      var baseUri = editorManager.baseURI;\n      settings = getEditorSettings(self, id, documentBaseUrl, editorManager.defaultSettings, settings);\n      self.settings = settings;\n      AddOnManager.language = settings.language || 'en';\n      AddOnManager.languageLoad = settings.language_load;\n      AddOnManager.baseURL = editorManager.baseURL;\n      self.id = id;\n      self.setDirty(false);\n      self.plugins = {};\n      self.documentBaseURI = new URI(settings.document_base_url, { base_uri: baseUri });\n      self.baseURI = baseUri;\n      self.contentCSS = [];\n      self.contentStyles = [];\n      self.shortcuts = new Shortcuts(self);\n      self.loadedCSS = {};\n      self.editorCommands = new EditorCommands(self);\n      self.suffix = editorManager.suffix;\n      self.editorManager = editorManager;\n      self.inline = settings.inline;\n      self.buttons = {};\n      self.menuItems = {};\n      if (settings.cache_suffix) {\n        Env.cacheSuffix = settings.cache_suffix.replace(/^[\\?\\&]+/, '');\n      }\n      if (settings.override_viewport === false) {\n        Env.overrideViewPort = false;\n      }\n      editorManager.fire('SetupEditor', { editor: self });\n      self.execCallback('setup', self);\n      self.$ = DomQuery.overrideDefaults(function () {\n        return {\n          context: self.inline ? self.getBody() : self.getDoc(),\n          element: self.getBody()\n        };\n      });\n    };\n    Editor.prototype = {\n      render: function () {\n        Render.render(this);\n      },\n      focus: function (skipFocus) {\n        EditorFocus.focus(this, skipFocus);\n      },\n      hasFocus: function () {\n        return EditorFocus.hasFocus(this);\n      },\n      execCallback: function (name) {\n        var x = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n          x[_i - 1] = arguments[_i];\n        }\n        var self = this;\n        var callback = self.settings[name], scope;\n        if (!callback) {\n          return;\n        }\n        if (self.callbackLookup && (scope = self.callbackLookup[name])) {\n          callback = scope.func;\n          scope = scope.scope;\n        }\n        if (typeof callback === 'string') {\n          scope = callback.replace(/\\.\\w+$/, '');\n          scope = scope ? resolve$4(scope) : 0;\n          callback = resolve$4(callback);\n          self.callbackLookup = self.callbackLookup || {};\n          self.callbackLookup[name] = {\n            func: callback,\n            scope: scope\n          };\n        }\n        return callback.apply(scope || self, Array.prototype.slice.call(arguments, 1));\n      },\n      translate: function (text) {\n        if (text && Tools.is(text, 'string')) {\n          var lang_1 = this.settings.language || 'en', i18n_1 = this.editorManager.i18n;\n          text = i18n_1.data[lang_1 + '.' + text] || text.replace(/\\{\\#([^\\}]+)\\}/g, function (a, b) {\n            return i18n_1.data[lang_1 + '.' + b] || '{#' + b + '}';\n          });\n        }\n        return this.editorManager.translate(text);\n      },\n      getLang: function (name, defaultVal) {\n        return this.editorManager.i18n.data[(this.settings.language || 'en') + '.' + name] || (defaultVal !== undefined ? defaultVal : '{#' + name + '}');\n      },\n      getParam: function (name, defaultVal, type) {\n        return getParam(this, name, defaultVal, type);\n      },\n      nodeChanged: function (args) {\n        this._nodeChangeDispatcher.nodeChanged(args);\n      },\n      addButton: function (name, settings) {\n        var self = this;\n        if (settings.cmd) {\n          settings.onclick = function () {\n            self.execCommand(settings.cmd);\n          };\n        }\n        if (settings.stateSelector && typeof settings.active === 'undefined') {\n          settings.active = false;\n        }\n        if (!settings.text && !settings.icon) {\n          settings.icon = name;\n        }\n        settings.tooltip = settings.tooltip || settings.title;\n        self.buttons[name] = settings;\n      },\n      addSidebar: function (name, settings) {\n        return Sidebar.add(this, name, settings);\n      },\n      addMenuItem: function (name, settings) {\n        var self = this;\n        if (settings.cmd) {\n          settings.onclick = function () {\n            self.execCommand(settings.cmd);\n          };\n        }\n        self.menuItems[name] = settings;\n      },\n      addContextToolbar: function (predicate, items) {\n        var self = this;\n        var selector;\n        self.contextToolbars = self.contextToolbars || [];\n        if (typeof predicate === 'string') {\n          selector = predicate;\n          predicate = function (elm) {\n            return self.dom.is(elm, selector);\n          };\n        }\n        self.contextToolbars.push({\n          id: Uuid.uuid('mcet'),\n          predicate: predicate,\n          items: items\n        });\n      },\n      addCommand: function (name, callback, scope) {\n        this.editorCommands.addCommand(name, callback, scope);\n      },\n      addQueryStateHandler: function (name, callback, scope) {\n        this.editorCommands.addQueryStateHandler(name, callback, scope);\n      },\n      addQueryValueHandler: function (name, callback, scope) {\n        this.editorCommands.addQueryValueHandler(name, callback, scope);\n      },\n      addShortcut: function (pattern, desc, cmdFunc, scope) {\n        this.shortcuts.add(pattern, desc, cmdFunc, scope);\n      },\n      execCommand: function (cmd, ui, value, args) {\n        return this.editorCommands.execCommand(cmd, ui, value, args);\n      },\n      queryCommandState: function (cmd) {\n        return this.editorCommands.queryCommandState(cmd);\n      },\n      queryCommandValue: function (cmd) {\n        return this.editorCommands.queryCommandValue(cmd);\n      },\n      queryCommandSupported: function (cmd) {\n        return this.editorCommands.queryCommandSupported(cmd);\n      },\n      show: function () {\n        var self = this;\n        if (self.hidden) {\n          self.hidden = false;\n          if (self.inline) {\n            self.getBody().contentEditable = true;\n          } else {\n            DOM$7.show(self.getContainer());\n            DOM$7.hide(self.id);\n          }\n          self.load();\n          self.fire('show');\n        }\n      },\n      hide: function () {\n        var self = this, doc = self.getDoc();\n        if (!self.hidden) {\n          if (ie$2 && doc && !self.inline) {\n            doc.execCommand('SelectAll');\n          }\n          self.save();\n          if (self.inline) {\n            self.getBody().contentEditable = false;\n            if (self === self.editorManager.focusedEditor) {\n              self.editorManager.focusedEditor = null;\n            }\n          } else {\n            DOM$7.hide(self.getContainer());\n            DOM$7.setStyle(self.id, 'display', self.orgDisplay);\n          }\n          self.hidden = true;\n          self.fire('hide');\n        }\n      },\n      isHidden: function () {\n        return !!this.hidden;\n      },\n      setProgressState: function (state, time) {\n        this.fire('ProgressState', {\n          state: state,\n          time: time\n        });\n      },\n      load: function (args) {\n        var self = this;\n        var elm = self.getElement(), html;\n        if (self.removed) {\n          return '';\n        }\n        if (elm) {\n          args = args || {};\n          args.load = true;\n          html = self.setContent(elm.value !== undefined ? elm.value : elm.innerHTML, args);\n          args.element = elm;\n          if (!args.no_events) {\n            self.fire('LoadContent', args);\n          }\n          args.element = elm = null;\n          return html;\n        }\n      },\n      save: function (args) {\n        var self = this;\n        var elm = self.getElement(), html, form;\n        if (!elm || !self.initialized || self.removed) {\n          return;\n        }\n        args = args || {};\n        args.save = true;\n        args.element = elm;\n        html = args.content = self.getContent(args);\n        if (!args.no_events) {\n          self.fire('SaveContent', args);\n        }\n        if (args.format === 'raw') {\n          self.fire('RawSaveContent', args);\n        }\n        html = args.content;\n        if (!/TEXTAREA|INPUT/i.test(elm.nodeName)) {\n          if (args.is_removing || !self.inline) {\n            elm.innerHTML = html;\n          }\n          if (form = DOM$7.getParent(self.id, 'form')) {\n            each$l(form.elements, function (elm) {\n              if (elm.name === self.id) {\n                elm.value = html;\n                return false;\n              }\n            });\n          }\n        } else {\n          elm.value = html;\n        }\n        args.element = elm = null;\n        if (args.set_dirty !== false) {\n          self.setDirty(false);\n        }\n        return html;\n      },\n      setContent: function (content, args) {\n        return setContent$1(this, content, args);\n      },\n      getContent: function (args) {\n        return getContent$1(this, args);\n      },\n      insertContent: function (content, args) {\n        if (args) {\n          content = extend$4({ content: content }, args);\n        }\n        this.execCommand('mceInsertContent', false, content);\n      },\n      isDirty: function () {\n        return !this.isNotDirty;\n      },\n      setDirty: function (state) {\n        var oldState = !this.isNotDirty;\n        this.isNotDirty = !state;\n        if (state && state !== oldState) {\n          this.fire('dirty');\n        }\n      },\n      setMode: function (mode) {\n        setMode(this, mode);\n      },\n      getContainer: function () {\n        var self = this;\n        if (!self.container) {\n          self.container = DOM$7.get(self.editorContainer || self.id + '_parent');\n        }\n        return self.container;\n      },\n      getContentAreaContainer: function () {\n        return this.contentAreaContainer;\n      },\n      getElement: function () {\n        if (!this.targetElm) {\n          this.targetElm = DOM$7.get(this.id);\n        }\n        return this.targetElm;\n      },\n      getWin: function () {\n        var self = this;\n        var elm;\n        if (!self.contentWindow) {\n          elm = self.iframeElement;\n          if (elm) {\n            self.contentWindow = elm.contentWindow;\n          }\n        }\n        return self.contentWindow;\n      },\n      getDoc: function () {\n        var self = this;\n        var win;\n        if (!self.contentDocument) {\n          win = self.getWin();\n          if (win) {\n            self.contentDocument = win.document;\n          }\n        }\n        return self.contentDocument;\n      },\n      getBody: function () {\n        var doc = this.getDoc();\n        return this.bodyElement || (doc ? doc.body : null);\n      },\n      convertURL: function (url, name, elm) {\n        var self = this, settings = self.settings;\n        if (settings.urlconverter_callback) {\n          return self.execCallback('urlconverter_callback', url, elm, true, name);\n        }\n        if (!settings.convert_urls || elm && elm.nodeName === 'LINK' || url.indexOf('file:') === 0 || url.length === 0) {\n          return url;\n        }\n        if (settings.relative_urls) {\n          return self.documentBaseURI.toRelative(url);\n        }\n        url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host);\n        return url;\n      },\n      addVisual: function (elm) {\n        var self = this;\n        var settings = self.settings;\n        var dom = self.dom;\n        var cls;\n        elm = elm || self.getBody();\n        if (self.hasVisual === undefined) {\n          self.hasVisual = settings.visual;\n        }\n        each$l(dom.select('table,a', elm), function (elm) {\n          var value;\n          switch (elm.nodeName) {\n          case 'TABLE':\n            cls = settings.visual_table_class || 'mce-item-table';\n            value = dom.getAttrib(elm, 'border');\n            if ((!value || value === '0') && self.hasVisual) {\n              dom.addClass(elm, cls);\n            } else {\n              dom.removeClass(elm, cls);\n            }\n            return;\n          case 'A':\n            if (!dom.getAttrib(elm, 'href')) {\n              value = dom.getAttrib(elm, 'name') || elm.id;\n              cls = settings.visual_anchor_class || 'mce-item-anchor';\n              if (value && self.hasVisual) {\n                dom.addClass(elm, cls);\n              } else {\n                dom.removeClass(elm, cls);\n              }\n            }\n            return;\n          }\n        });\n        self.fire('VisualAid', {\n          element: elm,\n          hasVisual: self.hasVisual\n        });\n      },\n      remove: function () {\n        remove$9(this);\n      },\n      destroy: function (automatic) {\n        destroy(this, automatic);\n      },\n      uploadImages: function (callback) {\n        return this.editorUpload.uploadImages(callback);\n      },\n      _scanForImages: function () {\n        return this.editorUpload.scanForImages();\n      }\n    };\n    extend$4(Editor.prototype, EditorObservable$1);\n\n    var isEditorUIElement = function (elm) {\n      return elm.className.toString().indexOf('mce-') !== -1;\n    };\n    var FocusManager = { isEditorUIElement: isEditorUIElement };\n\n    var isManualNodeChange = function (e) {\n      return e.type === 'nodechange' && e.selectionChange;\n    };\n    var registerPageMouseUp = function (editor, throttledStore) {\n      var mouseUpPage = function () {\n        throttledStore.throttle();\n      };\n      DOMUtils$1.DOM.bind(document, 'mouseup', mouseUpPage);\n      editor.on('remove', function () {\n        DOMUtils$1.DOM.unbind(document, 'mouseup', mouseUpPage);\n      });\n    };\n    var registerFocusOut = function (editor) {\n      editor.on('focusout', function () {\n        SelectionBookmark.store(editor);\n      });\n    };\n    var registerMouseUp = function (editor, throttledStore) {\n      editor.on('mouseup touchend', function (e) {\n        throttledStore.throttle();\n      });\n    };\n    var registerEditorEvents = function (editor, throttledStore) {\n      var browser = PlatformDetection$1.detect().browser;\n      if (browser.isIE()) {\n        registerFocusOut(editor);\n      } else {\n        registerMouseUp(editor, throttledStore);\n      }\n      editor.on('keyup nodechange', function (e) {\n        if (!isManualNodeChange(e)) {\n          SelectionBookmark.store(editor);\n        }\n      });\n    };\n    var register$3 = function (editor) {\n      var throttledStore = first$1(function () {\n        SelectionBookmark.store(editor);\n      }, 0);\n      if (editor.inline) {\n        registerPageMouseUp(editor, throttledStore);\n      }\n      editor.on('init', function () {\n        registerEditorEvents(editor, throttledStore);\n      });\n      editor.on('remove', function () {\n        throttledStore.cancel();\n      });\n    };\n    var SelectionRestore = { register: register$3 };\n\n    var documentFocusInHandler;\n    var DOM$8 = DOMUtils$1.DOM;\n    var isEditorUIElement$1 = function (elm) {\n      return FocusManager.isEditorUIElement(elm);\n    };\n    var isUIElement = function (editor, elm) {\n      var customSelector = editor ? editor.settings.custom_ui_selector : '';\n      var parent$$1 = DOM$8.getParent(elm, function (elm) {\n        return isEditorUIElement$1(elm) || (customSelector ? editor.dom.is(elm, customSelector) : false);\n      });\n      return parent$$1 !== null;\n    };\n    var getActiveElement = function () {\n      try {\n        return document.activeElement;\n      } catch (ex) {\n        return document.body;\n      }\n    };\n    var registerEvents = function (editorManager, e) {\n      var editor = e.editor;\n      SelectionRestore.register(editor);\n      editor.on('focusin', function () {\n        var self$$1 = this;\n        var focusedEditor = editorManager.focusedEditor;\n        if (focusedEditor !== self$$1) {\n          if (focusedEditor) {\n            focusedEditor.fire('blur', { focusedEditor: self$$1 });\n          }\n          editorManager.setActive(self$$1);\n          editorManager.focusedEditor = self$$1;\n          self$$1.fire('focus', { blurredEditor: focusedEditor });\n          self$$1.focus(true);\n        }\n      });\n      editor.on('focusout', function () {\n        var self$$1 = this;\n        Delay.setEditorTimeout(self$$1, function () {\n          var focusedEditor = editorManager.focusedEditor;\n          if (!isUIElement(self$$1, getActiveElement()) && focusedEditor === self$$1) {\n            self$$1.fire('blur', { focusedEditor: null });\n            editorManager.focusedEditor = null;\n          }\n        });\n      });\n      if (!documentFocusInHandler) {\n        documentFocusInHandler = function (e) {\n          var activeEditor = editorManager.activeEditor;\n          var target;\n          target = e.target;\n          if (activeEditor && target.ownerDocument === document) {\n            if (target !== document.body && !isUIElement(activeEditor, target) && editorManager.focusedEditor === activeEditor) {\n              activeEditor.fire('blur', { focusedEditor: null });\n              editorManager.focusedEditor = null;\n            }\n          }\n        };\n        DOM$8.bind(document, 'focusin', documentFocusInHandler);\n      }\n    };\n    var unregisterDocumentEvents = function (editorManager, e) {\n      if (editorManager.focusedEditor === e.editor) {\n        editorManager.focusedEditor = null;\n      }\n      if (!editorManager.activeEditor) {\n        DOM$8.unbind(document, 'focusin', documentFocusInHandler);\n        documentFocusInHandler = null;\n      }\n    };\n    var setup$g = function (editorManager) {\n      editorManager.on('AddEditor', curry(registerEvents, editorManager));\n      editorManager.on('RemoveEditor', curry(unregisterDocumentEvents, editorManager));\n    };\n    var FocusController = {\n      setup: setup$g,\n      isEditorUIElement: isEditorUIElement$1,\n      isUIElement: isUIElement\n    };\n\n    var data = {};\n    var code = 'en';\n    var I18n = {\n      setCode: function (newCode) {\n        if (newCode) {\n          code = newCode;\n          this.rtl = this.data[newCode] ? this.data[newCode]._dir === 'rtl' : false;\n        }\n      },\n      getCode: function () {\n        return code;\n      },\n      rtl: false,\n      add: function (code, items) {\n        var langData = data[code];\n        if (!langData) {\n          data[code] = langData = {};\n        }\n        for (var name in items) {\n          langData[name] = items[name];\n        }\n        this.setCode(code);\n      },\n      translate: function (text) {\n        var langData = data[code] || {};\n        var toString = function (obj) {\n          if (Tools.is(obj, 'function')) {\n            return Object.prototype.toString.call(obj);\n          }\n          return !isEmpty(obj) ? '' + obj : '';\n        };\n        var isEmpty = function (text) {\n          return text === '' || text === null || Tools.is(text, 'undefined');\n        };\n        var getLangData = function (text) {\n          text = toString(text);\n          return Tools.hasOwn(langData, text) ? toString(langData[text]) : text;\n        };\n        if (isEmpty(text)) {\n          return '';\n        }\n        if (Tools.is(text, 'object') && Tools.hasOwn(text, 'raw')) {\n          return toString(text.raw);\n        }\n        if (Tools.is(text, 'array')) {\n          var values_1 = text.slice(1);\n          text = getLangData(text[0]).replace(/\\{([0-9]+)\\}/g, function ($1, $2) {\n            return Tools.hasOwn(values_1, $2) ? toString(values_1[$2]) : $1;\n          });\n        }\n        return getLangData(text).replace(/{context:\\w+}$/, '');\n      },\n      data: data\n    };\n\n    var DOM$9 = DOMUtils$1.DOM;\n    var explode$4 = Tools.explode, each$m = Tools.each, extend$5 = Tools.extend;\n    var instanceCounter = 0, beforeUnloadDelegate, EditorManager, boundGlobalEvents = false;\n    var legacyEditors = [];\n    var editors = [];\n    var isValidLegacyKey = function (id) {\n      return id !== 'length';\n    };\n    var globalEventDelegate = function (e) {\n      each$m(EditorManager.get(), function (editor) {\n        if (e.type === 'scroll') {\n          editor.fire('ScrollWindow', e);\n        } else {\n          editor.fire('ResizeWindow', e);\n        }\n      });\n    };\n    var toggleGlobalEvents = function (state) {\n      if (state !== boundGlobalEvents) {\n        if (state) {\n          DomQuery(window).on('resize scroll', globalEventDelegate);\n        } else {\n          DomQuery(window).off('resize scroll', globalEventDelegate);\n        }\n        boundGlobalEvents = state;\n      }\n    };\n    var removeEditorFromList = function (targetEditor) {\n      var oldEditors = editors;\n      delete legacyEditors[targetEditor.id];\n      for (var i = 0; i < legacyEditors.length; i++) {\n        if (legacyEditors[i] === targetEditor) {\n          legacyEditors.splice(i, 1);\n          break;\n        }\n      }\n      editors = filter(editors, function (editor) {\n        return targetEditor !== editor;\n      });\n      if (EditorManager.activeEditor === targetEditor) {\n        EditorManager.activeEditor = editors.length > 0 ? editors[0] : null;\n      }\n      if (EditorManager.focusedEditor === targetEditor) {\n        EditorManager.focusedEditor = null;\n      }\n      return oldEditors.length !== editors.length;\n    };\n    var purgeDestroyedEditor = function (editor) {\n      if (editor && editor.initialized && !(editor.getContainer() || editor.getBody()).parentNode) {\n        removeEditorFromList(editor);\n        editor.unbindAllNativeEvents();\n        editor.destroy(true);\n        editor.removed = true;\n        editor = null;\n      }\n      return editor;\n    };\n    EditorManager = {\n      defaultSettings: {},\n      $: DomQuery,\n      majorVersion: '4',\n      minorVersion: '9.2',\n      releaseDate: '2018-12-17',\n      editors: legacyEditors,\n      i18n: I18n,\n      activeEditor: null,\n      settings: {},\n      setup: function () {\n        var self$$1 = this;\n        var baseURL, documentBaseURL, suffix = '', preInit, src;\n        documentBaseURL = URI.getDocumentBaseUrl(document.location);\n        if (/^[^:]+:\\/\\/\\/?[^\\/]+\\//.test(documentBaseURL)) {\n          documentBaseURL = documentBaseURL.replace(/[\\?#].*$/, '').replace(/[\\/\\\\][^\\/]+$/, '');\n          if (!/[\\/\\\\]$/.test(documentBaseURL)) {\n            documentBaseURL += '/';\n          }\n        }\n        preInit = window.tinymce || window.tinyMCEPreInit;\n        if (preInit) {\n          baseURL = preInit.base || preInit.baseURL;\n          suffix = preInit.suffix;\n        } else {\n          var scripts = document.getElementsByTagName('script');\n          for (var i = 0; i < scripts.length; i++) {\n            src = scripts[i].src;\n            var srcScript = src.substring(src.lastIndexOf('/'));\n            if (/tinymce(\\.full|\\.jquery|)(\\.min|\\.dev|)\\.js/.test(src)) {\n              if (srcScript.indexOf('.min') !== -1) {\n                suffix = '.min';\n              }\n              baseURL = src.substring(0, src.lastIndexOf('/'));\n              break;\n            }\n          }\n          if (!baseURL && document.currentScript) {\n            src = document.currentScript.src;\n            if (src.indexOf('.min') !== -1) {\n              suffix = '.min';\n            }\n            baseURL = src.substring(0, src.lastIndexOf('/'));\n          }\n        }\n        self$$1.baseURL = new URI(documentBaseURL).toAbsolute(baseURL);\n        self$$1.documentBaseURL = documentBaseURL;\n        self$$1.baseURI = new URI(self$$1.baseURL);\n        self$$1.suffix = suffix;\n        FocusController.setup(self$$1);\n      },\n      overrideDefaults: function (defaultSettings) {\n        var baseUrl, suffix;\n        baseUrl = defaultSettings.base_url;\n        if (baseUrl) {\n          this.baseURL = new URI(this.documentBaseURL).toAbsolute(baseUrl.replace(/\\/+$/, ''));\n          this.baseURI = new URI(this.baseURL);\n        }\n        suffix = defaultSettings.suffix;\n        if (defaultSettings.suffix) {\n          this.suffix = suffix;\n        }\n        this.defaultSettings = defaultSettings;\n        var pluginBaseUrls = defaultSettings.plugin_base_urls;\n        for (var name$$1 in pluginBaseUrls) {\n          AddOnManager.PluginManager.urls[name$$1] = pluginBaseUrls[name$$1];\n        }\n      },\n      init: function (settings) {\n        var self$$1 = this;\n        var result, invalidInlineTargets;\n        invalidInlineTargets = Tools.makeMap('area base basefont br col frame hr img input isindex link meta param embed source wbr track ' + 'colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu', ' ');\n        var isInvalidInlineTarget = function (settings, elm) {\n          return settings.inline && elm.tagName.toLowerCase() in invalidInlineTargets;\n        };\n        var createId = function (elm) {\n          var id = elm.id;\n          if (!id) {\n            id = elm.name;\n            if (id && !DOM$9.get(id)) {\n              id = elm.name;\n            } else {\n              id = DOM$9.uniqueId();\n            }\n            elm.setAttribute('id', id);\n          }\n          return id;\n        };\n        var execCallback = function (name$$1) {\n          var callback = settings[name$$1];\n          if (!callback) {\n            return;\n          }\n          return callback.apply(self$$1, Array.prototype.slice.call(arguments, 2));\n        };\n        var hasClass = function (elm, className) {\n          return className.constructor === RegExp ? className.test(elm.className) : DOM$9.hasClass(elm, className);\n        };\n        var findTargets = function (settings) {\n          var l, targets = [];\n          if (Env.ie && Env.ie < 11) {\n            ErrorReporter.initError('TinyMCE does not support the browser you are using. For a list of supported' + ' browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/');\n            return [];\n          }\n          if (settings.types) {\n            each$m(settings.types, function (type) {\n              targets = targets.concat(DOM$9.select(type.selector));\n            });\n            return targets;\n          } else if (settings.selector) {\n            return DOM$9.select(settings.selector);\n          } else if (settings.target) {\n            return [settings.target];\n          }\n          switch (settings.mode) {\n          case 'exact':\n            l = settings.elements || '';\n            if (l.length > 0) {\n              each$m(explode$4(l), function (id) {\n                var elm;\n                if (elm = DOM$9.get(id)) {\n                  targets.push(elm);\n                } else {\n                  each$m(document.forms, function (f) {\n                    each$m(f.elements, function (e) {\n                      if (e.name === id) {\n                        id = 'mce_editor_' + instanceCounter++;\n                        DOM$9.setAttrib(e, 'id', id);\n                        targets.push(e);\n                      }\n                    });\n                  });\n                }\n              });\n            }\n            break;\n          case 'textareas':\n          case 'specific_textareas':\n            each$m(DOM$9.select('textarea'), function (elm) {\n              if (settings.editor_deselector && hasClass(elm, settings.editor_deselector)) {\n                return;\n              }\n              if (!settings.editor_selector || hasClass(elm, settings.editor_selector)) {\n                targets.push(elm);\n              }\n            });\n            break;\n          }\n          return targets;\n        };\n        var provideResults = function (editors) {\n          result = editors;\n        };\n        var initEditors = function () {\n          var initCount = 0;\n          var editors = [];\n          var targets;\n          var createEditor = function (id, settings, targetElm) {\n            var editor = new Editor(id, settings, self$$1);\n            editors.push(editor);\n            editor.on('init', function () {\n              if (++initCount === targets.length) {\n                provideResults(editors);\n              }\n            });\n            editor.targetElm = editor.targetElm || targetElm;\n            editor.render();\n          };\n          DOM$9.unbind(window, 'ready', initEditors);\n          execCallback('onpageload');\n          targets = DomQuery.unique(findTargets(settings));\n          if (settings.types) {\n            each$m(settings.types, function (type) {\n              Tools.each(targets, function (elm) {\n                if (DOM$9.is(elm, type.selector)) {\n                  createEditor(createId(elm), extend$5({}, settings, type), elm);\n                  return false;\n                }\n                return true;\n              });\n            });\n            return;\n          }\n          Tools.each(targets, function (elm) {\n            purgeDestroyedEditor(self$$1.get(elm.id));\n          });\n          targets = Tools.grep(targets, function (elm) {\n            return !self$$1.get(elm.id);\n          });\n          if (targets.length === 0) {\n            provideResults([]);\n          } else {\n            each$m(targets, function (elm) {\n              if (isInvalidInlineTarget(settings, elm)) {\n                ErrorReporter.initError('Could not initialize inline editor on invalid inline target element', elm);\n              } else {\n                createEditor(createId(elm), settings, elm);\n              }\n            });\n          }\n        };\n        self$$1.settings = settings;\n        DOM$9.bind(window, 'ready', initEditors);\n        return new promiseObj(function (resolve) {\n          if (result) {\n            resolve(result);\n          } else {\n            provideResults = function (editors) {\n              resolve(editors);\n            };\n          }\n        });\n      },\n      get: function (id) {\n        if (arguments.length === 0) {\n          return editors.slice(0);\n        } else if (isString(id)) {\n          return find(editors, function (editor) {\n            return editor.id === id;\n          }).getOr(null);\n        } else if (isNumber(id)) {\n          return editors[id] ? editors[id] : null;\n        } else {\n          return null;\n        }\n      },\n      add: function (editor) {\n        var self$$1 = this;\n        var existingEditor;\n        existingEditor = legacyEditors[editor.id];\n        if (existingEditor === editor) {\n          return editor;\n        }\n        if (self$$1.get(editor.id) === null) {\n          if (isValidLegacyKey(editor.id)) {\n            legacyEditors[editor.id] = editor;\n          }\n          legacyEditors.push(editor);\n          editors.push(editor);\n        }\n        toggleGlobalEvents(true);\n        self$$1.activeEditor = editor;\n        self$$1.fire('AddEditor', { editor: editor });\n        if (!beforeUnloadDelegate) {\n          beforeUnloadDelegate = function () {\n            self$$1.fire('BeforeUnload');\n          };\n          DOM$9.bind(window, 'beforeunload', beforeUnloadDelegate);\n        }\n        return editor;\n      },\n      createEditor: function (id, settings) {\n        return this.add(new Editor(id, settings, this));\n      },\n      remove: function (selector) {\n        var self$$1 = this;\n        var i, editor;\n        if (!selector) {\n          for (i = editors.length - 1; i >= 0; i--) {\n            self$$1.remove(editors[i]);\n          }\n          return;\n        }\n        if (isString(selector)) {\n          each$m(DOM$9.select(selector), function (elm) {\n            editor = self$$1.get(elm.id);\n            if (editor) {\n              self$$1.remove(editor);\n            }\n          });\n          return;\n        }\n        editor = selector;\n        if (isNull(self$$1.get(editor.id))) {\n          return null;\n        }\n        if (removeEditorFromList(editor)) {\n          self$$1.fire('RemoveEditor', { editor: editor });\n        }\n        if (editors.length === 0) {\n          DOM$9.unbind(window, 'beforeunload', beforeUnloadDelegate);\n        }\n        editor.remove();\n        toggleGlobalEvents(editors.length > 0);\n        return editor;\n      },\n      execCommand: function (cmd, ui, value) {\n        var self$$1 = this, editor = self$$1.get(value);\n        switch (cmd) {\n        case 'mceAddEditor':\n          if (!self$$1.get(value)) {\n            new Editor(value, self$$1.settings, self$$1).render();\n          }\n          return true;\n        case 'mceRemoveEditor':\n          if (editor) {\n            editor.remove();\n          }\n          return true;\n        case 'mceToggleEditor':\n          if (!editor) {\n            self$$1.execCommand('mceAddEditor', 0, value);\n            return true;\n          }\n          if (editor.isHidden()) {\n            editor.show();\n          } else {\n            editor.hide();\n          }\n          return true;\n        }\n        if (self$$1.activeEditor) {\n          return self$$1.activeEditor.execCommand(cmd, ui, value);\n        }\n        return false;\n      },\n      triggerSave: function () {\n        each$m(editors, function (editor) {\n          editor.save();\n        });\n      },\n      addI18n: function (code, items) {\n        I18n.add(code, items);\n      },\n      translate: function (text) {\n        return I18n.translate(text);\n      },\n      setActive: function (editor) {\n        var activeEditor = this.activeEditor;\n        if (this.activeEditor !== editor) {\n          if (activeEditor) {\n            activeEditor.fire('deactivate', { relatedTarget: editor });\n          }\n          editor.fire('activate', { relatedTarget: activeEditor });\n        }\n        this.activeEditor = editor;\n      }\n    };\n    extend$5(EditorManager, Observable);\n    EditorManager.setup();\n    var EditorManager$1 = EditorManager;\n\n    function RangeUtils(dom) {\n      var walk = function (rng, callback) {\n        return RangeWalk.walk(dom, rng, callback);\n      };\n      var split = SplitRange.split;\n      var normalize = function (rng) {\n        return NormalizeRange.normalize(dom, rng).fold(constant(false), function (normalizedRng) {\n          rng.setStart(normalizedRng.startContainer, normalizedRng.startOffset);\n          rng.setEnd(normalizedRng.endContainer, normalizedRng.endOffset);\n          return true;\n        });\n      };\n      return {\n        walk: walk,\n        split: split,\n        normalize: normalize\n      };\n    }\n    (function (RangeUtils) {\n      RangeUtils.compareRanges = RangeCompare.isEq;\n      RangeUtils.getCaretRangeFromPoint = CaretRangeFromPoint.fromPoint;\n      RangeUtils.getSelectedNode = getSelectedNode;\n      RangeUtils.getNode = getNode;\n    }(RangeUtils || (RangeUtils = {})));\n    var RangeUtils$1 = RangeUtils;\n\n    var min = Math.min, max = Math.max, round$2 = Math.round;\n    var relativePosition = function (rect, targetRect, rel) {\n      var x, y, w, h, targetW, targetH;\n      x = targetRect.x;\n      y = targetRect.y;\n      w = rect.w;\n      h = rect.h;\n      targetW = targetRect.w;\n      targetH = targetRect.h;\n      rel = (rel || '').split('');\n      if (rel[0] === 'b') {\n        y += targetH;\n      }\n      if (rel[1] === 'r') {\n        x += targetW;\n      }\n      if (rel[0] === 'c') {\n        y += round$2(targetH / 2);\n      }\n      if (rel[1] === 'c') {\n        x += round$2(targetW / 2);\n      }\n      if (rel[3] === 'b') {\n        y -= h;\n      }\n      if (rel[4] === 'r') {\n        x -= w;\n      }\n      if (rel[3] === 'c') {\n        y -= round$2(h / 2);\n      }\n      if (rel[4] === 'c') {\n        x -= round$2(w / 2);\n      }\n      return create$3(x, y, w, h);\n    };\n    var findBestRelativePosition = function (rect, targetRect, constrainRect, rels) {\n      var pos, i;\n      for (i = 0; i < rels.length; i++) {\n        pos = relativePosition(rect, targetRect, rels[i]);\n        if (pos.x >= constrainRect.x && pos.x + pos.w <= constrainRect.w + constrainRect.x && pos.y >= constrainRect.y && pos.y + pos.h <= constrainRect.h + constrainRect.y) {\n          return rels[i];\n        }\n      }\n      return null;\n    };\n    var inflate = function (rect, w, h) {\n      return create$3(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2);\n    };\n    var intersect = function (rect, cropRect) {\n      var x1, y1, x2, y2;\n      x1 = max(rect.x, cropRect.x);\n      y1 = max(rect.y, cropRect.y);\n      x2 = min(rect.x + rect.w, cropRect.x + cropRect.w);\n      y2 = min(rect.y + rect.h, cropRect.y + cropRect.h);\n      if (x2 - x1 < 0 || y2 - y1 < 0) {\n        return null;\n      }\n      return create$3(x1, y1, x2 - x1, y2 - y1);\n    };\n    var clamp$1 = function (rect, clampRect, fixedSize) {\n      var underflowX1, underflowY1, overflowX2, overflowY2, x1, y1, x2, y2, cx2, cy2;\n      x1 = rect.x;\n      y1 = rect.y;\n      x2 = rect.x + rect.w;\n      y2 = rect.y + rect.h;\n      cx2 = clampRect.x + clampRect.w;\n      cy2 = clampRect.y + clampRect.h;\n      underflowX1 = max(0, clampRect.x - x1);\n      underflowY1 = max(0, clampRect.y - y1);\n      overflowX2 = max(0, x2 - cx2);\n      overflowY2 = max(0, y2 - cy2);\n      x1 += underflowX1;\n      y1 += underflowY1;\n      if (fixedSize) {\n        x2 += underflowX1;\n        y2 += underflowY1;\n        x1 -= overflowX2;\n        y1 -= overflowY2;\n      }\n      x2 -= overflowX2;\n      y2 -= overflowY2;\n      return create$3(x1, y1, x2 - x1, y2 - y1);\n    };\n    var create$3 = function (x, y, w, h) {\n      return {\n        x: x,\n        y: y,\n        w: w,\n        h: h\n      };\n    };\n    var fromClientRect = function (clientRect) {\n      return create$3(clientRect.left, clientRect.top, clientRect.width, clientRect.height);\n    };\n    var Rect = {\n      inflate: inflate,\n      relativePosition: relativePosition,\n      findBestRelativePosition: findBestRelativePosition,\n      intersect: intersect,\n      clamp: clamp$1,\n      create: create$3,\n      fromClientRect: fromClientRect\n    };\n\n    var types = {};\n    var Factory = {\n      add: function (type, typeClass) {\n        types[type.toLowerCase()] = typeClass;\n      },\n      has: function (type) {\n        return !!types[type.toLowerCase()];\n      },\n      get: function (type) {\n        var lctype = type.toLowerCase();\n        var controlType = types.hasOwnProperty(lctype) ? types[lctype] : null;\n        if (controlType === null) {\n          throw new Error('Could not find module for type: ' + type);\n        }\n        return controlType;\n      },\n      create: function (type, settings) {\n        var ControlType;\n        if (typeof type === 'string') {\n          settings = settings || {};\n          settings.type = type;\n        } else {\n          settings = type;\n          type = settings.type;\n        }\n        type = type.toLowerCase();\n        ControlType = types[type];\n        if (!ControlType) {\n          throw new Error('Could not find control by type: ' + type);\n        }\n        ControlType = new ControlType(settings);\n        ControlType.type = type;\n        return ControlType;\n      }\n    };\n\n    var each$n = Tools.each, extend$6 = Tools.extend;\n    var extendClass, initializing;\n    var Class = function () {\n    };\n    Class.extend = extendClass = function (prop) {\n      var self = this;\n      var _super = self.prototype;\n      var prototype, name, member;\n      var Class = function () {\n        var i, mixins, mixin;\n        var self = this;\n        if (!initializing) {\n          if (self.init) {\n            self.init.apply(self, arguments);\n          }\n          mixins = self.Mixins;\n          if (mixins) {\n            i = mixins.length;\n            while (i--) {\n              mixin = mixins[i];\n              if (mixin.init) {\n                mixin.init.apply(self, arguments);\n              }\n            }\n          }\n        }\n      };\n      var dummy = function () {\n        return this;\n      };\n      var createMethod = function (name, fn) {\n        return function () {\n          var self = this;\n          var tmp = self._super;\n          var ret;\n          self._super = _super[name];\n          ret = fn.apply(self, arguments);\n          self._super = tmp;\n          return ret;\n        };\n      };\n      initializing = true;\n      prototype = new self();\n      initializing = false;\n      if (prop.Mixins) {\n        each$n(prop.Mixins, function (mixin) {\n          for (var name_1 in mixin) {\n            if (name_1 !== 'init') {\n              prop[name_1] = mixin[name_1];\n            }\n          }\n        });\n        if (_super.Mixins) {\n          prop.Mixins = _super.Mixins.concat(prop.Mixins);\n        }\n      }\n      if (prop.Methods) {\n        each$n(prop.Methods.split(','), function (name) {\n          prop[name] = dummy;\n        });\n      }\n      if (prop.Properties) {\n        each$n(prop.Properties.split(','), function (name) {\n          var fieldName = '_' + name;\n          prop[name] = function (value) {\n            var self = this;\n            if (value !== undefined) {\n              self[fieldName] = value;\n              return self;\n            }\n            return self[fieldName];\n          };\n        });\n      }\n      if (prop.Statics) {\n        each$n(prop.Statics, function (func, name) {\n          Class[name] = func;\n        });\n      }\n      if (prop.Defaults && _super.Defaults) {\n        prop.Defaults = extend$6({}, _super.Defaults, prop.Defaults);\n      }\n      for (name in prop) {\n        member = prop[name];\n        if (typeof member === 'function' && _super[name]) {\n          prototype[name] = createMethod(name, member);\n        } else {\n          prototype[name] = member;\n        }\n      }\n      Class.prototype = prototype;\n      Class.constructor = Class;\n      Class.extend = extendClass;\n      return Class;\n    };\n\n    var min$1 = Math.min, max$1 = Math.max, round$3 = Math.round;\n    var Color = function (value) {\n      var self = {};\n      var r = 0, g = 0, b = 0;\n      var rgb2hsv = function (r, g, b) {\n        var h, s, v, d, minRGB, maxRGB;\n        h = 0;\n        s = 0;\n        v = 0;\n        r = r / 255;\n        g = g / 255;\n        b = b / 255;\n        minRGB = min$1(r, min$1(g, b));\n        maxRGB = max$1(r, max$1(g, b));\n        if (minRGB === maxRGB) {\n          v = minRGB;\n          return {\n            h: 0,\n            s: 0,\n            v: v * 100\n          };\n        }\n        d = r === minRGB ? g - b : b === minRGB ? r - g : b - r;\n        h = r === minRGB ? 3 : b === minRGB ? 1 : 5;\n        h = 60 * (h - d / (maxRGB - minRGB));\n        s = (maxRGB - minRGB) / maxRGB;\n        v = maxRGB;\n        return {\n          h: round$3(h),\n          s: round$3(s * 100),\n          v: round$3(v * 100)\n        };\n      };\n      var hsvToRgb = function (hue, saturation, brightness) {\n        var side, chroma, x, match;\n        hue = (parseInt(hue, 10) || 0) % 360;\n        saturation = parseInt(saturation, 10) / 100;\n        brightness = parseInt(brightness, 10) / 100;\n        saturation = max$1(0, min$1(saturation, 1));\n        brightness = max$1(0, min$1(brightness, 1));\n        if (saturation === 0) {\n          r = g = b = round$3(255 * brightness);\n          return;\n        }\n        side = hue / 60;\n        chroma = brightness * saturation;\n        x = chroma * (1 - Math.abs(side % 2 - 1));\n        match = brightness - chroma;\n        switch (Math.floor(side)) {\n        case 0:\n          r = chroma;\n          g = x;\n          b = 0;\n          break;\n        case 1:\n          r = x;\n          g = chroma;\n          b = 0;\n          break;\n        case 2:\n          r = 0;\n          g = chroma;\n          b = x;\n          break;\n        case 3:\n          r = 0;\n          g = x;\n          b = chroma;\n          break;\n        case 4:\n          r = x;\n          g = 0;\n          b = chroma;\n          break;\n        case 5:\n          r = chroma;\n          g = 0;\n          b = x;\n          break;\n        default:\n          r = g = b = 0;\n        }\n        r = round$3(255 * (r + match));\n        g = round$3(255 * (g + match));\n        b = round$3(255 * (b + match));\n      };\n      var toHex = function () {\n        var hex = function (val) {\n          val = parseInt(val, 10).toString(16);\n          return val.length > 1 ? val : '0' + val;\n        };\n        return '#' + hex(r) + hex(g) + hex(b);\n      };\n      var toRgb = function () {\n        return {\n          r: r,\n          g: g,\n          b: b\n        };\n      };\n      var toHsv = function () {\n        return rgb2hsv(r, g, b);\n      };\n      var parse = function (value) {\n        var matches;\n        if (typeof value === 'object') {\n          if ('r' in value) {\n            r = value.r;\n            g = value.g;\n            b = value.b;\n          } else if ('v' in value) {\n            hsvToRgb(value.h, value.s, value.v);\n          }\n        } else {\n          if (matches = /rgb\\s*\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)[^\\)]*\\)/gi.exec(value)) {\n            r = parseInt(matches[1], 10);\n            g = parseInt(matches[2], 10);\n            b = parseInt(matches[3], 10);\n          } else if (matches = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(value)) {\n            r = parseInt(matches[1], 16);\n            g = parseInt(matches[2], 16);\n            b = parseInt(matches[3], 16);\n          } else if (matches = /#([0-F])([0-F])([0-F])/gi.exec(value)) {\n            r = parseInt(matches[1] + matches[1], 16);\n            g = parseInt(matches[2] + matches[2], 16);\n            b = parseInt(matches[3] + matches[3], 16);\n          }\n        }\n        r = r < 0 ? 0 : r > 255 ? 255 : r;\n        g = g < 0 ? 0 : g > 255 ? 255 : g;\n        b = b < 0 ? 0 : b > 255 ? 255 : b;\n        return self;\n      };\n      if (value) {\n        parse(value);\n      }\n      self.toRgb = toRgb;\n      self.toHsv = toHsv;\n      self.toHex = toHex;\n      self.parse = parse;\n      return self;\n    };\n\n    var serialize = function (o, quote) {\n      var i, v, t, name;\n      quote = quote || '\"';\n      if (o === null) {\n        return 'null';\n      }\n      t = typeof o;\n      if (t === 'string') {\n        v = '\\bb\\tt\\nn\\ff\\rr\"\"\\'\\'\\\\\\\\';\n        return quote + o.replace(/([\\u0080-\\uFFFF\\x00-\\x1f\\\"\\'\\\\])/g, function (a, b) {\n          if (quote === '\"' && a === '\\'') {\n            return a;\n          }\n          i = v.indexOf(b);\n          if (i + 1) {\n            return '\\\\' + v.charAt(i + 1);\n          }\n          a = b.charCodeAt().toString(16);\n          return '\\\\u' + '0000'.substring(a.length) + a;\n        }) + quote;\n      }\n      if (t === 'object') {\n        if (o.hasOwnProperty && Object.prototype.toString.call(o) === '[object Array]') {\n          for (i = 0, v = '['; i < o.length; i++) {\n            v += (i > 0 ? ',' : '') + serialize(o[i], quote);\n          }\n          return v + ']';\n        }\n        v = '{';\n        for (name in o) {\n          if (o.hasOwnProperty(name)) {\n            v += typeof o[name] !== 'function' ? (v.length > 1 ? ',' + quote : quote) + name + quote + ':' + serialize(o[name], quote) : '';\n          }\n        }\n        return v + '}';\n      }\n      return '' + o;\n    };\n    var JSON$1 = {\n      serialize: serialize,\n      parse: function (text) {\n        try {\n          return JSON.parse(text);\n        } catch (ex) {\n        }\n      }\n    };\n\n    var JSONP = {\n      callbacks: {},\n      count: 0,\n      send: function (settings) {\n        var self = this, dom = DOMUtils$1.DOM, count = settings.count !== undefined ? settings.count : self.count;\n        var id = 'tinymce_jsonp_' + count;\n        self.callbacks[count] = function (json) {\n          dom.remove(id);\n          delete self.callbacks[count];\n          settings.callback(json);\n        };\n        dom.add(dom.doc.body, 'script', {\n          id: id,\n          src: settings.url,\n          type: 'text/javascript'\n        });\n        self.count++;\n      }\n    };\n\n    var XHR = {\n      send: function (settings) {\n        var xhr, count = 0;\n        var ready = function () {\n          if (!settings.async || xhr.readyState === 4 || count++ > 10000) {\n            if (settings.success && count < 10000 && xhr.status === 200) {\n              settings.success.call(settings.success_scope, '' + xhr.responseText, xhr, settings);\n            } else if (settings.error) {\n              settings.error.call(settings.error_scope, count > 10000 ? 'TIMED_OUT' : 'GENERAL', xhr, settings);\n            }\n            xhr = null;\n          } else {\n            setTimeout(ready, 10);\n          }\n        };\n        settings.scope = settings.scope || this;\n        settings.success_scope = settings.success_scope || settings.scope;\n        settings.error_scope = settings.error_scope || settings.scope;\n        settings.async = settings.async === false ? false : true;\n        settings.data = settings.data || '';\n        XHR.fire('beforeInitialize', { settings: settings });\n        xhr = XMLHttpRequest();\n        if (xhr) {\n          if (xhr.overrideMimeType) {\n            xhr.overrideMimeType(settings.content_type);\n          }\n          xhr.open(settings.type || (settings.data ? 'POST' : 'GET'), settings.url, settings.async);\n          if (settings.crossDomain) {\n            xhr.withCredentials = true;\n          }\n          if (settings.content_type) {\n            xhr.setRequestHeader('Content-Type', settings.content_type);\n          }\n          if (settings.requestheaders) {\n            Tools.each(settings.requestheaders, function (header) {\n              xhr.setRequestHeader(header.key, header.value);\n            });\n          }\n          xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n          xhr = XHR.fire('beforeSend', {\n            xhr: xhr,\n            settings: settings\n          }).xhr;\n          xhr.send(settings.data);\n          if (!settings.async) {\n            return ready();\n          }\n          setTimeout(ready, 10);\n        }\n      }\n    };\n    Tools.extend(XHR, Observable);\n\n    var extend$7 = Tools.extend;\n    var JSONRequest = function (settings) {\n      this.settings = extend$7({}, settings);\n      this.count = 0;\n    };\n    JSONRequest.sendRPC = function (o) {\n      return new JSONRequest().send(o);\n    };\n    JSONRequest.prototype = {\n      send: function (args) {\n        var ecb = args.error, scb = args.success;\n        args = extend$7(this.settings, args);\n        args.success = function (c, x) {\n          c = JSON$1.parse(c);\n          if (typeof c === 'undefined') {\n            c = { error: 'JSON Parse error.' };\n          }\n          if (c.error) {\n            ecb.call(args.error_scope || args.scope, c.error, x);\n          } else {\n            scb.call(args.success_scope || args.scope, c.result);\n          }\n        };\n        args.error = function (ty, x) {\n          if (ecb) {\n            ecb.call(args.error_scope || args.scope, ty, x);\n          }\n        };\n        args.data = JSON$1.serialize({\n          id: args.id || 'c' + this.count++,\n          method: args.method,\n          params: args.params\n        });\n        args.content_type = 'application/json';\n        XHR.send(args);\n      }\n    };\n\n    var create$4 = function () {\n      return function () {\n        var data = {};\n        var keys = [];\n        var storage = {\n          getItem: function (key) {\n            var item = data[key];\n            return item ? item : null;\n          },\n          setItem: function (key, value) {\n            keys.push(key);\n            data[key] = String(value);\n          },\n          key: function (index) {\n            return keys[index];\n          },\n          removeItem: function (key) {\n            keys = keys.filter(function (k) {\n              return k === key;\n            });\n            delete data[key];\n          },\n          clear: function () {\n            keys = [];\n            data = {};\n          },\n          length: 0\n        };\n        Object.defineProperty(storage, 'length', {\n          get: function () {\n            return keys.length;\n          },\n          configurable: false,\n          enumerable: false\n        });\n        return storage;\n      }();\n    };\n\n    var localStorage$$1;\n    try {\n      localStorage$$1 = window.localStorage;\n    } catch (e) {\n      localStorage$$1 = create$4();\n    }\n    var LocalStorage = localStorage$$1;\n\n    var tinymce = EditorManager$1;\n    var publicApi = {\n      geom: { Rect: Rect },\n      util: {\n        Promise: promiseObj,\n        Delay: Delay,\n        Tools: Tools,\n        VK: VK,\n        URI: URI,\n        Class: Class,\n        EventDispatcher: Dispatcher,\n        Observable: Observable,\n        I18n: I18n,\n        XHR: XHR,\n        JSON: JSON$1,\n        JSONRequest: JSONRequest,\n        JSONP: JSONP,\n        LocalStorage: LocalStorage,\n        Color: Color\n      },\n      dom: {\n        EventUtils: EventUtils,\n        Sizzle: Sizzle,\n        DomQuery: DomQuery,\n        TreeWalker: TreeWalker,\n        DOMUtils: DOMUtils$1,\n        ScriptLoader: ScriptLoader,\n        RangeUtils: RangeUtils$1,\n        Serializer: Serializer$1,\n        ControlSelection: ControlSelection,\n        BookmarkManager: BookmarkManager$1,\n        Selection: Selection,\n        Event: EventUtils.Event\n      },\n      html: {\n        Styles: Styles,\n        Entities: Entities,\n        Node: Node$2,\n        Schema: Schema,\n        SaxParser: SaxParser$1,\n        DomParser: DomParser,\n        Writer: Writer,\n        Serializer: Serializer\n      },\n      ui: { Factory: Factory },\n      Env: Env,\n      AddOnManager: AddOnManager,\n      Annotator: Annotator,\n      Formatter: Formatter,\n      UndoManager: UndoManager,\n      EditorCommands: EditorCommands,\n      WindowManager: WindowManager,\n      NotificationManager: NotificationManager,\n      EditorObservable: EditorObservable$1,\n      Shortcuts: Shortcuts,\n      Editor: Editor,\n      FocusManager: FocusManager,\n      EditorManager: EditorManager$1,\n      DOM: DOMUtils$1.DOM,\n      ScriptLoader: ScriptLoader.ScriptLoader,\n      PluginManager: AddOnManager.PluginManager,\n      ThemeManager: AddOnManager.ThemeManager,\n      trim: Tools.trim,\n      isArray: Tools.isArray,\n      is: Tools.is,\n      toArray: Tools.toArray,\n      makeMap: Tools.makeMap,\n      each: Tools.each,\n      map: Tools.map,\n      grep: Tools.grep,\n      inArray: Tools.inArray,\n      extend: Tools.extend,\n      create: Tools.create,\n      walk: Tools.walk,\n      createNS: Tools.createNS,\n      resolve: Tools.resolve,\n      explode: Tools.explode,\n      _addCacheSuffix: Tools._addCacheSuffix,\n      isOpera: Env.opera,\n      isWebKit: Env.webkit,\n      isIE: Env.ie,\n      isGecko: Env.gecko,\n      isMac: Env.mac\n    };\n    tinymce = Tools.extend(tinymce, publicApi);\n    var Tinymce = tinymce;\n\n    var exportToModuleLoaders = function (tinymce) {\n      if (typeof module === 'object') {\n        try {\n          module.exports = tinymce;\n        } catch (_) {\n        }\n      }\n    };\n    var exportToWindowGlobal = function (tinymce) {\n      window.tinymce = tinymce;\n      window.tinyMCE = tinymce;\n    };\n    exportToWindowGlobal(Tinymce);\n    exportToModuleLoaders(Tinymce);\n\n}());\n})();\n\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = window.tinymce;\n}.call(window));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tinymce/tinymce.js\n// module id = 5eDbSpdmmb\n// module chunks = 2 3 28 35 44 54 73 85 102","\n    define(['i18nObj', 'translations/broken_images', 'translations/_core', 'translations/_core_en'], function(I18n) {\n      return I18n.scoped('broken_images')\n    });\n  \n\n\n//////////////////\n// WEBPACK FOOTER\n// ./frontend_build/i18n.js?broken_images!./public/javascripts/dummyI18nResource.js\n// module id = 9vdLYFzxED\n// module chunks = 85","/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n(function () {\nvar directionality = (function () {\n    'use strict';\n\n    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    var setDir = function (editor, dir) {\n      var dom = editor.dom;\n      var curDir;\n      var blocks = editor.selection.getSelectedBlocks();\n      if (blocks.length) {\n        curDir = dom.getAttrib(blocks[0], 'dir');\n        global$1.each(blocks, function (block) {\n          if (!dom.getParent(block.parentNode, '*[dir=\"' + dir + '\"]', dom.getRoot())) {\n            dom.setAttrib(block, 'dir', curDir !== dir ? dir : null);\n          }\n        });\n        editor.nodeChanged();\n      }\n    };\n    var Direction = { setDir: setDir };\n\n    var register = function (editor) {\n      editor.addCommand('mceDirectionLTR', function () {\n        Direction.setDir(editor, 'ltr');\n      });\n      editor.addCommand('mceDirectionRTL', function () {\n        Direction.setDir(editor, 'rtl');\n      });\n    };\n    var Commands = { register: register };\n\n    var generateSelector = function (dir) {\n      var selector = [];\n      global$1.each('h1 h2 h3 h4 h5 h6 div p'.split(' '), function (name) {\n        selector.push(name + '[dir=' + dir + ']');\n      });\n      return selector.join(',');\n    };\n    var register$1 = function (editor) {\n      editor.addButton('ltr', {\n        title: 'Left to right',\n        cmd: 'mceDirectionLTR',\n        stateSelector: generateSelector('ltr')\n      });\n      editor.addButton('rtl', {\n        title: 'Right to left',\n        cmd: 'mceDirectionRTL',\n        stateSelector: generateSelector('rtl')\n      });\n    };\n    var Buttons = { register: register$1 };\n\n    global.add('directionality', function (editor) {\n      Commands.register(editor);\n      Buttons.register(editor);\n    });\n    function Plugin () {\n    }\n\n    return Plugin;\n\n}());\n})();\n\n}.call(window));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tinymce/plugins/directionality/plugin.js\n// module id = A7evAMxGaJ\n// module chunks = 2 3 28 35 44 54 73 85 102","// this file was auto-generated by rake i18n:generate_js.\n// you probably shouldn't edit it directly\nimport I18n from 'i18nObj'\nimport $ from 'jquery'\n  $.extend(true, I18n, {translations: {\"ar\":{\"hide_account_navigation_menu_ccdf9480\":\"إخفاء قائمة التنقل بين الحسابات\",\"hide_admin_navigation_menu_5cab9c9e\":\"إخفاء قائمة التنقل بين المسؤولين\",\"hide_courses_navigation_menu_6f7c4cfd\":\"إخفاء قائمة التنقل بين المساقات\",\"hide_groups_navigation_menu_62e8b3d0\":\"إخفاء قائمة التنقل بين المجموعات\",\"hide_navigation_menu_f0b3e90\":\"إخفاء قائمة التنقل\",\"show_account_navigation_menu_d97270a9\":\"إظهار قائمة التنقل بين الحسابات\",\"show_admin_navigation_menu_92fb579f\":\"إظهار قائمة التنقل بين المسؤولين\",\"show_courses_navigation_menu_7ad1a8d4\":\"إظهار قائمة التنقل بين المساقات\",\"show_groups_navigation_menu_1521d38d\":\"إظهار قائمة التنقل بين المجموعات\",\"show_navigation_menu_34e7f441\":\"إظهار قائمة التنقل\"},\"cy\":{\"hide_account_navigation_menu_ccdf9480\":\"Cuddio Dewislen Crwydro’r Cyfrif\",\"hide_admin_navigation_menu_5cab9c9e\":\"Cuddio Dewislen Crwydro - Gweinyddwr\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Cuddio Dewislen Crwydro Cwrs\",\"hide_groups_navigation_menu_62e8b3d0\":\"Cuddio Dewislen Crwydro - Grwpiau\",\"hide_navigation_menu_f0b3e90\":\"Cuddio Dewislen Crwydro\",\"show_account_navigation_menu_d97270a9\":\"Dangos Dewislen Crwydro’r Cyfrif\",\"show_admin_navigation_menu_92fb579f\":\"Dangos Dewislen Crwydro Gweinyddwr\",\"show_courses_navigation_menu_7ad1a8d4\":\"Dangos Dewislen Crwydro Cyrsiau\",\"show_groups_navigation_menu_1521d38d\":\"Dangos Dewislen Crwydro Grwpiau\",\"show_navigation_menu_34e7f441\":\"Dangos Dewislen Crwydro\"},\"da\":{\"hide_account_navigation_menu_ccdf9480\":\"Skjul kontonavigationsmenu\",\"hide_admin_navigation_menu_5cab9c9e\":\"Skjul admin-navigationsmenu\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Skjul fag-navigationsmenu\",\"hide_groups_navigation_menu_62e8b3d0\":\"Skjul gruppe-navigationsmenu\",\"hide_navigation_menu_f0b3e90\":\"Skjul navigationsmenu\",\"show_account_navigation_menu_d97270a9\":\"Vis kontonavigationsmenu\",\"show_admin_navigation_menu_92fb579f\":\"Vis admin-navigationsmenu\",\"show_courses_navigation_menu_7ad1a8d4\":\"Vis fag-navigationsmenu\",\"show_groups_navigation_menu_1521d38d\":\"Vis gruppe-navigationsmenu\",\"show_navigation_menu_34e7f441\":\"Vis navigationsmenu\"},\"da-x-k12\":{\"hide_account_navigation_menu_ccdf9480\":\"Skjul kontonavigationsmenu\",\"hide_admin_navigation_menu_5cab9c9e\":\"Skjul admin-navigationsmenu\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Skjul fag-navigationsmenu\",\"hide_groups_navigation_menu_62e8b3d0\":\"Skjul gruppe-navigationsmenu\",\"hide_navigation_menu_f0b3e90\":\"Skjul navigationsmenu\",\"show_account_navigation_menu_d97270a9\":\"Vis kontonavigationsmenu\",\"show_admin_navigation_menu_92fb579f\":\"Vis admin-navigationsmenu\",\"show_courses_navigation_menu_7ad1a8d4\":\"Vis fag-navigationsmenu\",\"show_groups_navigation_menu_1521d38d\":\"Vis gruppe-navigationsmenu\",\"show_navigation_menu_34e7f441\":\"Vis navigationsmenu\"},\"de\":{\"hide_account_navigation_menu_ccdf9480\":\"Konto-Navigationsmenü ausblenden\",\"hide_admin_navigation_menu_5cab9c9e\":\"Admin-Navigationsmenü ausblenden\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Kurs-Navigationsmenü ausblenden\",\"hide_groups_navigation_menu_62e8b3d0\":\"Gruppen-Navigationsmenü ausblenden\",\"hide_navigation_menu_f0b3e90\":\"Navigationsmenü ausblenden\",\"show_account_navigation_menu_d97270a9\":\"Konto-Navigationsmenü einblenden\",\"show_admin_navigation_menu_92fb579f\":\"Admin-Navigationsmenü einblenden\",\"show_courses_navigation_menu_7ad1a8d4\":\"Kursnavigationsmenü einblenden\",\"show_groups_navigation_menu_1521d38d\":\"Gruppen-Navigationsmenü einblenden\",\"show_navigation_menu_34e7f441\":\"Navigationsmenü einblenden\"},\"en-AU\":{\"hide_account_navigation_menu_ccdf9480\":\"Hide Account Navigation Menu\",\"hide_admin_navigation_menu_5cab9c9e\":\"Hide Admin Navigation Menu\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Hide Courses Navigation Menu\",\"hide_groups_navigation_menu_62e8b3d0\":\"Hide Groups Navigation Menu\",\"hide_navigation_menu_f0b3e90\":\"Hide Navigation Menu\",\"show_account_navigation_menu_d97270a9\":\"Show Account Navigation Menu\",\"show_admin_navigation_menu_92fb579f\":\"Show Admin Navigation Menu\",\"show_courses_navigation_menu_7ad1a8d4\":\"Show Courses Navigation Menu\",\"show_groups_navigation_menu_1521d38d\":\"Show Groups Navigation Menu\",\"show_navigation_menu_34e7f441\":\"Show Navigation Menu\"},\"en-CA\":{\"hide_account_navigation_menu_ccdf9480\":\"Hide Account Navigation Menu\",\"hide_admin_navigation_menu_5cab9c9e\":\"Hide Admin Navigation Menu\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Hide Courses Navigation Menu\",\"hide_groups_navigation_menu_62e8b3d0\":\"Hide Groups Navigation Menu\",\"hide_navigation_menu_f0b3e90\":\"Hide Navigation Menu\",\"show_account_navigation_menu_d97270a9\":\"Show Account Navigation Menu\",\"show_admin_navigation_menu_92fb579f\":\"Show Admin Navigation Menu\",\"show_courses_navigation_menu_7ad1a8d4\":\"Show Courses Navigation Menu\",\"show_groups_navigation_menu_1521d38d\":\"Show Groups Navigation Menu\",\"show_navigation_menu_34e7f441\":\"Show Navigation Menu\"},\"en-GB\":{\"hide_account_navigation_menu_ccdf9480\":\"Hide account navigation menu\",\"hide_admin_navigation_menu_5cab9c9e\":\"Hide admin navigation menu\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Hide courses navigation menu\",\"hide_groups_navigation_menu_62e8b3d0\":\"Hide groups navigation menu\",\"hide_navigation_menu_f0b3e90\":\"Hide navigation menu\",\"show_account_navigation_menu_d97270a9\":\"Show account navigation menu\",\"show_admin_navigation_menu_92fb579f\":\"Show admin navigation menu\",\"show_courses_navigation_menu_7ad1a8d4\":\"Show courses navigation menu\",\"show_groups_navigation_menu_1521d38d\":\"Show groups navigation menu\",\"show_navigation_menu_34e7f441\":\"Show navigation menu\"},\"en-GB-x-lbs\":{\"hide_account_navigation_menu_ccdf9480\":\"Hide account navigation menu\",\"hide_admin_navigation_menu_5cab9c9e\":\"Hide admin navigation menu\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Hide programmes navigation menu\",\"hide_groups_navigation_menu_62e8b3d0\":\"Hide groups navigation menu\",\"hide_navigation_menu_f0b3e90\":\"Hide navigation menu\",\"show_account_navigation_menu_d97270a9\":\"Show account navigation menu\",\"show_admin_navigation_menu_92fb579f\":\"Show admin navigation menu\",\"show_courses_navigation_menu_7ad1a8d4\":\"Show programmes navigation menu\",\"show_groups_navigation_menu_1521d38d\":\"Show groups navigation menu\",\"show_navigation_menu_34e7f441\":\"Show navigation menu\"},\"en-GB-x-ukhe\":{\"hide_account_navigation_menu_ccdf9480\":\"Hide account navigation menu\",\"hide_admin_navigation_menu_5cab9c9e\":\"Hide admin navigation menu\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Hide modules navigation menu\",\"hide_groups_navigation_menu_62e8b3d0\":\"Hide groups navigation menu\",\"hide_navigation_menu_f0b3e90\":\"Hide navigation menu\",\"show_account_navigation_menu_d97270a9\":\"Show account navigation menu\",\"show_admin_navigation_menu_92fb579f\":\"Show admin navigation menu\",\"show_courses_navigation_menu_7ad1a8d4\":\"Show modules navigation menu\",\"show_groups_navigation_menu_1521d38d\":\"Show groups navigation menu\",\"show_navigation_menu_34e7f441\":\"Show navigation menu\"},\"es\":{\"hide_account_navigation_menu_ccdf9480\":\"Ocultar menú de navegación de cuenta\",\"hide_admin_navigation_menu_5cab9c9e\":\"Ocultar menú de navegación de administrador\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Ocultar menú de navegación de cursos\",\"hide_groups_navigation_menu_62e8b3d0\":\"Ocultar menú de navegación de grupos\",\"hide_navigation_menu_f0b3e90\":\"Ocultar menú de navegación\",\"show_account_navigation_menu_d97270a9\":\"Mostrar menú de navegación de cuenta\",\"show_admin_navigation_menu_92fb579f\":\"Mostrar menú de navegación de administrador\",\"show_courses_navigation_menu_7ad1a8d4\":\"Mostrar menú de navegación de cursos\",\"show_groups_navigation_menu_1521d38d\":\"Mostrar menú de navegación de grupos\",\"show_navigation_menu_34e7f441\":\"Mostrar menú de navegación\"},\"fa\":{\"hide_account_navigation_menu_ccdf9480\":\"مخفی کردن منوی پیمایش کاربر\",\"hide_admin_navigation_menu_5cab9c9e\":\"مخفی کردن منوی پیمایش مدیر\",\"hide_courses_navigation_menu_6f7c4cfd\":\"مخفی کردن منوی پیمایش درس‌ها\",\"hide_groups_navigation_menu_62e8b3d0\":\"مخفی کردن منوی پیمایش گروه‌ها\",\"hide_navigation_menu_f0b3e90\":\"مخفی کردن منوی پیمایش \",\"show_account_navigation_menu_d97270a9\":\"نمایش منوی پیمایش حساب\",\"show_admin_navigation_menu_92fb579f\":\"نمایش منوی پیمایش مدیر\",\"show_courses_navigation_menu_7ad1a8d4\":\"نمایش منوی پیمایش درس ها\",\"show_groups_navigation_menu_1521d38d\":\"نمایش منوی پیمایش گروه ها\",\"show_navigation_menu_34e7f441\":\"نمایش منوی پیمایش\"},\"fr\":{\"hide_account_navigation_menu_ccdf9480\":\"Masquer le menu de navigation de comptes\",\"hide_admin_navigation_menu_5cab9c9e\":\"Masquer le menu de navigation de l’administrateur\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Masquer le menu de navigation de cours\",\"hide_groups_navigation_menu_62e8b3d0\":\"Masquer le menu de navigation de groupes\",\"hide_navigation_menu_f0b3e90\":\"Masquer le menu de navigation\",\"show_account_navigation_menu_d97270a9\":\"Afficher le menu de navigation de comptes\",\"show_admin_navigation_menu_92fb579f\":\"Afficher le menu de navigation de l’administrateur\",\"show_courses_navigation_menu_7ad1a8d4\":\"Afficher le menu de navigation de cours\",\"show_groups_navigation_menu_1521d38d\":\"Afficher le menu de navigation de groupes\",\"show_navigation_menu_34e7f441\":\"Afficher le menu de navigation\"},\"fr-CA\":{\"hide_account_navigation_menu_ccdf9480\":\"Masquer le menu de navigation du compte\",\"hide_admin_navigation_menu_5cab9c9e\":\"Masquer le menu de navigation de l’administrateur\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Masquer le menu de navigation des cours\",\"hide_groups_navigation_menu_62e8b3d0\":\"Masquer le menu de navigation des groupes\",\"hide_navigation_menu_f0b3e90\":\"Masquer le menu de navigation\",\"show_account_navigation_menu_d97270a9\":\"Afficher le menu de navigation du compte\",\"show_admin_navigation_menu_92fb579f\":\"Afficher le menu de navigation de l’administrateur\",\"show_courses_navigation_menu_7ad1a8d4\":\"Afficher le menu de navigation des cours\",\"show_groups_navigation_menu_1521d38d\":\"Afficher le menu de navigation des groupes\",\"show_navigation_menu_34e7f441\":\"Afficher le menu de navigation\"},\"he\":{\"hide_account_navigation_menu_ccdf9480\":\"הסתרת תפריט ניווט חשבונות\",\"hide_admin_navigation_menu_5cab9c9e\":\"הסתרת תפריט ניווט מנהלי מערכת\",\"hide_courses_navigation_menu_6f7c4cfd\":\"הסתרת תפריט ניווט קורסים\",\"hide_groups_navigation_menu_62e8b3d0\":\"הסתרת תפריט ניווט קבוצות\",\"hide_navigation_menu_f0b3e90\":\"הסתרת תפריט ניווט\",\"show_account_navigation_menu_d97270a9\":\"הצגת תפריט ניווט חשבונות\",\"show_admin_navigation_menu_92fb579f\":\"הצגת תפריט ניווט של מנהלי מערכת\",\"show_courses_navigation_menu_7ad1a8d4\":\"הצגת תפריט ניווט קורסים\",\"show_groups_navigation_menu_1521d38d\":\"הצגת תפריט ניווט קבוצות\",\"show_navigation_menu_34e7f441\":\"הצגת תפריט ניווט\"},\"ht\":{\"hide_account_navigation_menu_ccdf9480\":\"Kache Meni Navigasyon Kont\",\"hide_admin_navigation_menu_5cab9c9e\":\"Kache Meni Navigasyon Admin\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Kache Meni Navigasyon Kou\",\"hide_groups_navigation_menu_62e8b3d0\":\"Kache Meni Navigasyon Gwoup\",\"hide_navigation_menu_f0b3e90\":\"Kache Meni Navigasyon\",\"show_account_navigation_menu_d97270a9\":\"Afiche Meni Navigasyon Kont\",\"show_admin_navigation_menu_92fb579f\":\"Afiche Meni Navigasyon Admin\",\"show_courses_navigation_menu_7ad1a8d4\":\"Afiche Meni Navigasyon Kou\",\"show_groups_navigation_menu_1521d38d\":\"Afiche Meni Navigasyon Gwoup\",\"show_navigation_menu_34e7f441\":\"Afiche Meni Navigasyon\"},\"hu\":{\"hide_courses_navigation_menu_6f7c4cfd\":\"Kurzusnavigációs menü elrejtése\",\"hide_navigation_menu_f0b3e90\":\"Navigációs menü elrejtése\"},\"is\":{\"hide_account_navigation_menu_ccdf9480\":\"Fela leiðarstýringu valmyndar reiknings\",\"hide_admin_navigation_menu_5cab9c9e\":\"Fela leiðarstýringarvalmynd kerfisstjórnanda\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Fela leiðarstýringarvalmynd námskeiða\",\"hide_groups_navigation_menu_62e8b3d0\":\"Fela leiðarstýringarvalmynd hópa\",\"hide_navigation_menu_f0b3e90\":\"Fela leiðarstýringarvalmynd\",\"show_account_navigation_menu_d97270a9\":\"Sýna leiðarstýringarvalmynd reiknings\",\"show_admin_navigation_menu_92fb579f\":\"Sýna leiðarstýringarvalmynd kerfisstjórnanda\",\"show_courses_navigation_menu_7ad1a8d4\":\"Sýna leiðarstýringarvalmynd námskeiða\",\"show_groups_navigation_menu_1521d38d\":\"Sýna leiðarstýringarvalmynd hópa\",\"show_navigation_menu_34e7f441\":\"Sýna leiðarstýringarvalmynd\"},\"it\":{\"hide_account_navigation_menu_ccdf9480\":\"Nascondi menu di navigazione account\",\"hide_admin_navigation_menu_5cab9c9e\":\"Nascondi menu di navigazione amministratore\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Nascondi menu di navigazione corsi\",\"hide_groups_navigation_menu_62e8b3d0\":\"Nascondi meni di navigazione gruppi\",\"hide_navigation_menu_f0b3e90\":\"Nascondi menu di navigazione\",\"show_account_navigation_menu_d97270a9\":\"Mostra menu di navigazione account\",\"show_admin_navigation_menu_92fb579f\":\"Mostra menu di navigazione amministratore\",\"show_courses_navigation_menu_7ad1a8d4\":\"Mostra menu di esplorazione corsi\",\"show_groups_navigation_menu_1521d38d\":\"Mostra menu di esplorazione gruppi\",\"show_navigation_menu_34e7f441\":\"Mostra menu di navigazione\"},\"ja\":{\"hide_account_navigation_menu_ccdf9480\":\"アカウントのナビゲーションメニューを非表示にする\",\"hide_admin_navigation_menu_5cab9c9e\":\"管理ナビゲーションメニューを非表示にする\",\"hide_courses_navigation_menu_6f7c4cfd\":\"コースナビゲーションメニューを非表示にする\",\"hide_groups_navigation_menu_62e8b3d0\":\"グループナビゲーションメニューを非表示にする\",\"hide_navigation_menu_f0b3e90\":\"ナビゲーションメニューを非表示にする\",\"show_account_navigation_menu_d97270a9\":\"アカウントナビゲーションメニューを表示する\",\"show_admin_navigation_menu_92fb579f\":\"アドミニストレーションナビゲーションメニューを表示する\",\"show_courses_navigation_menu_7ad1a8d4\":\"コースナビゲーションメニューを表示する\",\"show_groups_navigation_menu_1521d38d\":\"グループナビゲーションメニューを表示する\",\"show_navigation_menu_34e7f441\":\"ナビゲーションメニューを表示する\"},\"mi\":{\"hide_account_navigation_menu_ccdf9480\":\"Huna Tāhua Whakatere Pūkete\",\"hide_admin_navigation_menu_5cab9c9e\":\"Huna Whakahaere Whakatere Tāhua\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Huna Ngā Akoranga Whakatere Tāhua\",\"hide_groups_navigation_menu_62e8b3d0\":\"Huna Ngā Rōpū Whakatere Tāhua\",\"hide_navigation_menu_f0b3e90\":\"Huna Whakatere Tāhua\",\"show_account_navigation_menu_d97270a9\":\"Whakātu Pūkete Whakatere Tāhua\",\"show_admin_navigation_menu_92fb579f\":\"Whakātu Whakahaere Whakatere Tāhua\",\"show_courses_navigation_menu_7ad1a8d4\":\"Whakātu Ngā Akoranga Whakatere Tāhua\",\"show_groups_navigation_menu_1521d38d\":\"Whakātu Ngā Rōpū Whakatere Tāhua\",\"show_navigation_menu_34e7f441\":\"Whakātu Whakatere Tāhua\"},\"nb\":{\"hide_account_navigation_menu_ccdf9480\":\"Skjul menyen for kontonavigering\",\"hide_admin_navigation_menu_5cab9c9e\":\"Skjul menyen for administratornavigering\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Skjul menyen for emnernavigering\",\"hide_groups_navigation_menu_62e8b3d0\":\"Skjul menyen for gruppenavigering\",\"hide_navigation_menu_f0b3e90\":\"Skjul navigeringsmenyen\",\"show_account_navigation_menu_d97270a9\":\"Vis menyen for kontonavigering\",\"show_admin_navigation_menu_92fb579f\":\"Vis menyen for administratornavigering\",\"show_courses_navigation_menu_7ad1a8d4\":\"Vis menyen for emnernavigering\",\"show_groups_navigation_menu_1521d38d\":\"Vis menyen for gruppenavigering\",\"show_navigation_menu_34e7f441\":\"Vis navigeringsmenyen\"},\"nb-x-k12\":{\"hide_account_navigation_menu_ccdf9480\":\"Skjul menyen for kontonavigering\",\"hide_admin_navigation_menu_5cab9c9e\":\"Skjul menyen for administratornavigering\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Skjul menyen for fagnavigering\",\"hide_groups_navigation_menu_62e8b3d0\":\"Skjul menyen for gruppenavigering\",\"hide_navigation_menu_f0b3e90\":\"Skjul navigeringsmenyen\",\"show_account_navigation_menu_d97270a9\":\"Vis menyen for kontonavigering\",\"show_admin_navigation_menu_92fb579f\":\"Vis menyen for administratornavigering\",\"show_courses_navigation_menu_7ad1a8d4\":\"Vis menyen for fagnavigering\",\"show_groups_navigation_menu_1521d38d\":\"Vis menyen for gruppenavigering\",\"show_navigation_menu_34e7f441\":\"Vis navigeringsmenyen\"},\"nl\":{\"hide_account_navigation_menu_ccdf9480\":\"Menu Accountnavigatie verbergen\",\"hide_admin_navigation_menu_5cab9c9e\":\"Menu Beheernavigatie verbergen\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Menu Cursusnavigatie verbergen\",\"hide_groups_navigation_menu_62e8b3d0\":\"Menu Groepsnavigatie verbergen\",\"hide_navigation_menu_f0b3e90\":\"Navigatiemenu verbergen\",\"show_account_navigation_menu_d97270a9\":\"Menu Accountnavigatie weergeven\",\"show_admin_navigation_menu_92fb579f\":\"Menu Beheernavigatie weergeven\",\"show_courses_navigation_menu_7ad1a8d4\":\"Menu Cursusnavigatie weergeven\",\"show_groups_navigation_menu_1521d38d\":\"Menu Groepsnavigatie weergeven\",\"show_navigation_menu_34e7f441\":\"Navigatiemenu weergeven\"},\"nn\":{\"hide_account_navigation_menu_ccdf9480\":\"Skjul meny for kontonavigasjon\",\"hide_admin_navigation_menu_5cab9c9e\":\"Skjul meny for kontonavigasjon\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Skjul meny for emnenavigasjon\",\"hide_groups_navigation_menu_62e8b3d0\":\"Skjul meny for gruppenavigasjon\",\"hide_navigation_menu_f0b3e90\":\"Skjul navigeringsmeny\",\"show_account_navigation_menu_d97270a9\":\"Vis meny for kontonavigasjon\",\"show_admin_navigation_menu_92fb579f\":\"Vis admin-navigeringsmeny \",\"show_courses_navigation_menu_7ad1a8d4\":\"Vis meny for emnenavigasjon\",\"show_groups_navigation_menu_1521d38d\":\"Vis meny for gruppenavigasjon\",\"show_navigation_menu_34e7f441\":\"Vis navigeringsmeny\"},\"pl\":{\"hide_account_navigation_menu_ccdf9480\":\"Ukryj menu nawigacji na koncie\",\"hide_admin_navigation_menu_5cab9c9e\":\"Ukryj menu nawigacji administratora\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Ukryj menu nawigacji w kursie\",\"hide_groups_navigation_menu_62e8b3d0\":\"Ukryj menu nawigacji w grupach\",\"hide_navigation_menu_f0b3e90\":\"Ukryj menu nawigacji\",\"show_account_navigation_menu_d97270a9\":\"Pokaż menu nawigacji na koncie\",\"show_admin_navigation_menu_92fb579f\":\"Pokaż menu nawigacji administratora\",\"show_courses_navigation_menu_7ad1a8d4\":\"Pokaż menu nawigacji w kursie\",\"show_groups_navigation_menu_1521d38d\":\"Pokaż menu nawigacji w grupach\",\"show_navigation_menu_34e7f441\":\"Pokaż menu nawigacji\"},\"pt\":{\"hide_account_navigation_menu_ccdf9480\":\"Ocultar menu de navegação da conta\",\"hide_admin_navigation_menu_5cab9c9e\":\"Ocultar menu de navegação do administrador\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Ocultar Menu de navegação das disciplinas\",\"hide_groups_navigation_menu_62e8b3d0\":\"Ocultar Menu de navegação de grupos\",\"hide_navigation_menu_f0b3e90\":\"Ocultar Menu de navegação\",\"show_account_navigation_menu_d97270a9\":\"Mostrar o Menu de Navegação da Conta\",\"show_admin_navigation_menu_92fb579f\":\"Mostrar o Menu de navegação do administrador\",\"show_courses_navigation_menu_7ad1a8d4\":\"Mostrar Menu de navegação de disciplinas\",\"show_groups_navigation_menu_1521d38d\":\"Mostrar o Menu de navegação dos grupos\",\"show_navigation_menu_34e7f441\":\"Mostrar o Menu de Navegação\"},\"pt-BR\":{\"hide_account_navigation_menu_ccdf9480\":\"Ocultar Menu de Navegação da conta\",\"hide_admin_navigation_menu_5cab9c9e\":\"Ocultar Menu de Navegação do Admin\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Ocultar Menu de Navegação dos cursos\",\"hide_groups_navigation_menu_62e8b3d0\":\"Ocultar Menu de Navegação dos grupos\",\"hide_navigation_menu_f0b3e90\":\"Ocultar Menu de Navegação\",\"show_account_navigation_menu_d97270a9\":\"Mostrar Menu de Navegação da conta\",\"show_admin_navigation_menu_92fb579f\":\"Mostrar Menu de Navegação do Admin\",\"show_courses_navigation_menu_7ad1a8d4\":\"Mostrar Menu de Navegação dos cursos\",\"show_groups_navigation_menu_1521d38d\":\"Mostrar Menu de Navegação dos grupos\",\"show_navigation_menu_34e7f441\":\"Mostrar Menu de Navegação\"},\"ru\":{\"hide_account_navigation_menu_ccdf9480\":\"Скрыть меню навигации учетной записи\",\"hide_admin_navigation_menu_5cab9c9e\":\"Скрыть меню навигации администратора\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Скрыть меню навигации курсов\",\"hide_groups_navigation_menu_62e8b3d0\":\"Скрыть меню навигации групп\",\"hide_navigation_menu_f0b3e90\":\"Скрыть меню навигации\",\"show_account_navigation_menu_d97270a9\":\"Показать меню навигации учетной записи\",\"show_admin_navigation_menu_92fb579f\":\"Показать меню навигации администратора\",\"show_courses_navigation_menu_7ad1a8d4\":\"Показать меню навигации курсов\",\"show_groups_navigation_menu_1521d38d\":\"Показать меню навигации групп\",\"show_navigation_menu_34e7f441\":\"Показать меню навигации\"},\"sl\":{\"hide_account_navigation_menu_ccdf9480\":\"Skrij meni navigacije po računu\",\"hide_admin_navigation_menu_5cab9c9e\":\"Skrij skrbniški meni navigacije\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Skrij meni navigacije po predmetih\",\"hide_groups_navigation_menu_62e8b3d0\":\"Skrij meni navigacije po skupinah\",\"hide_navigation_menu_f0b3e90\":\"Skrij meni navigacije\",\"show_account_navigation_menu_d97270a9\":\"Prikaži meni navigacije po računu\",\"show_admin_navigation_menu_92fb579f\":\"Prikaži skrbniški meni navigacije\",\"show_courses_navigation_menu_7ad1a8d4\":\"Prikaži meni navigacije po predmetih\",\"show_groups_navigation_menu_1521d38d\":\"Prikaži meni navigacije po skupinah\",\"show_navigation_menu_34e7f441\":\"Prikaži meni navigacije\"},\"sv\":{\"hide_account_navigation_menu_ccdf9480\":\"Dölj konto-navigeringsmeny\",\"hide_admin_navigation_menu_5cab9c9e\":\"Dölj administrations-navigeringsmeny\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Dölj kurs-navigeringsmeny\",\"hide_groups_navigation_menu_62e8b3d0\":\"Dölj grupp-navigeringsmeny\",\"hide_navigation_menu_f0b3e90\":\"Dölj navigeringsmeny\",\"show_account_navigation_menu_d97270a9\":\"Visa konto-navigeringsmeny\",\"show_admin_navigation_menu_92fb579f\":\"Visa administratörs-navigeringsmeny\",\"show_courses_navigation_menu_7ad1a8d4\":\"Visa kurs-navigeringsmeny\",\"show_groups_navigation_menu_1521d38d\":\"Visa grupp-navigeringsmeny\",\"show_navigation_menu_34e7f441\":\"Visa navigeringsmeny\"},\"sv-x-k12\":{\"hide_account_navigation_menu_ccdf9480\":\"Dölj konto-navigeringsmeny\",\"hide_admin_navigation_menu_5cab9c9e\":\"Dölj administrations-navigeringsmeny\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Dölj kurs-navigeringsmeny\",\"hide_groups_navigation_menu_62e8b3d0\":\"Dölj grupp-navigeringsmeny\",\"hide_navigation_menu_f0b3e90\":\"Dölj navigeringsmeny\",\"show_account_navigation_menu_d97270a9\":\"Visa konto-navigeringsmeny\",\"show_admin_navigation_menu_92fb579f\":\"Visa administratörs-navigeringsmeny\",\"show_courses_navigation_menu_7ad1a8d4\":\"Visa kurs-navigeringsmeny\",\"show_groups_navigation_menu_1521d38d\":\"Visa grupp-navigeringsmeny\",\"show_navigation_menu_34e7f441\":\"Visa navigeringsmeny\"},\"uk\":{\"hide_account_navigation_menu_ccdf9480\":\"Сховати меню навігації облікового запису\",\"hide_admin_navigation_menu_5cab9c9e\":\"Сховати меню навігації адміністратора\",\"hide_courses_navigation_menu_6f7c4cfd\":\"Сховати меню навігації курсів\",\"hide_groups_navigation_menu_62e8b3d0\":\"Сховати меню навігації груп\",\"hide_navigation_menu_f0b3e90\":\"Сховати меню навігації \",\"show_account_navigation_menu_d97270a9\":\"Показати Меню навігації облікового запису\",\"show_admin_navigation_menu_92fb579f\":\"Показати Меню навігації адміністратора\",\"show_courses_navigation_menu_7ad1a8d4\":\"Показувати меню навігації курсів\",\"show_groups_navigation_menu_1521d38d\":\"Показувати меню навігації груп\",\"show_navigation_menu_34e7f441\":\"Показати меню навігації\"},\"zh-Hans\":{\"hide_account_navigation_menu_ccdf9480\":\"隐藏帐户导航菜单\",\"hide_admin_navigation_menu_5cab9c9e\":\"隐藏管理员导航菜单\",\"hide_courses_navigation_menu_6f7c4cfd\":\"隐藏课程导航菜单\",\"hide_groups_navigation_menu_62e8b3d0\":\"隐藏小组导航菜单\",\"hide_navigation_menu_f0b3e90\":\"隐藏导航菜单\",\"show_account_navigation_menu_d97270a9\":\"显示帐户导航菜单\",\"show_admin_navigation_menu_92fb579f\":\"显示管理员导航菜单\",\"show_courses_navigation_menu_7ad1a8d4\":\"显示课程导航菜单\",\"show_groups_navigation_menu_1521d38d\":\"显示小组导航菜单\",\"show_navigation_menu_34e7f441\":\"显示导航菜单\"},\"zh-Hant\":{\"hide_account_navigation_menu_ccdf9480\":\"隱藏帳戶導航工具選單\",\"hide_admin_navigation_menu_5cab9c9e\":\"隱藏管理員導航工具選單\",\"hide_courses_navigation_menu_6f7c4cfd\":\"隱藏課程導航工具選單\",\"hide_groups_navigation_menu_62e8b3d0\":\"隱藏小組導航工具選單\",\"hide_navigation_menu_f0b3e90\":\"隱藏導航工具選單\",\"show_account_navigation_menu_d97270a9\":\"顯示帳戶導航工具選單\",\"show_admin_navigation_menu_92fb579f\":\"顯示管理員導航工具選單\",\"show_courses_navigation_menu_7ad1a8d4\":\"顯示課程導航工具選單\",\"show_groups_navigation_menu_1521d38d\":\"顯示小組導航工具選單\",\"show_navigation_menu_34e7f441\":\"顯示導航工具選單\"}}});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./public/javascripts/translations/subnav_menu_toggle.js\n// module id = BkaAgcBhey\n// module chunks = 85","/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n(function () {\nvar table = (function () {\n    'use strict';\n\n    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    var noop = function () {\n      var args = [];\n      for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n      }\n    };\n    var compose = function (fa, fb) {\n      return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          args[_i] = arguments[_i];\n        }\n        return fa(fb.apply(null, args));\n      };\n    };\n    var constant = function (value) {\n      return function () {\n        return value;\n      };\n    };\n    var identity = function (x) {\n      return x;\n    };\n    function curry(fn) {\n      var initialArgs = [];\n      for (var _i = 1; _i < arguments.length; _i++) {\n        initialArgs[_i - 1] = arguments[_i];\n      }\n      return function () {\n        var restArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          restArgs[_i] = arguments[_i];\n        }\n        var all = initialArgs.concat(restArgs);\n        return fn.apply(null, all);\n      };\n    }\n    var not = function (f) {\n      return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          args[_i] = arguments[_i];\n        }\n        return !f.apply(null, args);\n      };\n    };\n    var die = function (msg) {\n      return function () {\n        throw new Error(msg);\n      };\n    };\n    var apply = function (f) {\n      return f();\n    };\n    var never = constant(false);\n    var always = constant(true);\n\n    var never$1 = never;\n    var always$1 = always;\n    var none = function () {\n      return NONE;\n    };\n    var NONE = function () {\n      var eq = function (o) {\n        return o.isNone();\n      };\n      var call$$1 = function (thunk) {\n        return thunk();\n      };\n      var id = function (n) {\n        return n;\n      };\n      var noop$$1 = function () {\n      };\n      var nul = function () {\n        return null;\n      };\n      var undef = function () {\n        return undefined;\n      };\n      var me = {\n        fold: function (n, s) {\n          return n();\n        },\n        is: never$1,\n        isSome: never$1,\n        isNone: always$1,\n        getOr: id,\n        getOrThunk: call$$1,\n        getOrDie: function (msg) {\n          throw new Error(msg || 'error: getOrDie called on none.');\n        },\n        getOrNull: nul,\n        getOrUndefined: undef,\n        or: id,\n        orThunk: call$$1,\n        map: none,\n        ap: none,\n        each: noop$$1,\n        bind: none,\n        flatten: none,\n        exists: never$1,\n        forall: always$1,\n        filter: none,\n        equals: eq,\n        equals_: eq,\n        toArray: function () {\n          return [];\n        },\n        toString: constant('none()')\n      };\n      if (Object.freeze)\n        Object.freeze(me);\n      return me;\n    }();\n    var some = function (a) {\n      var constant_a = function () {\n        return a;\n      };\n      var self = function () {\n        return me;\n      };\n      var map = function (f) {\n        return some(f(a));\n      };\n      var bind = function (f) {\n        return f(a);\n      };\n      var me = {\n        fold: function (n, s) {\n          return s(a);\n        },\n        is: function (v) {\n          return a === v;\n        },\n        isSome: always$1,\n        isNone: never$1,\n        getOr: constant_a,\n        getOrThunk: constant_a,\n        getOrDie: constant_a,\n        getOrNull: constant_a,\n        getOrUndefined: constant_a,\n        or: self,\n        orThunk: self,\n        map: map,\n        ap: function (optfab) {\n          return optfab.fold(none, function (fab) {\n            return some(fab(a));\n          });\n        },\n        each: function (f) {\n          f(a);\n        },\n        bind: bind,\n        flatten: constant_a,\n        exists: bind,\n        forall: bind,\n        filter: function (f) {\n          return f(a) ? me : NONE;\n        },\n        equals: function (o) {\n          return o.is(a);\n        },\n        equals_: function (o, elementEq) {\n          return o.fold(never$1, function (b) {\n            return elementEq(a, b);\n          });\n        },\n        toArray: function () {\n          return [a];\n        },\n        toString: function () {\n          return 'some(' + a + ')';\n        }\n      };\n      return me;\n    };\n    var from = function (value) {\n      return value === null || value === undefined ? NONE : some(value);\n    };\n    var Option = {\n      some: some,\n      none: none,\n      from: from\n    };\n\n    var typeOf = function (x) {\n      if (x === null)\n        return 'null';\n      var t = typeof x;\n      if (t === 'object' && Array.prototype.isPrototypeOf(x))\n        return 'array';\n      if (t === 'object' && String.prototype.isPrototypeOf(x))\n        return 'string';\n      return t;\n    };\n    var isType = function (type) {\n      return function (value) {\n        return typeOf(value) === type;\n      };\n    };\n    var isString = isType('string');\n    var isArray = isType('array');\n    var isBoolean = isType('boolean');\n    var isFunction = isType('function');\n    var isNumber = isType('number');\n\n    var rawIndexOf = function () {\n      var pIndexOf = Array.prototype.indexOf;\n      var fastIndex = function (xs, x) {\n        return pIndexOf.call(xs, x);\n      };\n      var slowIndex = function (xs, x) {\n        return slowIndexOf(xs, x);\n      };\n      return pIndexOf === undefined ? slowIndex : fastIndex;\n    }();\n    var contains = function (xs, x) {\n      return rawIndexOf(xs, x) > -1;\n    };\n    var exists = function (xs, pred) {\n      return findIndex(xs, pred).isSome();\n    };\n    var map = function (xs, f) {\n      var len = xs.length;\n      var r = new Array(len);\n      for (var i = 0; i < len; i++) {\n        var x = xs[i];\n        r[i] = f(x, i, xs);\n      }\n      return r;\n    };\n    var each = function (xs, f) {\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        f(x, i, xs);\n      }\n    };\n    var eachr = function (xs, f) {\n      for (var i = xs.length - 1; i >= 0; i--) {\n        var x = xs[i];\n        f(x, i, xs);\n      }\n    };\n    var filter = function (xs, pred) {\n      var r = [];\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        if (pred(x, i, xs)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n    var foldr = function (xs, f, acc) {\n      eachr(xs, function (x) {\n        acc = f(acc, x);\n      });\n      return acc;\n    };\n    var foldl = function (xs, f, acc) {\n      each(xs, function (x) {\n        acc = f(acc, x);\n      });\n      return acc;\n    };\n    var find = function (xs, pred) {\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        if (pred(x, i, xs)) {\n          return Option.some(x);\n        }\n      }\n      return Option.none();\n    };\n    var findIndex = function (xs, pred) {\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        if (pred(x, i, xs)) {\n          return Option.some(i);\n        }\n      }\n      return Option.none();\n    };\n    var slowIndexOf = function (xs, x) {\n      for (var i = 0, len = xs.length; i < len; ++i) {\n        if (xs[i] === x) {\n          return i;\n        }\n      }\n      return -1;\n    };\n    var push = Array.prototype.push;\n    var flatten = function (xs) {\n      var r = [];\n      for (var i = 0, len = xs.length; i < len; ++i) {\n        if (!Array.prototype.isPrototypeOf(xs[i]))\n          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n        push.apply(r, xs[i]);\n      }\n      return r;\n    };\n    var bind = function (xs, f) {\n      var output = map(xs, f);\n      return flatten(output);\n    };\n    var forall = function (xs, pred) {\n      for (var i = 0, len = xs.length; i < len; ++i) {\n        var x = xs[i];\n        if (pred(x, i, xs) !== true) {\n          return false;\n        }\n      }\n      return true;\n    };\n    var slice = Array.prototype.slice;\n    var reverse = function (xs) {\n      var r = slice.call(xs, 0);\n      r.reverse();\n      return r;\n    };\n    var last = function (xs) {\n      return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]);\n    };\n    var from$1 = isFunction(Array.from) ? Array.from : function (x) {\n      return slice.call(x);\n    };\n\n    var keys = Object.keys;\n    var each$1 = function (obj, f) {\n      var props = keys(obj);\n      for (var k = 0, len = props.length; k < len; k++) {\n        var i = props[k];\n        var x = obj[i];\n        f(x, i, obj);\n      }\n    };\n    var map$1 = function (obj, f) {\n      return tupleMap(obj, function (x, i, obj) {\n        return {\n          k: i,\n          v: f(x, i, obj)\n        };\n      });\n    };\n    var tupleMap = function (obj, f) {\n      var r = {};\n      each$1(obj, function (x, i) {\n        var tuple = f(x, i, obj);\n        r[tuple.k] = tuple.v;\n      });\n      return r;\n    };\n\n    var Immutable = function () {\n      var fields = [];\n      for (var _i = 0; _i < arguments.length; _i++) {\n        fields[_i] = arguments[_i];\n      }\n      return function () {\n        var values = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          values[_i] = arguments[_i];\n        }\n        if (fields.length !== values.length) {\n          throw new Error('Wrong number of arguments to struct. Expected \"[' + fields.length + ']\", got ' + values.length + ' arguments');\n        }\n        var struct = {};\n        each(fields, function (name, i) {\n          struct[name] = constant(values[i]);\n        });\n        return struct;\n      };\n    };\n\n    var sort$1 = function (arr) {\n      return arr.slice(0).sort();\n    };\n    var reqMessage = function (required, keys) {\n      throw new Error('All required keys (' + sort$1(required).join(', ') + ') were not specified. Specified keys were: ' + sort$1(keys).join(', ') + '.');\n    };\n    var unsuppMessage = function (unsupported) {\n      throw new Error('Unsupported keys for object: ' + sort$1(unsupported).join(', '));\n    };\n    var validateStrArr = function (label, array) {\n      if (!isArray(array))\n        throw new Error('The ' + label + ' fields must be an array. Was: ' + array + '.');\n      each(array, function (a) {\n        if (!isString(a))\n          throw new Error('The value ' + a + ' in the ' + label + ' fields was not a string.');\n      });\n    };\n    var invalidTypeMessage = function (incorrect, type) {\n      throw new Error('All values need to be of type: ' + type + '. Keys (' + sort$1(incorrect).join(', ') + ') were not.');\n    };\n    var checkDupes = function (everything) {\n      var sorted = sort$1(everything);\n      var dupe = find(sorted, function (s, i) {\n        return i < sorted.length - 1 && s === sorted[i + 1];\n      });\n      dupe.each(function (d) {\n        throw new Error('The field: ' + d + ' occurs more than once in the combined fields: [' + sorted.join(', ') + '].');\n      });\n    };\n\n    var MixedBag = function (required, optional) {\n      var everything = required.concat(optional);\n      if (everything.length === 0)\n        throw new Error('You must specify at least one required or optional field.');\n      validateStrArr('required', required);\n      validateStrArr('optional', optional);\n      checkDupes(everything);\n      return function (obj) {\n        var keys$$1 = keys(obj);\n        var allReqd = forall(required, function (req) {\n          return contains(keys$$1, req);\n        });\n        if (!allReqd)\n          reqMessage(required, keys$$1);\n        var unsupported = filter(keys$$1, function (key) {\n          return !contains(everything, key);\n        });\n        if (unsupported.length > 0)\n          unsuppMessage(unsupported);\n        var r = {};\n        each(required, function (req) {\n          r[req] = constant(obj[req]);\n        });\n        each(optional, function (opt) {\n          r[opt] = constant(Object.prototype.hasOwnProperty.call(obj, opt) ? Option.some(obj[opt]) : Option.none());\n        });\n        return r;\n      };\n    };\n\n    var dimensions = Immutable('width', 'height');\n    var grid = Immutable('rows', 'columns');\n    var address = Immutable('row', 'column');\n    var coords = Immutable('x', 'y');\n    var detail = Immutable('element', 'rowspan', 'colspan');\n    var detailnew = Immutable('element', 'rowspan', 'colspan', 'isNew');\n    var extended = Immutable('element', 'rowspan', 'colspan', 'row', 'column');\n    var rowdata = Immutable('element', 'cells', 'section');\n    var elementnew = Immutable('element', 'isNew');\n    var rowdatanew = Immutable('element', 'cells', 'section', 'isNew');\n    var rowcells = Immutable('cells', 'section');\n    var rowdetails = Immutable('details', 'section');\n    var bounds = Immutable('startRow', 'startCol', 'finishRow', 'finishCol');\n    var Structs = {\n      dimensions: dimensions,\n      grid: grid,\n      address: address,\n      coords: coords,\n      extended: extended,\n      detail: detail,\n      detailnew: detailnew,\n      rowdata: rowdata,\n      elementnew: elementnew,\n      rowdatanew: rowdatanew,\n      rowcells: rowcells,\n      rowdetails: rowdetails,\n      bounds: bounds\n    };\n\n    var fromHtml = function (html, scope) {\n      var doc = scope || document;\n      var div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        console.error('HTML does not have a single root node', html);\n        throw 'HTML must have a single root node';\n      }\n      return fromDom(div.childNodes[0]);\n    };\n    var fromTag = function (tag, scope) {\n      var doc = scope || document;\n      var node = doc.createElement(tag);\n      return fromDom(node);\n    };\n    var fromText = function (text, scope) {\n      var doc = scope || document;\n      var node = doc.createTextNode(text);\n      return fromDom(node);\n    };\n    var fromDom = function (node) {\n      if (node === null || node === undefined)\n        throw new Error('Node cannot be null or undefined');\n      return { dom: constant(node) };\n    };\n    var fromPoint = function (docElm, x, y) {\n      var doc = docElm.dom();\n      return Option.from(doc.elementFromPoint(x, y)).map(fromDom);\n    };\n    var Element$$1 = {\n      fromHtml: fromHtml,\n      fromTag: fromTag,\n      fromText: fromText,\n      fromDom: fromDom,\n      fromPoint: fromPoint\n    };\n\n    var ATTRIBUTE = Node.ATTRIBUTE_NODE;\n    var CDATA_SECTION = Node.CDATA_SECTION_NODE;\n    var COMMENT = Node.COMMENT_NODE;\n    var DOCUMENT = Node.DOCUMENT_NODE;\n    var DOCUMENT_TYPE = Node.DOCUMENT_TYPE_NODE;\n    var DOCUMENT_FRAGMENT = Node.DOCUMENT_FRAGMENT_NODE;\n    var ELEMENT = Node.ELEMENT_NODE;\n    var TEXT = Node.TEXT_NODE;\n    var PROCESSING_INSTRUCTION = Node.PROCESSING_INSTRUCTION_NODE;\n    var ENTITY_REFERENCE = Node.ENTITY_REFERENCE_NODE;\n    var ENTITY = Node.ENTITY_NODE;\n    var NOTATION = Node.NOTATION_NODE;\n\n    var ELEMENT$1 = ELEMENT;\n    var DOCUMENT$1 = DOCUMENT;\n    var is = function (element, selector) {\n      var elem = element.dom();\n      if (elem.nodeType !== ELEMENT$1)\n        return false;\n      else if (elem.matches !== undefined)\n        return elem.matches(selector);\n      else if (elem.msMatchesSelector !== undefined)\n        return elem.msMatchesSelector(selector);\n      else if (elem.webkitMatchesSelector !== undefined)\n        return elem.webkitMatchesSelector(selector);\n      else if (elem.mozMatchesSelector !== undefined)\n        return elem.mozMatchesSelector(selector);\n      else\n        throw new Error('Browser lacks native selectors');\n    };\n    var bypassSelector = function (dom) {\n      return dom.nodeType !== ELEMENT$1 && dom.nodeType !== DOCUMENT$1 || dom.childElementCount === 0;\n    };\n    var all = function (selector, scope) {\n      var base = scope === undefined ? document : scope.dom();\n      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);\n    };\n    var one = function (selector, scope) {\n      var base = scope === undefined ? document : scope.dom();\n      return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);\n    };\n\n    var Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n    var path = function (parts, scope) {\n      var o = scope !== undefined && scope !== null ? scope : Global;\n      for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)\n        o = o[parts[i]];\n      return o;\n    };\n    var resolve = function (p, scope) {\n      var parts = p.split('.');\n      return path(parts, scope);\n    };\n\n    var unsafe = function (name, scope) {\n      return resolve(name, scope);\n    };\n    var getOrDie = function (name, scope) {\n      var actual = unsafe(name, scope);\n      if (actual === undefined || actual === null)\n        throw name + ' not available on this browser';\n      return actual;\n    };\n    var Global$1 = { getOrDie: getOrDie };\n\n    var node = function () {\n      var f = Global$1.getOrDie('Node');\n      return f;\n    };\n    var compareDocumentPosition = function (a, b, match) {\n      return (a.compareDocumentPosition(b) & match) !== 0;\n    };\n    var documentPositionPreceding = function (a, b) {\n      return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);\n    };\n    var documentPositionContainedBy = function (a, b) {\n      return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);\n    };\n    var Node$1 = {\n      documentPositionPreceding: documentPositionPreceding,\n      documentPositionContainedBy: documentPositionContainedBy\n    };\n\n    var cached = function (f) {\n      var called = false;\n      var r;\n      return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          args[_i] = arguments[_i];\n        }\n        if (!called) {\n          called = true;\n          r = f.apply(null, args);\n        }\n        return r;\n      };\n    };\n\n    var firstMatch = function (regexes, s) {\n      for (var i = 0; i < regexes.length; i++) {\n        var x = regexes[i];\n        if (x.test(s))\n          return x;\n      }\n      return undefined;\n    };\n    var find$2 = function (regexes, agent) {\n      var r = firstMatch(regexes, agent);\n      if (!r)\n        return {\n          major: 0,\n          minor: 0\n        };\n      var group = function (i) {\n        return Number(agent.replace(r, '$' + i));\n      };\n      return nu(group(1), group(2));\n    };\n    var detect = function (versionRegexes, agent) {\n      var cleanedAgent = String(agent).toLowerCase();\n      if (versionRegexes.length === 0)\n        return unknown();\n      return find$2(versionRegexes, cleanedAgent);\n    };\n    var unknown = function () {\n      return nu(0, 0);\n    };\n    var nu = function (major, minor) {\n      return {\n        major: major,\n        minor: minor\n      };\n    };\n    var Version = {\n      nu: nu,\n      detect: detect,\n      unknown: unknown\n    };\n\n    var edge = 'Edge';\n    var chrome = 'Chrome';\n    var ie = 'IE';\n    var opera = 'Opera';\n    var firefox = 'Firefox';\n    var safari = 'Safari';\n    var isBrowser = function (name, current) {\n      return function () {\n        return current === name;\n      };\n    };\n    var unknown$1 = function () {\n      return nu$1({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    var nu$1 = function (info) {\n      var current = info.current;\n      var version = info.version;\n      return {\n        current: current,\n        version: version,\n        isEdge: isBrowser(edge, current),\n        isChrome: isBrowser(chrome, current),\n        isIE: isBrowser(ie, current),\n        isOpera: isBrowser(opera, current),\n        isFirefox: isBrowser(firefox, current),\n        isSafari: isBrowser(safari, current)\n      };\n    };\n    var Browser = {\n      unknown: unknown$1,\n      nu: nu$1,\n      edge: constant(edge),\n      chrome: constant(chrome),\n      ie: constant(ie),\n      opera: constant(opera),\n      firefox: constant(firefox),\n      safari: constant(safari)\n    };\n\n    var windows = 'Windows';\n    var ios = 'iOS';\n    var android = 'Android';\n    var linux = 'Linux';\n    var osx = 'OSX';\n    var solaris = 'Solaris';\n    var freebsd = 'FreeBSD';\n    var isOS = function (name, current) {\n      return function () {\n        return current === name;\n      };\n    };\n    var unknown$2 = function () {\n      return nu$2({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    var nu$2 = function (info) {\n      var current = info.current;\n      var version = info.version;\n      return {\n        current: current,\n        version: version,\n        isWindows: isOS(windows, current),\n        isiOS: isOS(ios, current),\n        isAndroid: isOS(android, current),\n        isOSX: isOS(osx, current),\n        isLinux: isOS(linux, current),\n        isSolaris: isOS(solaris, current),\n        isFreeBSD: isOS(freebsd, current)\n      };\n    };\n    var OperatingSystem = {\n      unknown: unknown$2,\n      nu: nu$2,\n      windows: constant(windows),\n      ios: constant(ios),\n      android: constant(android),\n      linux: constant(linux),\n      osx: constant(osx),\n      solaris: constant(solaris),\n      freebsd: constant(freebsd)\n    };\n\n    var DeviceType = function (os, browser, userAgent) {\n      var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\n      var isiPhone = os.isiOS() && !isiPad;\n      var isAndroid3 = os.isAndroid() && os.version.major === 3;\n      var isAndroid4 = os.isAndroid() && os.version.major === 4;\n      var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;\n      var isTouch = os.isiOS() || os.isAndroid();\n      var isPhone = isTouch && !isTablet;\n      var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\n      return {\n        isiPad: constant(isiPad),\n        isiPhone: constant(isiPhone),\n        isTablet: constant(isTablet),\n        isPhone: constant(isPhone),\n        isTouch: constant(isTouch),\n        isAndroid: os.isAndroid,\n        isiOS: os.isiOS,\n        isWebView: constant(iOSwebview)\n      };\n    };\n\n    var detect$1 = function (candidates, userAgent) {\n      var agent = String(userAgent).toLowerCase();\n      return find(candidates, function (candidate) {\n        return candidate.search(agent);\n      });\n    };\n    var detectBrowser = function (browsers, userAgent) {\n      return detect$1(browsers, userAgent).map(function (browser) {\n        var version = Version.detect(browser.versionRegexes, userAgent);\n        return {\n          current: browser.name,\n          version: version\n        };\n      });\n    };\n    var detectOs = function (oses, userAgent) {\n      return detect$1(oses, userAgent).map(function (os) {\n        var version = Version.detect(os.versionRegexes, userAgent);\n        return {\n          current: os.name,\n          version: version\n        };\n      });\n    };\n    var UaString = {\n      detectBrowser: detectBrowser,\n      detectOs: detectOs\n    };\n\n    var checkRange = function (str, substr, start) {\n      if (substr === '')\n        return true;\n      if (str.length < substr.length)\n        return false;\n      var x = str.substr(start, start + substr.length);\n      return x === substr;\n    };\n    var contains$1 = function (str, substr) {\n      return str.indexOf(substr) !== -1;\n    };\n    var endsWith = function (str, suffix) {\n      return checkRange(str, suffix, str.length - suffix.length);\n    };\n    var trim = function (str) {\n      return str.replace(/^\\s+|\\s+$/g, '');\n    };\n\n    var normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\n    var checkContains = function (target) {\n      return function (uastring) {\n        return contains$1(uastring, target);\n      };\n    };\n    var browsers = [\n      {\n        name: 'Edge',\n        versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n        search: function (uastring) {\n          var monstrosity = contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');\n          return monstrosity;\n        }\n      },\n      {\n        name: 'Chrome',\n        versionRegexes: [\n          /.*?chrome\\/([0-9]+)\\.([0-9]+).*/,\n          normalVersionRegex\n        ],\n        search: function (uastring) {\n          return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');\n        }\n      },\n      {\n        name: 'IE',\n        versionRegexes: [\n          /.*?msie\\ ?([0-9]+)\\.([0-9]+).*/,\n          /.*?rv:([0-9]+)\\.([0-9]+).*/\n        ],\n        search: function (uastring) {\n          return contains$1(uastring, 'msie') || contains$1(uastring, 'trident');\n        }\n      },\n      {\n        name: 'Opera',\n        versionRegexes: [\n          normalVersionRegex,\n          /.*?opera\\/([0-9]+)\\.([0-9]+).*/\n        ],\n        search: checkContains('opera')\n      },\n      {\n        name: 'Firefox',\n        versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\n        search: checkContains('firefox')\n      },\n      {\n        name: 'Safari',\n        versionRegexes: [\n          normalVersionRegex,\n          /.*?cpu os ([0-9]+)_([0-9]+).*/\n        ],\n        search: function (uastring) {\n          return (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');\n        }\n      }\n    ];\n    var oses = [\n      {\n        name: 'Windows',\n        search: checkContains('win'),\n        versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\n      },\n      {\n        name: 'iOS',\n        search: function (uastring) {\n          return contains$1(uastring, 'iphone') || contains$1(uastring, 'ipad');\n        },\n        versionRegexes: [\n          /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/,\n          /.*cpu os ([0-9]+)_([0-9]+).*/,\n          /.*cpu iphone os ([0-9]+)_([0-9]+).*/\n        ]\n      },\n      {\n        name: 'Android',\n        search: checkContains('android'),\n        versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\n      },\n      {\n        name: 'OSX',\n        search: checkContains('os x'),\n        versionRegexes: [/.*?os\\ x\\ ?([0-9]+)_([0-9]+).*/]\n      },\n      {\n        name: 'Linux',\n        search: checkContains('linux'),\n        versionRegexes: []\n      },\n      {\n        name: 'Solaris',\n        search: checkContains('sunos'),\n        versionRegexes: []\n      },\n      {\n        name: 'FreeBSD',\n        search: checkContains('freebsd'),\n        versionRegexes: []\n      }\n    ];\n    var PlatformInfo = {\n      browsers: constant(browsers),\n      oses: constant(oses)\n    };\n\n    var detect$2 = function (userAgent) {\n      var browsers = PlatformInfo.browsers();\n      var oses = PlatformInfo.oses();\n      var browser = UaString.detectBrowser(browsers, userAgent).fold(Browser.unknown, Browser.nu);\n      var os = UaString.detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);\n      var deviceType = DeviceType(os, browser, userAgent);\n      return {\n        browser: browser,\n        os: os,\n        deviceType: deviceType\n      };\n    };\n    var PlatformDetection = { detect: detect$2 };\n\n    var detect$3 = cached(function () {\n      var userAgent = navigator.userAgent;\n      return PlatformDetection.detect(userAgent);\n    });\n    var PlatformDetection$1 = { detect: detect$3 };\n\n    var eq = function (e1, e2) {\n      return e1.dom() === e2.dom();\n    };\n    var regularContains = function (e1, e2) {\n      var d1 = e1.dom(), d2 = e2.dom();\n      return d1 === d2 ? false : d1.contains(d2);\n    };\n    var ieContains = function (e1, e2) {\n      return Node$1.documentPositionContainedBy(e1.dom(), e2.dom());\n    };\n    var browser = PlatformDetection$1.detect().browser;\n    var contains$2 = browser.isIE() ? ieContains : regularContains;\n    var is$1 = is;\n\n    var owner = function (element) {\n      return Element$$1.fromDom(element.dom().ownerDocument);\n    };\n    var defaultView = function (element) {\n      var el = element.dom();\n      var defaultView = el.ownerDocument.defaultView;\n      return Element$$1.fromDom(defaultView);\n    };\n    var parent = function (element) {\n      var dom = element.dom();\n      return Option.from(dom.parentNode).map(Element$$1.fromDom);\n    };\n    var parents = function (element, isRoot) {\n      var stop = isFunction(isRoot) ? isRoot : constant(false);\n      var dom = element.dom();\n      var ret = [];\n      while (dom.parentNode !== null && dom.parentNode !== undefined) {\n        var rawParent = dom.parentNode;\n        var parent = Element$$1.fromDom(rawParent);\n        ret.push(parent);\n        if (stop(parent) === true)\n          break;\n        else\n          dom = rawParent;\n      }\n      return ret;\n    };\n    var prevSibling = function (element) {\n      var dom = element.dom();\n      return Option.from(dom.previousSibling).map(Element$$1.fromDom);\n    };\n    var nextSibling = function (element) {\n      var dom = element.dom();\n      return Option.from(dom.nextSibling).map(Element$$1.fromDom);\n    };\n    var children = function (element) {\n      var dom = element.dom();\n      return map(dom.childNodes, Element$$1.fromDom);\n    };\n    var child = function (element, index) {\n      var children = element.dom().childNodes;\n      return Option.from(children[index]).map(Element$$1.fromDom);\n    };\n    var firstChild = function (element) {\n      return child(element, 0);\n    };\n    var spot = Immutable('element', 'offset');\n\n    var firstLayer = function (scope, selector) {\n      return filterFirstLayer(scope, selector, constant(true));\n    };\n    var filterFirstLayer = function (scope, selector, predicate) {\n      return bind(children(scope), function (x) {\n        return is(x, selector) ? predicate(x) ? [x] : [] : filterFirstLayer(x, selector, predicate);\n      });\n    };\n    var LayerSelector = {\n      firstLayer: firstLayer,\n      filterFirstLayer: filterFirstLayer\n    };\n\n    var name = function (element) {\n      var r = element.dom().nodeName;\n      return r.toLowerCase();\n    };\n    var type = function (element) {\n      return element.dom().nodeType;\n    };\n    var isType$1 = function (t) {\n      return function (element) {\n        return type(element) === t;\n      };\n    };\n    var isComment = function (element) {\n      return type(element) === COMMENT || name(element) === '#comment';\n    };\n    var isElement = isType$1(ELEMENT);\n    var isText = isType$1(TEXT);\n    var isDocument = isType$1(DOCUMENT);\n\n    var rawSet = function (dom, key, value$$1) {\n      if (isString(value$$1) || isBoolean(value$$1) || isNumber(value$$1)) {\n        dom.setAttribute(key, value$$1 + '');\n      } else {\n        console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value$$1, ':: Element ', dom);\n        throw new Error('Attribute value was not simple');\n      }\n    };\n    var set = function (element, key, value$$1) {\n      rawSet(element.dom(), key, value$$1);\n    };\n    var setAll = function (element, attrs) {\n      var dom = element.dom();\n      each$1(attrs, function (v, k) {\n        rawSet(dom, k, v);\n      });\n    };\n    var get$1 = function (element, key) {\n      var v = element.dom().getAttribute(key);\n      return v === null ? undefined : v;\n    };\n    var has$1 = function (element, key) {\n      var dom = element.dom();\n      return dom && dom.hasAttribute ? dom.hasAttribute(key) : false;\n    };\n    var remove = function (element, key) {\n      element.dom().removeAttribute(key);\n    };\n    var clone = function (element) {\n      return foldl(element.dom().attributes, function (acc, attr) {\n        acc[attr.name] = attr.value;\n        return acc;\n      }, {});\n    };\n\n    var inBody = function (element) {\n      var dom = isText(element) ? element.dom().parentNode : element.dom();\n      return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);\n    };\n    var body = cached(function () {\n      return getBody(Element$$1.fromDom(document));\n    });\n    var getBody = function (doc) {\n      var body = doc.dom().body;\n      if (body === null || body === undefined)\n        throw 'Body is not available yet';\n      return Element$$1.fromDom(body);\n    };\n\n    var ancestors = function (scope, predicate, isRoot) {\n      return filter(parents(scope, isRoot), predicate);\n    };\n    var children$1 = function (scope, predicate) {\n      return filter(children(scope), predicate);\n    };\n    var descendants = function (scope, predicate) {\n      var result = [];\n      each(children(scope), function (x) {\n        if (predicate(x)) {\n          result = result.concat([x]);\n        }\n        result = result.concat(descendants(x, predicate));\n      });\n      return result;\n    };\n\n    var ancestors$1 = function (scope, selector, isRoot) {\n      return ancestors(scope, function (e) {\n        return is(e, selector);\n      }, isRoot);\n    };\n    var children$2 = function (scope, selector) {\n      return children$1(scope, function (e) {\n        return is(e, selector);\n      });\n    };\n    var descendants$1 = function (scope, selector) {\n      return all(selector, scope);\n    };\n\n    function ClosestOrAncestor (is, ancestor, scope, a, isRoot) {\n      return is(scope, a) ? Option.some(scope) : isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot);\n    }\n\n    var ancestor = function (scope, predicate, isRoot) {\n      var element = scope.dom();\n      var stop = isFunction(isRoot) ? isRoot : constant(false);\n      while (element.parentNode) {\n        element = element.parentNode;\n        var el = Element$$1.fromDom(element);\n        if (predicate(el))\n          return Option.some(el);\n        else if (stop(el))\n          break;\n      }\n      return Option.none();\n    };\n    var closest = function (scope, predicate, isRoot) {\n      var is = function (scope) {\n        return predicate(scope);\n      };\n      return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot);\n    };\n    var child$1 = function (scope, predicate) {\n      var result = find(scope.dom().childNodes, compose(predicate, Element$$1.fromDom));\n      return result.map(Element$$1.fromDom);\n    };\n    var descendant = function (scope, predicate) {\n      var descend = function (node) {\n        for (var i = 0; i < node.childNodes.length; i++) {\n          if (predicate(Element$$1.fromDom(node.childNodes[i])))\n            return Option.some(Element$$1.fromDom(node.childNodes[i]));\n          var res = descend(node.childNodes[i]);\n          if (res.isSome())\n            return res;\n        }\n        return Option.none();\n      };\n      return descend(scope.dom());\n    };\n\n    var ancestor$1 = function (scope, selector, isRoot) {\n      return ancestor(scope, function (e) {\n        return is(e, selector);\n      }, isRoot);\n    };\n    var child$2 = function (scope, selector) {\n      return child$1(scope, function (e) {\n        return is(e, selector);\n      });\n    };\n    var descendant$1 = function (scope, selector) {\n      return one(selector, scope);\n    };\n    var closest$1 = function (scope, selector, isRoot) {\n      return ClosestOrAncestor(is, ancestor$1, scope, selector, isRoot);\n    };\n\n    var lookup = function (tags, element, _isRoot) {\n      var isRoot = _isRoot !== undefined ? _isRoot : constant(false);\n      if (isRoot(element))\n        return Option.none();\n      if (contains(tags, name(element)))\n        return Option.some(element);\n      var isRootOrUpperTable = function (element) {\n        return is(element, 'table') || isRoot(element);\n      };\n      return ancestor$1(element, tags.join(','), isRootOrUpperTable);\n    };\n    var cell = function (element, isRoot) {\n      return lookup([\n        'td',\n        'th'\n      ], element, isRoot);\n    };\n    var cells = function (ancestor) {\n      return LayerSelector.firstLayer(ancestor, 'th,td');\n    };\n    var notCell = function (element, isRoot) {\n      return lookup([\n        'caption',\n        'tr',\n        'tbody',\n        'tfoot',\n        'thead'\n      ], element, isRoot);\n    };\n    var neighbours = function (selector, element) {\n      return parent(element).map(function (parent$$1) {\n        return children$2(parent$$1, selector);\n      });\n    };\n    var neighbourCells = curry(neighbours, 'th,td');\n    var neighbourRows = curry(neighbours, 'tr');\n    var firstCell = function (ancestor) {\n      return descendant$1(ancestor, 'th,td');\n    };\n    var table = function (element, isRoot) {\n      return closest$1(element, 'table', isRoot);\n    };\n    var row = function (element, isRoot) {\n      return lookup(['tr'], element, isRoot);\n    };\n    var rows = function (ancestor) {\n      return LayerSelector.firstLayer(ancestor, 'tr');\n    };\n    var attr = function (element, property) {\n      return parseInt(get$1(element, property), 10);\n    };\n    var grid$1 = function (element, rowProp, colProp) {\n      var rows = attr(element, rowProp);\n      var cols = attr(element, colProp);\n      return Structs.grid(rows, cols);\n    };\n    var TableLookup = {\n      cell: cell,\n      firstCell: firstCell,\n      cells: cells,\n      neighbourCells: neighbourCells,\n      table: table,\n      row: row,\n      rows: rows,\n      notCell: notCell,\n      neighbourRows: neighbourRows,\n      attr: attr,\n      grid: grid$1\n    };\n\n    var fromTable = function (table) {\n      var rows = TableLookup.rows(table);\n      return map(rows, function (row) {\n        var element = row;\n        var parent$$1 = parent(element);\n        var parentSection = parent$$1.map(function (parent$$1) {\n          var parentName = name(parent$$1);\n          return parentName === 'tfoot' || parentName === 'thead' || parentName === 'tbody' ? parentName : 'tbody';\n        }).getOr('tbody');\n        var cells = map(TableLookup.cells(row), function (cell) {\n          var rowspan = has$1(cell, 'rowspan') ? parseInt(get$1(cell, 'rowspan'), 10) : 1;\n          var colspan = has$1(cell, 'colspan') ? parseInt(get$1(cell, 'colspan'), 10) : 1;\n          return Structs.detail(cell, rowspan, colspan);\n        });\n        return Structs.rowdata(element, cells, parentSection);\n      });\n    };\n    var fromPastedRows = function (rows, example) {\n      return map(rows, function (row) {\n        var cells = map(TableLookup.cells(row), function (cell) {\n          var rowspan = has$1(cell, 'rowspan') ? parseInt(get$1(cell, 'rowspan'), 10) : 1;\n          var colspan = has$1(cell, 'colspan') ? parseInt(get$1(cell, 'colspan'), 10) : 1;\n          return Structs.detail(cell, rowspan, colspan);\n        });\n        return Structs.rowdata(row, cells, example.section());\n      });\n    };\n    var DetailsList = {\n      fromTable: fromTable,\n      fromPastedRows: fromPastedRows\n    };\n\n    var key = function (row, column) {\n      return row + ',' + column;\n    };\n    var getAt = function (warehouse, row, column) {\n      var raw = warehouse.access()[key(row, column)];\n      return raw !== undefined ? Option.some(raw) : Option.none();\n    };\n    var findItem = function (warehouse, item, comparator) {\n      var filtered = filterItems(warehouse, function (detail) {\n        return comparator(item, detail.element());\n      });\n      return filtered.length > 0 ? Option.some(filtered[0]) : Option.none();\n    };\n    var filterItems = function (warehouse, predicate) {\n      var all = bind(warehouse.all(), function (r) {\n        return r.cells();\n      });\n      return filter(all, predicate);\n    };\n    var generate = function (list) {\n      var access = {};\n      var cells = [];\n      var maxRows = list.length;\n      var maxColumns = 0;\n      each(list, function (details, r) {\n        var currentRow = [];\n        each(details.cells(), function (detail, c) {\n          var start = 0;\n          while (access[key(r, start)] !== undefined) {\n            start++;\n          }\n          var current = Structs.extended(detail.element(), detail.rowspan(), detail.colspan(), r, start);\n          for (var i = 0; i < detail.colspan(); i++) {\n            for (var j = 0; j < detail.rowspan(); j++) {\n              var cr = r + j;\n              var cc = start + i;\n              var newpos = key(cr, cc);\n              access[newpos] = current;\n              maxColumns = Math.max(maxColumns, cc + 1);\n            }\n          }\n          currentRow.push(current);\n        });\n        cells.push(Structs.rowdata(details.element(), currentRow, details.section()));\n      });\n      var grid = Structs.grid(maxRows, maxColumns);\n      return {\n        grid: constant(grid),\n        access: constant(access),\n        all: constant(cells)\n      };\n    };\n    var justCells = function (warehouse) {\n      var rows = map(warehouse.all(), function (w) {\n        return w.cells();\n      });\n      return flatten(rows);\n    };\n    var Warehouse = {\n      generate: generate,\n      getAt: getAt,\n      findItem: findItem,\n      filterItems: filterItems,\n      justCells: justCells\n    };\n\n    var isSupported = function (dom) {\n      return dom.style !== undefined;\n    };\n\n    var internalSet = function (dom, property, value$$1) {\n      if (!isString(value$$1)) {\n        console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value$$1, ':: Element ', dom);\n        throw new Error('CSS value must be a string: ' + value$$1);\n      }\n      if (isSupported(dom))\n        dom.style.setProperty(property, value$$1);\n    };\n    var internalRemove = function (dom, property) {\n      if (isSupported(dom))\n        dom.style.removeProperty(property);\n    };\n    var set$1 = function (element, property, value$$1) {\n      var dom = element.dom();\n      internalSet(dom, property, value$$1);\n    };\n    var setAll$1 = function (element, css) {\n      var dom = element.dom();\n      each$1(css, function (v, k) {\n        internalSet(dom, k, v);\n      });\n    };\n    var get$2 = function (element, property) {\n      var dom = element.dom();\n      var styles = window.getComputedStyle(dom);\n      var r = styles.getPropertyValue(property);\n      var v = r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;\n      return v === null ? undefined : v;\n    };\n    var getUnsafeProperty = function (dom, property) {\n      return isSupported(dom) ? dom.style.getPropertyValue(property) : '';\n    };\n    var getRaw = function (element, property) {\n      var dom = element.dom();\n      var raw = getUnsafeProperty(dom, property);\n      return Option.from(raw).filter(function (r) {\n        return r.length > 0;\n      });\n    };\n    var remove$1 = function (element, property) {\n      var dom = element.dom();\n      internalRemove(dom, property);\n      if (has$1(element, 'style') && trim(get$1(element, 'style')) === '') {\n        remove(element, 'style');\n      }\n    };\n    var copy = function (source, target) {\n      var sourceDom = source.dom();\n      var targetDom = target.dom();\n      if (isSupported(sourceDom) && isSupported(targetDom)) {\n        targetDom.style.cssText = sourceDom.style.cssText;\n      }\n    };\n\n    var before = function (marker, element) {\n      var parent$$1 = parent(marker);\n      parent$$1.each(function (v) {\n        v.dom().insertBefore(element.dom(), marker.dom());\n      });\n    };\n    var after = function (marker, element) {\n      var sibling = nextSibling(marker);\n      sibling.fold(function () {\n        var parent$$1 = parent(marker);\n        parent$$1.each(function (v) {\n          append(v, element);\n        });\n      }, function (v) {\n        before(v, element);\n      });\n    };\n    var prepend = function (parent$$1, element) {\n      var firstChild$$1 = firstChild(parent$$1);\n      firstChild$$1.fold(function () {\n        append(parent$$1, element);\n      }, function (v) {\n        parent$$1.dom().insertBefore(element.dom(), v.dom());\n      });\n    };\n    var append = function (parent$$1, element) {\n      parent$$1.dom().appendChild(element.dom());\n    };\n    var wrap = function (element, wrapper) {\n      before(element, wrapper);\n      append(wrapper, element);\n    };\n\n    var before$1 = function (marker, elements) {\n      each(elements, function (x) {\n        before(marker, x);\n      });\n    };\n    var after$1 = function (marker, elements) {\n      each(elements, function (x, i) {\n        var e = i === 0 ? marker : elements[i - 1];\n        after(e, x);\n      });\n    };\n    var append$1 = function (parent, elements) {\n      each(elements, function (x) {\n        append(parent, x);\n      });\n    };\n\n    var empty = function (element) {\n      element.dom().textContent = '';\n      each(children(element), function (rogue) {\n        remove$2(rogue);\n      });\n    };\n    var remove$2 = function (element) {\n      var dom = element.dom();\n      if (dom.parentNode !== null)\n        dom.parentNode.removeChild(dom);\n    };\n    var unwrap = function (wrapper) {\n      var children$$1 = children(wrapper);\n      if (children$$1.length > 0)\n        before$1(wrapper, children$$1);\n      remove$2(wrapper);\n    };\n\n    var stats = Immutable('minRow', 'minCol', 'maxRow', 'maxCol');\n    var findSelectedStats = function (house, isSelected) {\n      var totalColumns = house.grid().columns();\n      var totalRows = house.grid().rows();\n      var minRow = totalRows;\n      var minCol = totalColumns;\n      var maxRow = 0;\n      var maxCol = 0;\n      each$1(house.access(), function (detail) {\n        if (isSelected(detail)) {\n          var startRow = detail.row();\n          var endRow = startRow + detail.rowspan() - 1;\n          var startCol = detail.column();\n          var endCol = startCol + detail.colspan() - 1;\n          if (startRow < minRow)\n            minRow = startRow;\n          else if (endRow > maxRow)\n            maxRow = endRow;\n          if (startCol < minCol)\n            minCol = startCol;\n          else if (endCol > maxCol)\n            maxCol = endCol;\n        }\n      });\n      return stats(minRow, minCol, maxRow, maxCol);\n    };\n    var makeCell = function (list, seenSelected, rowIndex) {\n      var row = list[rowIndex].element();\n      var td = Element$$1.fromTag('td');\n      append(td, Element$$1.fromTag('br'));\n      var f = seenSelected ? append : prepend;\n      f(row, td);\n    };\n    var fillInGaps = function (list, house, stats, isSelected) {\n      var totalColumns = house.grid().columns();\n      var totalRows = house.grid().rows();\n      for (var i = 0; i < totalRows; i++) {\n        var seenSelected = false;\n        for (var j = 0; j < totalColumns; j++) {\n          if (!(i < stats.minRow() || i > stats.maxRow() || j < stats.minCol() || j > stats.maxCol())) {\n            var needCell = Warehouse.getAt(house, i, j).filter(isSelected).isNone();\n            if (needCell)\n              makeCell(list, seenSelected, i);\n            else\n              seenSelected = true;\n          }\n        }\n      }\n    };\n    var clean = function (table, stats) {\n      var emptyRows = filter(LayerSelector.firstLayer(table, 'tr'), function (row) {\n        return row.dom().childElementCount === 0;\n      });\n      each(emptyRows, remove$2);\n      if (stats.minCol() === stats.maxCol() || stats.minRow() === stats.maxRow()) {\n        each(LayerSelector.firstLayer(table, 'th,td'), function (cell) {\n          remove(cell, 'rowspan');\n          remove(cell, 'colspan');\n        });\n      }\n      remove(table, 'width');\n      remove(table, 'height');\n      remove$1(table, 'width');\n      remove$1(table, 'height');\n    };\n    var extract = function (table, selectedSelector) {\n      var isSelected = function (detail) {\n        return is(detail.element(), selectedSelector);\n      };\n      var list = DetailsList.fromTable(table);\n      var house = Warehouse.generate(list);\n      var stats = findSelectedStats(house, isSelected);\n      var selector = 'th:not(' + selectedSelector + ')' + ',td:not(' + selectedSelector + ')';\n      var unselectedCells = LayerSelector.filterFirstLayer(table, 'th,td', function (cell) {\n        return is(cell, selector);\n      });\n      each(unselectedCells, remove$2);\n      fillInGaps(list, house, stats, isSelected);\n      clean(table, stats);\n      return table;\n    };\n    var CopySelected = { extract: extract };\n\n    var clone$1 = function (original, deep) {\n      return Element$$1.fromDom(original.dom().cloneNode(deep));\n    };\n    var shallow = function (original) {\n      return clone$1(original, false);\n    };\n    var deep = function (original) {\n      return clone$1(original, true);\n    };\n    var shallowAs = function (original, tag) {\n      var nu = Element$$1.fromTag(tag);\n      var attributes = clone(original);\n      setAll(nu, attributes);\n      return nu;\n    };\n    var copy$1 = function (original, tag) {\n      var nu = shallowAs(original, tag);\n      var cloneChildren = children(deep(original));\n      append$1(nu, cloneChildren);\n      return nu;\n    };\n\n    function NodeValue (is, name) {\n      var get = function (element) {\n        if (!is(element))\n          throw new Error('Can only get ' + name + ' value of a ' + name + ' node');\n        return getOption(element).getOr('');\n      };\n      var getOptionIE10 = function (element) {\n        try {\n          return getOptionSafe(element);\n        } catch (e) {\n          return Option.none();\n        }\n      };\n      var getOptionSafe = function (element) {\n        return is(element) ? Option.from(element.dom().nodeValue) : Option.none();\n      };\n      var browser = PlatformDetection$1.detect().browser;\n      var getOption = browser.isIE() && browser.version.major === 10 ? getOptionIE10 : getOptionSafe;\n      var set = function (element, value) {\n        if (!is(element))\n          throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');\n        element.dom().nodeValue = value;\n      };\n      return {\n        get: get,\n        getOption: getOption,\n        set: set\n      };\n    }\n\n    var api = NodeValue(isText, 'text');\n    var get$3 = function (element) {\n      return api.get(element);\n    };\n    var getOption = function (element) {\n      return api.getOption(element);\n    };\n    var set$2 = function (element, value$$1) {\n      api.set(element, value$$1);\n    };\n\n    var getEnd = function (element) {\n      return name(element) === 'img' ? 1 : getOption(element).fold(function () {\n        return children(element).length;\n      }, function (v) {\n        return v.length;\n      });\n    };\n    var NBSP = '\\xA0';\n    var isTextNodeWithCursorPosition = function (el) {\n      return getOption(el).filter(function (text) {\n        return text.trim().length !== 0 || text.indexOf(NBSP) > -1;\n      }).isSome();\n    };\n    var elementsWithCursorPosition = [\n      'img',\n      'br'\n    ];\n    var isCursorPosition = function (elem) {\n      var hasCursorPosition = isTextNodeWithCursorPosition(elem);\n      return hasCursorPosition || contains(elementsWithCursorPosition, name(elem));\n    };\n\n    var first$3 = function (element) {\n      return descendant(element, isCursorPosition);\n    };\n    var last$2 = function (element) {\n      return descendantRtl(element, isCursorPosition);\n    };\n    var descendantRtl = function (scope, predicate) {\n      var descend = function (element) {\n        var children$$1 = children(element);\n        for (var i = children$$1.length - 1; i >= 0; i--) {\n          var child$$1 = children$$1[i];\n          if (predicate(child$$1))\n            return Option.some(child$$1);\n          var res = descend(child$$1);\n          if (res.isSome())\n            return res;\n        }\n        return Option.none();\n      };\n      return descend(scope);\n    };\n\n    var cell$1 = function () {\n      var td = Element$$1.fromTag('td');\n      append(td, Element$$1.fromTag('br'));\n      return td;\n    };\n    var replace = function (cell, tag, attrs) {\n      var replica = copy$1(cell, tag);\n      each$1(attrs, function (v, k) {\n        if (v === null)\n          remove(replica, k);\n        else\n          set(replica, k, v);\n      });\n      return replica;\n    };\n    var pasteReplace = function (cellContent) {\n      return cellContent;\n    };\n    var newRow = function (doc) {\n      return function () {\n        return Element$$1.fromTag('tr', doc.dom());\n      };\n    };\n    var cloneFormats = function (oldCell, newCell, formats) {\n      var first = first$3(oldCell);\n      return first.map(function (firstText) {\n        var formatSelector = formats.join(',');\n        var parents$$1 = ancestors$1(firstText, formatSelector, function (element) {\n          return eq(element, oldCell);\n        });\n        return foldr(parents$$1, function (last$$1, parent$$1) {\n          var clonedFormat = shallow(parent$$1);\n          remove(clonedFormat, 'contenteditable');\n          append(last$$1, clonedFormat);\n          return clonedFormat;\n        }, newCell);\n      }).getOr(newCell);\n    };\n    var cellOperations = function (mutate$$1, doc, formatsToClone) {\n      var newCell = function (prev) {\n        var doc = owner(prev.element());\n        var td = Element$$1.fromTag(name(prev.element()), doc.dom());\n        var formats = formatsToClone.getOr([\n          'strong',\n          'em',\n          'b',\n          'i',\n          'span',\n          'font',\n          'h1',\n          'h2',\n          'h3',\n          'h4',\n          'h5',\n          'h6',\n          'p',\n          'div'\n        ]);\n        var lastNode = formats.length > 0 ? cloneFormats(prev.element(), td, formats) : td;\n        append(lastNode, Element$$1.fromTag('br'));\n        copy(prev.element(), td);\n        remove$1(td, 'height');\n        if (prev.colspan() !== 1)\n          remove$1(prev.element(), 'width');\n        mutate$$1(prev.element(), td);\n        return td;\n      };\n      return {\n        row: newRow(doc),\n        cell: newCell,\n        replace: replace,\n        gap: cell$1\n      };\n    };\n    var paste = function (doc) {\n      return {\n        row: newRow(doc),\n        cell: cell$1,\n        replace: pasteReplace,\n        gap: cell$1\n      };\n    };\n    var TableFill = {\n      cellOperations: cellOperations,\n      paste: paste\n    };\n\n    var fromHtml$1 = function (html, scope) {\n      var doc = scope || document;\n      var div = doc.createElement('div');\n      div.innerHTML = html;\n      return children(Element$$1.fromDom(div));\n    };\n\n    var TagBoundaries = [\n      'body',\n      'p',\n      'div',\n      'article',\n      'aside',\n      'figcaption',\n      'figure',\n      'footer',\n      'header',\n      'nav',\n      'section',\n      'ol',\n      'ul',\n      'li',\n      'table',\n      'thead',\n      'tbody',\n      'tfoot',\n      'caption',\n      'tr',\n      'td',\n      'th',\n      'h1',\n      'h2',\n      'h3',\n      'h4',\n      'h5',\n      'h6',\n      'blockquote',\n      'pre',\n      'address'\n    ];\n\n    function DomUniverse () {\n      var clone$$1 = function (element) {\n        return Element$$1.fromDom(element.dom().cloneNode(false));\n      };\n      var isBoundary = function (element) {\n        if (!isElement(element))\n          return false;\n        if (name(element) === 'body')\n          return true;\n        return contains(TagBoundaries, name(element));\n      };\n      var isEmptyTag = function (element) {\n        if (!isElement(element))\n          return false;\n        return contains([\n          'br',\n          'img',\n          'hr',\n          'input'\n        ], name(element));\n      };\n      var comparePosition = function (element, other) {\n        return element.dom().compareDocumentPosition(other.dom());\n      };\n      var copyAttributesTo = function (source, destination) {\n        var as = clone(source);\n        setAll(destination, as);\n      };\n      return {\n        up: constant({\n          selector: ancestor$1,\n          closest: closest$1,\n          predicate: ancestor,\n          all: parents\n        }),\n        down: constant({\n          selector: descendants$1,\n          predicate: descendants\n        }),\n        styles: constant({\n          get: get$2,\n          getRaw: getRaw,\n          set: set$1,\n          remove: remove$1\n        }),\n        attrs: constant({\n          get: get$1,\n          set: set,\n          remove: remove,\n          copyTo: copyAttributesTo\n        }),\n        insert: constant({\n          before: before,\n          after: after,\n          afterAll: after$1,\n          append: append,\n          appendAll: append$1,\n          prepend: prepend,\n          wrap: wrap\n        }),\n        remove: constant({\n          unwrap: unwrap,\n          remove: remove$2\n        }),\n        create: constant({\n          nu: Element$$1.fromTag,\n          clone: clone$$1,\n          text: Element$$1.fromText\n        }),\n        query: constant({\n          comparePosition: comparePosition,\n          prevSibling: prevSibling,\n          nextSibling: nextSibling\n        }),\n        property: constant({\n          children: children,\n          name: name,\n          parent: parent,\n          isText: isText,\n          isComment: isComment,\n          isElement: isElement,\n          getText: get$3,\n          setText: set$2,\n          isBoundary: isBoundary,\n          isEmptyTag: isEmptyTag\n        }),\n        eq: eq,\n        is: is$1\n      };\n    }\n\n    var leftRight = Immutable('left', 'right');\n    var bisect = function (universe, parent, child) {\n      var children = universe.property().children(parent);\n      var index = findIndex(children, curry(universe.eq, child));\n      return index.map(function (ind) {\n        return {\n          before: constant(children.slice(0, ind)),\n          after: constant(children.slice(ind + 1))\n        };\n      });\n    };\n    var breakToRight = function (universe, parent, child) {\n      return bisect(universe, parent, child).map(function (parts) {\n        var second = universe.create().clone(parent);\n        universe.insert().appendAll(second, parts.after());\n        universe.insert().after(parent, second);\n        return leftRight(parent, second);\n      });\n    };\n    var breakToLeft = function (universe, parent, child) {\n      return bisect(universe, parent, child).map(function (parts) {\n        var prior = universe.create().clone(parent);\n        universe.insert().appendAll(prior, parts.before().concat([child]));\n        universe.insert().appendAll(parent, parts.after());\n        universe.insert().before(parent, prior);\n        return leftRight(prior, parent);\n      });\n    };\n    var breakPath = function (universe, item, isTop, breaker) {\n      var result = Immutable('first', 'second', 'splits');\n      var next = function (child, group, splits) {\n        var fallback = result(child, Option.none(), splits);\n        if (isTop(child))\n          return result(child, group, splits);\n        else {\n          return universe.property().parent(child).bind(function (parent) {\n            return breaker(universe, parent, child).map(function (breakage) {\n              var extra = [{\n                  first: breakage.left,\n                  second: breakage.right\n                }];\n              var nextChild = isTop(parent) ? parent : breakage.left();\n              return next(nextChild, Option.some(breakage.right()), splits.concat(extra));\n            }).getOr(fallback);\n          });\n        }\n      };\n      return next(item, Option.none(), []);\n    };\n    var Breaker = {\n      breakToLeft: breakToLeft,\n      breakToRight: breakToRight,\n      breakPath: breakPath\n    };\n\n    var all$3 = function (universe, look, elements, f) {\n      var head$$1 = elements[0];\n      var tail = elements.slice(1);\n      return f(universe, look, head$$1, tail);\n    };\n    var oneAll = function (universe, look, elements) {\n      return elements.length > 0 ? all$3(universe, look, elements, unsafeOne) : Option.none();\n    };\n    var unsafeOne = function (universe, look, head$$1, tail) {\n      var start = look(universe, head$$1);\n      return foldr(tail, function (b, a) {\n        var current = look(universe, a);\n        return commonElement(universe, b, current);\n      }, start);\n    };\n    var commonElement = function (universe, start, end) {\n      return start.bind(function (s) {\n        return end.filter(curry(universe.eq, s));\n      });\n    };\n    var Shared = { oneAll: oneAll };\n\n    var eq$1 = function (universe, item) {\n      return curry(universe.eq, item);\n    };\n    var unsafeSubset = function (universe, common, ps1, ps2) {\n      var children = universe.property().children(common);\n      if (universe.eq(common, ps1[0]))\n        return Option.some([ps1[0]]);\n      if (universe.eq(common, ps2[0]))\n        return Option.some([ps2[0]]);\n      var finder = function (ps) {\n        var topDown = reverse(ps);\n        var index = findIndex(topDown, eq$1(universe, common)).getOr(-1);\n        var item = index < topDown.length - 1 ? topDown[index + 1] : topDown[index];\n        return findIndex(children, eq$1(universe, item));\n      };\n      var startIndex = finder(ps1);\n      var endIndex = finder(ps2);\n      return startIndex.bind(function (sIndex) {\n        return endIndex.map(function (eIndex) {\n          var first = Math.min(sIndex, eIndex);\n          var last$$1 = Math.max(sIndex, eIndex);\n          return children.slice(first, last$$1 + 1);\n        });\n      });\n    };\n    var ancestors$2 = function (universe, start, end, _isRoot) {\n      var isRoot = _isRoot !== undefined ? _isRoot : constant(false);\n      var ps1 = [start].concat(universe.up().all(start));\n      var ps2 = [end].concat(universe.up().all(end));\n      var prune = function (path) {\n        var index = findIndex(path, isRoot);\n        return index.fold(function () {\n          return path;\n        }, function (ind) {\n          return path.slice(0, ind + 1);\n        });\n      };\n      var pruned1 = prune(ps1);\n      var pruned2 = prune(ps2);\n      var shared = find(pruned1, function (x) {\n        return exists(pruned2, eq$1(universe, x));\n      });\n      return {\n        firstpath: constant(pruned1),\n        secondpath: constant(pruned2),\n        shared: constant(shared)\n      };\n    };\n    var subset = function (universe, start, end) {\n      var ancs = ancestors$2(universe, start, end);\n      return ancs.shared().bind(function (shared) {\n        return unsafeSubset(universe, shared, ancs.firstpath(), ancs.secondpath());\n      });\n    };\n    var Subset = {\n      subset: subset,\n      ancestors: ancestors$2\n    };\n\n    var sharedOne = function (universe, look, elements) {\n      return Shared.oneAll(universe, look, elements);\n    };\n    var subset$1 = function (universe, start, finish) {\n      return Subset.subset(universe, start, finish);\n    };\n    var ancestors$3 = function (universe, start, finish, _isRoot) {\n      return Subset.ancestors(universe, start, finish, _isRoot);\n    };\n    var breakToLeft$1 = function (universe, parent, child) {\n      return Breaker.breakToLeft(universe, parent, child);\n    };\n    var breakToRight$1 = function (universe, parent, child) {\n      return Breaker.breakToRight(universe, parent, child);\n    };\n    var breakPath$1 = function (universe, child, isTop, breaker) {\n      return Breaker.breakPath(universe, child, isTop, breaker);\n    };\n    var Parent = {\n      sharedOne: sharedOne,\n      subset: subset$1,\n      ancestors: ancestors$3,\n      breakToLeft: breakToLeft$1,\n      breakToRight: breakToRight$1,\n      breakPath: breakPath$1\n    };\n\n    var universe = DomUniverse();\n    var sharedOne$1 = function (look, elements) {\n      return Parent.sharedOne(universe, function (universe, element) {\n        return look(element);\n      }, elements);\n    };\n    var subset$2 = function (start, finish) {\n      return Parent.subset(universe, start, finish);\n    };\n    var ancestors$4 = function (start, finish, _isRoot) {\n      return Parent.ancestors(universe, start, finish, _isRoot);\n    };\n    var breakToLeft$2 = function (parent, child) {\n      return Parent.breakToLeft(universe, parent, child);\n    };\n    var breakToRight$2 = function (parent, child) {\n      return Parent.breakToRight(universe, parent, child);\n    };\n    var breakPath$2 = function (child, isTop, breaker) {\n      return Parent.breakPath(universe, child, isTop, function (u, p, c) {\n        return breaker(p, c);\n      });\n    };\n    var DomParent = {\n      sharedOne: sharedOne$1,\n      subset: subset$2,\n      ancestors: ancestors$4,\n      breakToLeft: breakToLeft$2,\n      breakToRight: breakToRight$2,\n      breakPath: breakPath$2\n    };\n\n    var inSelection = function (bounds, detail) {\n      var leftEdge = detail.column();\n      var rightEdge = detail.column() + detail.colspan() - 1;\n      var topEdge = detail.row();\n      var bottomEdge = detail.row() + detail.rowspan() - 1;\n      return leftEdge <= bounds.finishCol() && rightEdge >= bounds.startCol() && (topEdge <= bounds.finishRow() && bottomEdge >= bounds.startRow());\n    };\n    var isWithin = function (bounds, detail) {\n      return detail.column() >= bounds.startCol() && detail.column() + detail.colspan() - 1 <= bounds.finishCol() && detail.row() >= bounds.startRow() && detail.row() + detail.rowspan() - 1 <= bounds.finishRow();\n    };\n    var isRectangular = function (warehouse, bounds) {\n      var isRect = true;\n      var detailIsWithin = curry(isWithin, bounds);\n      for (var i = bounds.startRow(); i <= bounds.finishRow(); i++) {\n        for (var j = bounds.startCol(); j <= bounds.finishCol(); j++) {\n          isRect = isRect && Warehouse.getAt(warehouse, i, j).exists(detailIsWithin);\n        }\n      }\n      return isRect ? Option.some(bounds) : Option.none();\n    };\n    var CellBounds = {\n      inSelection: inSelection,\n      isWithin: isWithin,\n      isRectangular: isRectangular\n    };\n\n    var getBounds = function (detailA, detailB) {\n      return Structs.bounds(Math.min(detailA.row(), detailB.row()), Math.min(detailA.column(), detailB.column()), Math.max(detailA.row() + detailA.rowspan() - 1, detailB.row() + detailB.rowspan() - 1), Math.max(detailA.column() + detailA.colspan() - 1, detailB.column() + detailB.colspan() - 1));\n    };\n    var getAnyBox = function (warehouse, startCell, finishCell) {\n      var startCoords = Warehouse.findItem(warehouse, startCell, eq);\n      var finishCoords = Warehouse.findItem(warehouse, finishCell, eq);\n      return startCoords.bind(function (sc) {\n        return finishCoords.map(function (fc) {\n          return getBounds(sc, fc);\n        });\n      });\n    };\n    var getBox = function (warehouse, startCell, finishCell) {\n      return getAnyBox(warehouse, startCell, finishCell).bind(function (bounds) {\n        return CellBounds.isRectangular(warehouse, bounds);\n      });\n    };\n    var CellGroup = {\n      getAnyBox: getAnyBox,\n      getBox: getBox\n    };\n\n    var moveBy = function (warehouse, cell, row, column) {\n      return Warehouse.findItem(warehouse, cell, eq).bind(function (detail) {\n        var startRow = row > 0 ? detail.row() + detail.rowspan() - 1 : detail.row();\n        var startCol = column > 0 ? detail.column() + detail.colspan() - 1 : detail.column();\n        var dest = Warehouse.getAt(warehouse, startRow + row, startCol + column);\n        return dest.map(function (d) {\n          return d.element();\n        });\n      });\n    };\n    var intercepts = function (warehouse, start, finish) {\n      return CellGroup.getAnyBox(warehouse, start, finish).map(function (bounds) {\n        var inside = Warehouse.filterItems(warehouse, curry(CellBounds.inSelection, bounds));\n        return map(inside, function (detail) {\n          return detail.element();\n        });\n      });\n    };\n    var parentCell = function (warehouse, innerCell) {\n      var isContainedBy = function (c1, c2) {\n        return contains$2(c2, c1);\n      };\n      return Warehouse.findItem(warehouse, innerCell, isContainedBy).bind(function (detail) {\n        return detail.element();\n      });\n    };\n    var CellFinder = {\n      moveBy: moveBy,\n      intercepts: intercepts,\n      parentCell: parentCell\n    };\n\n    var moveBy$1 = function (cell, deltaRow, deltaColumn) {\n      return TableLookup.table(cell).bind(function (table) {\n        var warehouse = getWarehouse(table);\n        return CellFinder.moveBy(warehouse, cell, deltaRow, deltaColumn);\n      });\n    };\n    var intercepts$1 = function (table, first, last) {\n      var warehouse = getWarehouse(table);\n      return CellFinder.intercepts(warehouse, first, last);\n    };\n    var nestedIntercepts = function (table, first, firstTable, last, lastTable) {\n      var warehouse = getWarehouse(table);\n      var startCell = eq(table, firstTable) ? first : CellFinder.parentCell(warehouse, first);\n      var lastCell = eq(table, lastTable) ? last : CellFinder.parentCell(warehouse, last);\n      return CellFinder.intercepts(warehouse, startCell, lastCell);\n    };\n    var getBox$1 = function (table, first, last) {\n      var warehouse = getWarehouse(table);\n      return CellGroup.getBox(warehouse, first, last);\n    };\n    var getWarehouse = function (table) {\n      var list = DetailsList.fromTable(table);\n      return Warehouse.generate(list);\n    };\n    var TablePositions = {\n      moveBy: moveBy$1,\n      intercepts: intercepts$1,\n      nestedIntercepts: nestedIntercepts,\n      getBox: getBox$1\n    };\n\n    var lookupTable = function (container, isRoot) {\n      return ancestor$1(container, 'table');\n    };\n    var identified = MixedBag([\n      'boxes',\n      'start',\n      'finish'\n    ], []);\n    var identify = function (start, finish, isRoot) {\n      var getIsRoot = function (rootTable) {\n        return function (element) {\n          return isRoot(element) || eq(element, rootTable);\n        };\n      };\n      if (eq(start, finish)) {\n        return Option.some(identified({\n          boxes: Option.some([start]),\n          start: start,\n          finish: finish\n        }));\n      } else {\n        return lookupTable(start, isRoot).bind(function (startTable) {\n          return lookupTable(finish, isRoot).bind(function (finishTable) {\n            if (eq(startTable, finishTable)) {\n              return Option.some(identified({\n                boxes: TablePositions.intercepts(startTable, start, finish),\n                start: start,\n                finish: finish\n              }));\n            } else if (contains$2(startTable, finishTable)) {\n              var ancestorCells = ancestors$1(finish, 'td,th', getIsRoot(startTable));\n              var finishCell = ancestorCells.length > 0 ? ancestorCells[ancestorCells.length - 1] : finish;\n              return Option.some(identified({\n                boxes: TablePositions.nestedIntercepts(startTable, start, startTable, finish, finishTable),\n                start: start,\n                finish: finishCell\n              }));\n            } else if (contains$2(finishTable, startTable)) {\n              var ancestorCells = ancestors$1(start, 'td,th', getIsRoot(finishTable));\n              var startCell = ancestorCells.length > 0 ? ancestorCells[ancestorCells.length - 1] : start;\n              return Option.some(identified({\n                boxes: TablePositions.nestedIntercepts(finishTable, start, startTable, finish, finishTable),\n                start: start,\n                finish: startCell\n              }));\n            } else {\n              return DomParent.ancestors(start, finish).shared().bind(function (lca) {\n                return closest$1(lca, 'table', isRoot).bind(function (lcaTable) {\n                  var finishAncestorCells = ancestors$1(finish, 'td,th', getIsRoot(lcaTable));\n                  var finishCell = finishAncestorCells.length > 0 ? finishAncestorCells[finishAncestorCells.length - 1] : finish;\n                  var startAncestorCells = ancestors$1(start, 'td,th', getIsRoot(lcaTable));\n                  var startCell = startAncestorCells.length > 0 ? startAncestorCells[startAncestorCells.length - 1] : start;\n                  return Option.some(identified({\n                    boxes: TablePositions.nestedIntercepts(lcaTable, start, startTable, finish, finishTable),\n                    start: startCell,\n                    finish: finishCell\n                  }));\n                });\n              });\n            }\n          });\n        });\n      }\n    };\n    var retrieve = function (container, selector) {\n      var sels = descendants$1(container, selector);\n      return sels.length > 0 ? Option.some(sels) : Option.none();\n    };\n    var getLast = function (boxes, lastSelectedSelector) {\n      return find(boxes, function (box) {\n        return is(box, lastSelectedSelector);\n      });\n    };\n    var getEdges = function (container, firstSelectedSelector, lastSelectedSelector) {\n      return descendant$1(container, firstSelectedSelector).bind(function (first) {\n        return descendant$1(container, lastSelectedSelector).bind(function (last$$1) {\n          return DomParent.sharedOne(lookupTable, [\n            first,\n            last$$1\n          ]).map(function (tbl) {\n            return {\n              first: constant(first),\n              last: constant(last$$1),\n              table: constant(tbl)\n            };\n          });\n        });\n      });\n    };\n    var expandTo = function (finish, firstSelectedSelector) {\n      return ancestor$1(finish, 'table').bind(function (table) {\n        return descendant$1(table, firstSelectedSelector).bind(function (start) {\n          return identify(start, finish).bind(function (identified) {\n            return identified.boxes().map(function (boxes) {\n              return {\n                boxes: constant(boxes),\n                start: constant(identified.start()),\n                finish: constant(identified.finish())\n              };\n            });\n          });\n        });\n      });\n    };\n    var shiftSelection = function (boxes, deltaRow, deltaColumn, firstSelectedSelector, lastSelectedSelector) {\n      return getLast(boxes, lastSelectedSelector).bind(function (last$$1) {\n        return TablePositions.moveBy(last$$1, deltaRow, deltaColumn).bind(function (finish) {\n          return expandTo(finish, firstSelectedSelector);\n        });\n      });\n    };\n    var CellSelection = {\n      identify: identify,\n      retrieve: retrieve,\n      shiftSelection: shiftSelection,\n      getEdges: getEdges\n    };\n\n    var retrieve$1 = function (container, selector) {\n      return CellSelection.retrieve(container, selector);\n    };\n    var retrieveBox = function (container, firstSelectedSelector, lastSelectedSelector) {\n      return CellSelection.getEdges(container, firstSelectedSelector, lastSelectedSelector).bind(function (edges) {\n        var isRoot = function (ancestor) {\n          return eq(container, ancestor);\n        };\n        var firstAncestor = ancestor$1(edges.first(), 'thead,tfoot,tbody,table', isRoot);\n        var lastAncestor = ancestor$1(edges.last(), 'thead,tfoot,tbody,table', isRoot);\n        return firstAncestor.bind(function (fA) {\n          return lastAncestor.bind(function (lA) {\n            return eq(fA, lA) ? TablePositions.getBox(edges.table(), edges.first(), edges.last()) : Option.none();\n          });\n        });\n      });\n    };\n    var TableSelection = {\n      retrieve: retrieve$1,\n      retrieveBox: retrieveBox\n    };\n\n    var selected = 'data-mce-selected';\n    var selectedSelector = 'td[' + selected + '],th[' + selected + ']';\n    var attributeSelector = '[' + selected + ']';\n    var firstSelected = 'data-mce-first-selected';\n    var firstSelectedSelector = 'td[' + firstSelected + '],th[' + firstSelected + ']';\n    var lastSelected = 'data-mce-last-selected';\n    var lastSelectedSelector = 'td[' + lastSelected + '],th[' + lastSelected + ']';\n    var Ephemera = {\n      selected: constant(selected),\n      selectedSelector: constant(selectedSelector),\n      attributeSelector: constant(attributeSelector),\n      firstSelected: constant(firstSelected),\n      firstSelectedSelector: constant(firstSelectedSelector),\n      lastSelected: constant(lastSelected),\n      lastSelectedSelector: constant(lastSelectedSelector)\n    };\n\n    var generate$1 = function (cases) {\n      if (!isArray(cases)) {\n        throw new Error('cases must be an array');\n      }\n      if (cases.length === 0) {\n        throw new Error('there must be at least one case');\n      }\n      var constructors = [];\n      var adt = {};\n      each(cases, function (acase, count) {\n        var keys$$1 = keys(acase);\n        if (keys$$1.length !== 1) {\n          throw new Error('one and only one name per case');\n        }\n        var key = keys$$1[0];\n        var value = acase[key];\n        if (adt[key] !== undefined) {\n          throw new Error('duplicate key detected:' + key);\n        } else if (key === 'cata') {\n          throw new Error('cannot have a case named cata (sorry)');\n        } else if (!isArray(value)) {\n          throw new Error('case arguments must be an array');\n        }\n        constructors.push(key);\n        adt[key] = function () {\n          var argLength = arguments.length;\n          if (argLength !== value.length) {\n            throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);\n          }\n          var args = new Array(argLength);\n          for (var i = 0; i < args.length; i++)\n            args[i] = arguments[i];\n          var match = function (branches) {\n            var branchKeys = keys(branches);\n            if (constructors.length !== branchKeys.length) {\n              throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\\nActual: ' + branchKeys.join(','));\n            }\n            var allReqd = forall(constructors, function (reqKey) {\n              return contains(branchKeys, reqKey);\n            });\n            if (!allReqd)\n              throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\\nRequired: ' + constructors.join(', '));\n            return branches[key].apply(null, args);\n          };\n          return {\n            fold: function () {\n              if (arguments.length !== cases.length) {\n                throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + arguments.length);\n              }\n              var target = arguments[count];\n              return target.apply(null, args);\n            },\n            match: match,\n            log: function (label) {\n              console.log(label, {\n                constructors: constructors,\n                constructor: key,\n                params: args\n              });\n            }\n          };\n        };\n      });\n      return adt;\n    };\n    var Adt = { generate: generate$1 };\n\n    var type$1 = Adt.generate([\n      { none: [] },\n      { multiple: ['elements'] },\n      { single: ['selection'] }\n    ]);\n    var cata = function (subject, onNone, onMultiple, onSingle) {\n      return subject.fold(onNone, onMultiple, onSingle);\n    };\n    var SelectionTypes = {\n      cata: cata,\n      none: type$1.none,\n      multiple: type$1.multiple,\n      single: type$1.single\n    };\n\n    var selection = function (cell, selections) {\n      return SelectionTypes.cata(selections.get(), constant([]), identity, constant([cell]));\n    };\n    var unmergable = function (cell, selections) {\n      var hasSpan = function (elem) {\n        return has$1(elem, 'rowspan') && parseInt(get$1(elem, 'rowspan'), 10) > 1 || has$1(elem, 'colspan') && parseInt(get$1(elem, 'colspan'), 10) > 1;\n      };\n      var candidates = selection(cell, selections);\n      return candidates.length > 0 && forall(candidates, hasSpan) ? Option.some(candidates) : Option.none();\n    };\n    var mergable = function (table, selections) {\n      return SelectionTypes.cata(selections.get(), Option.none, function (cells, _env) {\n        if (cells.length === 0) {\n          return Option.none();\n        }\n        return TableSelection.retrieveBox(table, Ephemera.firstSelectedSelector(), Ephemera.lastSelectedSelector()).bind(function (bounds) {\n          return cells.length > 1 ? Option.some({\n            bounds: constant(bounds),\n            cells: constant(cells)\n          }) : Option.none();\n        });\n      }, Option.none);\n    };\n    var CellOperations = {\n      mergable: mergable,\n      unmergable: unmergable,\n      selection: selection\n    };\n\n    var noMenu = function (cell) {\n      return {\n        element: constant(cell),\n        mergable: Option.none,\n        unmergable: Option.none,\n        selection: constant([cell])\n      };\n    };\n    var forMenu = function (selections, table, cell) {\n      return {\n        element: constant(cell),\n        mergable: constant(CellOperations.mergable(table, selections)),\n        unmergable: constant(CellOperations.unmergable(cell, selections)),\n        selection: constant(CellOperations.selection(cell, selections))\n      };\n    };\n    var notCell$1 = function (element) {\n      return noMenu(element);\n    };\n    var paste$1 = Immutable('element', 'clipboard', 'generators');\n    var pasteRows = function (selections, table, cell, clipboard, generators) {\n      return {\n        element: constant(cell),\n        mergable: Option.none,\n        unmergable: Option.none,\n        selection: constant(CellOperations.selection(cell, selections)),\n        clipboard: constant(clipboard),\n        generators: constant(generators)\n      };\n    };\n    var TableTargets = {\n      noMenu: noMenu,\n      forMenu: forMenu,\n      notCell: notCell$1,\n      paste: paste$1,\n      pasteRows: pasteRows\n    };\n\n    var extractSelected = function (cells) {\n      return TableLookup.table(cells[0]).map(deep).map(function (replica) {\n        return [CopySelected.extract(replica, Ephemera.attributeSelector())];\n      });\n    };\n    var serializeElements = function (editor, elements) {\n      return map(elements, function (elm) {\n        return editor.selection.serializer.serialize(elm.dom(), {});\n      }).join('');\n    };\n    var getTextContent = function (elements) {\n      return map(elements, function (element) {\n        return element.dom().innerText;\n      }).join('');\n    };\n    var registerEvents = function (editor, selections, actions, cellSelection) {\n      editor.on('BeforeGetContent', function (e) {\n        var multiCellContext = function (cells) {\n          e.preventDefault();\n          extractSelected(cells).each(function (elements) {\n            e.content = e.format === 'text' ? getTextContent(elements) : serializeElements(editor, elements);\n          });\n        };\n        if (e.selection === true) {\n          SelectionTypes.cata(selections.get(), noop, multiCellContext, noop);\n        }\n      });\n      editor.on('BeforeSetContent', function (e) {\n        if (e.selection === true && e.paste === true) {\n          var cellOpt = Option.from(editor.dom.getParent(editor.selection.getStart(), 'th,td'));\n          cellOpt.each(function (domCell) {\n            var cell = Element$$1.fromDom(domCell);\n            var table = TableLookup.table(cell);\n            table.bind(function (table) {\n              var elements = filter(fromHtml$1(e.content), function (content) {\n                return name(content) !== 'meta';\n              });\n              if (elements.length === 1 && name(elements[0]) === 'table') {\n                e.preventDefault();\n                var doc = Element$$1.fromDom(editor.getDoc());\n                var generators = TableFill.paste(doc);\n                var targets = TableTargets.paste(cell, elements[0], generators);\n                actions.pasteCells(table, targets).each(function (rng) {\n                  editor.selection.setRng(rng);\n                  editor.focus();\n                  cellSelection.clear(table);\n                });\n              }\n            });\n          });\n        }\n      });\n    };\n    var Clipboard = { registerEvents: registerEvents };\n\n    function Dimension (name, getOffset) {\n      var set = function (element, h) {\n        if (!isNumber(h) && !h.match(/^[0-9]+$/))\n          throw name + '.set accepts only positive integer values. Value was ' + h;\n        var dom = element.dom();\n        if (isSupported(dom))\n          dom.style[name] = h + 'px';\n      };\n      var get = function (element) {\n        var r = getOffset(element);\n        if (r <= 0 || r === null) {\n          var css = get$2(element, name);\n          return parseFloat(css) || 0;\n        }\n        return r;\n      };\n      var getOuter = get;\n      var aggregate = function (element, properties) {\n        return foldl(properties, function (acc, property) {\n          var val = get$2(element, property);\n          var value = val === undefined ? 0 : parseInt(val, 10);\n          return isNaN(value) ? acc : acc + value;\n        }, 0);\n      };\n      var max = function (element, value, properties) {\n        var cumulativeInclusions = aggregate(element, properties);\n        var absoluteMax = value > cumulativeInclusions ? value - cumulativeInclusions : 0;\n        return absoluteMax;\n      };\n      return {\n        set: set,\n        get: get,\n        getOuter: getOuter,\n        aggregate: aggregate,\n        max: max\n      };\n    }\n\n    var api$1 = Dimension('height', function (element) {\n      var dom = element.dom();\n      return inBody(element) ? dom.getBoundingClientRect().height : dom.offsetHeight;\n    });\n    var get$4 = function (element) {\n      return api$1.get(element);\n    };\n    var getOuter = function (element) {\n      return api$1.getOuter(element);\n    };\n\n    var api$2 = Dimension('width', function (element) {\n      return element.dom().offsetWidth;\n    });\n    var get$5 = function (element) {\n      return api$2.get(element);\n    };\n    var getOuter$1 = function (element) {\n      return api$2.getOuter(element);\n    };\n\n    var platform = PlatformDetection$1.detect();\n    var needManualCalc = function () {\n      return platform.browser.isIE() || platform.browser.isEdge();\n    };\n    var toNumber = function (px, fallback) {\n      var num = parseFloat(px);\n      return isNaN(num) ? fallback : num;\n    };\n    var getProp = function (elm, name, fallback) {\n      return toNumber(get$2(elm, name), fallback);\n    };\n    var getCalculatedHeight = function (cell) {\n      var paddingTop = getProp(cell, 'padding-top', 0);\n      var paddingBottom = getProp(cell, 'padding-bottom', 0);\n      var borderTop = getProp(cell, 'border-top-width', 0);\n      var borderBottom = getProp(cell, 'border-bottom-width', 0);\n      var height = cell.dom().getBoundingClientRect().height;\n      var boxSizing = get$2(cell, 'box-sizing');\n      var borders = borderTop + borderBottom;\n      return boxSizing === 'border-box' ? height : height - paddingTop - paddingBottom - borders;\n    };\n    var getWidth = function (cell) {\n      return getProp(cell, 'width', get$5(cell));\n    };\n    var getHeight = function (cell) {\n      return needManualCalc() ? getCalculatedHeight(cell) : getProp(cell, 'height', get$4(cell));\n    };\n    var RuntimeSize = {\n      getWidth: getWidth,\n      getHeight: getHeight\n    };\n\n    var genericSizeRegex = /(\\d+(\\.\\d+)?)(\\w|%)*/;\n    var percentageBasedSizeRegex = /(\\d+(\\.\\d+)?)%/;\n    var pixelBasedSizeRegex = /(\\d+(\\.\\d+)?)px|em/;\n    var setPixelWidth = function (cell, amount) {\n      set$1(cell, 'width', amount + 'px');\n    };\n    var setPercentageWidth = function (cell, amount) {\n      set$1(cell, 'width', amount + '%');\n    };\n    var setHeight = function (cell, amount) {\n      set$1(cell, 'height', amount + 'px');\n    };\n    var getHeightValue = function (cell) {\n      return getRaw(cell, 'height').getOrThunk(function () {\n        return RuntimeSize.getHeight(cell) + 'px';\n      });\n    };\n    var convert = function (cell, number, getter, setter) {\n      var newSize = TableLookup.table(cell).map(function (table) {\n        var total = getter(table);\n        return Math.floor(number / 100 * total);\n      }).getOr(number);\n      setter(cell, newSize);\n      return newSize;\n    };\n    var normalizePixelSize = function (value$$1, cell, getter, setter) {\n      var number = parseInt(value$$1, 10);\n      return endsWith(value$$1, '%') && name(cell) !== 'table' ? convert(cell, number, getter, setter) : number;\n    };\n    var getTotalHeight = function (cell) {\n      var value$$1 = getHeightValue(cell);\n      if (!value$$1)\n        return get$4(cell);\n      return normalizePixelSize(value$$1, cell, get$4, setHeight);\n    };\n    var get$6 = function (cell, type$$1, f) {\n      var v = f(cell);\n      var span = getSpan(cell, type$$1);\n      return v / span;\n    };\n    var getSpan = function (cell, type$$1) {\n      return has$1(cell, type$$1) ? parseInt(get$1(cell, type$$1), 10) : 1;\n    };\n    var getRawWidth = function (element) {\n      var cssWidth = getRaw(element, 'width');\n      return cssWidth.fold(function () {\n        return Option.from(get$1(element, 'width'));\n      }, function (width) {\n        return Option.some(width);\n      });\n    };\n    var normalizePercentageWidth = function (cellWidth, tableSize) {\n      return cellWidth / tableSize.pixelWidth() * 100;\n    };\n    var choosePercentageSize = function (element, width, tableSize) {\n      if (percentageBasedSizeRegex.test(width)) {\n        var percentMatch = percentageBasedSizeRegex.exec(width);\n        return parseFloat(percentMatch[1]);\n      } else {\n        var intWidth = get$5(element);\n        return normalizePercentageWidth(intWidth, tableSize);\n      }\n    };\n    var getPercentageWidth = function (cell, tableSize) {\n      var width = getRawWidth(cell);\n      return width.fold(function () {\n        var intWidth = get$5(cell);\n        return normalizePercentageWidth(intWidth, tableSize);\n      }, function (width) {\n        return choosePercentageSize(cell, width, tableSize);\n      });\n    };\n    var normalizePixelWidth = function (cellWidth, tableSize) {\n      return cellWidth / 100 * tableSize.pixelWidth();\n    };\n    var choosePixelSize = function (element, width, tableSize) {\n      if (pixelBasedSizeRegex.test(width)) {\n        var pixelMatch = pixelBasedSizeRegex.exec(width);\n        return parseInt(pixelMatch[1], 10);\n      } else if (percentageBasedSizeRegex.test(width)) {\n        var percentMatch = percentageBasedSizeRegex.exec(width);\n        var floatWidth = parseFloat(percentMatch[1]);\n        return normalizePixelWidth(floatWidth, tableSize);\n      } else {\n        return get$5(element);\n      }\n    };\n    var getPixelWidth = function (cell, tableSize) {\n      var width = getRawWidth(cell);\n      return width.fold(function () {\n        return get$5(cell);\n      }, function (width) {\n        return choosePixelSize(cell, width, tableSize);\n      });\n    };\n    var getHeight$1 = function (cell) {\n      return get$6(cell, 'rowspan', getTotalHeight);\n    };\n    var getGenericWidth = function (cell) {\n      var width = getRawWidth(cell);\n      return width.bind(function (width) {\n        if (genericSizeRegex.test(width)) {\n          var match = genericSizeRegex.exec(width);\n          return Option.some({\n            width: constant(match[1]),\n            unit: constant(match[3])\n          });\n        } else {\n          return Option.none();\n        }\n      });\n    };\n    var setGenericWidth = function (cell, amount, unit) {\n      set$1(cell, 'width', amount + unit);\n    };\n    var Sizes = {\n      percentageBasedSizeRegex: constant(percentageBasedSizeRegex),\n      pixelBasedSizeRegex: constant(pixelBasedSizeRegex),\n      setPixelWidth: setPixelWidth,\n      setPercentageWidth: setPercentageWidth,\n      setHeight: setHeight,\n      getPixelWidth: getPixelWidth,\n      getPercentageWidth: getPercentageWidth,\n      getGenericWidth: getGenericWidth,\n      setGenericWidth: setGenericWidth,\n      getHeight: getHeight$1,\n      getRawWidth: getRawWidth\n    };\n\n    var halve = function (main, other) {\n      var width = Sizes.getGenericWidth(main);\n      width.each(function (width) {\n        var newWidth = width.width() / 2;\n        Sizes.setGenericWidth(main, newWidth, width.unit());\n        Sizes.setGenericWidth(other, newWidth, width.unit());\n      });\n    };\n    var CellMutations = { halve: halve };\n\n    var attached = function (element, scope) {\n      var doc = scope || Element$$1.fromDom(document.documentElement);\n      return ancestor(element, curry(eq, doc)).isSome();\n    };\n    var windowOf = function (element) {\n      var dom = element.dom();\n      if (dom === dom.window && element instanceof Window)\n        return element;\n      return isDocument(element) ? dom.defaultView || dom.parentWindow : null;\n    };\n\n    var r = function (left, top) {\n      var translate = function (x, y) {\n        return r(left + x, top + y);\n      };\n      return {\n        left: constant(left),\n        top: constant(top),\n        translate: translate\n      };\n    };\n    var Position = r;\n\n    var boxPosition = function (dom) {\n      var box = dom.getBoundingClientRect();\n      return Position(box.left, box.top);\n    };\n    var firstDefinedOrZero = function (a, b) {\n      return a !== undefined ? a : b !== undefined ? b : 0;\n    };\n    var absolute = function (element) {\n      var doc = element.dom().ownerDocument;\n      var body = doc.body;\n      var win = windowOf(Element$$1.fromDom(doc));\n      var html = doc.documentElement;\n      var scrollTop = firstDefinedOrZero(win.pageYOffset, html.scrollTop);\n      var scrollLeft = firstDefinedOrZero(win.pageXOffset, html.scrollLeft);\n      var clientTop = firstDefinedOrZero(html.clientTop, body.clientTop);\n      var clientLeft = firstDefinedOrZero(html.clientLeft, body.clientLeft);\n      return viewport(element).translate(scrollLeft - clientLeft, scrollTop - clientTop);\n    };\n    var viewport = function (element) {\n      var dom = element.dom();\n      var doc = dom.ownerDocument;\n      var body = doc.body;\n      var html = Element$$1.fromDom(doc.documentElement);\n      if (body === dom)\n        return Position(body.offsetLeft, body.offsetTop);\n      if (!attached(element, html))\n        return Position(0, 0);\n      return boxPosition(dom);\n    };\n\n    var rowInfo = Immutable('row', 'y');\n    var colInfo = Immutable('col', 'x');\n    var rtlEdge = function (cell) {\n      var pos = absolute(cell);\n      return pos.left() + getOuter$1(cell);\n    };\n    var ltrEdge = function (cell) {\n      return absolute(cell).left();\n    };\n    var getLeftEdge = function (index, cell) {\n      return colInfo(index, ltrEdge(cell));\n    };\n    var getRightEdge = function (index, cell) {\n      return colInfo(index, rtlEdge(cell));\n    };\n    var getTop = function (cell) {\n      return absolute(cell).top();\n    };\n    var getTopEdge = function (index, cell) {\n      return rowInfo(index, getTop(cell));\n    };\n    var getBottomEdge = function (index, cell) {\n      return rowInfo(index, getTop(cell) + getOuter(cell));\n    };\n    var findPositions = function (getInnerEdge, getOuterEdge, array) {\n      if (array.length === 0)\n        return [];\n      var lines = map(array.slice(1), function (cellOption, index) {\n        return cellOption.map(function (cell) {\n          return getInnerEdge(index, cell);\n        });\n      });\n      var lastLine = array[array.length - 1].map(function (cell) {\n        return getOuterEdge(array.length - 1, cell);\n      });\n      return lines.concat([lastLine]);\n    };\n    var negate = function (step, _table) {\n      return -step;\n    };\n    var height = {\n      delta: identity,\n      positions: curry(findPositions, getTopEdge, getBottomEdge),\n      edge: getTop\n    };\n    var ltr = {\n      delta: identity,\n      edge: ltrEdge,\n      positions: curry(findPositions, getLeftEdge, getRightEdge)\n    };\n    var rtl = {\n      delta: negate,\n      edge: rtlEdge,\n      positions: curry(findPositions, getRightEdge, getLeftEdge)\n    };\n    var BarPositions = {\n      height: height,\n      rtl: rtl,\n      ltr: ltr\n    };\n\n    var ResizeDirection = {\n      ltr: BarPositions.ltr,\n      rtl: BarPositions.rtl\n    };\n\n    function TableDirection (directionAt) {\n      var auto = function (table) {\n        return directionAt(table).isRtl() ? ResizeDirection.rtl : ResizeDirection.ltr;\n      };\n      var delta = function (amount, table) {\n        return auto(table).delta(amount, table);\n      };\n      var positions = function (cols, table) {\n        return auto(table).positions(cols, table);\n      };\n      var edge = function (cell) {\n        return auto(cell).edge(cell);\n      };\n      return {\n        delta: delta,\n        edge: edge,\n        positions: positions\n      };\n    }\n\n    var getGridSize = function (table) {\n      var input = DetailsList.fromTable(table);\n      var warehouse = Warehouse.generate(input);\n      return warehouse.grid();\n    };\n    var TableGridSize = { getGridSize: getGridSize };\n\n    var Cell = function (initial) {\n      var value = initial;\n      var get = function () {\n        return value;\n      };\n      var set = function (v) {\n        value = v;\n      };\n      var clone = function () {\n        return Cell(get());\n      };\n      return {\n        get: get,\n        set: set,\n        clone: clone\n      };\n    };\n\n    var base = function (handleUnsupported, required) {\n      return baseWith(handleUnsupported, required, {\n        validate: isFunction,\n        label: 'function'\n      });\n    };\n    var baseWith = function (handleUnsupported, required, pred) {\n      if (required.length === 0)\n        throw new Error('You must specify at least one required field.');\n      validateStrArr('required', required);\n      checkDupes(required);\n      return function (obj) {\n        var keys$$1 = keys(obj);\n        var allReqd = forall(required, function (req) {\n          return contains(keys$$1, req);\n        });\n        if (!allReqd)\n          reqMessage(required, keys$$1);\n        handleUnsupported(required, keys$$1);\n        var invalidKeys = filter(required, function (key) {\n          return !pred.validate(obj[key], key);\n        });\n        if (invalidKeys.length > 0)\n          invalidTypeMessage(invalidKeys, pred.label);\n        return obj;\n      };\n    };\n    var handleExact = function (required, keys$$1) {\n      var unsupported = filter(keys$$1, function (key) {\n        return !contains(required, key);\n      });\n      if (unsupported.length > 0)\n        unsuppMessage(unsupported);\n    };\n    var exactly = function (required) {\n      return base(handleExact, required);\n    };\n\n    var elementToData = function (element) {\n      var colspan = has$1(element, 'colspan') ? parseInt(get$1(element, 'colspan'), 10) : 1;\n      var rowspan = has$1(element, 'rowspan') ? parseInt(get$1(element, 'rowspan'), 10) : 1;\n      return {\n        element: constant(element),\n        colspan: constant(colspan),\n        rowspan: constant(rowspan)\n      };\n    };\n    var modification = function (generators, _toData) {\n      contract(generators);\n      var position = Cell(Option.none());\n      var toData = _toData !== undefined ? _toData : elementToData;\n      var nu = function (data) {\n        return generators.cell(data);\n      };\n      var nuFrom = function (element) {\n        var data = toData(element);\n        return nu(data);\n      };\n      var add = function (element) {\n        var replacement = nuFrom(element);\n        if (position.get().isNone())\n          position.set(Option.some(replacement));\n        recent = Option.some({\n          item: element,\n          replacement: replacement\n        });\n        return replacement;\n      };\n      var recent = Option.none();\n      var getOrInit = function (element, comparator) {\n        return recent.fold(function () {\n          return add(element);\n        }, function (p) {\n          return comparator(element, p.item) ? p.replacement : add(element);\n        });\n      };\n      return {\n        getOrInit: getOrInit,\n        cursor: position.get\n      };\n    };\n    var transform = function (scope, tag) {\n      return function (generators) {\n        var position = Cell(Option.none());\n        contract(generators);\n        var list = [];\n        var find$$1 = function (element, comparator) {\n          return find(list, function (x) {\n            return comparator(x.item, element);\n          });\n        };\n        var makeNew = function (element) {\n          var cell = generators.replace(element, tag, { scope: scope });\n          list.push({\n            item: element,\n            sub: cell\n          });\n          if (position.get().isNone())\n            position.set(Option.some(cell));\n          return cell;\n        };\n        var replaceOrInit = function (element, comparator) {\n          return find$$1(element, comparator).fold(function () {\n            return makeNew(element);\n          }, function (p) {\n            return comparator(element, p.item) ? p.sub : makeNew(element);\n          });\n        };\n        return {\n          replaceOrInit: replaceOrInit,\n          cursor: position.get\n        };\n      };\n    };\n    var merging = function (generators) {\n      contract(generators);\n      var position = Cell(Option.none());\n      var combine = function (cell) {\n        if (position.get().isNone())\n          position.set(Option.some(cell));\n        return function () {\n          var raw = generators.cell({\n            element: constant(cell),\n            colspan: constant(1),\n            rowspan: constant(1)\n          });\n          remove$1(raw, 'width');\n          remove$1(cell, 'width');\n          return raw;\n        };\n      };\n      return {\n        combine: combine,\n        cursor: position.get\n      };\n    };\n    var contract = exactly([\n      'cell',\n      'row',\n      'replace',\n      'gap'\n    ]);\n    var Generators = {\n      modification: modification,\n      transform: transform,\n      merging: merging\n    };\n\n    var blockList = [\n      'body',\n      'p',\n      'div',\n      'article',\n      'aside',\n      'figcaption',\n      'figure',\n      'footer',\n      'header',\n      'nav',\n      'section',\n      'ol',\n      'ul',\n      'table',\n      'thead',\n      'tfoot',\n      'tbody',\n      'caption',\n      'tr',\n      'td',\n      'th',\n      'h1',\n      'h2',\n      'h3',\n      'h4',\n      'h5',\n      'h6',\n      'blockquote',\n      'pre',\n      'address'\n    ];\n    var isList = function (universe, item) {\n      var tagName = universe.property().name(item);\n      return contains([\n        'ol',\n        'ul'\n      ], tagName);\n    };\n    var isBlock = function (universe, item) {\n      var tagName = universe.property().name(item);\n      return contains(blockList, tagName);\n    };\n    var isFormatting = function (universe, item) {\n      var tagName = universe.property().name(item);\n      return contains([\n        'address',\n        'pre',\n        'p',\n        'h1',\n        'h2',\n        'h3',\n        'h4',\n        'h5',\n        'h6'\n      ], tagName);\n    };\n    var isHeading = function (universe, item) {\n      var tagName = universe.property().name(item);\n      return contains([\n        'h1',\n        'h2',\n        'h3',\n        'h4',\n        'h5',\n        'h6'\n      ], tagName);\n    };\n    var isContainer = function (universe, item) {\n      return contains([\n        'div',\n        'li',\n        'td',\n        'th',\n        'blockquote',\n        'body',\n        'caption'\n      ], universe.property().name(item));\n    };\n    var isEmptyTag = function (universe, item) {\n      return contains([\n        'br',\n        'img',\n        'hr',\n        'input'\n      ], universe.property().name(item));\n    };\n    var isFrame = function (universe, item) {\n      return universe.property().name(item) === 'iframe';\n    };\n    var isInline = function (universe, item) {\n      return !(isBlock(universe, item) || isEmptyTag(universe, item)) && universe.property().name(item) !== 'li';\n    };\n    var Structure = {\n      isBlock: isBlock,\n      isList: isList,\n      isFormatting: isFormatting,\n      isHeading: isHeading,\n      isContainer: isContainer,\n      isEmptyTag: isEmptyTag,\n      isFrame: isFrame,\n      isInline: isInline\n    };\n\n    var universe$1 = DomUniverse();\n    var isBlock$1 = function (element) {\n      return Structure.isBlock(universe$1, element);\n    };\n    var isList$1 = function (element) {\n      return Structure.isList(universe$1, element);\n    };\n    var isFormatting$1 = function (element) {\n      return Structure.isFormatting(universe$1, element);\n    };\n    var isHeading$1 = function (element) {\n      return Structure.isHeading(universe$1, element);\n    };\n    var isContainer$1 = function (element) {\n      return Structure.isContainer(universe$1, element);\n    };\n    var isEmptyTag$1 = function (element) {\n      return Structure.isEmptyTag(universe$1, element);\n    };\n    var isFrame$1 = function (element) {\n      return Structure.isFrame(universe$1, element);\n    };\n    var isInline$1 = function (element) {\n      return Structure.isInline(universe$1, element);\n    };\n    var DomStructure = {\n      isBlock: isBlock$1,\n      isList: isList$1,\n      isFormatting: isFormatting$1,\n      isHeading: isHeading$1,\n      isContainer: isContainer$1,\n      isEmptyTag: isEmptyTag$1,\n      isFrame: isFrame$1,\n      isInline: isInline$1\n    };\n\n    var merge = function (cells) {\n      var isBr = function (el) {\n        return name(el) === 'br';\n      };\n      var advancedBr = function (children$$1) {\n        return forall(children$$1, function (c) {\n          return isBr(c) || isText(c) && get$3(c).trim().length === 0;\n        });\n      };\n      var isListItem = function (el) {\n        return name(el) === 'li' || ancestor(el, DomStructure.isList).isSome();\n      };\n      var siblingIsBlock = function (el) {\n        return nextSibling(el).map(function (rightSibling) {\n          if (DomStructure.isBlock(rightSibling))\n            return true;\n          if (DomStructure.isEmptyTag(rightSibling)) {\n            return name(rightSibling) === 'img' ? false : true;\n          }\n        }).getOr(false);\n      };\n      var markCell = function (cell) {\n        return last$2(cell).bind(function (rightEdge) {\n          var rightSiblingIsBlock = siblingIsBlock(rightEdge);\n          return parent(rightEdge).map(function (parent$$1) {\n            return rightSiblingIsBlock === true || isListItem(parent$$1) || isBr(rightEdge) || DomStructure.isBlock(parent$$1) && !eq(cell, parent$$1) ? [] : [Element$$1.fromTag('br')];\n          });\n        }).getOr([]);\n      };\n      var markContent = function () {\n        var content = bind(cells, function (cell) {\n          var children$$1 = children(cell);\n          return advancedBr(children$$1) ? [] : children$$1.concat(markCell(cell));\n        });\n        return content.length === 0 ? [Element$$1.fromTag('br')] : content;\n      };\n      var contents = markContent();\n      empty(cells[0]);\n      append$1(cells[0], contents);\n    };\n    var TableContent = { merge: merge };\n\n    var hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n    var shallow$1 = function (old, nu) {\n      return nu;\n    };\n    var baseMerge = function (merger) {\n      return function () {\n        var objects = new Array(arguments.length);\n        for (var i = 0; i < objects.length; i++)\n          objects[i] = arguments[i];\n        if (objects.length === 0)\n          throw new Error('Can\\'t merge zero objects');\n        var ret = {};\n        for (var j = 0; j < objects.length; j++) {\n          var curObject = objects[j];\n          for (var key in curObject)\n            if (hasOwnProperty$1.call(curObject, key)) {\n              ret[key] = merger(ret[key], curObject[key]);\n            }\n        }\n        return ret;\n      };\n    };\n    var merge$1 = baseMerge(shallow$1);\n\n    var cat = function (arr) {\n      var r = [];\n      var push = function (x) {\n        r.push(x);\n      };\n      for (var i = 0; i < arr.length; i++) {\n        arr[i].each(push);\n      }\n      return r;\n    };\n    var findMap = function (arr, f) {\n      for (var i = 0; i < arr.length; i++) {\n        var r = f(arr[i], i);\n        if (r.isSome()) {\n          return r;\n        }\n      }\n      return Option.none();\n    };\n\n    var addCell = function (gridRow, index, cell) {\n      var cells = gridRow.cells();\n      var before = cells.slice(0, index);\n      var after = cells.slice(index);\n      var newCells = before.concat([cell]).concat(after);\n      return setCells(gridRow, newCells);\n    };\n    var mutateCell = function (gridRow, index, cell) {\n      var cells = gridRow.cells();\n      cells[index] = cell;\n    };\n    var setCells = function (gridRow, cells) {\n      return Structs.rowcells(cells, gridRow.section());\n    };\n    var mapCells = function (gridRow, f) {\n      var cells = gridRow.cells();\n      var r = map(cells, f);\n      return Structs.rowcells(r, gridRow.section());\n    };\n    var getCell = function (gridRow, index) {\n      return gridRow.cells()[index];\n    };\n    var getCellElement = function (gridRow, index) {\n      return getCell(gridRow, index).element();\n    };\n    var cellLength = function (gridRow) {\n      return gridRow.cells().length;\n    };\n    var GridRow = {\n      addCell: addCell,\n      setCells: setCells,\n      mutateCell: mutateCell,\n      getCell: getCell,\n      getCellElement: getCellElement,\n      mapCells: mapCells,\n      cellLength: cellLength\n    };\n\n    var getColumn = function (grid, index) {\n      return map(grid, function (row) {\n        return GridRow.getCell(row, index);\n      });\n    };\n    var getRow = function (grid, index) {\n      return grid[index];\n    };\n    var findDiff = function (xs, comp) {\n      if (xs.length === 0)\n        return 0;\n      var first = xs[0];\n      var index = findIndex(xs, function (x) {\n        return !comp(first.element(), x.element());\n      });\n      return index.fold(function () {\n        return xs.length;\n      }, function (ind) {\n        return ind;\n      });\n    };\n    var subgrid = function (grid, row, column, comparator) {\n      var restOfRow = getRow(grid, row).cells().slice(column);\n      var endColIndex = findDiff(restOfRow, comparator);\n      var restOfColumn = getColumn(grid, column).slice(row);\n      var endRowIndex = findDiff(restOfColumn, comparator);\n      return {\n        colspan: constant(endColIndex),\n        rowspan: constant(endRowIndex)\n      };\n    };\n    var TableGrid = { subgrid: subgrid };\n\n    var toDetails = function (grid, comparator) {\n      var seen = map(grid, function (row, ri) {\n        return map(row.cells(), function (col, ci) {\n          return false;\n        });\n      });\n      var updateSeen = function (ri, ci, rowspan, colspan) {\n        for (var r = ri; r < ri + rowspan; r++) {\n          for (var c = ci; c < ci + colspan; c++) {\n            seen[r][c] = true;\n          }\n        }\n      };\n      return map(grid, function (row, ri) {\n        var details = bind(row.cells(), function (cell, ci) {\n          if (seen[ri][ci] === false) {\n            var result = TableGrid.subgrid(grid, ri, ci, comparator);\n            updateSeen(ri, ci, result.rowspan(), result.colspan());\n            return [Structs.detailnew(cell.element(), result.rowspan(), result.colspan(), cell.isNew())];\n          } else {\n            return [];\n          }\n        });\n        return Structs.rowdetails(details, row.section());\n      });\n    };\n    var toGrid = function (warehouse, generators, isNew) {\n      var grid = [];\n      for (var i = 0; i < warehouse.grid().rows(); i++) {\n        var rowCells = [];\n        for (var j = 0; j < warehouse.grid().columns(); j++) {\n          var element = Warehouse.getAt(warehouse, i, j).map(function (item) {\n            return Structs.elementnew(item.element(), isNew);\n          }).getOrThunk(function () {\n            return Structs.elementnew(generators.gap(), true);\n          });\n          rowCells.push(element);\n        }\n        var row = Structs.rowcells(rowCells, warehouse.all()[i].section());\n        grid.push(row);\n      }\n      return grid;\n    };\n    var Transitions = {\n      toDetails: toDetails,\n      toGrid: toGrid\n    };\n\n    var setIfNot = function (element, property, value, ignore) {\n      if (value === ignore)\n        remove(element, property);\n      else\n        set(element, property, value);\n    };\n    var render = function (table, grid) {\n      var newRows = [];\n      var newCells = [];\n      var renderSection = function (gridSection, sectionName) {\n        var section = child$2(table, sectionName).getOrThunk(function () {\n          var tb = Element$$1.fromTag(sectionName, owner(table).dom());\n          append(table, tb);\n          return tb;\n        });\n        empty(section);\n        var rows = map(gridSection, function (row) {\n          if (row.isNew()) {\n            newRows.push(row.element());\n          }\n          var tr = row.element();\n          empty(tr);\n          each(row.cells(), function (cell) {\n            if (cell.isNew()) {\n              newCells.push(cell.element());\n            }\n            setIfNot(cell.element(), 'colspan', cell.colspan(), 1);\n            setIfNot(cell.element(), 'rowspan', cell.rowspan(), 1);\n            append(tr, cell.element());\n          });\n          return tr;\n        });\n        append$1(section, rows);\n      };\n      var removeSection = function (sectionName) {\n        child$2(table, sectionName).each(remove$2);\n      };\n      var renderOrRemoveSection = function (gridSection, sectionName) {\n        if (gridSection.length > 0) {\n          renderSection(gridSection, sectionName);\n        } else {\n          removeSection(sectionName);\n        }\n      };\n      var headSection = [];\n      var bodySection = [];\n      var footSection = [];\n      each(grid, function (row) {\n        switch (row.section()) {\n        case 'thead':\n          headSection.push(row);\n          break;\n        case 'tbody':\n          bodySection.push(row);\n          break;\n        case 'tfoot':\n          footSection.push(row);\n          break;\n        }\n      });\n      renderOrRemoveSection(headSection, 'thead');\n      renderOrRemoveSection(bodySection, 'tbody');\n      renderOrRemoveSection(footSection, 'tfoot');\n      return {\n        newRows: constant(newRows),\n        newCells: constant(newCells)\n      };\n    };\n    var copy$2 = function (grid) {\n      var rows = map(grid, function (row) {\n        var tr = shallow(row.element());\n        each(row.cells(), function (cell) {\n          var clonedCell = deep(cell.element());\n          setIfNot(clonedCell, 'colspan', cell.colspan(), 1);\n          setIfNot(clonedCell, 'rowspan', cell.rowspan(), 1);\n          append(tr, clonedCell);\n        });\n        return tr;\n      });\n      return rows;\n    };\n    var Redraw = {\n      render: render,\n      copy: copy$2\n    };\n\n    var repeat = function (repititions, f) {\n      var r = [];\n      for (var i = 0; i < repititions; i++) {\n        r.push(f(i));\n      }\n      return r;\n    };\n    var range$1 = function (start, end) {\n      var r = [];\n      for (var i = start; i < end; i++) {\n        r.push(i);\n      }\n      return r;\n    };\n    var unique = function (xs, comparator) {\n      var result = [];\n      each(xs, function (x, i) {\n        if (i < xs.length - 1 && !comparator(x, xs[i + 1])) {\n          result.push(x);\n        } else if (i === xs.length - 1) {\n          result.push(x);\n        }\n      });\n      return result;\n    };\n    var deduce = function (xs, index) {\n      if (index < 0 || index >= xs.length - 1)\n        return Option.none();\n      var current = xs[index].fold(function () {\n        var rest = reverse(xs.slice(0, index));\n        return findMap(rest, function (a, i) {\n          return a.map(function (aa) {\n            return {\n              value: aa,\n              delta: i + 1\n            };\n          });\n        });\n      }, function (c) {\n        return Option.some({\n          value: c,\n          delta: 0\n        });\n      });\n      var next = xs[index + 1].fold(function () {\n        var rest = xs.slice(index + 1);\n        return findMap(rest, function (a, i) {\n          return a.map(function (aa) {\n            return {\n              value: aa,\n              delta: i + 1\n            };\n          });\n        });\n      }, function (n) {\n        return Option.some({\n          value: n,\n          delta: 1\n        });\n      });\n      return current.bind(function (c) {\n        return next.map(function (n) {\n          var extras = n.delta + c.delta;\n          return Math.abs(n.value - c.value) / extras;\n        });\n      });\n    };\n    var Util = {\n      repeat: repeat,\n      range: range$1,\n      unique: unique,\n      deduce: deduce\n    };\n\n    var columns = function (warehouse) {\n      var grid = warehouse.grid();\n      var cols = Util.range(0, grid.columns());\n      var rows = Util.range(0, grid.rows());\n      return map(cols, function (col) {\n        var getBlock = function () {\n          return bind(rows, function (r) {\n            return Warehouse.getAt(warehouse, r, col).filter(function (detail) {\n              return detail.column() === col;\n            }).fold(constant([]), function (detail) {\n              return [detail];\n            });\n          });\n        };\n        var isSingle = function (detail) {\n          return detail.colspan() === 1;\n        };\n        var getFallback = function () {\n          return Warehouse.getAt(warehouse, 0, col);\n        };\n        return decide(getBlock, isSingle, getFallback);\n      });\n    };\n    var decide = function (getBlock, isSingle, getFallback) {\n      var inBlock = getBlock();\n      var singleInBlock = find(inBlock, isSingle);\n      var detailOption = singleInBlock.orThunk(function () {\n        return Option.from(inBlock[0]).orThunk(getFallback);\n      });\n      return detailOption.map(function (detail) {\n        return detail.element();\n      });\n    };\n    var rows$1 = function (warehouse) {\n      var grid = warehouse.grid();\n      var rows = Util.range(0, grid.rows());\n      var cols = Util.range(0, grid.columns());\n      return map(rows, function (row) {\n        var getBlock = function () {\n          return bind(cols, function (c) {\n            return Warehouse.getAt(warehouse, row, c).filter(function (detail) {\n              return detail.row() === row;\n            }).fold(constant([]), function (detail) {\n              return [detail];\n            });\n          });\n        };\n        var isSingle = function (detail) {\n          return detail.rowspan() === 1;\n        };\n        var getFallback = function () {\n          return Warehouse.getAt(warehouse, row, 0);\n        };\n        return decide(getBlock, isSingle, getFallback);\n      });\n    };\n    var Blocks = {\n      columns: columns,\n      rows: rows$1\n    };\n\n    var col = function (column, x, y, w, h) {\n      var blocker = Element$$1.fromTag('div');\n      setAll$1(blocker, {\n        position: 'absolute',\n        left: x - w / 2 + 'px',\n        top: y + 'px',\n        height: h + 'px',\n        width: w + 'px'\n      });\n      setAll(blocker, {\n        'data-column': column,\n        'role': 'presentation'\n      });\n      return blocker;\n    };\n    var row$1 = function (row, x, y, w, h) {\n      var blocker = Element$$1.fromTag('div');\n      setAll$1(blocker, {\n        position: 'absolute',\n        left: x + 'px',\n        top: y - h / 2 + 'px',\n        height: h + 'px',\n        width: w + 'px'\n      });\n      setAll(blocker, {\n        'data-row': row,\n        'role': 'presentation'\n      });\n      return blocker;\n    };\n    var Bar = {\n      col: col,\n      row: row$1\n    };\n\n    var css = function (namespace) {\n      var dashNamespace = namespace.replace(/\\./g, '-');\n      var resolve = function (str) {\n        return dashNamespace + '-' + str;\n      };\n      return { resolve: resolve };\n    };\n\n    var styles = css('ephox-snooker');\n    var Styles = { resolve: styles.resolve };\n\n    var read = function (element, attr) {\n      var value = get$1(element, attr);\n      return value === undefined || value === '' ? [] : value.split(' ');\n    };\n    var add = function (element, attr, id) {\n      var old = read(element, attr);\n      var nu = old.concat([id]);\n      set(element, attr, nu.join(' '));\n      return true;\n    };\n    var remove$3 = function (element, attr, id) {\n      var nu = filter(read(element, attr), function (v) {\n        return v !== id;\n      });\n      if (nu.length > 0)\n        set(element, attr, nu.join(' '));\n      else\n        remove(element, attr);\n      return false;\n    };\n\n    var supports = function (element) {\n      return element.dom().classList !== undefined;\n    };\n    var get$7 = function (element) {\n      return read(element, 'class');\n    };\n    var add$1 = function (element, clazz) {\n      return add(element, 'class', clazz);\n    };\n    var remove$4 = function (element, clazz) {\n      return remove$3(element, 'class', clazz);\n    };\n\n    var add$2 = function (element, clazz) {\n      if (supports(element))\n        element.dom().classList.add(clazz);\n      else\n        add$1(element, clazz);\n    };\n    var cleanClass = function (element) {\n      var classList = supports(element) ? element.dom().classList : get$7(element);\n      if (classList.length === 0) {\n        remove(element, 'class');\n      }\n    };\n    var remove$5 = function (element, clazz) {\n      if (supports(element)) {\n        var classList = element.dom().classList;\n        classList.remove(clazz);\n      } else\n        remove$4(element, clazz);\n      cleanClass(element);\n    };\n    var has$2 = function (element, clazz) {\n      return supports(element) && element.dom().classList.contains(clazz);\n    };\n\n    var resizeBar = Styles.resolve('resizer-bar');\n    var resizeRowBar = Styles.resolve('resizer-rows');\n    var resizeColBar = Styles.resolve('resizer-cols');\n    var BAR_THICKNESS = 7;\n    var clear = function (wire) {\n      var previous = descendants$1(wire.parent(), '.' + resizeBar);\n      each(previous, remove$2);\n    };\n    var drawBar = function (wire, positions, create) {\n      var origin = wire.origin();\n      each(positions, function (cpOption, i) {\n        cpOption.each(function (cp) {\n          var bar = create(origin, cp);\n          add$2(bar, resizeBar);\n          append(wire.parent(), bar);\n        });\n      });\n    };\n    var refreshCol = function (wire, colPositions, position, tableHeight) {\n      drawBar(wire, colPositions, function (origin, cp) {\n        var colBar = Bar.col(cp.col(), cp.x() - origin.left(), position.top() - origin.top(), BAR_THICKNESS, tableHeight);\n        add$2(colBar, resizeColBar);\n        return colBar;\n      });\n    };\n    var refreshRow = function (wire, rowPositions, position, tableWidth) {\n      drawBar(wire, rowPositions, function (origin, cp) {\n        var rowBar = Bar.row(cp.row(), position.left() - origin.left(), cp.y() - origin.top(), tableWidth, BAR_THICKNESS);\n        add$2(rowBar, resizeRowBar);\n        return rowBar;\n      });\n    };\n    var refreshGrid = function (wire, table, rows, cols, hdirection, vdirection) {\n      var position = absolute(table);\n      var rowPositions = rows.length > 0 ? hdirection.positions(rows, table) : [];\n      refreshRow(wire, rowPositions, position, getOuter$1(table));\n      var colPositions = cols.length > 0 ? vdirection.positions(cols, table) : [];\n      refreshCol(wire, colPositions, position, getOuter(table));\n    };\n    var refresh = function (wire, table, hdirection, vdirection) {\n      clear(wire);\n      var list = DetailsList.fromTable(table);\n      var warehouse = Warehouse.generate(list);\n      var rows = Blocks.rows(warehouse);\n      var cols = Blocks.columns(warehouse);\n      refreshGrid(wire, table, rows, cols, hdirection, vdirection);\n    };\n    var each$2 = function (wire, f) {\n      var bars = descendants$1(wire.parent(), '.' + resizeBar);\n      each(bars, f);\n    };\n    var hide = function (wire) {\n      each$2(wire, function (bar) {\n        set$1(bar, 'display', 'none');\n      });\n    };\n    var show = function (wire) {\n      each$2(wire, function (bar) {\n        set$1(bar, 'display', 'block');\n      });\n    };\n    var isRowBar = function (element) {\n      return has$2(element, resizeRowBar);\n    };\n    var isColBar = function (element) {\n      return has$2(element, resizeColBar);\n    };\n    var Bars = {\n      refresh: refresh,\n      hide: hide,\n      show: show,\n      destroy: clear,\n      isRowBar: isRowBar,\n      isColBar: isColBar\n    };\n\n    var fromWarehouse = function (warehouse, generators) {\n      return Transitions.toGrid(warehouse, generators, false);\n    };\n    var deriveRows = function (rendered, generators) {\n      var findRow = function (details) {\n        var rowOfCells = findMap(details, function (detail) {\n          return parent(detail.element()).map(function (row) {\n            var isNew = parent(row).isNone();\n            return Structs.elementnew(row, isNew);\n          });\n        });\n        return rowOfCells.getOrThunk(function () {\n          return Structs.elementnew(generators.row(), true);\n        });\n      };\n      return map(rendered, function (details) {\n        var row = findRow(details.details());\n        return Structs.rowdatanew(row.element(), details.details(), details.section(), row.isNew());\n      });\n    };\n    var toDetailList = function (grid, generators) {\n      var rendered = Transitions.toDetails(grid, eq);\n      return deriveRows(rendered, generators);\n    };\n    var findInWarehouse = function (warehouse, element) {\n      var all = flatten(map(warehouse.all(), function (r) {\n        return r.cells();\n      }));\n      return find(all, function (e) {\n        return eq(element, e.element());\n      });\n    };\n    var run = function (operation, extract, adjustment, postAction, genWrappers) {\n      return function (wire, table, target, generators, direction) {\n        var input = DetailsList.fromTable(table);\n        var warehouse = Warehouse.generate(input);\n        var output = extract(warehouse, target).map(function (info) {\n          var model = fromWarehouse(warehouse, generators);\n          var result = operation(model, info, eq, genWrappers(generators));\n          var grid = toDetailList(result.grid(), generators);\n          return {\n            grid: constant(grid),\n            cursor: result.cursor\n          };\n        });\n        return output.fold(function () {\n          return Option.none();\n        }, function (out) {\n          var newElements = Redraw.render(table, out.grid());\n          adjustment(table, out.grid(), direction);\n          postAction(table);\n          Bars.refresh(wire, table, BarPositions.height, direction);\n          return Option.some({\n            cursor: out.cursor,\n            newRows: newElements.newRows,\n            newCells: newElements.newCells\n          });\n        });\n      };\n    };\n    var onCell = function (warehouse, target) {\n      return TableLookup.cell(target.element()).bind(function (cell) {\n        return findInWarehouse(warehouse, cell);\n      });\n    };\n    var onPaste = function (warehouse, target) {\n      return TableLookup.cell(target.element()).bind(function (cell) {\n        return findInWarehouse(warehouse, cell).map(function (details) {\n          return merge$1(details, {\n            generators: target.generators,\n            clipboard: target.clipboard\n          });\n        });\n      });\n    };\n    var onPasteRows = function (warehouse, target) {\n      var details = map(target.selection(), function (cell) {\n        return TableLookup.cell(cell).bind(function (lc) {\n          return findInWarehouse(warehouse, lc);\n        });\n      });\n      var cells = cat(details);\n      return cells.length > 0 ? Option.some(merge$1({ cells: cells }, {\n        generators: target.generators,\n        clipboard: target.clipboard\n      })) : Option.none();\n    };\n    var onMergable = function (warehouse, target) {\n      return target.mergable();\n    };\n    var onUnmergable = function (warehouse, target) {\n      return target.unmergable();\n    };\n    var onCells = function (warehouse, target) {\n      var details = map(target.selection(), function (cell) {\n        return TableLookup.cell(cell).bind(function (lc) {\n          return findInWarehouse(warehouse, lc);\n        });\n      });\n      var cells = cat(details);\n      return cells.length > 0 ? Option.some(cells) : Option.none();\n    };\n    var RunOperation = {\n      run: run,\n      toDetailList: toDetailList,\n      onCell: onCell,\n      onCells: onCells,\n      onPaste: onPaste,\n      onPasteRows: onPasteRows,\n      onMergable: onMergable,\n      onUnmergable: onUnmergable\n    };\n\n    var value$1 = function (o) {\n      var is = function (v) {\n        return o === v;\n      };\n      var or = function (opt) {\n        return value$1(o);\n      };\n      var orThunk = function (f) {\n        return value$1(o);\n      };\n      var map = function (f) {\n        return value$1(f(o));\n      };\n      var mapError = function (f) {\n        return value$1(o);\n      };\n      var each = function (f) {\n        f(o);\n      };\n      var bind = function (f) {\n        return f(o);\n      };\n      var fold = function (_, onValue) {\n        return onValue(o);\n      };\n      var exists = function (f) {\n        return f(o);\n      };\n      var forall = function (f) {\n        return f(o);\n      };\n      var toOption = function () {\n        return Option.some(o);\n      };\n      return {\n        is: is,\n        isValue: always,\n        isError: never,\n        getOr: constant(o),\n        getOrThunk: constant(o),\n        getOrDie: constant(o),\n        or: or,\n        orThunk: orThunk,\n        fold: fold,\n        map: map,\n        mapError: mapError,\n        each: each,\n        bind: bind,\n        exists: exists,\n        forall: forall,\n        toOption: toOption\n      };\n    };\n    var error = function (message) {\n      var getOrThunk = function (f) {\n        return f();\n      };\n      var getOrDie = function () {\n        return die(String(message))();\n      };\n      var or = function (opt) {\n        return opt;\n      };\n      var orThunk = function (f) {\n        return f();\n      };\n      var map = function (f) {\n        return error(message);\n      };\n      var mapError = function (f) {\n        return error(f(message));\n      };\n      var bind = function (f) {\n        return error(message);\n      };\n      var fold = function (onError, _) {\n        return onError(message);\n      };\n      return {\n        is: never,\n        isValue: never,\n        isError: always,\n        getOr: identity,\n        getOrThunk: getOrThunk,\n        getOrDie: getOrDie,\n        or: or,\n        orThunk: orThunk,\n        fold: fold,\n        map: map,\n        mapError: mapError,\n        each: noop,\n        bind: bind,\n        exists: never,\n        forall: always,\n        toOption: Option.none\n      };\n    };\n    var Result = {\n      value: value$1,\n      error: error\n    };\n\n    var measure = function (startAddress, gridA, gridB) {\n      if (startAddress.row() >= gridA.length || startAddress.column() > GridRow.cellLength(gridA[0]))\n        return Result.error('invalid start address out of table bounds, row: ' + startAddress.row() + ', column: ' + startAddress.column());\n      var rowRemainder = gridA.slice(startAddress.row());\n      var colRemainder = rowRemainder[0].cells().slice(startAddress.column());\n      var colRequired = GridRow.cellLength(gridB[0]);\n      var rowRequired = gridB.length;\n      return Result.value({\n        rowDelta: constant(rowRemainder.length - rowRequired),\n        colDelta: constant(colRemainder.length - colRequired)\n      });\n    };\n    var measureWidth = function (gridA, gridB) {\n      var colLengthA = GridRow.cellLength(gridA[0]);\n      var colLengthB = GridRow.cellLength(gridB[0]);\n      return {\n        rowDelta: constant(0),\n        colDelta: constant(colLengthA - colLengthB)\n      };\n    };\n    var fill = function (cells, generator) {\n      return map(cells, function () {\n        return Structs.elementnew(generator.cell(), true);\n      });\n    };\n    var rowFill = function (grid, amount, generator) {\n      return grid.concat(Util.repeat(amount, function (_row) {\n        return GridRow.setCells(grid[grid.length - 1], fill(grid[grid.length - 1].cells(), generator));\n      }));\n    };\n    var colFill = function (grid, amount, generator) {\n      return map(grid, function (row) {\n        return GridRow.setCells(row, row.cells().concat(fill(Util.range(0, amount), generator)));\n      });\n    };\n    var tailor = function (gridA, delta, generator) {\n      var fillCols = delta.colDelta() < 0 ? colFill : identity;\n      var fillRows = delta.rowDelta() < 0 ? rowFill : identity;\n      var modifiedCols = fillCols(gridA, Math.abs(delta.colDelta()), generator);\n      var tailoredGrid = fillRows(modifiedCols, Math.abs(delta.rowDelta()), generator);\n      return tailoredGrid;\n    };\n    var Fitment = {\n      measure: measure,\n      measureWidth: measureWidth,\n      tailor: tailor\n    };\n\n    var merge$2 = function (grid, bounds, comparator, substitution) {\n      if (grid.length === 0)\n        return grid;\n      for (var i = bounds.startRow(); i <= bounds.finishRow(); i++) {\n        for (var j = bounds.startCol(); j <= bounds.finishCol(); j++) {\n          GridRow.mutateCell(grid[i], j, Structs.elementnew(substitution(), false));\n        }\n      }\n      return grid;\n    };\n    var unmerge = function (grid, target, comparator, substitution) {\n      var first = true;\n      for (var i = 0; i < grid.length; i++) {\n        for (var j = 0; j < GridRow.cellLength(grid[0]); j++) {\n          var current = GridRow.getCellElement(grid[i], j);\n          var isToReplace = comparator(current, target);\n          if (isToReplace === true && first === false) {\n            GridRow.mutateCell(grid[i], j, Structs.elementnew(substitution(), true));\n          } else if (isToReplace === true) {\n            first = false;\n          }\n        }\n      }\n      return grid;\n    };\n    var uniqueCells = function (row, comparator) {\n      return foldl(row, function (rest, cell) {\n        return exists(rest, function (currentCell) {\n          return comparator(currentCell.element(), cell.element());\n        }) ? rest : rest.concat([cell]);\n      }, []);\n    };\n    var splitRows = function (grid, index, comparator, substitution) {\n      if (index > 0 && index < grid.length) {\n        var rowPrevCells = grid[index - 1].cells();\n        var cells = uniqueCells(rowPrevCells, comparator);\n        each(cells, function (cell) {\n          var replacement = Option.none();\n          for (var i = index; i < grid.length; i++) {\n            for (var j = 0; j < GridRow.cellLength(grid[0]); j++) {\n              var current = grid[i].cells()[j];\n              var isToReplace = comparator(current.element(), cell.element());\n              if (isToReplace) {\n                if (replacement.isNone()) {\n                  replacement = Option.some(substitution());\n                }\n                replacement.each(function (sub) {\n                  GridRow.mutateCell(grid[i], j, Structs.elementnew(sub, true));\n                });\n              }\n            }\n          }\n        });\n      }\n      return grid;\n    };\n    var MergingOperations = {\n      merge: merge$2,\n      unmerge: unmerge,\n      splitRows: splitRows\n    };\n\n    var isSpanning = function (grid, row, col, comparator) {\n      var candidate = GridRow.getCell(grid[row], col);\n      var matching = curry(comparator, candidate.element());\n      var currentRow = grid[row];\n      return grid.length > 1 && GridRow.cellLength(currentRow) > 1 && (col > 0 && matching(GridRow.getCellElement(currentRow, col - 1)) || col < currentRow.length - 1 && matching(GridRow.getCellElement(currentRow, col + 1)) || row > 0 && matching(GridRow.getCellElement(grid[row - 1], col)) || row < grid.length - 1 && matching(GridRow.getCellElement(grid[row + 1], col)));\n    };\n    var mergeTables = function (startAddress, gridA, gridB, generator, comparator) {\n      var startRow = startAddress.row();\n      var startCol = startAddress.column();\n      var mergeHeight = gridB.length;\n      var mergeWidth = GridRow.cellLength(gridB[0]);\n      var endRow = startRow + mergeHeight;\n      var endCol = startCol + mergeWidth;\n      for (var r = startRow; r < endRow; r++) {\n        for (var c = startCol; c < endCol; c++) {\n          if (isSpanning(gridA, r, c, comparator)) {\n            MergingOperations.unmerge(gridA, GridRow.getCellElement(gridA[r], c), comparator, generator.cell);\n          }\n          var newCell = GridRow.getCellElement(gridB[r - startRow], c - startCol);\n          var replacement = generator.replace(newCell);\n          GridRow.mutateCell(gridA[r], c, Structs.elementnew(replacement, true));\n        }\n      }\n      return gridA;\n    };\n    var merge$3 = function (startAddress, gridA, gridB, generator, comparator) {\n      var result = Fitment.measure(startAddress, gridA, gridB);\n      return result.map(function (delta) {\n        var fittedGrid = Fitment.tailor(gridA, delta, generator);\n        return mergeTables(startAddress, fittedGrid, gridB, generator, comparator);\n      });\n    };\n    var insert = function (index, gridA, gridB, generator, comparator) {\n      MergingOperations.splitRows(gridA, index, comparator, generator.cell);\n      var delta = Fitment.measureWidth(gridB, gridA);\n      var fittedNewGrid = Fitment.tailor(gridB, delta, generator);\n      var secondDelta = Fitment.measureWidth(gridA, fittedNewGrid);\n      var fittedOldGrid = Fitment.tailor(gridA, secondDelta, generator);\n      return fittedOldGrid.slice(0, index).concat(fittedNewGrid).concat(fittedOldGrid.slice(index, fittedOldGrid.length));\n    };\n    var TableMerge = {\n      merge: merge$3,\n      insert: insert\n    };\n\n    var insertRowAt = function (grid, index, example, comparator, substitution) {\n      var before = grid.slice(0, index);\n      var after = grid.slice(index);\n      var between = GridRow.mapCells(grid[example], function (ex, c) {\n        var withinSpan = index > 0 && index < grid.length && comparator(GridRow.getCellElement(grid[index - 1], c), GridRow.getCellElement(grid[index], c));\n        var ret = withinSpan ? GridRow.getCell(grid[index], c) : Structs.elementnew(substitution(ex.element(), comparator), true);\n        return ret;\n      });\n      return before.concat([between]).concat(after);\n    };\n    var insertColumnAt = function (grid, index, example, comparator, substitution) {\n      return map(grid, function (row) {\n        var withinSpan = index > 0 && index < GridRow.cellLength(row) && comparator(GridRow.getCellElement(row, index - 1), GridRow.getCellElement(row, index));\n        var sub = withinSpan ? GridRow.getCell(row, index) : Structs.elementnew(substitution(GridRow.getCellElement(row, example), comparator), true);\n        return GridRow.addCell(row, index, sub);\n      });\n    };\n    var splitCellIntoColumns = function (grid, exampleRow, exampleCol, comparator, substitution) {\n      var index = exampleCol + 1;\n      return map(grid, function (row, i) {\n        var isTargetCell = i === exampleRow;\n        var sub = isTargetCell ? Structs.elementnew(substitution(GridRow.getCellElement(row, exampleCol), comparator), true) : GridRow.getCell(row, exampleCol);\n        return GridRow.addCell(row, index, sub);\n      });\n    };\n    var splitCellIntoRows = function (grid, exampleRow, exampleCol, comparator, substitution) {\n      var index = exampleRow + 1;\n      var before = grid.slice(0, index);\n      var after = grid.slice(index);\n      var between = GridRow.mapCells(grid[exampleRow], function (ex, i) {\n        var isTargetCell = i === exampleCol;\n        return isTargetCell ? Structs.elementnew(substitution(ex.element(), comparator), true) : ex;\n      });\n      return before.concat([between]).concat(after);\n    };\n    var deleteColumnsAt = function (grid, start, finish) {\n      var rows = map(grid, function (row) {\n        var cells = row.cells().slice(0, start).concat(row.cells().slice(finish + 1));\n        return Structs.rowcells(cells, row.section());\n      });\n      return filter(rows, function (row) {\n        return row.cells().length > 0;\n      });\n    };\n    var deleteRowsAt = function (grid, start, finish) {\n      return grid.slice(0, start).concat(grid.slice(finish + 1));\n    };\n    var ModificationOperations = {\n      insertRowAt: insertRowAt,\n      insertColumnAt: insertColumnAt,\n      splitCellIntoColumns: splitCellIntoColumns,\n      splitCellIntoRows: splitCellIntoRows,\n      deleteRowsAt: deleteRowsAt,\n      deleteColumnsAt: deleteColumnsAt\n    };\n\n    var replaceIn = function (grid, targets, comparator, substitution) {\n      var isTarget = function (cell) {\n        return exists(targets, function (target) {\n          return comparator(cell.element(), target.element());\n        });\n      };\n      return map(grid, function (row) {\n        return GridRow.mapCells(row, function (cell) {\n          return isTarget(cell) ? Structs.elementnew(substitution(cell.element(), comparator), true) : cell;\n        });\n      });\n    };\n    var notStartRow = function (grid, rowIndex, colIndex, comparator) {\n      return GridRow.getCellElement(grid[rowIndex], colIndex) !== undefined && (rowIndex > 0 && comparator(GridRow.getCellElement(grid[rowIndex - 1], colIndex), GridRow.getCellElement(grid[rowIndex], colIndex)));\n    };\n    var notStartColumn = function (row, index, comparator) {\n      return index > 0 && comparator(GridRow.getCellElement(row, index - 1), GridRow.getCellElement(row, index));\n    };\n    var replaceColumn = function (grid, index, comparator, substitution) {\n      var targets = bind(grid, function (row, i) {\n        var alreadyAdded = notStartRow(grid, i, index, comparator) || notStartColumn(row, index, comparator);\n        return alreadyAdded ? [] : [GridRow.getCell(row, index)];\n      });\n      return replaceIn(grid, targets, comparator, substitution);\n    };\n    var replaceRow = function (grid, index, comparator, substitution) {\n      var targetRow = grid[index];\n      var targets = bind(targetRow.cells(), function (item, i) {\n        var alreadyAdded = notStartRow(grid, index, i, comparator) || notStartColumn(targetRow, i, comparator);\n        return alreadyAdded ? [] : [item];\n      });\n      return replaceIn(grid, targets, comparator, substitution);\n    };\n    var TransformOperations = {\n      replaceColumn: replaceColumn,\n      replaceRow: replaceRow\n    };\n\n    var none$1 = function () {\n      return folder(function (n, o, l, m, r) {\n        return n();\n      });\n    };\n    var only = function (index) {\n      return folder(function (n, o, l, m, r) {\n        return o(index);\n      });\n    };\n    var left = function (index, next) {\n      return folder(function (n, o, l, m, r) {\n        return l(index, next);\n      });\n    };\n    var middle = function (prev, index, next) {\n      return folder(function (n, o, l, m, r) {\n        return m(prev, index, next);\n      });\n    };\n    var right = function (prev, index) {\n      return folder(function (n, o, l, m, r) {\n        return r(prev, index);\n      });\n    };\n    var folder = function (fold) {\n      return { fold: fold };\n    };\n    var ColumnContext = {\n      none: none$1,\n      only: only,\n      left: left,\n      middle: middle,\n      right: right\n    };\n\n    var neighbours$1 = function (input, index) {\n      if (input.length === 0)\n        return ColumnContext.none();\n      if (input.length === 1)\n        return ColumnContext.only(0);\n      if (index === 0)\n        return ColumnContext.left(0, 1);\n      if (index === input.length - 1)\n        return ColumnContext.right(index - 1, index);\n      if (index > 0 && index < input.length - 1)\n        return ColumnContext.middle(index - 1, index, index + 1);\n      return ColumnContext.none();\n    };\n    var determine = function (input, column, step, tableSize) {\n      var result = input.slice(0);\n      var context = neighbours$1(input, column);\n      var zero = function (array) {\n        return map(array, constant(0));\n      };\n      var onNone = constant(zero(result));\n      var onOnly = function (index) {\n        return tableSize.singleColumnWidth(result[index], step);\n      };\n      var onChange = function (index, next) {\n        if (step >= 0) {\n          var newNext = Math.max(tableSize.minCellWidth(), result[next] - step);\n          return zero(result.slice(0, index)).concat([\n            step,\n            newNext - result[next]\n          ]).concat(zero(result.slice(next + 1)));\n        } else {\n          var newThis = Math.max(tableSize.minCellWidth(), result[index] + step);\n          var diffx = result[index] - newThis;\n          return zero(result.slice(0, index)).concat([\n            newThis - result[index],\n            diffx\n          ]).concat(zero(result.slice(next + 1)));\n        }\n      };\n      var onLeft = onChange;\n      var onMiddle = function (prev, index, next) {\n        return onChange(index, next);\n      };\n      var onRight = function (prev, index) {\n        if (step >= 0) {\n          return zero(result.slice(0, index)).concat([step]);\n        } else {\n          var size = Math.max(tableSize.minCellWidth(), result[index] + step);\n          return zero(result.slice(0, index)).concat([size - result[index]]);\n        }\n      };\n      return context.fold(onNone, onOnly, onLeft, onMiddle, onRight);\n    };\n    var Deltas = { determine: determine };\n\n    var getSpan$1 = function (cell, type) {\n      return has$1(cell, type) && parseInt(get$1(cell, type), 10) > 1;\n    };\n    var hasColspan = function (cell) {\n      return getSpan$1(cell, 'colspan');\n    };\n    var hasRowspan = function (cell) {\n      return getSpan$1(cell, 'rowspan');\n    };\n    var getInt = function (element, property) {\n      return parseInt(get$2(element, property), 10);\n    };\n    var CellUtils = {\n      hasColspan: hasColspan,\n      hasRowspan: hasRowspan,\n      minWidth: constant(10),\n      minHeight: constant(10),\n      getInt: getInt\n    };\n\n    var getRaw$1 = function (cell, property, getter) {\n      return getRaw(cell, property).fold(function () {\n        return getter(cell) + 'px';\n      }, function (raw) {\n        return raw;\n      });\n    };\n    var getRawW = function (cell) {\n      return getRaw$1(cell, 'width', Sizes.getPixelWidth);\n    };\n    var getRawH = function (cell) {\n      return getRaw$1(cell, 'height', Sizes.getHeight);\n    };\n    var getWidthFrom = function (warehouse, direction, getWidth, fallback, tableSize) {\n      var columns = Blocks.columns(warehouse);\n      var backups = map(columns, function (cellOption) {\n        return cellOption.map(direction.edge);\n      });\n      return map(columns, function (cellOption, c) {\n        var columnCell = cellOption.filter(not(CellUtils.hasColspan));\n        return columnCell.fold(function () {\n          var deduced = Util.deduce(backups, c);\n          return fallback(deduced);\n        }, function (cell) {\n          return getWidth(cell, tableSize);\n        });\n      });\n    };\n    var getDeduced = function (deduced) {\n      return deduced.map(function (d) {\n        return d + 'px';\n      }).getOr('');\n    };\n    var getRawWidths = function (warehouse, direction) {\n      return getWidthFrom(warehouse, direction, getRawW, getDeduced);\n    };\n    var getPercentageWidths = function (warehouse, direction, tableSize) {\n      return getWidthFrom(warehouse, direction, Sizes.getPercentageWidth, function (deduced) {\n        return deduced.fold(function () {\n          return tableSize.minCellWidth();\n        }, function (cellWidth) {\n          return cellWidth / tableSize.pixelWidth() * 100;\n        });\n      }, tableSize);\n    };\n    var getPixelWidths = function (warehouse, direction, tableSize) {\n      return getWidthFrom(warehouse, direction, Sizes.getPixelWidth, function (deduced) {\n        return deduced.getOrThunk(tableSize.minCellWidth);\n      }, tableSize);\n    };\n    var getHeightFrom = function (warehouse, direction, getHeight, fallback) {\n      var rows = Blocks.rows(warehouse);\n      var backups = map(rows, function (cellOption) {\n        return cellOption.map(direction.edge);\n      });\n      return map(rows, function (cellOption, c) {\n        var rowCell = cellOption.filter(not(CellUtils.hasRowspan));\n        return rowCell.fold(function () {\n          var deduced = Util.deduce(backups, c);\n          return fallback(deduced);\n        }, function (cell) {\n          return getHeight(cell);\n        });\n      });\n    };\n    var getPixelHeights = function (warehouse, direction) {\n      return getHeightFrom(warehouse, direction, Sizes.getHeight, function (deduced) {\n        return deduced.getOrThunk(CellUtils.minHeight);\n      });\n    };\n    var getRawHeights = function (warehouse, direction) {\n      return getHeightFrom(warehouse, direction, getRawH, getDeduced);\n    };\n    var ColumnSizes = {\n      getRawWidths: getRawWidths,\n      getPixelWidths: getPixelWidths,\n      getPercentageWidths: getPercentageWidths,\n      getPixelHeights: getPixelHeights,\n      getRawHeights: getRawHeights\n    };\n\n    var total = function (start, end, measures) {\n      var r = 0;\n      for (var i = start; i < end; i++) {\n        r += measures[i] !== undefined ? measures[i] : 0;\n      }\n      return r;\n    };\n    var recalculateWidth = function (warehouse, widths) {\n      var all = Warehouse.justCells(warehouse);\n      return map(all, function (cell) {\n        var width = total(cell.column(), cell.column() + cell.colspan(), widths);\n        return {\n          element: cell.element,\n          width: constant(width),\n          colspan: cell.colspan\n        };\n      });\n    };\n    var recalculateHeight = function (warehouse, heights) {\n      var all = Warehouse.justCells(warehouse);\n      return map(all, function (cell) {\n        var height = total(cell.row(), cell.row() + cell.rowspan(), heights);\n        return {\n          element: cell.element,\n          height: constant(height),\n          rowspan: cell.rowspan\n        };\n      });\n    };\n    var matchRowHeight = function (warehouse, heights) {\n      return map(warehouse.all(), function (row, i) {\n        return {\n          element: row.element,\n          height: constant(heights[i])\n        };\n      });\n    };\n    var Recalculations = {\n      recalculateWidth: recalculateWidth,\n      recalculateHeight: recalculateHeight,\n      matchRowHeight: matchRowHeight\n    };\n\n    var percentageSize = function (width, element) {\n      var floatWidth = parseFloat(width);\n      var pixelWidth = get$5(element);\n      var getCellDelta = function (delta) {\n        return delta / pixelWidth * 100;\n      };\n      var singleColumnWidth = function (width, _delta) {\n        return [100 - width];\n      };\n      var minCellWidth = function () {\n        return CellUtils.minWidth() / pixelWidth * 100;\n      };\n      var setTableWidth = function (table, _newWidths, delta) {\n        var total = floatWidth + delta;\n        Sizes.setPercentageWidth(table, total);\n      };\n      return {\n        width: constant(floatWidth),\n        pixelWidth: constant(pixelWidth),\n        getWidths: ColumnSizes.getPercentageWidths,\n        getCellDelta: getCellDelta,\n        singleColumnWidth: singleColumnWidth,\n        minCellWidth: minCellWidth,\n        setElementWidth: Sizes.setPercentageWidth,\n        setTableWidth: setTableWidth\n      };\n    };\n    var pixelSize = function (width) {\n      var intWidth = parseInt(width, 10);\n      var getCellDelta = identity;\n      var singleColumnWidth = function (width, delta) {\n        var newNext = Math.max(CellUtils.minWidth(), width + delta);\n        return [newNext - width];\n      };\n      var setTableWidth = function (table, newWidths, _delta) {\n        var total = foldr(newWidths, function (b, a) {\n          return b + a;\n        }, 0);\n        Sizes.setPixelWidth(table, total);\n      };\n      return {\n        width: constant(intWidth),\n        pixelWidth: constant(intWidth),\n        getWidths: ColumnSizes.getPixelWidths,\n        getCellDelta: getCellDelta,\n        singleColumnWidth: singleColumnWidth,\n        minCellWidth: CellUtils.minWidth,\n        setElementWidth: Sizes.setPixelWidth,\n        setTableWidth: setTableWidth\n      };\n    };\n    var chooseSize = function (element, width) {\n      if (Sizes.percentageBasedSizeRegex().test(width)) {\n        var percentMatch = Sizes.percentageBasedSizeRegex().exec(width);\n        return percentageSize(percentMatch[1], element);\n      } else if (Sizes.pixelBasedSizeRegex().test(width)) {\n        var pixelMatch = Sizes.pixelBasedSizeRegex().exec(width);\n        return pixelSize(pixelMatch[1]);\n      } else {\n        var fallbackWidth = get$5(element);\n        return pixelSize(fallbackWidth);\n      }\n    };\n    var getTableSize = function (element) {\n      var width = Sizes.getRawWidth(element);\n      return width.fold(function () {\n        var fallbackWidth = get$5(element);\n        return pixelSize(fallbackWidth);\n      }, function (width) {\n        return chooseSize(element, width);\n      });\n    };\n    var TableSize = { getTableSize: getTableSize };\n\n    var getWarehouse$1 = function (list) {\n      return Warehouse.generate(list);\n    };\n    var sumUp = function (newSize) {\n      return foldr(newSize, function (b, a) {\n        return b + a;\n      }, 0);\n    };\n    var getTableWarehouse = function (table) {\n      var list = DetailsList.fromTable(table);\n      return getWarehouse$1(list);\n    };\n    var adjustWidth = function (table, delta, index, direction) {\n      var tableSize = TableSize.getTableSize(table);\n      var step = tableSize.getCellDelta(delta);\n      var warehouse = getTableWarehouse(table);\n      var widths = tableSize.getWidths(warehouse, direction, tableSize);\n      var deltas = Deltas.determine(widths, index, step, tableSize);\n      var newWidths = map(deltas, function (dx, i) {\n        return dx + widths[i];\n      });\n      var newSizes = Recalculations.recalculateWidth(warehouse, newWidths);\n      each(newSizes, function (cell) {\n        tableSize.setElementWidth(cell.element(), cell.width());\n      });\n      if (index === warehouse.grid().columns() - 1) {\n        tableSize.setTableWidth(table, newWidths, step);\n      }\n    };\n    var adjustHeight = function (table, delta, index, direction) {\n      var warehouse = getTableWarehouse(table);\n      var heights = ColumnSizes.getPixelHeights(warehouse, direction);\n      var newHeights = map(heights, function (dy, i) {\n        return index === i ? Math.max(delta + dy, CellUtils.minHeight()) : dy;\n      });\n      var newCellSizes = Recalculations.recalculateHeight(warehouse, newHeights);\n      var newRowSizes = Recalculations.matchRowHeight(warehouse, newHeights);\n      each(newRowSizes, function (row) {\n        Sizes.setHeight(row.element(), row.height());\n      });\n      each(newCellSizes, function (cell) {\n        Sizes.setHeight(cell.element(), cell.height());\n      });\n      var total = sumUp(newHeights);\n      Sizes.setHeight(table, total);\n    };\n    var adjustWidthTo = function (table, list, direction) {\n      var tableSize = TableSize.getTableSize(table);\n      var warehouse = getWarehouse$1(list);\n      var widths = tableSize.getWidths(warehouse, direction, tableSize);\n      var newSizes = Recalculations.recalculateWidth(warehouse, widths);\n      each(newSizes, function (cell) {\n        tableSize.setElementWidth(cell.element(), cell.width());\n      });\n      var total = foldr(widths, function (b, a) {\n        return a + b;\n      }, 0);\n      if (newSizes.length > 0) {\n        tableSize.setElementWidth(table, total);\n      }\n    };\n    var Adjustments = {\n      adjustWidth: adjustWidth,\n      adjustHeight: adjustHeight,\n      adjustWidthTo: adjustWidthTo\n    };\n\n    var prune = function (table) {\n      var cells = TableLookup.cells(table);\n      if (cells.length === 0)\n        remove$2(table);\n    };\n    var outcome = Immutable('grid', 'cursor');\n    var elementFromGrid = function (grid, row, column) {\n      return findIn(grid, row, column).orThunk(function () {\n        return findIn(grid, 0, 0);\n      });\n    };\n    var findIn = function (grid, row, column) {\n      return Option.from(grid[row]).bind(function (r) {\n        return Option.from(r.cells()[column]).bind(function (c) {\n          return Option.from(c.element());\n        });\n      });\n    };\n    var bundle = function (grid, row, column) {\n      return outcome(grid, findIn(grid, row, column));\n    };\n    var uniqueRows = function (details) {\n      return foldl(details, function (rest, detail) {\n        return exists(rest, function (currentDetail) {\n          return currentDetail.row() === detail.row();\n        }) ? rest : rest.concat([detail]);\n      }, []).sort(function (detailA, detailB) {\n        return detailA.row() - detailB.row();\n      });\n    };\n    var uniqueColumns = function (details) {\n      return foldl(details, function (rest, detail) {\n        return exists(rest, function (currentDetail) {\n          return currentDetail.column() === detail.column();\n        }) ? rest : rest.concat([detail]);\n      }, []).sort(function (detailA, detailB) {\n        return detailA.column() - detailB.column();\n      });\n    };\n    var insertRowBefore = function (grid, detail, comparator, genWrappers) {\n      var example = detail.row();\n      var targetIndex = detail.row();\n      var newGrid = ModificationOperations.insertRowAt(grid, targetIndex, example, comparator, genWrappers.getOrInit);\n      return bundle(newGrid, targetIndex, detail.column());\n    };\n    var insertRowsBefore = function (grid, details, comparator, genWrappers) {\n      var example = details[0].row();\n      var targetIndex = details[0].row();\n      var rows = uniqueRows(details);\n      var newGrid = foldl(rows, function (newGrid, _row) {\n        return ModificationOperations.insertRowAt(newGrid, targetIndex, example, comparator, genWrappers.getOrInit);\n      }, grid);\n      return bundle(newGrid, targetIndex, details[0].column());\n    };\n    var insertRowAfter = function (grid, detail, comparator, genWrappers) {\n      var example = detail.row();\n      var targetIndex = detail.row() + detail.rowspan();\n      var newGrid = ModificationOperations.insertRowAt(grid, targetIndex, example, comparator, genWrappers.getOrInit);\n      return bundle(newGrid, targetIndex, detail.column());\n    };\n    var insertRowsAfter = function (grid, details, comparator, genWrappers) {\n      var rows = uniqueRows(details);\n      var example = rows[rows.length - 1].row();\n      var targetIndex = rows[rows.length - 1].row() + rows[rows.length - 1].rowspan();\n      var newGrid = foldl(rows, function (newGrid, _row) {\n        return ModificationOperations.insertRowAt(newGrid, targetIndex, example, comparator, genWrappers.getOrInit);\n      }, grid);\n      return bundle(newGrid, targetIndex, details[0].column());\n    };\n    var insertColumnBefore = function (grid, detail, comparator, genWrappers) {\n      var example = detail.column();\n      var targetIndex = detail.column();\n      var newGrid = ModificationOperations.insertColumnAt(grid, targetIndex, example, comparator, genWrappers.getOrInit);\n      return bundle(newGrid, detail.row(), targetIndex);\n    };\n    var insertColumnsBefore = function (grid, details, comparator, genWrappers) {\n      var columns = uniqueColumns(details);\n      var example = columns[0].column();\n      var targetIndex = columns[0].column();\n      var newGrid = foldl(columns, function (newGrid, _row) {\n        return ModificationOperations.insertColumnAt(newGrid, targetIndex, example, comparator, genWrappers.getOrInit);\n      }, grid);\n      return bundle(newGrid, details[0].row(), targetIndex);\n    };\n    var insertColumnAfter = function (grid, detail, comparator, genWrappers) {\n      var example = detail.column();\n      var targetIndex = detail.column() + detail.colspan();\n      var newGrid = ModificationOperations.insertColumnAt(grid, targetIndex, example, comparator, genWrappers.getOrInit);\n      return bundle(newGrid, detail.row(), targetIndex);\n    };\n    var insertColumnsAfter = function (grid, details, comparator, genWrappers) {\n      var example = details[details.length - 1].column();\n      var targetIndex = details[details.length - 1].column() + details[details.length - 1].colspan();\n      var columns = uniqueColumns(details);\n      var newGrid = foldl(columns, function (newGrid, _row) {\n        return ModificationOperations.insertColumnAt(newGrid, targetIndex, example, comparator, genWrappers.getOrInit);\n      }, grid);\n      return bundle(newGrid, details[0].row(), targetIndex);\n    };\n    var makeRowHeader = function (grid, detail, comparator, genWrappers) {\n      var newGrid = TransformOperations.replaceRow(grid, detail.row(), comparator, genWrappers.replaceOrInit);\n      return bundle(newGrid, detail.row(), detail.column());\n    };\n    var makeColumnHeader = function (grid, detail, comparator, genWrappers) {\n      var newGrid = TransformOperations.replaceColumn(grid, detail.column(), comparator, genWrappers.replaceOrInit);\n      return bundle(newGrid, detail.row(), detail.column());\n    };\n    var unmakeRowHeader = function (grid, detail, comparator, genWrappers) {\n      var newGrid = TransformOperations.replaceRow(grid, detail.row(), comparator, genWrappers.replaceOrInit);\n      return bundle(newGrid, detail.row(), detail.column());\n    };\n    var unmakeColumnHeader = function (grid, detail, comparator, genWrappers) {\n      var newGrid = TransformOperations.replaceColumn(grid, detail.column(), comparator, genWrappers.replaceOrInit);\n      return bundle(newGrid, detail.row(), detail.column());\n    };\n    var splitCellIntoColumns$1 = function (grid, detail, comparator, genWrappers) {\n      var newGrid = ModificationOperations.splitCellIntoColumns(grid, detail.row(), detail.column(), comparator, genWrappers.getOrInit);\n      return bundle(newGrid, detail.row(), detail.column());\n    };\n    var splitCellIntoRows$1 = function (grid, detail, comparator, genWrappers) {\n      var newGrid = ModificationOperations.splitCellIntoRows(grid, detail.row(), detail.column(), comparator, genWrappers.getOrInit);\n      return bundle(newGrid, detail.row(), detail.column());\n    };\n    var eraseColumns = function (grid, details, comparator, _genWrappers) {\n      var columns = uniqueColumns(details);\n      var newGrid = ModificationOperations.deleteColumnsAt(grid, columns[0].column(), columns[columns.length - 1].column());\n      var cursor = elementFromGrid(newGrid, details[0].row(), details[0].column());\n      return outcome(newGrid, cursor);\n    };\n    var eraseRows = function (grid, details, comparator, _genWrappers) {\n      var rows = uniqueRows(details);\n      var newGrid = ModificationOperations.deleteRowsAt(grid, rows[0].row(), rows[rows.length - 1].row());\n      var cursor = elementFromGrid(newGrid, details[0].row(), details[0].column());\n      return outcome(newGrid, cursor);\n    };\n    var mergeCells = function (grid, mergable, comparator, _genWrappers) {\n      var cells = mergable.cells();\n      TableContent.merge(cells);\n      var newGrid = MergingOperations.merge(grid, mergable.bounds(), comparator, constant(cells[0]));\n      return outcome(newGrid, Option.from(cells[0]));\n    };\n    var unmergeCells = function (grid, unmergable, comparator, genWrappers) {\n      var newGrid = foldr(unmergable, function (b, cell) {\n        return MergingOperations.unmerge(b, cell, comparator, genWrappers.combine(cell));\n      }, grid);\n      return outcome(newGrid, Option.from(unmergable[0]));\n    };\n    var pasteCells = function (grid, pasteDetails, comparator, genWrappers) {\n      var gridify = function (table, generators) {\n        var list = DetailsList.fromTable(table);\n        var wh = Warehouse.generate(list);\n        return Transitions.toGrid(wh, generators, true);\n      };\n      var gridB = gridify(pasteDetails.clipboard(), pasteDetails.generators());\n      var startAddress = Structs.address(pasteDetails.row(), pasteDetails.column());\n      var mergedGrid = TableMerge.merge(startAddress, grid, gridB, pasteDetails.generators(), comparator);\n      return mergedGrid.fold(function () {\n        return outcome(grid, Option.some(pasteDetails.element()));\n      }, function (nuGrid) {\n        var cursor = elementFromGrid(nuGrid, pasteDetails.row(), pasteDetails.column());\n        return outcome(nuGrid, cursor);\n      });\n    };\n    var gridifyRows = function (rows, generators, example) {\n      var pasteDetails = DetailsList.fromPastedRows(rows, example);\n      var wh = Warehouse.generate(pasteDetails);\n      return Transitions.toGrid(wh, generators, true);\n    };\n    var pasteRowsBefore = function (grid, pasteDetails, comparator, genWrappers) {\n      var example = grid[pasteDetails.cells[0].row()];\n      var index = pasteDetails.cells[0].row();\n      var gridB = gridifyRows(pasteDetails.clipboard(), pasteDetails.generators(), example);\n      var mergedGrid = TableMerge.insert(index, grid, gridB, pasteDetails.generators(), comparator);\n      var cursor = elementFromGrid(mergedGrid, pasteDetails.cells[0].row(), pasteDetails.cells[0].column());\n      return outcome(mergedGrid, cursor);\n    };\n    var pasteRowsAfter = function (grid, pasteDetails, comparator, genWrappers) {\n      var example = grid[pasteDetails.cells[0].row()];\n      var index = pasteDetails.cells[pasteDetails.cells.length - 1].row() + pasteDetails.cells[pasteDetails.cells.length - 1].rowspan();\n      var gridB = gridifyRows(pasteDetails.clipboard(), pasteDetails.generators(), example);\n      var mergedGrid = TableMerge.insert(index, grid, gridB, pasteDetails.generators(), comparator);\n      var cursor = elementFromGrid(mergedGrid, pasteDetails.cells[0].row(), pasteDetails.cells[0].column());\n      return outcome(mergedGrid, cursor);\n    };\n    var resize = Adjustments.adjustWidthTo;\n    var TableOperations = {\n      insertRowBefore: RunOperation.run(insertRowBefore, RunOperation.onCell, noop, noop, Generators.modification),\n      insertRowsBefore: RunOperation.run(insertRowsBefore, RunOperation.onCells, noop, noop, Generators.modification),\n      insertRowAfter: RunOperation.run(insertRowAfter, RunOperation.onCell, noop, noop, Generators.modification),\n      insertRowsAfter: RunOperation.run(insertRowsAfter, RunOperation.onCells, noop, noop, Generators.modification),\n      insertColumnBefore: RunOperation.run(insertColumnBefore, RunOperation.onCell, resize, noop, Generators.modification),\n      insertColumnsBefore: RunOperation.run(insertColumnsBefore, RunOperation.onCells, resize, noop, Generators.modification),\n      insertColumnAfter: RunOperation.run(insertColumnAfter, RunOperation.onCell, resize, noop, Generators.modification),\n      insertColumnsAfter: RunOperation.run(insertColumnsAfter, RunOperation.onCells, resize, noop, Generators.modification),\n      splitCellIntoColumns: RunOperation.run(splitCellIntoColumns$1, RunOperation.onCell, noop, noop, Generators.modification),\n      splitCellIntoRows: RunOperation.run(splitCellIntoRows$1, RunOperation.onCell, noop, noop, Generators.modification),\n      eraseColumns: RunOperation.run(eraseColumns, RunOperation.onCells, resize, prune, Generators.modification),\n      eraseRows: RunOperation.run(eraseRows, RunOperation.onCells, noop, prune, Generators.modification),\n      makeColumnHeader: RunOperation.run(makeColumnHeader, RunOperation.onCell, noop, noop, Generators.transform('row', 'th')),\n      unmakeColumnHeader: RunOperation.run(unmakeColumnHeader, RunOperation.onCell, noop, noop, Generators.transform(null, 'td')),\n      makeRowHeader: RunOperation.run(makeRowHeader, RunOperation.onCell, noop, noop, Generators.transform('col', 'th')),\n      unmakeRowHeader: RunOperation.run(unmakeRowHeader, RunOperation.onCell, noop, noop, Generators.transform(null, 'td')),\n      mergeCells: RunOperation.run(mergeCells, RunOperation.onMergable, noop, noop, Generators.merging),\n      unmergeCells: RunOperation.run(unmergeCells, RunOperation.onUnmergable, noop, noop, Generators.merging),\n      pasteCells: RunOperation.run(pasteCells, RunOperation.onPaste, resize, noop, Generators.modification),\n      pasteRowsBefore: RunOperation.run(pasteRowsBefore, RunOperation.onPasteRows, noop, noop, Generators.modification),\n      pasteRowsAfter: RunOperation.run(pasteRowsAfter, RunOperation.onPasteRows, noop, noop, Generators.modification)\n    };\n\n    var getBody$1 = function (editor) {\n      return Element$$1.fromDom(editor.getBody());\n    };\n    var getPixelWidth$1 = function (elm) {\n      return elm.getBoundingClientRect().width;\n    };\n    var getPixelHeight = function (elm) {\n      return elm.getBoundingClientRect().height;\n    };\n    var getIsRoot = function (editor) {\n      return function (element) {\n        return eq(element, getBody$1(editor));\n      };\n    };\n    var removePxSuffix = function (size) {\n      return size ? size.replace(/px$/, '') : '';\n    };\n    var addSizeSuffix = function (size) {\n      if (/^[0-9]+$/.test(size)) {\n        size += 'px';\n      }\n      return size;\n    };\n    var removeDataStyle = function (table) {\n      var dataStyleCells = descendants$1(table, 'td[data-mce-style],th[data-mce-style]');\n      remove(table, 'data-mce-style');\n      each(dataStyleCells, function (cell) {\n        remove(cell, 'data-mce-style');\n      });\n    };\n\n    var getDirection = function (element) {\n      return get$2(element, 'direction') === 'rtl' ? 'rtl' : 'ltr';\n    };\n\n    var ltr$1 = { isRtl: constant(false) };\n    var rtl$1 = { isRtl: constant(true) };\n    var directionAt = function (element) {\n      var dir = getDirection(element);\n      return dir === 'rtl' ? rtl$1 : ltr$1;\n    };\n    var Direction = { directionAt: directionAt };\n\n    var defaultTableToolbar = [\n      'tableprops',\n      'tabledelete',\n      '|',\n      'tableinsertrowbefore',\n      'tableinsertrowafter',\n      'tabledeleterow',\n      '|',\n      'tableinsertcolbefore',\n      'tableinsertcolafter',\n      'tabledeletecol'\n    ];\n    var defaultStyles = {\n      'border-collapse': 'collapse',\n      'width': '100%'\n    };\n    var defaultAttributes = { border: '1' };\n    var getDefaultAttributes = function (editor) {\n      return editor.getParam('table_default_attributes', defaultAttributes, 'object');\n    };\n    var getDefaultStyles = function (editor) {\n      return editor.getParam('table_default_styles', defaultStyles, 'object');\n    };\n    var hasTableResizeBars = function (editor) {\n      return editor.getParam('table_resize_bars', true, 'boolean');\n    };\n    var hasTabNavigation = function (editor) {\n      return editor.getParam('table_tab_navigation', true, 'boolean');\n    };\n    var hasAdvancedCellTab = function (editor) {\n      return editor.getParam('table_cell_advtab', true, 'boolean');\n    };\n    var hasAdvancedRowTab = function (editor) {\n      return editor.getParam('table_row_advtab', true, 'boolean');\n    };\n    var hasAdvancedTableTab = function (editor) {\n      return editor.getParam('table_advtab', true, 'boolean');\n    };\n    var hasAppearanceOptions = function (editor) {\n      return editor.getParam('table_appearance_options', true, 'boolean');\n    };\n    var hasTableGrid = function (editor) {\n      return editor.getParam('table_grid', true, 'boolean');\n    };\n    var shouldStyleWithCss = function (editor) {\n      return editor.getParam('table_style_by_css', false, 'boolean');\n    };\n    var getCellClassList = function (editor) {\n      return editor.getParam('table_cell_class_list', [], 'array');\n    };\n    var getRowClassList = function (editor) {\n      return editor.getParam('table_row_class_list', [], 'array');\n    };\n    var getTableClassList = function (editor) {\n      return editor.getParam('table_class_list', [], 'array');\n    };\n    var getColorPickerCallback = function (editor) {\n      return editor.getParam('color_picker_callback');\n    };\n    var isPixelsForced = function (editor) {\n      return editor.getParam('table_responsive_width') === false;\n    };\n    var getCloneElements = function (editor) {\n      var cloneElements = editor.getParam('table_clone_elements');\n      if (isString(cloneElements)) {\n        return Option.some(cloneElements.split(/[ ,]/));\n      } else if (Array.isArray(cloneElements)) {\n        return Option.some(cloneElements);\n      } else {\n        return Option.none();\n      }\n    };\n    var hasObjectResizing = function (editor) {\n      var objectResizing = editor.getParam('object_resizing', true);\n      return objectResizing === 'table' || objectResizing;\n    };\n    var getToolbar = function (editor) {\n      var toolbar = editor.getParam('table_toolbar', defaultTableToolbar);\n      if (toolbar === '' || toolbar === false) {\n        return [];\n      } else if (isString(toolbar)) {\n        return toolbar.split(/[ ,]/);\n      } else if (isArray(toolbar)) {\n        return toolbar;\n      } else {\n        return [];\n      }\n    };\n\n    var fireNewRow = function (editor, row) {\n      return editor.fire('newrow', { node: row });\n    };\n    var fireNewCell = function (editor, cell) {\n      return editor.fire('newcell', { node: cell });\n    };\n    var fireObjectResizeStart = function (editor, target, width, height) {\n      editor.fire('ObjectResizeStart', {\n        target: target,\n        width: width,\n        height: height\n      });\n    };\n    var fireObjectResized = function (editor, target, width, height) {\n      editor.fire('ObjectResized', {\n        target: target,\n        width: width,\n        height: height\n      });\n    };\n\n    var TableActions = function (editor, lazyWire) {\n      var isTableBody = function (editor) {\n        return name(getBody$1(editor)) === 'table';\n      };\n      var lastRowGuard = function (table) {\n        var size = TableGridSize.getGridSize(table);\n        return isTableBody(editor) === false || size.rows() > 1;\n      };\n      var lastColumnGuard = function (table) {\n        var size = TableGridSize.getGridSize(table);\n        return isTableBody(editor) === false || size.columns() > 1;\n      };\n      var cloneFormats = getCloneElements(editor);\n      var execute = function (operation, guard, mutate, lazyWire) {\n        return function (table, target) {\n          removeDataStyle(table);\n          var wire = lazyWire();\n          var doc = Element$$1.fromDom(editor.getDoc());\n          var direction = TableDirection(Direction.directionAt);\n          var generators = TableFill.cellOperations(mutate, doc, cloneFormats);\n          return guard(table) ? operation(wire, table, target, generators, direction).bind(function (result) {\n            each(result.newRows(), function (row) {\n              fireNewRow(editor, row.dom());\n            });\n            each(result.newCells(), function (cell) {\n              fireNewCell(editor, cell.dom());\n            });\n            return result.cursor().map(function (cell) {\n              var rng = editor.dom.createRng();\n              rng.setStart(cell.dom(), 0);\n              rng.setEnd(cell.dom(), 0);\n              return rng;\n            });\n          }) : Option.none();\n        };\n      };\n      var deleteRow = execute(TableOperations.eraseRows, lastRowGuard, noop, lazyWire);\n      var deleteColumn = execute(TableOperations.eraseColumns, lastColumnGuard, noop, lazyWire);\n      var insertRowsBefore = execute(TableOperations.insertRowsBefore, always, noop, lazyWire);\n      var insertRowsAfter = execute(TableOperations.insertRowsAfter, always, noop, lazyWire);\n      var insertColumnsBefore = execute(TableOperations.insertColumnsBefore, always, CellMutations.halve, lazyWire);\n      var insertColumnsAfter = execute(TableOperations.insertColumnsAfter, always, CellMutations.halve, lazyWire);\n      var mergeCells = execute(TableOperations.mergeCells, always, noop, lazyWire);\n      var unmergeCells = execute(TableOperations.unmergeCells, always, noop, lazyWire);\n      var pasteRowsBefore = execute(TableOperations.pasteRowsBefore, always, noop, lazyWire);\n      var pasteRowsAfter = execute(TableOperations.pasteRowsAfter, always, noop, lazyWire);\n      var pasteCells = execute(TableOperations.pasteCells, always, noop, lazyWire);\n      return {\n        deleteRow: deleteRow,\n        deleteColumn: deleteColumn,\n        insertRowsBefore: insertRowsBefore,\n        insertRowsAfter: insertRowsAfter,\n        insertColumnsBefore: insertColumnsBefore,\n        insertColumnsAfter: insertColumnsAfter,\n        mergeCells: mergeCells,\n        unmergeCells: unmergeCells,\n        pasteRowsBefore: pasteRowsBefore,\n        pasteRowsAfter: pasteRowsAfter,\n        pasteCells: pasteCells\n      };\n    };\n\n    var copyRows = function (table, target, generators) {\n      var list = DetailsList.fromTable(table);\n      var house = Warehouse.generate(list);\n      var details = RunOperation.onCells(house, target);\n      return details.map(function (selectedCells) {\n        var grid = Transitions.toGrid(house, generators, false);\n        var slicedGrid = grid.slice(selectedCells[0].row(), selectedCells[selectedCells.length - 1].row() + selectedCells[selectedCells.length - 1].rowspan());\n        var slicedDetails = RunOperation.toDetailList(slicedGrid, generators);\n        return Redraw.copy(slicedDetails);\n      });\n    };\n    var CopyRows = { copyRows: copyRows };\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    var getTDTHOverallStyle = function (dom, elm, name) {\n      var cells = dom.select('td,th', elm);\n      var firstChildStyle;\n      var checkChildren = function (firstChildStyle, elms) {\n        for (var i = 0; i < elms.length; i++) {\n          var currentStyle = dom.getStyle(elms[i], name);\n          if (typeof firstChildStyle === 'undefined') {\n            firstChildStyle = currentStyle;\n          }\n          if (firstChildStyle !== currentStyle) {\n            return '';\n          }\n        }\n        return firstChildStyle;\n      };\n      firstChildStyle = checkChildren(firstChildStyle, cells);\n      return firstChildStyle;\n    };\n    var applyAlign = function (editor, elm, name) {\n      if (name) {\n        editor.formatter.apply('align' + name, {}, elm);\n      }\n    };\n    var applyVAlign = function (editor, elm, name) {\n      if (name) {\n        editor.formatter.apply('valign' + name, {}, elm);\n      }\n    };\n    var unApplyAlign = function (editor, elm) {\n      global$1.each('left center right'.split(' '), function (name) {\n        editor.formatter.remove('align' + name, {}, elm);\n      });\n    };\n    var unApplyVAlign = function (editor, elm) {\n      global$1.each('top middle bottom'.split(' '), function (name) {\n        editor.formatter.remove('valign' + name, {}, elm);\n      });\n    };\n    var Styles$1 = {\n      applyAlign: applyAlign,\n      applyVAlign: applyVAlign,\n      unApplyAlign: unApplyAlign,\n      unApplyVAlign: unApplyVAlign,\n      getTDTHOverallStyle: getTDTHOverallStyle\n    };\n\n    var buildListItems = function (inputList, itemCallback, startItems) {\n      var appendItems = function (values, output) {\n        output = output || [];\n        global$1.each(values, function (item) {\n          var menuItem = { text: item.text || item.title };\n          if (item.menu) {\n            menuItem.menu = appendItems(item.menu);\n          } else {\n            menuItem.value = item.value;\n            if (itemCallback) {\n              itemCallback(menuItem);\n            }\n          }\n          output.push(menuItem);\n        });\n        return output;\n      };\n      return appendItems(inputList, startItems || []);\n    };\n    function styleFieldHasFocus(e) {\n      return e.control.rootControl.find('#style')[0].getEl().isEqualNode(document.activeElement);\n    }\n    var syncAdvancedStyleFields = function (editor, evt) {\n      if (styleFieldHasFocus(evt)) {\n        updateAdvancedFields(editor, evt);\n      } else {\n        updateStyleField(editor, evt);\n      }\n    };\n    var updateStyleField = function (editor, evt) {\n      var dom = editor.dom;\n      var rootControl = evt.control.rootControl;\n      var data = rootControl.toJSON();\n      var css = dom.parseStyle(data.style);\n      css['border-style'] = data.borderStyle;\n      css['border-color'] = data.borderColor;\n      css['background-color'] = data.backgroundColor;\n      css.width = data.width ? addSizeSuffix(data.width) : '';\n      css.height = data.height ? addSizeSuffix(data.height) : '';\n      rootControl.find('#style').value(dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css))));\n    };\n    var updateAdvancedFields = function (editor, evt) {\n      var dom = editor.dom;\n      var rootControl = evt.control.rootControl;\n      var data = rootControl.toJSON();\n      var css = dom.parseStyle(data.style);\n      rootControl.find('#borderStyle').value(css['border-style'] || '');\n      rootControl.find('#borderColor').value(css['border-color'] || '');\n      rootControl.find('#backgroundColor').value(css['background-color'] || '');\n      rootControl.find('#width').value(css.width || '');\n      rootControl.find('#height').value(css.height || '');\n    };\n    var extractAdvancedStyles = function (dom, elm) {\n      var css = dom.parseStyle(dom.getAttrib(elm, 'style'));\n      var data = {};\n      if (css['border-style']) {\n        data.borderStyle = css['border-style'];\n      }\n      if (css['border-color']) {\n        data.borderColor = css['border-color'];\n      }\n      if (css['background-color']) {\n        data.backgroundColor = css['background-color'];\n      }\n      data.style = dom.serializeStyle(css);\n      return data;\n    };\n    var createStyleForm = function (editor) {\n      var createColorPickAction = function () {\n        var colorPickerCallback = getColorPickerCallback(editor);\n        if (colorPickerCallback) {\n          return function (evt) {\n            return colorPickerCallback.call(editor, function (value) {\n              evt.control.value(value).fire('change');\n            }, evt.control.value());\n          };\n        }\n      };\n      return {\n        title: 'Advanced',\n        type: 'form',\n        defaults: { onchange: curry(updateStyleField, editor) },\n        items: [\n          {\n            label: 'Style',\n            name: 'style',\n            type: 'textbox',\n            onchange: curry(updateAdvancedFields, editor)\n          },\n          {\n            type: 'form',\n            padding: 0,\n            formItemDefaults: {\n              layout: 'grid',\n              alignH: [\n                'start',\n                'right'\n              ]\n            },\n            defaults: { size: 7 },\n            items: [\n              {\n                label: 'Border style',\n                type: 'listbox',\n                name: 'borderStyle',\n                width: 90,\n                onselect: curry(updateStyleField, editor),\n                values: [\n                  {\n                    text: 'Select...',\n                    value: ''\n                  },\n                  {\n                    text: 'Solid',\n                    value: 'solid'\n                  },\n                  {\n                    text: 'Dotted',\n                    value: 'dotted'\n                  },\n                  {\n                    text: 'Dashed',\n                    value: 'dashed'\n                  },\n                  {\n                    text: 'Double',\n                    value: 'double'\n                  },\n                  {\n                    text: 'Groove',\n                    value: 'groove'\n                  },\n                  {\n                    text: 'Ridge',\n                    value: 'ridge'\n                  },\n                  {\n                    text: 'Inset',\n                    value: 'inset'\n                  },\n                  {\n                    text: 'Outset',\n                    value: 'outset'\n                  },\n                  {\n                    text: 'None',\n                    value: 'none'\n                  },\n                  {\n                    text: 'Hidden',\n                    value: 'hidden'\n                  }\n                ]\n              },\n              {\n                label: 'Border color',\n                type: 'colorbox',\n                name: 'borderColor',\n                onaction: createColorPickAction()\n              },\n              {\n                label: 'Background color',\n                type: 'colorbox',\n                name: 'backgroundColor',\n                onaction: createColorPickAction()\n              }\n            ]\n          }\n        ]\n      };\n    };\n    var Helpers = {\n      createStyleForm: createStyleForm,\n      buildListItems: buildListItems,\n      updateStyleField: updateStyleField,\n      extractAdvancedStyles: extractAdvancedStyles,\n      updateAdvancedFields: updateAdvancedFields,\n      syncAdvancedStyleFields: syncAdvancedStyleFields\n    };\n\n    var updateStyles = function (elm, cssText) {\n      delete elm.dataset.mceStyle;\n      elm.style.cssText += ';' + cssText;\n    };\n    var extractDataFromElement = function (editor, elm) {\n      var dom = editor.dom;\n      var data = {\n        width: dom.getStyle(elm, 'width') || dom.getAttrib(elm, 'width'),\n        height: dom.getStyle(elm, 'height') || dom.getAttrib(elm, 'height'),\n        scope: dom.getAttrib(elm, 'scope'),\n        class: dom.getAttrib(elm, 'class'),\n        type: elm.nodeName.toLowerCase(),\n        style: '',\n        align: '',\n        valign: ''\n      };\n      global$1.each('left center right'.split(' '), function (name) {\n        if (editor.formatter.matchNode(elm, 'align' + name)) {\n          data.align = name;\n        }\n      });\n      global$1.each('top middle bottom'.split(' '), function (name) {\n        if (editor.formatter.matchNode(elm, 'valign' + name)) {\n          data.valign = name;\n        }\n      });\n      if (hasAdvancedCellTab(editor)) {\n        global$1.extend(data, Helpers.extractAdvancedStyles(dom, elm));\n      }\n      return data;\n    };\n    var onSubmitCellForm = function (editor, cells, evt) {\n      var dom = editor.dom;\n      var data;\n      function setAttrib(elm, name, value) {\n        if (cells.length === 1 || value) {\n          dom.setAttrib(elm, name, value);\n        }\n      }\n      function setStyle(elm, name, value) {\n        if (cells.length === 1 || value) {\n          dom.setStyle(elm, name, value);\n        }\n      }\n      if (hasAdvancedCellTab(editor)) {\n        Helpers.syncAdvancedStyleFields(editor, evt);\n      }\n      data = evt.control.rootControl.toJSON();\n      editor.undoManager.transact(function () {\n        global$1.each(cells, function (cellElm) {\n          setAttrib(cellElm, 'scope', data.scope);\n          if (cells.length === 1) {\n            setAttrib(cellElm, 'style', data.style);\n          } else {\n            updateStyles(cellElm, data.style);\n          }\n          setAttrib(cellElm, 'class', data.class);\n          setStyle(cellElm, 'width', addSizeSuffix(data.width));\n          setStyle(cellElm, 'height', addSizeSuffix(data.height));\n          if (data.type && cellElm.nodeName.toLowerCase() !== data.type) {\n            cellElm = dom.rename(cellElm, data.type);\n          }\n          if (cells.length === 1) {\n            Styles$1.unApplyAlign(editor, cellElm);\n            Styles$1.unApplyVAlign(editor, cellElm);\n          }\n          if (data.align) {\n            Styles$1.applyAlign(editor, cellElm, data.align);\n          }\n          if (data.valign) {\n            Styles$1.applyVAlign(editor, cellElm, data.valign);\n          }\n        });\n        editor.focus();\n      });\n    };\n    var open = function (editor) {\n      var cellElm, data, classListCtrl, cells = [];\n      cells = editor.dom.select('td[data-mce-selected],th[data-mce-selected]');\n      cellElm = editor.dom.getParent(editor.selection.getStart(), 'td,th');\n      if (!cells.length && cellElm) {\n        cells.push(cellElm);\n      }\n      cellElm = cellElm || cells[0];\n      if (!cellElm) {\n        return;\n      }\n      if (cells.length > 1) {\n        data = {\n          width: '',\n          height: '',\n          scope: '',\n          class: '',\n          align: '',\n          valign: '',\n          style: '',\n          type: cellElm.nodeName.toLowerCase()\n        };\n      } else {\n        data = extractDataFromElement(editor, cellElm);\n      }\n      if (getCellClassList(editor).length > 0) {\n        classListCtrl = {\n          name: 'class',\n          type: 'listbox',\n          label: 'Class',\n          values: Helpers.buildListItems(getCellClassList(editor), function (item) {\n            if (item.value) {\n              item.textStyle = function () {\n                return editor.formatter.getCssText({\n                  block: 'td',\n                  classes: [item.value]\n                });\n              };\n            }\n          })\n        };\n      }\n      var generalCellForm = {\n        type: 'form',\n        layout: 'flex',\n        direction: 'column',\n        labelGapCalc: 'children',\n        padding: 0,\n        items: [\n          {\n            type: 'form',\n            layout: 'grid',\n            columns: 2,\n            labelGapCalc: false,\n            padding: 0,\n            defaults: {\n              type: 'textbox',\n              maxWidth: 50\n            },\n            items: [\n              {\n                label: 'Width',\n                name: 'width',\n                onchange: curry(Helpers.updateStyleField, editor)\n              },\n              {\n                label: 'Height',\n                name: 'height',\n                onchange: curry(Helpers.updateStyleField, editor)\n              },\n              {\n                label: 'Cell type',\n                name: 'type',\n                type: 'listbox',\n                text: 'None',\n                minWidth: 90,\n                maxWidth: null,\n                values: [\n                  {\n                    text: 'Cell',\n                    value: 'td'\n                  },\n                  {\n                    text: 'Header cell',\n                    value: 'th'\n                  }\n                ]\n              },\n              {\n                label: 'Scope',\n                name: 'scope',\n                type: 'listbox',\n                text: 'None',\n                minWidth: 90,\n                maxWidth: null,\n                values: [\n                  {\n                    text: 'None',\n                    value: ''\n                  },\n                  {\n                    text: 'Row',\n                    value: 'row'\n                  },\n                  {\n                    text: 'Column',\n                    value: 'col'\n                  },\n                  {\n                    text: 'Row group',\n                    value: 'rowgroup'\n                  },\n                  {\n                    text: 'Column group',\n                    value: 'colgroup'\n                  }\n                ]\n              },\n              {\n                label: 'H Align',\n                name: 'align',\n                type: 'listbox',\n                text: 'None',\n                minWidth: 90,\n                maxWidth: null,\n                values: [\n                  {\n                    text: 'None',\n                    value: ''\n                  },\n                  {\n                    text: 'Left',\n                    value: 'left'\n                  },\n                  {\n                    text: 'Center',\n                    value: 'center'\n                  },\n                  {\n                    text: 'Right',\n                    value: 'right'\n                  }\n                ]\n              },\n              {\n                label: 'V Align',\n                name: 'valign',\n                type: 'listbox',\n                text: 'None',\n                minWidth: 90,\n                maxWidth: null,\n                values: [\n                  {\n                    text: 'None',\n                    value: ''\n                  },\n                  {\n                    text: 'Top',\n                    value: 'top'\n                  },\n                  {\n                    text: 'Middle',\n                    value: 'middle'\n                  },\n                  {\n                    text: 'Bottom',\n                    value: 'bottom'\n                  }\n                ]\n              }\n            ]\n          },\n          classListCtrl\n        ]\n      };\n      if (hasAdvancedCellTab(editor)) {\n        editor.windowManager.open({\n          title: 'Cell properties',\n          bodyType: 'tabpanel',\n          data: data,\n          body: [\n            {\n              title: 'General',\n              type: 'form',\n              items: generalCellForm\n            },\n            Helpers.createStyleForm(editor)\n          ],\n          onsubmit: curry(onSubmitCellForm, editor, cells)\n        });\n      } else {\n        editor.windowManager.open({\n          title: 'Cell properties',\n          data: data,\n          body: generalCellForm,\n          onsubmit: curry(onSubmitCellForm, editor, cells)\n        });\n      }\n    };\n    var CellDialog = { open: open };\n\n    var extractDataFromElement$1 = function (editor, elm) {\n      var dom = editor.dom;\n      var data = {\n        height: dom.getStyle(elm, 'height') || dom.getAttrib(elm, 'height'),\n        scope: dom.getAttrib(elm, 'scope'),\n        class: dom.getAttrib(elm, 'class'),\n        align: '',\n        style: '',\n        type: elm.parentNode.nodeName.toLowerCase()\n      };\n      global$1.each('left center right'.split(' '), function (name) {\n        if (editor.formatter.matchNode(elm, 'align' + name)) {\n          data.align = name;\n        }\n      });\n      if (hasAdvancedRowTab(editor)) {\n        global$1.extend(data, Helpers.extractAdvancedStyles(dom, elm));\n      }\n      return data;\n    };\n    var switchRowType = function (dom, rowElm, toType) {\n      var tableElm = dom.getParent(rowElm, 'table');\n      var oldParentElm = rowElm.parentNode;\n      var parentElm = dom.select(toType, tableElm)[0];\n      if (!parentElm) {\n        parentElm = dom.create(toType);\n        if (tableElm.firstChild) {\n          if (tableElm.firstChild.nodeName === 'CAPTION') {\n            dom.insertAfter(parentElm, tableElm.firstChild);\n          } else {\n            tableElm.insertBefore(parentElm, tableElm.firstChild);\n          }\n        } else {\n          tableElm.appendChild(parentElm);\n        }\n      }\n      parentElm.appendChild(rowElm);\n      if (!oldParentElm.hasChildNodes()) {\n        dom.remove(oldParentElm);\n      }\n    };\n    function onSubmitRowForm(editor, rows, oldData, evt) {\n      var dom = editor.dom;\n      function setAttrib(elm, name, value) {\n        if (rows.length === 1 || value) {\n          dom.setAttrib(elm, name, value);\n        }\n      }\n      function setStyle(elm, name, value) {\n        if (rows.length === 1 || value) {\n          dom.setStyle(elm, name, value);\n        }\n      }\n      if (hasAdvancedRowTab(editor)) {\n        Helpers.syncAdvancedStyleFields(editor, evt);\n      }\n      var data = evt.control.rootControl.toJSON();\n      editor.undoManager.transact(function () {\n        global$1.each(rows, function (rowElm) {\n          setAttrib(rowElm, 'scope', data.scope);\n          setAttrib(rowElm, 'style', data.style);\n          setAttrib(rowElm, 'class', data.class);\n          setStyle(rowElm, 'height', addSizeSuffix(data.height));\n          if (data.type !== rowElm.parentNode.nodeName.toLowerCase()) {\n            switchRowType(editor.dom, rowElm, data.type);\n          }\n          if (data.align !== oldData.align) {\n            Styles$1.unApplyAlign(editor, rowElm);\n            Styles$1.applyAlign(editor, rowElm, data.align);\n          }\n        });\n        editor.focus();\n      });\n    }\n    var open$1 = function (editor) {\n      var dom = editor.dom;\n      var tableElm, cellElm, rowElm, classListCtrl, data;\n      var rows = [];\n      var generalRowForm;\n      tableElm = dom.getParent(editor.selection.getStart(), 'table');\n      cellElm = dom.getParent(editor.selection.getStart(), 'td,th');\n      global$1.each(tableElm.rows, function (row) {\n        global$1.each(row.cells, function (cell) {\n          if (dom.getAttrib(cell, 'data-mce-selected') || cell === cellElm) {\n            rows.push(row);\n            return false;\n          }\n        });\n      });\n      rowElm = rows[0];\n      if (!rowElm) {\n        return;\n      }\n      if (rows.length > 1) {\n        data = {\n          height: '',\n          scope: '',\n          style: '',\n          class: '',\n          align: '',\n          type: rowElm.parentNode.nodeName.toLowerCase()\n        };\n      } else {\n        data = extractDataFromElement$1(editor, rowElm);\n      }\n      if (getRowClassList(editor).length > 0) {\n        classListCtrl = {\n          name: 'class',\n          type: 'listbox',\n          label: 'Class',\n          values: Helpers.buildListItems(getRowClassList(editor), function (item) {\n            if (item.value) {\n              item.textStyle = function () {\n                return editor.formatter.getCssText({\n                  block: 'tr',\n                  classes: [item.value]\n                });\n              };\n            }\n          })\n        };\n      }\n      generalRowForm = {\n        type: 'form',\n        columns: 2,\n        padding: 0,\n        defaults: { type: 'textbox' },\n        items: [\n          {\n            type: 'listbox',\n            name: 'type',\n            label: 'Row type',\n            text: 'Header',\n            maxWidth: null,\n            values: [\n              {\n                text: 'Header',\n                value: 'thead'\n              },\n              {\n                text: 'Body',\n                value: 'tbody'\n              },\n              {\n                text: 'Footer',\n                value: 'tfoot'\n              }\n            ]\n          },\n          {\n            type: 'listbox',\n            name: 'align',\n            label: 'Alignment',\n            text: 'None',\n            maxWidth: null,\n            values: [\n              {\n                text: 'None',\n                value: ''\n              },\n              {\n                text: 'Left',\n                value: 'left'\n              },\n              {\n                text: 'Center',\n                value: 'center'\n              },\n              {\n                text: 'Right',\n                value: 'right'\n              }\n            ]\n          },\n          {\n            label: 'Height',\n            name: 'height'\n          },\n          classListCtrl\n        ]\n      };\n      if (hasAdvancedRowTab(editor)) {\n        editor.windowManager.open({\n          title: 'Row properties',\n          data: data,\n          bodyType: 'tabpanel',\n          body: [\n            {\n              title: 'General',\n              type: 'form',\n              items: generalRowForm\n            },\n            Helpers.createStyleForm(editor)\n          ],\n          onsubmit: curry(onSubmitRowForm, editor, rows, data)\n        });\n      } else {\n        editor.windowManager.open({\n          title: 'Row properties',\n          data: data,\n          body: generalRowForm,\n          onsubmit: curry(onSubmitRowForm, editor, rows, data)\n        });\n      }\n    };\n    var RowDialog = { open: open$1 };\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.Env');\n\n    var DefaultRenderOptions = {\n      styles: {\n        'border-collapse': 'collapse',\n        width: '100%'\n      },\n      attributes: { border: '1' },\n      percentages: true\n    };\n    var makeTable = function () {\n      return Element$$1.fromTag('table');\n    };\n    var tableBody = function () {\n      return Element$$1.fromTag('tbody');\n    };\n    var tableRow = function () {\n      return Element$$1.fromTag('tr');\n    };\n    var tableHeaderCell = function () {\n      return Element$$1.fromTag('th');\n    };\n    var tableCell = function () {\n      return Element$$1.fromTag('td');\n    };\n    var render$1 = function (rows, columns, rowHeaders, columnHeaders, renderOpts) {\n      if (renderOpts === void 0) {\n        renderOpts = DefaultRenderOptions;\n      }\n      var table = makeTable();\n      setAll$1(table, renderOpts.styles);\n      setAll(table, renderOpts.attributes);\n      var tbody = tableBody();\n      append(table, tbody);\n      var trs = [];\n      for (var i = 0; i < rows; i++) {\n        var tr = tableRow();\n        for (var j = 0; j < columns; j++) {\n          var td = i < rowHeaders || j < columnHeaders ? tableHeaderCell() : tableCell();\n          if (j < columnHeaders) {\n            set(td, 'scope', 'row');\n          }\n          if (i < rowHeaders) {\n            set(td, 'scope', 'col');\n          }\n          append(td, Element$$1.fromTag('br'));\n          if (renderOpts.percentages) {\n            set$1(td, 'width', 100 / columns + '%');\n          }\n          append(tr, td);\n        }\n        trs.push(tr);\n      }\n      append$1(tbody, trs);\n      return table;\n    };\n\n    var get$8 = function (element) {\n      return element.dom().innerHTML;\n    };\n    var getOuter$2 = function (element) {\n      var container = Element$$1.fromTag('div');\n      var clone = Element$$1.fromDom(element.dom().cloneNode(true));\n      append(container, clone);\n      return get$8(container);\n    };\n\n    var placeCaretInCell = function (editor, cell) {\n      editor.selection.select(cell.dom(), true);\n      editor.selection.collapse(true);\n    };\n    var selectFirstCellInTable = function (editor, tableElm) {\n      descendant$1(tableElm, 'td,th').each(curry(placeCaretInCell, editor));\n    };\n    var fireEvents = function (editor, table) {\n      each(descendants$1(table, 'tr'), function (row) {\n        fireNewRow(editor, row.dom());\n        each(descendants$1(row, 'th,td'), function (cell) {\n          fireNewCell(editor, cell.dom());\n        });\n      });\n    };\n    var isPercentage = function (width) {\n      return isString(width) && width.indexOf('%') !== -1;\n    };\n    var insert$1 = function (editor, columns, rows) {\n      var defaultStyles = getDefaultStyles(editor);\n      var options = {\n        styles: defaultStyles,\n        attributes: getDefaultAttributes(editor),\n        percentages: isPercentage(defaultStyles.width) && !isPixelsForced(editor)\n      };\n      var table = render$1(rows, columns, 0, 0, options);\n      set(table, 'data-mce-id', '__mce');\n      var html = getOuter$2(table);\n      editor.insertContent(html);\n      return descendant$1(getBody$1(editor), 'table[data-mce-id=\"__mce\"]').map(function (table) {\n        if (isPixelsForced(editor)) {\n          set$1(table, 'width', get$2(table, 'width'));\n        }\n        remove(table, 'data-mce-id');\n        fireEvents(editor, table);\n        selectFirstCellInTable(editor, table);\n        return table.dom();\n      }).getOr(null);\n    };\n    var InsertTable = { insert: insert$1 };\n\n    function styleTDTH(dom, elm, name, value) {\n      if (elm.tagName === 'TD' || elm.tagName === 'TH') {\n        dom.setStyle(elm, name, value);\n      } else {\n        if (elm.children) {\n          for (var i = 0; i < elm.children.length; i++) {\n            styleTDTH(dom, elm.children[i], name, value);\n          }\n        }\n      }\n    }\n    var extractDataFromElement$2 = function (editor, tableElm) {\n      var dom = editor.dom;\n      var data = {\n        width: dom.getStyle(tableElm, 'width') || dom.getAttrib(tableElm, 'width'),\n        height: dom.getStyle(tableElm, 'height') || dom.getAttrib(tableElm, 'height'),\n        cellspacing: dom.getStyle(tableElm, 'border-spacing') || dom.getAttrib(tableElm, 'cellspacing'),\n        cellpadding: dom.getAttrib(tableElm, 'data-mce-cell-padding') || dom.getAttrib(tableElm, 'cellpadding') || Styles$1.getTDTHOverallStyle(editor.dom, tableElm, 'padding'),\n        border: dom.getAttrib(tableElm, 'data-mce-border') || dom.getAttrib(tableElm, 'border') || Styles$1.getTDTHOverallStyle(editor.dom, tableElm, 'border'),\n        borderColor: dom.getAttrib(tableElm, 'data-mce-border-color'),\n        caption: !!dom.select('caption', tableElm)[0],\n        class: dom.getAttrib(tableElm, 'class')\n      };\n      global$1.each('left center right'.split(' '), function (name) {\n        if (editor.formatter.matchNode(tableElm, 'align' + name)) {\n          data.align = name;\n        }\n      });\n      if (hasAdvancedTableTab(editor)) {\n        global$1.extend(data, Helpers.extractAdvancedStyles(dom, tableElm));\n      }\n      return data;\n    };\n    var applyDataToElement = function (editor, tableElm, data) {\n      var dom = editor.dom;\n      var attrs = {};\n      var styles = {};\n      attrs.class = data.class;\n      styles.height = addSizeSuffix(data.height);\n      if (dom.getAttrib(tableElm, 'width') && !shouldStyleWithCss(editor)) {\n        attrs.width = removePxSuffix(data.width);\n      } else {\n        styles.width = addSizeSuffix(data.width);\n      }\n      if (shouldStyleWithCss(editor)) {\n        styles['border-width'] = addSizeSuffix(data.border);\n        styles['border-spacing'] = addSizeSuffix(data.cellspacing);\n        global$1.extend(attrs, {\n          'data-mce-border-color': data.borderColor,\n          'data-mce-cell-padding': data.cellpadding,\n          'data-mce-border': data.border\n        });\n      } else {\n        global$1.extend(attrs, {\n          border: data.border,\n          cellpadding: data.cellpadding,\n          cellspacing: data.cellspacing\n        });\n      }\n      if (shouldStyleWithCss(editor)) {\n        if (tableElm.children) {\n          for (var i = 0; i < tableElm.children.length; i++) {\n            styleTDTH(dom, tableElm.children[i], {\n              'border-width': addSizeSuffix(data.border),\n              'border-color': data.borderColor,\n              'padding': addSizeSuffix(data.cellpadding)\n            });\n          }\n        }\n      }\n      if (data.style) {\n        global$1.extend(styles, dom.parseStyle(data.style));\n      } else {\n        styles = global$1.extend({}, dom.parseStyle(dom.getAttrib(tableElm, 'style')), styles);\n      }\n      attrs.style = dom.serializeStyle(styles);\n      dom.setAttribs(tableElm, attrs);\n    };\n    var onSubmitTableForm = function (editor, tableElm, evt) {\n      var dom = editor.dom;\n      var captionElm;\n      var data;\n      if (hasAdvancedTableTab(editor)) {\n        Helpers.syncAdvancedStyleFields(editor, evt);\n      }\n      data = evt.control.rootControl.toJSON();\n      if (data.class === false) {\n        delete data.class;\n      }\n      editor.undoManager.transact(function () {\n        if (!tableElm) {\n          tableElm = InsertTable.insert(editor, data.cols || 1, data.rows || 1);\n        }\n        applyDataToElement(editor, tableElm, data);\n        captionElm = dom.select('caption', tableElm)[0];\n        if (captionElm && !data.caption) {\n          dom.remove(captionElm);\n        }\n        if (!captionElm && data.caption) {\n          captionElm = dom.create('caption');\n          captionElm.innerHTML = !global$2.ie ? '<br data-mce-bogus=\"1\"/>' : '\\xA0';\n          tableElm.insertBefore(captionElm, tableElm.firstChild);\n        }\n        Styles$1.unApplyAlign(editor, tableElm);\n        if (data.align) {\n          Styles$1.applyAlign(editor, tableElm, data.align);\n        }\n        editor.focus();\n        editor.addVisual();\n      });\n    };\n    var open$2 = function (editor, isProps) {\n      var dom = editor.dom;\n      var tableElm, colsCtrl, rowsCtrl, classListCtrl, data = {}, generalTableForm;\n      if (isProps === true) {\n        tableElm = dom.getParent(editor.selection.getStart(), 'table');\n        if (tableElm) {\n          data = extractDataFromElement$2(editor, tableElm);\n        }\n      } else {\n        colsCtrl = {\n          label: 'Cols',\n          name: 'cols'\n        };\n        rowsCtrl = {\n          label: 'Rows',\n          name: 'rows'\n        };\n      }\n      if (getTableClassList(editor).length > 0) {\n        if (data.class) {\n          data.class = data.class.replace(/\\s*mce\\-item\\-table\\s*/g, '');\n        }\n        classListCtrl = {\n          name: 'class',\n          type: 'listbox',\n          label: 'Class',\n          values: Helpers.buildListItems(getTableClassList(editor), function (item) {\n            if (item.value) {\n              item.textStyle = function () {\n                return editor.formatter.getCssText({\n                  block: 'table',\n                  classes: [item.value]\n                });\n              };\n            }\n          })\n        };\n      }\n      generalTableForm = {\n        type: 'form',\n        layout: 'flex',\n        direction: 'column',\n        labelGapCalc: 'children',\n        padding: 0,\n        items: [\n          {\n            type: 'form',\n            labelGapCalc: false,\n            padding: 0,\n            layout: 'grid',\n            columns: 2,\n            defaults: {\n              type: 'textbox',\n              maxWidth: 50\n            },\n            items: hasAppearanceOptions(editor) ? [\n              colsCtrl,\n              rowsCtrl,\n              {\n                label: 'Width',\n                name: 'width',\n                onchange: curry(Helpers.updateStyleField, editor)\n              },\n              {\n                label: 'Height',\n                name: 'height',\n                onchange: curry(Helpers.updateStyleField, editor)\n              },\n              {\n                label: 'Cell spacing',\n                name: 'cellspacing'\n              },\n              {\n                label: 'Cell padding',\n                name: 'cellpadding'\n              },\n              {\n                label: 'Border',\n                name: 'border'\n              },\n              {\n                label: 'Caption',\n                name: 'caption',\n                type: 'checkbox'\n              }\n            ] : [\n              colsCtrl,\n              rowsCtrl,\n              {\n                label: 'Width',\n                name: 'width',\n                onchange: curry(Helpers.updateStyleField, editor)\n              },\n              {\n                label: 'Height',\n                name: 'height',\n                onchange: curry(Helpers.updateStyleField, editor)\n              }\n            ]\n          },\n          {\n            label: 'Alignment',\n            name: 'align',\n            type: 'listbox',\n            text: 'None',\n            values: [\n              {\n                text: 'None',\n                value: ''\n              },\n              {\n                text: 'Left',\n                value: 'left'\n              },\n              {\n                text: 'Center',\n                value: 'center'\n              },\n              {\n                text: 'Right',\n                value: 'right'\n              }\n            ]\n          },\n          classListCtrl\n        ]\n      };\n      if (hasAdvancedTableTab(editor)) {\n        editor.windowManager.open({\n          title: 'Table properties',\n          data: data,\n          bodyType: 'tabpanel',\n          body: [\n            {\n              title: 'General',\n              type: 'form',\n              items: generalTableForm\n            },\n            Helpers.createStyleForm(editor)\n          ],\n          onsubmit: curry(onSubmitTableForm, editor, tableElm)\n        });\n      } else {\n        editor.windowManager.open({\n          title: 'Table properties',\n          data: data,\n          body: generalTableForm,\n          onsubmit: curry(onSubmitTableForm, editor, tableElm)\n        });\n      }\n    };\n    var TableDialog = { open: open$2 };\n\n    var each$3 = global$1.each;\n    var registerCommands = function (editor, actions, cellSelection, selections, clipboardRows) {\n      var isRoot = getIsRoot(editor);\n      var eraseTable = function () {\n        var cell = Element$$1.fromDom(editor.dom.getParent(editor.selection.getStart(), 'th,td'));\n        var table = TableLookup.table(cell, isRoot);\n        table.filter(not(isRoot)).each(function (table) {\n          var cursor = Element$$1.fromText('');\n          after(table, cursor);\n          remove$2(table);\n          var rng = editor.dom.createRng();\n          rng.setStart(cursor.dom(), 0);\n          rng.setEnd(cursor.dom(), 0);\n          editor.selection.setRng(rng);\n        });\n      };\n      var getSelectionStartCell = function () {\n        return Element$$1.fromDom(editor.dom.getParent(editor.selection.getStart(), 'th,td'));\n      };\n      var getTableFromCell = function (cell) {\n        return TableLookup.table(cell, isRoot);\n      };\n      var getSize = function (table) {\n        return {\n          width: getPixelWidth$1(table.dom()),\n          height: getPixelWidth$1(table.dom())\n        };\n      };\n      var resizeChange = function (editor, oldSize, table) {\n        var newSize = getSize(table);\n        if (oldSize.width !== newSize.width || oldSize.height !== newSize.height) {\n          fireObjectResizeStart(editor, table.dom(), oldSize.width, oldSize.height);\n          fireObjectResized(editor, table.dom(), newSize.width, newSize.height);\n        }\n      };\n      var actOnSelection = function (execute) {\n        var cell = getSelectionStartCell();\n        var table = getTableFromCell(cell);\n        table.each(function (table) {\n          var targets = TableTargets.forMenu(selections, table, cell);\n          var beforeSize = getSize(table);\n          execute(table, targets).each(function (rng) {\n            resizeChange(editor, beforeSize, table);\n            editor.selection.setRng(rng);\n            editor.focus();\n            cellSelection.clear(table);\n            removeDataStyle(table);\n          });\n        });\n      };\n      var copyRowSelection = function (execute) {\n        var cell = getSelectionStartCell();\n        var table = getTableFromCell(cell);\n        return table.bind(function (table) {\n          var doc = Element$$1.fromDom(editor.getDoc());\n          var targets = TableTargets.forMenu(selections, table, cell);\n          var generators = TableFill.cellOperations(noop, doc, Option.none());\n          return CopyRows.copyRows(table, targets, generators);\n        });\n      };\n      var pasteOnSelection = function (execute) {\n        clipboardRows.get().each(function (rows) {\n          var clonedRows = map(rows, function (row) {\n            return deep(row);\n          });\n          var cell = getSelectionStartCell();\n          var table = getTableFromCell(cell);\n          table.bind(function (table) {\n            var doc = Element$$1.fromDom(editor.getDoc());\n            var generators = TableFill.paste(doc);\n            var targets = TableTargets.pasteRows(selections, table, cell, clonedRows, generators);\n            execute(table, targets).each(function (rng) {\n              editor.selection.setRng(rng);\n              editor.focus();\n              cellSelection.clear(table);\n            });\n          });\n        });\n      };\n      each$3({\n        mceTableSplitCells: function () {\n          actOnSelection(actions.unmergeCells);\n        },\n        mceTableMergeCells: function () {\n          actOnSelection(actions.mergeCells);\n        },\n        mceTableInsertRowBefore: function () {\n          actOnSelection(actions.insertRowsBefore);\n        },\n        mceTableInsertRowAfter: function () {\n          actOnSelection(actions.insertRowsAfter);\n        },\n        mceTableInsertColBefore: function () {\n          actOnSelection(actions.insertColumnsBefore);\n        },\n        mceTableInsertColAfter: function () {\n          actOnSelection(actions.insertColumnsAfter);\n        },\n        mceTableDeleteCol: function () {\n          actOnSelection(actions.deleteColumn);\n        },\n        mceTableDeleteRow: function () {\n          actOnSelection(actions.deleteRow);\n        },\n        mceTableCutRow: function (grid) {\n          clipboardRows.set(copyRowSelection());\n          actOnSelection(actions.deleteRow);\n        },\n        mceTableCopyRow: function (grid) {\n          clipboardRows.set(copyRowSelection());\n        },\n        mceTablePasteRowBefore: function (grid) {\n          pasteOnSelection(actions.pasteRowsBefore);\n        },\n        mceTablePasteRowAfter: function (grid) {\n          pasteOnSelection(actions.pasteRowsAfter);\n        },\n        mceTableDelete: eraseTable\n      }, function (func, name) {\n        editor.addCommand(name, func);\n      });\n      each$3({\n        mceInsertTable: curry(TableDialog.open, editor),\n        mceTableProps: curry(TableDialog.open, editor, true),\n        mceTableRowProps: curry(RowDialog.open, editor),\n        mceTableCellProps: curry(CellDialog.open, editor)\n      }, function (func, name) {\n        editor.addCommand(name, function (ui, val) {\n          func(val);\n        });\n      });\n    };\n    var Commands = { registerCommands: registerCommands };\n\n    var only$1 = function (element) {\n      var parent = Option.from(element.dom().documentElement).map(Element$$1.fromDom).getOr(element);\n      return {\n        parent: constant(parent),\n        view: constant(element),\n        origin: constant(Position(0, 0))\n      };\n    };\n    var detached = function (editable, chrome) {\n      var origin = curry(absolute, chrome);\n      return {\n        parent: constant(chrome),\n        view: constant(editable),\n        origin: origin\n      };\n    };\n    var body$1 = function (editable, chrome) {\n      return {\n        parent: constant(chrome),\n        view: constant(editable),\n        origin: constant(Position(0, 0))\n      };\n    };\n    var ResizeWire = {\n      only: only$1,\n      detached: detached,\n      body: body$1\n    };\n\n    function Event (fields) {\n      var struct = Immutable.apply(null, fields);\n      var handlers = [];\n      var bind$$1 = function (handler) {\n        if (handler === undefined) {\n          throw 'Event bind error: undefined handler';\n        }\n        handlers.push(handler);\n      };\n      var unbind = function (handler) {\n        handlers = filter(handlers, function (h) {\n          return h !== handler;\n        });\n      };\n      var trigger = function () {\n        var event = struct.apply(null, arguments);\n        each(handlers, function (handler) {\n          handler(event);\n        });\n      };\n      return {\n        bind: bind$$1,\n        unbind: unbind,\n        trigger: trigger\n      };\n    }\n\n    var create = function (typeDefs) {\n      var registry = map$1(typeDefs, function (event) {\n        return {\n          bind: event.bind,\n          unbind: event.unbind\n        };\n      });\n      var trigger = map$1(typeDefs, function (event) {\n        return event.trigger;\n      });\n      return {\n        registry: registry,\n        trigger: trigger\n      };\n    };\n    var Events = { create: create };\n\n    var mode = exactly([\n      'compare',\n      'extract',\n      'mutate',\n      'sink'\n    ]);\n    var sink = exactly([\n      'element',\n      'start',\n      'stop',\n      'destroy'\n    ]);\n    var api$3 = exactly([\n      'forceDrop',\n      'drop',\n      'move',\n      'delayDrop'\n    ]);\n    var DragApis = {\n      mode: mode,\n      sink: sink,\n      api: api$3\n    };\n\n    var styles$1 = css('ephox-dragster');\n    var Styles$2 = { resolve: styles$1.resolve };\n\n    function Blocker (options) {\n      var settings = merge$1({ 'layerClass': Styles$2.resolve('blocker') }, options);\n      var div = Element$$1.fromTag('div');\n      set(div, 'role', 'presentation');\n      setAll$1(div, {\n        position: 'fixed',\n        left: '0px',\n        top: '0px',\n        width: '100%',\n        height: '100%'\n      });\n      add$2(div, Styles$2.resolve('blocker'));\n      add$2(div, settings.layerClass);\n      var element = function () {\n        return div;\n      };\n      var destroy = function () {\n        remove$2(div);\n      };\n      return {\n        element: element,\n        destroy: destroy\n      };\n    }\n\n    var mkEvent = function (target, x, y, stop, prevent, kill, raw) {\n      return {\n        'target': constant(target),\n        'x': constant(x),\n        'y': constant(y),\n        'stop': stop,\n        'prevent': prevent,\n        'kill': kill,\n        'raw': constant(raw)\n      };\n    };\n    var handle = function (filter, handler) {\n      return function (rawEvent) {\n        if (!filter(rawEvent))\n          return;\n        var target = Element$$1.fromDom(rawEvent.target);\n        var stop = function () {\n          rawEvent.stopPropagation();\n        };\n        var prevent = function () {\n          rawEvent.preventDefault();\n        };\n        var kill = compose(prevent, stop);\n        var evt = mkEvent(target, rawEvent.clientX, rawEvent.clientY, stop, prevent, kill, rawEvent);\n        handler(evt);\n      };\n    };\n    var binder = function (element, event, filter, handler, useCapture) {\n      var wrapped = handle(filter, handler);\n      element.dom().addEventListener(event, wrapped, useCapture);\n      return { unbind: curry(unbind, element, event, wrapped, useCapture) };\n    };\n    var bind$1 = function (element, event, filter, handler) {\n      return binder(element, event, filter, handler, false);\n    };\n    var unbind = function (element, event, handler, useCapture) {\n      element.dom().removeEventListener(event, handler, useCapture);\n    };\n\n    var filter$1 = constant(true);\n    var bind$2 = function (element, event, handler) {\n      return bind$1(element, event, filter$1, handler);\n    };\n\n    var compare = function (old, nu) {\n      return Position(nu.left() - old.left(), nu.top() - old.top());\n    };\n    var extract$1 = function (event) {\n      return Option.some(Position(event.x(), event.y()));\n    };\n    var mutate$1 = function (mutation, info) {\n      mutation.mutate(info.left(), info.top());\n    };\n    var sink$1 = function (dragApi, settings) {\n      var blocker = Blocker(settings);\n      var mdown = bind$2(blocker.element(), 'mousedown', dragApi.forceDrop);\n      var mup = bind$2(blocker.element(), 'mouseup', dragApi.drop);\n      var mmove = bind$2(blocker.element(), 'mousemove', dragApi.move);\n      var mout = bind$2(blocker.element(), 'mouseout', dragApi.delayDrop);\n      var destroy = function () {\n        blocker.destroy();\n        mup.unbind();\n        mmove.unbind();\n        mout.unbind();\n        mdown.unbind();\n      };\n      var start = function (parent) {\n        append(parent, blocker.element());\n      };\n      var stop = function () {\n        remove$2(blocker.element());\n      };\n      return DragApis.sink({\n        element: blocker.element,\n        start: start,\n        stop: stop,\n        destroy: destroy\n      });\n    };\n    var MouseDrag = DragApis.mode({\n      compare: compare,\n      extract: extract$1,\n      sink: sink$1,\n      mutate: mutate$1\n    });\n\n    function InDrag () {\n      var previous = Option.none();\n      var reset = function () {\n        previous = Option.none();\n      };\n      var update = function (mode, nu) {\n        var result = previous.map(function (old) {\n          return mode.compare(old, nu);\n        });\n        previous = Option.some(nu);\n        return result;\n      };\n      var onEvent = function (event, mode) {\n        var dataOption = mode.extract(event);\n        dataOption.each(function (data) {\n          var offset = update(mode, data);\n          offset.each(function (d) {\n            events.trigger.move(d);\n          });\n        });\n      };\n      var events = Events.create({ move: Event(['info']) });\n      return {\n        onEvent: onEvent,\n        reset: reset,\n        events: events.registry\n      };\n    }\n\n    function NoDrag (anchor) {\n      var onEvent = function (event, mode) {\n      };\n      return {\n        onEvent: onEvent,\n        reset: noop\n      };\n    }\n\n    function Movement () {\n      var noDragState = NoDrag();\n      var inDragState = InDrag();\n      var dragState = noDragState;\n      var on = function () {\n        dragState.reset();\n        dragState = inDragState;\n      };\n      var off = function () {\n        dragState.reset();\n        dragState = noDragState;\n      };\n      var onEvent = function (event, mode) {\n        dragState.onEvent(event, mode);\n      };\n      var isOn = function () {\n        return dragState === inDragState;\n      };\n      return {\n        on: on,\n        off: off,\n        isOn: isOn,\n        onEvent: onEvent,\n        events: inDragState.events\n      };\n    }\n\n    var last$3 = function (fn, rate) {\n      var timer = null;\n      var cancel = function () {\n        if (timer !== null) {\n          clearTimeout(timer);\n          timer = null;\n        }\n      };\n      var throttle = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          args[_i] = arguments[_i];\n        }\n        if (timer !== null)\n          clearTimeout(timer);\n        timer = setTimeout(function () {\n          fn.apply(null, args);\n          timer = null;\n        }, rate);\n      };\n      return {\n        cancel: cancel,\n        throttle: throttle\n      };\n    };\n\n    var setup = function (mutation, mode, settings) {\n      var active = false;\n      var events = Events.create({\n        start: Event([]),\n        stop: Event([])\n      });\n      var movement = Movement();\n      var drop = function () {\n        sink.stop();\n        if (movement.isOn()) {\n          movement.off();\n          events.trigger.stop();\n        }\n      };\n      var throttledDrop = last$3(drop, 200);\n      var go = function (parent) {\n        sink.start(parent);\n        movement.on();\n        events.trigger.start();\n      };\n      var mousemove = function (event, ui) {\n        throttledDrop.cancel();\n        movement.onEvent(event, mode);\n      };\n      movement.events.move.bind(function (event) {\n        mode.mutate(mutation, event.info());\n      });\n      var on = function () {\n        active = true;\n      };\n      var off = function () {\n        active = false;\n      };\n      var runIfActive = function (f) {\n        return function () {\n          var args = Array.prototype.slice.call(arguments, 0);\n          if (active) {\n            return f.apply(null, args);\n          }\n        };\n      };\n      var sink = mode.sink(DragApis.api({\n        forceDrop: drop,\n        drop: runIfActive(drop),\n        move: runIfActive(mousemove),\n        delayDrop: runIfActive(throttledDrop.throttle)\n      }), settings);\n      var destroy = function () {\n        sink.destroy();\n      };\n      return {\n        element: sink.element,\n        go: go,\n        on: on,\n        off: off,\n        destroy: destroy,\n        events: events.registry\n      };\n    };\n    var Dragging = { setup: setup };\n\n    var transform$1 = function (mutation, options) {\n      var settings = options !== undefined ? options : {};\n      var mode = settings.mode !== undefined ? settings.mode : MouseDrag;\n      return Dragging.setup(mutation, mode, options);\n    };\n    var Dragger = { transform: transform$1 };\n\n    function Mutation () {\n      var events = Events.create({\n        'drag': Event([\n          'xDelta',\n          'yDelta'\n        ])\n      });\n      var mutate = function (x, y) {\n        events.trigger.drag(x, y);\n      };\n      return {\n        mutate: mutate,\n        events: events.registry\n      };\n    }\n\n    function BarMutation () {\n      var events = Events.create({\n        drag: Event([\n          'xDelta',\n          'yDelta',\n          'target'\n        ])\n      });\n      var target = Option.none();\n      var delegate = Mutation();\n      delegate.events.drag.bind(function (event) {\n        target.each(function (t) {\n          events.trigger.drag(event.xDelta(), event.yDelta(), t);\n        });\n      });\n      var assign = function (t) {\n        target = Option.some(t);\n      };\n      var get = function () {\n        return target;\n      };\n      return {\n        assign: assign,\n        get: get,\n        mutate: delegate.mutate,\n        events: events.registry\n      };\n    }\n\n    var closest$2 = function (scope, selector, isRoot) {\n      return closest$1(scope, selector, isRoot).isSome();\n    };\n\n    var resizeBarDragging = Styles.resolve('resizer-bar-dragging');\n    function BarManager (wire, direction, hdirection) {\n      var mutation = BarMutation();\n      var resizing = Dragger.transform(mutation, {});\n      var hoverTable = Option.none();\n      var getResizer = function (element, type$$1) {\n        return Option.from(get$1(element, type$$1));\n      };\n      mutation.events.drag.bind(function (event) {\n        getResizer(event.target(), 'data-row').each(function (_dataRow) {\n          var currentRow = CellUtils.getInt(event.target(), 'top');\n          set$1(event.target(), 'top', currentRow + event.yDelta() + 'px');\n        });\n        getResizer(event.target(), 'data-column').each(function (_dataCol) {\n          var currentCol = CellUtils.getInt(event.target(), 'left');\n          set$1(event.target(), 'left', currentCol + event.xDelta() + 'px');\n        });\n      });\n      var getDelta = function (target, direction) {\n        var newX = CellUtils.getInt(target, direction);\n        var oldX = parseInt(get$1(target, 'data-initial-' + direction), 10);\n        return newX - oldX;\n      };\n      resizing.events.stop.bind(function () {\n        mutation.get().each(function (target) {\n          hoverTable.each(function (table) {\n            getResizer(target, 'data-row').each(function (row) {\n              var delta = getDelta(target, 'top');\n              remove(target, 'data-initial-top');\n              events.trigger.adjustHeight(table, delta, parseInt(row, 10));\n            });\n            getResizer(target, 'data-column').each(function (column) {\n              var delta = getDelta(target, 'left');\n              remove(target, 'data-initial-left');\n              events.trigger.adjustWidth(table, delta, parseInt(column, 10));\n            });\n            Bars.refresh(wire, table, hdirection, direction);\n          });\n        });\n      });\n      var handler = function (target, direction) {\n        events.trigger.startAdjust();\n        mutation.assign(target);\n        set(target, 'data-initial-' + direction, parseInt(get$2(target, direction), 10));\n        add$2(target, resizeBarDragging);\n        set$1(target, 'opacity', '0.2');\n        resizing.go(wire.parent());\n      };\n      var mousedown = bind$2(wire.parent(), 'mousedown', function (event) {\n        if (Bars.isRowBar(event.target()))\n          handler(event.target(), 'top');\n        if (Bars.isColBar(event.target()))\n          handler(event.target(), 'left');\n      });\n      var isRoot = function (e) {\n        return eq(e, wire.view());\n      };\n      var mouseover = bind$2(wire.view(), 'mouseover', function (event) {\n        if (name(event.target()) === 'table' || closest$2(event.target(), 'table', isRoot)) {\n          hoverTable = name(event.target()) === 'table' ? Option.some(event.target()) : ancestor$1(event.target(), 'table', isRoot);\n          hoverTable.each(function (ht) {\n            Bars.refresh(wire, ht, hdirection, direction);\n          });\n        } else if (inBody(event.target())) {\n          Bars.destroy(wire);\n        }\n      });\n      var destroy = function () {\n        mousedown.unbind();\n        mouseover.unbind();\n        resizing.destroy();\n        Bars.destroy(wire);\n      };\n      var refresh = function (tbl) {\n        Bars.refresh(wire, tbl, hdirection, direction);\n      };\n      var events = Events.create({\n        adjustHeight: Event([\n          'table',\n          'delta',\n          'row'\n        ]),\n        adjustWidth: Event([\n          'table',\n          'delta',\n          'column'\n        ]),\n        startAdjust: Event([])\n      });\n      return {\n        destroy: destroy,\n        refresh: refresh,\n        on: resizing.on,\n        off: resizing.off,\n        hideBars: curry(Bars.hide, wire),\n        showBars: curry(Bars.show, wire),\n        events: events.registry\n      };\n    }\n\n    function TableResize (wire, vdirection) {\n      var hdirection = BarPositions.height;\n      var manager = BarManager(wire, vdirection, hdirection);\n      var events = Events.create({\n        beforeResize: Event(['table']),\n        afterResize: Event(['table']),\n        startDrag: Event([])\n      });\n      manager.events.adjustHeight.bind(function (event) {\n        events.trigger.beforeResize(event.table());\n        var delta = hdirection.delta(event.delta(), event.table());\n        Adjustments.adjustHeight(event.table(), delta, event.row(), hdirection);\n        events.trigger.afterResize(event.table());\n      });\n      manager.events.startAdjust.bind(function (event) {\n        events.trigger.startDrag();\n      });\n      manager.events.adjustWidth.bind(function (event) {\n        events.trigger.beforeResize(event.table());\n        var delta = vdirection.delta(event.delta(), event.table());\n        Adjustments.adjustWidth(event.table(), delta, event.column(), vdirection);\n        events.trigger.afterResize(event.table());\n      });\n      return {\n        on: manager.on,\n        off: manager.off,\n        hideBars: manager.hideBars,\n        showBars: manager.showBars,\n        destroy: manager.destroy,\n        events: events.registry\n      };\n    }\n\n    var createContainer = function () {\n      var container = Element$$1.fromTag('div');\n      setAll$1(container, {\n        position: 'static',\n        height: '0',\n        width: '0',\n        padding: '0',\n        margin: '0',\n        border: '0'\n      });\n      append(body(), container);\n      return container;\n    };\n    var get$9 = function (editor, container) {\n      return editor.inline ? ResizeWire.body(getBody$1(editor), createContainer()) : ResizeWire.only(Element$$1.fromDom(editor.getDoc()));\n    };\n    var remove$6 = function (editor, wire) {\n      if (editor.inline) {\n        remove$2(wire.parent());\n      }\n    };\n    var TableWire = {\n      get: get$9,\n      remove: remove$6\n    };\n\n    var ResizeHandler = function (editor) {\n      var selectionRng = Option.none();\n      var resize = Option.none();\n      var wire = Option.none();\n      var percentageBasedSizeRegex = /(\\d+(\\.\\d+)?)%/;\n      var startW, startRawW;\n      var isTable = function (elm) {\n        return elm.nodeName === 'TABLE';\n      };\n      var getRawWidth = function (elm) {\n        return editor.dom.getStyle(elm, 'width') || editor.dom.getAttrib(elm, 'width');\n      };\n      var lazyResize = function () {\n        return resize;\n      };\n      var lazyWire = function () {\n        return wire.getOr(ResizeWire.only(Element$$1.fromDom(editor.getBody())));\n      };\n      var destroy = function () {\n        resize.each(function (sz) {\n          sz.destroy();\n        });\n        wire.each(function (w) {\n          TableWire.remove(editor, w);\n        });\n      };\n      editor.on('init', function () {\n        var direction = TableDirection(Direction.directionAt);\n        var rawWire = TableWire.get(editor);\n        wire = Option.some(rawWire);\n        if (hasObjectResizing(editor) && hasTableResizeBars(editor)) {\n          var sz = TableResize(rawWire, direction);\n          sz.on();\n          sz.events.startDrag.bind(function (event) {\n            selectionRng = Option.some(editor.selection.getRng());\n          });\n          sz.events.beforeResize.bind(function (event) {\n            var rawTable = event.table().dom();\n            fireObjectResizeStart(editor, rawTable, getPixelWidth$1(rawTable), getPixelHeight(rawTable));\n          });\n          sz.events.afterResize.bind(function (event) {\n            var table = event.table();\n            var rawTable = table.dom();\n            removeDataStyle(table);\n            selectionRng.each(function (rng) {\n              editor.selection.setRng(rng);\n              editor.focus();\n            });\n            fireObjectResized(editor, rawTable, getPixelWidth$1(rawTable), getPixelHeight(rawTable));\n            editor.undoManager.add();\n          });\n          resize = Option.some(sz);\n        }\n      });\n      editor.on('ObjectResizeStart', function (e) {\n        var targetElm = e.target;\n        if (isTable(targetElm)) {\n          startW = e.width;\n          startRawW = getRawWidth(targetElm);\n        }\n      });\n      editor.on('ObjectResized', function (e) {\n        var targetElm = e.target;\n        if (isTable(targetElm)) {\n          var table = targetElm;\n          if (percentageBasedSizeRegex.test(startRawW)) {\n            var percentW = parseFloat(percentageBasedSizeRegex.exec(startRawW)[1]);\n            var targetPercentW = e.width * percentW / startW;\n            editor.dom.setStyle(table, 'width', targetPercentW + '%');\n          } else {\n            var newCellSizes_1 = [];\n            global$1.each(table.rows, function (row) {\n              global$1.each(row.cells, function (cell) {\n                var width = editor.dom.getStyle(cell, 'width', true);\n                newCellSizes_1.push({\n                  cell: cell,\n                  width: width\n                });\n              });\n            });\n            global$1.each(newCellSizes_1, function (newCellSize) {\n              editor.dom.setStyle(newCellSize.cell, 'width', newCellSize.width);\n              editor.dom.setAttrib(newCellSize.cell, 'width', null);\n            });\n          }\n        }\n      });\n      return {\n        lazyResize: lazyResize,\n        lazyWire: lazyWire,\n        destroy: destroy\n      };\n    };\n\n    var none$2 = function (current) {\n      return folder$1(function (n, f, m, l) {\n        return n(current);\n      });\n    };\n    var first$5 = function (current) {\n      return folder$1(function (n, f, m, l) {\n        return f(current);\n      });\n    };\n    var middle$1 = function (current, target) {\n      return folder$1(function (n, f, m, l) {\n        return m(current, target);\n      });\n    };\n    var last$4 = function (current) {\n      return folder$1(function (n, f, m, l) {\n        return l(current);\n      });\n    };\n    var folder$1 = function (fold) {\n      return { fold: fold };\n    };\n    var CellLocation = {\n      none: none$2,\n      first: first$5,\n      middle: middle$1,\n      last: last$4\n    };\n\n    var detect$4 = function (current, isRoot) {\n      return TableLookup.table(current, isRoot).bind(function (table) {\n        var all = TableLookup.cells(table);\n        var index = findIndex(all, function (x) {\n          return eq(current, x);\n        });\n        return index.map(function (ind) {\n          return {\n            index: constant(ind),\n            all: constant(all)\n          };\n        });\n      });\n    };\n    var next = function (current, isRoot) {\n      var detection = detect$4(current, isRoot);\n      return detection.fold(function () {\n        return CellLocation.none(current);\n      }, function (info) {\n        return info.index() + 1 < info.all().length ? CellLocation.middle(current, info.all()[info.index() + 1]) : CellLocation.last(current);\n      });\n    };\n    var prev = function (current, isRoot) {\n      var detection = detect$4(current, isRoot);\n      return detection.fold(function () {\n        return CellLocation.none();\n      }, function (info) {\n        return info.index() - 1 >= 0 ? CellLocation.middle(current, info.all()[info.index() - 1]) : CellLocation.first(current);\n      });\n    };\n    var CellNavigation = {\n      next: next,\n      prev: prev\n    };\n\n    var adt = Adt.generate([\n      { 'before': ['element'] },\n      {\n        'on': [\n          'element',\n          'offset'\n        ]\n      },\n      { after: ['element'] }\n    ]);\n    var cata$1 = function (subject, onBefore, onOn, onAfter) {\n      return subject.fold(onBefore, onOn, onAfter);\n    };\n    var getStart = function (situ) {\n      return situ.fold(identity, identity, identity);\n    };\n    var before$2 = adt.before;\n    var on = adt.on;\n    var after$2 = adt.after;\n    var Situ = {\n      before: before$2,\n      on: on,\n      after: after$2,\n      cata: cata$1,\n      getStart: getStart\n    };\n\n    var type$2 = Adt.generate([\n      { domRange: ['rng'] },\n      {\n        relative: [\n          'startSitu',\n          'finishSitu'\n        ]\n      },\n      {\n        exact: [\n          'start',\n          'soffset',\n          'finish',\n          'foffset'\n        ]\n      }\n    ]);\n    var range$2 = Immutable('start', 'soffset', 'finish', 'foffset');\n    var getStart$1 = function (selection) {\n      return selection.match({\n        domRange: function (rng) {\n          return Element$$1.fromDom(rng.startContainer);\n        },\n        relative: function (startSitu, finishSitu) {\n          return Situ.getStart(startSitu);\n        },\n        exact: function (start, soffset, finish, foffset) {\n          return start;\n        }\n      });\n    };\n    var getWin = function (selection) {\n      var start = getStart$1(selection);\n      return defaultView(start);\n    };\n    var domRange = type$2.domRange;\n    var relative$1 = type$2.relative;\n    var exact = type$2.exact;\n\n    var makeRange = function (start, soffset, finish, foffset) {\n      var doc = owner(start);\n      var rng = doc.dom().createRange();\n      rng.setStart(start.dom(), soffset);\n      rng.setEnd(finish.dom(), foffset);\n      return rng;\n    };\n    var after$3 = function (start, soffset, finish, foffset) {\n      var r = makeRange(start, soffset, finish, foffset);\n      var same = eq(start, finish) && soffset === foffset;\n      return r.collapsed && !same;\n    };\n\n    var selectNodeContents = function (win, element) {\n      var rng = win.document.createRange();\n      selectNodeContentsUsing(rng, element);\n      return rng;\n    };\n    var selectNodeContentsUsing = function (rng, element) {\n      rng.selectNodeContents(element.dom());\n    };\n    var setStart = function (rng, situ) {\n      situ.fold(function (e) {\n        rng.setStartBefore(e.dom());\n      }, function (e, o) {\n        rng.setStart(e.dom(), o);\n      }, function (e) {\n        rng.setStartAfter(e.dom());\n      });\n    };\n    var setFinish = function (rng, situ) {\n      situ.fold(function (e) {\n        rng.setEndBefore(e.dom());\n      }, function (e, o) {\n        rng.setEnd(e.dom(), o);\n      }, function (e) {\n        rng.setEndAfter(e.dom());\n      });\n    };\n    var relativeToNative = function (win, startSitu, finishSitu) {\n      var range = win.document.createRange();\n      setStart(range, startSitu);\n      setFinish(range, finishSitu);\n      return range;\n    };\n    var exactToNative = function (win, start, soffset, finish, foffset) {\n      var rng = win.document.createRange();\n      rng.setStart(start.dom(), soffset);\n      rng.setEnd(finish.dom(), foffset);\n      return rng;\n    };\n    var toRect = function (rect) {\n      return {\n        left: constant(rect.left),\n        top: constant(rect.top),\n        right: constant(rect.right),\n        bottom: constant(rect.bottom),\n        width: constant(rect.width),\n        height: constant(rect.height)\n      };\n    };\n    var getFirstRect = function (rng) {\n      var rects = rng.getClientRects();\n      var rect = rects.length > 0 ? rects[0] : rng.getBoundingClientRect();\n      return rect.width > 0 || rect.height > 0 ? Option.some(rect).map(toRect) : Option.none();\n    };\n\n    var adt$1 = Adt.generate([\n      {\n        ltr: [\n          'start',\n          'soffset',\n          'finish',\n          'foffset'\n        ]\n      },\n      {\n        rtl: [\n          'start',\n          'soffset',\n          'finish',\n          'foffset'\n        ]\n      }\n    ]);\n    var fromRange = function (win, type, range) {\n      return type(Element$$1.fromDom(range.startContainer), range.startOffset, Element$$1.fromDom(range.endContainer), range.endOffset);\n    };\n    var getRanges = function (win, selection) {\n      return selection.match({\n        domRange: function (rng) {\n          return {\n            ltr: constant(rng),\n            rtl: Option.none\n          };\n        },\n        relative: function (startSitu, finishSitu) {\n          return {\n            ltr: cached(function () {\n              return relativeToNative(win, startSitu, finishSitu);\n            }),\n            rtl: cached(function () {\n              return Option.some(relativeToNative(win, finishSitu, startSitu));\n            })\n          };\n        },\n        exact: function (start, soffset, finish, foffset) {\n          return {\n            ltr: cached(function () {\n              return exactToNative(win, start, soffset, finish, foffset);\n            }),\n            rtl: cached(function () {\n              return Option.some(exactToNative(win, finish, foffset, start, soffset));\n            })\n          };\n        }\n      });\n    };\n    var doDiagnose = function (win, ranges) {\n      var rng = ranges.ltr();\n      if (rng.collapsed) {\n        var reversed = ranges.rtl().filter(function (rev) {\n          return rev.collapsed === false;\n        });\n        return reversed.map(function (rev) {\n          return adt$1.rtl(Element$$1.fromDom(rev.endContainer), rev.endOffset, Element$$1.fromDom(rev.startContainer), rev.startOffset);\n        }).getOrThunk(function () {\n          return fromRange(win, adt$1.ltr, rng);\n        });\n      } else {\n        return fromRange(win, adt$1.ltr, rng);\n      }\n    };\n    var diagnose = function (win, selection) {\n      var ranges = getRanges(win, selection);\n      return doDiagnose(win, ranges);\n    };\n    var asLtrRange = function (win, selection) {\n      var diagnosis = diagnose(win, selection);\n      return diagnosis.match({\n        ltr: function (start, soffset, finish, foffset) {\n          var rng = win.document.createRange();\n          rng.setStart(start.dom(), soffset);\n          rng.setEnd(finish.dom(), foffset);\n          return rng;\n        },\n        rtl: function (start, soffset, finish, foffset) {\n          var rng = win.document.createRange();\n          rng.setStart(finish.dom(), foffset);\n          rng.setEnd(start.dom(), soffset);\n          return rng;\n        }\n      });\n    };\n    var ltr$2 = adt$1.ltr;\n    var rtl$2 = adt$1.rtl;\n\n    var searchForPoint = function (rectForOffset, x, y, maxX, length) {\n      if (length === 0)\n        return 0;\n      else if (x === maxX)\n        return length - 1;\n      var xDelta = maxX;\n      for (var i = 1; i < length; i++) {\n        var rect = rectForOffset(i);\n        var curDeltaX = Math.abs(x - rect.left);\n        if (y <= rect.bottom) {\n          if (y < rect.top || curDeltaX > xDelta) {\n            return i - 1;\n          } else {\n            xDelta = curDeltaX;\n          }\n        }\n      }\n      return 0;\n    };\n    var inRect = function (rect, x, y) {\n      return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;\n    };\n\n    var locateOffset = function (doc, textnode, x, y, rect) {\n      var rangeForOffset = function (offset) {\n        var r = doc.dom().createRange();\n        r.setStart(textnode.dom(), offset);\n        r.collapse(true);\n        return r;\n      };\n      var rectForOffset = function (offset) {\n        var r = rangeForOffset(offset);\n        return r.getBoundingClientRect();\n      };\n      var length = get$3(textnode).length;\n      var offset = searchForPoint(rectForOffset, x, y, rect.right, length);\n      return rangeForOffset(offset);\n    };\n    var locate = function (doc, node, x, y) {\n      var r = doc.dom().createRange();\n      r.selectNode(node.dom());\n      var rects = r.getClientRects();\n      var foundRect = findMap(rects, function (rect) {\n        return inRect(rect, x, y) ? Option.some(rect) : Option.none();\n      });\n      return foundRect.map(function (rect) {\n        return locateOffset(doc, node, x, y, rect);\n      });\n    };\n\n    var searchInChildren = function (doc, node, x, y) {\n      var r = doc.dom().createRange();\n      var nodes = children(node);\n      return findMap(nodes, function (n) {\n        r.selectNode(n.dom());\n        return inRect(r.getBoundingClientRect(), x, y) ? locateNode(doc, n, x, y) : Option.none();\n      });\n    };\n    var locateNode = function (doc, node, x, y) {\n      var locator = isText(node) ? locate : searchInChildren;\n      return locator(doc, node, x, y);\n    };\n    var locate$1 = function (doc, node, x, y) {\n      var r = doc.dom().createRange();\n      r.selectNode(node.dom());\n      var rect = r.getBoundingClientRect();\n      var boundedX = Math.max(rect.left, Math.min(rect.right, x));\n      var boundedY = Math.max(rect.top, Math.min(rect.bottom, y));\n      return locateNode(doc, node, boundedX, boundedY);\n    };\n\n    var COLLAPSE_TO_LEFT = true;\n    var COLLAPSE_TO_RIGHT = false;\n    var getCollapseDirection = function (rect, x) {\n      return x - rect.left < rect.right - x ? COLLAPSE_TO_LEFT : COLLAPSE_TO_RIGHT;\n    };\n    var createCollapsedNode = function (doc, target, collapseDirection) {\n      var r = doc.dom().createRange();\n      r.selectNode(target.dom());\n      r.collapse(collapseDirection);\n      return r;\n    };\n    var locateInElement = function (doc, node, x) {\n      var cursorRange = doc.dom().createRange();\n      cursorRange.selectNode(node.dom());\n      var rect = cursorRange.getBoundingClientRect();\n      var collapseDirection = getCollapseDirection(rect, x);\n      var f = collapseDirection === COLLAPSE_TO_LEFT ? first$3 : last$2;\n      return f(node).map(function (target) {\n        return createCollapsedNode(doc, target, collapseDirection);\n      });\n    };\n    var locateInEmpty = function (doc, node, x) {\n      var rect = node.dom().getBoundingClientRect();\n      var collapseDirection = getCollapseDirection(rect, x);\n      return Option.some(createCollapsedNode(doc, node, collapseDirection));\n    };\n    var search = function (doc, node, x) {\n      var f = children(node).length === 0 ? locateInEmpty : locateInElement;\n      return f(doc, node, x);\n    };\n\n    var caretPositionFromPoint = function (doc, x, y) {\n      return Option.from(doc.dom().caretPositionFromPoint(x, y)).bind(function (pos) {\n        if (pos.offsetNode === null)\n          return Option.none();\n        var r = doc.dom().createRange();\n        r.setStart(pos.offsetNode, pos.offset);\n        r.collapse();\n        return Option.some(r);\n      });\n    };\n    var caretRangeFromPoint = function (doc, x, y) {\n      return Option.from(doc.dom().caretRangeFromPoint(x, y));\n    };\n    var searchTextNodes = function (doc, node, x, y) {\n      var r = doc.dom().createRange();\n      r.selectNode(node.dom());\n      var rect = r.getBoundingClientRect();\n      var boundedX = Math.max(rect.left, Math.min(rect.right, x));\n      var boundedY = Math.max(rect.top, Math.min(rect.bottom, y));\n      return locate$1(doc, node, boundedX, boundedY);\n    };\n    var searchFromPoint = function (doc, x, y) {\n      return Element$$1.fromPoint(doc, x, y).bind(function (elem) {\n        var fallback = function () {\n          return search(doc, elem, x);\n        };\n        return children(elem).length === 0 ? fallback() : searchTextNodes(doc, elem, x, y).orThunk(fallback);\n      });\n    };\n    var availableSearch = document.caretPositionFromPoint ? caretPositionFromPoint : document.caretRangeFromPoint ? caretRangeFromPoint : searchFromPoint;\n    var fromPoint$1 = function (win, x, y) {\n      var doc = Element$$1.fromDom(win.document);\n      return availableSearch(doc, x, y).map(function (rng) {\n        return range$2(Element$$1.fromDom(rng.startContainer), rng.startOffset, Element$$1.fromDom(rng.endContainer), rng.endOffset);\n      });\n    };\n\n    var beforeSpecial = function (element, offset) {\n      var name$$1 = name(element);\n      if ('input' === name$$1)\n        return Situ.after(element);\n      else if (!contains([\n          'br',\n          'img'\n        ], name$$1))\n        return Situ.on(element, offset);\n      else\n        return offset === 0 ? Situ.before(element) : Situ.after(element);\n    };\n    var preprocessRelative = function (startSitu, finishSitu) {\n      var start = startSitu.fold(Situ.before, beforeSpecial, Situ.after);\n      var finish = finishSitu.fold(Situ.before, beforeSpecial, Situ.after);\n      return relative$1(start, finish);\n    };\n    var preprocessExact = function (start, soffset, finish, foffset) {\n      var startSitu = beforeSpecial(start, soffset);\n      var finishSitu = beforeSpecial(finish, foffset);\n      return relative$1(startSitu, finishSitu);\n    };\n    var preprocess = function (selection) {\n      return selection.match({\n        domRange: function (rng) {\n          var start = Element$$1.fromDom(rng.startContainer);\n          var finish = Element$$1.fromDom(rng.endContainer);\n          return preprocessExact(start, rng.startOffset, finish, rng.endOffset);\n        },\n        relative: preprocessRelative,\n        exact: preprocessExact\n      });\n    };\n\n    var doSetNativeRange = function (win, rng) {\n      Option.from(win.getSelection()).each(function (selection) {\n        selection.removeAllRanges();\n        selection.addRange(rng);\n      });\n    };\n    var doSetRange = function (win, start, soffset, finish, foffset) {\n      var rng = exactToNative(win, start, soffset, finish, foffset);\n      doSetNativeRange(win, rng);\n    };\n    var setLegacyRtlRange = function (win, selection, start, soffset, finish, foffset) {\n      selection.collapse(start.dom(), soffset);\n      selection.extend(finish.dom(), foffset);\n    };\n    var setRangeFromRelative = function (win, relative) {\n      return diagnose(win, relative).match({\n        ltr: function (start, soffset, finish, foffset) {\n          doSetRange(win, start, soffset, finish, foffset);\n        },\n        rtl: function (start, soffset, finish, foffset) {\n          var selection = win.getSelection();\n          if (selection.setBaseAndExtent) {\n            selection.setBaseAndExtent(start.dom(), soffset, finish.dom(), foffset);\n          } else if (selection.extend) {\n            try {\n              setLegacyRtlRange(win, selection, start, soffset, finish, foffset);\n            } catch (e) {\n              doSetRange(win, finish, foffset, start, soffset);\n            }\n          } else {\n            doSetRange(win, finish, foffset, start, soffset);\n          }\n        }\n      });\n    };\n    var setExact = function (win, start, soffset, finish, foffset) {\n      var relative = preprocessExact(start, soffset, finish, foffset);\n      setRangeFromRelative(win, relative);\n    };\n    var setRelative = function (win, startSitu, finishSitu) {\n      var relative = preprocessRelative(startSitu, finishSitu);\n      setRangeFromRelative(win, relative);\n    };\n    var toNative = function (selection) {\n      var win = getWin(selection).dom();\n      var getDomRange = function (start, soffset, finish, foffset) {\n        return exactToNative(win, start, soffset, finish, foffset);\n      };\n      var filtered = preprocess(selection);\n      return diagnose(win, filtered).match({\n        ltr: getDomRange,\n        rtl: getDomRange\n      });\n    };\n    var readRange = function (selection) {\n      if (selection.rangeCount > 0) {\n        var firstRng = selection.getRangeAt(0);\n        var lastRng = selection.getRangeAt(selection.rangeCount - 1);\n        return Option.some(range$2(Element$$1.fromDom(firstRng.startContainer), firstRng.startOffset, Element$$1.fromDom(lastRng.endContainer), lastRng.endOffset));\n      } else {\n        return Option.none();\n      }\n    };\n    var doGetExact = function (selection) {\n      var anchorNode = Element$$1.fromDom(selection.anchorNode);\n      var focusNode = Element$$1.fromDom(selection.focusNode);\n      return after$3(anchorNode, selection.anchorOffset, focusNode, selection.focusOffset) ? Option.some(range$2(Element$$1.fromDom(selection.anchorNode), selection.anchorOffset, Element$$1.fromDom(selection.focusNode), selection.focusOffset)) : readRange(selection);\n    };\n    var setToElement = function (win, element) {\n      var rng = selectNodeContents(win, element);\n      doSetNativeRange(win, rng);\n    };\n    var getExact = function (win) {\n      return Option.from(win.getSelection()).filter(function (sel) {\n        return sel.rangeCount > 0;\n      }).bind(doGetExact);\n    };\n    var get$a = function (win) {\n      return getExact(win).map(function (range) {\n        return exact(range.start(), range.soffset(), range.finish(), range.foffset());\n      });\n    };\n    var getFirstRect$1 = function (win, selection) {\n      var rng = asLtrRange(win, selection);\n      return getFirstRect(rng);\n    };\n    var getAtPoint = function (win, x, y) {\n      return fromPoint$1(win, x, y);\n    };\n    var clear$1 = function (win) {\n      var selection = win.getSelection();\n      selection.removeAllRanges();\n    };\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n    var forward = function (editor, isRoot, cell, lazyWire) {\n      return go(editor, isRoot, CellNavigation.next(cell), lazyWire);\n    };\n    var backward = function (editor, isRoot, cell, lazyWire) {\n      return go(editor, isRoot, CellNavigation.prev(cell), lazyWire);\n    };\n    var getCellFirstCursorPosition = function (editor, cell) {\n      var selection = exact(cell, 0, cell, 0);\n      return toNative(selection);\n    };\n    var getNewRowCursorPosition = function (editor, table) {\n      var rows = descendants$1(table, 'tr');\n      return last(rows).bind(function (last$$1) {\n        return descendant$1(last$$1, 'td,th').map(function (first) {\n          return getCellFirstCursorPosition(editor, first);\n        });\n      });\n    };\n    var go = function (editor, isRoot, cell, actions, lazyWire) {\n      return cell.fold(Option.none, Option.none, function (current, next) {\n        return first$3(next).map(function (cell) {\n          return getCellFirstCursorPosition(editor, cell);\n        });\n      }, function (current) {\n        return TableLookup.table(current, isRoot).bind(function (table) {\n          var targets = TableTargets.noMenu(current);\n          editor.undoManager.transact(function () {\n            actions.insertRowsAfter(table, targets);\n          });\n          return getNewRowCursorPosition(editor, table);\n        });\n      });\n    };\n    var rootElements = [\n      'table',\n      'li',\n      'dl'\n    ];\n    var handle$1 = function (event, editor, actions, lazyWire) {\n      if (event.keyCode === global$3.TAB) {\n        var body_1 = getBody$1(editor);\n        var isRoot_1 = function (element) {\n          var name$$1 = name(element);\n          return eq(element, body_1) || contains(rootElements, name$$1);\n        };\n        var rng = editor.selection.getRng();\n        if (rng.collapsed) {\n          var start = Element$$1.fromDom(rng.startContainer);\n          TableLookup.cell(start, isRoot_1).each(function (cell) {\n            event.preventDefault();\n            var navigation = event.shiftKey ? backward : forward;\n            var rng = navigation(editor, isRoot_1, cell, actions, lazyWire);\n            rng.each(function (range$$1) {\n              editor.selection.setRng(range$$1);\n            });\n          });\n        }\n      }\n    };\n    var TabContext = { handle: handle$1 };\n\n    var response = Immutable('selection', 'kill');\n    var Responses = { response: response };\n\n    var isKey = function (key) {\n      return function (keycode) {\n        return keycode === key;\n      };\n    };\n    var isUp = isKey(38);\n    var isDown = isKey(40);\n    var isNavigation = function (keycode) {\n      return keycode >= 37 && keycode <= 40;\n    };\n    var SelectionKeys = {\n      ltr: {\n        isBackward: isKey(37),\n        isForward: isKey(39)\n      },\n      rtl: {\n        isBackward: isKey(39),\n        isForward: isKey(37)\n      },\n      isUp: isUp,\n      isDown: isDown,\n      isNavigation: isNavigation\n    };\n\n    var convertToRange = function (win, selection) {\n      var rng = asLtrRange(win, selection);\n      return {\n        start: constant(Element$$1.fromDom(rng.startContainer)),\n        soffset: constant(rng.startOffset),\n        finish: constant(Element$$1.fromDom(rng.endContainer)),\n        foffset: constant(rng.endOffset)\n      };\n    };\n    var makeSitus = function (start, soffset, finish, foffset) {\n      return {\n        start: constant(Situ.on(start, soffset)),\n        finish: constant(Situ.on(finish, foffset))\n      };\n    };\n    var Util$1 = {\n      convertToRange: convertToRange,\n      makeSitus: makeSitus\n    };\n\n    var isSafari = PlatformDetection$1.detect().browser.isSafari();\n    var get$b = function (_doc) {\n      var doc = _doc !== undefined ? _doc.dom() : document;\n      var x = doc.body.scrollLeft || doc.documentElement.scrollLeft;\n      var y = doc.body.scrollTop || doc.documentElement.scrollTop;\n      return Position(x, y);\n    };\n    var by = function (x, y, _doc) {\n      var doc = _doc !== undefined ? _doc.dom() : document;\n      var win = doc.defaultView;\n      win.scrollBy(x, y);\n    };\n\n    function WindowBridge (win) {\n      var elementFromPoint = function (x, y) {\n        return Element$$1.fromPoint(Element$$1.fromDom(win.document), x, y);\n      };\n      var getRect = function (element) {\n        return element.dom().getBoundingClientRect();\n      };\n      var getRangedRect = function (start, soffset, finish, foffset) {\n        var sel = exact(start, soffset, finish, foffset);\n        return getFirstRect$1(win, sel).map(function (structRect) {\n          return map$1(structRect, apply);\n        });\n      };\n      var getSelection = function () {\n        return get$a(win).map(function (exactAdt) {\n          return Util$1.convertToRange(win, exactAdt);\n        });\n      };\n      var fromSitus = function (situs) {\n        var relative = relative$1(situs.start(), situs.finish());\n        return Util$1.convertToRange(win, relative);\n      };\n      var situsFromPoint = function (x, y) {\n        return getAtPoint(win, x, y).map(function (exact$$1) {\n          return {\n            start: constant(Situ.on(exact$$1.start(), exact$$1.soffset())),\n            finish: constant(Situ.on(exact$$1.finish(), exact$$1.foffset()))\n          };\n        });\n      };\n      var clearSelection = function () {\n        clear$1(win);\n      };\n      var selectContents = function (element) {\n        setToElement(win, element);\n      };\n      var setSelection = function (sel) {\n        setExact(win, sel.start(), sel.soffset(), sel.finish(), sel.foffset());\n      };\n      var setRelativeSelection = function (start, finish) {\n        setRelative(win, start, finish);\n      };\n      var getInnerHeight = function () {\n        return win.innerHeight;\n      };\n      var getScrollY = function () {\n        var pos = get$b(Element$$1.fromDom(win.document));\n        return pos.top();\n      };\n      var scrollBy = function (x, y) {\n        by(x, y, Element$$1.fromDom(win.document));\n      };\n      return {\n        elementFromPoint: elementFromPoint,\n        getRect: getRect,\n        getRangedRect: getRangedRect,\n        getSelection: getSelection,\n        fromSitus: fromSitus,\n        situsFromPoint: situsFromPoint,\n        clearSelection: clearSelection,\n        setSelection: setSelection,\n        setRelativeSelection: setRelativeSelection,\n        selectContents: selectContents,\n        getInnerHeight: getInnerHeight,\n        getScrollY: getScrollY,\n        scrollBy: scrollBy\n      };\n    }\n\n    var sync = function (container, isRoot, start, soffset, finish, foffset, selectRange) {\n      if (!(eq(start, finish) && soffset === foffset)) {\n        return closest$1(start, 'td,th', isRoot).bind(function (s) {\n          return closest$1(finish, 'td,th', isRoot).bind(function (f) {\n            return detect$5(container, isRoot, s, f, selectRange);\n          });\n        });\n      } else {\n        return Option.none();\n      }\n    };\n    var detect$5 = function (container, isRoot, start, finish, selectRange) {\n      if (!eq(start, finish)) {\n        return CellSelection.identify(start, finish, isRoot).bind(function (cellSel) {\n          var boxes = cellSel.boxes().getOr([]);\n          if (boxes.length > 0) {\n            selectRange(container, boxes, cellSel.start(), cellSel.finish());\n            return Option.some(Responses.response(Option.some(Util$1.makeSitus(start, 0, start, getEnd(start))), true));\n          } else {\n            return Option.none();\n          }\n        });\n      } else {\n        return Option.none();\n      }\n    };\n    var update = function (rows, columns, container, selected, annotations) {\n      var updateSelection = function (newSels) {\n        annotations.clear(container);\n        annotations.selectRange(container, newSels.boxes(), newSels.start(), newSels.finish());\n        return newSels.boxes();\n      };\n      return CellSelection.shiftSelection(selected, rows, columns, annotations.firstSelectedSelector(), annotations.lastSelectedSelector()).map(updateSelection);\n    };\n    var KeySelection = {\n      sync: sync,\n      detect: detect$5,\n      update: update\n    };\n\n    var nu$3 = MixedBag([\n      'left',\n      'top',\n      'right',\n      'bottom'\n    ], []);\n    var moveDown = function (caret, amount) {\n      return nu$3({\n        left: caret.left(),\n        top: caret.top() + amount,\n        right: caret.right(),\n        bottom: caret.bottom() + amount\n      });\n    };\n    var moveUp = function (caret, amount) {\n      return nu$3({\n        left: caret.left(),\n        top: caret.top() - amount,\n        right: caret.right(),\n        bottom: caret.bottom() - amount\n      });\n    };\n    var moveBottomTo = function (caret, bottom) {\n      var height = caret.bottom() - caret.top();\n      return nu$3({\n        left: caret.left(),\n        top: bottom - height,\n        right: caret.right(),\n        bottom: bottom\n      });\n    };\n    var moveTopTo = function (caret, top) {\n      var height = caret.bottom() - caret.top();\n      return nu$3({\n        left: caret.left(),\n        top: top,\n        right: caret.right(),\n        bottom: top + height\n      });\n    };\n    var translate = function (caret, xDelta, yDelta) {\n      return nu$3({\n        left: caret.left() + xDelta,\n        top: caret.top() + yDelta,\n        right: caret.right() + xDelta,\n        bottom: caret.bottom() + yDelta\n      });\n    };\n    var getTop$1 = function (caret) {\n      return caret.top();\n    };\n    var getBottom = function (caret) {\n      return caret.bottom();\n    };\n    var toString$1 = function (caret) {\n      return '(' + caret.left() + ', ' + caret.top() + ') -> (' + caret.right() + ', ' + caret.bottom() + ')';\n    };\n    var Carets = {\n      nu: nu$3,\n      moveUp: moveUp,\n      moveDown: moveDown,\n      moveBottomTo: moveBottomTo,\n      moveTopTo: moveTopTo,\n      getTop: getTop$1,\n      getBottom: getBottom,\n      translate: translate,\n      toString: toString$1\n    };\n\n    var getPartialBox = function (bridge, element, offset) {\n      if (offset >= 0 && offset < getEnd(element))\n        return bridge.getRangedRect(element, offset, element, offset + 1);\n      else if (offset > 0)\n        return bridge.getRangedRect(element, offset - 1, element, offset);\n      return Option.none();\n    };\n    var toCaret = function (rect) {\n      return Carets.nu({\n        left: rect.left,\n        top: rect.top,\n        right: rect.right,\n        bottom: rect.bottom\n      });\n    };\n    var getElemBox = function (bridge, element) {\n      return Option.some(bridge.getRect(element));\n    };\n    var getBoxAt = function (bridge, element, offset) {\n      if (isElement(element))\n        return getElemBox(bridge, element).map(toCaret);\n      else if (isText(element))\n        return getPartialBox(bridge, element, offset).map(toCaret);\n      else\n        return Option.none();\n    };\n    var getEntireBox = function (bridge, element) {\n      if (isElement(element))\n        return getElemBox(bridge, element).map(toCaret);\n      else if (isText(element))\n        return bridge.getRangedRect(element, 0, element, getEnd(element)).map(toCaret);\n      else\n        return Option.none();\n    };\n    var Rectangles = {\n      getBoxAt: getBoxAt,\n      getEntireBox: getEntireBox\n    };\n\n    var traverse = Immutable('item', 'mode');\n    var backtrack = function (universe, item, direction, _transition) {\n      var transition = _transition !== undefined ? _transition : sidestep;\n      return universe.property().parent(item).map(function (p) {\n        return traverse(p, transition);\n      });\n    };\n    var sidestep = function (universe, item, direction, _transition) {\n      var transition = _transition !== undefined ? _transition : advance;\n      return direction.sibling(universe, item).map(function (p) {\n        return traverse(p, transition);\n      });\n    };\n    var advance = function (universe, item, direction, _transition) {\n      var transition = _transition !== undefined ? _transition : advance;\n      var children = universe.property().children(item);\n      var result = direction.first(children);\n      return result.map(function (r) {\n        return traverse(r, transition);\n      });\n    };\n    var successors = [\n      {\n        current: backtrack,\n        next: sidestep,\n        fallback: Option.none()\n      },\n      {\n        current: sidestep,\n        next: advance,\n        fallback: Option.some(backtrack)\n      },\n      {\n        current: advance,\n        next: advance,\n        fallback: Option.some(sidestep)\n      }\n    ];\n    var go$1 = function (universe, item, mode, direction, rules) {\n      var rules = rules !== undefined ? rules : successors;\n      var ruleOpt = find(rules, function (succ) {\n        return succ.current === mode;\n      });\n      return ruleOpt.bind(function (rule) {\n        return rule.current(universe, item, direction, rule.next).orThunk(function () {\n          return rule.fallback.bind(function (fb) {\n            return go$1(universe, item, fb, direction);\n          });\n        });\n      });\n    };\n    var Walker = {\n      backtrack: backtrack,\n      sidestep: sidestep,\n      advance: advance,\n      go: go$1\n    };\n\n    var left$1 = function () {\n      var sibling = function (universe, item) {\n        return universe.query().prevSibling(item);\n      };\n      var first = function (children) {\n        return children.length > 0 ? Option.some(children[children.length - 1]) : Option.none();\n      };\n      return {\n        sibling: sibling,\n        first: first\n      };\n    };\n    var right$1 = function () {\n      var sibling = function (universe, item) {\n        return universe.query().nextSibling(item);\n      };\n      var first = function (children) {\n        return children.length > 0 ? Option.some(children[0]) : Option.none();\n      };\n      return {\n        sibling: sibling,\n        first: first\n      };\n    };\n    var Walkers = {\n      left: left$1,\n      right: right$1\n    };\n\n    var hone = function (universe, item, predicate, mode, direction, isRoot) {\n      var next = Walker.go(universe, item, mode, direction);\n      return next.bind(function (n) {\n        if (isRoot(n.item()))\n          return Option.none();\n        else\n          return predicate(n.item()) ? Option.some(n.item()) : hone(universe, n.item(), predicate, n.mode(), direction, isRoot);\n      });\n    };\n    var left$2 = function (universe, item, predicate, isRoot) {\n      return hone(universe, item, predicate, Walker.sidestep, Walkers.left(), isRoot);\n    };\n    var right$2 = function (universe, item, predicate, isRoot) {\n      return hone(universe, item, predicate, Walker.sidestep, Walkers.right(), isRoot);\n    };\n    var Seeker = {\n      left: left$2,\n      right: right$2\n    };\n\n    var isLeaf = function (universe, element) {\n      return universe.property().children(element).length === 0;\n    };\n    var before$3 = function (universe, item, isRoot) {\n      return seekLeft(universe, item, curry(isLeaf, universe), isRoot);\n    };\n    var after$4 = function (universe, item, isRoot) {\n      return seekRight(universe, item, curry(isLeaf, universe), isRoot);\n    };\n    var seekLeft = function (universe, item, predicate, isRoot) {\n      return Seeker.left(universe, item, predicate, isRoot);\n    };\n    var seekRight = function (universe, item, predicate, isRoot) {\n      return Seeker.right(universe, item, predicate, isRoot);\n    };\n    var walkers = function () {\n      return {\n        left: Walkers.left,\n        right: Walkers.right\n      };\n    };\n    var walk = function (universe, item, mode, direction, _rules) {\n      return Walker.go(universe, item, mode, direction, _rules);\n    };\n    var Gather = {\n      before: before$3,\n      after: after$4,\n      seekLeft: seekLeft,\n      seekRight: seekRight,\n      walkers: walkers,\n      walk: walk,\n      backtrack: Walker.backtrack,\n      sidestep: Walker.sidestep,\n      advance: Walker.advance\n    };\n\n    var universe$2 = DomUniverse();\n    var gather = function (element, prune, transform) {\n      return Gather.gather(universe$2, element, prune, transform);\n    };\n    var before$4 = function (element, isRoot) {\n      return Gather.before(universe$2, element, isRoot);\n    };\n    var after$5 = function (element, isRoot) {\n      return Gather.after(universe$2, element, isRoot);\n    };\n    var seekLeft$1 = function (element, predicate, isRoot) {\n      return Gather.seekLeft(universe$2, element, predicate, isRoot);\n    };\n    var seekRight$1 = function (element, predicate, isRoot) {\n      return Gather.seekRight(universe$2, element, predicate, isRoot);\n    };\n    var walkers$1 = function () {\n      return Gather.walkers();\n    };\n    var walk$1 = function (item, mode, direction, _rules) {\n      return Gather.walk(universe$2, item, mode, direction, _rules);\n    };\n    var DomGather = {\n      gather: gather,\n      before: before$4,\n      after: after$5,\n      seekLeft: seekLeft$1,\n      seekRight: seekRight$1,\n      walkers: walkers$1,\n      walk: walk$1\n    };\n\n    var JUMP_SIZE = 5;\n    var NUM_RETRIES = 100;\n    var adt$2 = Adt.generate([\n      { 'none': [] },\n      { 'retry': ['caret'] }\n    ]);\n    var isOutside = function (caret, box) {\n      return caret.left() < box.left() || Math.abs(box.right() - caret.left()) < 1 || caret.left() > box.right();\n    };\n    var inOutsideBlock = function (bridge, element, caret) {\n      return closest(element, DomStructure.isBlock).fold(constant(false), function (cell) {\n        return Rectangles.getEntireBox(bridge, cell).exists(function (box) {\n          return isOutside(caret, box);\n        });\n      });\n    };\n    var adjustDown = function (bridge, element, guessBox, original, caret) {\n      var lowerCaret = Carets.moveDown(caret, JUMP_SIZE);\n      if (Math.abs(guessBox.bottom() - original.bottom()) < 1)\n        return adt$2.retry(lowerCaret);\n      else if (guessBox.top() > caret.bottom())\n        return adt$2.retry(lowerCaret);\n      else if (guessBox.top() === caret.bottom())\n        return adt$2.retry(Carets.moveDown(caret, 1));\n      else\n        return inOutsideBlock(bridge, element, caret) ? adt$2.retry(Carets.translate(lowerCaret, JUMP_SIZE, 0)) : adt$2.none();\n    };\n    var adjustUp = function (bridge, element, guessBox, original, caret) {\n      var higherCaret = Carets.moveUp(caret, JUMP_SIZE);\n      if (Math.abs(guessBox.top() - original.top()) < 1)\n        return adt$2.retry(higherCaret);\n      else if (guessBox.bottom() < caret.top())\n        return adt$2.retry(higherCaret);\n      else if (guessBox.bottom() === caret.top())\n        return adt$2.retry(Carets.moveUp(caret, 1));\n      else\n        return inOutsideBlock(bridge, element, caret) ? adt$2.retry(Carets.translate(higherCaret, JUMP_SIZE, 0)) : adt$2.none();\n    };\n    var upMovement = {\n      point: Carets.getTop,\n      adjuster: adjustUp,\n      move: Carets.moveUp,\n      gather: DomGather.before\n    };\n    var downMovement = {\n      point: Carets.getBottom,\n      adjuster: adjustDown,\n      move: Carets.moveDown,\n      gather: DomGather.after\n    };\n    var isAtTable = function (bridge, x, y) {\n      return bridge.elementFromPoint(x, y).filter(function (elm) {\n        return name(elm) === 'table';\n      }).isSome();\n    };\n    var adjustForTable = function (bridge, movement, original, caret, numRetries) {\n      return adjustTil(bridge, movement, original, movement.move(caret, JUMP_SIZE), numRetries);\n    };\n    var adjustTil = function (bridge, movement, original, caret, numRetries) {\n      if (numRetries === 0)\n        return Option.some(caret);\n      if (isAtTable(bridge, caret.left(), movement.point(caret)))\n        return adjustForTable(bridge, movement, original, caret, numRetries - 1);\n      return bridge.situsFromPoint(caret.left(), movement.point(caret)).bind(function (guess) {\n        return guess.start().fold(Option.none, function (element, offset) {\n          return Rectangles.getEntireBox(bridge, element, offset).bind(function (guessBox) {\n            return movement.adjuster(bridge, element, guessBox, original, caret).fold(Option.none, function (newCaret) {\n              return adjustTil(bridge, movement, original, newCaret, numRetries - 1);\n            });\n          }).orThunk(function () {\n            return Option.some(caret);\n          });\n        }, Option.none);\n      });\n    };\n    var ieTryDown = function (bridge, caret) {\n      return bridge.situsFromPoint(caret.left(), caret.bottom() + JUMP_SIZE);\n    };\n    var ieTryUp = function (bridge, caret) {\n      return bridge.situsFromPoint(caret.left(), caret.top() - JUMP_SIZE);\n    };\n    var checkScroll = function (movement, adjusted, bridge) {\n      if (movement.point(adjusted) > bridge.getInnerHeight())\n        return Option.some(movement.point(adjusted) - bridge.getInnerHeight());\n      else if (movement.point(adjusted) < 0)\n        return Option.some(-movement.point(adjusted));\n      else\n        return Option.none();\n    };\n    var retry = function (movement, bridge, caret) {\n      var moved = movement.move(caret, JUMP_SIZE);\n      var adjusted = adjustTil(bridge, movement, caret, moved, NUM_RETRIES).getOr(moved);\n      return checkScroll(movement, adjusted, bridge).fold(function () {\n        return bridge.situsFromPoint(adjusted.left(), movement.point(adjusted));\n      }, function (delta) {\n        bridge.scrollBy(0, delta);\n        return bridge.situsFromPoint(adjusted.left(), movement.point(adjusted) - delta);\n      });\n    };\n    var Retries = {\n      tryUp: curry(retry, upMovement),\n      tryDown: curry(retry, downMovement),\n      ieTryUp: ieTryUp,\n      ieTryDown: ieTryDown,\n      getJumpSize: constant(JUMP_SIZE)\n    };\n\n    var adt$3 = Adt.generate([\n      { 'none': ['message'] },\n      { 'success': [] },\n      { 'failedUp': ['cell'] },\n      { 'failedDown': ['cell'] }\n    ]);\n    var isOverlapping = function (bridge, before, after) {\n      var beforeBounds = bridge.getRect(before);\n      var afterBounds = bridge.getRect(after);\n      return afterBounds.right > beforeBounds.left && afterBounds.left < beforeBounds.right;\n    };\n    var verify = function (bridge, before, beforeOffset, after, afterOffset, failure, isRoot) {\n      return closest$1(after, 'td,th', isRoot).bind(function (afterCell) {\n        return closest$1(before, 'td,th', isRoot).map(function (beforeCell) {\n          if (!eq(afterCell, beforeCell)) {\n            return DomParent.sharedOne(isRow, [\n              afterCell,\n              beforeCell\n            ]).fold(function () {\n              return isOverlapping(bridge, beforeCell, afterCell) ? adt$3.success() : failure(beforeCell);\n            }, function (sharedRow) {\n              return failure(beforeCell);\n            });\n          } else {\n            return eq(after, afterCell) && getEnd(afterCell) === afterOffset ? failure(beforeCell) : adt$3.none('in same cell');\n          }\n        });\n      }).getOr(adt$3.none('default'));\n    };\n    var isRow = function (elem) {\n      return closest$1(elem, 'tr');\n    };\n    var cata$2 = function (subject, onNone, onSuccess, onFailedUp, onFailedDown) {\n      return subject.fold(onNone, onSuccess, onFailedUp, onFailedDown);\n    };\n    var BeforeAfter = {\n      verify: verify,\n      cata: cata$2,\n      adt: adt$3\n    };\n\n    var point = Immutable('element', 'offset');\n    var delta = Immutable('element', 'deltaOffset');\n    var range$3 = Immutable('element', 'start', 'finish');\n    var points = Immutable('begin', 'end');\n    var text = Immutable('element', 'text');\n    var Spot = {\n      point: point,\n      delta: delta,\n      range: range$3,\n      points: points,\n      text: text\n    };\n\n    var inAncestor = Immutable('ancestor', 'descendants', 'element', 'index');\n    var inParent = Immutable('parent', 'children', 'element', 'index');\n    var indexInParent = function (element) {\n      return parent(element).bind(function (parent$$1) {\n        var children$$1 = children(parent$$1);\n        return indexOf$1(children$$1, element).map(function (index) {\n          return inParent(parent$$1, children$$1, element, index);\n        });\n      });\n    };\n    var indexOf$1 = function (elements, element) {\n      return findIndex(elements, curry(eq, element));\n    };\n\n    var isBr = function (elem) {\n      return name(elem) === 'br';\n    };\n    var gatherer = function (cand, gather, isRoot) {\n      return gather(cand, isRoot).bind(function (target) {\n        return isText(target) && get$3(target).trim().length === 0 ? gatherer(target, gather, isRoot) : Option.some(target);\n      });\n    };\n    var handleBr = function (isRoot, element, direction) {\n      return direction.traverse(element).orThunk(function () {\n        return gatherer(element, direction.gather, isRoot);\n      }).map(direction.relative);\n    };\n    var findBr = function (element, offset) {\n      return child(element, offset).filter(isBr).orThunk(function () {\n        return child(element, offset - 1).filter(isBr);\n      });\n    };\n    var handleParent = function (isRoot, element, offset, direction) {\n      return findBr(element, offset).bind(function (br) {\n        return direction.traverse(br).fold(function () {\n          return gatherer(br, direction.gather, isRoot).map(direction.relative);\n        }, function (adjacent) {\n          return indexInParent(adjacent).map(function (info) {\n            return Situ.on(info.parent(), info.index());\n          });\n        });\n      });\n    };\n    var tryBr = function (isRoot, element, offset, direction) {\n      var target = isBr(element) ? handleBr(isRoot, element, direction) : handleParent(isRoot, element, offset, direction);\n      return target.map(function (tgt) {\n        return {\n          start: constant(tgt),\n          finish: constant(tgt)\n        };\n      });\n    };\n    var process = function (analysis) {\n      return BeforeAfter.cata(analysis, function (message) {\n        return Option.none();\n      }, function () {\n        return Option.none();\n      }, function (cell) {\n        return Option.some(Spot.point(cell, 0));\n      }, function (cell) {\n        return Option.some(Spot.point(cell, getEnd(cell)));\n      });\n    };\n    var BrTags = {\n      tryBr: tryBr,\n      process: process\n    };\n\n    var MAX_RETRIES = 20;\n    var platform$1 = PlatformDetection$1.detect();\n    var findSpot = function (bridge, isRoot, direction) {\n      return bridge.getSelection().bind(function (sel) {\n        return BrTags.tryBr(isRoot, sel.finish(), sel.foffset(), direction).fold(function () {\n          return Option.some(Spot.point(sel.finish(), sel.foffset()));\n        }, function (brNeighbour) {\n          var range = bridge.fromSitus(brNeighbour);\n          var analysis = BeforeAfter.verify(bridge, sel.finish(), sel.foffset(), range.finish(), range.foffset(), direction.failure, isRoot);\n          return BrTags.process(analysis);\n        });\n      });\n    };\n    var scan = function (bridge, isRoot, element, offset, direction, numRetries) {\n      if (numRetries === 0)\n        return Option.none();\n      return tryCursor(bridge, isRoot, element, offset, direction).bind(function (situs) {\n        var range = bridge.fromSitus(situs);\n        var analysis = BeforeAfter.verify(bridge, element, offset, range.finish(), range.foffset(), direction.failure, isRoot);\n        return BeforeAfter.cata(analysis, function () {\n          return Option.none();\n        }, function () {\n          return Option.some(situs);\n        }, function (cell) {\n          if (eq(element, cell) && offset === 0)\n            return tryAgain(bridge, element, offset, Carets.moveUp, direction);\n          else\n            return scan(bridge, isRoot, cell, 0, direction, numRetries - 1);\n        }, function (cell) {\n          if (eq(element, cell) && offset === getEnd(cell))\n            return tryAgain(bridge, element, offset, Carets.moveDown, direction);\n          else\n            return scan(bridge, isRoot, cell, getEnd(cell), direction, numRetries - 1);\n        });\n      });\n    };\n    var tryAgain = function (bridge, element, offset, move, direction) {\n      return Rectangles.getBoxAt(bridge, element, offset).bind(function (box) {\n        return tryAt(bridge, direction, move(box, Retries.getJumpSize()));\n      });\n    };\n    var tryAt = function (bridge, direction, box) {\n      if (platform$1.browser.isChrome() || platform$1.browser.isSafari() || platform$1.browser.isFirefox() || platform$1.browser.isEdge())\n        return direction.otherRetry(bridge, box);\n      else if (platform$1.browser.isIE())\n        return direction.ieRetry(bridge, box);\n      else\n        return Option.none();\n    };\n    var tryCursor = function (bridge, isRoot, element, offset, direction) {\n      return Rectangles.getBoxAt(bridge, element, offset).bind(function (box) {\n        return tryAt(bridge, direction, box);\n      });\n    };\n    var handle$2 = function (bridge, isRoot, direction) {\n      return findSpot(bridge, isRoot, direction).bind(function (spot) {\n        return scan(bridge, isRoot, spot.element(), spot.offset(), direction, MAX_RETRIES).map(bridge.fromSitus);\n      });\n    };\n    var TableKeys = { handle: handle$2 };\n\n    var ancestor$3 = function (scope, predicate, isRoot) {\n      return ancestor(scope, predicate, isRoot).isSome();\n    };\n\n    var detection = PlatformDetection$1.detect();\n    var inSameTable = function (elem, table) {\n      return ancestor$3(elem, function (e) {\n        return parent(e).exists(function (p) {\n          return eq(p, table);\n        });\n      });\n    };\n    var simulate = function (bridge, isRoot, direction, initial, anchor) {\n      return closest$1(initial, 'td,th', isRoot).bind(function (start) {\n        return closest$1(start, 'table', isRoot).bind(function (table) {\n          if (!inSameTable(anchor, table))\n            return Option.none();\n          return TableKeys.handle(bridge, isRoot, direction).bind(function (range) {\n            return closest$1(range.finish(), 'td,th', isRoot).map(function (finish) {\n              return {\n                start: constant(start),\n                finish: constant(finish),\n                range: constant(range)\n              };\n            });\n          });\n        });\n      });\n    };\n    var navigate = function (bridge, isRoot, direction, initial, anchor, precheck) {\n      if (detection.browser.isIE()) {\n        return Option.none();\n      } else {\n        return precheck(initial, isRoot).orThunk(function () {\n          return simulate(bridge, isRoot, direction, initial, anchor).map(function (info) {\n            var range = info.range();\n            return Responses.response(Option.some(Util$1.makeSitus(range.start(), range.soffset(), range.finish(), range.foffset())), true);\n          });\n        });\n      }\n    };\n    var firstUpCheck = function (initial, isRoot) {\n      return closest$1(initial, 'tr', isRoot).bind(function (startRow) {\n        return closest$1(startRow, 'table', isRoot).bind(function (table) {\n          var rows = descendants$1(table, 'tr');\n          if (eq(startRow, rows[0])) {\n            return DomGather.seekLeft(table, function (element) {\n              return last$2(element).isSome();\n            }, isRoot).map(function (last) {\n              var lastOffset = getEnd(last);\n              return Responses.response(Option.some(Util$1.makeSitus(last, lastOffset, last, lastOffset)), true);\n            });\n          } else {\n            return Option.none();\n          }\n        });\n      });\n    };\n    var lastDownCheck = function (initial, isRoot) {\n      return closest$1(initial, 'tr', isRoot).bind(function (startRow) {\n        return closest$1(startRow, 'table', isRoot).bind(function (table) {\n          var rows = descendants$1(table, 'tr');\n          if (eq(startRow, rows[rows.length - 1])) {\n            return DomGather.seekRight(table, function (element) {\n              return first$3(element).isSome();\n            }, isRoot).map(function (first) {\n              return Responses.response(Option.some(Util$1.makeSitus(first, 0, first, 0)), true);\n            });\n          } else {\n            return Option.none();\n          }\n        });\n      });\n    };\n    var select = function (bridge, container, isRoot, direction, initial, anchor, selectRange) {\n      return simulate(bridge, isRoot, direction, initial, anchor).bind(function (info) {\n        return KeySelection.detect(container, isRoot, info.start(), info.finish(), selectRange);\n      });\n    };\n    var VerticalMovement = {\n      navigate: navigate,\n      select: select,\n      firstUpCheck: firstUpCheck,\n      lastDownCheck: lastDownCheck\n    };\n\n    var findCell = function (target, isRoot) {\n      return closest$1(target, 'td,th', isRoot);\n    };\n    function MouseSelection (bridge, container, isRoot, annotations) {\n      var cursor = Option.none();\n      var clearState = function () {\n        cursor = Option.none();\n      };\n      var mousedown = function (event) {\n        annotations.clear(container);\n        cursor = findCell(event.target(), isRoot);\n      };\n      var mouseover = function (event) {\n        cursor.each(function (start) {\n          annotations.clear(container);\n          findCell(event.target(), isRoot).each(function (finish) {\n            CellSelection.identify(start, finish, isRoot).each(function (cellSel) {\n              var boxes = cellSel.boxes().getOr([]);\n              if (boxes.length > 1 || boxes.length === 1 && !eq(start, finish)) {\n                annotations.selectRange(container, boxes, cellSel.start(), cellSel.finish());\n                bridge.selectContents(finish);\n              }\n            });\n          });\n        });\n      };\n      var mouseup = function () {\n        cursor.each(clearState);\n      };\n      return {\n        mousedown: mousedown,\n        mouseover: mouseover,\n        mouseup: mouseup\n      };\n    }\n\n    var KeyDirection = {\n      down: {\n        traverse: nextSibling,\n        gather: DomGather.after,\n        relative: Situ.before,\n        otherRetry: Retries.tryDown,\n        ieRetry: Retries.ieTryDown,\n        failure: BeforeAfter.adt.failedDown\n      },\n      up: {\n        traverse: prevSibling,\n        gather: DomGather.before,\n        relative: Situ.before,\n        otherRetry: Retries.tryUp,\n        ieRetry: Retries.ieTryUp,\n        failure: BeforeAfter.adt.failedUp\n      }\n    };\n\n    var rc = Immutable('rows', 'cols');\n    var mouse = function (win, container, isRoot, annotations) {\n      var bridge = WindowBridge(win);\n      var handlers = MouseSelection(bridge, container, isRoot, annotations);\n      return {\n        mousedown: handlers.mousedown,\n        mouseover: handlers.mouseover,\n        mouseup: handlers.mouseup\n      };\n    };\n    var keyboard = function (win, container, isRoot, annotations) {\n      var bridge = WindowBridge(win);\n      var clearToNavigate = function () {\n        annotations.clear(container);\n        return Option.none();\n      };\n      var keydown = function (event, start, soffset, finish, foffset, direction) {\n        var keycode = event.raw().which;\n        var shiftKey = event.raw().shiftKey === true;\n        var handler = CellSelection.retrieve(container, annotations.selectedSelector()).fold(function () {\n          if (SelectionKeys.isDown(keycode) && shiftKey) {\n            return curry(VerticalMovement.select, bridge, container, isRoot, KeyDirection.down, finish, start, annotations.selectRange);\n          } else if (SelectionKeys.isUp(keycode) && shiftKey) {\n            return curry(VerticalMovement.select, bridge, container, isRoot, KeyDirection.up, finish, start, annotations.selectRange);\n          } else if (SelectionKeys.isDown(keycode)) {\n            return curry(VerticalMovement.navigate, bridge, isRoot, KeyDirection.down, finish, start, VerticalMovement.lastDownCheck);\n          } else if (SelectionKeys.isUp(keycode)) {\n            return curry(VerticalMovement.navigate, bridge, isRoot, KeyDirection.up, finish, start, VerticalMovement.firstUpCheck);\n          } else {\n            return Option.none;\n          }\n        }, function (selected) {\n          var update = function (attempts) {\n            return function () {\n              var navigation = findMap(attempts, function (delta) {\n                return KeySelection.update(delta.rows(), delta.cols(), container, selected, annotations);\n              });\n              return navigation.fold(function () {\n                return CellSelection.getEdges(container, annotations.firstSelectedSelector(), annotations.lastSelectedSelector()).map(function (edges) {\n                  var relative = SelectionKeys.isDown(keycode) || direction.isForward(keycode) ? Situ.after : Situ.before;\n                  bridge.setRelativeSelection(Situ.on(edges.first(), 0), relative(edges.table()));\n                  annotations.clear(container);\n                  return Responses.response(Option.none(), true);\n                });\n              }, function (_) {\n                return Option.some(Responses.response(Option.none(), true));\n              });\n            };\n          };\n          if (SelectionKeys.isDown(keycode) && shiftKey)\n            return update([rc(+1, 0)]);\n          else if (SelectionKeys.isUp(keycode) && shiftKey)\n            return update([rc(-1, 0)]);\n          else if (direction.isBackward(keycode) && shiftKey)\n            return update([\n              rc(0, -1),\n              rc(-1, 0)\n            ]);\n          else if (direction.isForward(keycode) && shiftKey)\n            return update([\n              rc(0, +1),\n              rc(+1, 0)\n            ]);\n          else if (SelectionKeys.isNavigation(keycode) && shiftKey === false)\n            return clearToNavigate;\n          else\n            return Option.none;\n        });\n        return handler();\n      };\n      var keyup = function (event, start, soffset, finish, foffset) {\n        return CellSelection.retrieve(container, annotations.selectedSelector()).fold(function () {\n          var keycode = event.raw().which;\n          var shiftKey = event.raw().shiftKey === true;\n          if (shiftKey === false)\n            return Option.none();\n          if (SelectionKeys.isNavigation(keycode))\n            return KeySelection.sync(container, isRoot, start, soffset, finish, foffset, annotations.selectRange);\n          else\n            return Option.none();\n        }, Option.none);\n      };\n      return {\n        keydown: keydown,\n        keyup: keyup\n      };\n    };\n    var InputHandlers = {\n      mouse: mouse,\n      keyboard: keyboard\n    };\n\n    var remove$7 = function (element, classes) {\n      each(classes, function (x) {\n        remove$5(element, x);\n      });\n    };\n\n    var addClass = function (clazz) {\n      return function (element) {\n        add$2(element, clazz);\n      };\n    };\n    var removeClasses = function (classes) {\n      return function (element) {\n        remove$7(element, classes);\n      };\n    };\n\n    var byClass = function (ephemera) {\n      var addSelectionClass = addClass(ephemera.selected());\n      var removeSelectionClasses = removeClasses([\n        ephemera.selected(),\n        ephemera.lastSelected(),\n        ephemera.firstSelected()\n      ]);\n      var clear = function (container) {\n        var sels = descendants$1(container, ephemera.selectedSelector());\n        each(sels, removeSelectionClasses);\n      };\n      var selectRange = function (container, cells, start, finish) {\n        clear(container);\n        each(cells, addSelectionClass);\n        add$2(start, ephemera.firstSelected());\n        add$2(finish, ephemera.lastSelected());\n      };\n      return {\n        clear: clear,\n        selectRange: selectRange,\n        selectedSelector: ephemera.selectedSelector,\n        firstSelectedSelector: ephemera.firstSelectedSelector,\n        lastSelectedSelector: ephemera.lastSelectedSelector\n      };\n    };\n    var byAttr = function (ephemera) {\n      var removeSelectionAttributes = function (element) {\n        remove(element, ephemera.selected());\n        remove(element, ephemera.firstSelected());\n        remove(element, ephemera.lastSelected());\n      };\n      var addSelectionAttribute = function (element) {\n        set(element, ephemera.selected(), '1');\n      };\n      var clear = function (container) {\n        var sels = descendants$1(container, ephemera.selectedSelector());\n        each(sels, removeSelectionAttributes);\n      };\n      var selectRange = function (container, cells, start, finish) {\n        clear(container);\n        each(cells, addSelectionAttribute);\n        set(start, ephemera.firstSelected(), '1');\n        set(finish, ephemera.lastSelected(), '1');\n      };\n      return {\n        clear: clear,\n        selectRange: selectRange,\n        selectedSelector: ephemera.selectedSelector,\n        firstSelectedSelector: ephemera.firstSelectedSelector,\n        lastSelectedSelector: ephemera.lastSelectedSelector\n      };\n    };\n    var SelectionAnnotation = {\n      byClass: byClass,\n      byAttr: byAttr\n    };\n\n    var hasInternalTarget = function (e) {\n      return has$2(Element$$1.fromDom(e.target), 'ephox-snooker-resizer-bar') === false;\n    };\n    function CellSelection$1 (editor, lazyResize) {\n      var handlerStruct = MixedBag([\n        'mousedown',\n        'mouseover',\n        'mouseup',\n        'keyup',\n        'keydown'\n      ], []);\n      var handlers = Option.none();\n      var annotations = SelectionAnnotation.byAttr(Ephemera);\n      editor.on('init', function (e) {\n        var win = editor.getWin();\n        var body = getBody$1(editor);\n        var isRoot = getIsRoot(editor);\n        var syncSelection = function () {\n          var sel = editor.selection;\n          var start = Element$$1.fromDom(sel.getStart());\n          var end = Element$$1.fromDom(sel.getEnd());\n          var shared = DomParent.sharedOne(TableLookup.table, [\n            start,\n            end\n          ]);\n          shared.fold(function () {\n            annotations.clear(body);\n          }, noop);\n        };\n        var mouseHandlers = InputHandlers.mouse(win, body, isRoot, annotations);\n        var keyHandlers = InputHandlers.keyboard(win, body, isRoot, annotations);\n        var hasShiftKey = function (event) {\n          return event.raw().shiftKey === true;\n        };\n        var handleResponse = function (event, response) {\n          if (!hasShiftKey(event)) {\n            return;\n          }\n          if (response.kill()) {\n            event.kill();\n          }\n          response.selection().each(function (ns) {\n            var relative = relative$1(ns.start(), ns.finish());\n            var rng = asLtrRange(win, relative);\n            editor.selection.setRng(rng);\n          });\n        };\n        var keyup = function (event) {\n          var wrappedEvent = wrapEvent(event);\n          if (wrappedEvent.raw().shiftKey && SelectionKeys.isNavigation(wrappedEvent.raw().which)) {\n            var rng = editor.selection.getRng();\n            var start = Element$$1.fromDom(rng.startContainer);\n            var end = Element$$1.fromDom(rng.endContainer);\n            keyHandlers.keyup(wrappedEvent, start, rng.startOffset, end, rng.endOffset).each(function (response) {\n              handleResponse(wrappedEvent, response);\n            });\n          }\n        };\n        var keydown = function (event) {\n          var wrappedEvent = wrapEvent(event);\n          lazyResize().each(function (resize) {\n            resize.hideBars();\n          });\n          var rng = editor.selection.getRng();\n          var startContainer = Element$$1.fromDom(editor.selection.getStart());\n          var start = Element$$1.fromDom(rng.startContainer);\n          var end = Element$$1.fromDom(rng.endContainer);\n          var direction = Direction.directionAt(startContainer).isRtl() ? SelectionKeys.rtl : SelectionKeys.ltr;\n          keyHandlers.keydown(wrappedEvent, start, rng.startOffset, end, rng.endOffset, direction).each(function (response) {\n            handleResponse(wrappedEvent, response);\n          });\n          lazyResize().each(function (resize) {\n            resize.showBars();\n          });\n        };\n        var isMouseEvent = function (event) {\n          return event.hasOwnProperty('x') && event.hasOwnProperty('y');\n        };\n        var wrapEvent = function (event) {\n          var target = Element$$1.fromDom(event.target);\n          var stop = function () {\n            event.stopPropagation();\n          };\n          var prevent = function () {\n            event.preventDefault();\n          };\n          var kill = compose(prevent, stop);\n          return {\n            target: constant(target),\n            x: constant(isMouseEvent(event) ? event.x : null),\n            y: constant(isMouseEvent(event) ? event.y : null),\n            stop: stop,\n            prevent: prevent,\n            kill: kill,\n            raw: constant(event)\n          };\n        };\n        var isLeftMouse = function (raw) {\n          return raw.button === 0;\n        };\n        var isLeftButtonPressed = function (raw) {\n          if (raw.buttons === undefined) {\n            return true;\n          }\n          return (raw.buttons & 1) !== 0;\n        };\n        var mouseDown = function (e) {\n          if (isLeftMouse(e) && hasInternalTarget(e)) {\n            mouseHandlers.mousedown(wrapEvent(e));\n          }\n        };\n        var mouseOver = function (e) {\n          if (isLeftButtonPressed(e) && hasInternalTarget(e)) {\n            mouseHandlers.mouseover(wrapEvent(e));\n          }\n        };\n        var mouseUp = function (e) {\n          if (isLeftMouse(e) && hasInternalTarget(e)) {\n            mouseHandlers.mouseup(wrapEvent(e));\n          }\n        };\n        editor.on('mousedown', mouseDown);\n        editor.on('mouseover', mouseOver);\n        editor.on('mouseup', mouseUp);\n        editor.on('keyup', keyup);\n        editor.on('keydown', keydown);\n        editor.on('nodechange', syncSelection);\n        handlers = Option.some(handlerStruct({\n          mousedown: mouseDown,\n          mouseover: mouseOver,\n          mouseup: mouseUp,\n          keyup: keyup,\n          keydown: keydown\n        }));\n      });\n      var destroy = function () {\n        handlers.each(function (handlers) {\n        });\n      };\n      return {\n        clear: annotations.clear,\n        destroy: destroy\n      };\n    }\n\n    var Selections = function (editor) {\n      var get = function () {\n        var body = getBody$1(editor);\n        return TableSelection.retrieve(body, Ephemera.selectedSelector()).fold(function () {\n          if (editor.selection.getStart() === undefined) {\n            return SelectionTypes.none();\n          } else {\n            return SelectionTypes.single(editor.selection);\n          }\n        }, function (cells) {\n          return SelectionTypes.multiple(cells);\n        });\n      };\n      return { get: get };\n    };\n\n    var each$4 = global$1.each;\n    var addButtons = function (editor) {\n      var menuItems = [];\n      each$4('inserttable tableprops deletetable | cell row column'.split(' '), function (name) {\n        if (name === '|') {\n          menuItems.push({ text: '-' });\n        } else {\n          menuItems.push(editor.menuItems[name]);\n        }\n      });\n      editor.addButton('table', {\n        type: 'menubutton',\n        title: 'Table',\n        menu: menuItems\n      });\n      function cmd(command) {\n        return function () {\n          editor.execCommand(command);\n        };\n      }\n      editor.addButton('tableprops', {\n        title: 'Table properties',\n        onclick: cmd('mceTableProps'),\n        icon: 'table'\n      });\n      editor.addButton('tabledelete', {\n        title: 'Delete table',\n        onclick: cmd('mceTableDelete')\n      });\n      editor.addButton('tablecellprops', {\n        title: 'Cell properties',\n        onclick: cmd('mceTableCellProps')\n      });\n      editor.addButton('tablemergecells', {\n        title: 'Merge cells',\n        onclick: cmd('mceTableMergeCells')\n      });\n      editor.addButton('tablesplitcells', {\n        title: 'Split cell',\n        onclick: cmd('mceTableSplitCells')\n      });\n      editor.addButton('tableinsertrowbefore', {\n        title: 'Insert row before',\n        onclick: cmd('mceTableInsertRowBefore')\n      });\n      editor.addButton('tableinsertrowafter', {\n        title: 'Insert row after',\n        onclick: cmd('mceTableInsertRowAfter')\n      });\n      editor.addButton('tabledeleterow', {\n        title: 'Delete row',\n        onclick: cmd('mceTableDeleteRow')\n      });\n      editor.addButton('tablerowprops', {\n        title: 'Row properties',\n        onclick: cmd('mceTableRowProps')\n      });\n      editor.addButton('tablecutrow', {\n        title: 'Cut row',\n        onclick: cmd('mceTableCutRow')\n      });\n      editor.addButton('tablecopyrow', {\n        title: 'Copy row',\n        onclick: cmd('mceTableCopyRow')\n      });\n      editor.addButton('tablepasterowbefore', {\n        title: 'Paste row before',\n        onclick: cmd('mceTablePasteRowBefore')\n      });\n      editor.addButton('tablepasterowafter', {\n        title: 'Paste row after',\n        onclick: cmd('mceTablePasteRowAfter')\n      });\n      editor.addButton('tableinsertcolbefore', {\n        title: 'Insert column before',\n        onclick: cmd('mceTableInsertColBefore')\n      });\n      editor.addButton('tableinsertcolafter', {\n        title: 'Insert column after',\n        onclick: cmd('mceTableInsertColAfter')\n      });\n      editor.addButton('tabledeletecol', {\n        title: 'Delete column',\n        onclick: cmd('mceTableDeleteCol')\n      });\n    };\n    var addToolbars = function (editor) {\n      var isTable = function (table) {\n        var selectorMatched = editor.dom.is(table, 'table') && editor.getBody().contains(table);\n        return selectorMatched;\n      };\n      var toolbar = getToolbar(editor);\n      if (toolbar.length > 0) {\n        editor.addContextToolbar(isTable, toolbar.join(' '));\n      }\n    };\n    var Buttons = {\n      addButtons: addButtons,\n      addToolbars: addToolbars\n    };\n\n    var addMenuItems = function (editor, selections) {\n      var targets = Option.none();\n      var tableCtrls = [];\n      var cellCtrls = [];\n      var mergeCtrls = [];\n      var unmergeCtrls = [];\n      var noTargetDisable = function (ctrl) {\n        ctrl.disabled(true);\n      };\n      var ctrlEnable = function (ctrl) {\n        ctrl.disabled(false);\n      };\n      var pushTable = function () {\n        var self = this;\n        tableCtrls.push(self);\n        targets.fold(function () {\n          noTargetDisable(self);\n        }, function (targets) {\n          ctrlEnable(self);\n        });\n      };\n      var pushCell = function () {\n        var self = this;\n        cellCtrls.push(self);\n        targets.fold(function () {\n          noTargetDisable(self);\n        }, function (targets) {\n          ctrlEnable(self);\n        });\n      };\n      var pushMerge = function () {\n        var self = this;\n        mergeCtrls.push(self);\n        targets.fold(function () {\n          noTargetDisable(self);\n        }, function (targets) {\n          self.disabled(targets.mergable().isNone());\n        });\n      };\n      var pushUnmerge = function () {\n        var self = this;\n        unmergeCtrls.push(self);\n        targets.fold(function () {\n          noTargetDisable(self);\n        }, function (targets) {\n          self.disabled(targets.unmergable().isNone());\n        });\n      };\n      var setDisabledCtrls = function () {\n        targets.fold(function () {\n          each(tableCtrls, noTargetDisable);\n          each(cellCtrls, noTargetDisable);\n          each(mergeCtrls, noTargetDisable);\n          each(unmergeCtrls, noTargetDisable);\n        }, function (targets) {\n          each(tableCtrls, ctrlEnable);\n          each(cellCtrls, ctrlEnable);\n          each(mergeCtrls, function (mergeCtrl) {\n            mergeCtrl.disabled(targets.mergable().isNone());\n          });\n          each(unmergeCtrls, function (unmergeCtrl) {\n            unmergeCtrl.disabled(targets.unmergable().isNone());\n          });\n        });\n      };\n      editor.on('init', function () {\n        editor.on('nodechange', function (e) {\n          var cellOpt = Option.from(editor.dom.getParent(editor.selection.getStart(), 'th,td'));\n          targets = cellOpt.bind(function (cellDom) {\n            var cell = Element$$1.fromDom(cellDom);\n            var table = TableLookup.table(cell);\n            return table.map(function (table) {\n              return TableTargets.forMenu(selections, table, cell);\n            });\n          });\n          setDisabledCtrls();\n        });\n      });\n      var generateTableGrid = function () {\n        var html = '';\n        html = '<table role=\"grid\" class=\"mce-grid mce-grid-border\" aria-readonly=\"true\">';\n        for (var y = 0; y < 10; y++) {\n          html += '<tr>';\n          for (var x = 0; x < 10; x++) {\n            html += '<td role=\"gridcell\" tabindex=\"-1\"><a id=\"mcegrid' + (y * 10 + x) + '\" href=\"#\" ' + 'data-mce-x=\"' + x + '\" data-mce-y=\"' + y + '\"></a></td>';\n          }\n          html += '</tr>';\n        }\n        html += '</table>';\n        html += '<div class=\"mce-text-center\" role=\"presentation\">1 x 1</div>';\n        return html;\n      };\n      var selectGrid = function (editor, tx, ty, control) {\n        var table = control.getEl().getElementsByTagName('table')[0];\n        var x, y, focusCell, cell, active;\n        var rtl = control.isRtl() || control.parent().rel === 'tl-tr';\n        table.nextSibling.innerHTML = tx + 1 + ' x ' + (ty + 1);\n        if (rtl) {\n          tx = 9 - tx;\n        }\n        for (y = 0; y < 10; y++) {\n          for (x = 0; x < 10; x++) {\n            cell = table.rows[y].childNodes[x].firstChild;\n            active = (rtl ? x >= tx : x <= tx) && y <= ty;\n            editor.dom.toggleClass(cell, 'mce-active', active);\n            if (active) {\n              focusCell = cell;\n            }\n          }\n        }\n        return focusCell.parentNode;\n      };\n      var insertTable = hasTableGrid(editor) === false ? {\n        text: 'Table',\n        icon: 'table',\n        context: 'table',\n        onclick: cmd('mceInsertTable')\n      } : {\n        text: 'Table',\n        icon: 'table',\n        context: 'table',\n        ariaHideMenu: true,\n        onclick: function (e) {\n          if (e.aria) {\n            this.parent().hideAll();\n            e.stopImmediatePropagation();\n            editor.execCommand('mceInsertTable');\n          }\n        },\n        onshow: function () {\n          selectGrid(editor, 0, 0, this.menu.items()[0]);\n        },\n        onhide: function () {\n          var elements = this.menu.items()[0].getEl().getElementsByTagName('a');\n          editor.dom.removeClass(elements, 'mce-active');\n          editor.dom.addClass(elements[0], 'mce-active');\n        },\n        menu: [{\n            type: 'container',\n            html: generateTableGrid(),\n            onPostRender: function () {\n              this.lastX = this.lastY = 0;\n            },\n            onmousemove: function (e) {\n              var target = e.target;\n              var x, y;\n              if (target.tagName.toUpperCase() === 'A') {\n                x = parseInt(target.getAttribute('data-mce-x'), 10);\n                y = parseInt(target.getAttribute('data-mce-y'), 10);\n                if (this.isRtl() || this.parent().rel === 'tl-tr') {\n                  x = 9 - x;\n                }\n                if (x !== this.lastX || y !== this.lastY) {\n                  selectGrid(editor, x, y, e.control);\n                  this.lastX = x;\n                  this.lastY = y;\n                }\n              }\n            },\n            onclick: function (e) {\n              var self = this;\n              if (e.target.tagName.toUpperCase() === 'A') {\n                e.preventDefault();\n                e.stopPropagation();\n                self.parent().cancel();\n                editor.undoManager.transact(function () {\n                  InsertTable.insert(editor, self.lastX + 1, self.lastY + 1);\n                });\n                editor.addVisual();\n              }\n            }\n          }]\n      };\n      function cmd(command) {\n        return function () {\n          editor.execCommand(command);\n        };\n      }\n      var tableProperties = {\n        text: 'Table properties',\n        context: 'table',\n        onPostRender: pushTable,\n        onclick: cmd('mceTableProps')\n      };\n      var deleteTable = {\n        text: 'Delete table',\n        context: 'table',\n        onPostRender: pushTable,\n        cmd: 'mceTableDelete'\n      };\n      var row = {\n        text: 'Row',\n        context: 'table',\n        menu: [\n          {\n            text: 'Insert row before',\n            onclick: cmd('mceTableInsertRowBefore'),\n            onPostRender: pushCell\n          },\n          {\n            text: 'Insert row after',\n            onclick: cmd('mceTableInsertRowAfter'),\n            onPostRender: pushCell\n          },\n          {\n            text: 'Delete row',\n            onclick: cmd('mceTableDeleteRow'),\n            onPostRender: pushCell\n          },\n          {\n            text: 'Row properties',\n            onclick: cmd('mceTableRowProps'),\n            onPostRender: pushCell\n          },\n          { text: '-' },\n          {\n            text: 'Cut row',\n            onclick: cmd('mceTableCutRow'),\n            onPostRender: pushCell\n          },\n          {\n            text: 'Copy row',\n            onclick: cmd('mceTableCopyRow'),\n            onPostRender: pushCell\n          },\n          {\n            text: 'Paste row before',\n            onclick: cmd('mceTablePasteRowBefore'),\n            onPostRender: pushCell\n          },\n          {\n            text: 'Paste row after',\n            onclick: cmd('mceTablePasteRowAfter'),\n            onPostRender: pushCell\n          }\n        ]\n      };\n      var column = {\n        text: 'Column',\n        context: 'table',\n        menu: [\n          {\n            text: 'Insert column before',\n            onclick: cmd('mceTableInsertColBefore'),\n            onPostRender: pushCell\n          },\n          {\n            text: 'Insert column after',\n            onclick: cmd('mceTableInsertColAfter'),\n            onPostRender: pushCell\n          },\n          {\n            text: 'Delete column',\n            onclick: cmd('mceTableDeleteCol'),\n            onPostRender: pushCell\n          }\n        ]\n      };\n      var cell = {\n        separator: 'before',\n        text: 'Cell',\n        context: 'table',\n        menu: [\n          {\n            text: 'Cell properties',\n            onclick: cmd('mceTableCellProps'),\n            onPostRender: pushCell\n          },\n          {\n            text: 'Merge cells',\n            onclick: cmd('mceTableMergeCells'),\n            onPostRender: pushMerge\n          },\n          {\n            text: 'Split cell',\n            onclick: cmd('mceTableSplitCells'),\n            onPostRender: pushUnmerge\n          }\n        ]\n      };\n      editor.addMenuItem('inserttable', insertTable);\n      editor.addMenuItem('tableprops', tableProperties);\n      editor.addMenuItem('deletetable', deleteTable);\n      editor.addMenuItem('row', row);\n      editor.addMenuItem('column', column);\n      editor.addMenuItem('cell', cell);\n    };\n    var MenuItems = { addMenuItems: addMenuItems };\n\n    var getClipboardRows = function (clipboardRows) {\n      return clipboardRows.get().fold(function () {\n        return;\n      }, function (rows) {\n        return map(rows, function (row) {\n          return row.dom();\n        });\n      });\n    };\n    var setClipboardRows = function (rows, clipboardRows) {\n      var sugarRows = map(rows, Element$$1.fromDom);\n      clipboardRows.set(Option.from(sugarRows));\n    };\n    var getApi = function (editor, clipboardRows) {\n      return {\n        insertTable: function (columns, rows) {\n          return InsertTable.insert(editor, columns, rows);\n        },\n        setClipboardRows: function (rows) {\n          return setClipboardRows(rows, clipboardRows);\n        },\n        getClipboardRows: function () {\n          return getClipboardRows(clipboardRows);\n        }\n      };\n    };\n\n    function Plugin(editor) {\n      var resizeHandler = ResizeHandler(editor);\n      var cellSelection = CellSelection$1(editor, resizeHandler.lazyResize);\n      var actions = TableActions(editor, resizeHandler.lazyWire);\n      var selections = Selections(editor);\n      var clipboardRows = Cell(Option.none());\n      Commands.registerCommands(editor, actions, cellSelection, selections, clipboardRows);\n      Clipboard.registerEvents(editor, selections, actions, cellSelection);\n      MenuItems.addMenuItems(editor, selections);\n      Buttons.addButtons(editor);\n      Buttons.addToolbars(editor);\n      editor.on('PreInit', function () {\n        editor.serializer.addTempAttr(Ephemera.firstSelected());\n        editor.serializer.addTempAttr(Ephemera.lastSelected());\n      });\n      if (hasTabNavigation(editor)) {\n        editor.on('keydown', function (e) {\n          TabContext.handle(e, editor, actions, resizeHandler.lazyWire);\n        });\n      }\n      editor.on('remove', function () {\n        resizeHandler.destroy();\n        cellSelection.destroy();\n      });\n      return getApi(editor, clipboardRows);\n    }\n    global.add('table', Plugin);\n    function Plugin$1 () {\n    }\n\n    return Plugin$1;\n\n}());\n})();\n\n}.call(window));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tinymce/plugins/table/plugin.js\n// module id = BzBW/n5jRZ\n// module chunks = 2 3 28 35 44 54 73 85 102","//\n// Copyright (C) 2011 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see <http://www.gnu.org/licenses/>.\n\nimport I18n from 'i18n!media_comments'\nimport $ from 'jquery'\nimport preventDefault from '../fn/preventDefault'\nimport htmlEscape from 'str/htmlEscape'\nimport '../jquery/mediaComment'\n\nconst inlineMediaComment = {\n  buildMinimizerLink: () => $(\n    `<a href=\"#\" style=\"font-size: 0.8em;\">\n      ${htmlEscape(I18n.t('links.minimize_embedded_kaltura_content', 'Minimize embedded content'))}\n    </a>`\n  ),\n\n  buildCommentHolder: ($link) => $('<div><div class=\"innerholder\" tabindex=\"-1\" style=\"margin-bottom: 15px;\"></div></div>'),\n\n  getMediaCommentId ($link) {\n    let idAttr\n    let id = $link.data('media_comment_id') || $link.find('.media_comment_id:first').text()\n    if (!id) idAttr = $link.attr('id')\n    if (idAttr && idAttr.match(/^media_comment_/)) id = idAttr.substring(14)\n    return id\n  },\n\n  collapseComment ($holder) {\n    __guard__($holder.find('video,audio').data('mediaelementplayer'), x => x.pause())\n    $holder.remove()\n    $.trackEvent('hide_embedded_content', 'hide_media')\n  },\n}\n\nconst initialFocusInnerhold = (e) => {\n  $(e.target).find('div.mejs-audio').focus()\n}\n\nconst minTdWidth = 300\n\nconst isVideoInTd = ($link) => {\n  const $closestTd = $link.closest('td')\n  return $closestTd.length > 0\n}\n\nconst isContainingTdSmall = ($link) => {\n  const tdWidth = $link.closest('td').css('width').replace('px', '')\n  return tdWidth < minTdWidth\n}\n\nconst shouldResizeTd = ($link) => {\n  return isVideoInTd($link) && isContainingTdSmall($link)\n}\n\nconst resizeContainingTd = ($link) => {\n  const $closestTd = $link.closest('td')\n  const tdWidth = $closestTd.css('width')\n  $closestTd.data('orig-width', tdWidth)\n  $closestTd.css('width', `${minTdWidth}px`)\n}\n\n$(document).on('click', 'a.instructure_inline_media_comment', preventDefault(function () {\n  if (!INST.kalturaSettings) {\n    alert(I18n.t('alerts.kaltura_disabled', 'Kaltura has been disabled for this Canvas site'))\n    return\n  }\n\n  const $link = $(this)\n\n  let mediaType = 'video'\n  const id = inlineMediaComment.getMediaCommentId($link)\n  const $holder = inlineMediaComment.buildCommentHolder($link)\n\n  if (shouldResizeTd($link)) {\n    resizeContainingTd($link)\n  }\n\n  $link.after($holder)\n  $link.hide()\n\n  if ($link.data('media_comment_type') === 'audio' || $link.is('.audio_playback, .audio_comment, .instructure_audio_link')) {\n    mediaType = 'audio'\n  }\n\n  $holder.children('div').mediaComment('show_inline', id, mediaType, $link.data('download') || $link.attr('href'))\n\n  const $minimizer = inlineMediaComment.buildMinimizerLink()\n\n  $minimizer.appendTo($holder).click(preventDefault(() => {\n    const $closestTd = $link.closest('td')\n    $link.show().focus()\n    $closestTd.css('width', $closestTd.data('orig-width'))\n    inlineMediaComment.collapseComment($holder)\n  }))\n\n  $.trackEvent('show_embedded_content', 'show_media')\n  $holder.find('.innerholder').css('outline', 'none')\n  $holder.find('.innerholder').on('focus', initialFocusInnerhold)\n}))\n\nexport default inlineMediaComment\n\nfunction __guard__ (value, transform) {\n  return typeof value !== 'undefined' && value !== null ? transform(value) : undefined\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/behaviors/instructure_inline_media_comment.js","/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n(function () {\nvar autolink = (function () {\n    'use strict';\n\n    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\n\n    var getAutoLinkPattern = function (editor) {\n      return editor.getParam('autolink_pattern', /^(https?:\\/\\/|ssh:\\/\\/|ftp:\\/\\/|file:\\/|www\\.|(?:mailto:)?[A-Z0-9._%+\\-]+@)(.+)$/i);\n    };\n    var getDefaultLinkTarget = function (editor) {\n      return editor.getParam('default_link_target', '');\n    };\n    var Settings = {\n      getAutoLinkPattern: getAutoLinkPattern,\n      getDefaultLinkTarget: getDefaultLinkTarget\n    };\n\n    var rangeEqualsDelimiterOrSpace = function (rangeString, delimiter) {\n      return rangeString === delimiter || rangeString === ' ' || rangeString.charCodeAt(0) === 160;\n    };\n    var handleEclipse = function (editor) {\n      parseCurrentLine(editor, -1, '(');\n    };\n    var handleSpacebar = function (editor) {\n      parseCurrentLine(editor, 0, '');\n    };\n    var handleEnter = function (editor) {\n      parseCurrentLine(editor, -1, '');\n    };\n    var scopeIndex = function (container, index) {\n      if (index < 0) {\n        index = 0;\n      }\n      if (container.nodeType === 3) {\n        var len = container.data.length;\n        if (index > len) {\n          index = len;\n        }\n      }\n      return index;\n    };\n    var setStart = function (rng, container, offset) {\n      if (container.nodeType !== 1 || container.hasChildNodes()) {\n        rng.setStart(container, scopeIndex(container, offset));\n      } else {\n        rng.setStartBefore(container);\n      }\n    };\n    var setEnd = function (rng, container, offset) {\n      if (container.nodeType !== 1 || container.hasChildNodes()) {\n        rng.setEnd(container, scopeIndex(container, offset));\n      } else {\n        rng.setEndAfter(container);\n      }\n    };\n    var parseCurrentLine = function (editor, endOffset, delimiter) {\n      var rng, end, start, endContainer, bookmark, text, matches, prev, len, rngText;\n      var autoLinkPattern = Settings.getAutoLinkPattern(editor);\n      var defaultLinkTarget = Settings.getDefaultLinkTarget(editor);\n      if (editor.selection.getNode().tagName === 'A') {\n        return;\n      }\n      rng = editor.selection.getRng(true).cloneRange();\n      if (rng.startOffset < 5) {\n        prev = rng.endContainer.previousSibling;\n        if (!prev) {\n          if (!rng.endContainer.firstChild || !rng.endContainer.firstChild.nextSibling) {\n            return;\n          }\n          prev = rng.endContainer.firstChild.nextSibling;\n        }\n        len = prev.length;\n        setStart(rng, prev, len);\n        setEnd(rng, prev, len);\n        if (rng.endOffset < 5) {\n          return;\n        }\n        end = rng.endOffset;\n        endContainer = prev;\n      } else {\n        endContainer = rng.endContainer;\n        if (endContainer.nodeType !== 3 && endContainer.firstChild) {\n          while (endContainer.nodeType !== 3 && endContainer.firstChild) {\n            endContainer = endContainer.firstChild;\n          }\n          if (endContainer.nodeType === 3) {\n            setStart(rng, endContainer, 0);\n            setEnd(rng, endContainer, endContainer.nodeValue.length);\n          }\n        }\n        if (rng.endOffset === 1) {\n          end = 2;\n        } else {\n          end = rng.endOffset - 1 - endOffset;\n        }\n      }\n      start = end;\n      do {\n        setStart(rng, endContainer, end >= 2 ? end - 2 : 0);\n        setEnd(rng, endContainer, end >= 1 ? end - 1 : 0);\n        end -= 1;\n        rngText = rng.toString();\n      } while (rngText !== ' ' && rngText !== '' && rngText.charCodeAt(0) !== 160 && end - 2 >= 0 && rngText !== delimiter);\n      if (rangeEqualsDelimiterOrSpace(rng.toString(), delimiter)) {\n        setStart(rng, endContainer, end);\n        setEnd(rng, endContainer, start);\n        end += 1;\n      } else if (rng.startOffset === 0) {\n        setStart(rng, endContainer, 0);\n        setEnd(rng, endContainer, start);\n      } else {\n        setStart(rng, endContainer, end);\n        setEnd(rng, endContainer, start);\n      }\n      text = rng.toString();\n      if (text.charAt(text.length - 1) === '.') {\n        setEnd(rng, endContainer, start - 1);\n      }\n      text = rng.toString().trim();\n      matches = text.match(autoLinkPattern);\n      if (matches) {\n        if (matches[1] === 'www.') {\n          matches[1] = 'http://www.';\n        } else if (/@$/.test(matches[1]) && !/^mailto:/.test(matches[1])) {\n          matches[1] = 'mailto:' + matches[1];\n        }\n        bookmark = editor.selection.getBookmark();\n        editor.selection.setRng(rng);\n        editor.execCommand('createlink', false, matches[1] + matches[2]);\n        if (defaultLinkTarget) {\n          editor.dom.setAttrib(editor.selection.getNode(), 'target', defaultLinkTarget);\n        }\n        editor.selection.moveToBookmark(bookmark);\n        editor.nodeChanged();\n      }\n    };\n    var setup = function (editor) {\n      var autoUrlDetectState;\n      editor.on('keydown', function (e) {\n        if (e.keyCode === 13) {\n          return handleEnter(editor);\n        }\n      });\n      if (global$1.ie) {\n        editor.on('focus', function () {\n          if (!autoUrlDetectState) {\n            autoUrlDetectState = true;\n            try {\n              editor.execCommand('AutoUrlDetect', false, true);\n            } catch (ex) {\n            }\n          }\n        });\n        return;\n      }\n      editor.on('keypress', function (e) {\n        if (e.keyCode === 41) {\n          return handleEclipse(editor);\n        }\n      });\n      editor.on('keyup', function (e) {\n        if (e.keyCode === 32) {\n          return handleSpacebar(editor);\n        }\n      });\n    };\n    var Keys = { setup: setup };\n\n    global.add('autolink', function (editor) {\n      Keys.setup(editor);\n    });\n    function Plugin () {\n    }\n\n    return Plugin;\n\n}());\n})();\n\n}.call(window));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tinymce/plugins/autolink/plugin.js\n// module id = Cqy2s5HHna\n// module chunks = 2 3 28 35 44 54 73 85 102","//\n// Copyright (C) 2011 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see <http://www.gnu.org/licenses/>.\n\n// mediaComment.coffee\nimport I18n from 'i18n!media_comments'\nimport _ from 'underscore'\nimport pubsub from 'vendor/jquery.ba-tinypubsub'\nimport mejs from 'vendor/mediaelement-and-player'\nimport MediaElementKeyActionHandler from 'jsx/mediaelement/MediaElementKeyActionHandler'\nimport $ from 'jquery'\nimport kalturaAnalytics from '../util/kalturaAnalytics'\nimport htmlEscape from 'str/htmlEscape'\nimport sanitizeUrl from 'jsx/shared/helpers/sanitizeUrl';\n\n// #\n// a module for some of the transformation functions pulled out of the middle\n// of this jQuery plugin to keep their dependencies light\n//\n// @exports\nconst MediaCommentUtils = {\n  // #\n  // given the type and source/track tags, build\n  // an html5 media element to replace our media comment when interacted\n  // with\n  //\n  // @private\n  //\n  // @param {string} tagType should be \"audio\" or \"video\" generally, this is\n  //   used for the name of the tag but also to decide whether to include\n  //   width and height\n  //\n  // @param {HTML string} st_tags the html for the source and track tags that we\n  //   might want to include inside the media element\n  //\n  // @param {int} width the desired width of the element, only applicable for\n  //   video tags\n  //\n  // @param {int} height the desired height of the element, only applicable for\n  //   video tags\n  //\n  // @returns {jQuery Object} a new dom element (not yet attached anywhere)\n  //   that is the media element\n  getElement (tagType, st_tags, width, height) {\n    const dimensions = (tagType === 'video') ? ` width=\"${width}\" height=\"${height}\"` : ''\n    const html = `<${tagType} ${dimensions} preload=\"metadata\" controls>${st_tags}</${tagType}>`\n    return $(html)\n  }\n}\n\nconst VIDEO_WIDTH = 550\nconst VIDEO_HEIGHT = 448\n$.extend(mejs.MediaElementDefaults, {\n  // shows debug errors on screen\n  // enablePluginDebug: false\n  // path to Flash and Silverlight plugins\n  pluginPath: '/images/mediaelement/',\n  // default if the <video width> is not specified\n  defaultVideoWidth: VIDEO_WIDTH,\n  // default if the <video height> is not specified\n  defaultVideoHeight: VIDEO_HEIGHT,\n})\n\nmejs.MepDefaults.success = function (mediaElement, domObject) {\n  kalturaAnalytics(this.mediaCommentId, mediaElement, INST.kalturaSettings)\n  return mediaElement.play()\n}\n\n// track events in google analytics\nmejs.MepDefaults.features.push('googleanalytics')\n\nconst positionAfterSubtitleSelector = mejs.MepDefaults.features.indexOf('tracks') + 1\n\n// enable the source chooser\nmejs.MepDefaults.features.splice(positionAfterSubtitleSelector, 0, 'sourcechooser')\n\n// enable the playback speed selector\nmejs.MepDefaults.features.splice(positionAfterSubtitleSelector, 0, 'speed')\n\nfunction getSourcesAndTracks (id) {\n  const dfd = new $.Deferred()\n  $.getJSON(`/media_objects/${id}/info`, (data) => {\n    // this 'when ...' is because right now in canvas, none of the mp3 urls actually work.\n    // see: CNVS-12998\n    const sources = data.media_sources.filter(source => source.content_type !== 'audio/mp3').map((source) =>\n    // xsslint safeString.function sanitizeUrl\n    `<source\n        type='${htmlEscape(source.content_type)}'\n        src='${sanitizeUrl(htmlEscape(source.url))}'\n        title='${htmlEscape(source.width)}x${htmlEscape(source.height)} ${htmlEscape(Math.floor(source.bitrate / 1024))} kbps'\n      />`\n    )\n\n    const tracks = _.map(data.media_tracks, (track) => {\n      const languageName = mejs.language.codes[track.locale] || track.locale\n      return `<track kind='${htmlEscape(track.kind)}' label='${htmlEscape(languageName)}' src='${htmlEscape(track.url)}' srclang='${htmlEscape(track.locale)}' />`\n    })\n\n    const types = _.map(data.media_sources, source => source.content_type)\n    return dfd.resolve({sources, tracks, types, can_add_captions: data.can_add_captions})\n  })\n  return dfd\n}\n\nfunction createMediaTag ({sourcesAndTracks, mediaType, height, width, mediaPlayerOptions}) {\n  let tagType = mediaType === 'video' ? 'video' : 'audio'\n  const st_tags = sourcesAndTracks.sources.concat(sourcesAndTracks.tracks).join('')\n  function willPlayAudioInFlash () {\n    const opts = $.extend({mode: 'auto'}, mejs.MediaElementDefaults, mejs.MepDefaults, mediaPlayerOptions)\n    const element = MediaCommentUtils.getElement('audio', st_tags)\n    const playback = mejs.HtmlMediaElementShim.determinePlayback(\n      element[0],\n      opts,\n      mejs.MediaFeatures.supportsMediaTag,\n      !!'isMediaTag',\n      null\n    )\n    return playback.method !== 'native'\n  }\n\n  // We only need to do this if we try to play audio in a flash player.\n  // A lot of our recorded audio is actually served up via video/mp4 or video/flv.\n  // We need to trick the flash player into playing the video, but looking like\n  // an audio player.\n  if (mediaType === 'audio' && sourcesAndTracks.types[0].match(/^video\\//) && willPlayAudioInFlash()) {\n    tagType = 'video'\n    mediaPlayerOptions.mode = 'auto_plugin'\n    mediaPlayerOptions.isVideo = false\n    mediaPlayerOptions.videoHeight = height = 30\n  }\n\n  return MediaCommentUtils.getElement(tagType, st_tags, width, height)\n}\n\nconst mediaCommentActions = {\n  create (mediaType, callback, onClose, defaultTitle) {\n    $('#media_recorder_container').removeAttr('id')\n    this.attr('id', 'media_recorder_container')\n    pubsub.unsubscribe('media_comment_created')\n    pubsub.subscribe('media_comment_created', data => callback(data.id, data.mediaType, data.title))\n\n    const initOpts = {modal: false, defaultTitle}\n    if ($.isFunction(onClose)) initOpts.close = onClose.bind(this)\n\n    return $.mediaComment.init(mediaType, initOpts)\n  },\n\n  show_inline (id, mediaType = 'video', downloadUrl) {\n    // todo: replace .andSelf with .addBack when JQuery is upgraded.\n    const $holder = $(this).closest('.instructure_file_link_holder').andSelf().first()\n    $holder.text(I18n.t('loading', 'Loading media...'))\n\n    const showInline = function (id, holder) {\n      const width = Math.min(holder.closest('div,p,table').width() || VIDEO_WIDTH, VIDEO_WIDTH)\n      const height = Math.round(width / 336 * 240)\n      return getSourcesAndTracks(id).done((sourcesAndTracks) => {\n        if (sourcesAndTracks.sources.length) {\n          const mediaPlayerOptions = {\n            can_add_captions: sourcesAndTracks.can_add_captions,\n            mediaCommentId: id,\n            googleAnalyticsTitle: id,\n            menuTimeoutMouseLeave: 50,\n            success (media) {\n              holder.focus()\n              media.play()\n            },\n            keyActions: [\n              {\n                keys: _.values(MediaElementKeyActionHandler.keyCodes),\n                action (player, media, keyCode, event) {\n                  if (player.isVideo) {\n                    player.showControls()\n                    player.startControlsTimer()\n                  }\n\n                  const handler = new MediaElementKeyActionHandler(mejs, player, media, event)\n                  handler.dispatch()\n                },\n              }\n            ],\n          }\n\n          const $mediaTag = createMediaTag({\n            sourcesAndTracks,\n            mediaPlayerOptions,\n            mediaType,\n            height,\n            width,\n          })\n          $mediaTag.appendTo(holder.html(''))\n          const player = new MediaElementPlayer($mediaTag, mediaPlayerOptions)\n          $mediaTag.data('mediaelementplayer', player)\n        } else {\n          holder.text(I18n.t('media_still_converting', 'Media is currently being converted, please try again in a little bit.'))\n        }\n      })\n    }\n\n    if (id === 'maybe') {\n      const detailsUrl = downloadUrl.replace(/\\/download.*/, '')\n      const onError = () => $holder.text(I18n.t('Media has been queued for conversion, please try again in a little bit.'))\n      const onSuccess = function (data) {\n        if (data.attachment && data.attachment.media_entry_id !== 'maybe') {\n          $holder.text('')\n          return showInline(data.attachment.media_entry_id, $holder)\n        } else {\n          return onError()\n        }\n      }\n      return $.ajaxJSON(detailsUrl, 'GET', {}, onSuccess, onError)\n    } else {\n      return showInline(id, $holder)\n    }\n  },\n\n  show (id, mediaType = 'video', openingElement = null) {\n    // if a media comment is still open, close it.\n    $('.play_media_comment').find('.ui-dialog-titlebar-close').click()\n\n    const $this = $(this)\n\n    const dialog = $this.data('media_comment_dialog')\n    if (dialog) {\n      dialog.dialog('open')\n    } else {\n      // Create a dialog box\n      let height, width\n      if (mediaType === 'video') {\n        height = 426\n        width = VIDEO_WIDTH\n      } else {\n        height = 180\n        width = 400\n      }\n\n      const $dialog = $('<div style=\"overflow: hidden; padding: 0;\" />')\n      if (mediaType === 'audio') $dialog.css('padding-top', '120px')\n\n      $dialog.dialog({\n        dialogClass: 'play_media_comment',\n        title: I18n.t('titles.play_comment', 'Play Media Comment'),\n        width,\n        height: height + 60, // include height of dialog titlebar\n        modal: false,\n        resizable: false,\n        close: () => {\n          const $mediaPlayer = $this.data('mediaelementplayer')\n          if ($mediaPlayer) $mediaPlayer.pause()\n\n          if (openingElement) {\n            openingElement.focus()\n          }\n        },\n        open: event => {\n          $(event.currentTarget).closest('.ui-dialog')\n            .attr('role', 'dialog')\n            .attr('aria-label', I18n.t('Play Media Comment'))\n          $(event.currentTarget).parent().find('.ui-dialog-titlebar-close').focus()\n        }\n      })\n\n      // Populate dialog box with a video\n      return $dialog.disableWhileLoading(getSourcesAndTracks(id).done((sourcesAndTracks) => {\n        if (sourcesAndTracks.sources.length) {\n          const mediaPlayerOptions = {\n            can_add_captions: sourcesAndTracks.can_add_captions,\n            mediaCommentId: id,\n            googleAnalyticsTitle: id,\n          }\n\n          const $mediaTag = createMediaTag({sourcesAndTracks, mediaPlayerOptions, mediaType, height, width})\n          $mediaTag.appendTo($dialog.html(''))\n\n          $this.data({\n            mediaelementplayer: new MediaElementPlayer($mediaTag, mediaPlayerOptions),\n            media_comment_dialog: $dialog\n          })\n        } else {\n          $dialog.text(I18n.t('media_still_converting', 'Media is currently being converted, please try again in a little bit.'))\n        }\n      }))\n    }\n  }\n}\n\n$.fn.mediaComment = function (command, ...restArgs) {\n  if (!INST.kalturaSettings) {\n    return console.log('Kaltura has not been enabled for this account')\n  } else {\n    mediaCommentActions[command].apply(this, restArgs)\n  }\n  return this\n}\n\nexport default MediaCommentUtils\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/jquery/mediaComment.js","//\n// Copyright (C) 2012 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see <http://www.gnu.org/licenses/>.\n\nimport $ from  'jquery'\nimport KyleMenu from '../jquery.kylemenu'\n\n// this is a behaviour that will automatically set up a set of .admin-links\n// when the button is clicked, see _admin_links.scss for markup\n$(document).on('mousedown click keydown', '.al-trigger', function (event) {\n  const $trigger = $(this)\n  if ($trigger.data('kyleMenu')) return\n\n  let opts = $.extend({noButton: true}, $trigger.data('kyleMenuOptions'))\n  if ($trigger.data('append-to-body')) opts.appendMenuTo = 'body'\n\n  opts = $.extend(opts, {\n    popupOpts: {\n      position: {\n        my: $trigger.data('popup-my'),\n        at: $trigger.data('popup-at'),\n        within: $trigger.data('popup-within'),\n      }\n    }\n  })\n  new KyleMenu($trigger, opts)\n  $trigger.trigger(event)\n})\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/behaviors/admin-links.js","/*\n * Copyright (C) 2015 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport $ from 'jquery'\n\nconst selector = '.lti-thumbnail-launch'\n\nfunction handleLaunch (event) {\n  event.preventDefault()\n  ltiThumbnailLauncher.launch($(event.target).closest(selector))\n}\n\nclass LtiThumbnailLauncher {\n  constructor () {\n    $(document.body).delegate(selector, 'click', handleLaunch)\n  }\n\n  launch (element) {\n    const placement = JSON.parse(element.attr('target'))\n    const iframe = $('<iframe/>', {\n      src: element.attr('href'),\n      allowfullscreen: '',\n      width: placement.displayWidth || 500,\n      height: placement.displayHeight || 500\n    })\n    element.replaceWith(iframe)\n  }\n}\n\n// There can be only one LtiThumbnailLauncher\nconst ltiThumbnailLauncher = new LtiThumbnailLauncher(selector)\nexport default ltiThumbnailLauncher\n\n\n\n// WEBPACK FOOTER //\n// ./public/javascripts/LtiThumbnailLauncher.js","//\n// Copyright (C) 2012 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see <http://www.gnu.org/licenses/>.\n\n// a way to hide show one element/dialog by clicking on another\n\n// see: http://test.cita.illinois.edu/aria/hideshow/hideshow1.php\n\n// examples:\n\n// <a href=\"#\" class=\"element_toggler\" role=\"button\" data-html-while-target-shown=\"Hide Thing\" aria-controls=\"thing\">Show Thing</a>\n// <div id=\"thing\" tabindex=\"-1\" role=\"region\" style=\"display:none\">\n//     Here is a bunch more info about \"thing\"\n// </div>\n\n// <a href=\"#\" class=\"element_toggler\" role=\"button\" data-hide-while-target-shown=true aria-controls=\"thing\">Show Thing, then hide me</a>\n// <div id=\"thing\" tabindex=\"-1\" role=\"region\" style=\"display:none\">blah</div>\n//\n\n// a dialog example\n//\n// <button class=\"element_toggler\" aria-controls=\"thing\">Show Thing Dialog</button>\n// <form id=\"thing\" data-turn-into-dialog='{\"width\":450,\"modal\":true}' style=\"display:none\">\n//   This will pop up as a dialog when you click the button and pass along the data-turn-into-dialog\n//   options.  then it will pass it through fixDialogButtons to turn the buttons in your markup\n//   into proper dialog buttons (look at fixDialogButtons to see what it does)\n//   <div class=\"button-container\">\n//     <button type=\"submit\">This will Submit the form</button>\n//     <a class=\"btn dialog_closer\">This will cause the dialog to close</a>\n//   </div>\n// </form>\n\nimport $ from 'jquery'\nimport '../jquery/fixDialogButtons'\n\nfunction updateTextToState (newStateOfRegion) {\n  return function () {\n    let newText\n    const $this = $(this)\n    if (!(newText = $this.data(`textWhileTarget${newStateOfRegion}`))) return\n\n    // save the old state as the current html unless it has already been set\n    const oldStateKey = `textWhileTarget${newStateOfRegion === 'Hidden' ? 'Shown' : 'Hidden'}`\n    const savedText = $this.data(oldStateKey)\n    if (!savedText) $this.data(oldStateKey, $this.text())\n\n    // update the element with the new text\n    $this.text(newText)\n  }\n}\n\nfunction toggleRegion ($region, showRegion, $trigger) {\n  let dialogOpts\n  if (showRegion == null) {\n    showRegion = $region.is(':ui-dialog:hidden') || $region.attr('aria-expanded') !== 'true'\n  }\n  const $allElementsControllingRegion = $(`[aria-controls*=${$region.attr('id')}]`)\n\n  // hide/un-hide .element_toggler's that point to this $region that were hidden because they have\n  // the data-hide-while-target-shown attribute\n  $allElementsControllingRegion\n    .filter(function () {\n      return $(this).data('hideWhileTargetShown')\n    })\n    .toggle(!showRegion)\n\n  if ($trigger && $trigger.attr('aria-expanded') !== undefined) {\n    $trigger.attr('aria-expanded', !($trigger.attr('aria-expanded') === 'true'))\n    $region.toggle($trigger.attr('aria-expanded') === 'true')\n  } else {\n    $region.attr('aria-expanded', `${showRegion}`).toggle(showRegion)\n  }\n\n  // behavior if $region is a dialog\n  if ($region.is(':ui-dialog') || (dialogOpts = $region.data('turnIntoDialog'))) {\n    if (dialogOpts && showRegion) {\n      // markup said data-turn-into-dialog, but it's not a dialog yet, make it one\n      dialogOpts = $.extend({\n        autoOpen: false,\n        close () {\n          toggleRegion($region, false)\n        }\n      }, dialogOpts)\n      $region.dialog(dialogOpts).fixDialogButtons()\n    }\n\n    if (showRegion) {\n      $region.dialog('open')\n\n      if ($region.data('read-on-open')) {\n        $region.dialog('widget').attr('aria-live', 'assertive').attr('aria-atomic', 'true')\n      }\n    } else if ($region.dialog('isOpen')) {\n      $region.dialog('close')\n    }\n  }\n\n  $allElementsControllingRegion.each(updateTextToState(showRegion ? 'Shown' : 'Hidden'))\n}\n\nconst elementTogglerBehavior = {\n  bind () {\n    $(document).on('click change keyclick', '.element_toggler[aria-controls]', function (event) {\n      let force\n      const $this = $(this)\n\n      if ($this.is('input[type=\"checkbox\"]')) {\n        if (event.type === 'click') return\n        force = $this.prop('checked')\n      }\n\n      if (event.type === 'click') event.preventDefault()\n\n      // allow .links inside .user_content to be elementTogglers, but only for other elements inside of\n      // that .user_content area\n      let $parent = $this.closest('.user_content')\n      if (!$parent.length) $parent = $(document.body)\n\n      const $region = $parent.find(`#${$this.attr('aria-controls').replace(/\\s/g, ', #')}`)\n      if ($region.length) toggleRegion($region, force, $this)\n\n      const $icon = $this.find('i[class*=\"icon-mini-arrow\"].auto_rotate')\n      if ($icon.length) {\n        $icon.toggleClass('icon-mini-arrow-down')\n        $icon.toggleClass('icon-mini-arrow-right')\n      }\n    })\n  }\n}\n\nelementTogglerBehavior.bind()\n\nexport default elementTogglerBehavior\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/behaviors/elementToggler.js","/*\n * Copyright (C) 2011 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport $ from 'jquery'\nimport 'jqueryui/draggable'\nimport './jquery.instructure_misc_plugins' /* confirmDelete */\n\n$(document).ready(function() {\n  $(\"#floating_reminders\").draggable();\n  $(\".show_reminders_link\").click(function(event) {\n    event.preventDefault();\n    $(this).blur();\n    var $floater = $(\"#floating_reminders\");\n    var $helper = $floater.clone();\n    $helper.children().css('visibility', 'hidden');\n    var offset = $(\"#reminders_icon\").offset();\n    var floaterTop = $(\"#floating_reminders\").offset().top;\n    $floater.after($helper);\n    $helper.css({\n      width: 20,\n      height: 20,\n      left: offset.left,\n      top: offset.top - floaterTop,\n      opacity: 0.0\n    });\n    $floater.css('visibility', 'hidden').css('left', '');\n    $helper.animate({\n      top: $floater.css('top'),\n      left: $floater.css('left'),\n      width: $floater.width(),\n      height: $floater.height(),\n      opacity: 1.0\n    }, 'slow', function() {\n      $(this).remove();\n      $floater.css('visibility', 'visible');\n      $floater.find(\"a:not(.hide_reminders_link):visible:first\").focus();\n      $(\"#reminders_icon\").hide();\n    });\n    var url = $floater.find(\".update_session_url\").attr('href');\n  });\n  $(\".hide_reminders_link\").click(function(event) {\n    event.preventDefault();\n    var $floater = $(this).parents(\"#floating_reminders\");\n    var $helper = $floater.clone();\n    $floater.after($helper).css('left', -2000);\n    $helper.children().css('visibility', 'hidden');\n    var offset = $(\"#reminders_icon\").show().offset();\n    var floaterTop = $helper.offset().top;\n    $helper.animate({\n      width: 20,\n      height: 20,\n      left: offset.left,\n      top: offset.top - floaterTop,\n      opacity: 0.0\n    }, 'slow', function() {\n      $(this).remove();\n    });\n    var url = $floater.find(\".update_session_url\").attr('href');\n  });\n  $(\".drop_held_context_link\").click(function(event) {\n    event.preventDefault();\n    var $reminder = $(this).parents(\".reminder\");\n    $reminder.confirmDelete({\n      url: $(this).attr('href'),\n      message: \"Are you sure you want to drop this \" + $reminder.find(\".item_type\").text() + \"?\",\n      success: function(data) {\n        $(this).fadeOut('fast', function() {\n          $(this).remove();\n          if($(\"#floating_reminders .reminder\").length === 0) {\n            $(\"#floating_reminders\").fadeOut('fast', function() {\n              $(this).remove();\n              $(\"#reminders_icon\").remove();\n            });\n          }\n        });\n      }\n    });\n  });\n});\n\n\n\n// WEBPACK FOOTER //\n// ./public/javascripts/reminders.js","//\n// Copyright (C) 2013 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see <http://www.gnu.org/licenses/>.\n\nimport $ from 'jquery'\nimport _ from 'underscore'\nimport 'jquery.cookie'\n\n// A class to setup kaltura analytics listeners on a mediaElement player\n// for a specific video being played\n// As events are created they are sent to kaltura's analytics api\nclass KalturaAnalytics {\n  constructor(mediaId, mediaElement, pluginSettings) {\n    this.queueAnalyticEvent = this.queueAnalyticEvent.bind(this)\n    this.ensureAnalyticSession = this.ensureAnalyticSession.bind(this)\n    this.generateApiUrl = this.generateApiUrl.bind(this)\n    this.setupApiIframes = this.setupApiIframes.bind(this)\n    this.queueApiCall = this.queueApiCall.bind(this)\n    this.addListeners = this.addListeners.bind(this)\n    this.mediaId = mediaId\n    this.mediaElement = mediaElement\n    this.pluginSettings = pluginSettings\n    this.ensureAnalyticSession()\n    this.generateApiUrl()\n\n    this.defaultData = {\n      service: 'stats',\n      action: 'collect',\n      'event:entryId': this.mediaId,\n      'event:sessionId': this.kaSession,\n      'event:isFirstInSession': 'false',\n      'event:objectType': 'KalturaStatsEvent',\n      'event:partnerId': this.pluginSettings.partner_id,\n      'event:uiconfId': this.pluginSettings.kcw_ui_conf,\n      'event:queryStringReferrer': window.location.href\n    }\n  }\n\n  // Builds the url to send the analytic event and adds it to the processing queue\n  queueAnalyticEvent(eventId) {\n    const data = _.clone(this.defaultData)\n    data['event:eventType'] = eventId\n    data['event:duration'] = this.mediaElement.duration\n    data['event:currentPoint'] = parseInt(this.mediaElement.currentTime * 1000)\n    data['event:eventTimestamp'] = new Date().getTime()\n\n    return this.queueApiCall(this.apiUrl + $.param(data))\n  }\n\n  // kaltura expects a persistent analytic session token for the user\n  // this generates a simple session id for analytic purposes\n  // no session/authentication is associated with this token\n  ensureAnalyticSession() {\n    this.kaSession = $.cookie('kaltura_analytic_tracker', undefined, {path: '/'})\n    if (!this.kaSession) {\n      this.kaSession = (\n        Math.random().toString(16) +\n        Math.random().toString(16) +\n        Math.random().toString(16)\n      ).replace(/\\./g, '')\n      return $.cookie('kaltura_analytic_tracker', this.kaSession, {path: '/'})\n    }\n  }\n\n  // pulls the kaltura domain from the plugin settins and sets up the base\n  // url for sending analytics events\n  generateApiUrl() {\n    let domain\n    if (window.location.protocol === 'http:') {\n      domain = `http://${this.pluginSettings.domain}`\n    } else {\n      domain = `https://${this.pluginSettings.domain}`\n    }\n\n    return (this.apiUrl = `${domain}/api_v3/index.php?`)\n  }\n\n  // Since the analytic call is a cross-domain call, set the url in an iFrame\n  setupApiIframes(count) {\n    this.qIndex = 0\n    this.iframes = []\n    for (let i = 0, end = count - 1, asc = end >= 0; asc ? i <= end : i >= end; asc ? i++ : i--) {\n      const iframe = document.createElement('iframe')\n      $(iframe).addClass('hidden kaltura-analytics')\n      $(document.body).append($(iframe))\n\n      // there is no reliable way to know when a remote url has loaded in an\n      // iframe, so just send them every 4 seconds\n      const queue = []\n      const f = ((iframe, queue) =>\n        function() {\n          let url\n          if ((url = queue.shift())) {\n            return (iframe.src = url)\n          }\n        })(iframe, queue)\n      this.iframes[i] = {iframe, queue, pinger: _.throttle(f, 4000)}\n    }\n    return this.iframes\n  }\n\n  queueApiCall(url) {\n    if (!this.iframes) {\n      this.setupApiIframes(this.pluginSettings.parallel_api_calls || 3)\n    }\n    this.iframes[this.qIndex].queue.push(url)\n    this.iframes[this.qIndex].pinger()\n    this.qIndex = (this.qIndex + 1) % this.iframes.length\n    return this.qIndex\n  }\n\n  // Adds event listenrs to the mediaElement player\n  //\n  // Tracks events for widget loaded, play, replay, media loaded, seek, buffer\n  // open full screen, close full screen, and play progress\n  addListeners() {\n    this.queueAnalyticEvent(1) // widget loaded\n\n    this.mediaElement.addEventListener('play', () => {\n      this.mediaElement.pauseObserved = false\n      this.mediaElement.endedObserved = false\n      if (this.mediaElement.endedOnce) {\n        this.queueAnalyticEvent(mediaId, 16) // Replay\n        this.mediaElement.endedOnce = false\n      }\n      return this.queueAnalyticEvent(3)\n    }) // Play\n\n    this.mediaElement.addEventListener('canplay', () => this.queueAnalyticEvent(2)) // media loaded\n\n    this.mediaElement.addEventListener('seeked', () => {\n      if (this.mediaElement.endedObserved) return\n      return this.queueAnalyticEvent(17)\n    }) // 'seek'\n\n    this.mediaElement.addEventListener('pause', () => {\n      if (this.mediaElement.pauseObserved) return\n      return (this.mediaElement.pauseObserved = true)\n    })\n\n    // first time loaded\n    this.mediaElement.addEventListener('progress', () => {\n      if (!this.mediaElement.endedOnce) {\n        return this.queueAnalyticEvent(12)\n      }\n    }) // 'progress / buffering'\n\n    let _lastTime = 0\n    let _isFullScreen = false\n    return this.mediaElement.addEventListener(\n      'playing',\n      e => {\n        if (this.mediaElement.listeningToPlaying) return\n\n        const interval = setInterval(() => {\n          if (\n            this.mediaElement.paused ||\n            isNaN(this.mediaElement.duration) ||\n            !this.mediaElement.duration\n          )\n            return\n\n          if (this.mediaElement.isFullScreen !== _isFullScreen) {\n            if (!_isFullScreen) {\n              this.queueAnalyticEvent(14) // open full screen\n            } else {\n              this.queueAnalyticEvent(15) // close full screen\n            }\n            _isFullScreen = this.mediaElement.isFullScreen\n          }\n\n          const stopPoints = [\n            0.25 * this.mediaElement.duration,\n            0.5 * this.mediaElement.duration,\n            0.75 * this.mediaElement.duration,\n            0.98 * this.mediaElement.duration // :)\n          ]\n          const {currentTime} = this.mediaElement\n          if (!isNaN(currentTime) && currentTime > 0) {\n            let j = stopPoints.length - 1\n\n            while (j >= 0) {\n              const cueTime = stopPoints[j]\n              if (cueTime > _lastTime && cueTime <= currentTime) {\n                if (j === 0) {\n                  this.queueAnalyticEvent(4) // play reached 25\n                } else if (j === 1) {\n                  this.queueAnalyticEvent(5) // play reached 50\n                } else if (j === 2) {\n                  this.queueAnalyticEvent(6) // play reached 75\n                } else if (j === 3) {\n                  this.queueAnalyticEvent(7) // play reached \"100\"\n                }\n              }\n              --j\n            }\n            return (_lastTime = currentTime)\n          }\n        }, 50)\n        return (this.mediaElement.listeningToPlaying = true)\n      },\n      false\n    )\n  }\n}\n\nexport default function(mediaId, mediaElement, pluginSettings) {\n  if (pluginSettings && pluginSettings.do_analytics) {\n    const ka = new KalturaAnalytics(mediaId, mediaElement, pluginSettings)\n    ka.addListeners()\n    return ka\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/util/kalturaAnalytics.js","/*\n * Copyright (C) 2019 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport tinymce from 'compiled/editor/stocktiny'\n\nexport default function sanitizeHtml(html) {\n  return new tinymce.html.Serializer().serialize(new tinymce.html.DomParser().parse(html));\n}\n\n\n// WEBPACK FOOTER //\n// ./app/jsx/shared/sanitizeHtml.js","//\n// Copyright (C) 2013 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see <http://www.gnu.org/licenses/>.\n\nimport $ from 'jquery'\n\nfunction fireKeyclick (e) {\n  const kce = $.Event('keyclick')\n  $(e.target).trigger(kce)\n  if (kce.isDefaultPrevented()) e.preventDefault()\n  if (kce.isPropagationStopped()) e.stopPropagation()\n}\n\nfunction keydownHandler (e) {\n  switch (e.which) {\n    case 13:\n      return fireKeyclick(e)\n    case 32:\n      // prevent scrolling when the spacebar is pressed on a \"button\"\n      return e.preventDefault()\n  }\n}\n\nfunction keyupHandler (e) {\n  switch (e.which) {\n    case 32:\n      return fireKeyclick(e)\n  }\n}\n\n$.fn.activate_keyclick = function (selector = null) {\n  this.on('keydown', selector, keydownHandler)\n  return this.on('keyup', selector, keyupHandler)\n}\n\n$(document).activate_keyclick('[role=button], [role=checkbox]')\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/behaviors/activate.js","/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n(function () {\nvar wordcount = (function () {\n    'use strict';\n\n    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.Env');\n\n    var regExps = {\n      aletter: '[A-Za-z\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05F3\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u10a0-\\u10c5\\u10d0-\\u10fa\\u10fc\\u1100-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1a00-\\u1a16\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bc0-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u24B6-\\u24E9\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2d00-\\u2d25\\u2d30-\\u2d65\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005\\u303b\\u303c\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790\\ua791\\ua7a0-\\ua7a9\\ua7fa-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uffa0-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc]',\n      midnumlet: '[-\\'\\\\.\\u2018\\u2019\\u2024\\uFE52\\uFF07\\uFF0E]',\n      midletter: '[:\\xB7\\xB7\\u05F4\\u2027\\uFE13\\uFE55\\uFF1A]',\n      midnum: '[\\xB1+*/,;;\\u0589\\u060C\\u060D\\u066C\\u07F8\\u2044\\uFE10\\uFE14\\uFE50\\uFE54\\uFF0C\\uFF1B]',\n      numeric: '[0-9\\u0660-\\u0669\\u066B\\u06f0-\\u06f9\\u07c0-\\u07c9\\u0966-\\u096f\\u09e6-\\u09ef\\u0a66-\\u0a6f\\u0ae6-\\u0aef\\u0b66-\\u0b6f\\u0be6-\\u0bef\\u0c66-\\u0c6f\\u0ce6-\\u0cef\\u0d66-\\u0d6f\\u0e50-\\u0e59\\u0ed0-\\u0ed9\\u0f20-\\u0f29\\u1040-\\u1049\\u1090-\\u1099\\u17e0-\\u17e9\\u1810-\\u1819\\u1946-\\u194f\\u19d0-\\u19d9\\u1a80-\\u1a89\\u1a90-\\u1a99\\u1b50-\\u1b59\\u1bb0-\\u1bb9\\u1c40-\\u1c49\\u1c50-\\u1c59\\ua620-\\ua629\\ua8d0-\\ua8d9\\ua900-\\ua909\\ua9d0-\\ua9d9\\uaa50-\\uaa59\\uabf0-\\uabf9]',\n      cr: '\\\\r',\n      lf: '\\\\n',\n      newline: '[\\x0B\\f\\x85\\u2028\\u2029]',\n      extend: '[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065f\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0c01-\\u0c03\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d02\\u0d03\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f\\u109a-\\u109d\\u135d-\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b6-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u19b0-\\u19c0\\u19c8\\u19c9\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1baa\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf2\\u1dc0-\\u1de6\\u1dfc-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\uA672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua880\\ua881\\ua8b4-\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa7b\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe3-\\uabea\\uabec\\uabed\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]',\n      format: '[\\xAD\\u0600-\\u0603\\u06DD\\u070F\\u17b4\\u17b5\\u200E\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\uFEFF\\uFFF9-\\uFFFB]',\n      katakana: '[\\u3031-\\u3035\\u309B\\u309C\\u30A0-\\u30fa\\u30fc-\\u30ff\\u31f0-\\u31ff\\u32D0-\\u32FE\\u3300-\\u3357\\uff66-\\uff9d]',\n      extendnumlet: '[=_\\u203f\\u2040\\u2054\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff3f\\u2200-\\u22FF<>]',\n      punctuation: '[!-#%-*,-\\\\/:;?@\\\\[-\\\\]_{}\\xA1\\xAB\\xB7\\xBB\\xBF;\\xB7\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1361-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u3008\\u3009\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30\\u2E31\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uff3f\\uFF5B\\uFF5D\\uFF5F-\\uFF65]'\n    };\n    var characterIndices = {\n      ALETTER: 0,\n      MIDNUMLET: 1,\n      MIDLETTER: 2,\n      MIDNUM: 3,\n      NUMERIC: 4,\n      CR: 5,\n      LF: 6,\n      NEWLINE: 7,\n      EXTEND: 8,\n      FORMAT: 9,\n      KATAKANA: 10,\n      EXTENDNUMLET: 11,\n      AT: 12,\n      OTHER: 13\n    };\n    var SETS = [\n      new RegExp(regExps.aletter),\n      new RegExp(regExps.midnumlet),\n      new RegExp(regExps.midletter),\n      new RegExp(regExps.midnum),\n      new RegExp(regExps.numeric),\n      new RegExp(regExps.cr),\n      new RegExp(regExps.lf),\n      new RegExp(regExps.newline),\n      new RegExp(regExps.extend),\n      new RegExp(regExps.format),\n      new RegExp(regExps.katakana),\n      new RegExp(regExps.extendnumlet),\n      new RegExp('@')\n    ];\n    var EMPTY_STRING = '';\n    var PUNCTUATION = new RegExp('^' + regExps.punctuation + '$');\n    var WHITESPACE = /^\\s+$/;\n    var UnicodeData = {\n      characterIndices: characterIndices,\n      SETS: SETS,\n      EMPTY_STRING: EMPTY_STRING,\n      PUNCTUATION: PUNCTUATION,\n      WHITESPACE: WHITESPACE\n    };\n\n    var constant = function (value) {\n      return function () {\n        return value;\n      };\n    };\n    var never = constant(false);\n    var always = constant(true);\n\n    var never$1 = never;\n    var always$1 = always;\n    var none = function () {\n      return NONE;\n    };\n    var NONE = function () {\n      var eq = function (o) {\n        return o.isNone();\n      };\n      var call$$1 = function (thunk) {\n        return thunk();\n      };\n      var id = function (n) {\n        return n;\n      };\n      var noop$$1 = function () {\n      };\n      var nul = function () {\n        return null;\n      };\n      var undef = function () {\n        return undefined;\n      };\n      var me = {\n        fold: function (n, s) {\n          return n();\n        },\n        is: never$1,\n        isSome: never$1,\n        isNone: always$1,\n        getOr: id,\n        getOrThunk: call$$1,\n        getOrDie: function (msg) {\n          throw new Error(msg || 'error: getOrDie called on none.');\n        },\n        getOrNull: nul,\n        getOrUndefined: undef,\n        or: id,\n        orThunk: call$$1,\n        map: none,\n        ap: none,\n        each: noop$$1,\n        bind: none,\n        flatten: none,\n        exists: never$1,\n        forall: always$1,\n        filter: none,\n        equals: eq,\n        equals_: eq,\n        toArray: function () {\n          return [];\n        },\n        toString: constant('none()')\n      };\n      if (Object.freeze)\n        Object.freeze(me);\n      return me;\n    }();\n\n    var typeOf = function (x) {\n      if (x === null)\n        return 'null';\n      var t = typeof x;\n      if (t === 'object' && Array.prototype.isPrototypeOf(x))\n        return 'array';\n      if (t === 'object' && String.prototype.isPrototypeOf(x))\n        return 'string';\n      return t;\n    };\n    var isType = function (type) {\n      return function (value) {\n        return typeOf(value) === type;\n      };\n    };\n    var isFunction = isType('function');\n\n    var map = function (xs, f) {\n      var len = xs.length;\n      var r = new Array(len);\n      for (var i = 0; i < len; i++) {\n        var x = xs[i];\n        r[i] = f(x, i, xs);\n      }\n      return r;\n    };\n    var slice = Array.prototype.slice;\n    var from$1 = isFunction(Array.from) ? Array.from : function (x) {\n      return slice.call(x);\n    };\n\n    var SETS$1 = UnicodeData.SETS;\n    var OTHER = UnicodeData.characterIndices.OTHER;\n    var getType = function (char) {\n      var j, set, type = OTHER;\n      var setsLength = SETS$1.length;\n      for (j = 0; j < setsLength; ++j) {\n        set = SETS$1[j];\n        if (set && set.test(char)) {\n          type = j;\n          break;\n        }\n      }\n      return type;\n    };\n    var memoize = function (func) {\n      var cache = {};\n      return function (char) {\n        if (cache[char]) {\n          return cache[char];\n        } else {\n          var result = func(char);\n          cache[char] = result;\n          return result;\n        }\n      };\n    };\n    var classify = function (string) {\n      var memoized = memoize(getType);\n      return map(string.split(''), memoized);\n    };\n    var StringMapper = { classify: classify };\n\n    var ci = UnicodeData.characterIndices;\n    var isWordBoundary = function (map, index) {\n      var prevType;\n      var type = map[index];\n      var nextType = map[index + 1];\n      var nextNextType;\n      if (index < 0 || index > map.length - 1 && index !== 0) {\n        return false;\n      }\n      if (type === ci.ALETTER && nextType === ci.ALETTER) {\n        return false;\n      }\n      nextNextType = map[index + 2];\n      if (type === ci.ALETTER && (nextType === ci.MIDLETTER || nextType === ci.MIDNUMLET || nextType === ci.AT) && nextNextType === ci.ALETTER) {\n        return false;\n      }\n      prevType = map[index - 1];\n      if ((type === ci.MIDLETTER || type === ci.MIDNUMLET || nextType === ci.AT) && nextType === ci.ALETTER && prevType === ci.ALETTER) {\n        return false;\n      }\n      if ((type === ci.NUMERIC || type === ci.ALETTER) && (nextType === ci.NUMERIC || nextType === ci.ALETTER)) {\n        return false;\n      }\n      if ((type === ci.MIDNUM || type === ci.MIDNUMLET) && nextType === ci.NUMERIC && prevType === ci.NUMERIC) {\n        return false;\n      }\n      if (type === ci.NUMERIC && (nextType === ci.MIDNUM || nextType === ci.MIDNUMLET) && nextNextType === ci.NUMERIC) {\n        return false;\n      }\n      if (type === ci.EXTEND || type === ci.FORMAT || prevType === ci.EXTEND || prevType === ci.FORMAT || nextType === ci.EXTEND || nextType === ci.FORMAT) {\n        return false;\n      }\n      if (type === ci.CR && nextType === ci.LF) {\n        return false;\n      }\n      if (type === ci.NEWLINE || type === ci.CR || type === ci.LF) {\n        return true;\n      }\n      if (nextType === ci.NEWLINE || nextType === ci.CR || nextType === ci.LF) {\n        return true;\n      }\n      if (type === ci.KATAKANA && nextType === ci.KATAKANA) {\n        return false;\n      }\n      if (nextType === ci.EXTENDNUMLET && (type === ci.ALETTER || type === ci.NUMERIC || type === ci.KATAKANA || type === ci.EXTENDNUMLET)) {\n        return false;\n      }\n      if (type === ci.EXTENDNUMLET && (nextType === ci.ALETTER || nextType === ci.NUMERIC || nextType === ci.KATAKANA)) {\n        return false;\n      }\n      if (type === ci.AT) {\n        return false;\n      }\n      return true;\n    };\n    var WordBoundary = { isWordBoundary: isWordBoundary };\n\n    var EMPTY_STRING$1 = UnicodeData.EMPTY_STRING;\n    var WHITESPACE$1 = UnicodeData.WHITESPACE;\n    var PUNCTUATION$1 = UnicodeData.PUNCTUATION;\n    var isProtocol = function (word) {\n      return word === 'http' || word === 'https';\n    };\n    var findWordEnd = function (str, index) {\n      var i;\n      for (i = index; i < str.length; ++i) {\n        var chr = str.charAt(i);\n        if (WHITESPACE$1.test(chr)) {\n          break;\n        }\n      }\n      return i;\n    };\n    var extractUrl = function (word, str, index) {\n      var endIndex = findWordEnd(str, index + 1);\n      var peakedWord = str.substring(index + 1, endIndex);\n      if (peakedWord.substr(0, 3) === '://') {\n        return {\n          word: word + peakedWord,\n          index: endIndex\n        };\n      }\n      return {\n        word: word,\n        index: index\n      };\n    };\n    var doGetWords = function (str, options) {\n      var i = 0;\n      var map = StringMapper.classify(str);\n      var len = map.length;\n      var word = [];\n      var words = [];\n      var chr;\n      var includePunctuation;\n      var includeWhitespace;\n      if (!options) {\n        options = {};\n      }\n      if (options.ignoreCase) {\n        str = str.toLowerCase();\n      }\n      includePunctuation = options.includePunctuation;\n      includeWhitespace = options.includeWhitespace;\n      for (; i < len; ++i) {\n        chr = str.charAt(i);\n        word.push(chr);\n        if (WordBoundary.isWordBoundary(map, i)) {\n          word = word.join(EMPTY_STRING$1);\n          if (word && (includeWhitespace || !WHITESPACE$1.test(word)) && (includePunctuation || !PUNCTUATION$1.test(word))) {\n            if (isProtocol(word)) {\n              var obj = extractUrl(word, str, i);\n              words.push(obj.word);\n              i = obj.index;\n            } else {\n              words.push(word);\n            }\n          }\n          word = [];\n        }\n      }\n      return words;\n    };\n    var getWords = function (str, options) {\n      return doGetWords(str.replace(/\\ufeff/g, ''), options);\n    };\n    var WordGetter = { getWords: getWords };\n\n    var getText = function (node, schema) {\n      var blockElements = schema.getBlockElements();\n      var shortEndedElements = schema.getShortEndedElements();\n      var whiteSpaceElements = schema.getWhiteSpaceElements();\n      var isSeparator = function (node) {\n        return blockElements[node.nodeName] || shortEndedElements[node.nodeName] || whiteSpaceElements[node.nodeName];\n      };\n      var txt = '';\n      var treeWalker = new global$1(node, node);\n      while (node = treeWalker.next()) {\n        if (node.nodeType === 3) {\n          txt += node.data;\n        } else if (isSeparator(node)) {\n          txt += ' ';\n        }\n      }\n      return txt;\n    };\n    var innerText = function (node, schema) {\n      return global$2.ie ? getText(node, schema) : node.innerText;\n    };\n    var getTextContent = function (editor) {\n      return editor.removed ? '' : innerText(editor.getBody(), editor.schema);\n    };\n    var getCount = function (editor) {\n      return WordGetter.getWords(getTextContent(editor)).length;\n    };\n    var WordCount = { getCount: getCount };\n\n    var get = function (editor) {\n      var getCount = function () {\n        return WordCount.getCount(editor);\n      };\n      return { getCount: getCount };\n    };\n    var Api = { get: get };\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n    var global$4 = tinymce.util.Tools.resolve('tinymce.util.I18n');\n\n    var setup = function (editor) {\n      var wordsToText = function (editor) {\n        return global$4.translate([\n          '{0} words',\n          WordCount.getCount(editor)\n        ]);\n      };\n      var update = function () {\n        editor.theme.panel.find('#wordcount').text(wordsToText(editor));\n      };\n      editor.on('init', function () {\n        var statusbar = editor.theme.panel && editor.theme.panel.find('#statusbar')[0];\n        var debouncedUpdate = global$3.debounce(update, 300);\n        if (statusbar) {\n          global$3.setEditorTimeout(editor, function () {\n            statusbar.insert({\n              type: 'label',\n              name: 'wordcount',\n              text: wordsToText(editor),\n              classes: 'wordcount',\n              disabled: editor.settings.readonly\n            }, 0);\n            editor.on('setcontent beforeaddundo undo redo keyup', debouncedUpdate);\n          }, 0);\n        }\n      });\n    };\n    var Statusbar = { setup: setup };\n\n    global.add('wordcount', function (editor) {\n      Statusbar.setup(editor);\n      return Api.get(editor);\n    });\n    function Plugin () {\n    }\n\n    return Plugin;\n\n}());\n})();\n\n}.call(window));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tinymce/plugins/wordcount/plugin.js\n// module id = L8UZhTT5kt\n// module chunks = 2 3 28 35 44 54 73 85 102","//\n// Copyright (C) 2017 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see <http://www.gnu.org/licenses/>.\n\nimport $ from 'jquery'\nimport I18n from 'i18n!broken_images'\n\nexport function attachErrorHandler(imgElement) {\n  $(imgElement).on('error', e => {\n    if (e.currentTarget.src) {\n      $.get(e.currentTarget.src)\n      .fail(response => {\n        if (response.status === 403) {\n          // Replace the image with a lock image\n          $(e.currentTarget).attr({\n            src: '/images/svg-icons/icon_lock.svg',\n            alt: I18n.t('Locked image'),\n            width: 100,\n            height: 100\n          })\n        } else {\n          // Add the broken-image class\n          $(e.currentTarget).addClass('broken-image')\n        }\n      })\n    } else {\n      // Add the broken-image class (if there is no source)\n      $(e.currentTarget).addClass('broken-image')\n    }\n  })\n}\n\nexport function getImagesAndAttach () {\n  $('img[src!=\"\"]')\n    .toArray()\n    .forEach(attachErrorHandler)\n}\n\n// this behavior will set up all broken images on the page with an error handler that\n// can apply the broken-image class if there is an error loading the image.\n$(document).ready(() => getImagesAndAttach())\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/behaviors/broken-images.js","/*\n * Copyright (C) 2018 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport $ from 'jquery'\nimport { findKey } from 'lodash'\n\nconst KeyCodes = {\n  ENTER: 13,\n  ESC: 27,\n  SPACE: 32,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40,\n  PAGE_UP: 33,\n  PAGE_DOWN: 34,\n  M: 77,\n  F: 70,\n  // Google TV\n  G_REWIND: 227,\n  G_FORWARD: 228,\n};\n\nconst controlSelectors = {\n  captions: '.mejs-captions-button',\n  fullscreen: '.mejs-fullscreen-button',\n  playpause: '.mejs-playpause-button',\n  progress: '.mejs-time-rail',\n  source: '.mejs-sourcechooser-button',\n  speed: '.mejs-speed-button',\n  volume: '.mejs-volume-button'\n};\n\n// helper to find the index of the first checked option\nfunction focusPosition (optionElements, checkedFunction) {\n  const checkedOption = optionElements.filter(checkedFunction).first();\n  const focusPos = optionElements.index(checkedOption);\n  return focusPos < 0 ? 0 : focusPos;\n}\n\nfunction MediaElementKeyActionHandler (mejs, player, media, event) {\n  this.player = player;\n  this.media = media;\n  this.event = event;\n  this.keyCode = event.keyCode;\n  this.isFullScreen = (mejs.MediaFeatures.hasTrueNativeFullScreen && mejs.MediaFeatures.isFullScreen()) || player.isFullScreen;\n  this.isFirefox = mejs.MediaFeatures.isFirefox;\n}\n\nMediaElementKeyActionHandler.keyCodes = KeyCodes;\n\nMediaElementKeyActionHandler.prototype._targetControl = function (selector) {\n  return $(this.event.target).closest(selector);\n};\n\nMediaElementKeyActionHandler.prototype.handlerKey = function () {\n  const self = this;\n\n  // Check whether one of the controls was the event target\n  const target = findKey(controlSelectors, selector => self._targetControl(selector).length);\n\n  // If none of the controls were the target, then let the player handle it\n  return target || 'player';\n};\n\nMediaElementKeyActionHandler.prototype.dispatch = function () {\n  this.event.preventDefault();\n  const handler = `${this.handlerKey()}Handler`;\n  this[handler]();\n};\n\nMediaElementKeyActionHandler.prototype.captionsHandler = function () {\n  let newFocusPosition;\n  const { player, event } = this;\n  const srcOptions = $(player.captionsButton).find('.mejs-captions-selector input[type=radio]');\n  const currentlyFocused = focusPosition(srcOptions, (i, el) => (el.value === 'none' && player.selectedTrack == null) ||\n      (player.selectedTrack && el.value === player.selectedTrack.srclang));\n\n  switch (this.keyCode) {\n    case KeyCodes.DOWN:\n      newFocusPosition = Math.min(currentlyFocused + 1, srcOptions.length - 1);\n      srcOptions.slice(newFocusPosition).first().focus().click();\n      break;\n\n    case KeyCodes.UP:\n      newFocusPosition = Math.max(currentlyFocused - 1, 0);\n      srcOptions.slice(newFocusPosition).first().focus().click();\n      break;\n\n    case KeyCodes.ENTER:\n      if (event.target.tagName.toLowerCase() === 'a') {\n        $(event.target)[0].click();\n      }\n      break;\n\n    default:\n\n  }\n};\n\nMediaElementKeyActionHandler.prototype.fullscreenHandler = function () {\n  const { player, event } = this;\n\n  switch (this.keyCode) {\n    case KeyCodes.SPACE:\n      // SPACE sends the click event in firefox, which is already bound to in the plugin.\n      if (this.isFirefox) {\n        break;\n      }\n      /* falls through */\n    case KeyCodes.ENTER:\n      // IE seems to treat the request for fullscreen differently based on the\n      // event type. So instead of calling the function as a keypress handler,\n      // we simulate a click.\n      $(event.target)[0].click();\n      break;\n\n    case KeyCodes.ESC:\n      if (this.isFullScreen) {\n        player.exitFullScreen();\n      }\n      break;\n\n    default:\n\n  }\n};\n\nMediaElementKeyActionHandler.prototype.playpauseHandler = function () {\n  const { player, media } = this;\n  let newTime;\n\n  switch (this.keyCode) {\n    case KeyCodes.LEFT:\n    case KeyCodes.DOWN:\n    case KeyCodes.G_REWIND:\n      newTime = Math.max(media.currentTime - player.options.defaultSeekBackwardInterval(media), 0);\n      media.setCurrentTime(newTime);\n      break;\n\n    case KeyCodes.RIGHT:\n    case KeyCodes.UP:\n    case KeyCodes.G_FORWARD:\n      newTime = Math.min(media.currentTime + player.options.defaultSeekForwardInterval(media), media.duration);\n      media.setCurrentTime(newTime);\n      break;\n\n    case KeyCodes.PAGE_DOWN:\n      newTime = Math.max(media.currentTime - player.options.defaultJumpBackwardInterval(media), 0);\n      media.setCurrentTime(newTime);\n      break;\n\n    case KeyCodes.PAGE_UP:\n      newTime = Math.min(media.currentTime + player.options.defaultJumpForwardInterval(media), media.duration);\n      media.setCurrentTime(newTime);\n      break;\n\n    case KeyCodes.SPACE:\n      // SPACE sends the click event in firefox, which is already bound to in the plugin.\n      if (this.isFirefox) {\n        break;\n      }\n      /* falls through */\n    case KeyCodes.ENTER:\n      if (media.paused) {\n        media.play();\n      } else {\n        media.pause();\n      }\n      break;\n\n    default:\n\n  }\n};\n\nMediaElementKeyActionHandler.prototype.progressHandler = function () {};\n\nMediaElementKeyActionHandler.prototype.sourceHandler = function () {\n  let newFocusPosition;\n  const { player } = this;\n  const srcOptions = $(player.sourcechooserButton).find('.mejs-sourcechooser-selector input[type=radio]');\n  const currentlyFocused = focusPosition(srcOptions, (i, el) => el.value === player.media.src);\n\n  switch (this.keyCode) {\n    case KeyCodes.DOWN:\n      newFocusPosition = Math.min(currentlyFocused + 1, srcOptions.length - 1);\n      srcOptions.slice(newFocusPosition).first().focus().click();\n      break;\n\n    case KeyCodes.UP:\n      newFocusPosition = Math.max(currentlyFocused - 1, 0);\n      srcOptions.slice(newFocusPosition).first().focus().click();\n      break;\n\n    default:\n\n  }\n};\n\nMediaElementKeyActionHandler.prototype.speedHandler = function () {\n  let newFocusPosition;\n  const { player } = this;\n  const srcOptions = $(player.speedButton).find('.mejs-speed-selector input[type=radio]');\n  const currentlyFocused = focusPosition(srcOptions, (i, el) => parseFloat(el.value) === player.media.playbackRate);\n\n  switch (this.keyCode) {\n    case KeyCodes.DOWN:\n      newFocusPosition = Math.min(currentlyFocused + 1, srcOptions.length - 1);\n      srcOptions.slice(newFocusPosition).first().focus().click();\n      break;\n\n    case KeyCodes.UP:\n      newFocusPosition = Math.max(currentlyFocused - 1, 0);\n      srcOptions.slice(newFocusPosition).first().focus().click();\n      break;\n\n    default:\n\n  }\n};\n\nMediaElementKeyActionHandler.prototype.volumeHandler = function () {\n  const { player, media } = this;\n  let volume;\n\n  switch (this.keyCode) {\n    case KeyCodes.SPACE:\n      // SPACE sends the click event in firefox, which is already bound to in the plugin.\n      if (this.isFirefox) {\n        break;\n      }\n      /* falls through */\n    case KeyCodes.ENTER:\n      player.setMuted(!player.media.muted);\n      break;\n\n    case KeyCodes.LEFT: // DOWN is handled by the plugin\n      volume = Math.max(0, media.volume - 0.1);\n      media.setVolume(volume);\n      break;\n\n    case KeyCodes.RIGHT: // UP is handled by the plugin\n      volume = Math.min(media.volume + 0.1, 1);\n      media.setVolume(volume);\n      break;\n\n    case KeyCodes.PAGE_DOWN:\n      volume = Math.max(0, media.volume - 0.5);\n      media.setVolume(volume);\n      break;\n\n    case KeyCodes.PAGE_UP:\n      volume = Math.min(media.volume + 0.5, 1);\n      media.setVolume(volume);\n      break;\n\n    default:\n\n  }\n};\n\nMediaElementKeyActionHandler.prototype.playerHandler = function () {\n  const { player, media, event } = this;\n  let newTime;\n  let volume;\n\n  switch (this.keyCode) {\n    case KeyCodes.LEFT:\n    case KeyCodes.G_REWIND:\n      newTime = Math.max(media.currentTime - player.options.defaultSeekBackwardInterval(media), 0);\n      media.setCurrentTime(newTime);\n      break;\n\n    case KeyCodes.RIGHT:\n    case KeyCodes.G_FORWARD:\n      newTime = Math.min(media.currentTime + player.options.defaultSeekForwardInterval(media), media.duration);\n      media.setCurrentTime(newTime);\n      break;\n\n    case KeyCodes.PAGE_DOWN:\n      newTime = Math.max(media.currentTime - player.options.defaultJumpBackwardInterval(media), 0);\n      media.setCurrentTime(newTime);\n      break;\n\n    case KeyCodes.PAGE_UP:\n      newTime = Math.min(media.currentTime + player.options.defaultJumpForwardInterval(media), media.duration);\n      media.setCurrentTime(newTime);\n      break;\n\n    case KeyCodes.F:\n      // IE seems to treat the request for fullscreen differently based on the\n      // event type. So instead of calling the function as a keypress handler,\n      // we simulate a click on the fullscreen button.\n      $(event.target).find('.mejs-fullscreen-button > button')[0].click();\n      break;\n\n    case KeyCodes.UP:\n      volume = media.volume;\n      media.setVolume(Math.min(volume + 0.1, 1));\n      break;\n\n    case KeyCodes.DOWN:\n      volume = media.volume;\n      media.setVolume(Math.max(0, volume - 0.1));\n      break;\n\n    case KeyCodes.M:\n      player.setMuted(!player.media.muted);\n      break;\n\n    case KeyCodes.SPACE:\n      // SPACE sends the click event in firefox, which is already bound to in the plugin.\n      if (this.isFirefox) {\n        break;\n      }\n      /* falls through */\n    case KeyCodes.ENTER:\n      if (media.paused) {\n        media.play();\n      } else {\n        media.pause();\n      }\n      break;\n\n    default:\n\n  }\n};\n\nexport default MediaElementKeyActionHandler\n\n\n\n// WEBPACK FOOTER //\n// ./app/jsx/mediaelement/MediaElementKeyActionHandler.js","/*\n * Copyright (C) 2011 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport I18n from 'i18n!media_comments'\nimport _ from 'underscore'\nimport pubsub from 'vendor/jquery.ba-tinypubsub'\nimport $ from 'jquery'\nimport htmlEscape from './str/htmlEscape'\nimport 'compiled/jquery/mediaComment'\nimport './jquery.ajaxJSON'\nimport 'jqueryui/dialog'\nimport './jquery.instructure_misc_helpers' /* /\\$\\.h/, /\\$\\.fileSize/ */\nimport './jquery.instructure_misc_plugins' /* .dim, /\\.log\\(/ */\nimport 'jqueryui/progressbar'\nimport 'jqueryui/tabs'\n\n  \"use strict\"\n  var jsUploader\n\n  $.mediaComment = function(command, arg1, arg2) {\n    var $container = $(\"<div/>\")\n    $(\"body\").append($container.hide());\n    $.fn.mediaComment.apply($container, arguments);\n  }\n\n  var domainRootAccountId;\n  $.mediaComment.partnerData = function(params) {\n    var hash = {\n      context_code: $.mediaComment.contextCode(),\n      root_account_id: ENV.DOMAIN_ROOT_ACCOUNT_ID,\n      context_source: ENV.CONTEXT_ACTION_SOURCE\n    }\n    if(ENV.SIS_SOURCE_ID){\n      hash['sis_source_id'] = ENV.SIS_SOURCE_ID\n    }\n    if(ENV.SIS_USER_ID){\n      hash['sis_user_id'] = ENV.SIS_USER_ID\n    }\n    return JSON.stringify(hash);\n  }\n\n  $.mediaComment.contextCode = function() {\n    // if we can't figure out which context we are in assume that it is the current logged in user\n    return ENV.context_asset_string || ('user_' + ENV.current_user_id);\n  }\n\n  function addEntry(entry, isAudioFile){\n    const contextCode = $.mediaComment.contextCode();\n\n    const mediaType = { 2: 'image', 5: 'audio' }[entry.mediaType] || isAudioFile ? 'audio' : 'video';\n\n    if (contextCode) {\n      $.ajaxJSON(\"/media_objects\", \"POST\", {\n        id: entry.entryId,\n        type: mediaType,\n        context_code: contextCode,\n        title: entry.title,\n        user_entered_title: entry.userTitle\n      }, function(data) {\n        pubsub.publish('media_object_created', data);\n      }, $.noop);\n    }\n    pubsub.publish('media_comment_created', {id: entry.entryId, mediaType: mediaType, title: entry.userTitle});\n  }\n\n  var addedEntryIds = {};\n  $.mediaComment.entryAdded = function(entryId, entryType, title, userTitle) {\n    if (!entryId || addedEntryIds[entryId]) return;\n    addedEntryIds[entryId] = true;\n    var entry = {\n      mediaType: entryType,\n      entryId: entryId,\n      title: title,\n      userTitle: userTitle\n    };\n    addEntry(entry);\n  };\n\n  // **********************************************************************\n  // audio delegate for flash\n  // **********************************************************************\n  $.mediaComment.audio_delegate = {\n    readyHandler: function() {\n      try {\n        $(\"#audio_upload\")[0].setMediaType('audio');\n      } catch (e) {\n        $.mediaComment.upload_delegate.setupErrorHandler();\n      }\n    },\n    selectHandler: function() {\n      $.mediaComment.upload_delegate.selectHandler('audio');\n    },\n    singleUploadCompleteHandler: function(entries) {\n      $.mediaComment.upload_delegate.singleUploadCompleteHandler('audio', entries);\n    },\n    allUploadsCompleteHandler: function() {\n      $.mediaComment.upload_delegate.allUploadsCompleteHandler('audio');\n    },\n    entriesAddedHandler: function(entries) {\n      $.mediaComment.upload_delegate.entriesAddedHandler('audio', entries);\n    },\n    progressHandler: function(info) {\n      $.mediaComment.upload_delegate.progressHandler('audio', info[0], info[1], info[2]);\n    },\n    uploadErrorHandler: function() {\n      $.mediaComment.upload_delegate.uploadErrorHandler('audio');\n    }\n  };\n\n  // **********************************************************************\n  // video delegate for flash\n  // **********************************************************************\n  $.mediaComment.video_delegate = {\n    readyWatcher: null,\n    expectReady: function() {\n      // In IE, if cross-domain permissions aren't set up correctly, Flash silently stops interacting with JS.\n      if ($.mediaComment.video_delegate.readyWatcher) {return;}\n      $.mediaComment.video_delegate.readyWatcher = setTimeout($.mediaComment.upload_delegate.setupErrorHandler, 2000);\n    },\n    readyHandler: function() {\n      try {\n        $(\"#video_upload\")[0].setMediaType('video');\n      } catch (e) {\n        $.mediaComment.upload_delegate.setupErrorHandler();\n      }\n      clearTimeout($.mediaComment.video_delegate.readyWatcher);\n      $.mediaComment.video_delegate.readyWatcher = true;\n    },\n    selectHandler: function() {\n      $.mediaComment.upload_delegate.selectHandler('video');\n    },\n    singleUploadCompleteHandler: function(entries) {\n      $.mediaComment.upload_delegate.singleUploadCompleteHandler('video', entries);\n    },\n    allUploadsCompleteHandler: function() {\n      $.mediaComment.upload_delegate.allUploadsCompleteHandler('video');\n    },\n    entriesAddedHandler: function(entries) {\n      $.mediaComment.upload_delegate.entriesAddedHandler('video', entries);\n    },\n    progressHandler: function(info) {\n      $.mediaComment.upload_delegate.progressHandler('video', info[0], info[1], info[2]);\n    },\n    uploadErrorHandler: function() {\n      $.mediaComment.upload_delegate.uploadErrorHandler('video');\n    }\n  };\n\n  // **********************************************************************\n  // uploader flash delegate\n  // **********************************************************************\n  $.mediaComment.upload_delegate = {\n    currentType: 'audio',\n    submit: function() {\n      var type = $.mediaComment.upload_delegate.currentType;\n      var files = $(\"#\" + type + \"_upload\")[0].getFiles();\n      if(files.length > 1) {\n        $(\"#\" + type + \"_upload\")[0].removeFiles(0, files.length - 2);\n      }\n      files = $(\"#\" + type + \"_upload\")[0].getFiles();\n      if(files.length == 0) {\n        return;\n      }\n      $(\"#media_upload_progress\").css('visibility', 'visible').progressbar({value: 1});\n      $(\"#media_upload_submit\").attr('disabled', true).text(I18n.t('messages.submitting', \"Submitting Media File...\"));\n      $(\"#\" + type + \"_upload\")[0].upload();\n    },\n    selectHandler: function(type) {\n      $.mediaComment.upload_delegate.currentType = type;\n      try {\n        var files = $(\"#\" + type + \"_upload\")[0].getFiles();\n      } catch (e) {\n        $.mediaComment.upload_delegate.setupErrorHandler();\n        return;\n      }\n      if(files.length > 1) {\n        $(\"#\" + type + \"_upload\")[0].removeFiles(0, files.length - 2);\n      }\n      var file = $(\"#\" + type + \"_upload\")[0].getFiles()[0];\n      $(\"#media_upload_settings .icon\").attr('src', '/images/file-' + type + '.png');\n      $(\"#media_upload_submit\").show();\n      $(\"#media_upload_submit\").attr('disabled', file ? false : true)\n      $(\"#media_upload_settings\").css('visibility', file ? 'visible' : 'hidden');\n      $(\"#media_upload_title\").val(file.title);\n      $(\"#media_upload_display_title\").text(file.title);\n      $(\"#media_upload_file_size\").text($.fileSize(file.bytesTotal));\n\n\n      $(\"#media_upload_feedback_text\").html(\"\");\n      $(\"#media_upload_feedback\").css('visibility', 'hidden');\n      if (file.bytesTotal > INST.kalturaSettings.max_file_size_bytes) {\n        $(\"#media_upload_feedback_text\").html(I18n.t('errors.file_too_large', \"*This file is too large.* The maximum size is %{size}MB.\", { size: INST.kalturaSettings.max_file_size_bytes / 1048576, wrapper: '<b>$1</b>' }));\n        $(\"#media_upload_feedback\").css('visibility', 'visible');\n        $(\"#media_upload_submit\").hide();\n        return;\n      }\n\n      // Currently there is a known problem with the\n      // KUpload widget, where unless you submit the uploaded\n      // file as part of the select callback, the flash widget\n      // has some sort of access control problem.  When this is\n      // fixed we can uncomment this line and remove the one\n      // after it.\n      // $(\"#media_upload_title\").focus().select();\n      $(\"#media_upload_submit\").click();\n    },\n    singleUploadCompleteHandler: function(type, entries) {\n      $(\"#media_upload_progress\").progressbar('option', 'value', 100);\n    },\n    allUploadsCompleteHandler: function(type) {\n      $(\"#media_upload_progress\").progressbar('option', 'value', 100);\n      $(\"#\" + type + \"_upload\")[0].addEntries();\n    },\n    entriesAddedHandler: function(type, entries) {\n      $(\"#media_upload_progress\").progressbar('option', 'value', 100);\n      var entry = entries[0];\n      $(\"#media_upload_submit\").text(I18n.t('messages.submitted', \"Submitted Media File!\"));\n      setTimeout(function() {\n        $(\"#media_comment_dialog\").dialog('close');\n      }, 1500);\n      if(type == 'audio') {\n        entry.entryType = 5;\n      } else if(type == 'video') {\n        entry.entryType = 1;\n      }\n      $.mediaComment.entryAdded(entry.entryId, entry.entryType, entry.title);\n    },\n    progressHandler: function(type, loaded_bytes, total_bytes, entry) {\n      var pct = 100.0 * loaded_bytes / total_bytes;\n      $(\"#media_upload_progress\").progressbar('option', 'value', pct);\n    },\n    uploadErrorHandler: function(type) {\n      var error = $(\"#\" + type + \"_upload\")[0].getError();\n      $(\"#media_upload_errors\").text(I18n.t('errors.upload_failed', \"Upload failed with error:\") + \" \" + error);\n      $(\"#media_upload_progress\").hide();\n    },\n    setupErrorHandler: function() {\n      $(\"#media_upload_feedback_text\").text(I18n.t('errors.media_comment_installation_broken', \"Media comment uploading has not been set up properly. Please contact your administrator.\"));\n      $(\"#media_upload_feedback\").css('visibility', 'visible');\n      $('#audio_upload_holder').css('visibility', 'hidden');\n      $('#video_upload_holder').css('visibility', 'hidden');\n    }\n  };\n\n  var reset_selectors = false;\n  var lastInit = null;\n  $.mediaComment.init = function(mediaType, opts) {\n  require.ensure([], function () {\n    var swfobject = require('swfobject');\n\n    lastInit = lastInit || new Date();\n    mediaType = mediaType || \"any\";\n    opts = opts || {};\n\n    var user_name = $.trim($(\"#identity .user_name\").text() || \"\");\n    if(user_name) {\n      user_name = user_name + \": \" + (new Date()).toString(\"ddd MMM d, yyyy\");\n    }\n    var defaultTitle = opts.defaultTitle || user_name || I18n.t('titles.media_contribution', \"Media Contribution\");\n    var mediaCommentReady = function() {\n      var ks, uid;\n      if (INST.kalturaSettings.js_uploader) {\n        ks = jsUploader.getKs();\n        uid = jsUploader.getUid();\n      } else {\n        ks = $dialog.data('ks');\n        uid = $dialog.data('uid') || \"ANONYMOUS\"\n      }\n      $(\"#video_record_title,#audio_record_title\").val(defaultTitle);\n      $dialog.dialog({\n        title: I18n.t('titles.record_upload_media_comment', \"Record/Upload Media Comment\"),\n        width: 560,\n        height: 475,\n        modal: true\n      });\n      $dialog.dialog('option', 'close', function() {\n        $(\"#audio_record\").before(\"<div id='audio_record'/>\").remove();\n        $(\"#video_record\").before(\"<div id='video_record'/>\").remove();\n        if(opts && opts.close && $.isFunction(opts.close)) {\n          opts.close.call($dialog);\n        }\n      });\n      $(\"#audio_record\").before(\"<div id='audio_record'/>\").remove();\n      $(\"#video_record\").before(\"<div id='video_record'/>\").remove();\n\n\n      if(mediaType == \"video\") {\n        $(\"#video_record_option\").click();\n        $(\"#media_record_option_holder\").hide();\n        $(\"#audio_upload_holder\").hide();\n        $(\"#video_upload_holder\").show();\n      } else if(mediaType == \"audio\") {\n        $(\"#audio_record_option\").click();\n        $(\"#media_record_option_holder\").hide();\n        $(\"#audio_upload_holder\").show();\n        $(\"#video_upload_holder\").hide();\n      } else {\n        $(\"#video_record_option\").click();\n        $(\"#audio_upload_holder\").show();\n        $(\"#video_upload_holder\").show();\n      }\n      // re-set the state on everything.  Basically just clear the uploader\n      // files list, remove the uploader progress bar and re-set the submit button.\n      // Re-set the recorders, too?  I guess probably, yeah, if you can.\n      $(document).triggerHandler('reset_media_comment_forms');\n\n      var temporaryName = $.trim($(\"#identity .user_name\").text()) + \" \" + (new Date()).toISOString();\n      // **********************************************************************\n      // Flash audio video record (and upload)\n      // **********************************************************************\n      setTimeout(function() {\n        var recordVars = {\n          host:location.protocol + \"//\" + INST.kalturaSettings.domain,\n          rtmpHost:\"rtmp://\" + (INST.kalturaSettings.rtmp_domain || INST.kalturaSettings.domain),\n          kshowId:\"-1\",\n          pid:INST.kalturaSettings.partner_id,\n          subpid:INST.kalturaSettings.subpartner_id,\n          uid: uid,\n          ks:ks,\n          themeUrl:\"/media_record/skin.swf\",\n          localeUrl:\"/media_record/locale.xml\",\n          thumbOffset:\"1\",\n          licenseType:\"CC-0.1\",\n          showUi:\"true\",\n          useCamera:\"0\",\n          maxFileSize: INST.kalturaSettings.max_file_size_bytes / 1048576,\n          maxUploads: 1,\n          partnerData: $.mediaComment.partnerData(),\n          partner_data: $.mediaComment.partnerData(),\n          entryName:temporaryName,\n          soundcodec: 'Speex',\n          autoPreview: '0'\n        };\n\n        var params = {\n          \"align\": \"middle\",\n          \"quality\": \"high\",\n          \"bgcolor\": \"#ffffff\",\n          \"name\": \"KRecordAudio\",\n          \"allowScriptAccess\":\"sameDomain\",\n          \"type\": \"application/x-shockwave-flash\",\n          \"pluginspage\": \"http://www.adobe.com/go/getflashplayer\",\n          \"wmode\": \"opaque\"\n        };\n        $(\"#audio_record\").text(I18n.t('messages.flash_required_record_audio', \"Flash required for recording audio.\"));\n        swfobject.embedSWF(\"/media_record/KRecord.swf\", \"audio_record\", \"400\", \"300\", \"9.0.0\", false, recordVars, params);\n\n        var params = $.extend({}, params, {name: 'KRecordVideo'});\n        var recordVars = $.extend({}, recordVars, {useCamera: '1'});\n        $(\"#video_record\").html(\"Flash required for recording video.\");\n        swfobject.embedSWF(\"/media_record/KRecord.swf\", \"video_record\", \"400\", \"300\", \"9.0.0\", false, recordVars, params);\n\n        // give the dialog time to initialize or the recorder will\n        // render funky in ie\n      }, INST.browser.ie ? 500 : 10);\n\n      // **********************************************************************\n      // Flash uploaders\n      // **********************************************************************\n      var flashVars = {\n        host:location.protocol + \"//\" + INST.kalturaSettings.domain,\n        partnerId:INST.kalturaSettings.partner_id,\n        subPId:INST.kalturaSettings.subpartner_id,\n        uid: uid,\n        entryId: \"-1\",\n        ks:ks,\n        thumbOffset:\"1\",\n        licenseType:\"CC-0.1\",\n        maxFileSize: INST.kalturaSettings.max_file_size_bytes / 1048576,\n        maxUploads: 1,\n        partnerData: $.mediaComment.partnerData(),\n        partner_data: $.mediaComment.partnerData(),\n        uiConfId: INST.kalturaSettings.upload_ui_conf,\n        jsDelegate: \"$.mediaComment.audio_delegate\"\n      };\n\n      var params = {\n        \"align\": \"middle\",\n        \"quality\": \"high\",\n        \"bgcolor\": \"#ffffff\",\n        \"name\": \"KUpload\",\n        \"allowScriptAccess\":\"always\",\n        \"type\": \"application/x-shockwave-flash\",\n        \"pluginspage\": \"http://www.adobe.com/go/getflashplayer\",\n        \"wmode\": \"transparent\"\n      }\n      $(\"#audio_upload\").text(I18n.t('messages.flash_required_upload_audio', \"Flash required for uploading audio.\"));\n      var width = \"180\";\n      var height = \"50\";\n      swfobject.embedSWF(\"//\" + INST.kalturaSettings.domain + \"/kupload/ui_conf_id/\" + INST.kalturaSettings.upload_ui_conf, \"audio_upload\", width, height, \"9.0.0\", false, flashVars, params);\n\n        flashVars = $.extend({}, flashVars, {jsDelegate: '$.mediaComment.video_delegate'});\n        $(\"#video_upload\").text(I18n.t('messages.flash_required_upload_video', \"Flash required for uploading video.\"));\n        var width = \"180\";\n        var height = \"50\";\n        swfobject.embedSWF(\"//\" + INST.kalturaSettings.domain + \"/kupload/ui_conf_id/\" + INST.kalturaSettings.upload_ui_conf, \"video_upload\", width, height, \"9.0.0\", false, flashVars, params);\n\n          // **********************************************************************\n          // Audio meters for audio and video recording\n          // **********************************************************************\n          var $audio_record_holder, $audio_record, $audio_record_meter;\n          var audio_record_counter, current_audio_level, audio_has_volume;\n          var $video_record_holder, $video_record, $video_record_meter;\n          var video_record_counter, current_video_level, video_has_volume = false;\n          reset_selectors = true;\n          setInterval(function() {\n            if(reset_selectors) {\n              $audio_record_holder = $(\"#audio_record_holder\");\n              $audio_record = $(\"#audio_record\");\n              $audio_record_meter = $(\"#audio_record_meter\");\n              audio_record_counter = 0;\n              current_audio_level = 0;\n              $video_record_holder = $(\"#video_record_holder\");\n              $video_record = $(\"#video_record\");\n              $video_record_meter = $(\"#video_record_meter\");\n              video_record_counter = 0;\n              current_video_level = 0;\n              reset_selectors = false;\n            }\n            audio_record_counter++;\n            video_record_counter++;\n            var audio_level = null, video_level = null;\n            if($audio_record && $audio_record[0] && $audio_record[0].getMicophoneActivityLevel && $audio_record.parent().length) {\n              audio_level = $audio_record[0].getMicophoneActivityLevel();\n            } else {\n              $audio_record = $(\"#audio_record\");\n            }\n            if($video_record && $video_record[0] && $video_record[0].getMicophoneActivityLevel && $video_record.parent().length) {\n              video_level = $video_record[0].getMicophoneActivityLevel();\n            } else {\n              $video_record = $(\"#video_record\");\n            }\n            if(audio_level != null) {\n              audio_level = Math.max(audio_level, current_audio_level);\n              if(audio_level > -1 && !$audio_record_holder.hasClass('with_volume')) {\n                $audio_record_meter.css('display', 'none');\n                $(\"#audio_record_holder\").addClass('with_volume').animate({'width': 420}, function() {\n                  $audio_record_meter.css('display', '');\n                });\n              }\n              if(audio_record_counter > 4) {\n                current_audio_level = 0;\n                audio_record_counter = 0;\n                var band = (audio_level - (audio_level % 10)) / 10;\n                $audio_record_meter.attr('class', 'volume_meter band_' + band);\n              } else {\n                current_audio_level = audio_level;\n              }\n            }\n            if(video_level != null) {\n              video_level = Math.max(video_level, current_video_level);\n              if(video_level > -1 && !$video_record_holder.hasClass('with_volume')) {\n                $video_record_meter.css('display', 'none');\n                $(\"#video_record_holder\").addClass('with_volume').animate({'width': 420}, function() {\n                  $video_record_meter.css('display', '');\n                });\n              }\n              if(video_record_counter > 4) {\n                current_video_level = 0;\n                video_record_counter = 0;\n                var band = (video_level - (video_level % 10)) / 10;\n                $video_record_meter.attr('class', 'volume_meter band_' + band);\n              } else {\n                current_video_level = video_level;\n              }\n            }\n          }, 20);\n    } // END mediaCommentReady functionk5uploader\n\n    // Do JS uploader is appropriate\n    if (INST.kalturaSettings.js_uploader) {\n       const JsUploader = require('compiled/media_comments/js_uploader')\n       jsUploader = new JsUploader(mediaType, opts)\n       jsUploader.onReady = mediaCommentReady\n       jsUploader.addEntry = addEntry\n\n       if (ENV.ARC_RECORDING_FEATURE_ENABLED) {\n         const Browser = require('jsx/shared/browserUtils')\n         const currentBrowser = Browser.getBrowser()\n         if (\n           (currentBrowser.name === 'Chrome' && Number(currentBrowser.version) >= 68) ||\n           (currentBrowser.name === 'Firefox' && Number(currentBrowser.version) >= 61)\n         ) {\n           import('jsx/media_recorder/renderRecorder').then((renderCanvasMediaRecorder) => {\n             let tryToRenderInterval\n             const renderFunc = () => {\n               const e = document.getElementById('record_media_tab')\n               if (e) {\n                 renderCanvasMediaRecorder(e, jsUploader.doUploadByFile)\n                 clearInterval(tryToRenderInterval)\n               }\n             }\n             tryToRenderInterval = setInterval(renderFunc, 10)\n           })\n        }\n      }\n    }\n\n    var now = new Date();\n    if((now - lastInit) > 300000) {\n      $(\"#media_comment_dialog\").dialog('close').remove();\n    }\n    lastInit = now;\n\n    var $dialog = $(\"#media_comment_dialog\");\n    if($dialog.length == 0 && !INST.kalturaSettings.js_uploader) {\n      var $div = $(\"<div/>\").attr('id', 'media_comment_dialog');\n      $div.text(I18n.t('messages.loading', \"Loading...\"));\n      $div.dialog({\n        title: I18n.t('titles.record_upload_media_comment', \"Record/Upload Media Comment\"),\n        resizable: false,\n        width: 470,\n        height: 300,\n        modal: true\n      });\n\n      // **********************************************************************\n      // load kaltura_session\n      // **********************************************************************\n      $.ajaxJSON('/api/v1/services/kaltura_session', 'POST', {}, function(data) {\n        $div.data('ks', data.ks);\n        $div.data('uid', data.uid);\n      }, function(data) {\n        if(data.logged_in == false) {\n          $div.data('ks-error', I18n.t('errors.must_be_logged_in', \"You must be logged in to record media.\"));\n        } else {\n          $div.data('ks-error', I18n.t('errors.load_failed', \"Media Comment Application failed to load.  Please try again.\"));\n        }\n      });\n      // **********************************************************************\n      // Load dialog html\n      // **********************************************************************\n      var checkForKS = function() {\n        if($div.data('ks')) {\n          var mediaCommentsTemplate = require('jst/MediaComments');\n          $div.html(mediaCommentsTemplate());\n          $div.find(\"#media_record_tabs\").tabs({activate: $.mediaComment.video_delegate.expectReady});\n          mediaCommentReady();\n        } else if($div.data('ks-error')) {\n          $div.html($div.data('ks-error'));\n        } else {\n          setTimeout(checkForKS, 500);\n        }\n      }\n      checkForKS();\n      $dialog = $(\"#media_comment_dialog\");\n      $dialog = $div;\n    } else if (!INST.kalturaSettings.js_uploader) {\n      // only call mediaCommentReady if we are not doing js uploader\n      mediaCommentReady();\n    }\n  }, 'mediaCommentRecordAsyncChunk')\n  } // End of init function\n\n  $(document).ready(function() {\n    $(document).bind('reset_media_comment_forms', function() {\n      $(\"#audio_record_holder_message,#video_record_holder_message\").removeClass('saving')\n        .find(\".recorder_message\").html(\"Saving Recording...<img src='/images/media-saving.gif'/>\");\n      $(\"#audio_record_holder\").stop(true, true).clearQueue().css('width', '').removeClass('with_volume');\n      $(\"#video_record_holder\").stop(true, true).clearQueue().css('width', '').removeClass('with_volume');\n      $(\"#media_upload_submit\").text(I18n.t('buttons.submit', \"Submit Media File\")).attr('disabled', true);\n      $(\"#media_upload_settings\").css('visibility', 'hidden');\n      $(\"#media_upload_progress\").css('visibility', 'hidden').progressbar().progressbar('option', 'value', 1);\n      $(\"#media_upload_title\").val(\"\");\n      var files = $(\"#audio_upload\")[0] && $(\"#audio_upload\")[0].getFiles && $(\"#audio_upload\")[0].getFiles();\n      if(files && $(\"#audio_upload\")[0].removeFiles && files.length > 0) {\n        $(\"#audio_upload\")[0].removeFiles(0, files.length - 1);\n      }\n      files = $(\"#video_upload\")[0] && $(\"#video_upload\")[0].getFiles && $(\"#video_upload\")[0].getFiles();\n      if(files && $(\"#video_upload\")[0].removeFiles && files.length > 0) {\n        $(\"#video_upload\")[0].removeFiles(0, files.length - 1);\n      }\n   });\n    $(\"#media_upload_submit\").live('click', function(event) {\n      $.mediaComment.upload_delegate.submit();\n    });\n    $(\"#video_record_option,#audio_record_option\").live('click', function(event) {\n      event.preventDefault();\n      $(\"#video_record_option,#audio_record_option\").removeClass('selected_option');\n      $(this).addClass('selected_option');\n      $(\"#audio_record_holder\").stop(true, true).clearQueue().css('width', '').removeClass('with_volume');\n      $(\"#video_record_holder\").stop(true, true).clearQueue().css('width', '').removeClass('with_volume');\n      if($(this).attr('id') == 'audio_record_option') {\n        $(\"#video_record_holder_holder\").hide();\n        $(\"#audio_record_holder_holder\").show();\n      } else {\n        $(\"#video_record_holder_holder\").show();\n        $(\"#audio_record_holder_holder\").hide();\n      }\n    });\n  });\n  $(document).bind('media_recording_error', function() {\n    $(\"#audio_record_holder_message,#video_record_holder_message\").find(\".recorder_message\").html(\n            htmlEscape(I18n.t('errors.save_failed', \"Saving appears to have failed.  Please close this popup to try again.\")) +\n            \"<div style='font-size: 0.8em; margin-top: 20px;'>\" +\n            htmlEscape(I18n.t('errors.persistent_problem', \"If this problem keeps happening, you may want to try recording your media locally and then uploading the saved file instead.\")) +\n            \"</div>\");\n  });\n\n\n  window.mediaCommentCallback = function(results) {\n    _.each(results, addEntry);\n    $(\"#media_comment_create_dialog\").empty().dialog('close');\n  }\n\n  window.beforeAddEntry = function() {\n    var attemptId = Math.random();\n    $.mediaComment.lastAddAttemptId = attemptId;\n    setTimeout(function() {\n      if($.mediaComment.lastAddAttemptId == attemptId) {\n        $(document).triggerHandler('media_recording_error');\n      }\n    }, 30000);\n    $(\"#audio_record_holder_message,#video_record_holder_message\").addClass('saving');\n  }\n  window.addEntryFail = function() {\n    $(document).triggerHandler('media_recording_error');\n  }\n  window.addEntryFailed = function() {\n    $(document).triggerHandler('media_recording_error');\n  }\n  window.addEntryComplete = function(entries) {\n    $.mediaComment.lastAddAttemptId = null;\n    $(\"#audio_record_holder_message,#video_record_holder_message\").removeClass('saving');\n    try {\n      var userTitle = null;\n      if(!$.isArray(entries)) {\n        entries = [entries];\n      }\n      for(var idx = 0; idx < entries.length; idx++) {\n        var entry = entries[idx];\n        if($(\"#media_record_tabs\").tabs('option', 'selected') == 0) {\n          userTitle = $(\"#video_record_title,#audio_record_title\").filter(\":visible:first\").val();\n        } else if($(\"#media_record_tabs\").tabs('option', 'selected') == 1) {\n        }\n        if(entry.entryType == 1 && $(\"#audio_record_option\").hasClass('selected_option')) {\n          entry.entryType = 5;\n        }\n        $.mediaComment.entryAdded(entry.entryId, entry.entryType, entry.entryName, userTitle);\n        $(\"#media_comment_dialog\").dialog('close');\n      }\n    } catch(e) {\n      console.log(e);\n      alert(I18n.t('errors.save_failed_try_again', \"Entry failed to save.  Please try again.\"));\n    }\n  }\n\n\n// Debugging methods for kaltura record widget. If These exist they'll be called.\n//function deviceDetected(){\n//    console.log('detected');\n//}\n//\n//function connected(){\n//    console.log('connected');\n//}\n//function workingMicFound(){\n//    console.log('mic found');\n//}\n//\n//function noMicsFound(){\n//    console.log('no mics found');\n//}\n\n\n\n// WEBPACK FOOTER //\n// ./public/javascripts/media_comments.js","// this file was auto-generated by rake i18n:generate_js.\n// you probably shouldn't edit it directly\nimport I18n from 'i18nObj'\nimport $ from 'jquery'\n  $.extend(true, I18n, {translations: {\"ar\":{\"ajax_errors\":{\"error_heading\":\"خطأ Ajax: %{status_code}\",\"errors\":{\"connection_lost\":\"تم فقد الاتصال بـ %{host}.  يُرجى التأكد من اتصالك بالإنترنت وحاول من جديد.\",\"logged_out\":\"أنت غير مسجل الدخول حاليًا، قد يكون السبب في هذا هو فترة عدم النشاط الطويلة.\",\"unhandled\":\"للأسف! لم يعمل الطلب الأخير.\"},\"links\":{\"details\":\"تفاصيل...\",\"login\":\"تسجيل الدخول\"},\"no_text\":\"بدون نص\"}},\"cy\":{\"ajax_errors\":{\"error_heading\":\"Gwall Ajax: %{status_code}\",\"errors\":{\"connection_lost\":\"Wedi colli’r cysylltiad â %{host}.  Gwnewch yn siŵr bod gennych chi gysylltiad â’r rhyngrwyd, a rhoi cynnig arall arni.\",\"logged_out\":\"Dydych chi ddim wedi mewngofnodi ar hyn o bryd, oherwydd nad ydych chi wedi gwneud dim byd ers tro o bosib.\",\"unhandled\":\"Wps! Dydy’r cais diwethaf ddim wedi gweithio’n iawn.\"},\"links\":{\"details\":\"manylion...\",\"login\":\"Mewngofnodi\"},\"no_text\":\"Dim testun\"}},\"da\":{\"ajax_errors\":{\"error_heading\":\"Ajax-fejl: %{status_code}\",\"errors\":{\"connection_lost\":\"Forbindelse til %{host} blev tabt.  Sørg for, at du er koblet til nettet og prøv igen.\",\"logged_out\":\"Du er ikke logget på lige nu, muligvis grundet en længerevarende periode uden aktivitet\",\"unhandled\":\"Hovsa! Den sidste anmodning mislykkedes.\"},\"links\":{\"details\":\"nærmere oplysninger ...\",\"login\":\"Login\"},\"no_text\":\"Ingen tekst\"}},\"da-x-k12\":{\"ajax_errors\":{\"error_heading\":\"Ajax-fejl: %{status_code}\",\"errors\":{\"connection_lost\":\"Forbindelse til %{host} blev tabt.  Sørg for, at du er koblet til nettet og prøv igen.\",\"logged_out\":\"Du er ikke logget på lige nu, muligvis grundet en længerevarende periode uden aktivitet\",\"unhandled\":\"Hovsa! Den sidste anmodning mislykkedes.\"},\"links\":{\"details\":\"nærmere oplysninger ...\",\"login\":\"Login\"},\"no_text\":\"Ingen tekst\"}},\"de\":{\"ajax_errors\":{\"error_heading\":\"Ajax-Fehler: %{status_code}\",\"errors\":{\"connection_lost\":\"Die Verbindung mit %{host} ist abgebrochen. Stellen Sie die Internetverbindung wieder her, und versuchen Sie es erneut.\",\"logged_out\":\"Sie sind derzeit nicht angemeldet. Der Grund hierfür ist möglicherweise längere Inaktivität.\",\"unhandled\":\"Hoppla! Die letzte Anfrage war nicht erfolgreich.\"},\"links\":{\"details\":\"Details ...\",\"login\":\"Anmelden\"},\"no_text\":\"Kein Text\"}},\"el\":{\"ajax_errors\":{\"error_heading\":\"Σφάλμα Ajax: %{status_code}\",\"errors\":{\"connection_lost\":\"H σύνδεση προς τον %{host} διακόπηκε. Παρακαλώ βεβαιωθείτε πως είσαστε συνδεδεμένοι στο Ιντερνετ και προσπαθήστε ξανά\",\"logged_out\":\"Δεν είστε συνδεμένος, πιθανώς λόγω μιας μακράς περιόδου αδράνειας\",\"unhandled\":\"Ωχ, όχι! Η τελευταία αίτηση δεν λειτούργησε.\"},\"links\":{\"details\":\"λεπτομέρειες...\",\"login\":\"Είσοδος\"},\"no_text\":\"Δεν υπάρχει κείμενο\"}},\"en-AU\":{\"ajax_errors\":{\"error_heading\":\"Ajax Error: %{status_code}\",\"errors\":{\"connection_lost\":\"Connection to %{host} was lost.  Please make sure you're connected to the Internet and try again.\",\"logged_out\":\"You are not currently logged in, possibly due to a long period of inactivity.\",\"unhandled\":\"Oops! The last request didn't work out.\"},\"links\":{\"details\":\"details...\",\"login\":\"Login\"},\"no_text\":\"No text\"}},\"en-CA\":{\"ajax_errors\":{\"error_heading\":\"Ajax Error: %{status_code}\",\"errors\":{\"connection_lost\":\"Connection to %{host} was lost.  Please make sure you're connected to the Internet and try again.\",\"logged_out\":\"You are not currently logged in, possibly due to a long period of inactivity.\",\"unhandled\":\"Oops! The last request didn't work out.\"},\"links\":{\"details\":\"details...\",\"login\":\"Login\"},\"no_text\":\"No text\"}},\"en-GB\":{\"ajax_errors\":{\"error_heading\":\"Ajax Error: %{status_code}\",\"errors\":{\"connection_lost\":\"Connection to %{host} was lost.  Please make sure you're connected to the internet and try again.\",\"logged_out\":\"You are not currently logged in, possibly due to a long period of inactivity.\",\"unhandled\":\"Oops! The last request didn't work out.\"},\"links\":{\"details\":\"details...\",\"login\":\"Login\"},\"no_text\":\"No text\"}},\"en-GB-x-lbs\":{\"ajax_errors\":{\"error_heading\":\"Ajax Error: %{status_code}\",\"errors\":{\"connection_lost\":\"Connection to %{host} was lost.  Please make sure you're connected to the internet and try again.\",\"logged_out\":\"You are not currently logged in, possibly due to a long period of inactivity.\",\"unhandled\":\"Oops! The last request didn't work out.\"},\"links\":{\"details\":\"details...\",\"login\":\"Login\"},\"no_text\":\"No text\"}},\"en-GB-x-ukhe\":{\"ajax_errors\":{\"error_heading\":\"Ajax Error: %{status_code}\",\"errors\":{\"connection_lost\":\"Connection to %{host} was lost.  Please make sure you're connected to the internet and try again.\",\"logged_out\":\"You are not currently logged in, possibly due to a long period of inactivity.\",\"unhandled\":\"Oops! The last request didn't work out.\"},\"links\":{\"details\":\"details...\",\"login\":\"Login\"},\"no_text\":\"No text\"}},\"es\":{\"ajax_errors\":{\"error_heading\":\"Error Ajax: %{status_code}\",\"errors\":{\"connection_lost\":\"La conexión a %{host} se perdió. Por favor asegúrese que está conectado a Internet e intente de nuevo.\",\"logged_out\":\"Esta sesión no está iniciada actualmente. La causa podría ser un largo período de inactividad.\",\"unhandled\":\"¡Oops! La última solicitud no funcionó.\"},\"links\":{\"details\":\"detalles...\",\"login\":\"Iniciar sesión\"},\"no_text\":\"Sin texto\"}},\"fa\":{\"ajax_errors\":{\"error_heading\":\"خطای Ajax: %{status_code}\",\"errors\":{\"connection_lost\":\"اتصال به %{host} از دست رفت. لطفا مطمئن شوید به اینترنت متصل هستید  و دوباره سعی کنید.\",\"logged_out\":\"احتمالا به دلیل عدم فعالیت به مدت طولانی، در حال حاضر در حالت ورود به سامانه قرار ندارید.\",\"unhandled\":\"اوه! آخرین درخواست مؤثر نبود.\"},\"links\":{\"details\":\"اطلاعات بیشتر...\",\"login\":\"ورود\"},\"no_text\":\"متن موجود نیست\"}},\"fr\":{\"ajax_errors\":{\"error_heading\":\"Erreur Ajax : %{status_code}\",\"errors\":{\"connection_lost\":\"La connexion à %{host} a été perdue. Assurez-vous que vous êtes connecté à l’Internet puis réessayez.\",\"logged_out\":\"Vous n’êtes pas connecté actuellement, probablement en raison d’une trop longue période d’inactivité.\",\"unhandled\":\"Erreur. Votre dernière demande n’a pas fonctionné.\"},\"links\":{\"details\":\"informations...\",\"login\":\"Connexion\"},\"no_text\":\"Aucun texte\"}},\"fr-CA\":{\"ajax_errors\":{\"error_heading\":\"Erreur Ajax : %{status_code}\",\"errors\":{\"connection_lost\":\"La connexion à %{host} a été perdue. Assurez-vous que vous êtes connecté à l’Internet puis réessayez.\",\"logged_out\":\"Vous n’êtes pas connecté actuellement, probablement en raison d’une trop longue période d’inactivité.\",\"unhandled\":\"Erreur. Votre dernière demande n’a pas fonctionné.\"},\"links\":{\"details\":\"informations...\",\"login\":\"Connexion\"},\"no_text\":\"Aucun texte\"}},\"he\":{\"ajax_errors\":{\"error_heading\":\"שגיאת AJAX: (תוכנה)  %{status_code}\",\"errors\":{\"connection_lost\":\"התקשורת ל %{host}  נפסקה. יש לוודא חיבור לאינטרנט ולנסות שוב.\",\"logged_out\":\"אינך מחובר/ת למערכת, הדבר יכול לקרות עקב אי פעילות לפרק זמן ארוך.\",\"unhandled\":\"אופס! הבקשה האחרונה לא התבצעה.\"},\"links\":{\"details\":\"פרטים...\",\"login\":\"התחברות\"},\"no_text\":\"אין תוכן\"}},\"ht\":{\"ajax_errors\":{\"error_heading\":\"Erè Ajax: %{status_code}\",\"errors\":{\"connection_lost\":\"Koneksyon a %{host} te pèdi. Tanpri asire w ke ou konekte sou entènèt epi eseye ankò.\",\"logged_out\":\"Ou pa konekte pou kounye a, petèt se akòz yon peryòd tan san aktivite.\",\"unhandled\":\"Oops! Dènye demann lan pa fonksyone.\"},\"links\":{\"details\":\"detay\",\"login\":\"Koneksyon\"},\"no_text\":\"San tèks\"}},\"hu\":{\"ajax_errors\":{\"error_heading\":\"Ajax hiba: %{status_code}\",\"errors\":{\"connection_lost\":\"A kapcsolat megszakadt a következő géppel:  %{host} . Kérjük, ellenőrizze, hogy az internetkapcsolata rendben működik és próbálja újra.\",\"logged_out\":\"Ön jelenleg nincs belépve, ennek oka lehet, hogy hosszú ideig volt inaktív.\",\"unhandled\":\"Hoppá! Az utolsó kérés nem működött.\"},\"links\":{\"details\":\"bővebben...\",\"login\":\"Belépés\"},\"no_text\":\"Nincs szöveg\"}},\"hy\":{\"ajax_errors\":{\"error_heading\":\"Ajax սխալ՝ %{status_code}\",\"errors\":{\"connection_lost\":\"%{host}-ի հետ միացումը կորավ: Համոզվեք, որ միացել եք Ինտերնետին և կրկին փորձեք:\",\"logged_out\":\"Ներկայումս դուք համակարգում չեք, հնարավոր է, երկար ժամանակ գործողությունների բացակայության պատճառով:\",\"unhandled\":\"Օյ, վերջին հարցումը անհաջող էր:\"},\"links\":{\"details\":\"մանրամասներ...\",\"login\":\"Մուտք համակարգ\"},\"no_text\":\"Տեքստ չկա\"}},\"is\":{\"ajax_errors\":{\"error_heading\":\"Ajax-villa: %{status_code}\",\"errors\":{\"connection_lost\":\"Tenging við %{host} rofnaði. Gættu þess að hafa nettengingu og reyndu aftur.\",\"logged_out\":\"Þú ert ekki með innskráningu, sennilega vegna langs tímabils óvirkni.\",\"unhandled\":\"Þessi síðasta beiðni tókst ekki.\"},\"links\":{\"details\":\"upplýsingar...\",\"login\":\"Innskráning\"},\"no_text\":\"Enginn texti\"}},\"it\":{\"ajax_errors\":{\"error_heading\":\"Errore Ajax: %{status_code}\",\"errors\":{\"connection_lost\":\"Connessione a %{host} persa.  Assicurati di essere connesso a Internet e riprova.\",\"logged_out\":\"Attualmente non sei connesso, probabilmente a causa di un lungo periodo di inattività.\",\"unhandled\":\"Spiacenti. L'ultima richiesta non ha funzionato.\"},\"links\":{\"details\":\"dettagli...\",\"login\":\"Accedi\"},\"no_text\":\"Nessun testo\"}},\"ja\":{\"ajax_errors\":{\"error_heading\":\"Ajax エラー: %{status_code}\",\"errors\":{\"connection_lost\":\"%{host} への接続が失われました。インターネットに接続していることを確認してから、もう一度試してください。\",\"logged_out\":\"現在ログインしていません。おそらく非アクティブの期間が長く続いたためと思われます。\",\"unhandled\":\"問題が発生しました!前回の要求は失敗しています。\"},\"links\":{\"details\":\"詳細...\",\"login\":\"ログイン\"},\"no_text\":\"テキストはありません\"}},\"ko\":{\"ajax_errors\":{\"error_heading\":\"Ajax 오류: %{status_code}\",\"errors\":{\"connection_lost\":\"%{host}와의 연결이 끊어졌습니다. 인터넷에 연결되어 있는지 확인하고 다시 시도하시기 바랍니다.\",\"unhandled\":\"마지막 요청이 동작하지 않았습니다.\"},\"links\":{\"details\":\"세부 정보\",\"login\":\"로그인\"},\"no_text\":\"텍스트 없음\"}},\"mi\":{\"ajax_errors\":{\"error_heading\":\"Hapa Ajax: %{status_code}\",\"errors\":{\"connection_lost\":\"I ngaro hononga ki %{host}. Tēnā koa kia tūhono koe ki te Ipurangi, me te ngana anō.\",\"logged_out\":\"Kaor ekoe i te takiuru i roto, tēnā pea na te roa o te wā hohekore.\",\"unhandled\":\"Oops! Kihai i mahi i roto i te tono whakamutunga.\"},\"links\":{\"details\":\"taipitopito ...\",\"login\":\"takiuru\"},\"no_text\":\"Kāore he kuputuhi\"}},\"nb\":{\"ajax_errors\":{\"error_heading\":\"Ajax avvik: %{status_code}\",\"errors\":{\"connection_lost\":\"Tilkobling til %{host} ble brutt.  Sjekk at du er tilkoblet Internett og forsøk igjen.\",\"logged_out\":\"Du er ikke logget inn, eventuelt på grunn av en lang periode av inaktivitet.\",\"unhandled\":\"Oops! Den siste forespørselen fungerte ikke.\"},\"links\":{\"details\":\"detaljer...\",\"login\":\"Logg inn\"},\"no_text\":\"Ingen tekst\"}},\"nb-x-k12\":{\"ajax_errors\":{\"error_heading\":\"Ajax avvik: %{status_code}\",\"errors\":{\"connection_lost\":\"Tilkobling til %{host} ble brutt.  Sjekk at du er tilkoblet Internett og forsøk igjen.\",\"logged_out\":\"Du er ikke logget inn, eventuelt på grunn av en lang periode av inaktivitet.\",\"unhandled\":\"Oops! Den siste forespørselen fungerte ikke.\"},\"links\":{\"details\":\"detaljer...\",\"login\":\"Logg inn\"},\"no_text\":\"Ingen tekst\"}},\"nl\":{\"ajax_errors\":{\"error_heading\":\"Ajax-fout: %{status_code}\",\"errors\":{\"connection_lost\":\"Verbinding met %{host} is verbroken. Controleer of er verbinding is met internet en probeer het opnieuw.\",\"logged_out\":\"Je bent momenteel niet aangemeld, mogelijk als gevolg van een lange periode van inactiviteit.\",\"unhandled\":\"Oeps! Het laatste verzoek is mislukt.\"},\"links\":{\"details\":\"details...\",\"login\":\"Aanmelden\"},\"no_text\":\"Geen tekst\"}},\"nn\":{\"ajax_errors\":{\"error_heading\":\"AJAX-feil: %{status_code}\",\"errors\":{\"connection_lost\":\"Tilkopling til %{host} er tapt.  Kontroller om du er tilkopla Internett og prøv på nytt.\",\"logged_out\":\"Du er ikkje pålogga akkurat no, kanskje på grunn av ei lang periode utan aktivitet.\",\"unhandled\":\"Ops! Den siste førespurnaden fungerte ikkje.\"},\"links\":{\"details\":\"detaljar...\",\"login\":\"Pålogging\"},\"no_text\":\"Ingen tekst\"}},\"pl\":{\"ajax_errors\":{\"error_heading\":\"Błąd programu Ajax: %{status_code}\",\"errors\":{\"connection_lost\":\"Utracono połączenie z %{host}.  Sprawdź połączenie z Internetem i spróbuj ponownie.\",\"logged_out\":\"Uczestnik nie jest teraz zalogowany, prawdopodobnie z powodu długiego okresu nieaktywności.\",\"unhandled\":\"Niestety! Ostatnie żądanie nie zostało zrealizowane.\"},\"links\":{\"details\":\"informacje szczegółowe...\",\"login\":\"Zaloguj\"},\"no_text\":\"Brak tekstu\"}},\"pt\":{\"ajax_errors\":{\"error_heading\":\"Erro Ajax: %{status_code}\",\"errors\":{\"connection_lost\":\"A ligação a %{host} foi perdida.  Verifique se está ligado à Internet e tente novamente.\",\"logged_out\":\"Não tem sessão iniciada de momento, possivelmente devido a um longo período de inatividade.\",\"unhandled\":\"Oops! A última solicitação não funcionou.\"},\"links\":{\"details\":\"detalhes...\",\"login\":\"Iniciar sessão\"},\"no_text\":\"Nenhum texto\"}},\"pt-BR\":{\"ajax_errors\":{\"error_heading\":\"Erro Ajax: %{status_code}\",\"errors\":{\"connection_lost\":\"A conexão com %{host} foi perdida. Verifique se você está conectado com a Internet e tente novamente.\",\"logged_out\":\"Você não está registrado atualmente, talvez por um período grande de inatividade.\",\"unhandled\":\"Oops! A última solicitação não funcionou.\"},\"links\":{\"details\":\"detalhes...\",\"login\":\"Login\"},\"no_text\":\"Nenhum texto\"}},\"ru\":{\"ajax_errors\":{\"error_heading\":\"Ошибка Ajax: %{status_code}\",\"errors\":{\"connection_lost\":\"Подключение к %{host} было потеряно.  Убедитесь, что вы подключены к Интернету, и повторите попытку.\",\"logged_out\":\"В настоящее время вы не находитесь в системе, возможно, из-за отсутствия действий в течение длительного времени.\",\"unhandled\":\"Ой! Последний запрос не сработал.\"},\"links\":{\"details\":\"сведения...\",\"login\":\"Вход в систему\"},\"no_text\":\"Нет текста\"}},\"sl\":{\"ajax_errors\":{\"error_heading\":\"Napaka Ajax: %{status_code}\",\"errors\":{\"connection_lost\":\"Povezava z gostiteljem %{host} je bila izgubljena.  Prepričajte se, da ste povezani z internetom, in poskusite znova.\",\"logged_out\":\"Trenutno niste prijavljeni, verjetno zato, ker dlje časa niste bili aktivni.\",\"unhandled\":\"Opa! Zadnja zahteva ni delovala.\"},\"links\":{\"details\":\"podrobnosti ...\",\"login\":\"Prijava\"},\"no_text\":\"Ni besedila.\"}},\"sv\":{\"ajax_errors\":{\"error_heading\":\"Ajax fel: %{status_code}\",\"errors\":{\"connection_lost\":\"Anslutningen till %{host} förlorades. Vänligen kontrollera att du är ansluten till Internet och försök igen.\",\"logged_out\":\"Du är för närvarande inte inloggad, förmodligen på grund av en lång period av inaktivitet.\",\"unhandled\":\"Oj! Den senaste förfrågan fungerade inte.\"},\"links\":{\"details\":\"detaljer...\",\"login\":\"Logga in\"},\"no_text\":\"Ingen text\"}},\"sv-x-k12\":{\"ajax_errors\":{\"error_heading\":\"Ajax fel: %{status_code}\",\"errors\":{\"connection_lost\":\"Anslutningen till %{host} förlorades. Vänligen kontrollera att du är ansluten till Internet och försök igen.\",\"logged_out\":\"Du är för närvarande inte inloggad, förmodligen på grund av en lång period av inaktivitet.\",\"unhandled\":\"Oj! Den senaste förfrågan fungerade inte.\"},\"links\":{\"details\":\"detaljer...\",\"login\":\"Logga in\"},\"no_text\":\"Ingen text\"}},\"tr\":{\"ajax_errors\":{\"error_heading\":\"Ajax Hatası: %{status_code}\",\"errors\":{\"connection_lost\":\"%{host} sunucusuna bağlantı kayboldu. İnternet'e bağlı olduğunuzdan emin olun ve tekrar deneyin.\",\"logged_out\":\"Şu anda oturumunuz açık değil. Muhtemelen uzun süre hiçbir şey yapmadınız.\",\"unhandled\":\"Oops! Son istek çalıştırılamadı.\"},\"links\":{\"details\":\"ayrıntılar...\",\"login\":\"Oturum Aç\"},\"no_text\":\"Metin yok\"}},\"uk\":{\"ajax_errors\":{\"error_heading\":\"Ajax Помилка: %{status_code}\",\"errors\":{\"connection_lost\":\"Підключення до %{host} втрачено.  Будь ласка, переконайтеся, що ви підключені до Інтернету і повторіть спробу.\",\"logged_out\":\"Зараз Ви не в системі, можливо, через тривалий період бездіяльності.\",\"unhandled\":\"На жаль! Останній запит не спрацював.\"},\"links\":{\"details\":\"детальніше...\",\"login\":\"Вхід\"},\"no_text\":\"Текст відсутній\"}},\"zh-Hans\":{\"ajax_errors\":{\"error_heading\":\"Ajax 错误: %{status_code}\",\"errors\":{\"connection_lost\":\"到 %{host} 的连接丢失。请确保已连接到 Internet，然后重试。\",\"logged_out\":\"您当前尚未登录，可能是非活动时间太长所致。\",\"unhandled\":\"噢！上一个请求未解决。\"},\"links\":{\"details\":\"详细信息...\",\"login\":\"登录\"},\"no_text\":\"无文本\"}},\"zh-Hant\":{\"ajax_errors\":{\"error_heading\":\"Ajax 錯誤：%{status_code}\",\"errors\":{\"connection_lost\":\"至 %{host} 的連接失敗。請確保已連接至 Internet，然後再試一次。\",\"logged_out\":\"您當前未登入，可能是因為您長時間沒有操作。\",\"unhandled\":\"哎呀！最後一個要求沒有成功。\"},\"links\":{\"details\":\"詳細資料…\",\"login\":\"登入\"},\"no_text\":\"無文字\"}}}});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./public/javascripts/translations/ajax_errors.js\n// module id = PO6ncFtsF/\n// module chunks = 85","/*\n * Copyright (C) 2011 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport INST from './INST'\nimport $ from 'jquery'\nimport './jquery.ajaxJSON'\n\n  $(document).ready(function(){\n    var interactionSeconds = 0,\n        update_url = window.ENV.page_view_update_url;\n        eventInTime = false;\n\n    INST.interaction_contexts = {};\n\n    if(document.cookie && document.cookie.match(/last_page_view/)) {\n      var match = document.cookie.match(/last_page_view=([^;]+)/);\n      if(match && match[1]) {\n        try {\n          var data = $.parseJSON(unescape(match[1]));\n          if(data && data.url && data.seconds) {\n            setTimeout(function() {\n              $.ajaxJSON(data.url, \"PUT\", {interaction_seconds: data.seconds}, function() {\n              }, function() {}, 3000);\n            });\n          }\n        } catch(e) {\n        }\n      }\n      document.cookie = \"last_page_view=; Path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT\";\n    }\n\n    if (update_url) {\n      var secondsSinceLastEvent = 0;\n      var intervalInSeconds = 60 * 5;\n\n      $(document).bind('page_view_update_url_received', function(event, new_update_url) {\n        update_url = new_update_url;\n      });\n\n      var updateTrigger;\n      $(document).bind('page_view_update', function(event, force) {\n        var data = {};\n\n        if(force || (interactionSeconds > 10 && secondsSinceLastEvent < intervalInSeconds)) {\n          data.interaction_seconds = interactionSeconds;\n          $.ajaxJSON(update_url, \"PUT\", data, null, function(result, xhr) {\n            if(xhr.status === 422) {\n              clearInterval(updateTrigger);\n            }\n          });\n          interactionSeconds = 0;\n        }\n      });\n\n      updateTrigger = setInterval(function() {\n        $(document).triggerHandler('page_view_update');\n      }, 1000 * intervalInSeconds);\n\n      window.addEventListener('beforeunload', function(e) {\n        if(interactionSeconds > 30) {\n          var value = JSON.stringify({url: update_url, seconds: interactionSeconds});\n          document.cookie = \"last_page_view=\" + escape(value) + \"; Path=/;\";\n        }\n      });\n\n      var eventInTime = false;\n      $(document).bind('mousemove keypress mousedown focus', function() {\n        eventInTime = true;\n      });\n      setInterval(function() {\n        if(eventInTime) {\n          interactionSeconds++;\n          if(INST && INST.interaction_context && INST.interaction_contexts) {\n            INST.interaction_contexts[INST.interaction_context] = (INST.interaction_contexts[INST.interaction_context] || 0) + 1;\n          }\n          eventInTime = false;\n          if(secondsSinceLastEvent >= intervalInSeconds) {\n            secondsSinceLastEvent = 0;\n            $(document).triggerHandler('page_view_update');\n          }\n          secondsSinceLastEvent = 0;\n        } else {\n          secondsSinceLastEvent++;\n        }\n      }, 1000);\n    }\n  });\n\n\n\n// WEBPACK FOOTER //\n// ./public/javascripts/page_views.js","//\n// Copyright (C) 2014 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see <http://www.gnu.org/licenses/>.\n\nimport $ from 'jquery'\n\nif (ENV.ping_url) {\n  const interval = setInterval(() => {\n    if (!document.hidden) {\n      $.post(ENV.ping_url).fail((xhr) => {\n        if (xhr.status === 401) clearInterval(interval)\n      })\n    }\n  }, 1000 * 180)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/behaviors/ping.js","/*!\n * jQuery UI Tooltip @VERSION\n *\n * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n *\tjquery.ui.position.js\n */\nimport $ from 'jquery'\nimport 'jqueryui/core'\nimport 'jqueryui/widget'\nimport 'jqueryui/position'\nimport {isRTL} from 'jsx/shared/helpers/rtlHelper'\n\nconst flipPositionIfRTL = (() => {\n  const leftRightOpposites = {\n    'left+': 'right-',\n    'left-': 'right+',\n    'left': 'right',\n    'right+': 'left-',\n    'right-': 'left+',\n    'right': 'left'\n  }\n  const escapePlusAndMinus = str => str.replace(/[\\-\\+]/g, '\\\\$&')\n  const regexLeftRight = new RegExp(Object.keys(leftRightOpposites).map(escapePlusAndMinus).join('|'))\n  const flip = string => string.replace(regexLeftRight, match => leftRightOpposites[match] || match)\n\n  return (element, position) => {\n    if (isRTL(element)) {\n      position.my = flip(position.my)\n      position.at = flip(position.at)\n    }\n  }\n})()\n\nvar increments = 0;\n\nfunction addDescribedBy( elem, id ) {\n\tvar describedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ );\n\tdescribedby.push( id );\n\telem\n\t\t.data( \"ui-tooltip-id\", id )\n\t\t.attr( \"aria-describedby\", $.trim( describedby.join( \" \" ) ) );\n}\n\nfunction removeDescribedBy( elem ) {\n\tvar id = elem.data( \"ui-tooltip-id\" ),\n\t\tdescribedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ ),\n\t\tindex = $.inArray( id, describedby );\n\tif ( index !== -1 ) {\n\t\tdescribedby.splice( index, 1 );\n\t}\n\n\telem.removeData( \"ui-tooltip-id\" );\n\tdescribedby = $.trim( describedby.join( \" \" ) );\n\tif ( describedby ) {\n\t\telem.attr( \"aria-describedby\", describedby );\n\t} else {\n\t\telem.removeAttr( \"aria-describedby\" );\n\t}\n}\n\n$.widget( \"ui.tooltip\", {\n\tversion: \"@VERSION\",\n\toptions: {\n\t\tcontent: function() {\n\t\t\treturn $( this ).attr( \"title\" );\n\t\t},\n\t\thide: true,\n\t\titems: \"[title]\",\n\t\tposition: {\n\t\t\tmy: \"left+15 center\",\n\t\t\tat: \"right center\",\n\t\t\tcollision: \"flipfit flipfit\"\n\t\t},\n\t\tshow: true,\n\t\ttooltipClass: null,\n\t\ttrack: false,\n\n\t\t// callbacks\n\t\tclose: null,\n\t\topen: null\n\t},\n\n\t_create: function() {\n    flipPositionIfRTL(this.element[0], this.options.position)\n\t\tthis._on({\n\t\t\tmouseover: \"open\",\n\t\t\tfocusin: \"open\"\n\t\t});\n\n\t\t// IDs of generated tooltips, needed for destroy\n\t\tthis.tooltips = {};\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis[ value ? \"_disable\" : \"_enable\" ]();\n\t\t\tthis.options[ key ] = value;\n\t\t\t// disable element style changes\n\t\t\treturn;\n\t\t}\n\t\tthis._super( key, value );\n\t},\n\n\t_disable: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, element ) {\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = element[0];\n\t\t\tthat.close( event, true );\n\t\t});\n\n\t\t// remove title attributes to prevent native tooltips\n\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.is( \"[title]\" ) ) {\n\t\t\t\telement\n\t\t\t\t\t.data( \"ui-tooltip-title\", element.attr( \"title\" ) )\n\t\t\t\t\t.attr( \"title\", \"\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_enable: function() {\n\t\t// restore title attributes\n\t\tthis.element.find( this.options.items ).andSelf().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t}\n\t\t});\n\t},\n\n\topen: function( event ) {\n\t\tvar content,\n\t\t\tthat = this,\n\t\t\ttarget = $( event ? event.target : this.element )\n\t\t\t\t.closest( this.options.items );\n\n\t\t// No element to show a tooltip for\n\t\tif ( !target.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If the tooltip is open and we're tracking then reposition the tooltip.\n\t\t// This makes sure that a tracking tooltip doesn't obscure a focused element\n\t\t// if the user was hovering when the element gained focused.\n\t\tif ( this.options.track && target.data( \"ui-tooltip-id\" ) ) {\n\t\t\tthis._find( target ).position( $.extend({\n\t\t\t\tof: target\n\t\t\t}, this.options.position ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( target.attr( \"title\" ) ) {\n\t\t\ttarget.data( \"ui-tooltip-title\", target.attr( \"title\" ) );\n\t\t}\n\n\t\ttarget.data( \"tooltip-open\", true );\n\n\t\tcontent = this.options.content.call( target[0], function( response ) {\n\t\t\t// ignore async response if tooltip was closed already\n\t\t\tif ( !target.data( \"tooltip-open\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// IE may instantly serve a cached response for ajax requests\n\t\t\t// delay this call to _open so the other call to _open runs first\n\t\t\tsetTimeout(function() {\n\t\t\t\tthat._open( event, target, response );\n\t\t\t}, 1 );\n\t\t});\n\t\tif ( content ) {\n\t\t\tthat._open( event, target, content );\n\t\t}\n\t},\n\n\t_open: function( event, target, content ) {\n\t\tvar tooltip, positionOption;\n\t\tif ( !content ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Content can be updated multiple times. If the tooltip already\n\t\t// exists, then just update the content and bail.\n\t\ttooltip = this._find( target );\n\t\tif ( tooltip.length ) {\n\t\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\t\t\treturn;\n\t\t}\n\n\t\t// if we have a title, clear it to prevent the native tooltip\n\t\t// we have to check first to avoid defining a title if none exists\n\t\t// (we don't want to cause an element to start matching [title])\n\t\t//\n\t\t// We use removeAttr only for key events, to allow IE to export the correct\n\t\t// accessible attributes. For mouse events, set to empty string to avoid\n\t\t// native tooltip showing up (happens only when removing inside mouseover).\n\t\tif ( target.is( \"[title]\" ) ) {\n\t\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\t\ttarget.attr( \"title\", \"\" );\n\t\t\t} else {\n\t\t\t\ttarget.removeAttr( \"title\" );\n\t\t\t}\n\t\t}\n\n\t\ttooltip = this._tooltip( target );\n\t\taddDescribedBy( target, tooltip.attr( \"id\" ) );\n\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\n\t\tfunction position( event ) {\n\t\t\tpositionOption.of = event;\n\t\t\ttooltip.position( positionOption );\n\t\t}\n\t\tif ( this.options.track && event && /^mouse/.test( event.originalEvent.type ) ) {\n\t\t\tpositionOption = $.extend( {}, this.options.position );\n\t\t\tthis._on( this.document, {\n\t\t\t\tmousemove: position\n\t\t\t});\n\t\t\t// trigger once to override element-relative positioning\n\t\t\tposition( event );\n\t\t} else {\n\t\t\ttooltip.position( $.extend({\n\t\t\t\tof: target\n\t\t\t}, this.options.position ) );\n\t\t}\n\n\t\ttooltip.hide();\n\n\t\tthis._show( tooltip, this.options.show );\n\n\t\tthis._trigger( \"open\", event, { tooltip: tooltip } );\n\n\t\tthis._on( target, {\n\t\t\tmouseleave: \"close\",\n\t\t\tfocusout: \"close\",\n\t\t\tkeyup: function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tvar fakeEvent = $.Event(event);\n\t\t\t\t\tfakeEvent.currentTarget = target[0];\n\t\t\t\t\tthis.close( fakeEvent, true );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tclose: function( event, force ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.currentTarget : this.element ),\n\t\t\ttooltip = this._find( target );\n\n\t\t// disabling closes the tooltip, so we need to track when we're closing\n\t\t// to avoid an infinite loop in case the tooltip becomes disabled on close\n\t\tif ( this.closing ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// don't close if the element has focus\n\t\t// this prevents the tooltip from closing if you hover while focused\n\t\t//\n\t\t// we have to check the event type because tabbing out of the document\n\t\t// may leave the element as the activeElement\n\t\tif ( !force && event && event.type !== \"focusout\" &&\n\t\t\t\tthis.document[0].activeElement === target[0] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// only set title if we had one before (see comment in _open())\n\t\tif ( target.data( \"ui-tooltip-title\" ) ) {\n\t\t\ttarget.attr( \"title\", target.data( \"ui-tooltip-title\" ) );\n\t\t}\n\n\t\tremoveDescribedBy( target );\n\n\t\ttooltip.stop( true );\n\t\tthis._hide( tooltip, this.options.hide, function() {\n\t\t\t$( this ).remove();\n\t\t\tdelete that.tooltips[ this.id ];\n\t\t});\n\n\t\ttarget.removeData( \"tooltip-open\" );\n\t\tthis._off( target, \"mouseleave focusout keyup\" );\n\t\tthis._off( this.document, \"mousemove\" );\n\n\t\tthis.closing = true;\n\t\tthis._trigger( \"close\", event, { tooltip: tooltip } );\n\t\tthis.closing = false;\n\t},\n\n\t_tooltip: function( element ) {\n\t\tvar id = \"ui-tooltip-\" + increments++,\n\t\t\ttooltip = $( \"<div>\" )\n\t\t\t\t.attr({\n\t\t\t\t\tid: id,\n\t\t\t\t\trole: \"tooltip\"\n\t\t\t\t})\n\t\t\t\t.addClass( \"ui-tooltip ui-widget ui-corner-all ui-widget-content \" +\n\t\t\t\t\t( this.options.tooltipClass || \"\" ) );\n\t\t$( \"<div>\" )\n\t\t\t.addClass( \"ui-tooltip-content\" )\n\t\t\t.appendTo( tooltip );\n\t\ttooltip.appendTo( this.document[0].body );\n\t\tif ( $.fn.bgiframe ) {\n\t\t\ttooltip.bgiframe();\n\t\t}\n\t\tthis.tooltips[ id ] = element;\n\t\treturn tooltip;\n\t},\n\n\t_find: function( target ) {\n\t\tvar id = target.data( \"ui-tooltip-id\" );\n\t\treturn id ? $( \"#\" + id ) : $();\n\t},\n\n\t_destroy: function() {\n\t\t$.each( this.tooltips, function( id ) {\n\t\t\t$( \"#\" + id ).remove();\n\t\t});\n\t}\n});\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./public/javascripts/vendor/jqueryui/tooltip.js","/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n(function () {\nvar paste = (function () {\n    'use strict';\n\n    var Cell = function (initial) {\n      var value = initial;\n      var get = function () {\n        return value;\n      };\n      var set = function (v) {\n        value = v;\n      };\n      var clone = function () {\n        return Cell(get());\n      };\n      return {\n        get: get,\n        set: set,\n        clone: clone\n      };\n    };\n\n    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    var hasProPlugin = function (editor) {\n      if (/(^|[ ,])powerpaste([, ]|$)/.test(editor.settings.plugins) && global.get('powerpaste')) {\n        if (typeof window.console !== 'undefined' && window.console.log) {\n          window.console.log('PowerPaste is incompatible with Paste plugin! Remove \\'paste\\' from the \\'plugins\\' option.');\n        }\n        return true;\n      } else {\n        return false;\n      }\n    };\n    var DetectProPlugin = { hasProPlugin: hasProPlugin };\n\n    var get = function (clipboard, quirks) {\n      return {\n        clipboard: clipboard,\n        quirks: quirks\n      };\n    };\n    var Api = { get: get };\n\n    var firePastePreProcess = function (editor, html, internal, isWordHtml) {\n      return editor.fire('PastePreProcess', {\n        content: html,\n        internal: internal,\n        wordContent: isWordHtml\n      });\n    };\n    var firePastePostProcess = function (editor, node, internal, isWordHtml) {\n      return editor.fire('PastePostProcess', {\n        node: node,\n        internal: internal,\n        wordContent: isWordHtml\n      });\n    };\n    var firePastePlainTextToggle = function (editor, state) {\n      return editor.fire('PastePlainTextToggle', { state: state });\n    };\n    var firePaste = function (editor, ieFake) {\n      return editor.fire('paste', { ieFake: ieFake });\n    };\n    var Events = {\n      firePastePreProcess: firePastePreProcess,\n      firePastePostProcess: firePastePostProcess,\n      firePastePlainTextToggle: firePastePlainTextToggle,\n      firePaste: firePaste\n    };\n\n    var shouldPlainTextInform = function (editor) {\n      return editor.getParam('paste_plaintext_inform', true);\n    };\n    var shouldBlockDrop = function (editor) {\n      return editor.getParam('paste_block_drop', false);\n    };\n    var shouldPasteDataImages = function (editor) {\n      return editor.getParam('paste_data_images', false);\n    };\n    var shouldFilterDrop = function (editor) {\n      return editor.getParam('paste_filter_drop', true);\n    };\n    var getPreProcess = function (editor) {\n      return editor.getParam('paste_preprocess');\n    };\n    var getPostProcess = function (editor) {\n      return editor.getParam('paste_postprocess');\n    };\n    var getWebkitStyles = function (editor) {\n      return editor.getParam('paste_webkit_styles');\n    };\n    var shouldRemoveWebKitStyles = function (editor) {\n      return editor.getParam('paste_remove_styles_if_webkit', true);\n    };\n    var shouldMergeFormats = function (editor) {\n      return editor.getParam('paste_merge_formats', true);\n    };\n    var isSmartPasteEnabled = function (editor) {\n      return editor.getParam('smart_paste', true);\n    };\n    var isPasteAsTextEnabled = function (editor) {\n      return editor.getParam('paste_as_text', false);\n    };\n    var getRetainStyleProps = function (editor) {\n      return editor.getParam('paste_retain_style_properties');\n    };\n    var getWordValidElements = function (editor) {\n      var defaultValidElements = '-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,' + '-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,' + 'td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody';\n      return editor.getParam('paste_word_valid_elements', defaultValidElements);\n    };\n    var shouldConvertWordFakeLists = function (editor) {\n      return editor.getParam('paste_convert_word_fake_lists', true);\n    };\n    var shouldUseDefaultFilters = function (editor) {\n      return editor.getParam('paste_enable_default_filters', true);\n    };\n    var Settings = {\n      shouldPlainTextInform: shouldPlainTextInform,\n      shouldBlockDrop: shouldBlockDrop,\n      shouldPasteDataImages: shouldPasteDataImages,\n      shouldFilterDrop: shouldFilterDrop,\n      getPreProcess: getPreProcess,\n      getPostProcess: getPostProcess,\n      getWebkitStyles: getWebkitStyles,\n      shouldRemoveWebKitStyles: shouldRemoveWebKitStyles,\n      shouldMergeFormats: shouldMergeFormats,\n      isSmartPasteEnabled: isSmartPasteEnabled,\n      isPasteAsTextEnabled: isPasteAsTextEnabled,\n      getRetainStyleProps: getRetainStyleProps,\n      getWordValidElements: getWordValidElements,\n      shouldConvertWordFakeLists: shouldConvertWordFakeLists,\n      shouldUseDefaultFilters: shouldUseDefaultFilters\n    };\n\n    var shouldInformUserAboutPlainText = function (editor, userIsInformedState) {\n      return userIsInformedState.get() === false && Settings.shouldPlainTextInform(editor);\n    };\n    var displayNotification = function (editor, message) {\n      editor.notificationManager.open({\n        text: editor.translate(message),\n        type: 'info'\n      });\n    };\n    var togglePlainTextPaste = function (editor, clipboard, userIsInformedState) {\n      if (clipboard.pasteFormat.get() === 'text') {\n        clipboard.pasteFormat.set('html');\n        Events.firePastePlainTextToggle(editor, false);\n      } else {\n        clipboard.pasteFormat.set('text');\n        Events.firePastePlainTextToggle(editor, true);\n        if (shouldInformUserAboutPlainText(editor, userIsInformedState)) {\n          displayNotification(editor, 'Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.');\n          userIsInformedState.set(true);\n        }\n      }\n      editor.focus();\n    };\n    var Actions = { togglePlainTextPaste: togglePlainTextPaste };\n\n    var register = function (editor, clipboard, userIsInformedState) {\n      editor.addCommand('mceTogglePlainTextPaste', function () {\n        Actions.togglePlainTextPaste(editor, clipboard, userIsInformedState);\n      });\n      editor.addCommand('mceInsertClipboardContent', function (ui, value) {\n        if (value.content) {\n          clipboard.pasteHtml(value.content, value.internal);\n        }\n        if (value.text) {\n          clipboard.pasteText(value.text);\n        }\n      });\n    };\n    var Commands = { register: register };\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    var global$4 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n    var internalMimeType = 'x-tinymce/html';\n    var internalMark = '<!-- ' + internalMimeType + ' -->';\n    var mark = function (html) {\n      return internalMark + html;\n    };\n    var unmark = function (html) {\n      return html.replace(internalMark, '');\n    };\n    var isMarked = function (html) {\n      return html.indexOf(internalMark) !== -1;\n    };\n    var InternalHtml = {\n      mark: mark,\n      unmark: unmark,\n      isMarked: isMarked,\n      internalHtmlMime: function () {\n        return internalMimeType;\n      }\n    };\n\n    var global$5 = tinymce.util.Tools.resolve('tinymce.html.Entities');\n\n    var isPlainText = function (text) {\n      return !/<(?:\\/?(?!(?:div|p|br|span)>)\\w+|(?:(?!(?:span style=\"white-space:\\s?pre;?\">)|br\\s?\\/>))\\w+\\s[^>]+)>/i.test(text);\n    };\n    var toBRs = function (text) {\n      return text.replace(/\\r?\\n/g, '<br>');\n    };\n    var openContainer = function (rootTag, rootAttrs) {\n      var key;\n      var attrs = [];\n      var tag = '<' + rootTag;\n      if (typeof rootAttrs === 'object') {\n        for (key in rootAttrs) {\n          if (rootAttrs.hasOwnProperty(key)) {\n            attrs.push(key + '=\"' + global$5.encodeAllRaw(rootAttrs[key]) + '\"');\n          }\n        }\n        if (attrs.length) {\n          tag += ' ' + attrs.join(' ');\n        }\n      }\n      return tag + '>';\n    };\n    var toBlockElements = function (text, rootTag, rootAttrs) {\n      var blocks = text.split(/\\n\\n/);\n      var tagOpen = openContainer(rootTag, rootAttrs);\n      var tagClose = '</' + rootTag + '>';\n      var paragraphs = global$3.map(blocks, function (p) {\n        return p.split(/\\n/).join('<br />');\n      });\n      var stitch = function (p) {\n        return tagOpen + p + tagClose;\n      };\n      return paragraphs.length === 1 ? paragraphs[0] : global$3.map(paragraphs, stitch).join('');\n    };\n    var convert = function (text, rootTag, rootAttrs) {\n      return rootTag ? toBlockElements(text, rootTag, rootAttrs) : toBRs(text);\n    };\n    var Newlines = {\n      isPlainText: isPlainText,\n      convert: convert,\n      toBRs: toBRs,\n      toBlockElements: toBlockElements\n    };\n\n    var global$6 = tinymce.util.Tools.resolve('tinymce.html.DomParser');\n\n    var global$7 = tinymce.util.Tools.resolve('tinymce.html.Node');\n\n    var global$8 = tinymce.util.Tools.resolve('tinymce.html.Schema');\n\n    var global$9 = tinymce.util.Tools.resolve('tinymce.html.Serializer');\n\n    function filter(content, items) {\n      global$3.each(items, function (v) {\n        if (v.constructor === RegExp) {\n          content = content.replace(v, '');\n        } else {\n          content = content.replace(v[0], v[1]);\n        }\n      });\n      return content;\n    }\n    function innerText(html) {\n      var schema = global$8();\n      var domParser = global$6({}, schema);\n      var text = '';\n      var shortEndedElements = schema.getShortEndedElements();\n      var ignoreElements = global$3.makeMap('script noscript style textarea video audio iframe object', ' ');\n      var blockElements = schema.getBlockElements();\n      function walk(node) {\n        var name$$1 = node.name, currentNode = node;\n        if (name$$1 === 'br') {\n          text += '\\n';\n          return;\n        }\n        if (name$$1 === 'wbr') {\n          return;\n        }\n        if (shortEndedElements[name$$1]) {\n          text += ' ';\n        }\n        if (ignoreElements[name$$1]) {\n          text += ' ';\n          return;\n        }\n        if (node.type === 3) {\n          text += node.value;\n        }\n        if (!node.shortEnded) {\n          if (node = node.firstChild) {\n            do {\n              walk(node);\n            } while (node = node.next);\n          }\n        }\n        if (blockElements[name$$1] && currentNode.next) {\n          text += '\\n';\n          if (name$$1 === 'p') {\n            text += '\\n';\n          }\n        }\n      }\n      html = filter(html, [/<!\\[[^\\]]+\\]>/g]);\n      walk(domParser.parse(html));\n      return text;\n    }\n    function trimHtml(html) {\n      function trimSpaces(all, s1, s2) {\n        if (!s1 && !s2) {\n          return ' ';\n        }\n        return '\\xA0';\n      }\n      html = filter(html, [\n        /^[\\s\\S]*<body[^>]*>\\s*|\\s*<\\/body[^>]*>[\\s\\S]*$/ig,\n        /<!--StartFragment-->|<!--EndFragment-->/g,\n        [\n          /( ?)<span class=\"Apple-converted-space\">\\u00a0<\\/span>( ?)/g,\n          trimSpaces\n        ],\n        /<br class=\"Apple-interchange-newline\">/g,\n        /<br>$/i\n      ]);\n      return html;\n    }\n    function createIdGenerator(prefix) {\n      var count = 0;\n      return function () {\n        return prefix + count++;\n      };\n    }\n    var isMsEdge = function () {\n      return navigator.userAgent.indexOf(' Edge/') !== -1;\n    };\n    var Utils = {\n      filter: filter,\n      innerText: innerText,\n      trimHtml: trimHtml,\n      createIdGenerator: createIdGenerator,\n      isMsEdge: isMsEdge\n    };\n\n    function isWordContent(content) {\n      return /<font face=\"Times New Roman\"|class=\"?Mso|style=\"[^\"]*\\bmso-|style='[^'']*\\bmso-|w:WordDocument/i.test(content) || /class=\"OutlineElement/.test(content) || /id=\"?docs\\-internal\\-guid\\-/.test(content);\n    }\n    function isNumericList(text) {\n      var found, patterns;\n      patterns = [\n        /^[IVXLMCD]{1,2}\\.[ \\u00a0]/,\n        /^[ivxlmcd]{1,2}\\.[ \\u00a0]/,\n        /^[a-z]{1,2}[\\.\\)][ \\u00a0]/,\n        /^[A-Z]{1,2}[\\.\\)][ \\u00a0]/,\n        /^[0-9]+\\.[ \\u00a0]/,\n        /^[\\u3007\\u4e00\\u4e8c\\u4e09\\u56db\\u4e94\\u516d\\u4e03\\u516b\\u4e5d]+\\.[ \\u00a0]/,\n        /^[\\u58f1\\u5f10\\u53c2\\u56db\\u4f0d\\u516d\\u4e03\\u516b\\u4e5d\\u62fe]+\\.[ \\u00a0]/\n      ];\n      text = text.replace(/^[\\u00a0 ]+/, '');\n      global$3.each(patterns, function (pattern) {\n        if (pattern.test(text)) {\n          found = true;\n          return false;\n        }\n      });\n      return found;\n    }\n    function isBulletList(text) {\n      return /^[\\s\\u00a0]*[\\u2022\\u00b7\\u00a7\\u25CF]\\s*/.test(text);\n    }\n    function convertFakeListsToProperLists(node) {\n      var currentListNode, prevListNode, lastLevel = 1;\n      function getText(node) {\n        var txt = '';\n        if (node.type === 3) {\n          return node.value;\n        }\n        if (node = node.firstChild) {\n          do {\n            txt += getText(node);\n          } while (node = node.next);\n        }\n        return txt;\n      }\n      function trimListStart(node, regExp) {\n        if (node.type === 3) {\n          if (regExp.test(node.value)) {\n            node.value = node.value.replace(regExp, '');\n            return false;\n          }\n        }\n        if (node = node.firstChild) {\n          do {\n            if (!trimListStart(node, regExp)) {\n              return false;\n            }\n          } while (node = node.next);\n        }\n        return true;\n      }\n      function removeIgnoredNodes(node) {\n        if (node._listIgnore) {\n          node.remove();\n          return;\n        }\n        if (node = node.firstChild) {\n          do {\n            removeIgnoredNodes(node);\n          } while (node = node.next);\n        }\n      }\n      function convertParagraphToLi(paragraphNode, listName, start) {\n        var level = paragraphNode._listLevel || lastLevel;\n        if (level !== lastLevel) {\n          if (level < lastLevel) {\n            if (currentListNode) {\n              currentListNode = currentListNode.parent.parent;\n            }\n          } else {\n            prevListNode = currentListNode;\n            currentListNode = null;\n          }\n        }\n        if (!currentListNode || currentListNode.name !== listName) {\n          prevListNode = prevListNode || currentListNode;\n          currentListNode = new global$7(listName, 1);\n          if (start > 1) {\n            currentListNode.attr('start', '' + start);\n          }\n          paragraphNode.wrap(currentListNode);\n        } else {\n          currentListNode.append(paragraphNode);\n        }\n        paragraphNode.name = 'li';\n        if (level > lastLevel && prevListNode) {\n          prevListNode.lastChild.append(currentListNode);\n        }\n        lastLevel = level;\n        removeIgnoredNodes(paragraphNode);\n        trimListStart(paragraphNode, /^\\u00a0+/);\n        trimListStart(paragraphNode, /^\\s*([\\u2022\\u00b7\\u00a7\\u25CF]|\\w+\\.)/);\n        trimListStart(paragraphNode, /^\\u00a0+/);\n      }\n      var elements = [];\n      var child = node.firstChild;\n      while (typeof child !== 'undefined' && child !== null) {\n        elements.push(child);\n        child = child.walk();\n        if (child !== null) {\n          while (typeof child !== 'undefined' && child.parent !== node) {\n            child = child.walk();\n          }\n        }\n      }\n      for (var i = 0; i < elements.length; i++) {\n        node = elements[i];\n        if (node.name === 'p' && node.firstChild) {\n          var nodeText = getText(node);\n          if (isBulletList(nodeText)) {\n            convertParagraphToLi(node, 'ul');\n            continue;\n          }\n          if (isNumericList(nodeText)) {\n            var matches = /([0-9]+)\\./.exec(nodeText);\n            var start = 1;\n            if (matches) {\n              start = parseInt(matches[1], 10);\n            }\n            convertParagraphToLi(node, 'ol', start);\n            continue;\n          }\n          if (node._listLevel) {\n            convertParagraphToLi(node, 'ul', 1);\n            continue;\n          }\n          currentListNode = null;\n        } else {\n          prevListNode = currentListNode;\n          currentListNode = null;\n        }\n      }\n    }\n    function filterStyles(editor, validStyles, node, styleValue) {\n      var outputStyles = {}, matches;\n      var styles = editor.dom.parseStyle(styleValue);\n      global$3.each(styles, function (value, name) {\n        switch (name) {\n        case 'mso-list':\n          matches = /\\w+ \\w+([0-9]+)/i.exec(styleValue);\n          if (matches) {\n            node._listLevel = parseInt(matches[1], 10);\n          }\n          if (/Ignore/i.test(value) && node.firstChild) {\n            node._listIgnore = true;\n            node.firstChild._listIgnore = true;\n          }\n          break;\n        case 'horiz-align':\n          name = 'text-align';\n          break;\n        case 'vert-align':\n          name = 'vertical-align';\n          break;\n        case 'font-color':\n        case 'mso-foreground':\n          name = 'color';\n          break;\n        case 'mso-background':\n        case 'mso-highlight':\n          name = 'background';\n          break;\n        case 'font-weight':\n        case 'font-style':\n          if (value !== 'normal') {\n            outputStyles[name] = value;\n          }\n          return;\n        case 'mso-element':\n          if (/^(comment|comment-list)$/i.test(value)) {\n            node.remove();\n            return;\n          }\n          break;\n        }\n        if (name.indexOf('mso-comment') === 0) {\n          node.remove();\n          return;\n        }\n        if (name.indexOf('mso-') === 0) {\n          return;\n        }\n        if (Settings.getRetainStyleProps(editor) === 'all' || validStyles && validStyles[name]) {\n          outputStyles[name] = value;\n        }\n      });\n      if (/(bold)/i.test(outputStyles['font-weight'])) {\n        delete outputStyles['font-weight'];\n        node.wrap(new global$7('b', 1));\n      }\n      if (/(italic)/i.test(outputStyles['font-style'])) {\n        delete outputStyles['font-style'];\n        node.wrap(new global$7('i', 1));\n      }\n      outputStyles = editor.dom.serializeStyle(outputStyles, node.name);\n      if (outputStyles) {\n        return outputStyles;\n      }\n      return null;\n    }\n    var filterWordContent = function (editor, content) {\n      var retainStyleProperties, validStyles;\n      retainStyleProperties = Settings.getRetainStyleProps(editor);\n      if (retainStyleProperties) {\n        validStyles = global$3.makeMap(retainStyleProperties.split(/[, ]/));\n      }\n      content = Utils.filter(content, [\n        /<br class=\"?Apple-interchange-newline\"?>/gi,\n        /<b[^>]+id=\"?docs-internal-[^>]*>/gi,\n        /<!--[\\s\\S]+?-->/gi,\n        /<(!|script[^>]*>.*?<\\/script(?=[>\\s])|\\/?(\\?xml(:\\w+)?|img|meta|link|style|\\w:\\w+)(?=[\\s\\/>]))[^>]*>/gi,\n        [\n          /<(\\/?)s>/gi,\n          '<$1strike>'\n        ],\n        [\n          /&nbsp;/gi,\n          '\\xA0'\n        ],\n        [\n          /<span\\s+style\\s*=\\s*\"\\s*mso-spacerun\\s*:\\s*yes\\s*;?\\s*\"\\s*>([\\s\\u00a0]*)<\\/span>/gi,\n          function (str, spaces) {\n            return spaces.length > 0 ? spaces.replace(/./, ' ').slice(Math.floor(spaces.length / 2)).split('').join('\\xA0') : '';\n          }\n        ]\n      ]);\n      var validElements = Settings.getWordValidElements(editor);\n      var schema = global$8({\n        valid_elements: validElements,\n        valid_children: '-li[p]'\n      });\n      global$3.each(schema.elements, function (rule) {\n        if (!rule.attributes.class) {\n          rule.attributes.class = {};\n          rule.attributesOrder.push('class');\n        }\n        if (!rule.attributes.style) {\n          rule.attributes.style = {};\n          rule.attributesOrder.push('style');\n        }\n      });\n      var domParser = global$6({}, schema);\n      domParser.addAttributeFilter('style', function (nodes) {\n        var i = nodes.length, node;\n        while (i--) {\n          node = nodes[i];\n          node.attr('style', filterStyles(editor, validStyles, node, node.attr('style')));\n          if (node.name === 'span' && node.parent && !node.attributes.length) {\n            node.unwrap();\n          }\n        }\n      });\n      domParser.addAttributeFilter('class', function (nodes) {\n        var i = nodes.length, node, className;\n        while (i--) {\n          node = nodes[i];\n          className = node.attr('class');\n          if (/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(className)) {\n            node.remove();\n          }\n          node.attr('class', null);\n        }\n      });\n      domParser.addNodeFilter('del', function (nodes) {\n        var i = nodes.length;\n        while (i--) {\n          nodes[i].remove();\n        }\n      });\n      domParser.addNodeFilter('a', function (nodes) {\n        var i = nodes.length, node, href, name;\n        while (i--) {\n          node = nodes[i];\n          href = node.attr('href');\n          name = node.attr('name');\n          if (href && href.indexOf('#_msocom_') !== -1) {\n            node.remove();\n            continue;\n          }\n          if (href && href.indexOf('file://') === 0) {\n            href = href.split('#')[1];\n            if (href) {\n              href = '#' + href;\n            }\n          }\n          if (!href && !name) {\n            node.unwrap();\n          } else {\n            if (name && !/^_?(?:toc|edn|ftn)/i.test(name)) {\n              node.unwrap();\n              continue;\n            }\n            node.attr({\n              href: href,\n              name: name\n            });\n          }\n        }\n      });\n      var rootNode = domParser.parse(content);\n      if (Settings.shouldConvertWordFakeLists(editor)) {\n        convertFakeListsToProperLists(rootNode);\n      }\n      content = global$9({ validate: editor.settings.validate }, schema).serialize(rootNode);\n      return content;\n    };\n    var preProcess = function (editor, content) {\n      return Settings.shouldUseDefaultFilters(editor) ? filterWordContent(editor, content) : content;\n    };\n    var WordFilter = {\n      preProcess: preProcess,\n      isWordContent: isWordContent\n    };\n\n    var processResult = function (content, cancelled) {\n      return {\n        content: content,\n        cancelled: cancelled\n      };\n    };\n    var postProcessFilter = function (editor, html, internal, isWordHtml) {\n      var tempBody = editor.dom.create('div', { style: 'display:none' }, html);\n      var postProcessArgs = Events.firePastePostProcess(editor, tempBody, internal, isWordHtml);\n      return processResult(postProcessArgs.node.innerHTML, postProcessArgs.isDefaultPrevented());\n    };\n    var filterContent = function (editor, content, internal, isWordHtml) {\n      var preProcessArgs = Events.firePastePreProcess(editor, content, internal, isWordHtml);\n      if (editor.hasEventListeners('PastePostProcess') && !preProcessArgs.isDefaultPrevented()) {\n        return postProcessFilter(editor, preProcessArgs.content, internal, isWordHtml);\n      } else {\n        return processResult(preProcessArgs.content, preProcessArgs.isDefaultPrevented());\n      }\n    };\n    var process = function (editor, html, internal) {\n      var isWordHtml = WordFilter.isWordContent(html);\n      var content = isWordHtml ? WordFilter.preProcess(editor, html) : html;\n      return filterContent(editor, content, internal, isWordHtml);\n    };\n    var ProcessFilters = { process: process };\n\n    var removeMeta = function (editor, html) {\n      var body = editor.dom.create('body', {}, html);\n      global$3.each(body.querySelectorAll('meta'), function (elm) {\n        return elm.parentNode.removeChild(elm);\n      });\n      return body.innerHTML;\n    };\n    var pasteHtml = function (editor, html) {\n      editor.insertContent(removeMeta(editor, html), {\n        merge: Settings.shouldMergeFormats(editor),\n        paste: true\n      });\n      return true;\n    };\n    var isAbsoluteUrl = function (url) {\n      return /^https?:\\/\\/[\\w\\?\\-\\/+=.&%@~#]+$/i.test(url);\n    };\n    var isImageUrl = function (url) {\n      return isAbsoluteUrl(url) && /.(gif|jpe?g|png)$/.test(url);\n    };\n    var createImage = function (editor, url, pasteHtmlFn) {\n      editor.undoManager.extra(function () {\n        pasteHtmlFn(editor, url);\n      }, function () {\n        editor.insertContent('<img src=\"' + url + '\">');\n      });\n      return true;\n    };\n    var createLink = function (editor, url, pasteHtmlFn) {\n      editor.undoManager.extra(function () {\n        pasteHtmlFn(editor, url);\n      }, function () {\n        editor.execCommand('mceInsertLink', false, url);\n      });\n      return true;\n    };\n    var linkSelection = function (editor, html, pasteHtmlFn) {\n      return editor.selection.isCollapsed() === false && isAbsoluteUrl(html) ? createLink(editor, html, pasteHtmlFn) : false;\n    };\n    var insertImage = function (editor, html, pasteHtmlFn) {\n      return isImageUrl(html) ? createImage(editor, html, pasteHtmlFn) : false;\n    };\n    var smartInsertContent = function (editor, html) {\n      global$3.each([\n        linkSelection,\n        insertImage,\n        pasteHtml\n      ], function (action) {\n        return action(editor, html, pasteHtml) !== true;\n      });\n    };\n    var insertContent = function (editor, html) {\n      if (Settings.isSmartPasteEnabled(editor) === false) {\n        pasteHtml(editor, html);\n      } else {\n        smartInsertContent(editor, html);\n      }\n    };\n    var SmartPaste = {\n      isImageUrl: isImageUrl,\n      isAbsoluteUrl: isAbsoluteUrl,\n      insertContent: insertContent\n    };\n\n    var constant = function (value) {\n      return function () {\n        return value;\n      };\n    };\n    function curry(fn) {\n      var initialArgs = [];\n      for (var _i = 1; _i < arguments.length; _i++) {\n        initialArgs[_i - 1] = arguments[_i];\n      }\n      return function () {\n        var restArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          restArgs[_i] = arguments[_i];\n        }\n        var all = initialArgs.concat(restArgs);\n        return fn.apply(null, all);\n      };\n    }\n    var never = constant(false);\n    var always = constant(true);\n\n    var never$1 = never;\n    var always$1 = always;\n    var none = function () {\n      return NONE;\n    };\n    var NONE = function () {\n      var eq = function (o) {\n        return o.isNone();\n      };\n      var call$$1 = function (thunk) {\n        return thunk();\n      };\n      var id = function (n) {\n        return n;\n      };\n      var noop$$1 = function () {\n      };\n      var nul = function () {\n        return null;\n      };\n      var undef = function () {\n        return undefined;\n      };\n      var me = {\n        fold: function (n, s) {\n          return n();\n        },\n        is: never$1,\n        isSome: never$1,\n        isNone: always$1,\n        getOr: id,\n        getOrThunk: call$$1,\n        getOrDie: function (msg) {\n          throw new Error(msg || 'error: getOrDie called on none.');\n        },\n        getOrNull: nul,\n        getOrUndefined: undef,\n        or: id,\n        orThunk: call$$1,\n        map: none,\n        ap: none,\n        each: noop$$1,\n        bind: none,\n        flatten: none,\n        exists: never$1,\n        forall: always$1,\n        filter: none,\n        equals: eq,\n        equals_: eq,\n        toArray: function () {\n          return [];\n        },\n        toString: constant('none()')\n      };\n      if (Object.freeze)\n        Object.freeze(me);\n      return me;\n    }();\n    var some = function (a) {\n      var constant_a = function () {\n        return a;\n      };\n      var self = function () {\n        return me;\n      };\n      var map = function (f) {\n        return some(f(a));\n      };\n      var bind = function (f) {\n        return f(a);\n      };\n      var me = {\n        fold: function (n, s) {\n          return s(a);\n        },\n        is: function (v) {\n          return a === v;\n        },\n        isSome: always$1,\n        isNone: never$1,\n        getOr: constant_a,\n        getOrThunk: constant_a,\n        getOrDie: constant_a,\n        getOrNull: constant_a,\n        getOrUndefined: constant_a,\n        or: self,\n        orThunk: self,\n        map: map,\n        ap: function (optfab) {\n          return optfab.fold(none, function (fab) {\n            return some(fab(a));\n          });\n        },\n        each: function (f) {\n          f(a);\n        },\n        bind: bind,\n        flatten: constant_a,\n        exists: bind,\n        forall: bind,\n        filter: function (f) {\n          return f(a) ? me : NONE;\n        },\n        equals: function (o) {\n          return o.is(a);\n        },\n        equals_: function (o, elementEq) {\n          return o.fold(never$1, function (b) {\n            return elementEq(a, b);\n          });\n        },\n        toArray: function () {\n          return [a];\n        },\n        toString: function () {\n          return 'some(' + a + ')';\n        }\n      };\n      return me;\n    };\n    var from = function (value) {\n      return value === null || value === undefined ? NONE : some(value);\n    };\n    var Option = {\n      some: some,\n      none: none,\n      from: from\n    };\n\n    var typeOf = function (x) {\n      if (x === null)\n        return 'null';\n      var t = typeof x;\n      if (t === 'object' && Array.prototype.isPrototypeOf(x))\n        return 'array';\n      if (t === 'object' && String.prototype.isPrototypeOf(x))\n        return 'string';\n      return t;\n    };\n    var isType = function (type) {\n      return function (value) {\n        return typeOf(value) === type;\n      };\n    };\n    var isFunction = isType('function');\n\n    var map = function (xs, f) {\n      var len = xs.length;\n      var r = new Array(len);\n      for (var i = 0; i < len; i++) {\n        var x = xs[i];\n        r[i] = f(x, i, xs);\n      }\n      return r;\n    };\n    var each = function (xs, f) {\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        f(x, i, xs);\n      }\n    };\n    var filter$1 = function (xs, pred) {\n      var r = [];\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        if (pred(x, i, xs)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n    var slice = Array.prototype.slice;\n    var from$1 = isFunction(Array.from) ? Array.from : function (x) {\n      return slice.call(x);\n    };\n\n    var nu = function (baseFn) {\n      var data = Option.none();\n      var callbacks = [];\n      var map$$1 = function (f) {\n        return nu(function (nCallback) {\n          get(function (data) {\n            nCallback(f(data));\n          });\n        });\n      };\n      var get = function (nCallback) {\n        if (isReady())\n          call(nCallback);\n        else\n          callbacks.push(nCallback);\n      };\n      var set = function (x) {\n        data = Option.some(x);\n        run(callbacks);\n        callbacks = [];\n      };\n      var isReady = function () {\n        return data.isSome();\n      };\n      var run = function (cbs) {\n        each(cbs, call);\n      };\n      var call = function (cb) {\n        data.each(function (x) {\n          setTimeout(function () {\n            cb(x);\n          }, 0);\n        });\n      };\n      baseFn(set);\n      return {\n        get: get,\n        map: map$$1,\n        isReady: isReady\n      };\n    };\n    var pure$1 = function (a) {\n      return nu(function (callback) {\n        callback(a);\n      });\n    };\n    var LazyValue = {\n      nu: nu,\n      pure: pure$1\n    };\n\n    var bounce = function (f) {\n      return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          args[_i] = arguments[_i];\n        }\n        var me = this;\n        setTimeout(function () {\n          f.apply(me, args);\n        }, 0);\n      };\n    };\n\n    var nu$1 = function (baseFn) {\n      var get = function (callback) {\n        baseFn(bounce(callback));\n      };\n      var map = function (fab) {\n        return nu$1(function (callback) {\n          get(function (a) {\n            var value = fab(a);\n            callback(value);\n          });\n        });\n      };\n      var bind = function (aFutureB) {\n        return nu$1(function (callback) {\n          get(function (a) {\n            aFutureB(a).get(callback);\n          });\n        });\n      };\n      var anonBind = function (futureB) {\n        return nu$1(function (callback) {\n          get(function (a) {\n            futureB.get(callback);\n          });\n        });\n      };\n      var toLazy = function () {\n        return LazyValue.nu(get);\n      };\n      var toCached = function () {\n        var cache = null;\n        return nu$1(function (callback) {\n          if (cache === null) {\n            cache = toLazy();\n          }\n          cache.get(callback);\n        });\n      };\n      return {\n        map: map,\n        bind: bind,\n        anonBind: anonBind,\n        toLazy: toLazy,\n        toCached: toCached,\n        get: get\n      };\n    };\n    var pure$2 = function (a) {\n      return nu$1(function (callback) {\n        callback(a);\n      });\n    };\n    var Future = {\n      nu: nu$1,\n      pure: pure$2\n    };\n\n    var par = function (asyncValues, nu) {\n      return nu(function (callback) {\n        var r = [];\n        var count = 0;\n        var cb = function (i) {\n          return function (value) {\n            r[i] = value;\n            count++;\n            if (count >= asyncValues.length) {\n              callback(r);\n            }\n          };\n        };\n        if (asyncValues.length === 0) {\n          callback([]);\n        } else {\n          each(asyncValues, function (asyncValue, i) {\n            asyncValue.get(cb(i));\n          });\n        }\n      });\n    };\n\n    var par$1 = function (futures) {\n      return par(futures, Future.nu);\n    };\n    var mapM = function (array, fn) {\n      var futures = map(array, fn);\n      return par$1(futures);\n    };\n\n    var pasteHtml$1 = function (editor, html, internalFlag) {\n      var internal = internalFlag ? internalFlag : InternalHtml.isMarked(html);\n      var args = ProcessFilters.process(editor, InternalHtml.unmark(html), internal);\n      if (args.cancelled === false) {\n        SmartPaste.insertContent(editor, args.content);\n      }\n    };\n    var pasteText = function (editor, text) {\n      text = editor.dom.encode(text).replace(/\\r\\n/g, '\\n');\n      text = Newlines.convert(text, editor.settings.forced_root_block, editor.settings.forced_root_block_attrs);\n      pasteHtml$1(editor, text, false);\n    };\n    var getDataTransferItems = function (dataTransfer) {\n      var items = {};\n      var mceInternalUrlPrefix = 'data:text/mce-internal,';\n      if (dataTransfer) {\n        if (dataTransfer.getData) {\n          var legacyText = dataTransfer.getData('Text');\n          if (legacyText && legacyText.length > 0) {\n            if (legacyText.indexOf(mceInternalUrlPrefix) === -1) {\n              items['text/plain'] = legacyText;\n            }\n          }\n        }\n        if (dataTransfer.types) {\n          for (var i = 0; i < dataTransfer.types.length; i++) {\n            var contentType = dataTransfer.types[i];\n            try {\n              items[contentType] = dataTransfer.getData(contentType);\n            } catch (ex) {\n              items[contentType] = '';\n            }\n          }\n        }\n      }\n      return items;\n    };\n    var getClipboardContent = function (editor, clipboardEvent) {\n      var content = getDataTransferItems(clipboardEvent.clipboardData || editor.getDoc().dataTransfer);\n      return Utils.isMsEdge() ? global$3.extend(content, { 'text/html': '' }) : content;\n    };\n    var hasContentType = function (clipboardContent, mimeType) {\n      return mimeType in clipboardContent && clipboardContent[mimeType].length > 0;\n    };\n    var hasHtmlOrText = function (content) {\n      return hasContentType(content, 'text/html') || hasContentType(content, 'text/plain');\n    };\n    var getBase64FromUri = function (uri) {\n      var idx;\n      idx = uri.indexOf(',');\n      if (idx !== -1) {\n        return uri.substr(idx + 1);\n      }\n      return null;\n    };\n    var isValidDataUriImage = function (settings, imgElm) {\n      return settings.images_dataimg_filter ? settings.images_dataimg_filter(imgElm) : true;\n    };\n    var extractFilename = function (editor, str) {\n      var m = str.match(/([\\s\\S]+?)\\.(?:jpeg|jpg|png|gif)$/i);\n      return m ? editor.dom.encode(m[1]) : null;\n    };\n    var uniqueId = Utils.createIdGenerator('mceclip');\n    var pasteImage = function (editor, imageItem) {\n      var base64 = getBase64FromUri(imageItem.uri);\n      var id = uniqueId();\n      var name$$1 = editor.settings.images_reuse_filename && imageItem.blob.name ? extractFilename(editor, imageItem.blob.name) : id;\n      var img = new Image();\n      img.src = imageItem.uri;\n      if (isValidDataUriImage(editor.settings, img)) {\n        var blobCache = editor.editorUpload.blobCache;\n        var blobInfo = void 0, existingBlobInfo = void 0;\n        existingBlobInfo = blobCache.findFirst(function (cachedBlobInfo) {\n          return cachedBlobInfo.base64() === base64;\n        });\n        if (!existingBlobInfo) {\n          blobInfo = blobCache.create(id, imageItem.blob, base64, name$$1);\n          blobCache.add(blobInfo);\n        } else {\n          blobInfo = existingBlobInfo;\n        }\n        pasteHtml$1(editor, '<img src=\"' + blobInfo.blobUri() + '\">', false);\n      } else {\n        pasteHtml$1(editor, '<img src=\"' + imageItem.uri + '\">', false);\n      }\n    };\n    var isClipboardEvent = function (event$$1) {\n      return event$$1.type === 'paste';\n    };\n    var readBlobsAsDataUris = function (items) {\n      return mapM(items, function (item) {\n        return Future.nu(function (resolve) {\n          var blob = item.getAsFile ? item.getAsFile() : item;\n          var reader = new window.FileReader();\n          reader.onload = function () {\n            resolve({\n              blob: blob,\n              uri: reader.result\n            });\n          };\n          reader.readAsDataURL(blob);\n        });\n      });\n    };\n    var getImagesFromDataTransfer = function (dataTransfer) {\n      var items = dataTransfer.items ? map(from$1(dataTransfer.items), function (item) {\n        return item.getAsFile();\n      }) : [];\n      var files = dataTransfer.files ? from$1(dataTransfer.files) : [];\n      var images = filter$1(items.length > 0 ? items : files, function (file) {\n        return /^image\\/(jpeg|png|gif|bmp)$/.test(file.type);\n      });\n      return images;\n    };\n    var pasteImageData = function (editor, e, rng) {\n      var dataTransfer = isClipboardEvent(e) ? e.clipboardData : e.dataTransfer;\n      if (editor.settings.paste_data_images && dataTransfer) {\n        var images = getImagesFromDataTransfer(dataTransfer);\n        if (images.length > 0) {\n          e.preventDefault();\n          readBlobsAsDataUris(images).get(function (blobResults) {\n            if (rng) {\n              editor.selection.setRng(rng);\n            }\n            each(blobResults, function (result) {\n              pasteImage(editor, result);\n            });\n          });\n          return true;\n        }\n      }\n      return false;\n    };\n    var isBrokenAndroidClipboardEvent = function (e) {\n      var clipboardData = e.clipboardData;\n      return navigator.userAgent.indexOf('Android') !== -1 && clipboardData && clipboardData.items && clipboardData.items.length === 0;\n    };\n    var isKeyboardPasteEvent = function (e) {\n      return global$4.metaKeyPressed(e) && e.keyCode === 86 || e.shiftKey && e.keyCode === 45;\n    };\n    var registerEventHandlers = function (editor, pasteBin, pasteFormat) {\n      var keyboardPasteTimeStamp = 0;\n      var keyboardPastePlainTextState;\n      editor.on('keydown', function (e) {\n        function removePasteBinOnKeyUp(e) {\n          if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {\n            pasteBin.remove();\n          }\n        }\n        if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {\n          keyboardPastePlainTextState = e.shiftKey && e.keyCode === 86;\n          if (keyboardPastePlainTextState && global$1.webkit && navigator.userAgent.indexOf('Version/') !== -1) {\n            return;\n          }\n          e.stopImmediatePropagation();\n          keyboardPasteTimeStamp = new Date().getTime();\n          if (global$1.ie && keyboardPastePlainTextState) {\n            e.preventDefault();\n            Events.firePaste(editor, true);\n            return;\n          }\n          pasteBin.remove();\n          pasteBin.create();\n          editor.once('keyup', removePasteBinOnKeyUp);\n          editor.once('paste', function () {\n            editor.off('keyup', removePasteBinOnKeyUp);\n          });\n        }\n      });\n      function insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal) {\n        var content, isPlainTextHtml;\n        if (hasContentType(clipboardContent, 'text/html')) {\n          content = clipboardContent['text/html'];\n        } else {\n          content = pasteBin.getHtml();\n          internal = internal ? internal : InternalHtml.isMarked(content);\n          if (pasteBin.isDefaultContent(content)) {\n            plainTextMode = true;\n          }\n        }\n        content = Utils.trimHtml(content);\n        pasteBin.remove();\n        isPlainTextHtml = internal === false && Newlines.isPlainText(content);\n        if (!content.length || isPlainTextHtml) {\n          plainTextMode = true;\n        }\n        if (plainTextMode) {\n          if (hasContentType(clipboardContent, 'text/plain') && isPlainTextHtml) {\n            content = clipboardContent['text/plain'];\n          } else {\n            content = Utils.innerText(content);\n          }\n        }\n        if (pasteBin.isDefaultContent(content)) {\n          if (!isKeyBoardPaste) {\n            editor.windowManager.alert('Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.');\n          }\n          return;\n        }\n        if (plainTextMode) {\n          pasteText(editor, content);\n        } else {\n          pasteHtml$1(editor, content, internal);\n        }\n      }\n      var getLastRng = function () {\n        return pasteBin.getLastRng() || editor.selection.getRng();\n      };\n      editor.on('paste', function (e) {\n        var clipboardTimer = new Date().getTime();\n        var clipboardContent = getClipboardContent(editor, e);\n        var clipboardDelay = new Date().getTime() - clipboardTimer;\n        var isKeyBoardPaste = new Date().getTime() - keyboardPasteTimeStamp - clipboardDelay < 1000;\n        var plainTextMode = pasteFormat.get() === 'text' || keyboardPastePlainTextState;\n        var internal = hasContentType(clipboardContent, InternalHtml.internalHtmlMime());\n        keyboardPastePlainTextState = false;\n        if (e.isDefaultPrevented() || isBrokenAndroidClipboardEvent(e)) {\n          pasteBin.remove();\n          return;\n        }\n        if (!hasHtmlOrText(clipboardContent) && pasteImageData(editor, e, getLastRng())) {\n          pasteBin.remove();\n          return;\n        }\n        if (!isKeyBoardPaste) {\n          e.preventDefault();\n        }\n        if (global$1.ie && (!isKeyBoardPaste || e.ieFake) && !hasContentType(clipboardContent, 'text/html')) {\n          pasteBin.create();\n          editor.dom.bind(pasteBin.getEl(), 'paste', function (e) {\n            e.stopPropagation();\n          });\n          editor.getDoc().execCommand('Paste', false, null);\n          clipboardContent['text/html'] = pasteBin.getHtml();\n        }\n        if (hasContentType(clipboardContent, 'text/html')) {\n          e.preventDefault();\n          if (!internal) {\n            internal = InternalHtml.isMarked(clipboardContent['text/html']);\n          }\n          insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal);\n        } else {\n          global$2.setEditorTimeout(editor, function () {\n            insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal);\n          }, 0);\n        }\n      });\n    };\n    var registerEventsAndFilters = function (editor, pasteBin, pasteFormat) {\n      registerEventHandlers(editor, pasteBin, pasteFormat);\n      var src;\n      editor.parser.addNodeFilter('img', function (nodes, name$$1, args) {\n        var isPasteInsert = function (args) {\n          return args.data && args.data.paste === true;\n        };\n        var remove = function (node) {\n          if (!node.attr('data-mce-object') && src !== global$1.transparentSrc) {\n            node.remove();\n          }\n        };\n        var isWebKitFakeUrl = function (src) {\n          return src.indexOf('webkit-fake-url') === 0;\n        };\n        var isDataUri = function (src) {\n          return src.indexOf('data:') === 0;\n        };\n        if (!editor.settings.paste_data_images && isPasteInsert(args)) {\n          var i = nodes.length;\n          while (i--) {\n            src = nodes[i].attributes.map.src;\n            if (!src) {\n              continue;\n            }\n            if (isWebKitFakeUrl(src)) {\n              remove(nodes[i]);\n            } else if (!editor.settings.allow_html_data_urls && isDataUri(src)) {\n              remove(nodes[i]);\n            }\n          }\n        }\n      });\n    };\n\n    var getPasteBinParent = function (editor) {\n      return global$1.ie && editor.inline ? document.body : editor.getBody();\n    };\n    var isExternalPasteBin = function (editor) {\n      return getPasteBinParent(editor) !== editor.getBody();\n    };\n    var delegatePasteEvents = function (editor, pasteBinElm, pasteBinDefaultContent) {\n      if (isExternalPasteBin(editor)) {\n        editor.dom.bind(pasteBinElm, 'paste keyup', function (e) {\n          if (!isDefault(editor, pasteBinDefaultContent)) {\n            editor.fire('paste');\n          }\n        });\n      }\n    };\n    var create = function (editor, lastRngCell, pasteBinDefaultContent) {\n      var dom = editor.dom, body = editor.getBody();\n      var pasteBinElm;\n      lastRngCell.set(editor.selection.getRng());\n      pasteBinElm = editor.dom.add(getPasteBinParent(editor), 'div', {\n        'id': 'mcepastebin',\n        'class': 'mce-pastebin',\n        'contentEditable': true,\n        'data-mce-bogus': 'all',\n        'style': 'position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0'\n      }, pasteBinDefaultContent);\n      if (global$1.ie || global$1.gecko) {\n        dom.setStyle(pasteBinElm, 'left', dom.getStyle(body, 'direction', true) === 'rtl' ? 65535 : -65535);\n      }\n      dom.bind(pasteBinElm, 'beforedeactivate focusin focusout', function (e) {\n        e.stopPropagation();\n      });\n      delegatePasteEvents(editor, pasteBinElm, pasteBinDefaultContent);\n      pasteBinElm.focus();\n      editor.selection.select(pasteBinElm, true);\n    };\n    var remove = function (editor, lastRngCell) {\n      if (getEl(editor)) {\n        var pasteBinClone = void 0;\n        var lastRng = lastRngCell.get();\n        while (pasteBinClone = editor.dom.get('mcepastebin')) {\n          editor.dom.remove(pasteBinClone);\n          editor.dom.unbind(pasteBinClone);\n        }\n        if (lastRng) {\n          editor.selection.setRng(lastRng);\n        }\n      }\n      lastRngCell.set(null);\n    };\n    var getEl = function (editor) {\n      return editor.dom.get('mcepastebin');\n    };\n    var getHtml = function (editor) {\n      var pasteBinElm, pasteBinClones, i, dirtyWrappers, cleanWrapper;\n      var copyAndRemove = function (toElm, fromElm) {\n        toElm.appendChild(fromElm);\n        editor.dom.remove(fromElm, true);\n      };\n      pasteBinClones = global$3.grep(getPasteBinParent(editor).childNodes, function (elm) {\n        return elm.id === 'mcepastebin';\n      });\n      pasteBinElm = pasteBinClones.shift();\n      global$3.each(pasteBinClones, function (pasteBinClone) {\n        copyAndRemove(pasteBinElm, pasteBinClone);\n      });\n      dirtyWrappers = editor.dom.select('div[id=mcepastebin]', pasteBinElm);\n      for (i = dirtyWrappers.length - 1; i >= 0; i--) {\n        cleanWrapper = editor.dom.create('div');\n        pasteBinElm.insertBefore(cleanWrapper, dirtyWrappers[i]);\n        copyAndRemove(cleanWrapper, dirtyWrappers[i]);\n      }\n      return pasteBinElm ? pasteBinElm.innerHTML : '';\n    };\n    var getLastRng = function (lastRng) {\n      return lastRng.get();\n    };\n    var isDefaultContent = function (pasteBinDefaultContent, content) {\n      return content === pasteBinDefaultContent;\n    };\n    var isPasteBin = function (elm) {\n      return elm && elm.id === 'mcepastebin';\n    };\n    var isDefault = function (editor, pasteBinDefaultContent) {\n      var pasteBinElm = getEl(editor);\n      return isPasteBin(pasteBinElm) && isDefaultContent(pasteBinDefaultContent, pasteBinElm.innerHTML);\n    };\n    var PasteBin = function (editor) {\n      var lastRng = Cell(null);\n      var pasteBinDefaultContent = '%MCEPASTEBIN%';\n      return {\n        create: function () {\n          return create(editor, lastRng, pasteBinDefaultContent);\n        },\n        remove: function () {\n          return remove(editor, lastRng);\n        },\n        getEl: function () {\n          return getEl(editor);\n        },\n        getHtml: function () {\n          return getHtml(editor);\n        },\n        getLastRng: function () {\n          return getLastRng(lastRng);\n        },\n        isDefault: function () {\n          return isDefault(editor, pasteBinDefaultContent);\n        },\n        isDefaultContent: function (content) {\n          return isDefaultContent(pasteBinDefaultContent, content);\n        }\n      };\n    };\n\n    var Clipboard = function (editor, pasteFormat) {\n      var pasteBin = PasteBin(editor);\n      editor.on('preInit', function () {\n        return registerEventsAndFilters(editor, pasteBin, pasteFormat);\n      });\n      return {\n        pasteFormat: pasteFormat,\n        pasteHtml: function (html, internalFlag) {\n          return pasteHtml$1(editor, html, internalFlag);\n        },\n        pasteText: function (text) {\n          return pasteText(editor, text);\n        },\n        pasteImageData: function (e, rng) {\n          return pasteImageData(editor, e, rng);\n        },\n        getDataTransferItems: getDataTransferItems,\n        hasHtmlOrText: hasHtmlOrText,\n        hasContentType: hasContentType\n      };\n    };\n\n    var noop$1 = function () {\n    };\n    var hasWorkingClipboardApi = function (clipboardData) {\n      return global$1.iOS === false && clipboardData !== undefined && typeof clipboardData.setData === 'function' && Utils.isMsEdge() !== true;\n    };\n    var setHtml5Clipboard = function (clipboardData, html, text) {\n      if (hasWorkingClipboardApi(clipboardData)) {\n        try {\n          clipboardData.clearData();\n          clipboardData.setData('text/html', html);\n          clipboardData.setData('text/plain', text);\n          clipboardData.setData(InternalHtml.internalHtmlMime(), html);\n          return true;\n        } catch (e) {\n          return false;\n        }\n      } else {\n        return false;\n      }\n    };\n    var setClipboardData = function (evt, data, fallback, done) {\n      if (setHtml5Clipboard(evt.clipboardData, data.html, data.text)) {\n        evt.preventDefault();\n        done();\n      } else {\n        fallback(data.html, done);\n      }\n    };\n    var fallback = function (editor) {\n      return function (html, done) {\n        var markedHtml = InternalHtml.mark(html);\n        var outer = editor.dom.create('div', {\n          'contenteditable': 'false',\n          'data-mce-bogus': 'all'\n        });\n        var inner = editor.dom.create('div', { contenteditable: 'true' }, markedHtml);\n        editor.dom.setStyles(outer, {\n          position: 'fixed',\n          top: '0',\n          left: '-3000px',\n          width: '1000px',\n          overflow: 'hidden'\n        });\n        outer.appendChild(inner);\n        editor.dom.add(editor.getBody(), outer);\n        var range = editor.selection.getRng();\n        inner.focus();\n        var offscreenRange = editor.dom.createRng();\n        offscreenRange.selectNodeContents(inner);\n        editor.selection.setRng(offscreenRange);\n        setTimeout(function () {\n          editor.selection.setRng(range);\n          outer.parentNode.removeChild(outer);\n          done();\n        }, 0);\n      };\n    };\n    var getData = function (editor) {\n      return {\n        html: editor.selection.getContent({ contextual: true }),\n        text: editor.selection.getContent({ format: 'text' })\n      };\n    };\n    var isTableSelection = function (editor) {\n      return !!editor.dom.getParent(editor.selection.getStart(), 'td[data-mce-selected],th[data-mce-selected]', editor.getBody());\n    };\n    var hasSelectedContent = function (editor) {\n      return !editor.selection.isCollapsed() || isTableSelection(editor);\n    };\n    var cut = function (editor) {\n      return function (evt) {\n        if (hasSelectedContent(editor)) {\n          setClipboardData(evt, getData(editor), fallback(editor), function () {\n            setTimeout(function () {\n              editor.execCommand('Delete');\n            }, 0);\n          });\n        }\n      };\n    };\n    var copy = function (editor) {\n      return function (evt) {\n        if (hasSelectedContent(editor)) {\n          setClipboardData(evt, getData(editor), fallback(editor), noop$1);\n        }\n      };\n    };\n    var register$1 = function (editor) {\n      editor.on('cut', cut(editor));\n      editor.on('copy', copy(editor));\n    };\n    var CutCopy = { register: register$1 };\n\n    var global$a = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');\n\n    var getCaretRangeFromEvent = function (editor, e) {\n      return global$a.getCaretRangeFromPoint(e.clientX, e.clientY, editor.getDoc());\n    };\n    var isPlainTextFileUrl = function (content) {\n      var plainTextContent = content['text/plain'];\n      return plainTextContent ? plainTextContent.indexOf('file://') === 0 : false;\n    };\n    var setFocusedRange = function (editor, rng) {\n      editor.focus();\n      editor.selection.setRng(rng);\n    };\n    var setup = function (editor, clipboard, draggingInternallyState) {\n      if (Settings.shouldBlockDrop(editor)) {\n        editor.on('dragend dragover draggesture dragdrop drop drag', function (e) {\n          e.preventDefault();\n          e.stopPropagation();\n        });\n      }\n      if (!Settings.shouldPasteDataImages(editor)) {\n        editor.on('drop', function (e) {\n          var dataTransfer = e.dataTransfer;\n          if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) {\n            e.preventDefault();\n          }\n        });\n      }\n      editor.on('drop', function (e) {\n        var dropContent, rng;\n        rng = getCaretRangeFromEvent(editor, e);\n        if (e.isDefaultPrevented() || draggingInternallyState.get()) {\n          return;\n        }\n        dropContent = clipboard.getDataTransferItems(e.dataTransfer);\n        var internal = clipboard.hasContentType(dropContent, InternalHtml.internalHtmlMime());\n        if ((!clipboard.hasHtmlOrText(dropContent) || isPlainTextFileUrl(dropContent)) && clipboard.pasteImageData(e, rng)) {\n          return;\n        }\n        if (rng && Settings.shouldFilterDrop(editor)) {\n          var content_1 = dropContent['mce-internal'] || dropContent['text/html'] || dropContent['text/plain'];\n          if (content_1) {\n            e.preventDefault();\n            global$2.setEditorTimeout(editor, function () {\n              editor.undoManager.transact(function () {\n                if (dropContent['mce-internal']) {\n                  editor.execCommand('Delete');\n                }\n                setFocusedRange(editor, rng);\n                content_1 = Utils.trimHtml(content_1);\n                if (!dropContent['text/html']) {\n                  clipboard.pasteText(content_1);\n                } else {\n                  clipboard.pasteHtml(content_1, internal);\n                }\n              });\n            });\n          }\n        }\n      });\n      editor.on('dragstart', function (e) {\n        draggingInternallyState.set(true);\n      });\n      editor.on('dragover dragend', function (e) {\n        if (Settings.shouldPasteDataImages(editor) && draggingInternallyState.get() === false) {\n          e.preventDefault();\n          setFocusedRange(editor, getCaretRangeFromEvent(editor, e));\n        }\n        if (e.type === 'dragend') {\n          draggingInternallyState.set(false);\n        }\n      });\n    };\n    var DragDrop = { setup: setup };\n\n    var setup$1 = function (editor) {\n      var plugin = editor.plugins.paste;\n      var preProcess = Settings.getPreProcess(editor);\n      if (preProcess) {\n        editor.on('PastePreProcess', function (e) {\n          preProcess.call(plugin, plugin, e);\n        });\n      }\n      var postProcess = Settings.getPostProcess(editor);\n      if (postProcess) {\n        editor.on('PastePostProcess', function (e) {\n          postProcess.call(plugin, plugin, e);\n        });\n      }\n    };\n    var PrePostProcess = { setup: setup$1 };\n\n    function addPreProcessFilter(editor, filterFunc) {\n      editor.on('PastePreProcess', function (e) {\n        e.content = filterFunc(editor, e.content, e.internal, e.wordContent);\n      });\n    }\n    function addPostProcessFilter(editor, filterFunc) {\n      editor.on('PastePostProcess', function (e) {\n        filterFunc(editor, e.node);\n      });\n    }\n    function removeExplorerBrElementsAfterBlocks(editor, html) {\n      if (!WordFilter.isWordContent(html)) {\n        return html;\n      }\n      var blockElements = [];\n      global$3.each(editor.schema.getBlockElements(), function (block, blockName) {\n        blockElements.push(blockName);\n      });\n      var explorerBlocksRegExp = new RegExp('(?:<br>&nbsp;[\\\\s\\\\r\\\\n]+|<br>)*(<\\\\/?(' + blockElements.join('|') + ')[^>]*>)(?:<br>&nbsp;[\\\\s\\\\r\\\\n]+|<br>)*', 'g');\n      html = Utils.filter(html, [[\n          explorerBlocksRegExp,\n          '$1'\n        ]]);\n      html = Utils.filter(html, [\n        [\n          /<br><br>/g,\n          '<BR><BR>'\n        ],\n        [\n          /<br>/g,\n          ' '\n        ],\n        [\n          /<BR><BR>/g,\n          '<br>'\n        ]\n      ]);\n      return html;\n    }\n    function removeWebKitStyles(editor, content, internal, isWordHtml) {\n      if (isWordHtml || internal) {\n        return content;\n      }\n      var webKitStylesSetting = Settings.getWebkitStyles(editor);\n      var webKitStyles;\n      if (Settings.shouldRemoveWebKitStyles(editor) === false || webKitStylesSetting === 'all') {\n        return content;\n      }\n      if (webKitStylesSetting) {\n        webKitStyles = webKitStylesSetting.split(/[, ]/);\n      }\n      if (webKitStyles) {\n        var dom_1 = editor.dom, node_1 = editor.selection.getNode();\n        content = content.replace(/(<[^>]+) style=\"([^\"]*)\"([^>]*>)/gi, function (all, before, value, after) {\n          var inputStyles = dom_1.parseStyle(dom_1.decode(value));\n          var outputStyles = {};\n          if (webKitStyles === 'none') {\n            return before + after;\n          }\n          for (var i = 0; i < webKitStyles.length; i++) {\n            var inputValue = inputStyles[webKitStyles[i]], currentValue = dom_1.getStyle(node_1, webKitStyles[i], true);\n            if (/color/.test(webKitStyles[i])) {\n              inputValue = dom_1.toHex(inputValue);\n              currentValue = dom_1.toHex(currentValue);\n            }\n            if (currentValue !== inputValue) {\n              outputStyles[webKitStyles[i]] = inputValue;\n            }\n          }\n          outputStyles = dom_1.serializeStyle(outputStyles, 'span');\n          if (outputStyles) {\n            return before + ' style=\"' + outputStyles + '\"' + after;\n          }\n          return before + after;\n        });\n      } else {\n        content = content.replace(/(<[^>]+) style=\"([^\"]*)\"([^>]*>)/gi, '$1$3');\n      }\n      content = content.replace(/(<[^>]+) data-mce-style=\"([^\"]+)\"([^>]*>)/gi, function (all, before, value, after) {\n        return before + ' style=\"' + value + '\"' + after;\n      });\n      return content;\n    }\n    function removeUnderlineAndFontInAnchor(editor, root) {\n      editor.$('a', root).find('font,u').each(function (i, node) {\n        editor.dom.remove(node, true);\n      });\n    }\n    var setup$2 = function (editor) {\n      if (global$1.webkit) {\n        addPreProcessFilter(editor, removeWebKitStyles);\n      }\n      if (global$1.ie) {\n        addPreProcessFilter(editor, removeExplorerBrElementsAfterBlocks);\n        addPostProcessFilter(editor, removeUnderlineAndFontInAnchor);\n      }\n    };\n    var Quirks = { setup: setup$2 };\n\n    var stateChange = function (editor, clipboard, e) {\n      var ctrl = e.control;\n      ctrl.active(clipboard.pasteFormat.get() === 'text');\n      editor.on('PastePlainTextToggle', function (e) {\n        ctrl.active(e.state);\n      });\n    };\n    var register$2 = function (editor, clipboard) {\n      var postRender = curry(stateChange, editor, clipboard);\n      editor.addButton('pastetext', {\n        active: false,\n        icon: 'pastetext',\n        tooltip: 'Paste as text',\n        cmd: 'mceTogglePlainTextPaste',\n        onPostRender: postRender\n      });\n      editor.addMenuItem('pastetext', {\n        text: 'Paste as text',\n        selectable: true,\n        active: clipboard.pasteFormat,\n        cmd: 'mceTogglePlainTextPaste',\n        onPostRender: postRender\n      });\n    };\n    var Buttons = { register: register$2 };\n\n    global.add('paste', function (editor) {\n      if (DetectProPlugin.hasProPlugin(editor) === false) {\n        var userIsInformedState = Cell(false);\n        var draggingInternallyState = Cell(false);\n        var pasteFormat = Cell(Settings.isPasteAsTextEnabled(editor) ? 'text' : 'html');\n        var clipboard = Clipboard(editor, pasteFormat);\n        var quirks = Quirks.setup(editor);\n        Buttons.register(editor, clipboard);\n        Commands.register(editor, clipboard, userIsInformedState);\n        PrePostProcess.setup(editor);\n        CutCopy.register(editor);\n        DragDrop.setup(editor, clipboard, draggingInternallyState);\n        return Api.get(clipboard, quirks);\n      }\n    });\n    function Plugin () {\n    }\n\n    return Plugin;\n\n}());\n})();\n\n}.call(window));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tinymce/plugins/paste/plugin.js\n// module id = T8kY+RjKaz\n// module chunks = 2 3 28 35 44 54 73 85 102","/*\n * Copyright (C) 2011 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/*\n * jQuery UI Input Menu Extension\n *\n * Copyright 2010, Kris Borchers\n * Dual licensed under the MIT or GPL Version 2 licenses.\n *\n * http://github.com/kborchers/jquery-ui-extensions\n */\nimport $ from 'jquery'\nimport 'jqueryui/menu'\n\nvar proto = $.ui.menu.prototype,\n\toriginalRefresh = proto.refresh;\n\n$.extend( proto, {\n\trefresh: function() {\n\t\toriginalRefresh.call( this );\n\t\tvar that = this;\n\t\tvar items = this.element.find( \"li.ui-menu-item\" );\n\t\tvar inputGroupLabeled = false;\n\n\t\tthis.element.bind( \"click.menu\", function( event ) {\n\t\t\tif( !new RegExp(/^a$/i).test(event.target.tagName) ) event.preventDefault();\n\t\t});\n\n\t\tvar inputIDCount = 0;\n\t\tthis.element.find( \"input[type='checkbox'], input[type='radio']\" ).each( function() {\n\t\t\tvar labelElement = $( this ).closest( \"label\" );\n\t\t\tif( labelElement.length ) {\n\t\t\t\t$( this ).insertBefore( labelElement );\n\n\t\t\t\tif( !$( this ).attr( \"id\" ) ) {\n\t\t\t\t\t$( this ).attr( \"id\", \"ui-input-\" + inputIDCount++ );\n\t\t\t\t}\n\n\t\t\t\tlabelElement.attr( \"for\", $( this ).attr( \"id\" ) );\n\t\t\t}\n\t\t});\n\t\tthis.element.bind( \"menufocus\", function( event ) {\n\t\t\tvar textInput = $( event.target ).find( \"a.ui-state-focus\" ).children( \"input[type='text']\" );\n\t\t\tif ( textInput.length )\n\t\t\t\ttextInput[0].focus();\n\t\t});\n\t\t// INSTRUCTURE\n\t\tthis.element.bind( \"popupopen\", function( event ) {\n\t\t\tvar selected = $( event.target ).find( \"input[type=radio][checked]\" ).closest('.ui-menu-item');\n\t\t\tif (selected.length) {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tthat.focus( event, selected );\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t})\n\t\t.bind( \"menublur\", function( event ) {\n\t\t\tvar textInput = $( event.target ).find( \"input[type='text']:focus\" );\n\t\t\tif ( textInput.length )\n\t\t\t\ttextInput[0].blur();\n\t\t});\n\n\t\titems.children( \"a\" ).each( function( index, item ) {\n\t\t\tvar current = $( item ), parent = current.parent();\n\n\t\t\tif( current.children().is( \"input[type='checkbox'], input[type='radio']\" ) ) {\n\t\t\t\tcurrent.closest( \"ul\" ).addClass( \"ui-menu-icons\" );\n\n\t\t\t\tif( current.children( \"input[type='checkbox']\" ).is( \":checked\" ) ) {\n\t\t\t\t\tcurrent.prepend( '<span class=\"ui-icon ui-icon-check\"></span>' );\n\t\t\t\t\tparent.attr({\n\t\t\t\t\t\trole: \"menuitemcheckbox\",\n\t\t\t\t\t\t\"aria-checked\": \"true\"\n\t\t\t\t\t});\n\t\t\t\t} else if( current.children( \"input[type='radio']\" ).is( \":checked\" ) ) {\n\t\t\t\t\tcurrent.prepend( '<span class=\"ui-icon ui-icon-radio-on\"></span>' );\n\t\t\t\t\tparent.attr({\n\t\t\t\t\t\trole: \"menuitemradio\",\n\t\t\t\t\t\t\"aria-checked\": \"true\"\n\t\t\t\t\t});\n\t\t\t\t} else if( current.children( \"input[type='radio']\" ).length ) {\n\t\t\t\t\tcurrent.prepend( '<span class=\"ui-icon ui-icon-radio-off\"></span>' );\n\t\t\t\t\tparent.attr({\n\t\t\t\t\t\trole: \"menuitemradio\",\n\t\t\t\t\t\t\"aria-checked\": \"false\"\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tparent.attr({\n\t\t\t\t\t\trole: \"menuitemcheckbox\",\n\t\t\t\t\t\t\"aria-checked\": \"false\"\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif( current.children().is( \"input[type='radio']\" ) ) {\n\t\t\t\t\tparent.attr( \"radio-group\", current.children( \"input[type='radio']\" ).attr( \"name\" ) );\n\t\t\t\t}\n\n\t\t\t\tif( parent.prev().length && !parent.prev().children( \"a\" ).length ) {\n\t\t\t\t\tparent.prev()\n\t\t\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t\t\t.html( \"<span class='ui-menu-input-group'>\" + parent.prev().html() + \"</span>\" )\n\t\t\t\t\t\t.bind( \"click.menu\", function( event ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}).after( \"<li><hr /></li>\" );\n\t\t\t\t\tinputGroupLabeled = true;\n\t\t\t\t}\n\t\t\t\telse if( parent.prev().length && !parent.prev().children( \"a\" ).children().is( \"input[type='checkbox'], input[type='radio']\" ) ) {\n\t\t\t\t\tparent.before( \"<li><hr /></li>\" );\n\t\t\t\t}\n\n\t\t\t\tif( inputGroupLabeled && parent.next().length && !parent.next().children( \"a\" ).children().is( \"input[type='checkbox'], input[type='radio']\" ) ) {\n\t\t\t\t\tparent.after( \"<li><hr /></li>\" );\n\t\t\t\t\tinputGroupLabeled = false;\n\t\t\t\t}\n\t\t\t\telse if( parent.next().length && !parent.next().children( \"a\" ).children().is( \"input[type='checkbox'], input[type='radio']\" ) ) {\n\t\t\t\t\tparent.after( \"<li><hr /></li>\" );\n\t\t\t\t}\n\n\t\t\t\tcurrent.children( \"input[type='checkbox'], input[type='radio']\" ).hide();\n\t\t\t}\n\t\t});\n\n\t\titems.bind( \"keydown.menu\", function( event ) {\n\t\t\tif( event.keyCode === $.ui.keyCode.SPACE ) {\n\t\t\t\tif ( that.active.children( \"a\" ).children().is( \"input[type='checkbox'], input[type='radio']\" ) ) {\n\t\t\t\t\tthat.select( event );\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t}\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t});\n\n\t\titems.find( \"input[type='text']\" ).bind( \"keydown\", function( event ) {\n\t\t\tevent.stopPropagation();\n\t\t\tif( event.keyCode === $.ui.keyCode.UP ) {\n\t\t\t\tthat.element.trigger( \"focus\" );\n\t\t\t\tthis.blur();\n\t\t\t\tthat.focus( event, $( this ).closest( \".ui-menu-item\").prev() );\n\t\t\t}\n\t\t\tif( event.keyCode === $.ui.keyCode.DOWN ) {\n\t\t\t\tthat.element.trigger( \"focus\" );\n\t\t\t\tthis.blur();\n\t\t\t\tthat.focus( event, $( this ).closest( \".ui-menu-item\").next() );\n\t\t\t}\n\t\t})\n\t\t.bind( \"click\", function( event ) {\n\t\t\tevent.stopPropagation();\n\t\t});\n\t},\n\tselect: function( event ) {\n\t\t// Save active reference before collapseAll triggers blur\n\t\tvar ui = {\n\t\t\t// Selecting a menu item removes the active item causing multiple clicks to be missing an item\n\t\t\titem: this.active || $( event.target ).closest( \".ui-menu-item\" )\n\t\t};\n\n\t\tif( ui.item.children( \"a\" ).children().is( \"input[type='checkbox']\" ) ) {\n\t\t\tif( ui.item.attr( \"aria-checked\" ) === \"false\" ) {\n\t\t\t\tui.item.children( \"a\" ).prepend( '<span class=\"ui-icon ui-icon-check\"></span>' );\n\t\t\t\tui.item.attr( \"aria-checked\", \"true\" );\n\t\t\t\tui.item.children( \"a\" ).children( \"input[type='checkbox']\" ).prop( \"checked\", \"checked\" ).trigger('change');\n\t\t\t} else if( ui.item.attr( \"aria-checked\") === \"true\" ) {\n\t\t\t\tui.item.children( \"a\" ).children( \"span.ui-icon-check\" ).remove();\n\t\t\t\tui.item.attr( \"aria-checked\", \"false\" );\n\t\t\t\tui.item.children( \"a\" ).children( \"input[type='checkbox']\" ).removeAttr( \"checked\" ).trigger('change');\n\t\t\t}\n\t\t}\n\n\t\tif( ui.item.children( \"a\" ).children().is( \"input[type='radio']\" ) ) {\n\t\t\tif( ui.item.attr( \"aria-checked\" ) === \"false\" ) {\n\t\t\t\tui.item.children( \"a\" ).children( \"span.ui-icon-radio-off\" ).toggleClass( \"ui-icon-radio-on ui-icon-radio-off\" );\n\t\t\t\tui.item.attr( \"aria-checked\", \"true\" );\n\t\t\t\tui.item.children( \"a\" ).children( \"input[type='radio']\" ).prop( \"checked\", \"checked\" ).trigger('change');\n\t\t\t\tui.item.siblings( \"[radio-group=\" + $( ui.item ).attr( \"radio-group\" ) + \"]\" ).each( function() {\n\t\t\t\t\t$( this ).attr( \"aria-checked\", \"false\" );\n\t\t\t\t\t$( this ).children( \"a\" ).children( \"span.ui-icon-radio-on\" ).toggleClass( \"ui-icon-radio-on ui-icon-radio-off\" );\n\t\t\t\t\t$( this ).children( \"a\" ).children( \"input[type='radio']\" ).removeAttr( \"checked\" );\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif( !ui.item.children( \"a\" ).children().is( \"input[type='checkbox'], input[type='radio']\" ) ) this.collapseAll();\n\t\tthis._trigger( \"select\", event, ui );\n\t}\n});\n\n\n\n// WEBPACK FOOTER //\n// ./public/javascripts/jquery.ui.menu.inputmenu.js","/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n(function () {\nvar textcolor = (function () {\n    'use strict';\n\n    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    var getCurrentColor = function (editor, format) {\n      var color;\n      editor.dom.getParents(editor.selection.getStart(), function (elm) {\n        var value;\n        if (value = elm.style[format === 'forecolor' ? 'color' : 'background-color']) {\n          color = color ? color : value;\n        }\n      });\n      return color;\n    };\n    var mapColors = function (colorMap) {\n      var i;\n      var colors = [];\n      for (i = 0; i < colorMap.length; i += 2) {\n        colors.push({\n          text: colorMap[i + 1],\n          color: '#' + colorMap[i]\n        });\n      }\n      return colors;\n    };\n    var applyFormat = function (editor, format, value) {\n      editor.undoManager.transact(function () {\n        editor.focus();\n        editor.formatter.apply(format, { value: value });\n        editor.nodeChanged();\n      });\n    };\n    var removeFormat = function (editor, format) {\n      editor.undoManager.transact(function () {\n        editor.focus();\n        editor.formatter.remove(format, { value: null }, null, true);\n        editor.nodeChanged();\n      });\n    };\n    var TextColor = {\n      getCurrentColor: getCurrentColor,\n      mapColors: mapColors,\n      applyFormat: applyFormat,\n      removeFormat: removeFormat\n    };\n\n    var register = function (editor) {\n      editor.addCommand('mceApplyTextcolor', function (format, value) {\n        TextColor.applyFormat(editor, format, value);\n      });\n      editor.addCommand('mceRemoveTextcolor', function (format) {\n        TextColor.removeFormat(editor, format);\n      });\n    };\n    var Commands = { register: register };\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    var defaultColorMap = [\n      '000000',\n      'Black',\n      '993300',\n      'Burnt orange',\n      '333300',\n      'Dark olive',\n      '003300',\n      'Dark green',\n      '003366',\n      'Dark azure',\n      '000080',\n      'Navy Blue',\n      '333399',\n      'Indigo',\n      '333333',\n      'Very dark gray',\n      '800000',\n      'Maroon',\n      'FF6600',\n      'Orange',\n      '808000',\n      'Olive',\n      '008000',\n      'Green',\n      '008080',\n      'Teal',\n      '0000FF',\n      'Blue',\n      '666699',\n      'Grayish blue',\n      '808080',\n      'Gray',\n      'FF0000',\n      'Red',\n      'FF9900',\n      'Amber',\n      '99CC00',\n      'Yellow green',\n      '339966',\n      'Sea green',\n      '33CCCC',\n      'Turquoise',\n      '3366FF',\n      'Royal blue',\n      '800080',\n      'Purple',\n      '999999',\n      'Medium gray',\n      'FF00FF',\n      'Magenta',\n      'FFCC00',\n      'Gold',\n      'FFFF00',\n      'Yellow',\n      '00FF00',\n      'Lime',\n      '00FFFF',\n      'Aqua',\n      '00CCFF',\n      'Sky blue',\n      '993366',\n      'Red violet',\n      'FFFFFF',\n      'White',\n      'FF99CC',\n      'Pink',\n      'FFCC99',\n      'Peach',\n      'FFFF99',\n      'Light yellow',\n      'CCFFCC',\n      'Pale green',\n      'CCFFFF',\n      'Pale cyan',\n      '99CCFF',\n      'Light sky blue',\n      'CC99FF',\n      'Plum'\n    ];\n    var getTextColorMap = function (editor) {\n      return editor.getParam('textcolor_map', defaultColorMap);\n    };\n    var getForeColorMap = function (editor) {\n      return editor.getParam('forecolor_map', getTextColorMap(editor));\n    };\n    var getBackColorMap = function (editor) {\n      return editor.getParam('backcolor_map', getTextColorMap(editor));\n    };\n    var getTextColorRows = function (editor) {\n      return editor.getParam('textcolor_rows', 5);\n    };\n    var getTextColorCols = function (editor) {\n      return editor.getParam('textcolor_cols', 8);\n    };\n    var getForeColorRows = function (editor) {\n      return editor.getParam('forecolor_rows', getTextColorRows(editor));\n    };\n    var getBackColorRows = function (editor) {\n      return editor.getParam('backcolor_rows', getTextColorRows(editor));\n    };\n    var getForeColorCols = function (editor) {\n      return editor.getParam('forecolor_cols', getTextColorCols(editor));\n    };\n    var getBackColorCols = function (editor) {\n      return editor.getParam('backcolor_cols', getTextColorCols(editor));\n    };\n    var getColorPickerCallback = function (editor) {\n      return editor.getParam('color_picker_callback', null);\n    };\n    var hasColorPicker = function (editor) {\n      return typeof getColorPickerCallback(editor) === 'function';\n    };\n    var Settings = {\n      getForeColorMap: getForeColorMap,\n      getBackColorMap: getBackColorMap,\n      getForeColorRows: getForeColorRows,\n      getBackColorRows: getBackColorRows,\n      getForeColorCols: getForeColorCols,\n      getBackColorCols: getBackColorCols,\n      getColorPickerCallback: getColorPickerCallback,\n      hasColorPicker: hasColorPicker\n    };\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.util.I18n');\n\n    var getHtml = function (cols, rows, colorMap, hasColorPicker) {\n      var colors, color, html, last, x, y, i, count = 0;\n      var id = global$1.DOM.uniqueId('mcearia');\n      var getColorCellHtml = function (color, title) {\n        var isNoColor = color === 'transparent';\n        return '<td class=\"mce-grid-cell' + (isNoColor ? ' mce-colorbtn-trans' : '') + '\">' + '<div id=\"' + id + '-' + count++ + '\"' + ' data-mce-color=\"' + (color ? color : '') + '\"' + ' role=\"option\"' + ' tabIndex=\"-1\"' + ' style=\"' + (color ? 'background-color: ' + color : '') + '\"' + ' title=\"' + global$3.translate(title) + '\">' + (isNoColor ? '&#215;' : '') + '</div>' + '</td>';\n      };\n      colors = TextColor.mapColors(colorMap);\n      colors.push({\n        text: global$3.translate('No color'),\n        color: 'transparent'\n      });\n      html = '<table class=\"mce-grid mce-grid-border mce-colorbutton-grid\" role=\"list\" cellspacing=\"0\"><tbody>';\n      last = colors.length - 1;\n      for (y = 0; y < rows; y++) {\n        html += '<tr>';\n        for (x = 0; x < cols; x++) {\n          i = y * cols + x;\n          if (i > last) {\n            html += '<td></td>';\n          } else {\n            color = colors[i];\n            html += getColorCellHtml(color.color, color.text);\n          }\n        }\n        html += '</tr>';\n      }\n      if (hasColorPicker) {\n        html += '<tr>' + '<td colspan=\"' + cols + '\" class=\"mce-custom-color-btn\">' + '<div id=\"' + id + '-c\" class=\"mce-widget mce-btn mce-btn-small mce-btn-flat\" ' + 'role=\"button\" tabindex=\"-1\" aria-labelledby=\"' + id + '-c\" style=\"width: 100%\">' + '<button type=\"button\" role=\"presentation\" tabindex=\"-1\">' + global$3.translate('Custom...') + '</button>' + '</div>' + '</td>' + '</tr>';\n        html += '<tr>';\n        for (x = 0; x < cols; x++) {\n          html += getColorCellHtml('', 'Custom color');\n        }\n        html += '</tr>';\n      }\n      html += '</tbody></table>';\n      return html;\n    };\n    var ColorPickerHtml = { getHtml: getHtml };\n\n    var setDivColor = function setDivColor(div, value) {\n      div.style.background = value;\n      div.setAttribute('data-mce-color', value);\n    };\n    var onButtonClick = function (editor) {\n      return function (e) {\n        var ctrl = e.control;\n        if (ctrl._color) {\n          editor.execCommand('mceApplyTextcolor', ctrl.settings.format, ctrl._color);\n        } else {\n          editor.execCommand('mceRemoveTextcolor', ctrl.settings.format);\n        }\n      };\n    };\n    var onPanelClick = function (editor, cols) {\n      return function (e) {\n        var buttonCtrl = this.parent();\n        var value;\n        var currentColor = TextColor.getCurrentColor(editor, buttonCtrl.settings.format);\n        var selectColor = function (value) {\n          editor.execCommand('mceApplyTextcolor', buttonCtrl.settings.format, value);\n          buttonCtrl.hidePanel();\n          buttonCtrl.color(value);\n        };\n        var resetColor = function () {\n          editor.execCommand('mceRemoveTextcolor', buttonCtrl.settings.format);\n          buttonCtrl.hidePanel();\n          buttonCtrl.resetColor();\n        };\n        if (global$1.DOM.getParent(e.target, '.mce-custom-color-btn')) {\n          buttonCtrl.hidePanel();\n          var colorPickerCallback = Settings.getColorPickerCallback(editor);\n          colorPickerCallback.call(editor, function (value) {\n            var tableElm = buttonCtrl.panel.getEl().getElementsByTagName('table')[0];\n            var customColorCells, div, i;\n            customColorCells = global$2.map(tableElm.rows[tableElm.rows.length - 1].childNodes, function (elm) {\n              return elm.firstChild;\n            });\n            for (i = 0; i < customColorCells.length; i++) {\n              div = customColorCells[i];\n              if (!div.getAttribute('data-mce-color')) {\n                break;\n              }\n            }\n            if (i === cols) {\n              for (i = 0; i < cols - 1; i++) {\n                setDivColor(customColorCells[i], customColorCells[i + 1].getAttribute('data-mce-color'));\n              }\n            }\n            setDivColor(div, value);\n            selectColor(value);\n          }, currentColor);\n        }\n        value = e.target.getAttribute('data-mce-color');\n        if (value) {\n          if (this.lastId) {\n            global$1.DOM.get(this.lastId).setAttribute('aria-selected', 'false');\n          }\n          e.target.setAttribute('aria-selected', true);\n          this.lastId = e.target.id;\n          if (value === 'transparent') {\n            resetColor();\n          } else {\n            selectColor(value);\n          }\n        } else if (value !== null) {\n          buttonCtrl.hidePanel();\n        }\n      };\n    };\n    var renderColorPicker = function (editor, foreColor) {\n      return function () {\n        var cols = foreColor ? Settings.getForeColorCols(editor) : Settings.getBackColorCols(editor);\n        var rows = foreColor ? Settings.getForeColorRows(editor) : Settings.getBackColorRows(editor);\n        var colorMap = foreColor ? Settings.getForeColorMap(editor) : Settings.getBackColorMap(editor);\n        var hasColorPicker = Settings.hasColorPicker(editor);\n        return ColorPickerHtml.getHtml(cols, rows, colorMap, hasColorPicker);\n      };\n    };\n    var register$1 = function (editor) {\n      editor.addButton('forecolor', {\n        type: 'colorbutton',\n        tooltip: 'Text color',\n        format: 'forecolor',\n        panel: {\n          role: 'application',\n          ariaRemember: true,\n          html: renderColorPicker(editor, true),\n          onclick: onPanelClick(editor, Settings.getForeColorCols(editor))\n        },\n        onclick: onButtonClick(editor)\n      });\n      editor.addButton('backcolor', {\n        type: 'colorbutton',\n        tooltip: 'Background color',\n        format: 'hilitecolor',\n        panel: {\n          role: 'application',\n          ariaRemember: true,\n          html: renderColorPicker(editor, false),\n          onclick: onPanelClick(editor, Settings.getBackColorCols(editor))\n        },\n        onclick: onButtonClick(editor)\n      });\n    };\n    var Buttons = { register: register$1 };\n\n    global.add('textcolor', function (editor) {\n      Commands.register(editor);\n      Buttons.register(editor);\n    });\n    function Plugin () {\n    }\n\n    return Plugin;\n\n}());\n})();\n\n}.call(window));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tinymce/plugins/textcolor/plugin.js\n// module id = V9zCORm9sf\n// module chunks = 2 3 28 35 44 54 73 85 102","/*\n * Copyright (C) 2011 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n// true modules that we use in this file\nimport $ from 'jquery'\nimport _ from 'underscore'\nimport Backbone from 'Backbone'\nimport updateSubnavMenuToggle from '../subnav_menu/updateSubnavMenuToggle'\nimport splitAssetString from 'compiled/str/splitAssetString'\nimport {isMathMLOnPage, loadMathJax} from 'mathml'\n\n// modules that do their own thing on every page that simply need to be required\nimport 'translations/_core_en'\nimport 'jquery.ajaxJSON'\nimport 'jquery.google-analytics'\nimport 'reminders'\nimport 'jquery.instructure_forms'\nimport 'instructure'\nimport 'ajax_errors'\nimport 'page_views'\nimport 'compiled/behaviors/authenticity_token'\nimport 'compiled/behaviors/ujsLinks'\nimport 'compiled/behaviors/admin-links'\nimport 'compiled/behaviors/activate'\nimport 'compiled/behaviors/elementToggler'\nimport 'compiled/behaviors/tooltip'\nimport 'compiled/behaviors/ic-super-toggle'\nimport 'compiled/behaviors/instructure_inline_media_comment'\nimport 'compiled/behaviors/ping'\nimport 'compiled/behaviors/broken-images'\nimport 'LtiThumbnailLauncher'\nimport 'compiled/badge_counts'\n\n// Other stuff several bundles use.\n// If any of these really arn't used on most pages,\n// we should remove them from this list, since this\n// loads them on every page\nimport 'media_comments'\nimport 'jqueryui/effects/drop'\nimport 'jqueryui/progressbar'\nimport 'jqueryui/tabs'\nimport 'compiled/registration/incompleteRegistrationWarning'\nimport 'moment'\n\n$('html').removeClass('scripts-not-loaded')\n\n$('.help_dialog_trigger').click((event) => {\n  event.preventDefault()\n  require.ensure([], (require) => {\n    const helpDialog = require('compiled/helpDialog')\n    helpDialog.open()\n  }, 'helpDialogAsyncChunk')\n})\n\n$('#skip_navigation_link').on('click', function (event) {\n  // preventDefault so we dont change the hash\n  // this will make nested apps that use the hash happy\n  event.preventDefault()\n  $($(this).attr('href')).attr('tabindex', -1).focus()\n})\n\n// show and hide the courses vertical menu when the user clicks the hamburger button\n// This was in the courses bundle, but it sometimes needs to work in places that don't\n// load that bundle.\nconst WIDE_BREAKPOINT = 1200\n\nfunction resetMenuItemTabIndexes () {\n  // in testing this, it seems that $(document).width() returns 15px less than what it should.\n  const tabIndex = (\n    $('body').hasClass('course-menu-expanded') ||\n    $(document).width() >= WIDE_BREAKPOINT - 15\n  ) ? 0 : -1\n  $('#section-tabs li a').attr('tabIndex', tabIndex)\n}\n\n$(resetMenuItemTabIndexes)\n$(window).on('resize', _.debounce(resetMenuItemTabIndexes, 50))\n$('body').on('click', '#courseMenuToggle', () => {\n  $('body').toggleClass('course-menu-expanded')\n  updateSubnavMenuToggle()\n  $('#left-side').css({\n    display: $('body').hasClass('course-menu-expanded') ? 'block' : 'none'\n  })\n\n  resetMenuItemTabIndexes()\n})\n\n// Backbone routes\n$('body').on('click', '[data-pushstate]', function (event) {\n  event.preventDefault()\n  Backbone.history.navigate($(this).attr('href'), true)\n})\n\nif (\n  window.ENV.NEW_USER_TUTORIALS &&\n  window.ENV.NEW_USER_TUTORIALS.is_enabled &&\n  (window.ENV.context_asset_string && (splitAssetString(window.ENV.context_asset_string)[0] === 'courses'))\n) {\n  require.ensure([], (require) => {\n    const initializeNewUserTutorials = require('../new_user_tutorial/initializeNewUserTutorials')\n    initializeNewUserTutorials()\n  }, 'NewUserTutorialsAsyncChunk')\n}\n\n// edge < 15 does not support css vars\n// edge >= 15 claims to, but is currently broken\nconst edge = window.navigator.userAgent.indexOf(\"Edge\") > -1\nconst supportsCSSVars = !edge && window.CSS && window.CSS.supports && window.CSS.supports('(--foo: red)')\nif (!supportsCSSVars) {\n  require.ensure([], (require) => {\n    window.canvasCssVariablesPolyfill = require('../canvasCssVariablesPolyfill')\n  }, 'canvasCssVariablesPolyfill')\n}\n\n$(() => {\n  if (isMathMLOnPage()) loadMathJax('TeX-MML-AM_HTMLorMML')\n})\n\n\n\n// WEBPACK FOOTER //\n// ./app/jsx/bundles/common.js","/*!\n * jQuery UI Menu @VERSION\n * http://jqueryui.com\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Menu\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n *\tjquery.ui.position.js\n */\nimport $ from 'jquery'\nimport 'jqueryui/core'\nimport 'jqueryui/widget'\n\nfunction thisOrParentIsHidden() {\n  return [].some.call($(this).parents().andSelf(), function(el) {\n    return $.css(el, 'display') == 'none';\n  });\n}\n\nvar mouseHandled = false;\n\n$.widget( \"ui.menu\", {\n\tversion: \"@VERSION\",\n\tdefaultElement: \"<ul>\",\n\tdelay: 300,\n\toptions: {\n\t\ticons: {\n\t\t\tsubmenu: \"ui-icon-carat-1-e\"\n\t\t},\n\t\tmenus: \"ul\",\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"right top\"\n\t\t},\n\t\trole: \"menu\",\n\n\t\t// callbacks\n\t\tblur: null,\n\t\tfocus: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tthis.activeMenu = this.element;\n\t\tthis.element\n\t\t\t.uniqueId()\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-menu-icons\", !!this.element.find( \".ui-icon\" ).length )\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t// need to catch all clicks on disabled menu\n\t\t\t// not possible through _on\n\t\t\t.bind( \"click\" + this.eventNamespace, $.proxy(function( event ) {\n\t\t\t\tif ( this.options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}, this ));\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.element\n\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t}\n\n\t\tthis._on({\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\n\t\t\t// them (focus should always stay on UL during navigation).\n\t\t\t\"mousedown .ui-menu-item > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-state-disabled > a\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-menu-item:has(a)\": function( event ) {\n\t\t\t\tvar target = $( event.target );\n\t\t\t\tif ( !mouseHandled && target.closest( \".ui-menu-item\" ).not( \".ui-state-disabled\" ).length ) {\n\t\t\t\t\tmouseHandled = true;\n\n\t\t\t\t\tthis.select( event );\n\t\t\t\t\t// Open submenu on click\n\t\t\t\t\tif ( this.element.has( \".ui-menu\" ).length ) {\n\t\t\t\t\t\tthis.expand( event );\n\t\t\t\t\t} else if ( !this.element.is(\":focus\") ) {\n\t\t\t\t\t\t// Redirect focus to the menu\n\t\t\t\t\t\tthis.element.focus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"mouseenter .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.currentTarget );\n\t\t\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n\t\t\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n\t\t\t\ttarget.siblings().children( \".ui-state-active\" ).removeClass( \"ui-state-active\" );\n\t\t\t\tthis.focus( event, target );\n\t\t\t},\n\t\t\tmouseleave: \"collapseAll\",\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\n\t\t\tfocus: function( event ) {\n\t\t\t\t// If there's already an active item, keep it active\n\t\t\t\t// If not, activate the first item\n\t\t\t\tvar item = this.active || this.element.children( \".ui-menu-item\" ).not(thisOrParentIsHidden).eq( 0 );\n\n\t\t\t\tif ( item.length ) {\n                    this.focus(event, item);\n                }\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tif ( !$.contains( this.element[0], this.document[0].activeElement ) ) {\n\t\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tkeydown: \"_keydown\"\n\t\t});\n\n\t\tthis.refresh();\n\n\t\t// Clicks outside of a menu collapse any open menus\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu\" ).length ) {\n\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t}\n\n\t\t\t\t// Reset the mouseHandled flag\n\t\t\t\tmouseHandled = false;\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\t// Destroy (sub)menus\n\t\tthis.element\n\t\t\t.removeAttr( \"aria-activedescendant\" )\n\t\t\t.find( \".ui-menu\" ).andSelf()\n\t\t\t\t.removeClass( \"ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.show();\n\n\t\t// Destroy menu items\n\t\tthis.element.find( \".ui-menu-item\" )\n\t\t\t.removeClass( \"ui-menu-item\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.removeClass( \"ui-corner-all ui-state-hover\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"aria-haspopup\" )\n\t\t\t\t.children().each( function() {\n\t\t\t\t\tvar elem = $( this );\n\t\t\t\t\tif ( elem.data( \"ui-menu-submenu-carat\" ) ) {\n\t\t\t\t\t\telem.remove();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t// Destroy menu dividers\n\t\tthis.element.find( \".ui-menu-divider\" ).removeClass( \"ui-menu-divider ui-widget-content\" );\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar match, prev, character, skip, regex,\n\t\t\tpreventDefault = true;\n\n\t\tfunction escape( value ) {\n\t\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\tthis.previousPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\tthis.nextPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tthis._move( \"first\", \"first\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tthis._move( \"last\", \"last\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\t\tthis.previous( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tthis.next( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tif ( !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t}\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ENTER:\n\t\tcase $.ui.keyCode.SPACE:\n\t\t\tthis._activate( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tprev = this.previousFilter || \"\";\n\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\tskip = false;\n\n\t\t\tclearTimeout( this.filterTimer );\n\n\t\t\tif ( character === prev ) {\n\t\t\t\tskip = true;\n\t\t\t} else {\n\t\t\t\tcharacter = prev + character;\n\t\t\t}\n\n\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\treturn regex.test( $( this ).children(\"a\").not(thisOrParentIsHidden).text() );\n\t\t\t});\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\n\t\t\t\tmatch;\n\n\t\t\t// If no matches on the current filter, reset to the last character pressed\n\t\t\t// to move down the menu to the first item that starts with that character\n\t\t\tif ( !match.length ) {\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\t\tregex = new RegExp( \"^\" + escape( character ), \"i\" );\n\t\t\t\tmatch = this.activeMenu.children( \".ui-menu-item\" ).filter(function() {\n\t\t\t\t\treturn regex.test( $( this ).children(\"a\").not(thisOrParentIsHidden).text() );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( match.length ) {\n\t\t\t\tthis.focus( event, match );\n\t\t\t\tif ( match.length > 1 ) {\n\t\t\t\t\tthis.previousFilter = character;\n\t\t\t\t\tthis.filterTimer = this._delay(function() {\n\t\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t\t}, 1000 );\n\t\t\t\t} else {\n\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdelete this.previousFilter;\n\t\t\t}\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_activate: function( event ) {\n\t\tif ( !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\tif ( this.active.children( \"a[aria-haspopup='true']\" ).length ) {\n\t\t\t\tthis.expand( event );\n\t\t\t} else {\n\t\t\t\tthis.select( event );\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\t// Initialize nested menus\n\t\tvar menus,\n\t\t\ticon = this.options.icons.submenu,\n\t\t\tsubmenus = this.element.find( this.options.menus + \":not(.ui-menu)\" )\n\t\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t\t.hide()\n\t\t\t\t.attr({\n\t\t\t\t\trole: this.options.role,\n\t\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t\t});\n\n\t\t// Don't refresh list items that are already adapted\n\t\tmenus = submenus.add( this.element );\n\n\t\tmenus.children( \":not(.ui-menu-item):has(a)\" )\n\t\t\t.addClass( \"ui-menu-item\" )\n\t\t\t.attr( \"role\", \"presentation\" )\n\t\t\t.children( \"a\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.addClass( \"ui-corner-all\" )\n\t\t\t\t.attr({\n\t\t\t\t\ttabIndex: -1,\n\t\t\t\t\trole: this._itemRole()\n\t\t\t\t});\n\n\t\t// Initialize unlinked menu-items containing spaces and/or dashes only as dividers\n\t\tmenus.children( \":not(.ui-menu-item)\" ).each(function() {\n\t\t\tvar item = $( this );\n\t\t\t// hyphen, em dash, en dash\n\t\t\tif ( !/[^\\-—–\\s]/.test( item.text() ) ) {\n\t\t\t\titem.addClass( \"ui-widget-content ui-menu-divider\" );\n\t\t\t}\n\t\t});\n\n\t\t// Add aria-disabled attribute to any disabled menu item\n\t\tmenus.children( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\n\n\t\tsubmenus.each(function() {\n\t\t\tvar menu = $( this ),\n\t\t\t\titem = menu.prev( \"a\" ),\n\t\t\t\tsubmenuCarat = $( \"<span>\" )\n\t\t\t\t\t.addClass( \"ui-menu-icon ui-icon \" + icon )\n\t\t\t\t\t.data( \"ui-menu-submenu-carat\", true );\n\n\t\t\titem\n\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t\t.prepend( submenuCarat );\n\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\n\t\t});\n\t},\n\n\t_itemRole: function() {\n\t\treturn {\n\t\t\tmenu: \"menuitem\",\n\t\t\tlistbox: \"option\"\n\t\t}[ this.options.role ];\n\t},\n\n\tfocus: function( event, item ) {\n\t\tvar nested, focused;\n\t\tthis.blur( event, event && event.type === \"focus\" );\n\n\t\tthis._scrollIntoView( item );\n\n\t\tthis.active = item.first();\n\t\t// Instructure: prevent the focusing of invisible items.\n\t\tfocused = this.active.children( \"a:visible\" ).addClass( \"ui-state-focus\" );\n\t\t// Only update aria-activedescendant if there's a role\n\t\t// otherwise we assume focus is managed elsewhere\n\t\tif ( this.options.role ) {\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\n\t\t}\n\n\t\t// Highlight active parent menu item, if any\n\t\tthis.active\n\t\t\t.parent()\n\t\t\t.closest( \".ui-menu-item\" )\n\t\t\t.children( \"a:first\" )\n\t\t\t.addClass( \"ui-state-active\" );\n\n\t\tif ( event && event.type === \"keydown\" ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.timer = this._delay(function() {\n\t\t\t\tthis._close();\n\t\t\t}, this.delay );\n\t\t}\n\n\t\tnested = item.children( \".ui-menu\" );\n\t\tif ( nested.length && ( /^mouse/.test( event.type ) ) ) {\n\t\t\tthis._startOpening(nested);\n\t\t}\n\t\tthis.activeMenu = item.parent();\n\n\t\tthis._trigger( \"focus\", event, { item: item } );\n\t},\n\n\t_scrollIntoView: function( item ) {\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n\t\tif ( this._hasScroll() ) {\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[0], \"borderTopWidth\" ) ) || 0;\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[0], \"paddingTop\" ) ) || 0;\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n\t\t\tscroll = this.activeMenu.scrollTop();\n\t\t\telementHeight = this.activeMenu.height();\n\t\t\titemHeight = item.height();\n\n\t\t\tif ( offset < 0 ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n\t\t\t}\n\t\t}\n\t},\n\n\tblur: function( event, fromFocus ) {\n\t\tif ( !fromFocus ) {\n\t\t\tclearTimeout( this.timer );\n\t\t}\n\n\t\tif ( !this.active ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active.children( \"a\" ).removeClass( \"ui-state-focus\" );\n\t\tthis.active = null;\n\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\n\t},\n\n\t_startOpening: function( submenu ) {\n\t\tclearTimeout( this.timer );\n\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\n\t\t// shift in the submenu position when mousing over the carat icon\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._close();\n\t\t\tthis._open( submenu );\n\t\t}, this.delay );\n\t},\n\n\t_open: function( submenu ) {\n\t\tvar position = $.extend({\n\t\t\tof: this.active\n\t\t}, this.options.position );\n\n\t\tclearTimeout( this.timer );\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" );\n\n\t\tsubmenu\n\t\t\t.show()\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\t},\n\n\tcollapseAll: function( event, all ) {\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\t// If we were passed an event, look for the submenu that contains the event\n\t\t\tvar currentMenu = all ? this.element :\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\n\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all sub menus anyway\n\t\t\tif ( !currentMenu.length ) {\n\t\t\t\tcurrentMenu = this.element;\n\t\t\t}\n\n\t\t\tthis._close( currentMenu );\n\n\t\t\tthis.blur( event );\n\t\t\tthis.activeMenu = currentMenu;\n\t\t}, this.delay );\n\t},\n\n\t// With no arguments, closes the currently active menu - if nothing is active\n\t// it closes all menus.  If passed an argument, it will search for menus BELOW\n\t_close: function( startMenu ) {\n\t\tif ( !startMenu ) {\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n\t\t}\n\n\t\tstartMenu\n\t\t\t.find( \".ui-menu\" )\n\t\t\t\t.hide()\n\t\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t\t.attr( \"aria-expanded\", \"false\" )\n\t\t\t.end()\n\t\t\t.find( \"a.ui-state-active\" )\n\t\t\t\t.removeClass( \"ui-state-active\" );\n\t},\n\n\tcollapse: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._close();\n\t\t\tthis.focus( event, newItem );\n\t\t}\n\t},\n\n\texpand: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active\n\t\t\t\t.children( \".ui-menu \" )\n\t\t\t\t.children( \".ui-menu-item\" )\n\t\t\t\t.not(thisOrParentIsHidden)\n\t\t\t\t.first();\n\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._open( newItem.parent() );\n\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n\t\t\tthis._delay(function() {\n\t\t\t\tthis.focus( event, newItem );\n\t\t\t});\n\t\t}\n\t},\n\n\tnext: function( event ) {\n\t\tthis._move( \"next\", \"first\", event );\n\t},\n\n\tprevious: function( event ) {\n\t\tthis._move( \"prev\", \"last\", event );\n\t},\n\n\tisFirstItem: function() {\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).not(thisOrParentIsHidden).length;\n\t},\n\n\tisLastItem: function() {\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).not(thisOrParentIsHidden).length;\n\t},\n\n\t_move: function( direction, filter, event ) {\n\t\tvar next;\n\t\tif ( this.active ) {\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.not(thisOrParentIsHidden)\n\t\t\t\t\t.eq( -1 );\n\t\t\t} else {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.not(thisOrParentIsHidden)\n\t\t\t\t\t.eq( 0 );\n\t\t\t}\n\t\t}\n\t\tif ( !next || !next.length || !this.active ) {\n\t\t\tnext = this.activeMenu.children( \".ui-menu-item\" ).not(thisOrParentIsHidden)[ filter ]();\n\t\t}\n\n\t\tthis.focus( event, next );\n\t},\n\n\tnextPage: function( event ) {\n\t\tvar item, base, height;\n\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isLastItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).not(thisOrParentIsHidden).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base - height < 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" ).not(thisOrParentIsHidden)\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\n\t\t}\n\t},\n\n\tpreviousPage: function( event ) {\n\t\tvar item, base, height;\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isFirstItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).not(thisOrParentIsHidden).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base + height > 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.children( \".ui-menu-item\" ).not(thisOrParentIsHidden).first() );\n\t\t}\n\t},\n\n\t_hasScroll: function() {\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\n\t},\n\n\tselect: function( event ) {\n\t\t// Save active reference before collapseAll triggers blur\n\t\tvar ui = {\n\t\t\t// Selecting a menu item removes the active item causing multiple clicks to be missing an item\n\t\t\titem: this.active || $( event.target ).closest( \".ui-menu-item\" )\n\t\t};\n\t\tif ( !ui.item.has( \".ui-menu\" ).length ) {\n\t\t\tthis.collapseAll( event, true );\n\t\t}\n\t\tthis._trigger( \"select\", event, ui );\n\t}\n});\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./public/javascripts/vendor/jqueryui/menu.js","/*\n * Copyright (C) 2011 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport INST from './INST'\nimport I18n from 'i18n!ajax_errors'\nimport $ from 'jquery'\nimport htmlEscape from './str/htmlEscape'\nimport './jquery.ajaxJSON' // ajaxJSON, defaultAjaxError\nimport 'compiled/jquery.rails_flash_notifications' // flashError\nimport 'jqueryui/effects/drop'\n\n  INST.errorCount = 0;\n  window.onerror = function (msg, url, line, column, errorObj) {\n    INST.errorCount += 1;\n  };\n\n  // puts the little red box when something bad happens in ajax.\n  $(document).ready(function() {\n    $(\"#instructure_ajax_error_result\").defaultAjaxError(function(event, request, settings, error, debugOnly) {\n      if (error === 'abort') return;\n      var status = \"0\";\n      var text = I18n.t('no_text', \"No text\");\n      try {\n        status = request.status;\n        text = request.responseText;\n      } catch(e) {}\n      $.ajaxJSON(location.protocol + '//' + location.host + \"/simple_response.json?rnd=\" + Math.round(Math.random() * 9999999), 'GET', {}, function() {\n        if ($.ajaxJSON.isUnauthenticated(request)) {\n          var message = htmlEscape(I18n.t('errors.logged_out', \"You are not currently logged in, possibly due to a long period of inactivity.\"))\n          message += \"<br\\/><a href='/login' id='inactivity_login_link' target='_new'>\" + htmlEscape(I18n.t('links.login', 'Login')) + \"<\\/a>\";\n          $.flashError({ html: message }, 30000)\n          $('#inactivity_login_link').focus();\n        } else if (status != 409) {\n          ajaxErrorFlash(I18n.t('errors.unhandled', \"Oops! The last request didn't work out.\"), request);\n        }\n      }, function() {\n        ajaxErrorFlash(I18n.t('errors.connection_lost', \"Connection to %{host} was lost.  Please make sure you're connected to the Internet and try again.\", {host: location.host}), request);\n      }, {skipDefaultError: true});\n      var $obj = $(this);\n      var ajaxErrorFlash = function(message, xhr) {\n        var i = $obj[0];\n        if(!i) { return; }\n        var d = i.contentDocument ||\n                (i.contentWindow && i.contentWindow.document) ||\n                window.frames[$obj.attr('id')].document;\n        var $body = $(d).find(\"body\");\n        $body.html($(\"<h1 />\").text(I18n.t('error_heading', 'Ajax Error: %{status_code}', {status_code: status})));\n        $body.append(htmlEscape(text));\n        $(\"#instructure_ajax_error_box\").hide();\n        var pre = \"\";\n        message = htmlEscape(message);\n        if(debugOnly) {\n          message += \"<br\\/><span style='font-size: 0.7em;'>(Development Only)<\\/span>\";\n        }\n        if(debugOnly || INST.environment != \"production\") {\n          message += \"<br\\/><a href='#' class='last_error_details_link'>\" + htmlEscape(I18n.t('links.details', 'details...')) + \"<\\/a>\";\n        }\n        $.flashError({ html: message });\n      };\n      window.ajaxErrorFlash = ajaxErrorFlash;\n      var data = $.ajaxJSON.findRequest(request);\n      data = data || {};\n      if(data.data) {\n        data.params = \"\";\n        for(var name in data.data) {\n          data.params += \"&\" + name + \"=\" + data.data[name];\n        }\n      }\n      var username = \"\";\n      try {\n        username = $(\"#identity .user_name\").text();\n      } catch(e) { }\n      if(INST.ajaxErrorURL) {\n        var txt=  \"&Msg=\"        + escape(text) +\n                  \"&StatusCode=\" + escape(status) +\n                  \"&URL=\"        + escape(data.url || \"unknown\") +\n                  \"&Page=\"       + escape(location.href) +\n                  \"&Method=\"     + escape(data.submit_type || \"unknown\") +\n                  \"&UserName=\"   + escape(username) +\n                  \"&Platform=\"   + escape(navigator.platform) +\n                  \"&UserAgent=\"  + escape(navigator.userAgent) +\n                  \"&Params=\"     + escape(data.params || \"unknown\");\n        $(\"body\").append(\"<img style='position: absolute; left: -1000px; top: 0;' src='\" + htmlEscape(INST.ajaxErrorURL + txt.substring(0, 2000)) + \"' />\");\n      }\n    });\n    $(\".last_error_details_link\").live('click', function(event) {\n      event.preventDefault();\n      event.stopPropagation();\n      $(\"#instructure_ajax_error_box\").show();\n    });\n    $(\".close_instructure_ajax_error_box_link\").click(function(event) {\n      event.preventDefault();\n      $(\"#instructure_ajax_error_box\").hide();\n    });\n\n  });\n\n\n\n// WEBPACK FOOTER //\n// ./public/javascripts/ajax_errors.js","/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n(function () {\nvar lists = (function () {\n    'use strict';\n\n    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n    var global$4 = tinymce.util.Tools.resolve('tinymce.dom.BookmarkManager');\n\n    var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    var global$6 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n    var isTextNode = function (node) {\n      return node && node.nodeType === 3;\n    };\n    var isListNode = function (node) {\n      return node && /^(OL|UL|DL)$/.test(node.nodeName);\n    };\n    var isOlUlNode = function (node) {\n      return node && /^(OL|UL)$/.test(node.nodeName);\n    };\n    var isListItemNode = function (node) {\n      return node && /^(LI|DT|DD)$/.test(node.nodeName);\n    };\n    var isDlItemNode = function (node) {\n      return node && /^(DT|DD)$/.test(node.nodeName);\n    };\n    var isTableCellNode = function (node) {\n      return node && /^(TH|TD)$/.test(node.nodeName);\n    };\n    var isBr = function (node) {\n      return node && node.nodeName === 'BR';\n    };\n    var isFirstChild = function (node) {\n      return node.parentNode.firstChild === node;\n    };\n    var isLastChild = function (node) {\n      return node.parentNode.lastChild === node;\n    };\n    var isTextBlock = function (editor, node) {\n      return node && !!editor.schema.getTextBlockElements()[node.nodeName];\n    };\n    var isBlock = function (node, blockElements) {\n      return node && node.nodeName in blockElements;\n    };\n    var isBogusBr = function (dom, node) {\n      if (!isBr(node)) {\n        return false;\n      }\n      if (dom.isBlock(node.nextSibling) && !isBr(node.previousSibling)) {\n        return true;\n      }\n      return false;\n    };\n    var isEmpty = function (dom, elm, keepBookmarks) {\n      var empty = dom.isEmpty(elm);\n      if (keepBookmarks && dom.select('span[data-mce-type=bookmark]', elm).length > 0) {\n        return false;\n      }\n      return empty;\n    };\n    var isChildOfBody = function (dom, elm) {\n      return dom.isChildOf(elm, dom.getRoot());\n    };\n    var NodeType = {\n      isTextNode: isTextNode,\n      isListNode: isListNode,\n      isOlUlNode: isOlUlNode,\n      isDlItemNode: isDlItemNode,\n      isListItemNode: isListItemNode,\n      isTableCellNode: isTableCellNode,\n      isBr: isBr,\n      isFirstChild: isFirstChild,\n      isLastChild: isLastChild,\n      isTextBlock: isTextBlock,\n      isBlock: isBlock,\n      isBogusBr: isBogusBr,\n      isEmpty: isEmpty,\n      isChildOfBody: isChildOfBody\n    };\n\n    var getNormalizedPoint = function (container, offset) {\n      if (NodeType.isTextNode(container)) {\n        return {\n          container: container,\n          offset: offset\n        };\n      }\n      var node = global$1.getNode(container, offset);\n      if (NodeType.isTextNode(node)) {\n        return {\n          container: node,\n          offset: offset >= container.childNodes.length ? node.data.length : 0\n        };\n      } else if (node.previousSibling && NodeType.isTextNode(node.previousSibling)) {\n        return {\n          container: node.previousSibling,\n          offset: node.previousSibling.data.length\n        };\n      } else if (node.nextSibling && NodeType.isTextNode(node.nextSibling)) {\n        return {\n          container: node.nextSibling,\n          offset: 0\n        };\n      }\n      return {\n        container: container,\n        offset: offset\n      };\n    };\n    var normalizeRange = function (rng) {\n      var outRng = rng.cloneRange();\n      var rangeStart = getNormalizedPoint(rng.startContainer, rng.startOffset);\n      outRng.setStart(rangeStart.container, rangeStart.offset);\n      var rangeEnd = getNormalizedPoint(rng.endContainer, rng.endOffset);\n      outRng.setEnd(rangeEnd.container, rangeEnd.offset);\n      return outRng;\n    };\n    var Range = {\n      getNormalizedPoint: getNormalizedPoint,\n      normalizeRange: normalizeRange\n    };\n\n    var DOM = global$6.DOM;\n    var createBookmark = function (rng) {\n      var bookmark = {};\n      var setupEndPoint = function (start) {\n        var offsetNode, container, offset;\n        container = rng[start ? 'startContainer' : 'endContainer'];\n        offset = rng[start ? 'startOffset' : 'endOffset'];\n        if (container.nodeType === 1) {\n          offsetNode = DOM.create('span', { 'data-mce-type': 'bookmark' });\n          if (container.hasChildNodes()) {\n            offset = Math.min(offset, container.childNodes.length - 1);\n            if (start) {\n              container.insertBefore(offsetNode, container.childNodes[offset]);\n            } else {\n              DOM.insertAfter(offsetNode, container.childNodes[offset]);\n            }\n          } else {\n            container.appendChild(offsetNode);\n          }\n          container = offsetNode;\n          offset = 0;\n        }\n        bookmark[start ? 'startContainer' : 'endContainer'] = container;\n        bookmark[start ? 'startOffset' : 'endOffset'] = offset;\n      };\n      setupEndPoint(true);\n      if (!rng.collapsed) {\n        setupEndPoint();\n      }\n      return bookmark;\n    };\n    var resolveBookmark = function (bookmark) {\n      function restoreEndPoint(start) {\n        var container, offset, node;\n        var nodeIndex = function (container) {\n          var node = container.parentNode.firstChild, idx = 0;\n          while (node) {\n            if (node === container) {\n              return idx;\n            }\n            if (node.nodeType !== 1 || node.getAttribute('data-mce-type') !== 'bookmark') {\n              idx++;\n            }\n            node = node.nextSibling;\n          }\n          return -1;\n        };\n        container = node = bookmark[start ? 'startContainer' : 'endContainer'];\n        offset = bookmark[start ? 'startOffset' : 'endOffset'];\n        if (!container) {\n          return;\n        }\n        if (container.nodeType === 1) {\n          offset = nodeIndex(container);\n          container = container.parentNode;\n          DOM.remove(node);\n          if (!container.hasChildNodes() && DOM.isBlock(container)) {\n            container.appendChild(DOM.create('br'));\n          }\n        }\n        bookmark[start ? 'startContainer' : 'endContainer'] = container;\n        bookmark[start ? 'startOffset' : 'endOffset'] = offset;\n      }\n      restoreEndPoint(true);\n      restoreEndPoint();\n      var rng = DOM.createRng();\n      rng.setStart(bookmark.startContainer, bookmark.startOffset);\n      if (bookmark.endContainer) {\n        rng.setEnd(bookmark.endContainer, bookmark.endOffset);\n      }\n      return Range.normalizeRange(rng);\n    };\n    var Bookmark = {\n      createBookmark: createBookmark,\n      resolveBookmark: resolveBookmark\n    };\n\n    var constant = function (value) {\n      return function () {\n        return value;\n      };\n    };\n    function curry(fn) {\n      var initialArgs = [];\n      for (var _i = 1; _i < arguments.length; _i++) {\n        initialArgs[_i - 1] = arguments[_i];\n      }\n      return function () {\n        var restArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          restArgs[_i] = arguments[_i];\n        }\n        var all = initialArgs.concat(restArgs);\n        return fn.apply(null, all);\n      };\n    }\n    var not = function (f) {\n      return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          args[_i] = arguments[_i];\n        }\n        return !f.apply(null, args);\n      };\n    };\n    var never = constant(false);\n    var always = constant(true);\n\n    var never$1 = never;\n    var always$1 = always;\n    var none = function () {\n      return NONE;\n    };\n    var NONE = function () {\n      var eq = function (o) {\n        return o.isNone();\n      };\n      var call$$1 = function (thunk) {\n        return thunk();\n      };\n      var id = function (n) {\n        return n;\n      };\n      var noop$$1 = function () {\n      };\n      var nul = function () {\n        return null;\n      };\n      var undef = function () {\n        return undefined;\n      };\n      var me = {\n        fold: function (n, s) {\n          return n();\n        },\n        is: never$1,\n        isSome: never$1,\n        isNone: always$1,\n        getOr: id,\n        getOrThunk: call$$1,\n        getOrDie: function (msg) {\n          throw new Error(msg || 'error: getOrDie called on none.');\n        },\n        getOrNull: nul,\n        getOrUndefined: undef,\n        or: id,\n        orThunk: call$$1,\n        map: none,\n        ap: none,\n        each: noop$$1,\n        bind: none,\n        flatten: none,\n        exists: never$1,\n        forall: always$1,\n        filter: none,\n        equals: eq,\n        equals_: eq,\n        toArray: function () {\n          return [];\n        },\n        toString: constant('none()')\n      };\n      if (Object.freeze)\n        Object.freeze(me);\n      return me;\n    }();\n    var some = function (a) {\n      var constant_a = function () {\n        return a;\n      };\n      var self = function () {\n        return me;\n      };\n      var map = function (f) {\n        return some(f(a));\n      };\n      var bind = function (f) {\n        return f(a);\n      };\n      var me = {\n        fold: function (n, s) {\n          return s(a);\n        },\n        is: function (v) {\n          return a === v;\n        },\n        isSome: always$1,\n        isNone: never$1,\n        getOr: constant_a,\n        getOrThunk: constant_a,\n        getOrDie: constant_a,\n        getOrNull: constant_a,\n        getOrUndefined: constant_a,\n        or: self,\n        orThunk: self,\n        map: map,\n        ap: function (optfab) {\n          return optfab.fold(none, function (fab) {\n            return some(fab(a));\n          });\n        },\n        each: function (f) {\n          f(a);\n        },\n        bind: bind,\n        flatten: constant_a,\n        exists: bind,\n        forall: bind,\n        filter: function (f) {\n          return f(a) ? me : NONE;\n        },\n        equals: function (o) {\n          return o.is(a);\n        },\n        equals_: function (o, elementEq) {\n          return o.fold(never$1, function (b) {\n            return elementEq(a, b);\n          });\n        },\n        toArray: function () {\n          return [a];\n        },\n        toString: function () {\n          return 'some(' + a + ')';\n        }\n      };\n      return me;\n    };\n    var from = function (value) {\n      return value === null || value === undefined ? NONE : some(value);\n    };\n    var Option = {\n      some: some,\n      none: none,\n      from: from\n    };\n\n    var typeOf = function (x) {\n      if (x === null)\n        return 'null';\n      var t = typeof x;\n      if (t === 'object' && Array.prototype.isPrototypeOf(x))\n        return 'array';\n      if (t === 'object' && String.prototype.isPrototypeOf(x))\n        return 'string';\n      return t;\n    };\n    var isType = function (type) {\n      return function (value) {\n        return typeOf(value) === type;\n      };\n    };\n    var isString = isType('string');\n    var isBoolean = isType('boolean');\n    var isFunction = isType('function');\n    var isNumber = isType('number');\n\n    var map = function (xs, f) {\n      var len = xs.length;\n      var r = new Array(len);\n      for (var i = 0; i < len; i++) {\n        var x = xs[i];\n        r[i] = f(x, i, xs);\n      }\n      return r;\n    };\n    var each = function (xs, f) {\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        f(x, i, xs);\n      }\n    };\n    var filter = function (xs, pred) {\n      var r = [];\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        if (pred(x, i, xs)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n    var groupBy = function (xs, f) {\n      if (xs.length === 0) {\n        return [];\n      } else {\n        var wasType = f(xs[0]);\n        var r = [];\n        var group = [];\n        for (var i = 0, len = xs.length; i < len; i++) {\n          var x = xs[i];\n          var type = f(x);\n          if (type !== wasType) {\n            r.push(group);\n            group = [];\n          }\n          wasType = type;\n          group.push(x);\n        }\n        if (group.length !== 0) {\n          r.push(group);\n        }\n        return r;\n      }\n    };\n    var foldl = function (xs, f, acc) {\n      each(xs, function (x) {\n        acc = f(acc, x);\n      });\n      return acc;\n    };\n    var find = function (xs, pred) {\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        if (pred(x, i, xs)) {\n          return Option.some(x);\n        }\n      }\n      return Option.none();\n    };\n    var push = Array.prototype.push;\n    var flatten = function (xs) {\n      var r = [];\n      for (var i = 0, len = xs.length; i < len; ++i) {\n        if (!Array.prototype.isPrototypeOf(xs[i]))\n          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n        push.apply(r, xs[i]);\n      }\n      return r;\n    };\n    var bind = function (xs, f) {\n      var output = map(xs, f);\n      return flatten(output);\n    };\n    var slice = Array.prototype.slice;\n    var reverse = function (xs) {\n      var r = slice.call(xs, 0);\n      r.reverse();\n      return r;\n    };\n    var head = function (xs) {\n      return xs.length === 0 ? Option.none() : Option.some(xs[0]);\n    };\n    var last = function (xs) {\n      return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]);\n    };\n    var from$1 = isFunction(Array.from) ? Array.from : function (x) {\n      return slice.call(x);\n    };\n\n    var Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n    var path = function (parts, scope) {\n      var o = scope !== undefined && scope !== null ? scope : Global;\n      for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)\n        o = o[parts[i]];\n      return o;\n    };\n    var resolve = function (p, scope) {\n      var parts = p.split('.');\n      return path(parts, scope);\n    };\n\n    var unsafe = function (name, scope) {\n      return resolve(name, scope);\n    };\n    var getOrDie = function (name, scope) {\n      var actual = unsafe(name, scope);\n      if (actual === undefined || actual === null)\n        throw name + ' not available on this browser';\n      return actual;\n    };\n    var Global$1 = { getOrDie: getOrDie };\n\n    var htmlElement = function (scope) {\n      return Global$1.getOrDie('HTMLElement', scope);\n    };\n    var isPrototypeOf = function (x) {\n      var scope = resolve('ownerDocument.defaultView', x);\n      return htmlElement(scope).prototype.isPrototypeOf(x);\n    };\n    var HTMLElement = { isPrototypeOf: isPrototypeOf };\n\n    var global$7 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');\n\n    var getParentList = function (editor) {\n      var selectionStart = editor.selection.getStart(true);\n      return editor.dom.getParent(selectionStart, 'OL,UL,DL', getClosestListRootElm(editor, selectionStart));\n    };\n    var isParentListSelected = function (parentList, selectedBlocks) {\n      return parentList && selectedBlocks.length === 1 && selectedBlocks[0] === parentList;\n    };\n    var findSubLists = function (parentList) {\n      return global$5.grep(parentList.querySelectorAll('ol,ul,dl'), function (elm) {\n        return NodeType.isListNode(elm);\n      });\n    };\n    var getSelectedSubLists = function (editor) {\n      var parentList = getParentList(editor);\n      var selectedBlocks = editor.selection.getSelectedBlocks();\n      if (isParentListSelected(parentList, selectedBlocks)) {\n        return findSubLists(parentList);\n      } else {\n        return global$5.grep(selectedBlocks, function (elm) {\n          return NodeType.isListNode(elm) && parentList !== elm;\n        });\n      }\n    };\n    var findParentListItemsNodes = function (editor, elms) {\n      var listItemsElms = global$5.map(elms, function (elm) {\n        var parentLi = editor.dom.getParent(elm, 'li,dd,dt', getClosestListRootElm(editor, elm));\n        return parentLi ? parentLi : elm;\n      });\n      return global$7.unique(listItemsElms);\n    };\n    var getSelectedListItems = function (editor) {\n      var selectedBlocks = editor.selection.getSelectedBlocks();\n      return global$5.grep(findParentListItemsNodes(editor, selectedBlocks), function (block) {\n        return NodeType.isListItemNode(block);\n      });\n    };\n    var getSelectedDlItems = function (editor) {\n      return filter(getSelectedListItems(editor), NodeType.isDlItemNode);\n    };\n    var getClosestListRootElm = function (editor, elm) {\n      var parentTableCell = editor.dom.getParents(elm, 'TD,TH');\n      var root = parentTableCell.length > 0 ? parentTableCell[0] : editor.getBody();\n      return root;\n    };\n    var findLastParentListNode = function (editor, elm) {\n      var parentLists = editor.dom.getParents(elm, 'ol,ul', getClosestListRootElm(editor, elm));\n      return last(parentLists);\n    };\n    var getSelectedLists = function (editor) {\n      var firstList = findLastParentListNode(editor, editor.selection.getStart());\n      var subsequentLists = filter(editor.selection.getSelectedBlocks(), NodeType.isOlUlNode);\n      return firstList.toArray().concat(subsequentLists);\n    };\n    var getSelectedListRoots = function (editor) {\n      var selectedLists = getSelectedLists(editor);\n      return getUniqueListRoots(editor, selectedLists);\n    };\n    var getUniqueListRoots = function (editor, lists) {\n      var listRoots = map(lists, function (list) {\n        return findLastParentListNode(editor, list).getOr(list);\n      });\n      return global$7.unique(listRoots);\n    };\n    var isList = function (editor) {\n      var list = getParentList(editor);\n      return HTMLElement.isPrototypeOf(list);\n    };\n    var Selection = {\n      isList: isList,\n      getParentList: getParentList,\n      getSelectedSubLists: getSelectedSubLists,\n      getSelectedListItems: getSelectedListItems,\n      getClosestListRootElm: getClosestListRootElm,\n      getSelectedDlItems: getSelectedDlItems,\n      getSelectedListRoots: getSelectedListRoots\n    };\n\n    var node = function () {\n      var f = Global$1.getOrDie('Node');\n      return f;\n    };\n    var compareDocumentPosition = function (a, b, match) {\n      return (a.compareDocumentPosition(b) & match) !== 0;\n    };\n    var documentPositionPreceding = function (a, b) {\n      return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);\n    };\n    var documentPositionContainedBy = function (a, b) {\n      return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);\n    };\n    var Node$1 = {\n      documentPositionPreceding: documentPositionPreceding,\n      documentPositionContainedBy: documentPositionContainedBy\n    };\n\n    var cached = function (f) {\n      var called = false;\n      var r;\n      return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          args[_i] = arguments[_i];\n        }\n        if (!called) {\n          called = true;\n          r = f.apply(null, args);\n        }\n        return r;\n      };\n    };\n\n    var firstMatch = function (regexes, s) {\n      for (var i = 0; i < regexes.length; i++) {\n        var x = regexes[i];\n        if (x.test(s))\n          return x;\n      }\n      return undefined;\n    };\n    var find$1 = function (regexes, agent) {\n      var r = firstMatch(regexes, agent);\n      if (!r)\n        return {\n          major: 0,\n          minor: 0\n        };\n      var group = function (i) {\n        return Number(agent.replace(r, '$' + i));\n      };\n      return nu(group(1), group(2));\n    };\n    var detect = function (versionRegexes, agent) {\n      var cleanedAgent = String(agent).toLowerCase();\n      if (versionRegexes.length === 0)\n        return unknown();\n      return find$1(versionRegexes, cleanedAgent);\n    };\n    var unknown = function () {\n      return nu(0, 0);\n    };\n    var nu = function (major, minor) {\n      return {\n        major: major,\n        minor: minor\n      };\n    };\n    var Version = {\n      nu: nu,\n      detect: detect,\n      unknown: unknown\n    };\n\n    var edge = 'Edge';\n    var chrome = 'Chrome';\n    var ie = 'IE';\n    var opera = 'Opera';\n    var firefox = 'Firefox';\n    var safari = 'Safari';\n    var isBrowser = function (name, current) {\n      return function () {\n        return current === name;\n      };\n    };\n    var unknown$1 = function () {\n      return nu$1({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    var nu$1 = function (info) {\n      var current = info.current;\n      var version = info.version;\n      return {\n        current: current,\n        version: version,\n        isEdge: isBrowser(edge, current),\n        isChrome: isBrowser(chrome, current),\n        isIE: isBrowser(ie, current),\n        isOpera: isBrowser(opera, current),\n        isFirefox: isBrowser(firefox, current),\n        isSafari: isBrowser(safari, current)\n      };\n    };\n    var Browser = {\n      unknown: unknown$1,\n      nu: nu$1,\n      edge: constant(edge),\n      chrome: constant(chrome),\n      ie: constant(ie),\n      opera: constant(opera),\n      firefox: constant(firefox),\n      safari: constant(safari)\n    };\n\n    var windows = 'Windows';\n    var ios = 'iOS';\n    var android = 'Android';\n    var linux = 'Linux';\n    var osx = 'OSX';\n    var solaris = 'Solaris';\n    var freebsd = 'FreeBSD';\n    var isOS = function (name, current) {\n      return function () {\n        return current === name;\n      };\n    };\n    var unknown$2 = function () {\n      return nu$2({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    var nu$2 = function (info) {\n      var current = info.current;\n      var version = info.version;\n      return {\n        current: current,\n        version: version,\n        isWindows: isOS(windows, current),\n        isiOS: isOS(ios, current),\n        isAndroid: isOS(android, current),\n        isOSX: isOS(osx, current),\n        isLinux: isOS(linux, current),\n        isSolaris: isOS(solaris, current),\n        isFreeBSD: isOS(freebsd, current)\n      };\n    };\n    var OperatingSystem = {\n      unknown: unknown$2,\n      nu: nu$2,\n      windows: constant(windows),\n      ios: constant(ios),\n      android: constant(android),\n      linux: constant(linux),\n      osx: constant(osx),\n      solaris: constant(solaris),\n      freebsd: constant(freebsd)\n    };\n\n    var DeviceType = function (os, browser, userAgent) {\n      var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\n      var isiPhone = os.isiOS() && !isiPad;\n      var isAndroid3 = os.isAndroid() && os.version.major === 3;\n      var isAndroid4 = os.isAndroid() && os.version.major === 4;\n      var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;\n      var isTouch = os.isiOS() || os.isAndroid();\n      var isPhone = isTouch && !isTablet;\n      var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\n      return {\n        isiPad: constant(isiPad),\n        isiPhone: constant(isiPhone),\n        isTablet: constant(isTablet),\n        isPhone: constant(isPhone),\n        isTouch: constant(isTouch),\n        isAndroid: os.isAndroid,\n        isiOS: os.isiOS,\n        isWebView: constant(iOSwebview)\n      };\n    };\n\n    var detect$1 = function (candidates, userAgent) {\n      var agent = String(userAgent).toLowerCase();\n      return find(candidates, function (candidate) {\n        return candidate.search(agent);\n      });\n    };\n    var detectBrowser = function (browsers, userAgent) {\n      return detect$1(browsers, userAgent).map(function (browser) {\n        var version = Version.detect(browser.versionRegexes, userAgent);\n        return {\n          current: browser.name,\n          version: version\n        };\n      });\n    };\n    var detectOs = function (oses, userAgent) {\n      return detect$1(oses, userAgent).map(function (os) {\n        var version = Version.detect(os.versionRegexes, userAgent);\n        return {\n          current: os.name,\n          version: version\n        };\n      });\n    };\n    var UaString = {\n      detectBrowser: detectBrowser,\n      detectOs: detectOs\n    };\n\n    var contains$1 = function (str, substr) {\n      return str.indexOf(substr) !== -1;\n    };\n\n    var normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\n    var checkContains = function (target) {\n      return function (uastring) {\n        return contains$1(uastring, target);\n      };\n    };\n    var browsers = [\n      {\n        name: 'Edge',\n        versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n        search: function (uastring) {\n          var monstrosity = contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');\n          return monstrosity;\n        }\n      },\n      {\n        name: 'Chrome',\n        versionRegexes: [\n          /.*?chrome\\/([0-9]+)\\.([0-9]+).*/,\n          normalVersionRegex\n        ],\n        search: function (uastring) {\n          return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');\n        }\n      },\n      {\n        name: 'IE',\n        versionRegexes: [\n          /.*?msie\\ ?([0-9]+)\\.([0-9]+).*/,\n          /.*?rv:([0-9]+)\\.([0-9]+).*/\n        ],\n        search: function (uastring) {\n          return contains$1(uastring, 'msie') || contains$1(uastring, 'trident');\n        }\n      },\n      {\n        name: 'Opera',\n        versionRegexes: [\n          normalVersionRegex,\n          /.*?opera\\/([0-9]+)\\.([0-9]+).*/\n        ],\n        search: checkContains('opera')\n      },\n      {\n        name: 'Firefox',\n        versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\n        search: checkContains('firefox')\n      },\n      {\n        name: 'Safari',\n        versionRegexes: [\n          normalVersionRegex,\n          /.*?cpu os ([0-9]+)_([0-9]+).*/\n        ],\n        search: function (uastring) {\n          return (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');\n        }\n      }\n    ];\n    var oses = [\n      {\n        name: 'Windows',\n        search: checkContains('win'),\n        versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\n      },\n      {\n        name: 'iOS',\n        search: function (uastring) {\n          return contains$1(uastring, 'iphone') || contains$1(uastring, 'ipad');\n        },\n        versionRegexes: [\n          /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/,\n          /.*cpu os ([0-9]+)_([0-9]+).*/,\n          /.*cpu iphone os ([0-9]+)_([0-9]+).*/\n        ]\n      },\n      {\n        name: 'Android',\n        search: checkContains('android'),\n        versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\n      },\n      {\n        name: 'OSX',\n        search: checkContains('os x'),\n        versionRegexes: [/.*?os\\ x\\ ?([0-9]+)_([0-9]+).*/]\n      },\n      {\n        name: 'Linux',\n        search: checkContains('linux'),\n        versionRegexes: []\n      },\n      {\n        name: 'Solaris',\n        search: checkContains('sunos'),\n        versionRegexes: []\n      },\n      {\n        name: 'FreeBSD',\n        search: checkContains('freebsd'),\n        versionRegexes: []\n      }\n    ];\n    var PlatformInfo = {\n      browsers: constant(browsers),\n      oses: constant(oses)\n    };\n\n    var detect$2 = function (userAgent) {\n      var browsers = PlatformInfo.browsers();\n      var oses = PlatformInfo.oses();\n      var browser = UaString.detectBrowser(browsers, userAgent).fold(Browser.unknown, Browser.nu);\n      var os = UaString.detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);\n      var deviceType = DeviceType(os, browser, userAgent);\n      return {\n        browser: browser,\n        os: os,\n        deviceType: deviceType\n      };\n    };\n    var PlatformDetection = { detect: detect$2 };\n\n    var detect$3 = cached(function () {\n      var userAgent = navigator.userAgent;\n      return PlatformDetection.detect(userAgent);\n    });\n    var PlatformDetection$1 = { detect: detect$3 };\n\n    var fromHtml = function (html, scope) {\n      var doc = scope || document;\n      var div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        console.error('HTML does not have a single root node', html);\n        throw 'HTML must have a single root node';\n      }\n      return fromDom(div.childNodes[0]);\n    };\n    var fromTag = function (tag, scope) {\n      var doc = scope || document;\n      var node = doc.createElement(tag);\n      return fromDom(node);\n    };\n    var fromText = function (text, scope) {\n      var doc = scope || document;\n      var node = doc.createTextNode(text);\n      return fromDom(node);\n    };\n    var fromDom = function (node) {\n      if (node === null || node === undefined)\n        throw new Error('Node cannot be null or undefined');\n      return { dom: constant(node) };\n    };\n    var fromPoint = function (docElm, x, y) {\n      var doc = docElm.dom();\n      return Option.from(doc.elementFromPoint(x, y)).map(fromDom);\n    };\n    var Element$$1 = {\n      fromHtml: fromHtml,\n      fromTag: fromTag,\n      fromText: fromText,\n      fromDom: fromDom,\n      fromPoint: fromPoint\n    };\n\n    var ATTRIBUTE = Node.ATTRIBUTE_NODE;\n    var CDATA_SECTION = Node.CDATA_SECTION_NODE;\n    var COMMENT = Node.COMMENT_NODE;\n    var DOCUMENT = Node.DOCUMENT_NODE;\n    var DOCUMENT_TYPE = Node.DOCUMENT_TYPE_NODE;\n    var DOCUMENT_FRAGMENT = Node.DOCUMENT_FRAGMENT_NODE;\n    var ELEMENT = Node.ELEMENT_NODE;\n    var TEXT = Node.TEXT_NODE;\n    var PROCESSING_INSTRUCTION = Node.PROCESSING_INSTRUCTION_NODE;\n    var ENTITY_REFERENCE = Node.ENTITY_REFERENCE_NODE;\n    var ENTITY = Node.ENTITY_NODE;\n    var NOTATION = Node.NOTATION_NODE;\n\n    var ELEMENT$1 = ELEMENT;\n    var is = function (element, selector) {\n      var elem = element.dom();\n      if (elem.nodeType !== ELEMENT$1)\n        return false;\n      else if (elem.matches !== undefined)\n        return elem.matches(selector);\n      else if (elem.msMatchesSelector !== undefined)\n        return elem.msMatchesSelector(selector);\n      else if (elem.webkitMatchesSelector !== undefined)\n        return elem.webkitMatchesSelector(selector);\n      else if (elem.mozMatchesSelector !== undefined)\n        return elem.mozMatchesSelector(selector);\n      else\n        throw new Error('Browser lacks native selectors');\n    };\n\n    var eq = function (e1, e2) {\n      return e1.dom() === e2.dom();\n    };\n    var regularContains = function (e1, e2) {\n      var d1 = e1.dom(), d2 = e2.dom();\n      return d1 === d2 ? false : d1.contains(d2);\n    };\n    var ieContains = function (e1, e2) {\n      return Node$1.documentPositionContainedBy(e1.dom(), e2.dom());\n    };\n    var browser = PlatformDetection$1.detect().browser;\n    var contains$2 = browser.isIE() ? ieContains : regularContains;\n    var is$1 = is;\n\n    var keys = Object.keys;\n    var each$1 = function (obj, f) {\n      var props = keys(obj);\n      for (var k = 0, len = props.length; k < len; k++) {\n        var i = props[k];\n        var x = obj[i];\n        f(x, i, obj);\n      }\n    };\n\n    var name = function (element) {\n      var r = element.dom().nodeName;\n      return r.toLowerCase();\n    };\n\n    var rawSet = function (dom, key, value$$1) {\n      if (isString(value$$1) || isBoolean(value$$1) || isNumber(value$$1)) {\n        dom.setAttribute(key, value$$1 + '');\n      } else {\n        console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value$$1, ':: Element ', dom);\n        throw new Error('Attribute value was not simple');\n      }\n    };\n    var setAll = function (element, attrs) {\n      var dom = element.dom();\n      each$1(attrs, function (v, k) {\n        rawSet(dom, k, v);\n      });\n    };\n    var clone = function (element) {\n      return foldl(element.dom().attributes, function (acc, attr) {\n        acc[attr.name] = attr.value;\n        return acc;\n      }, {});\n    };\n\n    var Immutable = function () {\n      var fields = [];\n      for (var _i = 0; _i < arguments.length; _i++) {\n        fields[_i] = arguments[_i];\n      }\n      return function () {\n        var values = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          values[_i] = arguments[_i];\n        }\n        if (fields.length !== values.length) {\n          throw new Error('Wrong number of arguments to struct. Expected \"[' + fields.length + ']\", got ' + values.length + ' arguments');\n        }\n        var struct = {};\n        each(fields, function (name, i) {\n          struct[name] = constant(values[i]);\n        });\n        return struct;\n      };\n    };\n\n    var parent = function (element) {\n      var dom = element.dom();\n      return Option.from(dom.parentNode).map(Element$$1.fromDom);\n    };\n    var children = function (element) {\n      var dom = element.dom();\n      return map(dom.childNodes, Element$$1.fromDom);\n    };\n    var child = function (element, index) {\n      var children = element.dom().childNodes;\n      return Option.from(children[index]).map(Element$$1.fromDom);\n    };\n    var firstChild = function (element) {\n      return child(element, 0);\n    };\n    var lastChild = function (element) {\n      return child(element, element.dom().childNodes.length - 1);\n    };\n    var spot = Immutable('element', 'offset');\n\n    var before = function (marker, element) {\n      var parent$$1 = parent(marker);\n      parent$$1.each(function (v) {\n        v.dom().insertBefore(element.dom(), marker.dom());\n      });\n    };\n    var append = function (parent$$1, element) {\n      parent$$1.dom().appendChild(element.dom());\n    };\n\n    var before$1 = function (marker, elements) {\n      each(elements, function (x) {\n        before(marker, x);\n      });\n    };\n    var append$1 = function (parent, elements) {\n      each(elements, function (x) {\n        append(parent, x);\n      });\n    };\n\n    var remove$1 = function (element) {\n      var dom = element.dom();\n      if (dom.parentNode !== null)\n        dom.parentNode.removeChild(dom);\n    };\n\n    var clone$1 = function (original, deep) {\n      return Element$$1.fromDom(original.dom().cloneNode(deep));\n    };\n    var deep = function (original) {\n      return clone$1(original, true);\n    };\n    var shallowAs = function (original, tag) {\n      var nu = Element$$1.fromTag(tag);\n      var attributes = clone(original);\n      setAll(nu, attributes);\n      return nu;\n    };\n    var mutate = function (original, tag) {\n      var nu = shallowAs(original, tag);\n      before(original, nu);\n      var children$$1 = children(original);\n      append$1(nu, children$$1);\n      remove$1(original);\n      return nu;\n    };\n\n    var global$8 = tinymce.util.Tools.resolve('tinymce.Env');\n\n    var DOM$1 = global$6.DOM;\n    var createNewTextBlock = function (editor, contentNode, blockName) {\n      var node, textBlock;\n      var fragment = DOM$1.createFragment();\n      var hasContentNode;\n      var blockElements = editor.schema.getBlockElements();\n      if (editor.settings.forced_root_block) {\n        blockName = blockName || editor.settings.forced_root_block;\n      }\n      if (blockName) {\n        textBlock = DOM$1.create(blockName);\n        if (textBlock.tagName === editor.settings.forced_root_block) {\n          DOM$1.setAttribs(textBlock, editor.settings.forced_root_block_attrs);\n        }\n        if (!NodeType.isBlock(contentNode.firstChild, blockElements)) {\n          fragment.appendChild(textBlock);\n        }\n      }\n      if (contentNode) {\n        while (node = contentNode.firstChild) {\n          var nodeName = node.nodeName;\n          if (!hasContentNode && (nodeName !== 'SPAN' || node.getAttribute('data-mce-type') !== 'bookmark')) {\n            hasContentNode = true;\n          }\n          if (NodeType.isBlock(node, blockElements)) {\n            fragment.appendChild(node);\n            textBlock = null;\n          } else {\n            if (blockName) {\n              if (!textBlock) {\n                textBlock = DOM$1.create(blockName);\n                fragment.appendChild(textBlock);\n              }\n              textBlock.appendChild(node);\n            } else {\n              fragment.appendChild(node);\n            }\n          }\n        }\n      }\n      if (!editor.settings.forced_root_block) {\n        fragment.appendChild(DOM$1.create('br'));\n      } else {\n        if (!hasContentNode && (!global$8.ie || global$8.ie > 10)) {\n          textBlock.appendChild(DOM$1.create('br', { 'data-mce-bogus': '1' }));\n        }\n      }\n      return fragment;\n    };\n    var TextBlock = { createNewTextBlock: createNewTextBlock };\n\n    var DOM$2 = global$6.DOM;\n    var splitList = function (editor, ul, li, newBlock) {\n      var tmpRng, fragment, bookmarks, node;\n      var removeAndKeepBookmarks = function (targetNode) {\n        global$5.each(bookmarks, function (node) {\n          targetNode.parentNode.insertBefore(node, li.parentNode);\n        });\n        DOM$2.remove(targetNode);\n      };\n      bookmarks = DOM$2.select('span[data-mce-type=\"bookmark\"]', ul);\n      newBlock = newBlock || TextBlock.createNewTextBlock(editor, li);\n      tmpRng = DOM$2.createRng();\n      tmpRng.setStartAfter(li);\n      tmpRng.setEndAfter(ul);\n      fragment = tmpRng.extractContents();\n      for (node = fragment.firstChild; node; node = node.firstChild) {\n        if (node.nodeName === 'LI' && editor.dom.isEmpty(node)) {\n          DOM$2.remove(node);\n          break;\n        }\n      }\n      if (!editor.dom.isEmpty(fragment)) {\n        DOM$2.insertAfter(fragment, ul);\n      }\n      DOM$2.insertAfter(newBlock, ul);\n      if (NodeType.isEmpty(editor.dom, li.parentNode)) {\n        removeAndKeepBookmarks(li.parentNode);\n      }\n      DOM$2.remove(li);\n      if (NodeType.isEmpty(editor.dom, ul)) {\n        DOM$2.remove(ul);\n      }\n    };\n    var SplitList = { splitList: splitList };\n\n    var liftN = function (arr, f) {\n      var r = [];\n      for (var i = 0; i < arr.length; i++) {\n        var x = arr[i];\n        if (x.isSome()) {\n          r.push(x.getOrDie());\n        } else {\n          return Option.none();\n        }\n      }\n      return Option.some(f.apply(null, r));\n    };\n\n    var fromElements = function (elements, scope) {\n      var doc = scope || document;\n      var fragment = doc.createDocumentFragment();\n      each(elements, function (element) {\n        fragment.appendChild(element.dom());\n      });\n      return Element$$1.fromDom(fragment);\n    };\n\n    var isSupported = function (dom) {\n      return dom.style !== undefined;\n    };\n\n    var internalSet = function (dom, property, value$$1) {\n      if (!isString(value$$1)) {\n        console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value$$1, ':: Element ', dom);\n        throw new Error('CSS value must be a string: ' + value$$1);\n      }\n      if (isSupported(dom))\n        dom.style.setProperty(property, value$$1);\n    };\n    var set$1 = function (element, property, value$$1) {\n      var dom = element.dom();\n      internalSet(dom, property, value$$1);\n    };\n\n    var createSection = function (scope, listType) {\n      var section = {\n        list: Element$$1.fromTag(listType, scope),\n        item: Element$$1.fromTag('li', scope)\n      };\n      append(section.list, section.item);\n      return section;\n    };\n    var joinSections = function (parent, appendor) {\n      append(parent.item, appendor.list);\n    };\n    var createJoinedSections = function (scope, length, listType) {\n      var sections = [];\n      var _loop_1 = function (i) {\n        var newSection = createSection(scope, listType);\n        last(sections).each(function (lastSection) {\n          return joinSections(lastSection, newSection);\n        });\n        sections.push(newSection);\n      };\n      for (var i = 0; i < length; i++) {\n        _loop_1(i);\n      }\n      return sections;\n    };\n    var normalizeSection = function (section, entry) {\n      if (name(section.list).toUpperCase() !== entry.listType) {\n        section.list = mutate(section.list, entry.listType);\n      }\n      setAll(section.list, entry.listAttributes);\n    };\n    var createItem = function (scope, attr, content) {\n      var item = Element$$1.fromTag('li', scope);\n      setAll(item, attr);\n      append$1(item, content);\n      return item;\n    };\n    var setItem = function (section, item) {\n      append(section.list, item);\n      section.item = item;\n    };\n    var writeShallow = function (scope, outline, entry) {\n      var newOutline = outline.slice(0, entry.depth);\n      last(newOutline).each(function (section) {\n        setItem(section, createItem(scope, entry.itemAttributes, entry.content));\n        normalizeSection(section, entry);\n      });\n      return newOutline;\n    };\n    var populateSections = function (sections, entry) {\n      last(sections).each(function (section) {\n        setAll(section.list, entry.listAttributes);\n        setAll(section.item, entry.itemAttributes);\n        append$1(section.item, entry.content);\n      });\n      for (var i = 0; i < sections.length - 1; i++) {\n        set$1(sections[i].item, 'list-style-type', 'none');\n      }\n    };\n    var writeDeep = function (scope, outline, entry) {\n      var newSections = createJoinedSections(scope, entry.depth - outline.length, entry.listType);\n      populateSections(newSections, entry);\n      liftN([\n        last(outline),\n        head(newSections)\n      ], joinSections);\n      return outline.concat(newSections);\n    };\n    var composeList = function (scope, entries) {\n      var outline = foldl(entries, function (outline, entry) {\n        return entry.depth > outline.length ? writeDeep(scope, outline, entry) : writeShallow(scope, outline, entry);\n      }, []);\n      return head(outline).map(function (section) {\n        return section.list;\n      });\n    };\n\n    var isIndented = function (entry) {\n      return entry.depth > 0;\n    };\n    var isSelected = function (entry) {\n      return entry.isSelected;\n    };\n\n    var indentEntry = function (indentation, entry) {\n      switch (indentation) {\n      case 'Indent':\n        entry.depth++;\n        break;\n      case 'Outdent':\n        entry.depth--;\n        break;\n      case 'Flatten':\n        entry.depth = 0;\n      }\n    };\n\n    var hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n    var shallow$1 = function (old, nu) {\n      return nu;\n    };\n    var baseMerge = function (merger) {\n      return function () {\n        var objects = new Array(arguments.length);\n        for (var i = 0; i < objects.length; i++)\n          objects[i] = arguments[i];\n        if (objects.length === 0)\n          throw new Error('Can\\'t merge zero objects');\n        var ret = {};\n        for (var j = 0; j < objects.length; j++) {\n          var curObject = objects[j];\n          for (var key in curObject)\n            if (hasOwnProperty$1.call(curObject, key)) {\n              ret[key] = merger(ret[key], curObject[key]);\n            }\n        }\n        return ret;\n      };\n    };\n    var merge = baseMerge(shallow$1);\n\n    var assimilateEntry = function (adherent, source) {\n      adherent.listType = source.listType;\n      adherent.listAttributes = merge({}, source.listAttributes);\n    };\n    var normalizeShallow = function (outline, entry) {\n      var matchingEntryDepth = entry.depth - 1;\n      outline[matchingEntryDepth].each(function (matchingEntry) {\n        return assimilateEntry(entry, matchingEntry);\n      });\n      var newOutline = outline.slice(0, matchingEntryDepth);\n      newOutline.push(Option.some(entry));\n      return newOutline;\n    };\n    var normalizeDeep = function (outline, entry) {\n      var newOutline = outline.slice(0);\n      var diff = entry.depth - outline.length;\n      for (var i = 1; i < diff; i++) {\n        newOutline.push(Option.none());\n      }\n      newOutline.push(Option.some(entry));\n      return newOutline;\n    };\n    var normalizeEntries = function (entries) {\n      foldl(entries, function (outline, entry) {\n        return entry.depth > outline.length ? normalizeDeep(outline, entry) : normalizeShallow(outline, entry);\n      }, []);\n    };\n\n    var Cell = function (initial) {\n      var value = initial;\n      var get = function () {\n        return value;\n      };\n      var set = function (v) {\n        value = v;\n      };\n      var clone = function () {\n        return Cell(get());\n      };\n      return {\n        get: get,\n        set: set,\n        clone: clone\n      };\n    };\n\n    var ListType;\n    (function (ListType) {\n      ListType['OL'] = 'OL';\n      ListType['UL'] = 'UL';\n      ListType['DL'] = 'DL';\n    }(ListType || (ListType = {})));\n    var getListType = function (list) {\n      switch (name(list)) {\n      case 'ol':\n        return Option.some(ListType.OL);\n      case 'ul':\n        return Option.some(ListType.UL);\n      case 'dl':\n        return Option.some(ListType.DL);\n      default:\n        return Option.none();\n      }\n    };\n    var isList$1 = function (el) {\n      return is$1(el, 'OL,UL,DL');\n    };\n\n    var hasFirstChildList = function (li) {\n      return firstChild(li).map(isList$1).getOr(false);\n    };\n    var hasLastChildList = function (li) {\n      return lastChild(li).map(isList$1).getOr(false);\n    };\n\n    var getItemContent = function (li) {\n      var childNodes = children(li);\n      var contentLength = childNodes.length + (hasLastChildList(li) ? -1 : 0);\n      return map(childNodes.slice(0, contentLength), deep);\n    };\n    var createEntry = function (li, depth, isSelected) {\n      var list = parent(li);\n      return {\n        depth: depth,\n        isSelected: isSelected,\n        content: getItemContent(li),\n        listType: list.bind(getListType).getOr(ListType.OL),\n        listAttributes: list.map(clone).getOr({}),\n        itemAttributes: clone(li)\n      };\n    };\n    var parseItem = function (depth, itemSelection, selectionState, item) {\n      var curriedParseList = curry(parseList, depth, itemSelection, selectionState);\n      var updateSelectionState = function (itemRange) {\n        return itemSelection.each(function (selection) {\n          if (eq(itemRange === 'Start' ? selection.start : selection.end, item)) {\n            selectionState.set(itemRange === 'Start');\n          }\n        });\n      };\n      return firstChild(item).filter(isList$1).fold(function () {\n        updateSelectionState('Start');\n        var fromCurrentItem = createEntry(item, depth, selectionState.get());\n        updateSelectionState('End');\n        var fromChildList = lastChild(item).filter(isList$1).map(curriedParseList).getOr([]);\n        return [fromCurrentItem].concat(fromChildList);\n      }, curriedParseList);\n    };\n    var parseList = function (depth, itemSelection, selectionState, list) {\n      var newDepth = depth + 1;\n      return bind(children(list), function (child$$1) {\n        return isList$1(child$$1) ? parseList(newDepth, itemSelection, selectionState, child$$1) : parseItem(newDepth, itemSelection, selectionState, child$$1);\n      });\n    };\n    var parseLists = function (lists, itemSelection) {\n      var selectionState = Cell(false);\n      var initialDepth = 0;\n      return map(lists, function (list) {\n        return {\n          entries: parseList(initialDepth, itemSelection, selectionState, list),\n          sourceList: list\n        };\n      });\n    };\n\n    var outdentedComposer = function (editor, entries) {\n      return map(entries, function (entry) {\n        var content = fromElements(entry.content);\n        return Element$$1.fromDom(TextBlock.createNewTextBlock(editor, content.dom()));\n      });\n    };\n    var indentedComposer = function (editor, entries) {\n      normalizeEntries(entries);\n      return composeList(editor.contentDocument, entries).toArray();\n    };\n    var composeEntries = function (editor, entries) {\n      return bind(groupBy(entries, isIndented), function (entries) {\n        var groupIsIndented = head(entries).map(isIndented).getOr(false);\n        return groupIsIndented ? indentedComposer(editor, entries) : outdentedComposer(editor, entries);\n      });\n    };\n    var indentSelectedEntries = function (entries, indentation) {\n      each(filter(entries, isSelected), function (entry) {\n        return indentEntry(indentation, entry);\n      });\n    };\n    var getItemSelection = function (editor) {\n      var selectedListItems = map(Selection.getSelectedListItems(editor), Element$$1.fromDom);\n      return liftN([\n        find(selectedListItems, not(hasFirstChildList)),\n        find(reverse(selectedListItems), not(hasFirstChildList))\n      ], function (start, end) {\n        return {\n          start: start,\n          end: end\n        };\n      });\n    };\n    var listsIndentation = function (editor, lists, indentation) {\n      var parsedLists = parseLists(lists, getItemSelection(editor));\n      each(parsedLists, function (entrySet) {\n        indentSelectedEntries(entrySet.entries, indentation);\n        before$1(entrySet.sourceList, composeEntries(editor, entrySet.entries));\n        remove$1(entrySet.sourceList);\n      });\n    };\n\n    var outdentDlItem = function (editor, item) {\n      if (is$1(item, 'DD')) {\n        mutate(item, 'DT');\n      } else if (is$1(item, 'DT')) {\n        parent(item).each(function (dl) {\n          return SplitList.splitList(editor, dl.dom(), item.dom());\n        });\n      }\n    };\n    var indentDlItem = function (item) {\n      if (is$1(item, 'DT')) {\n        mutate(item, 'DD');\n      }\n    };\n    var dlIndentation = function (editor, indentation, dlItems) {\n      if (indentation === 'Indent') {\n        each(dlItems, indentDlItem);\n      } else {\n        each(dlItems, function (item) {\n          return outdentDlItem(editor, item);\n        });\n      }\n    };\n    var selectionIndentation = function (editor, indentation) {\n      var dlItems = map(Selection.getSelectedDlItems(editor), Element$$1.fromDom);\n      var lists = map(Selection.getSelectedListRoots(editor), Element$$1.fromDom);\n      if (dlItems.length || lists.length) {\n        var bookmark = editor.selection.getBookmark();\n        dlIndentation(editor, indentation, dlItems);\n        listsIndentation(editor, lists, indentation);\n        editor.selection.moveToBookmark(bookmark);\n        editor.selection.setRng(Range.normalizeRange(editor.selection.getRng()));\n        editor.nodeChanged();\n      }\n    };\n    var indentListSelection = function (editor) {\n      selectionIndentation(editor, 'Indent');\n    };\n    var outdentListSelection = function (editor) {\n      selectionIndentation(editor, 'Outdent');\n    };\n    var flattenListSelection = function (editor) {\n      selectionIndentation(editor, 'Flatten');\n    };\n\n    var updateListStyle = function (dom, el, detail) {\n      var type = detail['list-style-type'] ? detail['list-style-type'] : null;\n      dom.setStyle(el, 'list-style-type', type);\n    };\n    var setAttribs = function (elm, attrs) {\n      global$5.each(attrs, function (value, key) {\n        elm.setAttribute(key, value);\n      });\n    };\n    var updateListAttrs = function (dom, el, detail) {\n      setAttribs(el, detail['list-attributes']);\n      global$5.each(dom.select('li', el), function (li) {\n        setAttribs(li, detail['list-item-attributes']);\n      });\n    };\n    var updateListWithDetails = function (dom, el, detail) {\n      updateListStyle(dom, el, detail);\n      updateListAttrs(dom, el, detail);\n    };\n    var removeStyles = function (dom, element, styles) {\n      global$5.each(styles, function (style) {\n        var _a;\n        return dom.setStyle(element, (_a = {}, _a[style] = '', _a));\n      });\n    };\n    var getEndPointNode = function (editor, rng, start, root) {\n      var container, offset;\n      container = rng[start ? 'startContainer' : 'endContainer'];\n      offset = rng[start ? 'startOffset' : 'endOffset'];\n      if (container.nodeType === 1) {\n        container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n      }\n      if (!start && NodeType.isBr(container.nextSibling)) {\n        container = container.nextSibling;\n      }\n      while (container.parentNode !== root) {\n        if (NodeType.isTextBlock(editor, container)) {\n          return container;\n        }\n        if (/^(TD|TH)$/.test(container.parentNode.nodeName)) {\n          return container;\n        }\n        container = container.parentNode;\n      }\n      return container;\n    };\n    var getSelectedTextBlocks = function (editor, rng, root) {\n      var textBlocks = [], dom = editor.dom;\n      var startNode = getEndPointNode(editor, rng, true, root);\n      var endNode = getEndPointNode(editor, rng, false, root);\n      var block;\n      var siblings = [];\n      for (var node = startNode; node; node = node.nextSibling) {\n        siblings.push(node);\n        if (node === endNode) {\n          break;\n        }\n      }\n      global$5.each(siblings, function (node) {\n        if (NodeType.isTextBlock(editor, node)) {\n          textBlocks.push(node);\n          block = null;\n          return;\n        }\n        if (dom.isBlock(node) || NodeType.isBr(node)) {\n          if (NodeType.isBr(node)) {\n            dom.remove(node);\n          }\n          block = null;\n          return;\n        }\n        var nextSibling = node.nextSibling;\n        if (global$4.isBookmarkNode(node)) {\n          if (NodeType.isTextBlock(editor, nextSibling) || !nextSibling && node.parentNode === root) {\n            block = null;\n            return;\n          }\n        }\n        if (!block) {\n          block = dom.create('p');\n          node.parentNode.insertBefore(block, node);\n          textBlocks.push(block);\n        }\n        block.appendChild(node);\n      });\n      return textBlocks;\n    };\n    var hasCompatibleStyle = function (dom, sib, detail) {\n      var sibStyle = dom.getStyle(sib, 'list-style-type');\n      var detailStyle = detail ? detail['list-style-type'] : '';\n      detailStyle = detailStyle === null ? '' : detailStyle;\n      return sibStyle === detailStyle;\n    };\n    var applyList = function (editor, listName, detail) {\n      if (detail === void 0) {\n        detail = {};\n      }\n      var rng = editor.selection.getRng(true);\n      var bookmark;\n      var listItemName = 'LI';\n      var root = Selection.getClosestListRootElm(editor, editor.selection.getStart(true));\n      var dom = editor.dom;\n      if (dom.getContentEditable(editor.selection.getNode()) === 'false') {\n        return;\n      }\n      listName = listName.toUpperCase();\n      if (listName === 'DL') {\n        listItemName = 'DT';\n      }\n      bookmark = Bookmark.createBookmark(rng);\n      global$5.each(getSelectedTextBlocks(editor, rng, root), function (block) {\n        var listBlock, sibling;\n        sibling = block.previousSibling;\n        if (sibling && NodeType.isListNode(sibling) && sibling.nodeName === listName && hasCompatibleStyle(dom, sibling, detail)) {\n          listBlock = sibling;\n          block = dom.rename(block, listItemName);\n          sibling.appendChild(block);\n        } else {\n          listBlock = dom.create(listName);\n          block.parentNode.insertBefore(listBlock, block);\n          listBlock.appendChild(block);\n          block = dom.rename(block, listItemName);\n        }\n        removeStyles(dom, block, [\n          'margin',\n          'margin-right',\n          'margin-bottom',\n          'margin-left',\n          'margin-top',\n          'padding',\n          'padding-right',\n          'padding-bottom',\n          'padding-left',\n          'padding-top'\n        ]);\n        updateListWithDetails(dom, listBlock, detail);\n        mergeWithAdjacentLists(editor.dom, listBlock);\n      });\n      editor.selection.setRng(Bookmark.resolveBookmark(bookmark));\n    };\n    var isValidLists = function (list1, list2) {\n      return list1 && list2 && NodeType.isListNode(list1) && list1.nodeName === list2.nodeName;\n    };\n    var hasSameListStyle = function (dom, list1, list2) {\n      var targetStyle = dom.getStyle(list1, 'list-style-type', true);\n      var style = dom.getStyle(list2, 'list-style-type', true);\n      return targetStyle === style;\n    };\n    var hasSameClasses = function (elm1, elm2) {\n      return elm1.className === elm2.className;\n    };\n    var shouldMerge = function (dom, list1, list2) {\n      return isValidLists(list1, list2) && hasSameListStyle(dom, list1, list2) && hasSameClasses(list1, list2);\n    };\n    var mergeWithAdjacentLists = function (dom, listBlock) {\n      var sibling, node;\n      sibling = listBlock.nextSibling;\n      if (shouldMerge(dom, listBlock, sibling)) {\n        while (node = sibling.firstChild) {\n          listBlock.appendChild(node);\n        }\n        dom.remove(sibling);\n      }\n      sibling = listBlock.previousSibling;\n      if (shouldMerge(dom, listBlock, sibling)) {\n        while (node = sibling.lastChild) {\n          listBlock.insertBefore(node, listBlock.firstChild);\n        }\n        dom.remove(sibling);\n      }\n    };\n    var updateList = function (dom, list, listName, detail) {\n      if (list.nodeName !== listName) {\n        var newList = dom.rename(list, listName);\n        updateListWithDetails(dom, newList, detail);\n      } else {\n        updateListWithDetails(dom, list, detail);\n      }\n    };\n    var toggleMultipleLists = function (editor, parentList, lists, listName, detail) {\n      if (parentList.nodeName === listName && !hasListStyleDetail(detail)) {\n        flattenListSelection(editor);\n      } else {\n        var bookmark = Bookmark.createBookmark(editor.selection.getRng(true));\n        global$5.each([parentList].concat(lists), function (elm) {\n          updateList(editor.dom, elm, listName, detail);\n        });\n        editor.selection.setRng(Bookmark.resolveBookmark(bookmark));\n      }\n    };\n    var hasListStyleDetail = function (detail) {\n      return 'list-style-type' in detail;\n    };\n    var toggleSingleList = function (editor, parentList, listName, detail) {\n      if (parentList === editor.getBody()) {\n        return;\n      }\n      if (parentList) {\n        if (parentList.nodeName === listName && !hasListStyleDetail(detail)) {\n          flattenListSelection(editor);\n        } else {\n          var bookmark = Bookmark.createBookmark(editor.selection.getRng(true));\n          updateListWithDetails(editor.dom, parentList, detail);\n          mergeWithAdjacentLists(editor.dom, editor.dom.rename(parentList, listName));\n          editor.selection.setRng(Bookmark.resolveBookmark(bookmark));\n        }\n      } else {\n        applyList(editor, listName, detail);\n      }\n    };\n    var toggleList = function (editor, listName, detail) {\n      var parentList = Selection.getParentList(editor);\n      var selectedSubLists = Selection.getSelectedSubLists(editor);\n      detail = detail ? detail : {};\n      if (parentList && selectedSubLists.length > 0) {\n        toggleMultipleLists(editor, parentList, selectedSubLists, listName, detail);\n      } else {\n        toggleSingleList(editor, parentList, listName, detail);\n      }\n    };\n    var ToggleList = {\n      toggleList: toggleList,\n      mergeWithAdjacentLists: mergeWithAdjacentLists\n    };\n\n    var DOM$3 = global$6.DOM;\n    var normalizeList = function (dom, ul) {\n      var sibling;\n      var parentNode = ul.parentNode;\n      if (parentNode.nodeName === 'LI' && parentNode.firstChild === ul) {\n        sibling = parentNode.previousSibling;\n        if (sibling && sibling.nodeName === 'LI') {\n          sibling.appendChild(ul);\n          if (NodeType.isEmpty(dom, parentNode)) {\n            DOM$3.remove(parentNode);\n          }\n        } else {\n          DOM$3.setStyle(parentNode, 'listStyleType', 'none');\n        }\n      }\n      if (NodeType.isListNode(parentNode)) {\n        sibling = parentNode.previousSibling;\n        if (sibling && sibling.nodeName === 'LI') {\n          sibling.appendChild(ul);\n        }\n      }\n    };\n    var normalizeLists = function (dom, element) {\n      global$5.each(global$5.grep(dom.select('ol,ul', element)), function (ul) {\n        normalizeList(dom, ul);\n      });\n    };\n    var NormalizeLists = {\n      normalizeList: normalizeList,\n      normalizeLists: normalizeLists\n    };\n\n    var findNextCaretContainer = function (editor, rng, isForward, root) {\n      var node = rng.startContainer;\n      var offset = rng.startOffset;\n      var nonEmptyBlocks, walker;\n      if (node.nodeType === 3 && (isForward ? offset < node.data.length : offset > 0)) {\n        return node;\n      }\n      nonEmptyBlocks = editor.schema.getNonEmptyElements();\n      if (node.nodeType === 1) {\n        node = global$1.getNode(node, offset);\n      }\n      walker = new global$2(node, root);\n      if (isForward) {\n        if (NodeType.isBogusBr(editor.dom, node)) {\n          walker.next();\n        }\n      }\n      while (node = walker[isForward ? 'next' : 'prev2']()) {\n        if (node.nodeName === 'LI' && !node.hasChildNodes()) {\n          return node;\n        }\n        if (nonEmptyBlocks[node.nodeName]) {\n          return node;\n        }\n        if (node.nodeType === 3 && node.data.length > 0) {\n          return node;\n        }\n      }\n    };\n    var hasOnlyOneBlockChild = function (dom, elm) {\n      var childNodes = elm.childNodes;\n      return childNodes.length === 1 && !NodeType.isListNode(childNodes[0]) && dom.isBlock(childNodes[0]);\n    };\n    var unwrapSingleBlockChild = function (dom, elm) {\n      if (hasOnlyOneBlockChild(dom, elm)) {\n        dom.remove(elm.firstChild, true);\n      }\n    };\n    var moveChildren = function (dom, fromElm, toElm) {\n      var node, targetElm;\n      targetElm = hasOnlyOneBlockChild(dom, toElm) ? toElm.firstChild : toElm;\n      unwrapSingleBlockChild(dom, fromElm);\n      if (!NodeType.isEmpty(dom, fromElm, true)) {\n        while (node = fromElm.firstChild) {\n          targetElm.appendChild(node);\n        }\n      }\n    };\n    var mergeLiElements = function (dom, fromElm, toElm) {\n      var node, listNode;\n      var ul = fromElm.parentNode;\n      if (!NodeType.isChildOfBody(dom, fromElm) || !NodeType.isChildOfBody(dom, toElm)) {\n        return;\n      }\n      if (NodeType.isListNode(toElm.lastChild)) {\n        listNode = toElm.lastChild;\n      }\n      if (ul === toElm.lastChild) {\n        if (NodeType.isBr(ul.previousSibling)) {\n          dom.remove(ul.previousSibling);\n        }\n      }\n      node = toElm.lastChild;\n      if (node && NodeType.isBr(node) && fromElm.hasChildNodes()) {\n        dom.remove(node);\n      }\n      if (NodeType.isEmpty(dom, toElm, true)) {\n        dom.$(toElm).empty();\n      }\n      moveChildren(dom, fromElm, toElm);\n      if (listNode) {\n        toElm.appendChild(listNode);\n      }\n      dom.remove(fromElm);\n      if (NodeType.isEmpty(dom, ul) && ul !== dom.getRoot()) {\n        dom.remove(ul);\n      }\n    };\n    var mergeIntoEmptyLi = function (editor, fromLi, toLi) {\n      editor.dom.$(toLi).empty();\n      mergeLiElements(editor.dom, fromLi, toLi);\n      editor.selection.setCursorLocation(toLi);\n    };\n    var mergeForward = function (editor, rng, fromLi, toLi) {\n      var dom = editor.dom;\n      if (dom.isEmpty(toLi)) {\n        mergeIntoEmptyLi(editor, fromLi, toLi);\n      } else {\n        var bookmark = Bookmark.createBookmark(rng);\n        mergeLiElements(dom, fromLi, toLi);\n        editor.selection.setRng(Bookmark.resolveBookmark(bookmark));\n      }\n    };\n    var mergeBackward = function (editor, rng, fromLi, toLi) {\n      var bookmark = Bookmark.createBookmark(rng);\n      mergeLiElements(editor.dom, fromLi, toLi);\n      var resolvedBookmark = Bookmark.resolveBookmark(bookmark);\n      editor.selection.setRng(resolvedBookmark);\n    };\n    var backspaceDeleteFromListToListCaret = function (editor, isForward) {\n      var dom = editor.dom, selection = editor.selection;\n      var selectionStartElm = selection.getStart();\n      var root = Selection.getClosestListRootElm(editor, selectionStartElm);\n      var li = dom.getParent(selection.getStart(), 'LI', root);\n      var ul, rng, otherLi;\n      if (li) {\n        ul = li.parentNode;\n        if (ul === editor.getBody() && NodeType.isEmpty(dom, ul)) {\n          return true;\n        }\n        rng = Range.normalizeRange(selection.getRng(true));\n        otherLi = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);\n        if (otherLi && otherLi !== li) {\n          if (isForward) {\n            mergeForward(editor, rng, otherLi, li);\n          } else {\n            mergeBackward(editor, rng, li, otherLi);\n          }\n          return true;\n        } else if (!otherLi) {\n          if (!isForward) {\n            flattenListSelection(editor);\n            return true;\n          }\n        }\n      }\n      return false;\n    };\n    var removeBlock = function (dom, block, root) {\n      var parentBlock = dom.getParent(block.parentNode, dom.isBlock, root);\n      dom.remove(block);\n      if (parentBlock && dom.isEmpty(parentBlock)) {\n        dom.remove(parentBlock);\n      }\n    };\n    var backspaceDeleteIntoListCaret = function (editor, isForward) {\n      var dom = editor.dom;\n      var selectionStartElm = editor.selection.getStart();\n      var root = Selection.getClosestListRootElm(editor, selectionStartElm);\n      var block = dom.getParent(selectionStartElm, dom.isBlock, root);\n      if (block && dom.isEmpty(block)) {\n        var rng = Range.normalizeRange(editor.selection.getRng(true));\n        var otherLi_1 = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);\n        if (otherLi_1) {\n          editor.undoManager.transact(function () {\n            removeBlock(dom, block, root);\n            ToggleList.mergeWithAdjacentLists(dom, otherLi_1.parentNode);\n            editor.selection.select(otherLi_1, true);\n            editor.selection.collapse(isForward);\n          });\n          return true;\n        }\n      }\n      return false;\n    };\n    var backspaceDeleteCaret = function (editor, isForward) {\n      return backspaceDeleteFromListToListCaret(editor, isForward) || backspaceDeleteIntoListCaret(editor, isForward);\n    };\n    var backspaceDeleteRange = function (editor) {\n      var selectionStartElm = editor.selection.getStart();\n      var root = Selection.getClosestListRootElm(editor, selectionStartElm);\n      var startListParent = editor.dom.getParent(selectionStartElm, 'LI,DT,DD', root);\n      if (startListParent || Selection.getSelectedListItems(editor).length > 0) {\n        editor.undoManager.transact(function () {\n          editor.execCommand('Delete');\n          NormalizeLists.normalizeLists(editor.dom, editor.getBody());\n        });\n        return true;\n      }\n      return false;\n    };\n    var backspaceDelete = function (editor, isForward) {\n      return editor.selection.isCollapsed() ? backspaceDeleteCaret(editor, isForward) : backspaceDeleteRange(editor);\n    };\n    var setup = function (editor) {\n      editor.on('keydown', function (e) {\n        if (e.keyCode === global$3.BACKSPACE) {\n          if (backspaceDelete(editor, false)) {\n            e.preventDefault();\n          }\n        } else if (e.keyCode === global$3.DELETE) {\n          if (backspaceDelete(editor, true)) {\n            e.preventDefault();\n          }\n        }\n      });\n    };\n    var Delete = {\n      setup: setup,\n      backspaceDelete: backspaceDelete\n    };\n\n    var get$3 = function (editor) {\n      return {\n        backspaceDelete: function (isForward) {\n          Delete.backspaceDelete(editor, isForward);\n        }\n      };\n    };\n    var Api = { get: get$3 };\n\n    var queryListCommandState = function (editor, listName) {\n      return function () {\n        var parentList = editor.dom.getParent(editor.selection.getStart(), 'UL,OL,DL');\n        return parentList && parentList.nodeName === listName;\n      };\n    };\n    var register = function (editor) {\n      editor.on('BeforeExecCommand', function (e) {\n        var cmd = e.command.toLowerCase();\n        if (cmd === 'indent') {\n          indentListSelection(editor);\n        } else if (cmd === 'outdent') {\n          outdentListSelection(editor);\n        }\n      });\n      editor.addCommand('InsertUnorderedList', function (ui, detail) {\n        ToggleList.toggleList(editor, 'UL', detail);\n      });\n      editor.addCommand('InsertOrderedList', function (ui, detail) {\n        ToggleList.toggleList(editor, 'OL', detail);\n      });\n      editor.addCommand('InsertDefinitionList', function (ui, detail) {\n        ToggleList.toggleList(editor, 'DL', detail);\n      });\n      editor.addCommand('RemoveList', function () {\n        flattenListSelection(editor);\n      });\n      editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState(editor, 'UL'));\n      editor.addQueryStateHandler('InsertOrderedList', queryListCommandState(editor, 'OL'));\n      editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState(editor, 'DL'));\n    };\n    var Commands = { register: register };\n\n    var shouldIndentOnTab = function (editor) {\n      return editor.getParam('lists_indent_on_tab', true);\n    };\n    var Settings = { shouldIndentOnTab: shouldIndentOnTab };\n\n    var setupTabKey = function (editor) {\n      editor.on('keydown', function (e) {\n        if (e.keyCode !== global$3.TAB || global$3.metaKeyPressed(e)) {\n          return;\n        }\n        if (Selection.isList(editor)) {\n          e.preventDefault();\n          editor.undoManager.transact(function () {\n            if (e.shiftKey) {\n              outdentListSelection(editor);\n            } else {\n              indentListSelection(editor);\n            }\n          });\n        }\n      });\n    };\n    var setup$1 = function (editor) {\n      if (Settings.shouldIndentOnTab(editor)) {\n        setupTabKey(editor);\n      }\n      Delete.setup(editor);\n    };\n    var Keyboard = { setup: setup$1 };\n\n    var findIndex$2 = function (list, predicate) {\n      for (var index = 0; index < list.length; index++) {\n        var element = list[index];\n        if (predicate(element)) {\n          return index;\n        }\n      }\n      return -1;\n    };\n    var listState = function (editor, listName) {\n      return function (e) {\n        var ctrl = e.control;\n        editor.on('NodeChange', function (e) {\n          var tableCellIndex = findIndex$2(e.parents, NodeType.isTableCellNode);\n          var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents;\n          var lists = global$5.grep(parents, NodeType.isListNode);\n          ctrl.active(lists.length > 0 && lists[0].nodeName === listName);\n        });\n      };\n    };\n    var register$1 = function (editor) {\n      var hasPlugin = function (editor, plugin) {\n        var plugins = editor.settings.plugins ? editor.settings.plugins : '';\n        return global$5.inArray(plugins.split(/[ ,]/), plugin) !== -1;\n      };\n      if (!hasPlugin(editor, 'advlist')) {\n        editor.addButton('numlist', {\n          active: false,\n          title: 'Numbered list',\n          cmd: 'InsertOrderedList',\n          onPostRender: listState(editor, 'OL')\n        });\n        editor.addButton('bullist', {\n          active: false,\n          title: 'Bullet list',\n          cmd: 'InsertUnorderedList',\n          onPostRender: listState(editor, 'UL')\n        });\n      }\n      editor.addButton('indent', {\n        icon: 'indent',\n        title: 'Increase indent',\n        cmd: 'Indent'\n      });\n    };\n    var Buttons = { register: register$1 };\n\n    global.add('lists', function (editor) {\n      Keyboard.setup(editor);\n      Buttons.register(editor);\n      Commands.register(editor);\n      return Api.get(editor);\n    });\n    function Plugin () {\n    }\n\n    return Plugin;\n\n}());\n})();\n\n}.call(window));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tinymce/plugins/lists/plugin.js\n// module id = Z3omNargaT\n// module chunks = 2 3 28 35 44 54 73 85 102","#\n# Copyright (C) 2012 - present Instructure, Inc.\n#\n# This file is part of Canvas.\n#\n# Canvas is free software: you can redistribute it and/or modify it under\n# the terms of the GNU Affero General Public License as published by the Free\n# Software Foundation, version 3 of the License.\n#\n# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n# details.\n#\n# You should have received a copy of the GNU Affero General Public License along\n# with this program. If not, see <http://www.gnu.org/licenses/>.\n\nif ENV.INCOMPLETE_REGISTRATION\n  require [\n    'jquery', \n    'i18n!registration', \n    'jst/registration/incompleteRegistrationWarning'\n  ], ($, I18n, template) ->\n\n    $(template(email: ENV.USER_EMAIL)).\n      appendTo($('body')).\n      dialog\n        title: I18n.t('welcome_to_canvas', 'Welcome to Canvas!')\n        width: 400\n        resizable: false\n        buttons: [\n          text: I18n.t('get_started', 'Get Started')\n          click: -> $(this).dialog('close')\n          class: 'btn-primary'\n        ]\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/registration/incompleteRegistrationWarning.coffee","/*\n * Copyright (C) 2017 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport I18n from 'i18n!subnav_menu_toggle'\n  const updateSubnavMenuToggle = function (pathname = window.location.pathname) {\n    // update subnav menu toggle for accessibility\n    const subnavMenuTranslations = {\n      hide: {\n        default: I18n.t('Hide Navigation Menu'),\n        account: I18n.t('Hide Account Navigation Menu'),\n        admin: I18n.t('Hide Admin Navigation Menu'),\n        courses: I18n.t('Hide Courses Navigation Menu'),\n        groups: I18n.t('Hide Groups Navigation Menu')\n      },\n      show: {\n        default: I18n.t('Show Navigation Menu'),\n        account: I18n.t('Show Account Navigation Menu'),\n        admin: I18n.t('Show Admin Navigation Menu'),\n        courses: I18n.t('Show Courses Navigation Menu'),\n        groups: I18n.t('Show Groups Navigation Menu')\n      }\n    }\n\n    const subnavMenuExpanded = document.body.classList.contains('course-menu-expanded')\n    const subnavMenuAction = subnavMenuExpanded ? 'hide' : 'show'\n    let subnavMenuToggleText = subnavMenuTranslations[subnavMenuAction].default\n\n    if (pathname.match(/^\\/profile/)) {\n      subnavMenuToggleText = subnavMenuTranslations[subnavMenuAction].account\n    } else if (pathname.match(/^\\/accounts/)) {\n      subnavMenuToggleText = subnavMenuTranslations[subnavMenuAction].admin\n    } else if (pathname.match(/^\\/courses/)) {\n      subnavMenuToggleText = subnavMenuTranslations[subnavMenuAction].courses\n    } else if (pathname.match(/^\\/groups/)) {\n      subnavMenuToggleText = subnavMenuTranslations[subnavMenuAction].groups\n    }\n\n    const subnavMenuToggle = document.getElementById('courseMenuToggle')\n    subnavMenuToggle.setAttribute('aria-label', subnavMenuToggleText)\n    subnavMenuToggle.setAttribute('title', subnavMenuToggleText)\n  }\n\nexport default updateSubnavMenuToggle\n\n\n\n// WEBPACK FOOTER //\n// ./app/jsx/subnav_menu/updateSubnavMenuToggle.js","// this file was auto-generated by rake i18n:generate_js.\n// you probably shouldn't edit it directly\nimport I18n from 'i18nObj'\nimport $ from 'jquery'\n  $.extend(true, I18n, {translations: {\"ar\":{\"locked_image_24f37a16\":\"صورة مؤمّنة\"},\"cy\":{\"locked_image_24f37a16\":\"Delwedd wedi’i chloi\"},\"da\":{\"locked_image_24f37a16\":\"Låst billede\"},\"da-x-k12\":{\"locked_image_24f37a16\":\"Låst billede\"},\"de\":{\"locked_image_24f37a16\":\"Gesperrtes Bild\"},\"en-AU\":{\"locked_image_24f37a16\":\"Locked image\"},\"en-CA\":{\"locked_image_24f37a16\":\"Locked image\"},\"en-GB\":{\"locked_image_24f37a16\":\"Locked image\"},\"en-GB-x-lbs\":{\"locked_image_24f37a16\":\"Locked image\"},\"en-GB-x-ukhe\":{\"locked_image_24f37a16\":\"Locked image\"},\"es\":{\"locked_image_24f37a16\":\"Imagen bloqueada\"},\"fr\":{\"locked_image_24f37a16\":\"Image verrouillée\"},\"fr-CA\":{\"locked_image_24f37a16\":\"Image verrouillée\"},\"ht\":{\"locked_image_24f37a16\":\"Imaj Bloke\"},\"is\":{\"locked_image_24f37a16\":\"Læst mynd\"},\"it\":{\"locked_image_24f37a16\":\"Immagine bloccata\"},\"ja\":{\"locked_image_24f37a16\":\"ロックされた画像\"},\"mi\":{\"locked_image_24f37a16\":\"Āhua kua rakaina\"},\"nb\":{\"locked_image_24f37a16\":\"Låst bilde\"},\"nb-x-k12\":{\"locked_image_24f37a16\":\"Låst bilde\"},\"nl\":{\"locked_image_24f37a16\":\"Vergrendelde afbeelding\"},\"pl\":{\"locked_image_24f37a16\":\"Zablokowany obraz\"},\"pt\":{\"locked_image_24f37a16\":\"Imagem bloqueada\"},\"pt-BR\":{\"locked_image_24f37a16\":\"Imagem bloqueada\"},\"ru\":{\"locked_image_24f37a16\":\"Заблокированное изображение\"},\"sl\":{\"locked_image_24f37a16\":\"Zaklenjena slika\"},\"sv\":{\"locked_image_24f37a16\":\"Låst bild\"},\"sv-x-k12\":{\"locked_image_24f37a16\":\"Låst bild\"},\"zh-Hans\":{\"locked_image_24f37a16\":\"锁定图片\"},\"zh-Hant\":{\"locked_image_24f37a16\":\"鎖定圖像\"}}});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./public/javascripts/translations/broken_images.js\n// module id = f+YlSntt6E\n// module chunks = 85","/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n(function () {\nvar media = (function () {\n    'use strict';\n\n    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    var getScripts = function (editor) {\n      return editor.getParam('media_scripts');\n    };\n    var getAudioTemplateCallback = function (editor) {\n      return editor.getParam('audio_template_callback');\n    };\n    var getVideoTemplateCallback = function (editor) {\n      return editor.getParam('video_template_callback');\n    };\n    var hasLiveEmbeds = function (editor) {\n      return editor.getParam('media_live_embeds', true);\n    };\n    var shouldFilterHtml = function (editor) {\n      return editor.getParam('media_filter_html', true);\n    };\n    var getUrlResolver = function (editor) {\n      return editor.getParam('media_url_resolver');\n    };\n    var hasAltSource = function (editor) {\n      return editor.getParam('media_alt_source', true);\n    };\n    var hasPoster = function (editor) {\n      return editor.getParam('media_poster', true);\n    };\n    var hasDimensions = function (editor) {\n      return editor.getParam('media_dimensions', true);\n    };\n    var Settings = {\n      getScripts: getScripts,\n      getAudioTemplateCallback: getAudioTemplateCallback,\n      getVideoTemplateCallback: getVideoTemplateCallback,\n      hasLiveEmbeds: hasLiveEmbeds,\n      shouldFilterHtml: shouldFilterHtml,\n      getUrlResolver: getUrlResolver,\n      hasAltSource: hasAltSource,\n      hasPoster: hasPoster,\n      hasDimensions: hasDimensions\n    };\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.html.SaxParser');\n\n    var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n    var getVideoScriptMatch = function (prefixes, src) {\n      if (prefixes) {\n        for (var i = 0; i < prefixes.length; i++) {\n          if (src.indexOf(prefixes[i].filter) !== -1) {\n            return prefixes[i];\n          }\n        }\n      }\n    };\n    var VideoScript = { getVideoScriptMatch: getVideoScriptMatch };\n\n    var trimPx = function (value) {\n      return value.replace(/px$/, '');\n    };\n    var addPx = function (value) {\n      return /^[0-9.]+$/.test(value) ? value + 'px' : value;\n    };\n    var getSize = function (name) {\n      return function (elm) {\n        return elm ? trimPx(elm.style[name]) : '';\n      };\n    };\n    var setSize = function (name) {\n      return function (elm, value) {\n        if (elm) {\n          elm.style[name] = addPx(value);\n        }\n      };\n    };\n    var Size = {\n      getMaxWidth: getSize('maxWidth'),\n      getMaxHeight: getSize('maxHeight'),\n      setMaxWidth: setSize('maxWidth'),\n      setMaxHeight: setSize('maxHeight')\n    };\n\n    var DOM = global$4.DOM;\n    var getEphoxEmbedIri = function (elm) {\n      return DOM.getAttrib(elm, 'data-ephox-embed-iri');\n    };\n    var isEphoxEmbed = function (html) {\n      var fragment = DOM.createFragment(html);\n      return getEphoxEmbedIri(fragment.firstChild) !== '';\n    };\n    var htmlToDataSax = function (prefixes, html) {\n      var data = {};\n      global$3({\n        validate: false,\n        allow_conditional_comments: true,\n        special: 'script,noscript',\n        start: function (name, attrs) {\n          if (!data.source1 && name === 'param') {\n            data.source1 = attrs.map.movie;\n          }\n          if (name === 'iframe' || name === 'object' || name === 'embed' || name === 'video' || name === 'audio') {\n            if (!data.type) {\n              data.type = name;\n            }\n            data = global$2.extend(attrs.map, data);\n          }\n          if (name === 'script') {\n            var videoScript = VideoScript.getVideoScriptMatch(prefixes, attrs.map.src);\n            if (!videoScript) {\n              return;\n            }\n            data = {\n              type: 'script',\n              source1: attrs.map.src,\n              width: videoScript.width,\n              height: videoScript.height\n            };\n          }\n          if (name === 'source') {\n            if (!data.source1) {\n              data.source1 = attrs.map.src;\n            } else if (!data.source2) {\n              data.source2 = attrs.map.src;\n            }\n          }\n          if (name === 'img' && !data.poster) {\n            data.poster = attrs.map.src;\n          }\n        }\n      }).parse(html);\n      data.source1 = data.source1 || data.src || data.data;\n      data.source2 = data.source2 || '';\n      data.poster = data.poster || '';\n      return data;\n    };\n    var ephoxEmbedHtmlToData = function (html) {\n      var fragment = DOM.createFragment(html);\n      var div = fragment.firstChild;\n      return {\n        type: 'ephox-embed-iri',\n        source1: getEphoxEmbedIri(div),\n        source2: '',\n        poster: '',\n        width: Size.getMaxWidth(div),\n        height: Size.getMaxHeight(div)\n      };\n    };\n    var htmlToData = function (prefixes, html) {\n      return isEphoxEmbed(html) ? ephoxEmbedHtmlToData(html) : htmlToDataSax(prefixes, html);\n    };\n    var HtmlToData = { htmlToData: htmlToData };\n\n    var global$5 = tinymce.util.Tools.resolve('tinymce.util.Promise');\n\n    var guess = function (url) {\n      var mimes = {\n        mp3: 'audio/mpeg',\n        wav: 'audio/wav',\n        mp4: 'video/mp4',\n        webm: 'video/webm',\n        ogg: 'video/ogg',\n        swf: 'application/x-shockwave-flash'\n      };\n      var fileEnd = url.toLowerCase().split('.').pop();\n      var mime = mimes[fileEnd];\n      return mime ? mime : '';\n    };\n    var Mime = { guess: guess };\n\n    var global$6 = tinymce.util.Tools.resolve('tinymce.html.Writer');\n\n    var global$7 = tinymce.util.Tools.resolve('tinymce.html.Schema');\n\n    var DOM$1 = global$4.DOM;\n    var setAttributes = function (attrs, updatedAttrs) {\n      var name;\n      var i;\n      var value;\n      var attr;\n      for (name in updatedAttrs) {\n        value = '' + updatedAttrs[name];\n        if (attrs.map[name]) {\n          i = attrs.length;\n          while (i--) {\n            attr = attrs[i];\n            if (attr.name === name) {\n              if (value) {\n                attrs.map[name] = value;\n                attr.value = value;\n              } else {\n                delete attrs.map[name];\n                attrs.splice(i, 1);\n              }\n            }\n          }\n        } else if (value) {\n          attrs.push({\n            name: name,\n            value: value\n          });\n          attrs.map[name] = value;\n        }\n      }\n    };\n    var normalizeHtml = function (html) {\n      var writer = global$6();\n      var parser = global$3(writer);\n      parser.parse(html);\n      return writer.getContent();\n    };\n    var updateHtmlSax = function (html, data, updateAll) {\n      var writer = global$6();\n      var sourceCount = 0;\n      var hasImage;\n      global$3({\n        validate: false,\n        allow_conditional_comments: true,\n        special: 'script,noscript',\n        comment: function (text) {\n          writer.comment(text);\n        },\n        cdata: function (text) {\n          writer.cdata(text);\n        },\n        text: function (text, raw) {\n          writer.text(text, raw);\n        },\n        start: function (name, attrs, empty) {\n          switch (name) {\n          case 'video':\n          case 'object':\n          case 'embed':\n          case 'img':\n          case 'iframe':\n            if (data.height !== undefined && data.width !== undefined) {\n              setAttributes(attrs, {\n                width: data.width,\n                height: data.height\n              });\n            }\n            break;\n          }\n          if (updateAll) {\n            switch (name) {\n            case 'video':\n              setAttributes(attrs, {\n                poster: data.poster,\n                src: ''\n              });\n              if (data.source2) {\n                setAttributes(attrs, { src: '' });\n              }\n              break;\n            case 'iframe':\n              setAttributes(attrs, { src: data.source1 });\n              break;\n            case 'source':\n              sourceCount++;\n              if (sourceCount <= 2) {\n                setAttributes(attrs, {\n                  src: data['source' + sourceCount],\n                  type: data['source' + sourceCount + 'mime']\n                });\n                if (!data['source' + sourceCount]) {\n                  return;\n                }\n              }\n              break;\n            case 'img':\n              if (!data.poster) {\n                return;\n              }\n              hasImage = true;\n              break;\n            }\n          }\n          writer.start(name, attrs, empty);\n        },\n        end: function (name) {\n          if (name === 'video' && updateAll) {\n            for (var index = 1; index <= 2; index++) {\n              if (data['source' + index]) {\n                var attrs = [];\n                attrs.map = {};\n                if (sourceCount < index) {\n                  setAttributes(attrs, {\n                    src: data['source' + index],\n                    type: data['source' + index + 'mime']\n                  });\n                  writer.start('source', attrs, true);\n                }\n              }\n            }\n          }\n          if (data.poster && name === 'object' && updateAll && !hasImage) {\n            var imgAttrs = [];\n            imgAttrs.map = {};\n            setAttributes(imgAttrs, {\n              src: data.poster,\n              width: data.width,\n              height: data.height\n            });\n            writer.start('img', imgAttrs, true);\n          }\n          writer.end(name);\n        }\n      }, global$7({})).parse(html);\n      return writer.getContent();\n    };\n    var isEphoxEmbed$1 = function (html) {\n      var fragment = DOM$1.createFragment(html);\n      return DOM$1.getAttrib(fragment.firstChild, 'data-ephox-embed-iri') !== '';\n    };\n    var updateEphoxEmbed = function (html, data) {\n      var fragment = DOM$1.createFragment(html);\n      var div = fragment.firstChild;\n      Size.setMaxWidth(div, data.width);\n      Size.setMaxHeight(div, data.height);\n      return normalizeHtml(div.outerHTML);\n    };\n    var updateHtml = function (html, data, updateAll) {\n      return isEphoxEmbed$1(html) ? updateEphoxEmbed(html, data) : updateHtmlSax(html, data, updateAll);\n    };\n    var UpdateHtml = { updateHtml: updateHtml };\n\n    var urlPatterns = [\n      {\n        regex: /youtu\\.be\\/([\\w\\-_\\?&=.]+)/i,\n        type: 'iframe',\n        w: 560,\n        h: 314,\n        url: '//www.youtube.com/embed/$1',\n        allowFullscreen: true\n      },\n      {\n        regex: /youtube\\.com(.+)v=([^&]+)(&([a-z0-9&=\\-_]+))?/i,\n        type: 'iframe',\n        w: 560,\n        h: 314,\n        url: '//www.youtube.com/embed/$2?$4',\n        allowFullscreen: true\n      },\n      {\n        regex: /youtube.com\\/embed\\/([a-z0-9\\?&=\\-_]+)/i,\n        type: 'iframe',\n        w: 560,\n        h: 314,\n        url: '//www.youtube.com/embed/$1',\n        allowFullscreen: true\n      },\n      {\n        regex: /vimeo\\.com\\/([0-9]+)/,\n        type: 'iframe',\n        w: 425,\n        h: 350,\n        url: '//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc',\n        allowFullscreen: true\n      },\n      {\n        regex: /vimeo\\.com\\/(.*)\\/([0-9]+)/,\n        type: 'iframe',\n        w: 425,\n        h: 350,\n        url: '//player.vimeo.com/video/$2?title=0&amp;byline=0',\n        allowFullscreen: true\n      },\n      {\n        regex: /maps\\.google\\.([a-z]{2,3})\\/maps\\/(.+)msid=(.+)/,\n        type: 'iframe',\n        w: 425,\n        h: 350,\n        url: '//maps.google.com/maps/ms?msid=$2&output=embed\"',\n        allowFullscreen: false\n      },\n      {\n        regex: /dailymotion\\.com\\/video\\/([^_]+)/,\n        type: 'iframe',\n        w: 480,\n        h: 270,\n        url: '//www.dailymotion.com/embed/video/$1',\n        allowFullscreen: true\n      },\n      {\n        regex: /dai\\.ly\\/([^_]+)/,\n        type: 'iframe',\n        w: 480,\n        h: 270,\n        url: '//www.dailymotion.com/embed/video/$1',\n        allowFullscreen: true\n      }\n    ];\n    var getUrl = function (pattern, url) {\n      var match = pattern.regex.exec(url);\n      var newUrl = pattern.url;\n      var _loop_1 = function (i) {\n        newUrl = newUrl.replace('$' + i, function () {\n          return match[i] ? match[i] : '';\n        });\n      };\n      for (var i = 0; i < match.length; i++) {\n        _loop_1(i);\n      }\n      return newUrl.replace(/\\?$/, '');\n    };\n    var matchPattern = function (url) {\n      var pattern = urlPatterns.filter(function (pattern) {\n        return pattern.regex.test(url);\n      });\n      if (pattern.length > 0) {\n        return global$2.extend({}, pattern[0], { url: getUrl(pattern[0], url) });\n      } else {\n        return null;\n      }\n    };\n\n    var getIframeHtml = function (data) {\n      var allowFullscreen = data.allowFullscreen ? ' allowFullscreen=\"1\"' : '';\n      return '<iframe src=\"' + data.source1 + '\" width=\"' + data.width + '\" height=\"' + data.height + '\"' + allowFullscreen + '></iframe>';\n    };\n    var getFlashHtml = function (data) {\n      var html = '<object data=\"' + data.source1 + '\" width=\"' + data.width + '\" height=\"' + data.height + '\" type=\"application/x-shockwave-flash\">';\n      if (data.poster) {\n        html += '<img src=\"' + data.poster + '\" width=\"' + data.width + '\" height=\"' + data.height + '\" />';\n      }\n      html += '</object>';\n      return html;\n    };\n    var getAudioHtml = function (data, audioTemplateCallback) {\n      if (audioTemplateCallback) {\n        return audioTemplateCallback(data);\n      } else {\n        return '<audio controls=\"controls\" src=\"' + data.source1 + '\">' + (data.source2 ? '\\n<source src=\"' + data.source2 + '\"' + (data.source2mime ? ' type=\"' + data.source2mime + '\"' : '') + ' />\\n' : '') + '</audio>';\n      }\n    };\n    var getVideoHtml = function (data, videoTemplateCallback) {\n      if (videoTemplateCallback) {\n        return videoTemplateCallback(data);\n      } else {\n        return '<video width=\"' + data.width + '\" height=\"' + data.height + '\"' + (data.poster ? ' poster=\"' + data.poster + '\"' : '') + ' controls=\"controls\">\\n' + '<source src=\"' + data.source1 + '\"' + (data.source1mime ? ' type=\"' + data.source1mime + '\"' : '') + ' />\\n' + (data.source2 ? '<source src=\"' + data.source2 + '\"' + (data.source2mime ? ' type=\"' + data.source2mime + '\"' : '') + ' />\\n' : '') + '</video>';\n      }\n    };\n    var getScriptHtml = function (data) {\n      return '<script src=\"' + data.source1 + '\"></script>';\n    };\n    var dataToHtml = function (editor, dataIn) {\n      var data = global$2.extend({}, dataIn);\n      if (!data.source1) {\n        global$2.extend(data, HtmlToData.htmlToData(Settings.getScripts(editor), data.embed));\n        if (!data.source1) {\n          return '';\n        }\n      }\n      if (!data.source2) {\n        data.source2 = '';\n      }\n      if (!data.poster) {\n        data.poster = '';\n      }\n      data.source1 = editor.convertURL(data.source1, 'source');\n      data.source2 = editor.convertURL(data.source2, 'source');\n      data.source1mime = Mime.guess(data.source1);\n      data.source2mime = Mime.guess(data.source2);\n      data.poster = editor.convertURL(data.poster, 'poster');\n      var pattern = matchPattern(data.source1);\n      if (pattern) {\n        data.source1 = pattern.url;\n        data.type = pattern.type;\n        data.allowFullscreen = pattern.allowFullscreen;\n        data.width = data.width || pattern.w;\n        data.height = data.height || pattern.h;\n      }\n      if (data.embed) {\n        return UpdateHtml.updateHtml(data.embed, data, true);\n      } else {\n        var videoScript = VideoScript.getVideoScriptMatch(Settings.getScripts(editor), data.source1);\n        if (videoScript) {\n          data.type = 'script';\n          data.width = videoScript.width;\n          data.height = videoScript.height;\n        }\n        var audioTemplateCallback = Settings.getAudioTemplateCallback(editor);\n        var videoTemplateCallback = Settings.getVideoTemplateCallback(editor);\n        data.width = data.width || 300;\n        data.height = data.height || 150;\n        global$2.each(data, function (value, key) {\n          data[key] = editor.dom.encode(value);\n        });\n        if (data.type === 'iframe') {\n          return getIframeHtml(data);\n        } else if (data.source1mime === 'application/x-shockwave-flash') {\n          return getFlashHtml(data);\n        } else if (data.source1mime.indexOf('audio') !== -1) {\n          return getAudioHtml(data, audioTemplateCallback);\n        } else if (data.type === 'script') {\n          return getScriptHtml(data);\n        } else {\n          return getVideoHtml(data, videoTemplateCallback);\n        }\n      }\n    };\n    var DataToHtml = { dataToHtml: dataToHtml };\n\n    var cache = {};\n    var embedPromise = function (data, dataToHtml, handler) {\n      return new global$5(function (res, rej) {\n        var wrappedResolve = function (response) {\n          if (response.html) {\n            cache[data.source1] = response;\n          }\n          return res({\n            url: data.source1,\n            html: response.html ? response.html : dataToHtml(data)\n          });\n        };\n        if (cache[data.source1]) {\n          wrappedResolve(cache[data.source1]);\n        } else {\n          handler({ url: data.source1 }, wrappedResolve, rej);\n        }\n      });\n    };\n    var defaultPromise = function (data, dataToHtml) {\n      return new global$5(function (res) {\n        res({\n          html: dataToHtml(data),\n          url: data.source1\n        });\n      });\n    };\n    var loadedData = function (editor) {\n      return function (data) {\n        return DataToHtml.dataToHtml(editor, data);\n      };\n    };\n    var getEmbedHtml = function (editor, data) {\n      var embedHandler = Settings.getUrlResolver(editor);\n      return embedHandler ? embedPromise(data, loadedData(editor), embedHandler) : defaultPromise(data, loadedData(editor));\n    };\n    var isCached = function (url) {\n      return cache.hasOwnProperty(url);\n    };\n    var Service = {\n      getEmbedHtml: getEmbedHtml,\n      isCached: isCached\n    };\n\n    var doSyncSize = function (widthCtrl, heightCtrl) {\n      widthCtrl.state.set('oldVal', widthCtrl.value());\n      heightCtrl.state.set('oldVal', heightCtrl.value());\n    };\n    var doSizeControls = function (win, f) {\n      var widthCtrl = win.find('#width')[0];\n      var heightCtrl = win.find('#height')[0];\n      var constrained = win.find('#constrain')[0];\n      if (widthCtrl && heightCtrl && constrained) {\n        f(widthCtrl, heightCtrl, constrained.checked());\n      }\n    };\n    var doUpdateSize = function (widthCtrl, heightCtrl, isContrained) {\n      var oldWidth = widthCtrl.state.get('oldVal');\n      var oldHeight = heightCtrl.state.get('oldVal');\n      var newWidth = widthCtrl.value();\n      var newHeight = heightCtrl.value();\n      if (isContrained && oldWidth && oldHeight && newWidth && newHeight) {\n        if (newWidth !== oldWidth) {\n          newHeight = Math.round(newWidth / oldWidth * newHeight);\n          if (!isNaN(newHeight)) {\n            heightCtrl.value(newHeight);\n          }\n        } else {\n          newWidth = Math.round(newHeight / oldHeight * newWidth);\n          if (!isNaN(newWidth)) {\n            widthCtrl.value(newWidth);\n          }\n        }\n      }\n      doSyncSize(widthCtrl, heightCtrl);\n    };\n    var syncSize = function (win) {\n      doSizeControls(win, doSyncSize);\n    };\n    var updateSize = function (win) {\n      doSizeControls(win, doUpdateSize);\n    };\n    var createUi = function (onChange) {\n      var recalcSize = function () {\n        onChange(function (win) {\n          updateSize(win);\n        });\n      };\n      return {\n        type: 'container',\n        label: 'Dimensions',\n        layout: 'flex',\n        align: 'center',\n        spacing: 5,\n        items: [\n          {\n            name: 'width',\n            type: 'textbox',\n            maxLength: 5,\n            size: 5,\n            onchange: recalcSize,\n            ariaLabel: 'Width'\n          },\n          {\n            type: 'label',\n            text: 'x'\n          },\n          {\n            name: 'height',\n            type: 'textbox',\n            maxLength: 5,\n            size: 5,\n            onchange: recalcSize,\n            ariaLabel: 'Height'\n          },\n          {\n            name: 'constrain',\n            type: 'checkbox',\n            checked: true,\n            text: 'Constrain proportions'\n          }\n        ]\n      };\n    };\n    var SizeManager = {\n      createUi: createUi,\n      syncSize: syncSize,\n      updateSize: updateSize\n    };\n\n    var embedChange = global$1.ie && global$1.ie <= 8 ? 'onChange' : 'onInput';\n    var handleError = function (editor) {\n      return function (error) {\n        var errorMessage = error && error.msg ? 'Media embed handler error: ' + error.msg : 'Media embed handler threw unknown error.';\n        editor.notificationManager.open({\n          type: 'error',\n          text: errorMessage\n        });\n      };\n    };\n    var getData = function (editor) {\n      var element = editor.selection.getNode();\n      var dataEmbed = element.getAttribute('data-ephox-embed-iri');\n      if (dataEmbed) {\n        return {\n          'source1': dataEmbed,\n          'data-ephox-embed-iri': dataEmbed,\n          'width': Size.getMaxWidth(element),\n          'height': Size.getMaxHeight(element)\n        };\n      }\n      return element.getAttribute('data-mce-object') ? HtmlToData.htmlToData(Settings.getScripts(editor), editor.serializer.serialize(element, { selection: true })) : {};\n    };\n    var getSource = function (editor) {\n      var elm = editor.selection.getNode();\n      if (elm.getAttribute('data-mce-object') || elm.getAttribute('data-ephox-embed-iri')) {\n        return editor.selection.getContent();\n      }\n    };\n    var addEmbedHtml = function (win, editor) {\n      return function (response) {\n        var html = response.html;\n        var embed = win.find('#embed')[0];\n        var data = global$2.extend(HtmlToData.htmlToData(Settings.getScripts(editor), html), { source1: response.url });\n        win.fromJSON(data);\n        if (embed) {\n          embed.value(html);\n          SizeManager.updateSize(win);\n        }\n      };\n    };\n    var selectPlaceholder = function (editor, beforeObjects) {\n      var i;\n      var y;\n      var afterObjects = editor.dom.select('img[data-mce-object]');\n      for (i = 0; i < beforeObjects.length; i++) {\n        for (y = afterObjects.length - 1; y >= 0; y--) {\n          if (beforeObjects[i] === afterObjects[y]) {\n            afterObjects.splice(y, 1);\n          }\n        }\n      }\n      editor.selection.select(afterObjects[0]);\n    };\n    var handleInsert = function (editor, html) {\n      var beforeObjects = editor.dom.select('img[data-mce-object]');\n      editor.insertContent(html);\n      selectPlaceholder(editor, beforeObjects);\n      editor.nodeChanged();\n    };\n    var submitForm = function (win, editor) {\n      var data = win.toJSON();\n      data.embed = UpdateHtml.updateHtml(data.embed, data);\n      if (data.embed && Service.isCached(data.source1)) {\n        handleInsert(editor, data.embed);\n      } else {\n        Service.getEmbedHtml(editor, data).then(function (response) {\n          handleInsert(editor, response.html);\n        }).catch(handleError(editor));\n      }\n    };\n    var populateMeta = function (win, meta) {\n      global$2.each(meta, function (value, key) {\n        win.find('#' + key).value(value);\n      });\n    };\n    var showDialog = function (editor) {\n      var win;\n      var data;\n      var generalFormItems = [{\n          name: 'source1',\n          type: 'filepicker',\n          filetype: 'media',\n          size: 40,\n          autofocus: true,\n          label: 'Source',\n          onpaste: function () {\n            setTimeout(function () {\n              Service.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));\n            }, 1);\n          },\n          onchange: function (e) {\n            Service.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));\n            populateMeta(win, e.meta);\n          },\n          onbeforecall: function (e) {\n            e.meta = win.toJSON();\n          }\n        }];\n      var advancedFormItems = [];\n      var reserialise = function (update) {\n        update(win);\n        data = win.toJSON();\n        win.find('#embed').value(UpdateHtml.updateHtml(data.embed, data));\n      };\n      if (Settings.hasAltSource(editor)) {\n        advancedFormItems.push({\n          name: 'source2',\n          type: 'filepicker',\n          filetype: 'media',\n          size: 40,\n          label: 'Alternative source'\n        });\n      }\n      if (Settings.hasPoster(editor)) {\n        advancedFormItems.push({\n          name: 'poster',\n          type: 'filepicker',\n          filetype: 'image',\n          size: 40,\n          label: 'Poster'\n        });\n      }\n      if (Settings.hasDimensions(editor)) {\n        var control = SizeManager.createUi(reserialise);\n        generalFormItems.push(control);\n      }\n      data = getData(editor);\n      var embedTextBox = {\n        id: 'mcemediasource',\n        type: 'textbox',\n        flex: 1,\n        name: 'embed',\n        value: getSource(editor),\n        multiline: true,\n        rows: 5,\n        label: 'Source'\n      };\n      var updateValueOnChange = function () {\n        data = global$2.extend({}, HtmlToData.htmlToData(Settings.getScripts(editor), this.value()));\n        this.parent().parent().fromJSON(data);\n      };\n      embedTextBox[embedChange] = updateValueOnChange;\n      var body = [\n        {\n          title: 'General',\n          type: 'form',\n          items: generalFormItems\n        },\n        {\n          title: 'Embed',\n          type: 'container',\n          layout: 'flex',\n          direction: 'column',\n          align: 'stretch',\n          padding: 10,\n          spacing: 10,\n          items: [\n            {\n              type: 'label',\n              text: 'Paste your embed code below:',\n              forId: 'mcemediasource'\n            },\n            embedTextBox\n          ]\n        }\n      ];\n      if (advancedFormItems.length > 0) {\n        body.push({\n          title: 'Advanced',\n          type: 'form',\n          items: advancedFormItems\n        });\n      }\n      win = editor.windowManager.open({\n        title: 'Insert/edit media',\n        data: data,\n        bodyType: 'tabpanel',\n        body: body,\n        onSubmit: function () {\n          SizeManager.updateSize(win);\n          submitForm(win, editor);\n        }\n      });\n      SizeManager.syncSize(win);\n    };\n    var Dialog = { showDialog: showDialog };\n\n    var get = function (editor) {\n      var showDialog = function () {\n        Dialog.showDialog(editor);\n      };\n      return { showDialog: showDialog };\n    };\n    var Api = { get: get };\n\n    var register = function (editor) {\n      var showDialog = function () {\n        Dialog.showDialog(editor);\n      };\n      editor.addCommand('mceMedia', showDialog);\n    };\n    var Commands = { register: register };\n\n    var global$8 = tinymce.util.Tools.resolve('tinymce.html.Node');\n\n    var sanitize = function (editor, html) {\n      if (Settings.shouldFilterHtml(editor) === false) {\n        return html;\n      }\n      var writer = global$6();\n      var blocked;\n      global$3({\n        validate: false,\n        allow_conditional_comments: false,\n        special: 'script,noscript',\n        comment: function (text) {\n          writer.comment(text);\n        },\n        cdata: function (text) {\n          writer.cdata(text);\n        },\n        text: function (text, raw) {\n          writer.text(text, raw);\n        },\n        start: function (name, attrs, empty) {\n          blocked = true;\n          if (name === 'script' || name === 'noscript') {\n            return;\n          }\n          for (var i = 0; i < attrs.length; i++) {\n            if (attrs[i].name.indexOf('on') === 0) {\n              return;\n            }\n            if (attrs[i].name === 'style') {\n              attrs[i].value = editor.dom.serializeStyle(editor.dom.parseStyle(attrs[i].value), name);\n            }\n          }\n          writer.start(name, attrs, empty);\n          blocked = false;\n        },\n        end: function (name) {\n          if (blocked) {\n            return;\n          }\n          writer.end(name);\n        }\n      }, global$7({})).parse(html);\n      return writer.getContent();\n    };\n    var Sanitize = { sanitize: sanitize };\n\n    var createPlaceholderNode = function (editor, node) {\n      var placeHolder;\n      var name = node.name;\n      placeHolder = new global$8('img', 1);\n      placeHolder.shortEnded = true;\n      retainAttributesAndInnerHtml(editor, node, placeHolder);\n      placeHolder.attr({\n        'width': node.attr('width') || '300',\n        'height': node.attr('height') || (name === 'audio' ? '30' : '150'),\n        'style': node.attr('style'),\n        'src': global$1.transparentSrc,\n        'data-mce-object': name,\n        'class': 'mce-object mce-object-' + name\n      });\n      return placeHolder;\n    };\n    var createPreviewIframeNode = function (editor, node) {\n      var previewWrapper;\n      var previewNode;\n      var shimNode;\n      var name = node.name;\n      previewWrapper = new global$8('span', 1);\n      previewWrapper.attr({\n        'contentEditable': 'false',\n        'style': node.attr('style'),\n        'data-mce-object': name,\n        'class': 'mce-preview-object mce-object-' + name\n      });\n      retainAttributesAndInnerHtml(editor, node, previewWrapper);\n      previewNode = new global$8(name, 1);\n      previewNode.attr({\n        src: node.attr('src'),\n        allowfullscreen: node.attr('allowfullscreen'),\n        style: node.attr('style'),\n        class: node.attr('class'),\n        width: node.attr('width'),\n        height: node.attr('height'),\n        frameborder: '0'\n      });\n      shimNode = new global$8('span', 1);\n      shimNode.attr('class', 'mce-shim');\n      previewWrapper.append(previewNode);\n      previewWrapper.append(shimNode);\n      return previewWrapper;\n    };\n    var retainAttributesAndInnerHtml = function (editor, sourceNode, targetNode) {\n      var attrName;\n      var attrValue;\n      var attribs;\n      var ai;\n      var innerHtml;\n      attribs = sourceNode.attributes;\n      ai = attribs.length;\n      while (ai--) {\n        attrName = attribs[ai].name;\n        attrValue = attribs[ai].value;\n        if (attrName !== 'width' && attrName !== 'height' && attrName !== 'style') {\n          if (attrName === 'data' || attrName === 'src') {\n            attrValue = editor.convertURL(attrValue, attrName);\n          }\n          targetNode.attr('data-mce-p-' + attrName, attrValue);\n        }\n      }\n      innerHtml = sourceNode.firstChild && sourceNode.firstChild.value;\n      if (innerHtml) {\n        targetNode.attr('data-mce-html', escape(Sanitize.sanitize(editor, innerHtml)));\n        targetNode.firstChild = null;\n      }\n    };\n    var isWithinEphoxEmbed = function (node) {\n      while (node = node.parent) {\n        if (node.attr('data-ephox-embed-iri')) {\n          return true;\n        }\n      }\n      return false;\n    };\n    var placeHolderConverter = function (editor) {\n      return function (nodes) {\n        var i = nodes.length;\n        var node;\n        var videoScript;\n        while (i--) {\n          node = nodes[i];\n          if (!node.parent) {\n            continue;\n          }\n          if (node.parent.attr('data-mce-object')) {\n            continue;\n          }\n          if (node.name === 'script') {\n            videoScript = VideoScript.getVideoScriptMatch(Settings.getScripts(editor), node.attr('src'));\n            if (!videoScript) {\n              continue;\n            }\n          }\n          if (videoScript) {\n            if (videoScript.width) {\n              node.attr('width', videoScript.width.toString());\n            }\n            if (videoScript.height) {\n              node.attr('height', videoScript.height.toString());\n            }\n          }\n          if (node.name === 'iframe' && Settings.hasLiveEmbeds(editor) && global$1.ceFalse) {\n            if (!isWithinEphoxEmbed(node)) {\n              node.replace(createPreviewIframeNode(editor, node));\n            }\n          } else {\n            if (!isWithinEphoxEmbed(node)) {\n              node.replace(createPlaceholderNode(editor, node));\n            }\n          }\n        }\n      };\n    };\n    var Nodes = {\n      createPreviewIframeNode: createPreviewIframeNode,\n      createPlaceholderNode: createPlaceholderNode,\n      placeHolderConverter: placeHolderConverter\n    };\n\n    var setup = function (editor) {\n      editor.on('preInit', function () {\n        var specialElements = editor.schema.getSpecialElements();\n        global$2.each('video audio iframe object'.split(' '), function (name) {\n          specialElements[name] = new RegExp('</' + name + '[^>]*>', 'gi');\n        });\n        var boolAttrs = editor.schema.getBoolAttrs();\n        global$2.each('webkitallowfullscreen mozallowfullscreen allowfullscreen'.split(' '), function (name) {\n          boolAttrs[name] = {};\n        });\n        editor.parser.addNodeFilter('iframe,video,audio,object,embed,script', Nodes.placeHolderConverter(editor));\n        editor.serializer.addAttributeFilter('data-mce-object', function (nodes, name) {\n          var i = nodes.length;\n          var node;\n          var realElm;\n          var ai;\n          var attribs;\n          var innerHtml;\n          var innerNode;\n          var realElmName;\n          var className;\n          while (i--) {\n            node = nodes[i];\n            if (!node.parent) {\n              continue;\n            }\n            realElmName = node.attr(name);\n            realElm = new global$8(realElmName, 1);\n            if (realElmName !== 'audio' && realElmName !== 'script') {\n              className = node.attr('class');\n              if (className && className.indexOf('mce-preview-object') !== -1) {\n                realElm.attr({\n                  width: node.firstChild.attr('width'),\n                  height: node.firstChild.attr('height')\n                });\n              } else {\n                realElm.attr({\n                  width: node.attr('width'),\n                  height: node.attr('height')\n                });\n              }\n            }\n            realElm.attr({ style: node.attr('style') });\n            attribs = node.attributes;\n            ai = attribs.length;\n            while (ai--) {\n              var attrName = attribs[ai].name;\n              if (attrName.indexOf('data-mce-p-') === 0) {\n                realElm.attr(attrName.substr(11), attribs[ai].value);\n              }\n            }\n            if (realElmName === 'script') {\n              realElm.attr('type', 'text/javascript');\n            }\n            innerHtml = node.attr('data-mce-html');\n            if (innerHtml) {\n              innerNode = new global$8('#text', 3);\n              innerNode.raw = true;\n              innerNode.value = Sanitize.sanitize(editor, unescape(innerHtml));\n              realElm.append(innerNode);\n            }\n            node.replace(realElm);\n          }\n        });\n      });\n      editor.on('setContent', function () {\n        editor.$('span.mce-preview-object').each(function (index, elm) {\n          var $elm = editor.$(elm);\n          if ($elm.find('span.mce-shim', elm).length === 0) {\n            $elm.append('<span class=\"mce-shim\"></span>');\n          }\n        });\n      });\n    };\n    var FilterContent = { setup: setup };\n\n    var setup$1 = function (editor) {\n      editor.on('ResolveName', function (e) {\n        var name;\n        if (e.target.nodeType === 1 && (name = e.target.getAttribute('data-mce-object'))) {\n          e.name = name;\n        }\n      });\n    };\n    var ResolveName = { setup: setup$1 };\n\n    var setup$2 = function (editor) {\n      editor.on('click keyup', function () {\n        var selectedNode = editor.selection.getNode();\n        if (selectedNode && editor.dom.hasClass(selectedNode, 'mce-preview-object')) {\n          if (editor.dom.getAttrib(selectedNode, 'data-mce-selected')) {\n            selectedNode.setAttribute('data-mce-selected', '2');\n          }\n        }\n      });\n      editor.on('ObjectSelected', function (e) {\n        var objectType = e.target.getAttribute('data-mce-object');\n        if (objectType === 'audio' || objectType === 'script') {\n          e.preventDefault();\n        }\n      });\n      editor.on('objectResized', function (e) {\n        var target = e.target;\n        var html;\n        if (target.getAttribute('data-mce-object')) {\n          html = target.getAttribute('data-mce-html');\n          if (html) {\n            html = unescape(html);\n            target.setAttribute('data-mce-html', escape(UpdateHtml.updateHtml(html, {\n              width: e.width,\n              height: e.height\n            })));\n          }\n        }\n      });\n    };\n    var Selection = { setup: setup$2 };\n\n    var register$1 = function (editor) {\n      editor.addButton('media', {\n        tooltip: 'Insert/edit media',\n        cmd: 'mceMedia',\n        stateSelector: [\n          'img[data-mce-object]',\n          'span[data-mce-object]',\n          'div[data-ephox-embed-iri]'\n        ]\n      });\n      editor.addMenuItem('media', {\n        icon: 'media',\n        text: 'Media',\n        cmd: 'mceMedia',\n        context: 'insert',\n        prependToContext: true\n      });\n    };\n    var Buttons = { register: register$1 };\n\n    global.add('media', function (editor) {\n      Commands.register(editor);\n      Buttons.register(editor);\n      ResolveName.setup(editor);\n      FilterContent.setup(editor);\n      Selection.setup(editor);\n      return Api.get(editor);\n    });\n    function Plugin () {\n    }\n\n    return Plugin;\n\n}());\n})();\n\n}.call(window));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tinymce/plugins/media/plugin.js\n// module id = jUW6NcSBGv\n// module chunks = 2 3 28 35 44 54 73 85 102","/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n(function () {\nvar link = (function () {\n    'use strict';\n\n    var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n    var assumeExternalTargets = function (editorSettings) {\n      return typeof editorSettings.link_assume_external_targets === 'boolean' ? editorSettings.link_assume_external_targets : false;\n    };\n    var hasContextToolbar = function (editorSettings) {\n      return typeof editorSettings.link_context_toolbar === 'boolean' ? editorSettings.link_context_toolbar : false;\n    };\n    var getLinkList = function (editorSettings) {\n      return editorSettings.link_list;\n    };\n    var hasDefaultLinkTarget = function (editorSettings) {\n      return typeof editorSettings.default_link_target === 'string';\n    };\n    var getDefaultLinkTarget = function (editorSettings) {\n      return editorSettings.default_link_target;\n    };\n    var getTargetList = function (editorSettings) {\n      return editorSettings.target_list;\n    };\n    var setTargetList = function (editor, list) {\n      editor.settings.target_list = list;\n    };\n    var shouldShowTargetList = function (editorSettings) {\n      return getTargetList(editorSettings) !== false;\n    };\n    var getRelList = function (editorSettings) {\n      return editorSettings.rel_list;\n    };\n    var hasRelList = function (editorSettings) {\n      return getRelList(editorSettings) !== undefined;\n    };\n    var getLinkClassList = function (editorSettings) {\n      return editorSettings.link_class_list;\n    };\n    var hasLinkClassList = function (editorSettings) {\n      return getLinkClassList(editorSettings) !== undefined;\n    };\n    var shouldShowLinkTitle = function (editorSettings) {\n      return editorSettings.link_title !== false;\n    };\n    var allowUnsafeLinkTarget = function (editorSettings) {\n      return typeof editorSettings.allow_unsafe_link_target === 'boolean' ? editorSettings.allow_unsafe_link_target : false;\n    };\n    var Settings = {\n      assumeExternalTargets: assumeExternalTargets,\n      hasContextToolbar: hasContextToolbar,\n      getLinkList: getLinkList,\n      hasDefaultLinkTarget: hasDefaultLinkTarget,\n      getDefaultLinkTarget: getDefaultLinkTarget,\n      getTargetList: getTargetList,\n      setTargetList: setTargetList,\n      shouldShowTargetList: shouldShowTargetList,\n      getRelList: getRelList,\n      hasRelList: hasRelList,\n      getLinkClassList: getLinkClassList,\n      hasLinkClassList: hasLinkClassList,\n      shouldShowLinkTitle: shouldShowLinkTitle,\n      allowUnsafeLinkTarget: allowUnsafeLinkTarget\n    };\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.Env');\n\n    var appendClickRemove = function (link, evt) {\n      document.body.appendChild(link);\n      link.dispatchEvent(evt);\n      document.body.removeChild(link);\n    };\n    var open$$1 = function (url) {\n      if (!global$3.ie || global$3.ie > 10) {\n        var link = document.createElement('a');\n        link.target = '_blank';\n        link.href = url;\n        link.rel = 'noreferrer noopener';\n        var evt = document.createEvent('MouseEvents');\n        evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n        appendClickRemove(link, evt);\n      } else {\n        var win = window.open('', '_blank');\n        if (win) {\n          win.opener = null;\n          var doc = win.document;\n          doc.open();\n          doc.write('<meta http-equiv=\"refresh\" content=\"0; url=' + global$2.DOM.encode(url) + '\">');\n          doc.close();\n        }\n      }\n    };\n    var OpenUrl = { open: open$$1 };\n\n    var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    var toggleTargetRules = function (rel, isUnsafe) {\n      var rules = ['noopener'];\n      var newRel = rel ? rel.split(/\\s+/) : [];\n      var toString = function (rel) {\n        return global$4.trim(rel.sort().join(' '));\n      };\n      var addTargetRules = function (rel) {\n        rel = removeTargetRules(rel);\n        return rel.length ? rel.concat(rules) : rules;\n      };\n      var removeTargetRules = function (rel) {\n        return rel.filter(function (val) {\n          return global$4.inArray(rules, val) === -1;\n        });\n      };\n      newRel = isUnsafe ? addTargetRules(newRel) : removeTargetRules(newRel);\n      return newRel.length ? toString(newRel) : null;\n    };\n    var trimCaretContainers = function (text) {\n      return text.replace(/\\uFEFF/g, '');\n    };\n    var getAnchorElement = function (editor, selectedElm) {\n      selectedElm = selectedElm || editor.selection.getNode();\n      if (isImageFigure(selectedElm)) {\n        return editor.dom.select('a[href]', selectedElm)[0];\n      } else {\n        return editor.dom.getParent(selectedElm, 'a[href]');\n      }\n    };\n    var getAnchorText = function (selection, anchorElm) {\n      var text = anchorElm ? anchorElm.innerText || anchorElm.textContent : selection.getContent({ format: 'text' });\n      return trimCaretContainers(text);\n    };\n    var isLink = function (elm) {\n      return elm && elm.nodeName === 'A' && elm.href;\n    };\n    var hasLinks = function (elements) {\n      return global$4.grep(elements, isLink).length > 0;\n    };\n    var isOnlyTextSelected = function (html) {\n      if (/</.test(html) && (!/^<a [^>]+>[^<]+<\\/a>$/.test(html) || html.indexOf('href=') === -1)) {\n        return false;\n      }\n      return true;\n    };\n    var isImageFigure = function (node) {\n      return node && node.nodeName === 'FIGURE' && /\\bimage\\b/i.test(node.className);\n    };\n    var link = function (editor, attachState) {\n      return function (data) {\n        editor.undoManager.transact(function () {\n          var selectedElm = editor.selection.getNode();\n          var anchorElm = getAnchorElement(editor, selectedElm);\n          var linkAttrs = {\n            href: data.href,\n            target: data.target ? data.target : null,\n            rel: data.rel ? data.rel : null,\n            class: data.class ? data.class : null,\n            title: data.title ? data.title : null\n          };\n          if (!Settings.hasRelList(editor.settings) && Settings.allowUnsafeLinkTarget(editor.settings) === false) {\n            linkAttrs.rel = toggleTargetRules(linkAttrs.rel, linkAttrs.target === '_blank');\n          }\n          if (data.href === attachState.href) {\n            attachState.attach();\n            attachState = {};\n          }\n          if (anchorElm) {\n            editor.focus();\n            if (data.hasOwnProperty('text')) {\n              if ('innerText' in anchorElm) {\n                anchorElm.innerText = data.text;\n              } else {\n                anchorElm.textContent = data.text;\n              }\n            }\n            editor.dom.setAttribs(anchorElm, linkAttrs);\n            editor.selection.select(anchorElm);\n            editor.undoManager.add();\n          } else {\n            if (isImageFigure(selectedElm)) {\n              linkImageFigure(editor, selectedElm, linkAttrs);\n            } else if (data.hasOwnProperty('text')) {\n              editor.insertContent(editor.dom.createHTML('a', linkAttrs, editor.dom.encode(data.text)));\n            } else {\n              editor.execCommand('mceInsertLink', false, linkAttrs);\n            }\n          }\n        });\n      };\n    };\n    var unlink = function (editor) {\n      return function () {\n        editor.undoManager.transact(function () {\n          var node = editor.selection.getNode();\n          if (isImageFigure(node)) {\n            unlinkImageFigure(editor, node);\n          } else {\n            editor.execCommand('unlink');\n          }\n        });\n      };\n    };\n    var unlinkImageFigure = function (editor, fig) {\n      var a, img;\n      img = editor.dom.select('img', fig)[0];\n      if (img) {\n        a = editor.dom.getParents(img, 'a[href]', fig)[0];\n        if (a) {\n          a.parentNode.insertBefore(img, a);\n          editor.dom.remove(a);\n        }\n      }\n    };\n    var linkImageFigure = function (editor, fig, attrs) {\n      var a, img;\n      img = editor.dom.select('img', fig)[0];\n      if (img) {\n        a = editor.dom.create('a', attrs);\n        img.parentNode.insertBefore(a, img);\n        a.appendChild(img);\n      }\n    };\n    var Utils = {\n      link: link,\n      unlink: unlink,\n      isLink: isLink,\n      hasLinks: hasLinks,\n      isOnlyTextSelected: isOnlyTextSelected,\n      getAnchorElement: getAnchorElement,\n      getAnchorText: getAnchorText,\n      toggleTargetRules: toggleTargetRules\n    };\n\n    var global$5 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n    var global$6 = tinymce.util.Tools.resolve('tinymce.util.XHR');\n\n    var attachState = {};\n    var createLinkList = function (editor, callback) {\n      var linkList = Settings.getLinkList(editor.settings);\n      if (typeof linkList === 'string') {\n        global$6.send({\n          url: linkList,\n          success: function (text) {\n            callback(editor, JSON.parse(text));\n          }\n        });\n      } else if (typeof linkList === 'function') {\n        linkList(function (list) {\n          callback(editor, list);\n        });\n      } else {\n        callback(editor, linkList);\n      }\n    };\n    var buildListItems = function (inputList, itemCallback, startItems) {\n      var appendItems = function (values, output) {\n        output = output || [];\n        global$4.each(values, function (item) {\n          var menuItem = { text: item.text || item.title };\n          if (item.menu) {\n            menuItem.menu = appendItems(item.menu);\n          } else {\n            menuItem.value = item.value;\n            if (itemCallback) {\n              itemCallback(menuItem);\n            }\n          }\n          output.push(menuItem);\n        });\n        return output;\n      };\n      return appendItems(inputList, startItems || []);\n    };\n    var delayedConfirm = function (editor, message, callback) {\n      var rng = editor.selection.getRng();\n      global$5.setEditorTimeout(editor, function () {\n        editor.windowManager.confirm(message, function (state) {\n          editor.selection.setRng(rng);\n          callback(state);\n        });\n      });\n    };\n    var showDialog = function (editor, linkList) {\n      var data = {};\n      var selection = editor.selection;\n      var dom = editor.dom;\n      var anchorElm, initialText;\n      var win, onlyText, textListCtrl, linkListCtrl, relListCtrl, targetListCtrl, classListCtrl, linkTitleCtrl, value;\n      var linkListChangeHandler = function (e) {\n        var textCtrl = win.find('#text');\n        if (!textCtrl.value() || e.lastControl && textCtrl.value() === e.lastControl.text()) {\n          textCtrl.value(e.control.text());\n        }\n        win.find('#href').value(e.control.value());\n      };\n      var buildAnchorListControl = function (url) {\n        var anchorList = [];\n        global$4.each(editor.dom.select('a:not([href])'), function (anchor) {\n          var id = anchor.name || anchor.id;\n          if (id) {\n            anchorList.push({\n              text: id,\n              value: '#' + id,\n              selected: url.indexOf('#' + id) !== -1\n            });\n          }\n        });\n        if (anchorList.length) {\n          anchorList.unshift({\n            text: 'None',\n            value: ''\n          });\n          return {\n            name: 'anchor',\n            type: 'listbox',\n            label: 'Anchors',\n            values: anchorList,\n            onselect: linkListChangeHandler\n          };\n        }\n      };\n      var updateText = function () {\n        if (!initialText && onlyText && !data.text) {\n          this.parent().parent().find('#text')[0].value(this.value());\n        }\n      };\n      var urlChange = function (e) {\n        var meta = e.meta || {};\n        if (linkListCtrl) {\n          linkListCtrl.value(editor.convertURL(this.value(), 'href'));\n        }\n        global$4.each(e.meta, function (value, key) {\n          var inp = win.find('#' + key);\n          if (key === 'text') {\n            if (initialText.length === 0) {\n              inp.value(value);\n              data.text = value;\n            }\n          } else {\n            inp.value(value);\n          }\n        });\n        if (meta.attach) {\n          attachState = {\n            href: this.value(),\n            attach: meta.attach\n          };\n        }\n        if (!meta.text) {\n          updateText.call(this);\n        }\n      };\n      var onBeforeCall = function (e) {\n        e.meta = win.toJSON();\n      };\n      onlyText = Utils.isOnlyTextSelected(selection.getContent());\n      anchorElm = Utils.getAnchorElement(editor);\n      data.text = initialText = Utils.getAnchorText(editor.selection, anchorElm);\n      data.href = anchorElm ? dom.getAttrib(anchorElm, 'href') : '';\n      if (anchorElm) {\n        data.target = dom.getAttrib(anchorElm, 'target');\n      } else if (Settings.hasDefaultLinkTarget(editor.settings)) {\n        data.target = Settings.getDefaultLinkTarget(editor.settings);\n      }\n      if (value = dom.getAttrib(anchorElm, 'rel')) {\n        data.rel = value;\n      }\n      if (value = dom.getAttrib(anchorElm, 'class')) {\n        data.class = value;\n      }\n      if (value = dom.getAttrib(anchorElm, 'title')) {\n        data.title = value;\n      }\n      if (onlyText) {\n        textListCtrl = {\n          name: 'text',\n          type: 'textbox',\n          size: 40,\n          label: 'Text to display',\n          onchange: function () {\n            data.text = this.value();\n          }\n        };\n      }\n      if (linkList) {\n        linkListCtrl = {\n          type: 'listbox',\n          label: 'Link list',\n          values: buildListItems(linkList, function (item) {\n            item.value = editor.convertURL(item.value || item.url, 'href');\n          }, [{\n              text: 'None',\n              value: ''\n            }]),\n          onselect: linkListChangeHandler,\n          value: editor.convertURL(data.href, 'href'),\n          onPostRender: function () {\n            linkListCtrl = this;\n          }\n        };\n      }\n      if (Settings.shouldShowTargetList(editor.settings)) {\n        if (Settings.getTargetList(editor.settings) === undefined) {\n          Settings.setTargetList(editor, [\n            {\n              text: 'None',\n              value: ''\n            },\n            {\n              text: 'New window',\n              value: '_blank'\n            }\n          ]);\n        }\n        targetListCtrl = {\n          name: 'target',\n          type: 'listbox',\n          label: 'Target',\n          values: buildListItems(Settings.getTargetList(editor.settings))\n        };\n      }\n      if (Settings.hasRelList(editor.settings)) {\n        relListCtrl = {\n          name: 'rel',\n          type: 'listbox',\n          label: 'Rel',\n          values: buildListItems(Settings.getRelList(editor.settings), function (item) {\n            if (Settings.allowUnsafeLinkTarget(editor.settings) === false) {\n              item.value = Utils.toggleTargetRules(item.value, data.target === '_blank');\n            }\n          })\n        };\n      }\n      if (Settings.hasLinkClassList(editor.settings)) {\n        classListCtrl = {\n          name: 'class',\n          type: 'listbox',\n          label: 'Class',\n          values: buildListItems(Settings.getLinkClassList(editor.settings), function (item) {\n            if (item.value) {\n              item.textStyle = function () {\n                return editor.formatter.getCssText({\n                  inline: 'a',\n                  classes: [item.value]\n                });\n              };\n            }\n          })\n        };\n      }\n      if (Settings.shouldShowLinkTitle(editor.settings)) {\n        linkTitleCtrl = {\n          name: 'title',\n          type: 'textbox',\n          label: 'Title',\n          value: data.title\n        };\n      }\n      win = editor.windowManager.open({\n        title: 'Insert link',\n        data: data,\n        body: [\n          {\n            name: 'href',\n            type: 'filepicker',\n            filetype: 'file',\n            size: 40,\n            autofocus: true,\n            label: 'Url',\n            onchange: urlChange,\n            onkeyup: updateText,\n            onpaste: updateText,\n            onbeforecall: onBeforeCall\n          },\n          textListCtrl,\n          linkTitleCtrl,\n          buildAnchorListControl(data.href),\n          linkListCtrl,\n          relListCtrl,\n          targetListCtrl,\n          classListCtrl\n        ],\n        onSubmit: function (e) {\n          var assumeExternalTargets = Settings.assumeExternalTargets(editor.settings);\n          var insertLink = Utils.link(editor, attachState);\n          var removeLink = Utils.unlink(editor);\n          var resultData = global$4.extend({}, data, e.data);\n          var href = resultData.href;\n          if (!href) {\n            removeLink();\n            return;\n          }\n          if (!onlyText || resultData.text === initialText) {\n            delete resultData.text;\n          }\n          if (href.indexOf('@') > 0 && href.indexOf('//') === -1 && href.indexOf('mailto:') === -1) {\n            delayedConfirm(editor, 'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?', function (state) {\n              if (state) {\n                resultData.href = 'mailto:' + href;\n              }\n              insertLink(resultData);\n            });\n            return;\n          }\n          if (assumeExternalTargets === true && !/^\\w+:/i.test(href) || assumeExternalTargets === false && /^\\s*www[\\.|\\d\\.]/i.test(href)) {\n            delayedConfirm(editor, 'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', function (state) {\n              if (state) {\n                resultData.href = 'http://' + href;\n              }\n              insertLink(resultData);\n            });\n            return;\n          }\n          insertLink(resultData);\n        }\n      });\n    };\n    var open$1 = function (editor) {\n      createLinkList(editor, showDialog);\n    };\n    var Dialog = { open: open$1 };\n\n    var getLink = function (editor, elm) {\n      return editor.dom.getParent(elm, 'a[href]');\n    };\n    var getSelectedLink = function (editor) {\n      return getLink(editor, editor.selection.getStart());\n    };\n    var getHref = function (elm) {\n      var href = elm.getAttribute('data-mce-href');\n      return href ? href : elm.getAttribute('href');\n    };\n    var isContextMenuVisible = function (editor) {\n      var contextmenu = editor.plugins.contextmenu;\n      return contextmenu ? contextmenu.isContextMenuVisible() : false;\n    };\n    var hasOnlyAltModifier = function (e) {\n      return e.altKey === true && e.shiftKey === false && e.ctrlKey === false && e.metaKey === false;\n    };\n    var gotoLink = function (editor, a) {\n      if (a) {\n        var href = getHref(a);\n        if (/^#/.test(href)) {\n          var targetEl = editor.$(href);\n          if (targetEl.length) {\n            editor.selection.scrollIntoView(targetEl[0], true);\n          }\n        } else {\n          OpenUrl.open(a.href);\n        }\n      }\n    };\n    var openDialog = function (editor) {\n      return function () {\n        Dialog.open(editor);\n      };\n    };\n    var gotoSelectedLink = function (editor) {\n      return function () {\n        gotoLink(editor, getSelectedLink(editor));\n      };\n    };\n    var leftClickedOnAHref = function (editor) {\n      return function (elm) {\n        var sel, rng, node;\n        if (Settings.hasContextToolbar(editor.settings) && !isContextMenuVisible(editor) && Utils.isLink(elm)) {\n          sel = editor.selection;\n          rng = sel.getRng();\n          node = rng.startContainer;\n          if (node.nodeType === 3 && sel.isCollapsed() && rng.startOffset > 0 && rng.startOffset < node.data.length) {\n            return true;\n          }\n        }\n        return false;\n      };\n    };\n    var setupGotoLinks = function (editor) {\n      editor.on('click', function (e) {\n        var link = getLink(editor, e.target);\n        if (link && global$1.metaKeyPressed(e)) {\n          e.preventDefault();\n          gotoLink(editor, link);\n        }\n      });\n      editor.on('keydown', function (e) {\n        var link = getSelectedLink(editor);\n        if (link && e.keyCode === 13 && hasOnlyAltModifier(e)) {\n          e.preventDefault();\n          gotoLink(editor, link);\n        }\n      });\n    };\n    var toggleActiveState = function (editor) {\n      return function () {\n        var self = this;\n        editor.on('nodechange', function (e) {\n          self.active(!editor.readonly && !!Utils.getAnchorElement(editor, e.element));\n        });\n      };\n    };\n    var toggleViewLinkState = function (editor) {\n      return function () {\n        var self = this;\n        var toggleVisibility = function (e) {\n          if (Utils.hasLinks(e.parents)) {\n            self.show();\n          } else {\n            self.hide();\n          }\n        };\n        if (!Utils.hasLinks(editor.dom.getParents(editor.selection.getStart()))) {\n          self.hide();\n        }\n        editor.on('nodechange', toggleVisibility);\n        self.on('remove', function () {\n          editor.off('nodechange', toggleVisibility);\n        });\n      };\n    };\n    var Actions = {\n      openDialog: openDialog,\n      gotoSelectedLink: gotoSelectedLink,\n      leftClickedOnAHref: leftClickedOnAHref,\n      setupGotoLinks: setupGotoLinks,\n      toggleActiveState: toggleActiveState,\n      toggleViewLinkState: toggleViewLinkState\n    };\n\n    var register = function (editor) {\n      editor.addCommand('mceLink', Actions.openDialog(editor));\n    };\n    var Commands = { register: register };\n\n    var setup = function (editor) {\n      editor.addShortcut('Meta+K', '', Actions.openDialog(editor));\n    };\n    var Keyboard = { setup: setup };\n\n    var setupButtons = function (editor) {\n      editor.addButton('link', {\n        active: false,\n        icon: 'link',\n        tooltip: 'Insert/edit link',\n        onclick: Actions.openDialog(editor),\n        onpostrender: Actions.toggleActiveState(editor)\n      });\n      editor.addButton('unlink', {\n        active: false,\n        icon: 'unlink',\n        tooltip: 'Remove link',\n        onclick: Utils.unlink(editor),\n        onpostrender: Actions.toggleActiveState(editor)\n      });\n      if (editor.addContextToolbar) {\n        editor.addButton('openlink', {\n          icon: 'newtab',\n          tooltip: 'Open link',\n          onclick: Actions.gotoSelectedLink(editor)\n        });\n      }\n    };\n    var setupMenuItems = function (editor) {\n      editor.addMenuItem('openlink', {\n        text: 'Open link',\n        icon: 'newtab',\n        onclick: Actions.gotoSelectedLink(editor),\n        onPostRender: Actions.toggleViewLinkState(editor),\n        prependToContext: true\n      });\n      editor.addMenuItem('link', {\n        icon: 'link',\n        text: 'Link',\n        shortcut: 'Meta+K',\n        onclick: Actions.openDialog(editor),\n        stateSelector: 'a[href]',\n        context: 'insert',\n        prependToContext: true\n      });\n      editor.addMenuItem('unlink', {\n        icon: 'unlink',\n        text: 'Remove link',\n        onclick: Utils.unlink(editor),\n        stateSelector: 'a[href]'\n      });\n    };\n    var setupContextToolbars = function (editor) {\n      if (editor.addContextToolbar) {\n        editor.addContextToolbar(Actions.leftClickedOnAHref(editor), 'openlink | link unlink');\n      }\n    };\n    var Controls = {\n      setupButtons: setupButtons,\n      setupMenuItems: setupMenuItems,\n      setupContextToolbars: setupContextToolbars\n    };\n\n    global.add('link', function (editor) {\n      Controls.setupButtons(editor);\n      Controls.setupMenuItems(editor);\n      Controls.setupContextToolbars(editor);\n      Actions.setupGotoLinks(editor);\n      Commands.register(editor);\n      Keyboard.setup(editor);\n    });\n    function Plugin () {\n    }\n\n    return Plugin;\n\n}());\n})();\n\n}.call(window));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tinymce/plugins/link/plugin.js\n// module id = m/OWov42EY\n// module chunks = 2 3 28 35 44 54 73 85 102","/*\n * jQuery UI Popup @VERSION\n *\n * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Popup\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.widget.js\n *\tjquery.ui.position.js\n */\n// INSTRUCTURE modified\nimport $ from 'jquery'\nimport 'jqueryui/core'\nimport 'jqueryui/widget'\nimport 'jqueryui/position'\n\nvar idIncrement = 0,\n\tsuppressExpandOnFocus = false;\n\n$.widget( \"ui.popup\", {\n\tversion: \"@VERSION\",\n\toptions: {\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\"\n\t\t},\n\t\tmanaged: false,\n\t\texpandOnFocus: false,\n\t\tshow: {\n\t\t\teffect: \"slideDown\",\n\t\t\t//duration: \"fast\"\n\t\t\tduration: 0\n\t\t},\n\t\thide: {\n\t\t\teffect: \"fadeOut\",\n\t\t\t//duration: \"fast\"\n\t\t\tduration: 0\n\t\t}\n\t},\n\t_create: function() {\n\t\tif ( !this.options.trigger ) {\n\t\t\tthis.options.trigger = this.element.prev();\n\t\t}\n\n\t\tif ( !this.element.attr( \"id\" ) ) {\n\t\t\tthis.element.attr( \"id\", \"ui-popup-\" + idIncrement++ );\n\t\t\tthis.generatedId = true;\n\t\t}\n\n\t\tif ( !this.element.attr( \"role\" ) ) {\n\t\t\tif ( !this.options.managed  ) {\n\t\t\t\tthis.element.attr( \"role\", \"dialog\" );\n\t\t\t\tthis.generatedRole = true;\n\t\t\t}\n\t\t}\n\n\t\tthis.options.trigger\n\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t.attr( \"aria-owns\", this.element.attr( \"id\" ) );\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-popup\" );\n\t\tthis._beforeClose();\n\t\tthis.element.hide();\n\n    // INSTRUCTURE moved from switch below for use in click handler\n\t\tvar onMouseDown = function( event ) {\n\t\t\tvar noFocus = false;\n\t\t\t/* TODO: Determine in which cases focus should stay on the trigger after the popup opens\n\t\t\t(should apply for any trigger that has other interaction besides opening the popup, e.g. a text field) */\n\t\t\tif ( $( event.target ).is( \"input\" ) ) {\n\t\t\t\tnoFocus = true;\n\t\t\t}\n\t\t\tif (this.isOpen) {\n\t\t\t\tsuppressExpandOnFocus = true;\n\t\t\t\tthis.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.open( event );\n\t\t\tclearTimeout( this.closeTimer );\n\t\t\tthis._delay( function() {\n\t\t\t\tif ( !noFocus ) {\n\t\t\t\t\tthis.focusPopup();\n\t\t\t\t}\n\t\t\t}, 1 );\n\t\t};\n\t\tthis._on(this.options.trigger, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t\tcase $.ui.keyCode.TAB:\n\t\t\t\t\t\t// Waiting for close() will make popup hide too late, which breaks tab key behavior\n\t\t\t\t\t\tthis.element.hide();\n\t\t\t\t\t\tthis.close( event );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\t\t\t\tif ( this.isOpen ) {\n\t\t\t\t\t\t\tthis.close( event );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t// INSTRUCTURE changed SPACE to use DOWN/UP handler\n\t\t\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\t\t// prevent scrolling\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tclearTimeout( this.closeTimer );\n\t\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\t\tthis.open( event );\n\t\t\t\t\t\t\tthis.focusPopup( event );\n\t\t\t\t\t\t}, 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n      // INSTRUCTURE added\n\t\t\tmouseup: function( event ) {\n\t\t\t\tthis.mouseClickTimer = window.setTimeout(function() {\n\t\t\t\t\tdelete this.mouseClickTimer;\n\t\t\t\t}.bind(this), 0);\n\t\t\t},\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.preventDefault();\n\t\t\t\t// INSTRUCTURE added handler for keyboard-triggered clicks\n\t\t\t\tif ( !this.mouseClickTimer ) {\n\t\t\t\t\tonMouseDown.call( this, event );\n\t\t\t\t}\n\t\t\t},\n\t\t\tmousedown: onMouseDown\n\t\t});\n\n\t\tif ( this.options.expandOnFocus ) {\n\t\t\tthis._on( this.options.trigger, {\n\t\t\t\tfocus : function( event ) {\n\t\t\t\t\tif ( !suppressExpandOnFocus ) {\n\t\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\t\tif ( !this.isOpen ) {\n\t\t\t\t\t\t\t\tthis.open( event );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, 1);\n\t\t\t\t\t}\n\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\tsuppressExpandOnFocus = false;\n\t\t\t\t\t}, 100);\n\t\t\t\t},\n\t\t\t\tblur: function( event ) {\n\t\t\t\t\tsuppressExpandOnFocus = false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif ( !this.options.managed ) {\n\t\t\t//default use case, wrap tab order in popup\n\t\t\tthis._on({ keydown : function( event ) {\n\t\t\t\t\tif ( event.keyCode !== $.ui.keyCode.TAB ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tvar tabbables = $( \":tabbable\", this.element ),\n\t\t\t\t\t\tfirst = tabbables.first(),\n\t\t\t\t\t\tlast  = tabbables.last();\n\t\t\t\t\tif ( event.target === last[ 0 ] && !event.shiftKey ) {\n\t\t\t\t\t\tfirst.focus( 1 );\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t} else if ( event.target === first[ 0 ] && event.shiftKey ) {\n\t\t\t\t\t\tlast.focus( 1 );\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._on({\n\t\t\tfocusout: function( event ) {\n\t\t\t\t// use a timer to allow click to clear it and letting that\n\t\t\t\t// handle the closing instead of opening again\n\t\t\t\tthis.closeTimer = this._delay( function() {\n\t\t\t\t\tthis.close( event );\n\t\t\t\t}, 150);\n\t\t\t},\n\t\t\tfocusin: function( event ) {\n\t\t\t\tclearTimeout( this.closeTimer );\n\t\t\t},\n\t\t\tmouseup: function( event ) {\n\t\t\t\tclearTimeout( this.closeTimer );\n\t\t\t}\n\t\t});\n\n\t\tthis._on({\n\t\t\tkeyup: function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE && this.element.is( \":visible\" ) ) {\n\t\t\t\t\tthis.close( event );\n\t\t\t\t\tthis.focusTrigger();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( this.isOpen && !$( event.target ).closest( this.element.add( this.options.trigger ) ).length ) {\n\t\t\t\t\tthis.close( event );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.show()\n\t\t\t.removeClass( \"ui-popup\" )\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t.unbind( \"keypress.ui-popup\");\n\n\t\tthis.options.trigger\n\t\t\t.removeAttr( \"aria-haspopup\" )\n\t\t\t.removeAttr( \"aria-owns\" );\n\n\t\tif ( this.generatedId ) {\n\t\t\tthis.element.removeAttr( \"id\" );\n\t\t}\n\t\tif ( this.generatedRole ) {\n\t\t\tthis.element.removeAttr( \"role\" );\n\t\t}\n\t},\n\n\topen: function( event ) {\n\t\tvar position = $.extend( {}, {\n\t\t\tof: this.options.trigger\n\t\t}, this.options.position );\n\n\t\tthis._show( this.element, this.options.show );\n\t\tthis.element\n\t\t\t.attr( \"aria-hidden\", \"false\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\n\t\t// take trigger out of tab order to allow shift-tab to skip trigger\n\t\tthis.options.trigger.attr( \"tabindex\", -1 );\n\t\tthis.isOpen = true;\n\t\tthis._trigger( \"open\", event );\n\t},\n\n\tfocusPopup: function( event ) {\n\t\tif ( !this.options.managed ) {\n\t\t\t// set focus to the first tabbable element in the popup container\n\t\t\t// if there are no tabbable elements, set focus on the popup itself\n\t\t\tvar tabbables = this.element.find( \":tabbable\" );\n\t\t\tthis.removeTabIndex = false;\n\t\t\tif ( !tabbables.length ) {\n\t\t\t\tif ( !this.element.is(\":tabbable\") ) {\n\t\t\t\t\tthis.element.attr(\"tabindex\", \"0\");\n\t\t\t\t\tthis.removeTabIndex = true;\n\t\t\t\t}\n\t\t\t\ttabbables = tabbables.add( this.element[ 0 ] );\n\t\t\t}\n\t\t\ttabbables.first().focus( 1 );\n\t\t}\n\t\tthis._trigger( \"focusPopup\", event );\n\t},\n\n\tfocusTrigger: function( event ) {\n\t\tsuppressExpandOnFocus = true;\n\t\tthis.options.trigger.focus();\n\t\tthis._trigger( \"focusTrigger\", event );\n\t},\n\n\tclose: function( event ) {\n\t\tthis._beforeClose();\n\t\tthis._hide( this.element, this.options.hide );\n\n\t\tthis.options.trigger.attr( \"tabindex\" , 0 );\n\t\tif ( this.removeTabIndex ) {\n\t\t\tthis.element.removeAttr( \"tabindex\" );\n\t\t}\n\t\tthis.isOpen = false;\n\t\tthis._trigger( \"close\", event );\n\t},\n\n\t_beforeClose: function() {\n\t\tthis.element\n\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t.attr( \"aria-expanded\", \"false\" );\n\t}\n});\n\n\n\n// WEBPACK FOOTER //\n// ./public/javascripts/vendor/jqueryui/popup.js","/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n(function () {\nvar modern = (function () {\n    'use strict';\n\n    var global = tinymce.util.Tools.resolve('tinymce.ThemeManager');\n\n    var global$1 = tinymce.util.Tools.resolve('tinymce.EditorManager');\n\n    var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n    var isBrandingEnabled = function (editor) {\n      return editor.getParam('branding', true, 'boolean');\n    };\n    var hasMenubar = function (editor) {\n      return getMenubar(editor) !== false;\n    };\n    var getMenubar = function (editor) {\n      return editor.getParam('menubar');\n    };\n    var hasStatusbar = function (editor) {\n      return editor.getParam('statusbar', true, 'boolean');\n    };\n    var getToolbarSize = function (editor) {\n      return editor.getParam('toolbar_items_size');\n    };\n    var isReadOnly = function (editor) {\n      return editor.getParam('readonly', false, 'boolean');\n    };\n    var getFixedToolbarContainer = function (editor) {\n      return editor.getParam('fixed_toolbar_container');\n    };\n    var getInlineToolbarPositionHandler = function (editor) {\n      return editor.getParam('inline_toolbar_position_handler');\n    };\n    var getMenu = function (editor) {\n      return editor.getParam('menu');\n    };\n    var getRemovedMenuItems = function (editor) {\n      return editor.getParam('removed_menuitems', '');\n    };\n    var getMinWidth = function (editor) {\n      return editor.getParam('min_width', 100, 'number');\n    };\n    var getMinHeight = function (editor) {\n      return editor.getParam('min_height', 100, 'number');\n    };\n    var getMaxWidth = function (editor) {\n      return editor.getParam('max_width', 65535, 'number');\n    };\n    var getMaxHeight = function (editor) {\n      return editor.getParam('max_height', 65535, 'number');\n    };\n    var isSkinDisabled = function (editor) {\n      return editor.settings.skin === false;\n    };\n    var isInline = function (editor) {\n      return editor.getParam('inline', false, 'boolean');\n    };\n    var getResize = function (editor) {\n      var resize = editor.getParam('resize', 'vertical');\n      if (resize === false) {\n        return 'none';\n      } else if (resize === 'both') {\n        return 'both';\n      } else {\n        return 'vertical';\n      }\n    };\n    var getSkinUrl = function (editor) {\n      var settings = editor.settings;\n      var skin = settings.skin;\n      var skinUrl = settings.skin_url;\n      if (skin !== false) {\n        var skinName = skin ? skin : 'lightgray';\n        if (skinUrl) {\n          skinUrl = editor.documentBaseURI.toAbsolute(skinUrl);\n        } else {\n          skinUrl = global$1.baseURL + '/skins/' + skinName;\n        }\n      }\n      return skinUrl;\n    };\n    var getIndexedToolbars = function (settings, defaultToolbar) {\n      var toolbars = [];\n      for (var i = 1; i < 10; i++) {\n        var toolbar = settings['toolbar' + i];\n        if (!toolbar) {\n          break;\n        }\n        toolbars.push(toolbar);\n      }\n      var mainToolbar = settings.toolbar ? [settings.toolbar] : [defaultToolbar];\n      return toolbars.length > 0 ? toolbars : mainToolbar;\n    };\n    var getToolbars = function (editor) {\n      var toolbar = editor.getParam('toolbar');\n      var defaultToolbar = 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image';\n      if (toolbar === false) {\n        return [];\n      } else if (global$2.isArray(toolbar)) {\n        return global$2.grep(toolbar, function (toolbar) {\n          return toolbar.length > 0;\n        });\n      } else {\n        return getIndexedToolbars(editor.settings, defaultToolbar);\n      }\n    };\n\n    var global$3 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n    var global$4 = tinymce.util.Tools.resolve('tinymce.ui.Factory');\n\n    var global$5 = tinymce.util.Tools.resolve('tinymce.util.I18n');\n\n    var fireSkinLoaded = function (editor) {\n      return editor.fire('SkinLoaded');\n    };\n    var fireResizeEditor = function (editor) {\n      return editor.fire('ResizeEditor');\n    };\n    var fireBeforeRenderUI = function (editor) {\n      return editor.fire('BeforeRenderUI');\n    };\n    var Events = {\n      fireSkinLoaded: fireSkinLoaded,\n      fireResizeEditor: fireResizeEditor,\n      fireBeforeRenderUI: fireBeforeRenderUI\n    };\n\n    var focus = function (panel, type) {\n      return function () {\n        var item = panel.find(type)[0];\n        if (item) {\n          item.focus(true);\n        }\n      };\n    };\n    var addKeys = function (editor, panel) {\n      editor.shortcuts.add('Alt+F9', '', focus(panel, 'menubar'));\n      editor.shortcuts.add('Alt+F10,F10', '', focus(panel, 'toolbar'));\n      editor.shortcuts.add('Alt+F11', '', focus(panel, 'elementpath'));\n      panel.on('cancel', function () {\n        editor.focus();\n      });\n    };\n    var A11y = { addKeys: addKeys };\n\n    var global$6 = tinymce.util.Tools.resolve('tinymce.geom.Rect');\n\n    var global$7 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n    var noop = function () {\n      var args = [];\n      for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n      }\n    };\n    var constant = function (value) {\n      return function () {\n        return value;\n      };\n    };\n    var never = constant(false);\n    var always = constant(true);\n\n    var never$1 = never;\n    var always$1 = always;\n    var none = function () {\n      return NONE;\n    };\n    var NONE = function () {\n      var eq = function (o) {\n        return o.isNone();\n      };\n      var call$$1 = function (thunk) {\n        return thunk();\n      };\n      var id = function (n) {\n        return n;\n      };\n      var noop$$1 = function () {\n      };\n      var nul = function () {\n        return null;\n      };\n      var undef = function () {\n        return undefined;\n      };\n      var me = {\n        fold: function (n, s) {\n          return n();\n        },\n        is: never$1,\n        isSome: never$1,\n        isNone: always$1,\n        getOr: id,\n        getOrThunk: call$$1,\n        getOrDie: function (msg) {\n          throw new Error(msg || 'error: getOrDie called on none.');\n        },\n        getOrNull: nul,\n        getOrUndefined: undef,\n        or: id,\n        orThunk: call$$1,\n        map: none,\n        ap: none,\n        each: noop$$1,\n        bind: none,\n        flatten: none,\n        exists: never$1,\n        forall: always$1,\n        filter: none,\n        equals: eq,\n        equals_: eq,\n        toArray: function () {\n          return [];\n        },\n        toString: constant('none()')\n      };\n      if (Object.freeze)\n        Object.freeze(me);\n      return me;\n    }();\n    var some = function (a) {\n      var constant_a = function () {\n        return a;\n      };\n      var self = function () {\n        return me;\n      };\n      var map = function (f) {\n        return some(f(a));\n      };\n      var bind = function (f) {\n        return f(a);\n      };\n      var me = {\n        fold: function (n, s) {\n          return s(a);\n        },\n        is: function (v) {\n          return a === v;\n        },\n        isSome: always$1,\n        isNone: never$1,\n        getOr: constant_a,\n        getOrThunk: constant_a,\n        getOrDie: constant_a,\n        getOrNull: constant_a,\n        getOrUndefined: constant_a,\n        or: self,\n        orThunk: self,\n        map: map,\n        ap: function (optfab) {\n          return optfab.fold(none, function (fab) {\n            return some(fab(a));\n          });\n        },\n        each: function (f) {\n          f(a);\n        },\n        bind: bind,\n        flatten: constant_a,\n        exists: bind,\n        forall: bind,\n        filter: function (f) {\n          return f(a) ? me : NONE;\n        },\n        equals: function (o) {\n          return o.is(a);\n        },\n        equals_: function (o, elementEq) {\n          return o.fold(never$1, function (b) {\n            return elementEq(a, b);\n          });\n        },\n        toArray: function () {\n          return [a];\n        },\n        toString: function () {\n          return 'some(' + a + ')';\n        }\n      };\n      return me;\n    };\n    var from = function (value) {\n      return value === null || value === undefined ? NONE : some(value);\n    };\n    var Option = {\n      some: some,\n      none: none,\n      from: from\n    };\n\n    var getUiContainerDelta = function (ctrl) {\n      var uiContainer = getUiContainer(ctrl);\n      if (uiContainer && global$3.DOM.getStyle(uiContainer, 'position', true) !== 'static') {\n        var containerPos = global$3.DOM.getPos(uiContainer);\n        var dx = uiContainer.scrollLeft - containerPos.x;\n        var dy = uiContainer.scrollTop - containerPos.y;\n        return Option.some({\n          x: dx,\n          y: dy\n        });\n      } else {\n        return Option.none();\n      }\n    };\n    var setUiContainer = function (editor, ctrl) {\n      var uiContainer = global$3.DOM.select(editor.settings.ui_container)[0];\n      ctrl.getRoot().uiContainer = uiContainer;\n    };\n    var getUiContainer = function (ctrl) {\n      return ctrl ? ctrl.getRoot().uiContainer : null;\n    };\n    var inheritUiContainer = function (fromCtrl, toCtrl) {\n      return toCtrl.uiContainer = getUiContainer(fromCtrl);\n    };\n    var UiContainer = {\n      getUiContainerDelta: getUiContainerDelta,\n      setUiContainer: setUiContainer,\n      getUiContainer: getUiContainer,\n      inheritUiContainer: inheritUiContainer\n    };\n\n    var createToolbar = function (editor, items, size) {\n      var toolbarItems = [];\n      var buttonGroup;\n      if (!items) {\n        return;\n      }\n      global$2.each(items.split(/[ ,]/), function (item) {\n        var itemName;\n        var bindSelectorChanged = function () {\n          var selection = editor.selection;\n          if (item.settings.stateSelector) {\n            selection.selectorChanged(item.settings.stateSelector, function (state) {\n              item.active(state);\n            }, true);\n          }\n          if (item.settings.disabledStateSelector) {\n            selection.selectorChanged(item.settings.disabledStateSelector, function (state) {\n              item.disabled(state);\n            });\n          }\n        };\n        if (item === '|') {\n          buttonGroup = null;\n        } else {\n          if (!buttonGroup) {\n            buttonGroup = {\n              type: 'buttongroup',\n              items: []\n            };\n            toolbarItems.push(buttonGroup);\n          }\n          if (editor.buttons[item]) {\n            itemName = item;\n            item = editor.buttons[itemName];\n            if (typeof item === 'function') {\n              item = item();\n            }\n            item.type = item.type || 'button';\n            item.size = size;\n            item = global$4.create(item);\n            buttonGroup.items.push(item);\n            if (editor.initialized) {\n              bindSelectorChanged();\n            } else {\n              editor.on('init', bindSelectorChanged);\n            }\n          }\n        }\n      });\n      return {\n        type: 'toolbar',\n        layout: 'flow',\n        items: toolbarItems\n      };\n    };\n    var createToolbars = function (editor, size) {\n      var toolbars = [];\n      var addToolbar = function (items) {\n        if (items) {\n          toolbars.push(createToolbar(editor, items, size));\n        }\n      };\n      global$2.each(getToolbars(editor), function (toolbar) {\n        addToolbar(toolbar);\n      });\n      if (toolbars.length) {\n        return {\n          type: 'panel',\n          layout: 'stack',\n          classes: 'toolbar-grp',\n          ariaRoot: true,\n          ariaRemember: true,\n          items: toolbars\n        };\n      }\n    };\n    var Toolbar = {\n      createToolbar: createToolbar,\n      createToolbars: createToolbars\n    };\n\n    var DOM = global$3.DOM;\n    var toClientRect = function (geomRect) {\n      return {\n        left: geomRect.x,\n        top: geomRect.y,\n        width: geomRect.w,\n        height: geomRect.h,\n        right: geomRect.x + geomRect.w,\n        bottom: geomRect.y + geomRect.h\n      };\n    };\n    var hideAllFloatingPanels = function (editor) {\n      global$2.each(editor.contextToolbars, function (toolbar) {\n        if (toolbar.panel) {\n          toolbar.panel.hide();\n        }\n      });\n    };\n    var movePanelTo = function (panel, pos) {\n      panel.moveTo(pos.left, pos.top);\n    };\n    var togglePositionClass = function (panel, relPos, predicate) {\n      relPos = relPos ? relPos.substr(0, 2) : '';\n      global$2.each({\n        t: 'down',\n        b: 'up'\n      }, function (cls, pos) {\n        panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(0, 1)));\n      });\n      global$2.each({\n        l: 'left',\n        r: 'right'\n      }, function (cls, pos) {\n        panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(1, 1)));\n      });\n    };\n    var userConstrain = function (handler, x, y, elementRect, contentAreaRect, panelRect) {\n      panelRect = toClientRect({\n        x: x,\n        y: y,\n        w: panelRect.w,\n        h: panelRect.h\n      });\n      if (handler) {\n        panelRect = handler({\n          elementRect: toClientRect(elementRect),\n          contentAreaRect: toClientRect(contentAreaRect),\n          panelRect: panelRect\n        });\n      }\n      return panelRect;\n    };\n    var addContextualToolbars = function (editor) {\n      var scrollContainer;\n      var getContextToolbars = function () {\n        return editor.contextToolbars || [];\n      };\n      var getElementRect = function (elm) {\n        var pos, targetRect, root;\n        pos = DOM.getPos(editor.getContentAreaContainer());\n        targetRect = editor.dom.getRect(elm);\n        root = editor.dom.getRoot();\n        if (root.nodeName === 'BODY') {\n          targetRect.x -= root.ownerDocument.documentElement.scrollLeft || root.scrollLeft;\n          targetRect.y -= root.ownerDocument.documentElement.scrollTop || root.scrollTop;\n        }\n        targetRect.x += pos.x;\n        targetRect.y += pos.y;\n        return targetRect;\n      };\n      var reposition = function (match, shouldShow) {\n        var relPos, panelRect, elementRect, contentAreaRect, panel, relRect, testPositions, smallElementWidthThreshold;\n        var handler = getInlineToolbarPositionHandler(editor);\n        if (editor.removed) {\n          return;\n        }\n        if (!match || !match.toolbar.panel) {\n          hideAllFloatingPanels(editor);\n          return;\n        }\n        testPositions = [\n          'bc-tc',\n          'tc-bc',\n          'tl-bl',\n          'bl-tl',\n          'tr-br',\n          'br-tr'\n        ];\n        panel = match.toolbar.panel;\n        if (shouldShow) {\n          panel.show();\n        }\n        elementRect = getElementRect(match.element);\n        panelRect = DOM.getRect(panel.getEl());\n        contentAreaRect = DOM.getRect(editor.getContentAreaContainer() || editor.getBody());\n        var delta = UiContainer.getUiContainerDelta(panel).getOr({\n          x: 0,\n          y: 0\n        });\n        elementRect.x += delta.x;\n        elementRect.y += delta.y;\n        panelRect.x += delta.x;\n        panelRect.y += delta.y;\n        contentAreaRect.x += delta.x;\n        contentAreaRect.y += delta.y;\n        smallElementWidthThreshold = 25;\n        if (DOM.getStyle(match.element, 'display', true) !== 'inline') {\n          var clientRect = match.element.getBoundingClientRect();\n          elementRect.w = clientRect.width;\n          elementRect.h = clientRect.height;\n        }\n        if (!editor.inline) {\n          contentAreaRect.w = editor.getDoc().documentElement.offsetWidth;\n        }\n        if (editor.selection.controlSelection.isResizable(match.element) && elementRect.w < smallElementWidthThreshold) {\n          elementRect = global$6.inflate(elementRect, 0, 8);\n        }\n        relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, testPositions);\n        elementRect = global$6.clamp(elementRect, contentAreaRect);\n        if (relPos) {\n          relRect = global$6.relativePosition(panelRect, elementRect, relPos);\n          movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));\n        } else {\n          contentAreaRect.h += panelRect.h;\n          elementRect = global$6.intersect(contentAreaRect, elementRect);\n          if (elementRect) {\n            relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, [\n              'bc-tc',\n              'bl-tl',\n              'br-tr'\n            ]);\n            if (relPos) {\n              relRect = global$6.relativePosition(panelRect, elementRect, relPos);\n              movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));\n            } else {\n              movePanelTo(panel, userConstrain(handler, elementRect.x, elementRect.y, elementRect, contentAreaRect, panelRect));\n            }\n          } else {\n            panel.hide();\n          }\n        }\n        togglePositionClass(panel, relPos, function (pos1, pos2) {\n          return pos1 === pos2;\n        });\n      };\n      var repositionHandler = function (show) {\n        return function () {\n          var execute = function () {\n            if (editor.selection) {\n              reposition(findFrontMostMatch(editor.selection.getNode()), show);\n            }\n          };\n          global$7.requestAnimationFrame(execute);\n        };\n      };\n      var bindScrollEvent = function (panel) {\n        if (!scrollContainer) {\n          var reposition_1 = repositionHandler(true);\n          var uiContainer_1 = UiContainer.getUiContainer(panel);\n          scrollContainer = editor.selection.getScrollContainer() || editor.getWin();\n          DOM.bind(scrollContainer, 'scroll', reposition_1);\n          DOM.bind(uiContainer_1, 'scroll', reposition_1);\n          editor.on('remove', function () {\n            DOM.unbind(scrollContainer, 'scroll', reposition_1);\n            DOM.unbind(uiContainer_1, 'scroll', reposition_1);\n          });\n        }\n      };\n      var showContextToolbar = function (match) {\n        var panel;\n        if (match.toolbar.panel) {\n          match.toolbar.panel.show();\n          reposition(match);\n          return;\n        }\n        panel = global$4.create({\n          type: 'floatpanel',\n          role: 'dialog',\n          classes: 'tinymce tinymce-inline arrow',\n          ariaLabel: 'Inline toolbar',\n          layout: 'flex',\n          direction: 'column',\n          align: 'stretch',\n          autohide: false,\n          autofix: true,\n          fixed: true,\n          border: 1,\n          items: Toolbar.createToolbar(editor, match.toolbar.items),\n          oncancel: function () {\n            editor.focus();\n          }\n        });\n        UiContainer.setUiContainer(editor, panel);\n        bindScrollEvent(panel);\n        match.toolbar.panel = panel;\n        panel.renderTo().reflow();\n        reposition(match);\n      };\n      var hideAllContextToolbars = function () {\n        global$2.each(getContextToolbars(), function (toolbar) {\n          if (toolbar.panel) {\n            toolbar.panel.hide();\n          }\n        });\n      };\n      var findFrontMostMatch = function (targetElm) {\n        var i, y, parentsAndSelf;\n        var toolbars = getContextToolbars();\n        parentsAndSelf = editor.$(targetElm).parents().add(targetElm);\n        for (i = parentsAndSelf.length - 1; i >= 0; i--) {\n          for (y = toolbars.length - 1; y >= 0; y--) {\n            if (toolbars[y].predicate(parentsAndSelf[i])) {\n              return {\n                toolbar: toolbars[y],\n                element: parentsAndSelf[i]\n              };\n            }\n          }\n        }\n        return null;\n      };\n      editor.on('click keyup setContent ObjectResized', function (e) {\n        if (e.type === 'setcontent' && !e.selection) {\n          return;\n        }\n        global$7.setEditorTimeout(editor, function () {\n          var match;\n          match = findFrontMostMatch(editor.selection.getNode());\n          if (match) {\n            hideAllContextToolbars();\n            showContextToolbar(match);\n          } else {\n            hideAllContextToolbars();\n          }\n        });\n      });\n      editor.on('blur hide contextmenu', hideAllContextToolbars);\n      editor.on('ObjectResizeStart', function () {\n        var match = findFrontMostMatch(editor.selection.getNode());\n        if (match && match.toolbar.panel) {\n          match.toolbar.panel.hide();\n        }\n      });\n      editor.on('ResizeEditor ResizeWindow', repositionHandler(true));\n      editor.on('nodeChange', repositionHandler(false));\n      editor.on('remove', function () {\n        global$2.each(getContextToolbars(), function (toolbar) {\n          if (toolbar.panel) {\n            toolbar.panel.remove();\n          }\n        });\n        editor.contextToolbars = {};\n      });\n      editor.shortcuts.add('ctrl+F9', '', function () {\n        var match = findFrontMostMatch(editor.selection.getNode());\n        if (match && match.toolbar.panel) {\n          match.toolbar.panel.items()[0].focus();\n        }\n      });\n    };\n    var ContextToolbars = { addContextualToolbars: addContextualToolbars };\n\n    var typeOf = function (x) {\n      if (x === null)\n        return 'null';\n      var t = typeof x;\n      if (t === 'object' && Array.prototype.isPrototypeOf(x))\n        return 'array';\n      if (t === 'object' && String.prototype.isPrototypeOf(x))\n        return 'string';\n      return t;\n    };\n    var isType = function (type) {\n      return function (value) {\n        return typeOf(value) === type;\n      };\n    };\n    var isFunction = isType('function');\n    var isNumber = isType('number');\n\n    var rawIndexOf = function () {\n      var pIndexOf = Array.prototype.indexOf;\n      var fastIndex = function (xs, x) {\n        return pIndexOf.call(xs, x);\n      };\n      var slowIndex = function (xs, x) {\n        return slowIndexOf(xs, x);\n      };\n      return pIndexOf === undefined ? slowIndex : fastIndex;\n    }();\n    var indexOf = function (xs, x) {\n      var r = rawIndexOf(xs, x);\n      return r === -1 ? Option.none() : Option.some(r);\n    };\n    var exists = function (xs, pred) {\n      return findIndex(xs, pred).isSome();\n    };\n    var map = function (xs, f) {\n      var len = xs.length;\n      var r = new Array(len);\n      for (var i = 0; i < len; i++) {\n        var x = xs[i];\n        r[i] = f(x, i, xs);\n      }\n      return r;\n    };\n    var each = function (xs, f) {\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        f(x, i, xs);\n      }\n    };\n    var filter = function (xs, pred) {\n      var r = [];\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        if (pred(x, i, xs)) {\n          r.push(x);\n        }\n      }\n      return r;\n    };\n    var foldl = function (xs, f, acc) {\n      each(xs, function (x) {\n        acc = f(acc, x);\n      });\n      return acc;\n    };\n    var find = function (xs, pred) {\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        if (pred(x, i, xs)) {\n          return Option.some(x);\n        }\n      }\n      return Option.none();\n    };\n    var findIndex = function (xs, pred) {\n      for (var i = 0, len = xs.length; i < len; i++) {\n        var x = xs[i];\n        if (pred(x, i, xs)) {\n          return Option.some(i);\n        }\n      }\n      return Option.none();\n    };\n    var slowIndexOf = function (xs, x) {\n      for (var i = 0, len = xs.length; i < len; ++i) {\n        if (xs[i] === x) {\n          return i;\n        }\n      }\n      return -1;\n    };\n    var push = Array.prototype.push;\n    var flatten = function (xs) {\n      var r = [];\n      for (var i = 0, len = xs.length; i < len; ++i) {\n        if (!Array.prototype.isPrototypeOf(xs[i]))\n          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n        push.apply(r, xs[i]);\n      }\n      return r;\n    };\n    var slice = Array.prototype.slice;\n    var from$1 = isFunction(Array.from) ? Array.from : function (x) {\n      return slice.call(x);\n    };\n\n    var defaultMenus = {\n      file: {\n        title: 'File',\n        items: 'newdocument restoredraft | preview | print'\n      },\n      edit: {\n        title: 'Edit',\n        items: 'undo redo | cut copy paste pastetext | selectall'\n      },\n      view: {\n        title: 'View',\n        items: 'code | visualaid visualchars visualblocks | spellchecker | preview fullscreen'\n      },\n      insert: {\n        title: 'Insert',\n        items: 'image link media template codesample inserttable | charmap hr | pagebreak nonbreaking anchor toc | insertdatetime'\n      },\n      format: {\n        title: 'Format',\n        items: 'bold italic underline strikethrough superscript subscript codeformat | blockformats align | removeformat'\n      },\n      tools: {\n        title: 'Tools',\n        items: 'spellchecker spellcheckerlanguage | a11ycheck code'\n      },\n      table: { title: 'Table' },\n      help: { title: 'Help' }\n    };\n    var delimiterMenuNamePair = function () {\n      return {\n        name: '|',\n        item: { text: '|' }\n      };\n    };\n    var createMenuNameItemPair = function (name, item) {\n      var menuItem = item ? {\n        name: name,\n        item: item\n      } : null;\n      return name === '|' ? delimiterMenuNamePair() : menuItem;\n    };\n    var hasItemName = function (namedMenuItems, name) {\n      return findIndex(namedMenuItems, function (namedMenuItem) {\n        return namedMenuItem.name === name;\n      }).isSome();\n    };\n    var isSeparator = function (namedMenuItem) {\n      return namedMenuItem && namedMenuItem.item.text === '|';\n    };\n    var cleanupMenu = function (namedMenuItems, removedMenuItems) {\n      var menuItemsPass1 = filter(namedMenuItems, function (namedMenuItem) {\n        return removedMenuItems.hasOwnProperty(namedMenuItem.name) === false;\n      });\n      var menuItemsPass2 = filter(menuItemsPass1, function (namedMenuItem, i, namedMenuItems) {\n        return !isSeparator(namedMenuItem) || !isSeparator(namedMenuItems[i - 1]);\n      });\n      return filter(menuItemsPass2, function (namedMenuItem, i, namedMenuItems) {\n        return !isSeparator(namedMenuItem) || i > 0 && i < namedMenuItems.length - 1;\n      });\n    };\n    var createMenu = function (editorMenuItems, menus, removedMenuItems, context) {\n      var menuButton, menu, namedMenuItems, isUserDefined;\n      if (menus) {\n        menu = menus[context];\n        isUserDefined = true;\n      } else {\n        menu = defaultMenus[context];\n      }\n      if (menu) {\n        menuButton = { text: menu.title };\n        namedMenuItems = [];\n        global$2.each((menu.items || '').split(/[ ,]/), function (name) {\n          var namedMenuItem = createMenuNameItemPair(name, editorMenuItems[name]);\n          if (namedMenuItem) {\n            namedMenuItems.push(namedMenuItem);\n          }\n        });\n        if (!isUserDefined) {\n          global$2.each(editorMenuItems, function (item, name) {\n            if (item.context === context && !hasItemName(namedMenuItems, name)) {\n              if (item.separator === 'before') {\n                namedMenuItems.push(delimiterMenuNamePair());\n              }\n              if (item.prependToContext) {\n                namedMenuItems.unshift(createMenuNameItemPair(name, item));\n              } else {\n                namedMenuItems.push(createMenuNameItemPair(name, item));\n              }\n              if (item.separator === 'after') {\n                namedMenuItems.push(delimiterMenuNamePair());\n              }\n            }\n          });\n        }\n        menuButton.menu = map(cleanupMenu(namedMenuItems, removedMenuItems), function (menuItem) {\n          return menuItem.item;\n        });\n        if (!menuButton.menu.length) {\n          return null;\n        }\n      }\n      return menuButton;\n    };\n    var getDefaultMenubar = function (editor) {\n      var name;\n      var defaultMenuBar = [];\n      var menu = getMenu(editor);\n      if (menu) {\n        for (name in menu) {\n          defaultMenuBar.push(name);\n        }\n      } else {\n        for (name in defaultMenus) {\n          defaultMenuBar.push(name);\n        }\n      }\n      return defaultMenuBar;\n    };\n    var createMenuButtons = function (editor) {\n      var menuButtons = [];\n      var defaultMenuBar = getDefaultMenubar(editor);\n      var removedMenuItems = global$2.makeMap(getRemovedMenuItems(editor).split(/[ ,]/));\n      var menubar = getMenubar(editor);\n      var enabledMenuNames = typeof menubar === 'string' ? menubar.split(/[ ,]/) : defaultMenuBar;\n      for (var i = 0; i < enabledMenuNames.length; i++) {\n        var menuItems = enabledMenuNames[i];\n        var menu = createMenu(editor.menuItems, getMenu(editor), removedMenuItems, menuItems);\n        if (menu) {\n          menuButtons.push(menu);\n        }\n      }\n      return menuButtons;\n    };\n    var Menubar = { createMenuButtons: createMenuButtons };\n\n    var DOM$1 = global$3.DOM;\n    var getSize = function (elm) {\n      return {\n        width: elm.clientWidth,\n        height: elm.clientHeight\n      };\n    };\n    var resizeTo = function (editor, width, height) {\n      var containerElm, iframeElm, containerSize, iframeSize;\n      containerElm = editor.getContainer();\n      iframeElm = editor.getContentAreaContainer().firstChild;\n      containerSize = getSize(containerElm);\n      iframeSize = getSize(iframeElm);\n      if (width !== null) {\n        width = Math.max(getMinWidth(editor), width);\n        width = Math.min(getMaxWidth(editor), width);\n        DOM$1.setStyle(containerElm, 'width', width + (containerSize.width - iframeSize.width));\n        DOM$1.setStyle(iframeElm, 'width', width);\n      }\n      height = Math.max(getMinHeight(editor), height);\n      height = Math.min(getMaxHeight(editor), height);\n      DOM$1.setStyle(iframeElm, 'height', height);\n      Events.fireResizeEditor(editor);\n    };\n    var resizeBy = function (editor, dw, dh) {\n      var elm = editor.getContentAreaContainer();\n      resizeTo(editor, elm.clientWidth + dw, elm.clientHeight + dh);\n    };\n    var Resize = {\n      resizeTo: resizeTo,\n      resizeBy: resizeBy\n    };\n\n    var global$8 = tinymce.util.Tools.resolve('tinymce.Env');\n\n    var api = function (elm) {\n      return {\n        element: function () {\n          return elm;\n        }\n      };\n    };\n    var trigger = function (sidebar, panel, callbackName) {\n      var callback = sidebar.settings[callbackName];\n      if (callback) {\n        callback(api(panel.getEl('body')));\n      }\n    };\n    var hidePanels = function (name, container, sidebars) {\n      global$2.each(sidebars, function (sidebar) {\n        var panel = container.items().filter('#' + sidebar.name)[0];\n        if (panel && panel.visible() && sidebar.name !== name) {\n          trigger(sidebar, panel, 'onhide');\n          panel.visible(false);\n        }\n      });\n    };\n    var deactivateButtons = function (toolbar) {\n      toolbar.items().each(function (ctrl) {\n        ctrl.active(false);\n      });\n    };\n    var findSidebar = function (sidebars, name) {\n      return global$2.grep(sidebars, function (sidebar) {\n        return sidebar.name === name;\n      })[0];\n    };\n    var showPanel = function (editor, name, sidebars) {\n      return function (e) {\n        var btnCtrl = e.control;\n        var container = btnCtrl.parents().filter('panel')[0];\n        var panel = container.find('#' + name)[0];\n        var sidebar = findSidebar(sidebars, name);\n        hidePanels(name, container, sidebars);\n        deactivateButtons(btnCtrl.parent());\n        if (panel && panel.visible()) {\n          trigger(sidebar, panel, 'onhide');\n          panel.hide();\n          btnCtrl.active(false);\n        } else {\n          if (panel) {\n            panel.show();\n            trigger(sidebar, panel, 'onshow');\n          } else {\n            panel = global$4.create({\n              type: 'container',\n              name: name,\n              layout: 'stack',\n              classes: 'sidebar-panel',\n              html: ''\n            });\n            container.prepend(panel);\n            trigger(sidebar, panel, 'onrender');\n            trigger(sidebar, panel, 'onshow');\n          }\n          btnCtrl.active(true);\n        }\n        Events.fireResizeEditor(editor);\n      };\n    };\n    var isModernBrowser = function () {\n      return !global$8.ie || global$8.ie >= 11;\n    };\n    var hasSidebar = function (editor) {\n      return isModernBrowser() && editor.sidebars ? editor.sidebars.length > 0 : false;\n    };\n    var createSidebar = function (editor) {\n      var buttons = global$2.map(editor.sidebars, function (sidebar) {\n        var settings = sidebar.settings;\n        return {\n          type: 'button',\n          icon: settings.icon,\n          image: settings.image,\n          tooltip: settings.tooltip,\n          onclick: showPanel(editor, sidebar.name, editor.sidebars)\n        };\n      });\n      return {\n        type: 'panel',\n        name: 'sidebar',\n        layout: 'stack',\n        classes: 'sidebar',\n        items: [{\n            type: 'toolbar',\n            layout: 'stack',\n            classes: 'sidebar-toolbar',\n            items: buttons\n          }]\n      };\n    };\n    var Sidebar = {\n      hasSidebar: hasSidebar,\n      createSidebar: createSidebar\n    };\n\n    var fireSkinLoaded$1 = function (editor) {\n      var done = function () {\n        editor._skinLoaded = true;\n        Events.fireSkinLoaded(editor);\n      };\n      return function () {\n        if (editor.initialized) {\n          done();\n        } else {\n          editor.on('init', done);\n        }\n      };\n    };\n    var SkinLoaded = { fireSkinLoaded: fireSkinLoaded$1 };\n\n    var DOM$2 = global$3.DOM;\n    var switchMode = function (panel) {\n      return function (e) {\n        panel.find('*').disabled(e.mode === 'readonly');\n      };\n    };\n    var editArea = function (border) {\n      return {\n        type: 'panel',\n        name: 'iframe',\n        layout: 'stack',\n        classes: 'edit-area',\n        border: border,\n        html: ''\n      };\n    };\n    var editAreaContainer = function (editor) {\n      return {\n        type: 'panel',\n        layout: 'stack',\n        classes: 'edit-aria-container',\n        border: '1 0 0 0',\n        items: [\n          editArea('0'),\n          Sidebar.createSidebar(editor)\n        ]\n      };\n    };\n    var render = function (editor, theme, args) {\n      var panel, resizeHandleCtrl, startSize;\n      if (isSkinDisabled(editor) === false && args.skinUiCss) {\n        DOM$2.styleSheetLoader.load(args.skinUiCss, SkinLoaded.fireSkinLoaded(editor));\n      } else {\n        SkinLoaded.fireSkinLoaded(editor)();\n      }\n      panel = theme.panel = global$4.create({\n        type: 'panel',\n        role: 'application',\n        classes: 'tinymce',\n        style: 'visibility: hidden',\n        layout: 'stack',\n        border: 1,\n        items: [\n          {\n            type: 'container',\n            classes: 'top-part',\n            items: [\n              hasMenubar(editor) === false ? null : {\n                type: 'menubar',\n                border: '0 0 1 0',\n                items: Menubar.createMenuButtons(editor)\n              },\n              Toolbar.createToolbars(editor, getToolbarSize(editor))\n            ]\n          },\n          Sidebar.hasSidebar(editor) ? editAreaContainer(editor) : editArea('1 0 0 0')\n        ]\n      });\n      UiContainer.setUiContainer(editor, panel);\n      if (getResize(editor) !== 'none') {\n        resizeHandleCtrl = {\n          type: 'resizehandle',\n          direction: getResize(editor),\n          onResizeStart: function () {\n            var elm = editor.getContentAreaContainer().firstChild;\n            startSize = {\n              width: elm.clientWidth,\n              height: elm.clientHeight\n            };\n          },\n          onResize: function (e) {\n            if (getResize(editor) === 'both') {\n              Resize.resizeTo(editor, startSize.width + e.deltaX, startSize.height + e.deltaY);\n            } else {\n              Resize.resizeTo(editor, null, startSize.height + e.deltaY);\n            }\n          }\n        };\n      }\n      if (hasStatusbar(editor)) {\n        var linkHtml = '<a href=\"https://www.tiny.cloud/?utm_campaign=editor_referral&amp;utm_medium=poweredby&amp;utm_source=tinymce\" rel=\"noopener\" target=\"_blank\" role=\"presentation\" tabindex=\"-1\">Tiny</a>';\n        var html = global$5.translate([\n          'Powered by {0}',\n          linkHtml\n        ]);\n        var brandingLabel = isBrandingEnabled(editor) ? {\n          type: 'label',\n          classes: 'branding',\n          html: ' ' + html\n        } : null;\n        panel.add({\n          type: 'panel',\n          name: 'statusbar',\n          classes: 'statusbar',\n          layout: 'flow',\n          border: '1 0 0 0',\n          ariaRoot: true,\n          items: [\n            {\n              type: 'elementpath',\n              editor: editor\n            },\n            resizeHandleCtrl,\n            brandingLabel\n          ]\n        });\n      }\n      Events.fireBeforeRenderUI(editor);\n      editor.on('SwitchMode', switchMode(panel));\n      panel.renderBefore(args.targetNode).reflow();\n      if (isReadOnly(editor)) {\n        editor.setMode('readonly');\n      }\n      if (args.width) {\n        DOM$2.setStyle(panel.getEl(), 'width', args.width);\n      }\n      editor.on('remove', function () {\n        panel.remove();\n        panel = null;\n      });\n      A11y.addKeys(editor, panel);\n      ContextToolbars.addContextualToolbars(editor);\n      return {\n        iframeContainer: panel.find('#iframe')[0].getEl(),\n        editorContainer: panel.getEl()\n      };\n    };\n    var Iframe = { render: render };\n\n    var global$9 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');\n\n    var count = 0;\n    var funcs = {\n      id: function () {\n        return 'mceu_' + count++;\n      },\n      create: function (name$$1, attrs, children) {\n        var elm = document.createElement(name$$1);\n        global$3.DOM.setAttribs(elm, attrs);\n        if (typeof children === 'string') {\n          elm.innerHTML = children;\n        } else {\n          global$2.each(children, function (child) {\n            if (child.nodeType) {\n              elm.appendChild(child);\n            }\n          });\n        }\n        return elm;\n      },\n      createFragment: function (html) {\n        return global$3.DOM.createFragment(html);\n      },\n      getWindowSize: function () {\n        return global$3.DOM.getViewPort();\n      },\n      getSize: function (elm) {\n        var width, height;\n        if (elm.getBoundingClientRect) {\n          var rect = elm.getBoundingClientRect();\n          width = Math.max(rect.width || rect.right - rect.left, elm.offsetWidth);\n          height = Math.max(rect.height || rect.bottom - rect.bottom, elm.offsetHeight);\n        } else {\n          width = elm.offsetWidth;\n          height = elm.offsetHeight;\n        }\n        return {\n          width: width,\n          height: height\n        };\n      },\n      getPos: function (elm, root) {\n        return global$3.DOM.getPos(elm, root || funcs.getContainer());\n      },\n      getContainer: function () {\n        return global$8.container ? global$8.container : document.body;\n      },\n      getViewPort: function (win) {\n        return global$3.DOM.getViewPort(win);\n      },\n      get: function (id) {\n        return document.getElementById(id);\n      },\n      addClass: function (elm, cls) {\n        return global$3.DOM.addClass(elm, cls);\n      },\n      removeClass: function (elm, cls) {\n        return global$3.DOM.removeClass(elm, cls);\n      },\n      hasClass: function (elm, cls) {\n        return global$3.DOM.hasClass(elm, cls);\n      },\n      toggleClass: function (elm, cls, state) {\n        return global$3.DOM.toggleClass(elm, cls, state);\n      },\n      css: function (elm, name$$1, value) {\n        return global$3.DOM.setStyle(elm, name$$1, value);\n      },\n      getRuntimeStyle: function (elm, name$$1) {\n        return global$3.DOM.getStyle(elm, name$$1, true);\n      },\n      on: function (target, name$$1, callback, scope) {\n        return global$3.DOM.bind(target, name$$1, callback, scope);\n      },\n      off: function (target, name$$1, callback) {\n        return global$3.DOM.unbind(target, name$$1, callback);\n      },\n      fire: function (target, name$$1, args) {\n        return global$3.DOM.fire(target, name$$1, args);\n      },\n      innerHtml: function (elm, html) {\n        global$3.DOM.setHTML(elm, html);\n      }\n    };\n\n    var isStatic = function (elm) {\n      return funcs.getRuntimeStyle(elm, 'position') === 'static';\n    };\n    var isFixed = function (ctrl) {\n      return ctrl.state.get('fixed');\n    };\n    function calculateRelativePosition(ctrl, targetElm, rel) {\n      var ctrlElm, pos, x, y, selfW, selfH, targetW, targetH, viewport, size;\n      viewport = getWindowViewPort();\n      pos = funcs.getPos(targetElm, UiContainer.getUiContainer(ctrl));\n      x = pos.x;\n      y = pos.y;\n      if (isFixed(ctrl) && isStatic(document.body)) {\n        x -= viewport.x;\n        y -= viewport.y;\n      }\n      ctrlElm = ctrl.getEl();\n      size = funcs.getSize(ctrlElm);\n      selfW = size.width;\n      selfH = size.height;\n      size = funcs.getSize(targetElm);\n      targetW = size.width;\n      targetH = size.height;\n      rel = (rel || '').split('');\n      if (rel[0] === 'b') {\n        y += targetH;\n      }\n      if (rel[1] === 'r') {\n        x += targetW;\n      }\n      if (rel[0] === 'c') {\n        y += Math.round(targetH / 2);\n      }\n      if (rel[1] === 'c') {\n        x += Math.round(targetW / 2);\n      }\n      if (rel[3] === 'b') {\n        y -= selfH;\n      }\n      if (rel[4] === 'r') {\n        x -= selfW;\n      }\n      if (rel[3] === 'c') {\n        y -= Math.round(selfH / 2);\n      }\n      if (rel[4] === 'c') {\n        x -= Math.round(selfW / 2);\n      }\n      return {\n        x: x,\n        y: y,\n        w: selfW,\n        h: selfH\n      };\n    }\n    var getUiContainerViewPort = function (customUiContainer) {\n      return {\n        x: 0,\n        y: 0,\n        w: customUiContainer.scrollWidth - 1,\n        h: customUiContainer.scrollHeight - 1\n      };\n    };\n    var getWindowViewPort = function () {\n      var win = window;\n      var x = Math.max(win.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft);\n      var y = Math.max(win.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop);\n      var w = win.innerWidth || document.documentElement.clientWidth;\n      var h = win.innerHeight || document.documentElement.clientHeight;\n      return {\n        x: x,\n        y: y,\n        w: w,\n        h: h\n      };\n    };\n    var getViewPortRect = function (ctrl) {\n      var customUiContainer = UiContainer.getUiContainer(ctrl);\n      return customUiContainer && !isFixed(ctrl) ? getUiContainerViewPort(customUiContainer) : getWindowViewPort();\n    };\n    var Movable = {\n      testMoveRel: function (elm, rels) {\n        var viewPortRect = getViewPortRect(this);\n        for (var i = 0; i < rels.length; i++) {\n          var pos = calculateRelativePosition(this, elm, rels[i]);\n          if (isFixed(this)) {\n            if (pos.x > 0 && pos.x + pos.w < viewPortRect.w && pos.y > 0 && pos.y + pos.h < viewPortRect.h) {\n              return rels[i];\n            }\n          } else {\n            if (pos.x > viewPortRect.x && pos.x + pos.w < viewPortRect.w + viewPortRect.x && pos.y > viewPortRect.y && pos.y + pos.h < viewPortRect.h + viewPortRect.y) {\n              return rels[i];\n            }\n          }\n        }\n        return rels[0];\n      },\n      moveRel: function (elm, rel) {\n        if (typeof rel !== 'string') {\n          rel = this.testMoveRel(elm, rel);\n        }\n        var pos = calculateRelativePosition(this, elm, rel);\n        return this.moveTo(pos.x, pos.y);\n      },\n      moveBy: function (dx, dy) {\n        var self$$1 = this, rect = self$$1.layoutRect();\n        self$$1.moveTo(rect.x + dx, rect.y + dy);\n        return self$$1;\n      },\n      moveTo: function (x, y) {\n        var self$$1 = this;\n        function constrain(value, max, size) {\n          if (value < 0) {\n            return 0;\n          }\n          if (value + size > max) {\n            value = max - size;\n            return value < 0 ? 0 : value;\n          }\n          return value;\n        }\n        if (self$$1.settings.constrainToViewport) {\n          var viewPortRect = getViewPortRect(this);\n          var layoutRect = self$$1.layoutRect();\n          x = constrain(x, viewPortRect.w + viewPortRect.x, layoutRect.w);\n          y = constrain(y, viewPortRect.h + viewPortRect.y, layoutRect.h);\n        }\n        var uiContainer = UiContainer.getUiContainer(self$$1);\n        if (uiContainer && isStatic(uiContainer) && !isFixed(self$$1)) {\n          x -= uiContainer.scrollLeft;\n          y -= uiContainer.scrollTop;\n        }\n        if (uiContainer) {\n          x += 1;\n          y += 1;\n        }\n        if (self$$1.state.get('rendered')) {\n          self$$1.layoutRect({\n            x: x,\n            y: y\n          }).repaint();\n        } else {\n          self$$1.settings.x = x;\n          self$$1.settings.y = y;\n        }\n        self$$1.fire('move', {\n          x: x,\n          y: y\n        });\n        return self$$1;\n      }\n    };\n\n    var global$a = tinymce.util.Tools.resolve('tinymce.util.Class');\n\n    var global$b = tinymce.util.Tools.resolve('tinymce.util.EventDispatcher');\n\n    var BoxUtils = {\n      parseBox: function (value) {\n        var len;\n        var radix = 10;\n        if (!value) {\n          return;\n        }\n        if (typeof value === 'number') {\n          value = value || 0;\n          return {\n            top: value,\n            left: value,\n            bottom: value,\n            right: value\n          };\n        }\n        value = value.split(' ');\n        len = value.length;\n        if (len === 1) {\n          value[1] = value[2] = value[3] = value[0];\n        } else if (len === 2) {\n          value[2] = value[0];\n          value[3] = value[1];\n        } else if (len === 3) {\n          value[3] = value[1];\n        }\n        return {\n          top: parseInt(value[0], radix) || 0,\n          right: parseInt(value[1], radix) || 0,\n          bottom: parseInt(value[2], radix) || 0,\n          left: parseInt(value[3], radix) || 0\n        };\n      },\n      measureBox: function (elm, prefix) {\n        function getStyle(name) {\n          var defaultView = elm.ownerDocument.defaultView;\n          if (defaultView) {\n            var computedStyle = defaultView.getComputedStyle(elm, null);\n            if (computedStyle) {\n              name = name.replace(/[A-Z]/g, function (a) {\n                return '-' + a;\n              });\n              return computedStyle.getPropertyValue(name);\n            } else {\n              return null;\n            }\n          }\n          return elm.currentStyle[name];\n        }\n        function getSide(name) {\n          var val = parseFloat(getStyle(name));\n          return isNaN(val) ? 0 : val;\n        }\n        return {\n          top: getSide(prefix + 'TopWidth'),\n          right: getSide(prefix + 'RightWidth'),\n          bottom: getSide(prefix + 'BottomWidth'),\n          left: getSide(prefix + 'LeftWidth')\n        };\n      }\n    };\n\n    function noop$1() {\n    }\n    function ClassList(onchange) {\n      this.cls = [];\n      this.cls._map = {};\n      this.onchange = onchange || noop$1;\n      this.prefix = '';\n    }\n    global$2.extend(ClassList.prototype, {\n      add: function (cls) {\n        if (cls && !this.contains(cls)) {\n          this.cls._map[cls] = true;\n          this.cls.push(cls);\n          this._change();\n        }\n        return this;\n      },\n      remove: function (cls) {\n        if (this.contains(cls)) {\n          var i = void 0;\n          for (i = 0; i < this.cls.length; i++) {\n            if (this.cls[i] === cls) {\n              break;\n            }\n          }\n          this.cls.splice(i, 1);\n          delete this.cls._map[cls];\n          this._change();\n        }\n        return this;\n      },\n      toggle: function (cls, state) {\n        var curState = this.contains(cls);\n        if (curState !== state) {\n          if (curState) {\n            this.remove(cls);\n          } else {\n            this.add(cls);\n          }\n          this._change();\n        }\n        return this;\n      },\n      contains: function (cls) {\n        return !!this.cls._map[cls];\n      },\n      _change: function () {\n        delete this.clsValue;\n        this.onchange.call(this);\n      }\n    });\n    ClassList.prototype.toString = function () {\n      var value;\n      if (this.clsValue) {\n        return this.clsValue;\n      }\n      value = '';\n      for (var i = 0; i < this.cls.length; i++) {\n        if (i > 0) {\n          value += ' ';\n        }\n        value += this.prefix + this.cls[i];\n      }\n      return value;\n    };\n\n    function unique(array) {\n      var uniqueItems = [];\n      var i = array.length, item;\n      while (i--) {\n        item = array[i];\n        if (!item.__checked) {\n          uniqueItems.push(item);\n          item.__checked = 1;\n        }\n      }\n      i = uniqueItems.length;\n      while (i--) {\n        delete uniqueItems[i].__checked;\n      }\n      return uniqueItems;\n    }\n    var expression = /^([\\w\\\\*]+)?(?:#([\\w\\-\\\\]+))?(?:\\.([\\w\\\\\\.]+))?(?:\\[\\@?([\\w\\\\]+)([\\^\\$\\*!~]?=)([\\w\\\\]+)\\])?(?:\\:(.+))?/i;\n    var chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g;\n    var whiteSpace = /^\\s*|\\s*$/g;\n    var Collection;\n    var Selector = global$a.extend({\n      init: function (selector) {\n        var match = this.match;\n        function compileNameFilter(name) {\n          if (name) {\n            name = name.toLowerCase();\n            return function (item) {\n              return name === '*' || item.type === name;\n            };\n          }\n        }\n        function compileIdFilter(id) {\n          if (id) {\n            return function (item) {\n              return item._name === id;\n            };\n          }\n        }\n        function compileClassesFilter(classes) {\n          if (classes) {\n            classes = classes.split('.');\n            return function (item) {\n              var i = classes.length;\n              while (i--) {\n                if (!item.classes.contains(classes[i])) {\n                  return false;\n                }\n              }\n              return true;\n            };\n          }\n        }\n        function compileAttrFilter(name, cmp, check) {\n          if (name) {\n            return function (item) {\n              var value = item[name] ? item[name]() : '';\n              return !cmp ? !!check : cmp === '=' ? value === check : cmp === '*=' ? value.indexOf(check) >= 0 : cmp === '~=' ? (' ' + value + ' ').indexOf(' ' + check + ' ') >= 0 : cmp === '!=' ? value !== check : cmp === '^=' ? value.indexOf(check) === 0 : cmp === '$=' ? value.substr(value.length - check.length) === check : false;\n            };\n          }\n        }\n        function compilePsuedoFilter(name) {\n          var notSelectors;\n          if (name) {\n            name = /(?:not\\((.+)\\))|(.+)/i.exec(name);\n            if (!name[1]) {\n              name = name[2];\n              return function (item, index, length) {\n                return name === 'first' ? index === 0 : name === 'last' ? index === length - 1 : name === 'even' ? index % 2 === 0 : name === 'odd' ? index % 2 === 1 : item[name] ? item[name]() : false;\n              };\n            }\n            notSelectors = parseChunks(name[1], []);\n            return function (item) {\n              return !match(item, notSelectors);\n            };\n          }\n        }\n        function compile(selector, filters, direct) {\n          var parts;\n          function add(filter) {\n            if (filter) {\n              filters.push(filter);\n            }\n          }\n          parts = expression.exec(selector.replace(whiteSpace, ''));\n          add(compileNameFilter(parts[1]));\n          add(compileIdFilter(parts[2]));\n          add(compileClassesFilter(parts[3]));\n          add(compileAttrFilter(parts[4], parts[5], parts[6]));\n          add(compilePsuedoFilter(parts[7]));\n          filters.pseudo = !!parts[7];\n          filters.direct = direct;\n          return filters;\n        }\n        function parseChunks(selector, selectors) {\n          var parts = [];\n          var extra, matches, i;\n          do {\n            chunker.exec('');\n            matches = chunker.exec(selector);\n            if (matches) {\n              selector = matches[3];\n              parts.push(matches[1]);\n              if (matches[2]) {\n                extra = matches[3];\n                break;\n              }\n            }\n          } while (matches);\n          if (extra) {\n            parseChunks(extra, selectors);\n          }\n          selector = [];\n          for (i = 0; i < parts.length; i++) {\n            if (parts[i] !== '>') {\n              selector.push(compile(parts[i], [], parts[i - 1] === '>'));\n            }\n          }\n          selectors.push(selector);\n          return selectors;\n        }\n        this._selectors = parseChunks(selector, []);\n      },\n      match: function (control, selectors) {\n        var i, l, si, sl, selector, fi, fl, filters, index, length, siblings, count, item;\n        selectors = selectors || this._selectors;\n        for (i = 0, l = selectors.length; i < l; i++) {\n          selector = selectors[i];\n          sl = selector.length;\n          item = control;\n          count = 0;\n          for (si = sl - 1; si >= 0; si--) {\n            filters = selector[si];\n            while (item) {\n              if (filters.pseudo) {\n                siblings = item.parent().items();\n                index = length = siblings.length;\n                while (index--) {\n                  if (siblings[index] === item) {\n                    break;\n                  }\n                }\n              }\n              for (fi = 0, fl = filters.length; fi < fl; fi++) {\n                if (!filters[fi](item, index, length)) {\n                  fi = fl + 1;\n                  break;\n                }\n              }\n              if (fi === fl) {\n                count++;\n                break;\n              } else {\n                if (si === sl - 1) {\n                  break;\n                }\n              }\n              item = item.parent();\n            }\n          }\n          if (count === sl) {\n            return true;\n          }\n        }\n        return false;\n      },\n      find: function (container) {\n        var matches = [], i, l;\n        var selectors = this._selectors;\n        function collect(items, selector, index) {\n          var i, l, fi, fl, item;\n          var filters = selector[index];\n          for (i = 0, l = items.length; i < l; i++) {\n            item = items[i];\n            for (fi = 0, fl = filters.length; fi < fl; fi++) {\n              if (!filters[fi](item, i, l)) {\n                fi = fl + 1;\n                break;\n              }\n            }\n            if (fi === fl) {\n              if (index === selector.length - 1) {\n                matches.push(item);\n              } else {\n                if (item.items) {\n                  collect(item.items(), selector, index + 1);\n                }\n              }\n            } else if (filters.direct) {\n              return;\n            }\n            if (item.items) {\n              collect(item.items(), selector, index);\n            }\n          }\n        }\n        if (container.items) {\n          for (i = 0, l = selectors.length; i < l; i++) {\n            collect(container.items(), selectors[i], 0);\n          }\n          if (l > 1) {\n            matches = unique(matches);\n          }\n        }\n        if (!Collection) {\n          Collection = Selector.Collection;\n        }\n        return new Collection(matches);\n      }\n    });\n\n    var Collection$1, proto;\n    var push$1 = Array.prototype.push, slice$1 = Array.prototype.slice;\n    proto = {\n      length: 0,\n      init: function (items) {\n        if (items) {\n          this.add(items);\n        }\n      },\n      add: function (items) {\n        var self = this;\n        if (!global$2.isArray(items)) {\n          if (items instanceof Collection$1) {\n            self.add(items.toArray());\n          } else {\n            push$1.call(self, items);\n          }\n        } else {\n          push$1.apply(self, items);\n        }\n        return self;\n      },\n      set: function (items) {\n        var self = this;\n        var len = self.length;\n        var i;\n        self.length = 0;\n        self.add(items);\n        for (i = self.length; i < len; i++) {\n          delete self[i];\n        }\n        return self;\n      },\n      filter: function (selector) {\n        var self = this;\n        var i, l;\n        var matches = [];\n        var item, match;\n        if (typeof selector === 'string') {\n          selector = new Selector(selector);\n          match = function (item) {\n            return selector.match(item);\n          };\n        } else {\n          match = selector;\n        }\n        for (i = 0, l = self.length; i < l; i++) {\n          item = self[i];\n          if (match(item)) {\n            matches.push(item);\n          }\n        }\n        return new Collection$1(matches);\n      },\n      slice: function () {\n        return new Collection$1(slice$1.apply(this, arguments));\n      },\n      eq: function (index) {\n        return index === -1 ? this.slice(index) : this.slice(index, +index + 1);\n      },\n      each: function (callback) {\n        global$2.each(this, callback);\n        return this;\n      },\n      toArray: function () {\n        return global$2.toArray(this);\n      },\n      indexOf: function (ctrl) {\n        var self = this;\n        var i = self.length;\n        while (i--) {\n          if (self[i] === ctrl) {\n            break;\n          }\n        }\n        return i;\n      },\n      reverse: function () {\n        return new Collection$1(global$2.toArray(this).reverse());\n      },\n      hasClass: function (cls) {\n        return this[0] ? this[0].classes.contains(cls) : false;\n      },\n      prop: function (name, value) {\n        var self = this;\n        var item;\n        if (value !== undefined) {\n          self.each(function (item) {\n            if (item[name]) {\n              item[name](value);\n            }\n          });\n          return self;\n        }\n        item = self[0];\n        if (item && item[name]) {\n          return item[name]();\n        }\n      },\n      exec: function (name) {\n        var self = this, args = global$2.toArray(arguments).slice(1);\n        self.each(function (item) {\n          if (item[name]) {\n            item[name].apply(item, args);\n          }\n        });\n        return self;\n      },\n      remove: function () {\n        var i = this.length;\n        while (i--) {\n          this[i].remove();\n        }\n        return this;\n      },\n      addClass: function (cls) {\n        return this.each(function (item) {\n          item.classes.add(cls);\n        });\n      },\n      removeClass: function (cls) {\n        return this.each(function (item) {\n          item.classes.remove(cls);\n        });\n      }\n    };\n    global$2.each('fire on off show hide append prepend before after reflow'.split(' '), function (name) {\n      proto[name] = function () {\n        var args = global$2.toArray(arguments);\n        this.each(function (ctrl) {\n          if (name in ctrl) {\n            ctrl[name].apply(ctrl, args);\n          }\n        });\n        return this;\n      };\n    });\n    global$2.each('text name disabled active selected checked visible parent value data'.split(' '), function (name) {\n      proto[name] = function (value) {\n        return this.prop(name, value);\n      };\n    });\n    Collection$1 = global$a.extend(proto);\n    Selector.Collection = Collection$1;\n    var Collection$2 = Collection$1;\n\n    var Binding = function (settings) {\n      this.create = settings.create;\n    };\n    Binding.create = function (model, name) {\n      return new Binding({\n        create: function (otherModel, otherName) {\n          var bindings;\n          var fromSelfToOther = function (e) {\n            otherModel.set(otherName, e.value);\n          };\n          var fromOtherToSelf = function (e) {\n            model.set(name, e.value);\n          };\n          otherModel.on('change:' + otherName, fromOtherToSelf);\n          model.on('change:' + name, fromSelfToOther);\n          bindings = otherModel._bindings;\n          if (!bindings) {\n            bindings = otherModel._bindings = [];\n            otherModel.on('destroy', function () {\n              var i = bindings.length;\n              while (i--) {\n                bindings[i]();\n              }\n            });\n          }\n          bindings.push(function () {\n            model.off('change:' + name, fromSelfToOther);\n          });\n          return model.get(name);\n        }\n      });\n    };\n\n    var global$c = tinymce.util.Tools.resolve('tinymce.util.Observable');\n\n    function isNode(node) {\n      return node.nodeType > 0;\n    }\n    function isEqual(a, b) {\n      var k, checked;\n      if (a === b) {\n        return true;\n      }\n      if (a === null || b === null) {\n        return a === b;\n      }\n      if (typeof a !== 'object' || typeof b !== 'object') {\n        return a === b;\n      }\n      if (global$2.isArray(b)) {\n        if (a.length !== b.length) {\n          return false;\n        }\n        k = a.length;\n        while (k--) {\n          if (!isEqual(a[k], b[k])) {\n            return false;\n          }\n        }\n      }\n      if (isNode(a) || isNode(b)) {\n        return a === b;\n      }\n      checked = {};\n      for (k in b) {\n        if (!isEqual(a[k], b[k])) {\n          return false;\n        }\n        checked[k] = true;\n      }\n      for (k in a) {\n        if (!checked[k] && !isEqual(a[k], b[k])) {\n          return false;\n        }\n      }\n      return true;\n    }\n    var ObservableObject = global$a.extend({\n      Mixins: [global$c],\n      init: function (data) {\n        var name, value;\n        data = data || {};\n        for (name in data) {\n          value = data[name];\n          if (value instanceof Binding) {\n            data[name] = value.create(this, name);\n          }\n        }\n        this.data = data;\n      },\n      set: function (name, value) {\n        var key, args;\n        var oldValue = this.data[name];\n        if (value instanceof Binding) {\n          value = value.create(this, name);\n        }\n        if (typeof name === 'object') {\n          for (key in name) {\n            this.set(key, name[key]);\n          }\n          return this;\n        }\n        if (!isEqual(oldValue, value)) {\n          this.data[name] = value;\n          args = {\n            target: this,\n            name: name,\n            value: value,\n            oldValue: oldValue\n          };\n          this.fire('change:' + name, args);\n          this.fire('change', args);\n        }\n        return this;\n      },\n      get: function (name) {\n        return this.data[name];\n      },\n      has: function (name) {\n        return name in this.data;\n      },\n      bind: function (name) {\n        return Binding.create(this, name);\n      },\n      destroy: function () {\n        this.fire('destroy');\n      }\n    });\n\n    var dirtyCtrls = {}, animationFrameRequested;\n    var ReflowQueue = {\n      add: function (ctrl) {\n        var parent$$1 = ctrl.parent();\n        if (parent$$1) {\n          if (!parent$$1._layout || parent$$1._layout.isNative()) {\n            return;\n          }\n          if (!dirtyCtrls[parent$$1._id]) {\n            dirtyCtrls[parent$$1._id] = parent$$1;\n          }\n          if (!animationFrameRequested) {\n            animationFrameRequested = true;\n            global$7.requestAnimationFrame(function () {\n              var id, ctrl;\n              animationFrameRequested = false;\n              for (id in dirtyCtrls) {\n                ctrl = dirtyCtrls[id];\n                if (ctrl.state.get('rendered')) {\n                  ctrl.reflow();\n                }\n              }\n              dirtyCtrls = {};\n            }, document.body);\n          }\n        }\n      },\n      remove: function (ctrl) {\n        if (dirtyCtrls[ctrl._id]) {\n          delete dirtyCtrls[ctrl._id];\n        }\n      }\n    };\n\n    var hasMouseWheelEventSupport = 'onmousewheel' in document;\n    var hasWheelEventSupport = false;\n    var classPrefix = 'mce-';\n    var Control, idCounter = 0;\n    var proto$1 = {\n      Statics: { classPrefix: classPrefix },\n      isRtl: function () {\n        return Control.rtl;\n      },\n      classPrefix: classPrefix,\n      init: function (settings) {\n        var self$$1 = this;\n        var classes, defaultClasses;\n        function applyClasses(classes) {\n          var i;\n          classes = classes.split(' ');\n          for (i = 0; i < classes.length; i++) {\n            self$$1.classes.add(classes[i]);\n          }\n        }\n        self$$1.settings = settings = global$2.extend({}, self$$1.Defaults, settings);\n        self$$1._id = settings.id || 'mceu_' + idCounter++;\n        self$$1._aria = { role: settings.role };\n        self$$1._elmCache = {};\n        self$$1.$ = global$9;\n        self$$1.state = new ObservableObject({\n          visible: true,\n          active: false,\n          disabled: false,\n          value: ''\n        });\n        self$$1.data = new ObservableObject(settings.data);\n        self$$1.classes = new ClassList(function () {\n          if (self$$1.state.get('rendered')) {\n            self$$1.getEl().className = this.toString();\n          }\n        });\n        self$$1.classes.prefix = self$$1.classPrefix;\n        classes = settings.classes;\n        if (classes) {\n          if (self$$1.Defaults) {\n            defaultClasses = self$$1.Defaults.classes;\n            if (defaultClasses && classes !== defaultClasses) {\n              applyClasses(defaultClasses);\n            }\n          }\n          applyClasses(classes);\n        }\n        global$2.each('title text name visible disabled active value'.split(' '), function (name$$1) {\n          if (name$$1 in settings) {\n            self$$1[name$$1](settings[name$$1]);\n          }\n        });\n        self$$1.on('click', function () {\n          if (self$$1.disabled()) {\n            return false;\n          }\n        });\n        self$$1.settings = settings;\n        self$$1.borderBox = BoxUtils.parseBox(settings.border);\n        self$$1.paddingBox = BoxUtils.parseBox(settings.padding);\n        self$$1.marginBox = BoxUtils.parseBox(settings.margin);\n        if (settings.hidden) {\n          self$$1.hide();\n        }\n      },\n      Properties: 'parent,name',\n      getContainerElm: function () {\n        var uiContainer = UiContainer.getUiContainer(this);\n        return uiContainer ? uiContainer : funcs.getContainer();\n      },\n      getParentCtrl: function (elm) {\n        var ctrl;\n        var lookup = this.getRoot().controlIdLookup;\n        while (elm && lookup) {\n          ctrl = lookup[elm.id];\n          if (ctrl) {\n            break;\n          }\n          elm = elm.parentNode;\n        }\n        return ctrl;\n      },\n      initLayoutRect: function () {\n        var self$$1 = this;\n        var settings = self$$1.settings;\n        var borderBox, layoutRect;\n        var elm = self$$1.getEl();\n        var width, height, minWidth, minHeight, autoResize;\n        var startMinWidth, startMinHeight, initialSize;\n        borderBox = self$$1.borderBox = self$$1.borderBox || BoxUtils.measureBox(elm, 'border');\n        self$$1.paddingBox = self$$1.paddingBox || BoxUtils.measureBox(elm, 'padding');\n        self$$1.marginBox = self$$1.marginBox || BoxUtils.measureBox(elm, 'margin');\n        initialSize = funcs.getSize(elm);\n        startMinWidth = settings.minWidth;\n        startMinHeight = settings.minHeight;\n        minWidth = startMinWidth || initialSize.width;\n        minHeight = startMinHeight || initialSize.height;\n        width = settings.width;\n        height = settings.height;\n        autoResize = settings.autoResize;\n        autoResize = typeof autoResize !== 'undefined' ? autoResize : !width && !height;\n        width = width || minWidth;\n        height = height || minHeight;\n        var deltaW = borderBox.left + borderBox.right;\n        var deltaH = borderBox.top + borderBox.bottom;\n        var maxW = settings.maxWidth || 65535;\n        var maxH = settings.maxHeight || 65535;\n        self$$1._layoutRect = layoutRect = {\n          x: settings.x || 0,\n          y: settings.y || 0,\n          w: width,\n          h: height,\n          deltaW: deltaW,\n          deltaH: deltaH,\n          contentW: width - deltaW,\n          contentH: height - deltaH,\n          innerW: width - deltaW,\n          innerH: height - deltaH,\n          startMinWidth: startMinWidth || 0,\n          startMinHeight: startMinHeight || 0,\n          minW: Math.min(minWidth, maxW),\n          minH: Math.min(minHeight, maxH),\n          maxW: maxW,\n          maxH: maxH,\n          autoResize: autoResize,\n          scrollW: 0\n        };\n        self$$1._lastLayoutRect = {};\n        return layoutRect;\n      },\n      layoutRect: function (newRect) {\n        var self$$1 = this;\n        var curRect = self$$1._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;\n        if (!curRect) {\n          curRect = self$$1.initLayoutRect();\n        }\n        if (newRect) {\n          deltaWidth = curRect.deltaW;\n          deltaHeight = curRect.deltaH;\n          if (newRect.x !== undefined) {\n            curRect.x = newRect.x;\n          }\n          if (newRect.y !== undefined) {\n            curRect.y = newRect.y;\n          }\n          if (newRect.minW !== undefined) {\n            curRect.minW = newRect.minW;\n          }\n          if (newRect.minH !== undefined) {\n            curRect.minH = newRect.minH;\n          }\n          size = newRect.w;\n          if (size !== undefined) {\n            size = size < curRect.minW ? curRect.minW : size;\n            size = size > curRect.maxW ? curRect.maxW : size;\n            curRect.w = size;\n            curRect.innerW = size - deltaWidth;\n          }\n          size = newRect.h;\n          if (size !== undefined) {\n            size = size < curRect.minH ? curRect.minH : size;\n            size = size > curRect.maxH ? curRect.maxH : size;\n            curRect.h = size;\n            curRect.innerH = size - deltaHeight;\n          }\n          size = newRect.innerW;\n          if (size !== undefined) {\n            size = size < curRect.minW - deltaWidth ? curRect.minW - deltaWidth : size;\n            size = size > curRect.maxW - deltaWidth ? curRect.maxW - deltaWidth : size;\n            curRect.innerW = size;\n            curRect.w = size + deltaWidth;\n          }\n          size = newRect.innerH;\n          if (size !== undefined) {\n            size = size < curRect.minH - deltaHeight ? curRect.minH - deltaHeight : size;\n            size = size > curRect.maxH - deltaHeight ? curRect.maxH - deltaHeight : size;\n            curRect.innerH = size;\n            curRect.h = size + deltaHeight;\n          }\n          if (newRect.contentW !== undefined) {\n            curRect.contentW = newRect.contentW;\n          }\n          if (newRect.contentH !== undefined) {\n            curRect.contentH = newRect.contentH;\n          }\n          lastLayoutRect = self$$1._lastLayoutRect;\n          if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y || lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {\n            repaintControls = Control.repaintControls;\n            if (repaintControls) {\n              if (repaintControls.map && !repaintControls.map[self$$1._id]) {\n                repaintControls.push(self$$1);\n                repaintControls.map[self$$1._id] = true;\n              }\n            }\n            lastLayoutRect.x = curRect.x;\n            lastLayoutRect.y = curRect.y;\n            lastLayoutRect.w = curRect.w;\n            lastLayoutRect.h = curRect.h;\n          }\n          return self$$1;\n        }\n        return curRect;\n      },\n      repaint: function () {\n        var self$$1 = this;\n        var style, bodyStyle, bodyElm, rect, borderBox;\n        var borderW, borderH, lastRepaintRect, round, value;\n        round = !document.createRange ? Math.round : function (value) {\n          return value;\n        };\n        style = self$$1.getEl().style;\n        rect = self$$1._layoutRect;\n        lastRepaintRect = self$$1._lastRepaintRect || {};\n        borderBox = self$$1.borderBox;\n        borderW = borderBox.left + borderBox.right;\n        borderH = borderBox.top + borderBox.bottom;\n        if (rect.x !== lastRepaintRect.x) {\n          style.left = round(rect.x) + 'px';\n          lastRepaintRect.x = rect.x;\n        }\n        if (rect.y !== lastRepaintRect.y) {\n          style.top = round(rect.y) + 'px';\n          lastRepaintRect.y = rect.y;\n        }\n        if (rect.w !== lastRepaintRect.w) {\n          value = round(rect.w - borderW);\n          style.width = (value >= 0 ? value : 0) + 'px';\n          lastRepaintRect.w = rect.w;\n        }\n        if (rect.h !== lastRepaintRect.h) {\n          value = round(rect.h - borderH);\n          style.height = (value >= 0 ? value : 0) + 'px';\n          lastRepaintRect.h = rect.h;\n        }\n        if (self$$1._hasBody && rect.innerW !== lastRepaintRect.innerW) {\n          value = round(rect.innerW);\n          bodyElm = self$$1.getEl('body');\n          if (bodyElm) {\n            bodyStyle = bodyElm.style;\n            bodyStyle.width = (value >= 0 ? value : 0) + 'px';\n          }\n          lastRepaintRect.innerW = rect.innerW;\n        }\n        if (self$$1._hasBody && rect.innerH !== lastRepaintRect.innerH) {\n          value = round(rect.innerH);\n          bodyElm = bodyElm || self$$1.getEl('body');\n          if (bodyElm) {\n            bodyStyle = bodyStyle || bodyElm.style;\n            bodyStyle.height = (value >= 0 ? value : 0) + 'px';\n          }\n          lastRepaintRect.innerH = rect.innerH;\n        }\n        self$$1._lastRepaintRect = lastRepaintRect;\n        self$$1.fire('repaint', {}, false);\n      },\n      updateLayoutRect: function () {\n        var self$$1 = this;\n        self$$1.parent()._lastRect = null;\n        funcs.css(self$$1.getEl(), {\n          width: '',\n          height: ''\n        });\n        self$$1._layoutRect = self$$1._lastRepaintRect = self$$1._lastLayoutRect = null;\n        self$$1.initLayoutRect();\n      },\n      on: function (name$$1, callback) {\n        var self$$1 = this;\n        function resolveCallbackName(name$$1) {\n          var callback, scope;\n          if (typeof name$$1 !== 'string') {\n            return name$$1;\n          }\n          return function (e) {\n            if (!callback) {\n              self$$1.parentsAndSelf().each(function (ctrl) {\n                var callbacks = ctrl.settings.callbacks;\n                if (callbacks && (callback = callbacks[name$$1])) {\n                  scope = ctrl;\n                  return false;\n                }\n              });\n            }\n            if (!callback) {\n              e.action = name$$1;\n              this.fire('execute', e);\n              return;\n            }\n            return callback.call(scope, e);\n          };\n        }\n        getEventDispatcher(self$$1).on(name$$1, resolveCallbackName(callback));\n        return self$$1;\n      },\n      off: function (name$$1, callback) {\n        getEventDispatcher(this).off(name$$1, callback);\n        return this;\n      },\n      fire: function (name$$1, args, bubble) {\n        var self$$1 = this;\n        args = args || {};\n        if (!args.control) {\n          args.control = self$$1;\n        }\n        args = getEventDispatcher(self$$1).fire(name$$1, args);\n        if (bubble !== false && self$$1.parent) {\n          var parent$$1 = self$$1.parent();\n          while (parent$$1 && !args.isPropagationStopped()) {\n            parent$$1.fire(name$$1, args, false);\n            parent$$1 = parent$$1.parent();\n          }\n        }\n        return args;\n      },\n      hasEventListeners: function (name$$1) {\n        return getEventDispatcher(this).has(name$$1);\n      },\n      parents: function (selector) {\n        var self$$1 = this;\n        var ctrl, parents = new Collection$2();\n        for (ctrl = self$$1.parent(); ctrl; ctrl = ctrl.parent()) {\n          parents.add(ctrl);\n        }\n        if (selector) {\n          parents = parents.filter(selector);\n        }\n        return parents;\n      },\n      parentsAndSelf: function (selector) {\n        return new Collection$2(this).add(this.parents(selector));\n      },\n      next: function () {\n        var parentControls = this.parent().items();\n        return parentControls[parentControls.indexOf(this) + 1];\n      },\n      prev: function () {\n        var parentControls = this.parent().items();\n        return parentControls[parentControls.indexOf(this) - 1];\n      },\n      innerHtml: function (html) {\n        this.$el.html(html);\n        return this;\n      },\n      getEl: function (suffix) {\n        var id = suffix ? this._id + '-' + suffix : this._id;\n        if (!this._elmCache[id]) {\n          this._elmCache[id] = global$9('#' + id)[0];\n        }\n        return this._elmCache[id];\n      },\n      show: function () {\n        return this.visible(true);\n      },\n      hide: function () {\n        return this.visible(false);\n      },\n      focus: function () {\n        try {\n          this.getEl().focus();\n        } catch (ex) {\n        }\n        return this;\n      },\n      blur: function () {\n        this.getEl().blur();\n        return this;\n      },\n      aria: function (name$$1, value) {\n        var self$$1 = this, elm = self$$1.getEl(self$$1.ariaTarget);\n        if (typeof value === 'undefined') {\n          return self$$1._aria[name$$1];\n        }\n        self$$1._aria[name$$1] = value;\n        if (self$$1.state.get('rendered')) {\n          elm.setAttribute(name$$1 === 'role' ? name$$1 : 'aria-' + name$$1, value);\n        }\n        return self$$1;\n      },\n      encode: function (text, translate) {\n        if (translate !== false) {\n          text = this.translate(text);\n        }\n        return (text || '').replace(/[&<>\"]/g, function (match) {\n          return '&#' + match.charCodeAt(0) + ';';\n        });\n      },\n      translate: function (text) {\n        return Control.translate ? Control.translate(text) : text;\n      },\n      before: function (items) {\n        var self$$1 = this, parent$$1 = self$$1.parent();\n        if (parent$$1) {\n          parent$$1.insert(items, parent$$1.items().indexOf(self$$1), true);\n        }\n        return self$$1;\n      },\n      after: function (items) {\n        var self$$1 = this, parent$$1 = self$$1.parent();\n        if (parent$$1) {\n          parent$$1.insert(items, parent$$1.items().indexOf(self$$1));\n        }\n        return self$$1;\n      },\n      remove: function () {\n        var self$$1 = this;\n        var elm = self$$1.getEl();\n        var parent$$1 = self$$1.parent();\n        var newItems, i;\n        if (self$$1.items) {\n          var controls = self$$1.items().toArray();\n          i = controls.length;\n          while (i--) {\n            controls[i].remove();\n          }\n        }\n        if (parent$$1 && parent$$1.items) {\n          newItems = [];\n          parent$$1.items().each(function (item) {\n            if (item !== self$$1) {\n              newItems.push(item);\n            }\n          });\n          parent$$1.items().set(newItems);\n          parent$$1._lastRect = null;\n        }\n        if (self$$1._eventsRoot && self$$1._eventsRoot === self$$1) {\n          global$9(elm).off();\n        }\n        var lookup = self$$1.getRoot().controlIdLookup;\n        if (lookup) {\n          delete lookup[self$$1._id];\n        }\n        if (elm && elm.parentNode) {\n          elm.parentNode.removeChild(elm);\n        }\n        self$$1.state.set('rendered', false);\n        self$$1.state.destroy();\n        self$$1.fire('remove');\n        return self$$1;\n      },\n      renderBefore: function (elm) {\n        global$9(elm).before(this.renderHtml());\n        this.postRender();\n        return this;\n      },\n      renderTo: function (elm) {\n        global$9(elm || this.getContainerElm()).append(this.renderHtml());\n        this.postRender();\n        return this;\n      },\n      preRender: function () {\n      },\n      render: function () {\n      },\n      renderHtml: function () {\n        return '<div id=\"' + this._id + '\" class=\"' + this.classes + '\"></div>';\n      },\n      postRender: function () {\n        var self$$1 = this;\n        var settings = self$$1.settings;\n        var elm, box, parent$$1, name$$1, parentEventsRoot;\n        self$$1.$el = global$9(self$$1.getEl());\n        self$$1.state.set('rendered', true);\n        for (name$$1 in settings) {\n          if (name$$1.indexOf('on') === 0) {\n            self$$1.on(name$$1.substr(2), settings[name$$1]);\n          }\n        }\n        if (self$$1._eventsRoot) {\n          for (parent$$1 = self$$1.parent(); !parentEventsRoot && parent$$1; parent$$1 = parent$$1.parent()) {\n            parentEventsRoot = parent$$1._eventsRoot;\n          }\n          if (parentEventsRoot) {\n            for (name$$1 in parentEventsRoot._nativeEvents) {\n              self$$1._nativeEvents[name$$1] = true;\n            }\n          }\n        }\n        bindPendingEvents(self$$1);\n        if (settings.style) {\n          elm = self$$1.getEl();\n          if (elm) {\n            elm.setAttribute('style', settings.style);\n            elm.style.cssText = settings.style;\n          }\n        }\n        if (self$$1.settings.border) {\n          box = self$$1.borderBox;\n          self$$1.$el.css({\n            'border-top-width': box.top,\n            'border-right-width': box.right,\n            'border-bottom-width': box.bottom,\n            'border-left-width': box.left\n          });\n        }\n        var root = self$$1.getRoot();\n        if (!root.controlIdLookup) {\n          root.controlIdLookup = {};\n        }\n        root.controlIdLookup[self$$1._id] = self$$1;\n        for (var key in self$$1._aria) {\n          self$$1.aria(key, self$$1._aria[key]);\n        }\n        if (self$$1.state.get('visible') === false) {\n          self$$1.getEl().style.display = 'none';\n        }\n        self$$1.bindStates();\n        self$$1.state.on('change:visible', function (e) {\n          var state = e.value;\n          var parentCtrl;\n          if (self$$1.state.get('rendered')) {\n            self$$1.getEl().style.display = state === false ? 'none' : '';\n            self$$1.getEl().getBoundingClientRect();\n          }\n          parentCtrl = self$$1.parent();\n          if (parentCtrl) {\n            parentCtrl._lastRect = null;\n          }\n          self$$1.fire(state ? 'show' : 'hide');\n          ReflowQueue.add(self$$1);\n        });\n        self$$1.fire('postrender', {}, false);\n      },\n      bindStates: function () {\n      },\n      scrollIntoView: function (align) {\n        function getOffset(elm, rootElm) {\n          var x, y, parent$$1 = elm;\n          x = y = 0;\n          while (parent$$1 && parent$$1 !== rootElm && parent$$1.nodeType) {\n            x += parent$$1.offsetLeft || 0;\n            y += parent$$1.offsetTop || 0;\n            parent$$1 = parent$$1.offsetParent;\n          }\n          return {\n            x: x,\n            y: y\n          };\n        }\n        var elm = this.getEl(), parentElm = elm.parentNode;\n        var x, y, width, height, parentWidth, parentHeight;\n        var pos = getOffset(elm, parentElm);\n        x = pos.x;\n        y = pos.y;\n        width = elm.offsetWidth;\n        height = elm.offsetHeight;\n        parentWidth = parentElm.clientWidth;\n        parentHeight = parentElm.clientHeight;\n        if (align === 'end') {\n          x -= parentWidth - width;\n          y -= parentHeight - height;\n        } else if (align === 'center') {\n          x -= parentWidth / 2 - width / 2;\n          y -= parentHeight / 2 - height / 2;\n        }\n        parentElm.scrollLeft = x;\n        parentElm.scrollTop = y;\n        return this;\n      },\n      getRoot: function () {\n        var ctrl = this, rootControl;\n        var parents = [];\n        while (ctrl) {\n          if (ctrl.rootControl) {\n            rootControl = ctrl.rootControl;\n            break;\n          }\n          parents.push(ctrl);\n          rootControl = ctrl;\n          ctrl = ctrl.parent();\n        }\n        if (!rootControl) {\n          rootControl = this;\n        }\n        var i = parents.length;\n        while (i--) {\n          parents[i].rootControl = rootControl;\n        }\n        return rootControl;\n      },\n      reflow: function () {\n        ReflowQueue.remove(this);\n        var parent$$1 = this.parent();\n        if (parent$$1 && parent$$1._layout && !parent$$1._layout.isNative()) {\n          parent$$1.reflow();\n        }\n        return this;\n      }\n    };\n    global$2.each('text title visible disabled active value'.split(' '), function (name$$1) {\n      proto$1[name$$1] = function (value) {\n        if (arguments.length === 0) {\n          return this.state.get(name$$1);\n        }\n        if (typeof value !== 'undefined') {\n          this.state.set(name$$1, value);\n        }\n        return this;\n      };\n    });\n    Control = global$a.extend(proto$1);\n    function getEventDispatcher(obj) {\n      if (!obj._eventDispatcher) {\n        obj._eventDispatcher = new global$b({\n          scope: obj,\n          toggleEvent: function (name$$1, state) {\n            if (state && global$b.isNative(name$$1)) {\n              if (!obj._nativeEvents) {\n                obj._nativeEvents = {};\n              }\n              obj._nativeEvents[name$$1] = true;\n              if (obj.state.get('rendered')) {\n                bindPendingEvents(obj);\n              }\n            }\n          }\n        });\n      }\n      return obj._eventDispatcher;\n    }\n    function bindPendingEvents(eventCtrl) {\n      var i, l, parents, eventRootCtrl, nativeEvents, name$$1;\n      function delegate(e) {\n        var control = eventCtrl.getParentCtrl(e.target);\n        if (control) {\n          control.fire(e.type, e);\n        }\n      }\n      function mouseLeaveHandler() {\n        var ctrl = eventRootCtrl._lastHoverCtrl;\n        if (ctrl) {\n          ctrl.fire('mouseleave', { target: ctrl.getEl() });\n          ctrl.parents().each(function (ctrl) {\n            ctrl.fire('mouseleave', { target: ctrl.getEl() });\n          });\n          eventRootCtrl._lastHoverCtrl = null;\n        }\n      }\n      function mouseEnterHandler(e) {\n        var ctrl = eventCtrl.getParentCtrl(e.target), lastCtrl = eventRootCtrl._lastHoverCtrl, idx = 0, i, parents, lastParents;\n        if (ctrl !== lastCtrl) {\n          eventRootCtrl._lastHoverCtrl = ctrl;\n          parents = ctrl.parents().toArray().reverse();\n          parents.push(ctrl);\n          if (lastCtrl) {\n            lastParents = lastCtrl.parents().toArray().reverse();\n            lastParents.push(lastCtrl);\n            for (idx = 0; idx < lastParents.length; idx++) {\n              if (parents[idx] !== lastParents[idx]) {\n                break;\n              }\n            }\n            for (i = lastParents.length - 1; i >= idx; i--) {\n              lastCtrl = lastParents[i];\n              lastCtrl.fire('mouseleave', { target: lastCtrl.getEl() });\n            }\n          }\n          for (i = idx; i < parents.length; i++) {\n            ctrl = parents[i];\n            ctrl.fire('mouseenter', { target: ctrl.getEl() });\n          }\n        }\n      }\n      function fixWheelEvent(e) {\n        e.preventDefault();\n        if (e.type === 'mousewheel') {\n          e.deltaY = -1 / 40 * e.wheelDelta;\n          if (e.wheelDeltaX) {\n            e.deltaX = -1 / 40 * e.wheelDeltaX;\n          }\n        } else {\n          e.deltaX = 0;\n          e.deltaY = e.detail;\n        }\n        e = eventCtrl.fire('wheel', e);\n      }\n      nativeEvents = eventCtrl._nativeEvents;\n      if (nativeEvents) {\n        parents = eventCtrl.parents().toArray();\n        parents.unshift(eventCtrl);\n        for (i = 0, l = parents.length; !eventRootCtrl && i < l; i++) {\n          eventRootCtrl = parents[i]._eventsRoot;\n        }\n        if (!eventRootCtrl) {\n          eventRootCtrl = parents[parents.length - 1] || eventCtrl;\n        }\n        eventCtrl._eventsRoot = eventRootCtrl;\n        for (l = i, i = 0; i < l; i++) {\n          parents[i]._eventsRoot = eventRootCtrl;\n        }\n        var eventRootDelegates = eventRootCtrl._delegates;\n        if (!eventRootDelegates) {\n          eventRootDelegates = eventRootCtrl._delegates = {};\n        }\n        for (name$$1 in nativeEvents) {\n          if (!nativeEvents) {\n            return false;\n          }\n          if (name$$1 === 'wheel' && !hasWheelEventSupport) {\n            if (hasMouseWheelEventSupport) {\n              global$9(eventCtrl.getEl()).on('mousewheel', fixWheelEvent);\n            } else {\n              global$9(eventCtrl.getEl()).on('DOMMouseScroll', fixWheelEvent);\n            }\n            continue;\n          }\n          if (name$$1 === 'mouseenter' || name$$1 === 'mouseleave') {\n            if (!eventRootCtrl._hasMouseEnter) {\n              global$9(eventRootCtrl.getEl()).on('mouseleave', mouseLeaveHandler).on('mouseover', mouseEnterHandler);\n              eventRootCtrl._hasMouseEnter = 1;\n            }\n          } else if (!eventRootDelegates[name$$1]) {\n            global$9(eventRootCtrl.getEl()).on(name$$1, delegate);\n            eventRootDelegates[name$$1] = true;\n          }\n          nativeEvents[name$$1] = false;\n        }\n      }\n    }\n    var Control$1 = Control;\n\n    var hasTabstopData = function (elm) {\n      return elm.getAttribute('data-mce-tabstop') ? true : false;\n    };\n    function KeyboardNavigation (settings) {\n      var root = settings.root;\n      var focusedElement, focusedControl;\n      function isElement(node) {\n        return node && node.nodeType === 1;\n      }\n      try {\n        focusedElement = document.activeElement;\n      } catch (ex) {\n        focusedElement = document.body;\n      }\n      focusedControl = root.getParentCtrl(focusedElement);\n      function getRole(elm) {\n        elm = elm || focusedElement;\n        if (isElement(elm)) {\n          return elm.getAttribute('role');\n        }\n        return null;\n      }\n      function getParentRole(elm) {\n        var role, parent$$1 = elm || focusedElement;\n        while (parent$$1 = parent$$1.parentNode) {\n          if (role = getRole(parent$$1)) {\n            return role;\n          }\n        }\n      }\n      function getAriaProp(name$$1) {\n        var elm = focusedElement;\n        if (isElement(elm)) {\n          return elm.getAttribute('aria-' + name$$1);\n        }\n      }\n      function isTextInputElement(elm) {\n        var tagName = elm.tagName.toUpperCase();\n        return tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT';\n      }\n      function canFocus(elm) {\n        if (isTextInputElement(elm) && !elm.hidden) {\n          return true;\n        }\n        if (hasTabstopData(elm)) {\n          return true;\n        }\n        if (/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(getRole(elm))) {\n          return true;\n        }\n        return false;\n      }\n      function getFocusElements(elm) {\n        var elements = [];\n        function collect(elm) {\n          if (elm.nodeType !== 1 || elm.style.display === 'none' || elm.disabled) {\n            return;\n          }\n          if (canFocus(elm)) {\n            elements.push(elm);\n          }\n          for (var i = 0; i < elm.childNodes.length; i++) {\n            collect(elm.childNodes[i]);\n          }\n        }\n        collect(elm || root.getEl());\n        return elements;\n      }\n      function getNavigationRoot(targetControl) {\n        var navigationRoot, controls;\n        targetControl = targetControl || focusedControl;\n        controls = targetControl.parents().toArray();\n        controls.unshift(targetControl);\n        for (var i = 0; i < controls.length; i++) {\n          navigationRoot = controls[i];\n          if (navigationRoot.settings.ariaRoot) {\n            break;\n          }\n        }\n        return navigationRoot;\n      }\n      function focusFirst(targetControl) {\n        var navigationRoot = getNavigationRoot(targetControl);\n        var focusElements = getFocusElements(navigationRoot.getEl());\n        if (navigationRoot.settings.ariaRemember && 'lastAriaIndex' in navigationRoot) {\n          moveFocusToIndex(navigationRoot.lastAriaIndex, focusElements);\n        } else {\n          moveFocusToIndex(0, focusElements);\n        }\n      }\n      function moveFocusToIndex(idx, elements) {\n        if (idx < 0) {\n          idx = elements.length - 1;\n        } else if (idx >= elements.length) {\n          idx = 0;\n        }\n        if (elements[idx]) {\n          elements[idx].focus();\n        }\n        return idx;\n      }\n      function moveFocus(dir, elements) {\n        var idx = -1;\n        var navigationRoot = getNavigationRoot();\n        elements = elements || getFocusElements(navigationRoot.getEl());\n        for (var i = 0; i < elements.length; i++) {\n          if (elements[i] === focusedElement) {\n            idx = i;\n          }\n        }\n        idx += dir;\n        navigationRoot.lastAriaIndex = moveFocusToIndex(idx, elements);\n      }\n      function left() {\n        var parentRole = getParentRole();\n        if (parentRole === 'tablist') {\n          moveFocus(-1, getFocusElements(focusedElement.parentNode));\n        } else if (focusedControl.parent().submenu) {\n          cancel();\n        } else {\n          moveFocus(-1);\n        }\n      }\n      function right() {\n        var role = getRole(), parentRole = getParentRole();\n        if (parentRole === 'tablist') {\n          moveFocus(1, getFocusElements(focusedElement.parentNode));\n        } else if (role === 'menuitem' && parentRole === 'menu' && getAriaProp('haspopup')) {\n          enter();\n        } else {\n          moveFocus(1);\n        }\n      }\n      function up() {\n        moveFocus(-1);\n      }\n      function down() {\n        var role = getRole(), parentRole = getParentRole();\n        if (role === 'menuitem' && parentRole === 'menubar') {\n          enter();\n        } else if (role === 'button' && getAriaProp('haspopup')) {\n          enter({ key: 'down' });\n        } else {\n          moveFocus(1);\n        }\n      }\n      function tab(e) {\n        var parentRole = getParentRole();\n        if (parentRole === 'tablist') {\n          var elm = getFocusElements(focusedControl.getEl('body'))[0];\n          if (elm) {\n            elm.focus();\n          }\n        } else {\n          moveFocus(e.shiftKey ? -1 : 1);\n        }\n      }\n      function cancel() {\n        focusedControl.fire('cancel');\n      }\n      function enter(aria) {\n        aria = aria || {};\n        focusedControl.fire('click', {\n          target: focusedElement,\n          aria: aria\n        });\n      }\n      root.on('keydown', function (e) {\n        function handleNonTabOrEscEvent(e, handler) {\n          if (isTextInputElement(focusedElement) || hasTabstopData(focusedElement)) {\n            return;\n          }\n          if (getRole(focusedElement) === 'slider') {\n            return;\n          }\n          if (handler(e) !== false) {\n            e.preventDefault();\n          }\n        }\n        if (e.isDefaultPrevented()) {\n          return;\n        }\n        switch (e.keyCode) {\n        case 37:\n          handleNonTabOrEscEvent(e, left);\n          break;\n        case 39:\n          handleNonTabOrEscEvent(e, right);\n          break;\n        case 38:\n          handleNonTabOrEscEvent(e, up);\n          break;\n        case 40:\n          handleNonTabOrEscEvent(e, down);\n          break;\n        case 27:\n          cancel();\n          break;\n        case 14:\n        case 13:\n        case 32:\n          handleNonTabOrEscEvent(e, enter);\n          break;\n        case 9:\n          tab(e);\n          e.preventDefault();\n          break;\n        }\n      });\n      root.on('focusin', function (e) {\n        focusedElement = e.target;\n        focusedControl = e.control;\n      });\n      return { focusFirst: focusFirst };\n    }\n\n    var selectorCache = {};\n    var Container = Control$1.extend({\n      init: function (settings) {\n        var self = this;\n        self._super(settings);\n        settings = self.settings;\n        if (settings.fixed) {\n          self.state.set('fixed', true);\n        }\n        self._items = new Collection$2();\n        if (self.isRtl()) {\n          self.classes.add('rtl');\n        }\n        self.bodyClasses = new ClassList(function () {\n          if (self.state.get('rendered')) {\n            self.getEl('body').className = this.toString();\n          }\n        });\n        self.bodyClasses.prefix = self.classPrefix;\n        self.classes.add('container');\n        self.bodyClasses.add('container-body');\n        if (settings.containerCls) {\n          self.classes.add(settings.containerCls);\n        }\n        self._layout = global$4.create((settings.layout || '') + 'layout');\n        if (self.settings.items) {\n          self.add(self.settings.items);\n        } else {\n          self.add(self.render());\n        }\n        self._hasBody = true;\n      },\n      items: function () {\n        return this._items;\n      },\n      find: function (selector) {\n        selector = selectorCache[selector] = selectorCache[selector] || new Selector(selector);\n        return selector.find(this);\n      },\n      add: function (items) {\n        var self = this;\n        self.items().add(self.create(items)).parent(self);\n        return self;\n      },\n      focus: function (keyboard) {\n        var self = this;\n        var focusCtrl, keyboardNav, items;\n        if (keyboard) {\n          keyboardNav = self.keyboardNav || self.parents().eq(-1)[0].keyboardNav;\n          if (keyboardNav) {\n            keyboardNav.focusFirst(self);\n            return;\n          }\n        }\n        items = self.find('*');\n        if (self.statusbar) {\n          items.add(self.statusbar.items());\n        }\n        items.each(function (ctrl) {\n          if (ctrl.settings.autofocus) {\n            focusCtrl = null;\n            return false;\n          }\n          if (ctrl.canFocus) {\n            focusCtrl = focusCtrl || ctrl;\n          }\n        });\n        if (focusCtrl) {\n          focusCtrl.focus();\n        }\n        return self;\n      },\n      replace: function (oldItem, newItem) {\n        var ctrlElm;\n        var items = this.items();\n        var i = items.length;\n        while (i--) {\n          if (items[i] === oldItem) {\n            items[i] = newItem;\n            break;\n          }\n        }\n        if (i >= 0) {\n          ctrlElm = newItem.getEl();\n          if (ctrlElm) {\n            ctrlElm.parentNode.removeChild(ctrlElm);\n          }\n          ctrlElm = oldItem.getEl();\n          if (ctrlElm) {\n            ctrlElm.parentNode.removeChild(ctrlElm);\n          }\n        }\n        newItem.parent(this);\n      },\n      create: function (items) {\n        var self = this;\n        var settings;\n        var ctrlItems = [];\n        if (!global$2.isArray(items)) {\n          items = [items];\n        }\n        global$2.each(items, function (item) {\n          if (item) {\n            if (!(item instanceof Control$1)) {\n              if (typeof item === 'string') {\n                item = { type: item };\n              }\n              settings = global$2.extend({}, self.settings.defaults, item);\n              item.type = settings.type = settings.type || item.type || self.settings.defaultType || (settings.defaults ? settings.defaults.type : null);\n              item = global$4.create(settings);\n            }\n            ctrlItems.push(item);\n          }\n        });\n        return ctrlItems;\n      },\n      renderNew: function () {\n        var self = this;\n        self.items().each(function (ctrl, index) {\n          var containerElm;\n          ctrl.parent(self);\n          if (!ctrl.state.get('rendered')) {\n            containerElm = self.getEl('body');\n            if (containerElm.hasChildNodes() && index <= containerElm.childNodes.length - 1) {\n              global$9(containerElm.childNodes[index]).before(ctrl.renderHtml());\n            } else {\n              global$9(containerElm).append(ctrl.renderHtml());\n            }\n            ctrl.postRender();\n            ReflowQueue.add(ctrl);\n          }\n        });\n        self._layout.applyClasses(self.items().filter(':visible'));\n        self._lastRect = null;\n        return self;\n      },\n      append: function (items) {\n        return this.add(items).renderNew();\n      },\n      prepend: function (items) {\n        var self = this;\n        self.items().set(self.create(items).concat(self.items().toArray()));\n        return self.renderNew();\n      },\n      insert: function (items, index, before) {\n        var self = this;\n        var curItems, beforeItems, afterItems;\n        items = self.create(items);\n        curItems = self.items();\n        if (!before && index < curItems.length - 1) {\n          index += 1;\n        }\n        if (index >= 0 && index < curItems.length) {\n          beforeItems = curItems.slice(0, index).toArray();\n          afterItems = curItems.slice(index).toArray();\n          curItems.set(beforeItems.concat(items, afterItems));\n        }\n        return self.renderNew();\n      },\n      fromJSON: function (data) {\n        var self = this;\n        for (var name in data) {\n          self.find('#' + name).value(data[name]);\n        }\n        return self;\n      },\n      toJSON: function () {\n        var self = this, data = {};\n        self.find('*').each(function (ctrl) {\n          var name = ctrl.name(), value = ctrl.value();\n          if (name && typeof value !== 'undefined') {\n            data[name] = value;\n          }\n        });\n        return data;\n      },\n      renderHtml: function () {\n        var self = this, layout = self._layout, role = this.settings.role;\n        self.preRender();\n        layout.preRender(self);\n        return '<div id=\"' + self._id + '\" class=\"' + self.classes + '\"' + (role ? ' role=\"' + this.settings.role + '\"' : '') + '>' + '<div id=\"' + self._id + '-body\" class=\"' + self.bodyClasses + '\">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';\n      },\n      postRender: function () {\n        var self = this;\n        var box;\n        self.items().exec('postRender');\n        self._super();\n        self._layout.postRender(self);\n        self.state.set('rendered', true);\n        if (self.settings.style) {\n          self.$el.css(self.settings.style);\n        }\n        if (self.settings.border) {\n          box = self.borderBox;\n          self.$el.css({\n            'border-top-width': box.top,\n            'border-right-width': box.right,\n            'border-bottom-width': box.bottom,\n            'border-left-width': box.left\n          });\n        }\n        if (!self.parent()) {\n          self.keyboardNav = KeyboardNavigation({ root: self });\n        }\n        return self;\n      },\n      initLayoutRect: function () {\n        var self = this, layoutRect = self._super();\n        self._layout.recalc(self);\n        return layoutRect;\n      },\n      recalc: function () {\n        var self = this;\n        var rect = self._layoutRect;\n        var lastRect = self._lastRect;\n        if (!lastRect || lastRect.w !== rect.w || lastRect.h !== rect.h) {\n          self._layout.recalc(self);\n          rect = self.layoutRect();\n          self._lastRect = {\n            x: rect.x,\n            y: rect.y,\n            w: rect.w,\n            h: rect.h\n          };\n          return true;\n        }\n      },\n      reflow: function () {\n        var i;\n        ReflowQueue.remove(this);\n        if (this.visible()) {\n          Control$1.repaintControls = [];\n          Control$1.repaintControls.map = {};\n          this.recalc();\n          i = Control$1.repaintControls.length;\n          while (i--) {\n            Control$1.repaintControls[i].repaint();\n          }\n          if (this.settings.layout !== 'flow' && this.settings.layout !== 'stack') {\n            this.repaint();\n          }\n          Control$1.repaintControls = [];\n        }\n        return this;\n      }\n    });\n\n    function getDocumentSize(doc) {\n      var documentElement, body, scrollWidth, clientWidth;\n      var offsetWidth, scrollHeight, clientHeight, offsetHeight;\n      var max = Math.max;\n      documentElement = doc.documentElement;\n      body = doc.body;\n      scrollWidth = max(documentElement.scrollWidth, body.scrollWidth);\n      clientWidth = max(documentElement.clientWidth, body.clientWidth);\n      offsetWidth = max(documentElement.offsetWidth, body.offsetWidth);\n      scrollHeight = max(documentElement.scrollHeight, body.scrollHeight);\n      clientHeight = max(documentElement.clientHeight, body.clientHeight);\n      offsetHeight = max(documentElement.offsetHeight, body.offsetHeight);\n      return {\n        width: scrollWidth < offsetWidth ? clientWidth : scrollWidth,\n        height: scrollHeight < offsetHeight ? clientHeight : scrollHeight\n      };\n    }\n    function updateWithTouchData(e) {\n      var keys, i;\n      if (e.changedTouches) {\n        keys = 'screenX screenY pageX pageY clientX clientY'.split(' ');\n        for (i = 0; i < keys.length; i++) {\n          e[keys[i]] = e.changedTouches[0][keys[i]];\n        }\n      }\n    }\n    function DragHelper (id, settings) {\n      var $eventOverlay;\n      var doc = settings.document || document;\n      var downButton;\n      var start, stop$$1, drag, startX, startY;\n      settings = settings || {};\n      var handleElement = doc.getElementById(settings.handle || id);\n      start = function (e) {\n        var docSize = getDocumentSize(doc);\n        var handleElm, cursor;\n        updateWithTouchData(e);\n        e.preventDefault();\n        downButton = e.button;\n        handleElm = handleElement;\n        startX = e.screenX;\n        startY = e.screenY;\n        if (window.getComputedStyle) {\n          cursor = window.getComputedStyle(handleElm, null).getPropertyValue('cursor');\n        } else {\n          cursor = handleElm.runtimeStyle.cursor;\n        }\n        $eventOverlay = global$9('<div></div>').css({\n          position: 'absolute',\n          top: 0,\n          left: 0,\n          width: docSize.width,\n          height: docSize.height,\n          zIndex: 2147483647,\n          opacity: 0.0001,\n          cursor: cursor\n        }).appendTo(doc.body);\n        global$9(doc).on('mousemove touchmove', drag).on('mouseup touchend', stop$$1);\n        settings.start(e);\n      };\n      drag = function (e) {\n        updateWithTouchData(e);\n        if (e.button !== downButton) {\n          return stop$$1(e);\n        }\n        e.deltaX = e.screenX - startX;\n        e.deltaY = e.screenY - startY;\n        e.preventDefault();\n        settings.drag(e);\n      };\n      stop$$1 = function (e) {\n        updateWithTouchData(e);\n        global$9(doc).off('mousemove touchmove', drag).off('mouseup touchend', stop$$1);\n        $eventOverlay.remove();\n        if (settings.stop) {\n          settings.stop(e);\n        }\n      };\n      this.destroy = function () {\n        global$9(handleElement).off();\n      };\n      global$9(handleElement).on('mousedown touchstart', start);\n    }\n\n    var Scrollable = {\n      init: function () {\n        var self = this;\n        self.on('repaint', self.renderScroll);\n      },\n      renderScroll: function () {\n        var self = this, margin = 2;\n        function repaintScroll() {\n          var hasScrollH, hasScrollV, bodyElm;\n          function repaintAxis(axisName, posName, sizeName, contentSizeName, hasScroll, ax) {\n            var containerElm, scrollBarElm, scrollThumbElm;\n            var containerSize, scrollSize, ratio, rect;\n            var posNameLower, sizeNameLower;\n            scrollBarElm = self.getEl('scroll' + axisName);\n            if (scrollBarElm) {\n              posNameLower = posName.toLowerCase();\n              sizeNameLower = sizeName.toLowerCase();\n              global$9(self.getEl('absend')).css(posNameLower, self.layoutRect()[contentSizeName] - 1);\n              if (!hasScroll) {\n                global$9(scrollBarElm).css('display', 'none');\n                return;\n              }\n              global$9(scrollBarElm).css('display', 'block');\n              containerElm = self.getEl('body');\n              scrollThumbElm = self.getEl('scroll' + axisName + 't');\n              containerSize = containerElm['client' + sizeName] - margin * 2;\n              containerSize -= hasScrollH && hasScrollV ? scrollBarElm['client' + ax] : 0;\n              scrollSize = containerElm['scroll' + sizeName];\n              ratio = containerSize / scrollSize;\n              rect = {};\n              rect[posNameLower] = containerElm['offset' + posName] + margin;\n              rect[sizeNameLower] = containerSize;\n              global$9(scrollBarElm).css(rect);\n              rect = {};\n              rect[posNameLower] = containerElm['scroll' + posName] * ratio;\n              rect[sizeNameLower] = containerSize * ratio;\n              global$9(scrollThumbElm).css(rect);\n            }\n          }\n          bodyElm = self.getEl('body');\n          hasScrollH = bodyElm.scrollWidth > bodyElm.clientWidth;\n          hasScrollV = bodyElm.scrollHeight > bodyElm.clientHeight;\n          repaintAxis('h', 'Left', 'Width', 'contentW', hasScrollH, 'Height');\n          repaintAxis('v', 'Top', 'Height', 'contentH', hasScrollV, 'Width');\n        }\n        function addScroll() {\n          function addScrollAxis(axisName, posName, sizeName, deltaPosName, ax) {\n            var scrollStart;\n            var axisId = self._id + '-scroll' + axisName, prefix = self.classPrefix;\n            global$9(self.getEl()).append('<div id=\"' + axisId + '\" class=\"' + prefix + 'scrollbar ' + prefix + 'scrollbar-' + axisName + '\">' + '<div id=\"' + axisId + 't\" class=\"' + prefix + 'scrollbar-thumb\"></div>' + '</div>');\n            self.draghelper = new DragHelper(axisId + 't', {\n              start: function () {\n                scrollStart = self.getEl('body')['scroll' + posName];\n                global$9('#' + axisId).addClass(prefix + 'active');\n              },\n              drag: function (e) {\n                var ratio, hasScrollH, hasScrollV, containerSize;\n                var layoutRect = self.layoutRect();\n                hasScrollH = layoutRect.contentW > layoutRect.innerW;\n                hasScrollV = layoutRect.contentH > layoutRect.innerH;\n                containerSize = self.getEl('body')['client' + sizeName] - margin * 2;\n                containerSize -= hasScrollH && hasScrollV ? self.getEl('scroll' + axisName)['client' + ax] : 0;\n                ratio = containerSize / self.getEl('body')['scroll' + sizeName];\n                self.getEl('body')['scroll' + posName] = scrollStart + e['delta' + deltaPosName] / ratio;\n              },\n              stop: function () {\n                global$9('#' + axisId).removeClass(prefix + 'active');\n              }\n            });\n          }\n          self.classes.add('scroll');\n          addScrollAxis('v', 'Top', 'Height', 'Y', 'Width');\n          addScrollAxis('h', 'Left', 'Width', 'X', 'Height');\n        }\n        if (self.settings.autoScroll) {\n          if (!self._hasScroll) {\n            self._hasScroll = true;\n            addScroll();\n            self.on('wheel', function (e) {\n              var bodyEl = self.getEl('body');\n              bodyEl.scrollLeft += (e.deltaX || 0) * 10;\n              bodyEl.scrollTop += e.deltaY * 10;\n              repaintScroll();\n            });\n            global$9(self.getEl('body')).on('scroll', repaintScroll);\n          }\n          repaintScroll();\n        }\n      }\n    };\n\n    var Panel = Container.extend({\n      Defaults: {\n        layout: 'fit',\n        containerCls: 'panel'\n      },\n      Mixins: [Scrollable],\n      renderHtml: function () {\n        var self = this;\n        var layout = self._layout;\n        var innerHtml = self.settings.html;\n        self.preRender();\n        layout.preRender(self);\n        if (typeof innerHtml === 'undefined') {\n          innerHtml = '<div id=\"' + self._id + '-body\" class=\"' + self.bodyClasses + '\">' + layout.renderHtml(self) + '</div>';\n        } else {\n          if (typeof innerHtml === 'function') {\n            innerHtml = innerHtml.call(self);\n          }\n          self._hasBody = false;\n        }\n        return '<div id=\"' + self._id + '\" class=\"' + self.classes + '\" hidefocus=\"1\" tabindex=\"-1\" role=\"group\">' + (self._preBodyHtml || '') + innerHtml + '</div>';\n      }\n    });\n\n    var Resizable = {\n      resizeToContent: function () {\n        this._layoutRect.autoResize = true;\n        this._lastRect = null;\n        this.reflow();\n      },\n      resizeTo: function (w, h) {\n        if (w <= 1 || h <= 1) {\n          var rect = funcs.getWindowSize();\n          w = w <= 1 ? w * rect.w : w;\n          h = h <= 1 ? h * rect.h : h;\n        }\n        this._layoutRect.autoResize = false;\n        return this.layoutRect({\n          minW: w,\n          minH: h,\n          w: w,\n          h: h\n        }).reflow();\n      },\n      resizeBy: function (dw, dh) {\n        var self = this, rect = self.layoutRect();\n        return self.resizeTo(rect.w + dw, rect.h + dh);\n      }\n    };\n\n    var documentClickHandler, documentScrollHandler, windowResizeHandler;\n    var visiblePanels = [];\n    var zOrder = [];\n    var hasModal;\n    function isChildOf(ctrl, parent$$1) {\n      while (ctrl) {\n        if (ctrl === parent$$1) {\n          return true;\n        }\n        ctrl = ctrl.parent();\n      }\n    }\n    function skipOrHidePanels(e) {\n      var i = visiblePanels.length;\n      while (i--) {\n        var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);\n        if (panel.settings.autohide) {\n          if (clickCtrl) {\n            if (isChildOf(clickCtrl, panel) || panel.parent() === clickCtrl) {\n              continue;\n            }\n          }\n          e = panel.fire('autohide', { target: e.target });\n          if (!e.isDefaultPrevented()) {\n            panel.hide();\n          }\n        }\n      }\n    }\n    function bindDocumentClickHandler() {\n      if (!documentClickHandler) {\n        documentClickHandler = function (e) {\n          if (e.button === 2) {\n            return;\n          }\n          skipOrHidePanels(e);\n        };\n        global$9(document).on('click touchstart', documentClickHandler);\n      }\n    }\n    function bindDocumentScrollHandler() {\n      if (!documentScrollHandler) {\n        documentScrollHandler = function () {\n          var i;\n          i = visiblePanels.length;\n          while (i--) {\n            repositionPanel(visiblePanels[i]);\n          }\n        };\n        global$9(window).on('scroll', documentScrollHandler);\n      }\n    }\n    function bindWindowResizeHandler() {\n      if (!windowResizeHandler) {\n        var docElm_1 = document.documentElement;\n        var clientWidth_1 = docElm_1.clientWidth, clientHeight_1 = docElm_1.clientHeight;\n        windowResizeHandler = function () {\n          if (!document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {\n            clientWidth_1 = docElm_1.clientWidth;\n            clientHeight_1 = docElm_1.clientHeight;\n            FloatPanel.hideAll();\n          }\n        };\n        global$9(window).on('resize', windowResizeHandler);\n      }\n    }\n    function repositionPanel(panel) {\n      var scrollY$$1 = funcs.getViewPort().y;\n      function toggleFixedChildPanels(fixed, deltaY) {\n        var parent$$1;\n        for (var i = 0; i < visiblePanels.length; i++) {\n          if (visiblePanels[i] !== panel) {\n            parent$$1 = visiblePanels[i].parent();\n            while (parent$$1 && (parent$$1 = parent$$1.parent())) {\n              if (parent$$1 === panel) {\n                visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();\n              }\n            }\n          }\n        }\n      }\n      if (panel.settings.autofix) {\n        if (!panel.state.get('fixed')) {\n          panel._autoFixY = panel.layoutRect().y;\n          if (panel._autoFixY < scrollY$$1) {\n            panel.fixed(true).layoutRect({ y: 0 }).repaint();\n            toggleFixedChildPanels(true, scrollY$$1 - panel._autoFixY);\n          }\n        } else {\n          if (panel._autoFixY > scrollY$$1) {\n            panel.fixed(false).layoutRect({ y: panel._autoFixY }).repaint();\n            toggleFixedChildPanels(false, panel._autoFixY - scrollY$$1);\n          }\n        }\n      }\n    }\n    function addRemove(add, ctrl) {\n      var i, zIndex = FloatPanel.zIndex || 65535, topModal;\n      if (add) {\n        zOrder.push(ctrl);\n      } else {\n        i = zOrder.length;\n        while (i--) {\n          if (zOrder[i] === ctrl) {\n            zOrder.splice(i, 1);\n          }\n        }\n      }\n      if (zOrder.length) {\n        for (i = 0; i < zOrder.length; i++) {\n          if (zOrder[i].modal) {\n            zIndex++;\n            topModal = zOrder[i];\n          }\n          zOrder[i].getEl().style.zIndex = zIndex;\n          zOrder[i].zIndex = zIndex;\n          zIndex++;\n        }\n      }\n      var modalBlockEl = global$9('#' + ctrl.classPrefix + 'modal-block', ctrl.getContainerElm())[0];\n      if (topModal) {\n        global$9(modalBlockEl).css('z-index', topModal.zIndex - 1);\n      } else if (modalBlockEl) {\n        modalBlockEl.parentNode.removeChild(modalBlockEl);\n        hasModal = false;\n      }\n      FloatPanel.currentZIndex = zIndex;\n    }\n    var FloatPanel = Panel.extend({\n      Mixins: [\n        Movable,\n        Resizable\n      ],\n      init: function (settings) {\n        var self$$1 = this;\n        self$$1._super(settings);\n        self$$1._eventsRoot = self$$1;\n        self$$1.classes.add('floatpanel');\n        if (settings.autohide) {\n          bindDocumentClickHandler();\n          bindWindowResizeHandler();\n          visiblePanels.push(self$$1);\n        }\n        if (settings.autofix) {\n          bindDocumentScrollHandler();\n          self$$1.on('move', function () {\n            repositionPanel(this);\n          });\n        }\n        self$$1.on('postrender show', function (e) {\n          if (e.control === self$$1) {\n            var $modalBlockEl_1;\n            var prefix_1 = self$$1.classPrefix;\n            if (self$$1.modal && !hasModal) {\n              $modalBlockEl_1 = global$9('#' + prefix_1 + 'modal-block', self$$1.getContainerElm());\n              if (!$modalBlockEl_1[0]) {\n                $modalBlockEl_1 = global$9('<div id=\"' + prefix_1 + 'modal-block\" class=\"' + prefix_1 + 'reset ' + prefix_1 + 'fade\"></div>').appendTo(self$$1.getContainerElm());\n              }\n              global$7.setTimeout(function () {\n                $modalBlockEl_1.addClass(prefix_1 + 'in');\n                global$9(self$$1.getEl()).addClass(prefix_1 + 'in');\n              });\n              hasModal = true;\n            }\n            addRemove(true, self$$1);\n          }\n        });\n        self$$1.on('show', function () {\n          self$$1.parents().each(function (ctrl) {\n            if (ctrl.state.get('fixed')) {\n              self$$1.fixed(true);\n              return false;\n            }\n          });\n        });\n        if (settings.popover) {\n          self$$1._preBodyHtml = '<div class=\"' + self$$1.classPrefix + 'arrow\"></div>';\n          self$$1.classes.add('popover').add('bottom').add(self$$1.isRtl() ? 'end' : 'start');\n        }\n        self$$1.aria('label', settings.ariaLabel);\n        self$$1.aria('labelledby', self$$1._id);\n        self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');\n      },\n      fixed: function (state) {\n        var self$$1 = this;\n        if (self$$1.state.get('fixed') !== state) {\n          if (self$$1.state.get('rendered')) {\n            var viewport = funcs.getViewPort();\n            if (state) {\n              self$$1.layoutRect().y -= viewport.y;\n            } else {\n              self$$1.layoutRect().y += viewport.y;\n            }\n          }\n          self$$1.classes.toggle('fixed', state);\n          self$$1.state.set('fixed', state);\n        }\n        return self$$1;\n      },\n      show: function () {\n        var self$$1 = this;\n        var i;\n        var state = self$$1._super();\n        i = visiblePanels.length;\n        while (i--) {\n          if (visiblePanels[i] === self$$1) {\n            break;\n          }\n        }\n        if (i === -1) {\n          visiblePanels.push(self$$1);\n        }\n        return state;\n      },\n      hide: function () {\n        removeVisiblePanel(this);\n        addRemove(false, this);\n        return this._super();\n      },\n      hideAll: function () {\n        FloatPanel.hideAll();\n      },\n      close: function () {\n        var self$$1 = this;\n        if (!self$$1.fire('close').isDefaultPrevented()) {\n          self$$1.remove();\n          addRemove(false, self$$1);\n        }\n        return self$$1;\n      },\n      remove: function () {\n        removeVisiblePanel(this);\n        this._super();\n      },\n      postRender: function () {\n        var self$$1 = this;\n        if (self$$1.settings.bodyRole) {\n          this.getEl('body').setAttribute('role', self$$1.settings.bodyRole);\n        }\n        return self$$1._super();\n      }\n    });\n    FloatPanel.hideAll = function () {\n      var i = visiblePanels.length;\n      while (i--) {\n        var panel = visiblePanels[i];\n        if (panel && panel.settings.autohide) {\n          panel.hide();\n          visiblePanels.splice(i, 1);\n        }\n      }\n    };\n    function removeVisiblePanel(panel) {\n      var i;\n      i = visiblePanels.length;\n      while (i--) {\n        if (visiblePanels[i] === panel) {\n          visiblePanels.splice(i, 1);\n        }\n      }\n      i = zOrder.length;\n      while (i--) {\n        if (zOrder[i] === panel) {\n          zOrder.splice(i, 1);\n        }\n      }\n    }\n\n    var isFixed$1 = function (inlineToolbarContainer, editor) {\n      return !!(inlineToolbarContainer && !editor.settings.ui_container);\n    };\n    var render$1 = function (editor, theme, args) {\n      var panel, inlineToolbarContainer;\n      var DOM = global$3.DOM;\n      var fixedToolbarContainer = getFixedToolbarContainer(editor);\n      if (fixedToolbarContainer) {\n        inlineToolbarContainer = DOM.select(fixedToolbarContainer)[0];\n      }\n      var reposition = function () {\n        if (panel && panel.moveRel && panel.visible() && !panel._fixed) {\n          var scrollContainer = editor.selection.getScrollContainer(), body = editor.getBody();\n          var deltaX = 0, deltaY = 0;\n          if (scrollContainer) {\n            var bodyPos = DOM.getPos(body), scrollContainerPos = DOM.getPos(scrollContainer);\n            deltaX = Math.max(0, scrollContainerPos.x - bodyPos.x);\n            deltaY = Math.max(0, scrollContainerPos.y - bodyPos.y);\n          }\n          panel.fixed(false).moveRel(body, editor.rtl ? [\n            'tr-br',\n            'br-tr'\n          ] : [\n            'tl-bl',\n            'bl-tl',\n            'tr-br'\n          ]).moveBy(deltaX, deltaY);\n        }\n      };\n      var show = function () {\n        if (panel) {\n          panel.show();\n          reposition();\n          DOM.addClass(editor.getBody(), 'mce-edit-focus');\n        }\n      };\n      var hide = function () {\n        if (panel) {\n          panel.hide();\n          FloatPanel.hideAll();\n          DOM.removeClass(editor.getBody(), 'mce-edit-focus');\n        }\n      };\n      var render = function () {\n        if (panel) {\n          if (!panel.visible()) {\n            show();\n          }\n          return;\n        }\n        panel = theme.panel = global$4.create({\n          type: inlineToolbarContainer ? 'panel' : 'floatpanel',\n          role: 'application',\n          classes: 'tinymce tinymce-inline',\n          layout: 'flex',\n          direction: 'column',\n          align: 'stretch',\n          autohide: false,\n          autofix: true,\n          fixed: isFixed$1(inlineToolbarContainer, editor),\n          border: 1,\n          items: [\n            hasMenubar(editor) === false ? null : {\n              type: 'menubar',\n              border: '0 0 1 0',\n              items: Menubar.createMenuButtons(editor)\n            },\n            Toolbar.createToolbars(editor, getToolbarSize(editor))\n          ]\n        });\n        UiContainer.setUiContainer(editor, panel);\n        Events.fireBeforeRenderUI(editor);\n        if (inlineToolbarContainer) {\n          panel.renderTo(inlineToolbarContainer).reflow();\n        } else {\n          panel.renderTo().reflow();\n        }\n        A11y.addKeys(editor, panel);\n        show();\n        ContextToolbars.addContextualToolbars(editor);\n        editor.on('nodeChange', reposition);\n        editor.on('ResizeWindow', reposition);\n        editor.on('activate', show);\n        editor.on('deactivate', hide);\n        editor.nodeChanged();\n      };\n      editor.settings.content_editable = true;\n      editor.on('focus', function () {\n        if (isSkinDisabled(editor) === false && args.skinUiCss) {\n          DOM.styleSheetLoader.load(args.skinUiCss, render, render);\n        } else {\n          render();\n        }\n      });\n      editor.on('blur hide', hide);\n      editor.on('remove', function () {\n        if (panel) {\n          panel.remove();\n          panel = null;\n        }\n      });\n      if (isSkinDisabled(editor) === false && args.skinUiCss) {\n        DOM.styleSheetLoader.load(args.skinUiCss, SkinLoaded.fireSkinLoaded(editor));\n      } else {\n        SkinLoaded.fireSkinLoaded(editor)();\n      }\n      return {};\n    };\n    var Inline = { render: render$1 };\n\n    function Throbber (elm, inline) {\n      var self = this;\n      var state;\n      var classPrefix = Control$1.classPrefix;\n      var timer;\n      self.show = function (time, callback) {\n        function render() {\n          if (state) {\n            global$9(elm).append('<div class=\"' + classPrefix + 'throbber' + (inline ? ' ' + classPrefix + 'throbber-inline' : '') + '\"></div>');\n            if (callback) {\n              callback();\n            }\n          }\n        }\n        self.hide();\n        state = true;\n        if (time) {\n          timer = global$7.setTimeout(render, time);\n        } else {\n          render();\n        }\n        return self;\n      };\n      self.hide = function () {\n        var child = elm.lastChild;\n        global$7.clearTimeout(timer);\n        if (child && child.className.indexOf('throbber') !== -1) {\n          child.parentNode.removeChild(child);\n        }\n        state = false;\n        return self;\n      };\n    }\n\n    var setup = function (editor, theme) {\n      var throbber;\n      editor.on('ProgressState', function (e) {\n        throbber = throbber || new Throbber(theme.panel.getEl('body'));\n        if (e.state) {\n          throbber.show(e.time);\n        } else {\n          throbber.hide();\n        }\n      });\n    };\n    var ProgressState = { setup: setup };\n\n    var renderUI = function (editor, theme, args) {\n      var skinUrl = getSkinUrl(editor);\n      if (skinUrl) {\n        args.skinUiCss = skinUrl + '/skin.min.css';\n        editor.contentCSS.push(skinUrl + '/content' + (editor.inline ? '.inline' : '') + '.min.css');\n      }\n      ProgressState.setup(editor, theme);\n      return isInline(editor) ? Inline.render(editor, theme, args) : Iframe.render(editor, theme, args);\n    };\n    var Render = { renderUI: renderUI };\n\n    var Tooltip = Control$1.extend({\n      Mixins: [Movable],\n      Defaults: { classes: 'widget tooltip tooltip-n' },\n      renderHtml: function () {\n        var self = this, prefix = self.classPrefix;\n        return '<div id=\"' + self._id + '\" class=\"' + self.classes + '\" role=\"presentation\">' + '<div class=\"' + prefix + 'tooltip-arrow\"></div>' + '<div class=\"' + prefix + 'tooltip-inner\">' + self.encode(self.state.get('text')) + '</div>' + '</div>';\n      },\n      bindStates: function () {\n        var self = this;\n        self.state.on('change:text', function (e) {\n          self.getEl().lastChild.innerHTML = self.encode(e.value);\n        });\n        return self._super();\n      },\n      repaint: function () {\n        var self = this;\n        var style, rect;\n        style = self.getEl().style;\n        rect = self._layoutRect;\n        style.left = rect.x + 'px';\n        style.top = rect.y + 'px';\n        style.zIndex = 65535 + 65535;\n      }\n    });\n\n    var Widget = Control$1.extend({\n      init: function (settings) {\n        var self = this;\n        self._super(settings);\n        settings = self.settings;\n        self.canFocus = true;\n        if (settings.tooltip && Widget.tooltips !== false) {\n          self.on('mouseenter', function (e) {\n            var tooltip = self.tooltip().moveTo(-65535);\n            if (e.control === self) {\n              var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), [\n                'bc-tc',\n                'bc-tl',\n                'bc-tr'\n              ]);\n              tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');\n              tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');\n              tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');\n              tooltip.moveRel(self.getEl(), rel);\n            } else {\n              tooltip.hide();\n            }\n          });\n          self.on('mouseleave mousedown click', function () {\n            self.tooltip().remove();\n            self._tooltip = null;\n          });\n        }\n        self.aria('label', settings.ariaLabel || settings.tooltip);\n      },\n      tooltip: function () {\n        if (!this._tooltip) {\n          this._tooltip = new Tooltip({ type: 'tooltip' });\n          UiContainer.inheritUiContainer(this, this._tooltip);\n          this._tooltip.renderTo();\n        }\n        return this._tooltip;\n      },\n      postRender: function () {\n        var self = this, settings = self.settings;\n        self._super();\n        if (!self.parent() && (settings.width || settings.height)) {\n          self.initLayoutRect();\n          self.repaint();\n        }\n        if (settings.autofocus) {\n          self.focus();\n        }\n      },\n      bindStates: function () {\n        var self = this;\n        function disable(state) {\n          self.aria('disabled', state);\n          self.classes.toggle('disabled', state);\n        }\n        function active(state) {\n          self.aria('pressed', state);\n          self.classes.toggle('active', state);\n        }\n        self.state.on('change:disabled', function (e) {\n          disable(e.value);\n        });\n        self.state.on('change:active', function (e) {\n          active(e.value);\n        });\n        if (self.state.get('disabled')) {\n          disable(true);\n        }\n        if (self.state.get('active')) {\n          active(true);\n        }\n        return self._super();\n      },\n      remove: function () {\n        this._super();\n        if (this._tooltip) {\n          this._tooltip.remove();\n          this._tooltip = null;\n        }\n      }\n    });\n\n    var Progress = Widget.extend({\n      Defaults: { value: 0 },\n      init: function (settings) {\n        var self = this;\n        self._super(settings);\n        self.classes.add('progress');\n        if (!self.settings.filter) {\n          self.settings.filter = function (value) {\n            return Math.round(value);\n          };\n        }\n      },\n      renderHtml: function () {\n        var self = this, id = self._id, prefix = this.classPrefix;\n        return '<div id=\"' + id + '\" class=\"' + self.classes + '\">' + '<div class=\"' + prefix + 'bar-container\">' + '<div class=\"' + prefix + 'bar\"></div>' + '</div>' + '<div class=\"' + prefix + 'text\">0%</div>' + '</div>';\n      },\n      postRender: function () {\n        var self = this;\n        self._super();\n        self.value(self.settings.value);\n        return self;\n      },\n      bindStates: function () {\n        var self = this;\n        function setValue(value) {\n          value = self.settings.filter(value);\n          self.getEl().lastChild.innerHTML = value + '%';\n          self.getEl().firstChild.firstChild.style.width = value + '%';\n        }\n        self.state.on('change:value', function (e) {\n          setValue(e.value);\n        });\n        setValue(self.state.get('value'));\n        return self._super();\n      }\n    });\n\n    var updateLiveRegion = function (ctx, text) {\n      ctx.getEl().lastChild.textContent = text + (ctx.progressBar ? ' ' + ctx.progressBar.value() + '%' : '');\n    };\n    var Notification = Control$1.extend({\n      Mixins: [Movable],\n      Defaults: { classes: 'widget notification' },\n      init: function (settings) {\n        var self = this;\n        self._super(settings);\n        self.maxWidth = settings.maxWidth;\n        if (settings.text) {\n          self.text(settings.text);\n        }\n        if (settings.icon) {\n          self.icon = settings.icon;\n        }\n        if (settings.color) {\n          self.color = settings.color;\n        }\n        if (settings.type) {\n          self.classes.add('notification-' + settings.type);\n        }\n        if (settings.timeout && (settings.timeout < 0 || settings.timeout > 0) && !settings.closeButton) {\n          self.closeButton = false;\n        } else {\n          self.classes.add('has-close');\n          self.closeButton = true;\n        }\n        if (settings.progressBar) {\n          self.progressBar = new Progress();\n        }\n        self.on('click', function (e) {\n          if (e.target.className.indexOf(self.classPrefix + 'close') !== -1) {\n            self.close();\n          }\n        });\n      },\n      renderHtml: function () {\n        var self = this;\n        var prefix = self.classPrefix;\n        var icon = '', closeButton = '', progressBar = '', notificationStyle = '';\n        if (self.icon) {\n          icon = '<i class=\"' + prefix + 'ico' + ' ' + prefix + 'i-' + self.icon + '\"></i>';\n        }\n        notificationStyle = ' style=\"max-width: ' + self.maxWidth + 'px;' + (self.color ? 'background-color: ' + self.color + ';\"' : '\"');\n        if (self.closeButton) {\n          closeButton = '<button type=\"button\" class=\"' + prefix + 'close\" aria-hidden=\"true\">\\xD7</button>';\n        }\n        if (self.progressBar) {\n          progressBar = self.progressBar.renderHtml();\n        }\n        return '<div id=\"' + self._id + '\" class=\"' + self.classes + '\"' + notificationStyle + ' role=\"presentation\">' + icon + '<div class=\"' + prefix + 'notification-inner\">' + self.state.get('text') + '</div>' + progressBar + closeButton + '<div style=\"clip: rect(1px, 1px, 1px, 1px);height: 1px;overflow: hidden;position: absolute;width: 1px;\"' + ' aria-live=\"assertive\" aria-relevant=\"additions\" aria-atomic=\"true\"></div>' + '</div>';\n      },\n      postRender: function () {\n        var self = this;\n        global$7.setTimeout(function () {\n          self.$el.addClass(self.classPrefix + 'in');\n          updateLiveRegion(self, self.state.get('text'));\n        }, 100);\n        return self._super();\n      },\n      bindStates: function () {\n        var self = this;\n        self.state.on('change:text', function (e) {\n          self.getEl().firstChild.innerHTML = e.value;\n          updateLiveRegion(self, e.value);\n        });\n        if (self.progressBar) {\n          self.progressBar.bindStates();\n          self.progressBar.state.on('change:value', function (e) {\n            updateLiveRegion(self, self.state.get('text'));\n          });\n        }\n        return self._super();\n      },\n      close: function () {\n        var self = this;\n        if (!self.fire('close').isDefaultPrevented()) {\n          self.remove();\n        }\n        return self;\n      },\n      repaint: function () {\n        var self = this;\n        var style, rect;\n        style = self.getEl().style;\n        rect = self._layoutRect;\n        style.left = rect.x + 'px';\n        style.top = rect.y + 'px';\n        style.zIndex = 65535 - 1;\n      }\n    });\n\n    function NotificationManagerImpl (editor) {\n      var getEditorContainer = function (editor) {\n        return editor.inline ? editor.getElement() : editor.getContentAreaContainer();\n      };\n      var getContainerWidth = function () {\n        var container = getEditorContainer(editor);\n        return funcs.getSize(container).width;\n      };\n      var prePositionNotifications = function (notifications) {\n        each(notifications, function (notification) {\n          notification.moveTo(0, 0);\n        });\n      };\n      var positionNotifications = function (notifications) {\n        if (notifications.length > 0) {\n          var firstItem = notifications.slice(0, 1)[0];\n          var container = getEditorContainer(editor);\n          firstItem.moveRel(container, 'tc-tc');\n          each(notifications, function (notification, index) {\n            if (index > 0) {\n              notification.moveRel(notifications[index - 1].getEl(), 'bc-tc');\n            }\n          });\n        }\n      };\n      var reposition = function (notifications) {\n        prePositionNotifications(notifications);\n        positionNotifications(notifications);\n      };\n      var open = function (args, closeCallback) {\n        var extendedArgs = global$2.extend(args, { maxWidth: getContainerWidth() });\n        var notif = new Notification(extendedArgs);\n        notif.args = extendedArgs;\n        if (extendedArgs.timeout > 0) {\n          notif.timer = setTimeout(function () {\n            notif.close();\n            closeCallback();\n          }, extendedArgs.timeout);\n        }\n        notif.on('close', function () {\n          closeCallback();\n        });\n        notif.renderTo();\n        return notif;\n      };\n      var close = function (notification) {\n        notification.close();\n      };\n      var getArgs = function (notification) {\n        return notification.args;\n      };\n      return {\n        open: open,\n        close: close,\n        reposition: reposition,\n        getArgs: getArgs\n      };\n    }\n\n    var windows = [];\n    var oldMetaValue = '';\n    function toggleFullScreenState(state) {\n      var noScaleMetaValue = 'width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0';\n      var viewport = global$9('meta[name=viewport]')[0], contentValue;\n      if (global$8.overrideViewPort === false) {\n        return;\n      }\n      if (!viewport) {\n        viewport = document.createElement('meta');\n        viewport.setAttribute('name', 'viewport');\n        document.getElementsByTagName('head')[0].appendChild(viewport);\n      }\n      contentValue = viewport.getAttribute('content');\n      if (contentValue && typeof oldMetaValue !== 'undefined') {\n        oldMetaValue = contentValue;\n      }\n      viewport.setAttribute('content', state ? noScaleMetaValue : oldMetaValue);\n    }\n    function toggleBodyFullScreenClasses(classPrefix, state) {\n      if (checkFullscreenWindows() && state === false) {\n        global$9([\n          document.documentElement,\n          document.body\n        ]).removeClass(classPrefix + 'fullscreen');\n      }\n    }\n    function checkFullscreenWindows() {\n      for (var i = 0; i < windows.length; i++) {\n        if (windows[i]._fullscreen) {\n          return true;\n        }\n      }\n      return false;\n    }\n    function handleWindowResize() {\n      if (!global$8.desktop) {\n        var lastSize_1 = {\n          w: window.innerWidth,\n          h: window.innerHeight\n        };\n        global$7.setInterval(function () {\n          var w = window.innerWidth, h = window.innerHeight;\n          if (lastSize_1.w !== w || lastSize_1.h !== h) {\n            lastSize_1 = {\n              w: w,\n              h: h\n            };\n            global$9(window).trigger('resize');\n          }\n        }, 100);\n      }\n      function reposition() {\n        var i;\n        var rect = funcs.getWindowSize();\n        var layoutRect;\n        for (i = 0; i < windows.length; i++) {\n          layoutRect = windows[i].layoutRect();\n          windows[i].moveTo(windows[i].settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2), windows[i].settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2));\n        }\n      }\n      global$9(window).on('resize', reposition);\n    }\n    var Window$$1 = FloatPanel.extend({\n      modal: true,\n      Defaults: {\n        border: 1,\n        layout: 'flex',\n        containerCls: 'panel',\n        role: 'dialog',\n        callbacks: {\n          submit: function () {\n            this.fire('submit', { data: this.toJSON() });\n          },\n          close: function () {\n            this.close();\n          }\n        }\n      },\n      init: function (settings) {\n        var self$$1 = this;\n        self$$1._super(settings);\n        if (self$$1.isRtl()) {\n          self$$1.classes.add('rtl');\n        }\n        self$$1.classes.add('window');\n        self$$1.bodyClasses.add('window-body');\n        self$$1.state.set('fixed', true);\n        if (settings.buttons) {\n          self$$1.statusbar = new Panel({\n            layout: 'flex',\n            border: '1 0 0 0',\n            spacing: 3,\n            padding: 10,\n            align: 'center',\n            pack: self$$1.isRtl() ? 'start' : 'end',\n            defaults: { type: 'button' },\n            items: settings.buttons\n          });\n          self$$1.statusbar.classes.add('foot');\n          self$$1.statusbar.parent(self$$1);\n        }\n        self$$1.on('click', function (e) {\n          var closeClass = self$$1.classPrefix + 'close';\n          if (funcs.hasClass(e.target, closeClass) || funcs.hasClass(e.target.parentNode, closeClass)) {\n            self$$1.close();\n          }\n        });\n        self$$1.on('cancel', function () {\n          self$$1.close();\n        });\n        self$$1.on('move', function (e) {\n          if (e.control === self$$1) {\n            FloatPanel.hideAll();\n          }\n        });\n        self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');\n        self$$1.aria('label', settings.title);\n        self$$1._fullscreen = false;\n      },\n      recalc: function () {\n        var self$$1 = this;\n        var statusbar$$1 = self$$1.statusbar;\n        var layoutRect, width, x, needsRecalc;\n        if (self$$1._fullscreen) {\n          self$$1.layoutRect(funcs.getWindowSize());\n          self$$1.layoutRect().contentH = self$$1.layoutRect().innerH;\n        }\n        self$$1._super();\n        layoutRect = self$$1.layoutRect();\n        if (self$$1.settings.title && !self$$1._fullscreen) {\n          width = layoutRect.headerW;\n          if (width > layoutRect.w) {\n            x = layoutRect.x - Math.max(0, width / 2);\n            self$$1.layoutRect({\n              w: width,\n              x: x\n            });\n            needsRecalc = true;\n          }\n        }\n        if (statusbar$$1) {\n          statusbar$$1.layoutRect({ w: self$$1.layoutRect().innerW }).recalc();\n          width = statusbar$$1.layoutRect().minW + layoutRect.deltaW;\n          if (width > layoutRect.w) {\n            x = layoutRect.x - Math.max(0, width - layoutRect.w);\n            self$$1.layoutRect({\n              w: width,\n              x: x\n            });\n            needsRecalc = true;\n          }\n        }\n        if (needsRecalc) {\n          self$$1.recalc();\n        }\n      },\n      initLayoutRect: function () {\n        var self$$1 = this;\n        var layoutRect = self$$1._super();\n        var deltaH = 0, headEl;\n        if (self$$1.settings.title && !self$$1._fullscreen) {\n          headEl = self$$1.getEl('head');\n          var size = funcs.getSize(headEl);\n          layoutRect.headerW = size.width;\n          layoutRect.headerH = size.height;\n          deltaH += layoutRect.headerH;\n        }\n        if (self$$1.statusbar) {\n          deltaH += self$$1.statusbar.layoutRect().h;\n        }\n        layoutRect.deltaH += deltaH;\n        layoutRect.minH += deltaH;\n        layoutRect.h += deltaH;\n        var rect = funcs.getWindowSize();\n        layoutRect.x = self$$1.settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2);\n        layoutRect.y = self$$1.settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2);\n        return layoutRect;\n      },\n      renderHtml: function () {\n        var self$$1 = this, layout = self$$1._layout, id = self$$1._id, prefix = self$$1.classPrefix;\n        var settings = self$$1.settings;\n        var headerHtml = '', footerHtml = '', html = settings.html;\n        self$$1.preRender();\n        layout.preRender(self$$1);\n        if (settings.title) {\n          headerHtml = '<div id=\"' + id + '-head\" class=\"' + prefix + 'window-head\">' + '<div id=\"' + id + '-title\" class=\"' + prefix + 'title\">' + self$$1.encode(settings.title) + '</div>' + '<div id=\"' + id + '-dragh\" class=\"' + prefix + 'dragh\"></div>' + '<button type=\"button\" class=\"' + prefix + 'close\" aria-hidden=\"true\">' + '<i class=\"mce-ico mce-i-remove\"></i>' + '</button>' + '</div>';\n        }\n        if (settings.url) {\n          html = '<iframe src=\"' + settings.url + '\" tabindex=\"-1\"></iframe>';\n        }\n        if (typeof html === 'undefined') {\n          html = layout.renderHtml(self$$1);\n        }\n        if (self$$1.statusbar) {\n          footerHtml = self$$1.statusbar.renderHtml();\n        }\n        return '<div id=\"' + id + '\" class=\"' + self$$1.classes + '\" hidefocus=\"1\">' + '<div class=\"' + self$$1.classPrefix + 'reset\" role=\"application\">' + headerHtml + '<div id=\"' + id + '-body\" class=\"' + self$$1.bodyClasses + '\">' + html + '</div>' + footerHtml + '</div>' + '</div>';\n      },\n      fullscreen: function (state) {\n        var self$$1 = this;\n        var documentElement = document.documentElement;\n        var slowRendering;\n        var prefix = self$$1.classPrefix;\n        var layoutRect;\n        if (state !== self$$1._fullscreen) {\n          global$9(window).on('resize', function () {\n            var time;\n            if (self$$1._fullscreen) {\n              if (!slowRendering) {\n                time = new Date().getTime();\n                var rect = funcs.getWindowSize();\n                self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);\n                if (new Date().getTime() - time > 50) {\n                  slowRendering = true;\n                }\n              } else {\n                if (!self$$1._timer) {\n                  self$$1._timer = global$7.setTimeout(function () {\n                    var rect = funcs.getWindowSize();\n                    self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);\n                    self$$1._timer = 0;\n                  }, 50);\n                }\n              }\n            }\n          });\n          layoutRect = self$$1.layoutRect();\n          self$$1._fullscreen = state;\n          if (!state) {\n            self$$1.borderBox = BoxUtils.parseBox(self$$1.settings.border);\n            self$$1.getEl('head').style.display = '';\n            layoutRect.deltaH += layoutRect.headerH;\n            global$9([\n              documentElement,\n              document.body\n            ]).removeClass(prefix + 'fullscreen');\n            self$$1.classes.remove('fullscreen');\n            self$$1.moveTo(self$$1._initial.x, self$$1._initial.y).resizeTo(self$$1._initial.w, self$$1._initial.h);\n          } else {\n            self$$1._initial = {\n              x: layoutRect.x,\n              y: layoutRect.y,\n              w: layoutRect.w,\n              h: layoutRect.h\n            };\n            self$$1.borderBox = BoxUtils.parseBox('0');\n            self$$1.getEl('head').style.display = 'none';\n            layoutRect.deltaH -= layoutRect.headerH + 2;\n            global$9([\n              documentElement,\n              document.body\n            ]).addClass(prefix + 'fullscreen');\n            self$$1.classes.add('fullscreen');\n            var rect = funcs.getWindowSize();\n            self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);\n          }\n        }\n        return self$$1.reflow();\n      },\n      postRender: function () {\n        var self$$1 = this;\n        var startPos;\n        setTimeout(function () {\n          self$$1.classes.add('in');\n          self$$1.fire('open');\n        }, 0);\n        self$$1._super();\n        if (self$$1.statusbar) {\n          self$$1.statusbar.postRender();\n        }\n        self$$1.focus();\n        this.dragHelper = new DragHelper(self$$1._id + '-dragh', {\n          start: function () {\n            startPos = {\n              x: self$$1.layoutRect().x,\n              y: self$$1.layoutRect().y\n            };\n          },\n          drag: function (e) {\n            self$$1.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);\n          }\n        });\n        self$$1.on('submit', function (e) {\n          if (!e.isDefaultPrevented()) {\n            self$$1.close();\n          }\n        });\n        windows.push(self$$1);\n        toggleFullScreenState(true);\n      },\n      submit: function () {\n        return this.fire('submit', { data: this.toJSON() });\n      },\n      remove: function () {\n        var self$$1 = this;\n        var i;\n        self$$1.dragHelper.destroy();\n        self$$1._super();\n        if (self$$1.statusbar) {\n          this.statusbar.remove();\n        }\n        toggleBodyFullScreenClasses(self$$1.classPrefix, false);\n        i = windows.length;\n        while (i--) {\n          if (windows[i] === self$$1) {\n            windows.splice(i, 1);\n          }\n        }\n        toggleFullScreenState(windows.length > 0);\n      },\n      getContentWindow: function () {\n        var ifr = this.getEl().getElementsByTagName('iframe')[0];\n        return ifr ? ifr.contentWindow : null;\n      }\n    });\n    handleWindowResize();\n\n    var MessageBox = Window$$1.extend({\n      init: function (settings) {\n        settings = {\n          border: 1,\n          padding: 20,\n          layout: 'flex',\n          pack: 'center',\n          align: 'center',\n          containerCls: 'panel',\n          autoScroll: true,\n          buttons: {\n            type: 'button',\n            text: 'Ok',\n            action: 'ok'\n          },\n          items: {\n            type: 'label',\n            multiline: true,\n            maxWidth: 500,\n            maxHeight: 200\n          }\n        };\n        this._super(settings);\n      },\n      Statics: {\n        OK: 1,\n        OK_CANCEL: 2,\n        YES_NO: 3,\n        YES_NO_CANCEL: 4,\n        msgBox: function (settings) {\n          var buttons;\n          var callback = settings.callback || function () {\n          };\n          function createButton(text, status$$1, primary) {\n            return {\n              type: 'button',\n              text: text,\n              subtype: primary ? 'primary' : '',\n              onClick: function (e) {\n                e.control.parents()[1].close();\n                callback(status$$1);\n              }\n            };\n          }\n          switch (settings.buttons) {\n          case MessageBox.OK_CANCEL:\n            buttons = [\n              createButton('Ok', true, true),\n              createButton('Cancel', false)\n            ];\n            break;\n          case MessageBox.YES_NO:\n          case MessageBox.YES_NO_CANCEL:\n            buttons = [\n              createButton('Yes', 1, true),\n              createButton('No', 0)\n            ];\n            if (settings.buttons === MessageBox.YES_NO_CANCEL) {\n              buttons.push(createButton('Cancel', -1));\n            }\n            break;\n          default:\n            buttons = [createButton('Ok', true, true)];\n            break;\n          }\n          return new Window$$1({\n            padding: 20,\n            x: settings.x,\n            y: settings.y,\n            minWidth: 300,\n            minHeight: 100,\n            layout: 'flex',\n            pack: 'center',\n            align: 'center',\n            buttons: buttons,\n            title: settings.title,\n            role: 'alertdialog',\n            items: {\n              type: 'label',\n              multiline: true,\n              maxWidth: 500,\n              maxHeight: 200,\n              text: settings.text\n            },\n            onPostRender: function () {\n              this.aria('describedby', this.items()[0]._id);\n            },\n            onClose: settings.onClose,\n            onCancel: function () {\n              callback(false);\n            }\n          }).renderTo(document.body).reflow();\n        },\n        alert: function (settings, callback) {\n          if (typeof settings === 'string') {\n            settings = { text: settings };\n          }\n          settings.callback = callback;\n          return MessageBox.msgBox(settings);\n        },\n        confirm: function (settings, callback) {\n          if (typeof settings === 'string') {\n            settings = { text: settings };\n          }\n          settings.callback = callback;\n          settings.buttons = MessageBox.OK_CANCEL;\n          return MessageBox.msgBox(settings);\n        }\n      }\n    });\n\n    function WindowManagerImpl (editor) {\n      var open$$1 = function (args, params, closeCallback) {\n        var win;\n        args.title = args.title || ' ';\n        args.url = args.url || args.file;\n        if (args.url) {\n          args.width = parseInt(args.width || 320, 10);\n          args.height = parseInt(args.height || 240, 10);\n        }\n        if (args.body) {\n          args.items = {\n            defaults: args.defaults,\n            type: args.bodyType || 'form',\n            items: args.body,\n            data: args.data,\n            callbacks: args.commands\n          };\n        }\n        if (!args.url && !args.buttons) {\n          args.buttons = [\n            {\n              text: 'Ok',\n              subtype: 'primary',\n              onclick: function () {\n                win.find('form')[0].submit();\n              }\n            },\n            {\n              text: 'Cancel',\n              onclick: function () {\n                win.close();\n              }\n            }\n          ];\n        }\n        win = new Window$$1(args);\n        win.on('close', function () {\n          closeCallback(win);\n        });\n        if (args.data) {\n          win.on('postRender', function () {\n            this.find('*').each(function (ctrl) {\n              var name$$1 = ctrl.name();\n              if (name$$1 in args.data) {\n                ctrl.value(args.data[name$$1]);\n              }\n            });\n          });\n        }\n        win.features = args || {};\n        win.params = params || {};\n        win = win.renderTo(document.body).reflow();\n        return win;\n      };\n      var alert$$1 = function (message, choiceCallback, closeCallback) {\n        var win;\n        win = MessageBox.alert(message, function () {\n          choiceCallback();\n        });\n        win.on('close', function () {\n          closeCallback(win);\n        });\n        return win;\n      };\n      var confirm$$1 = function (message, choiceCallback, closeCallback) {\n        var win;\n        win = MessageBox.confirm(message, function (state) {\n          choiceCallback(state);\n        });\n        win.on('close', function () {\n          closeCallback(win);\n        });\n        return win;\n      };\n      var close$$1 = function (window$$1) {\n        window$$1.close();\n      };\n      var getParams = function (window$$1) {\n        return window$$1.params;\n      };\n      var setParams = function (window$$1, params) {\n        window$$1.params = params;\n      };\n      return {\n        open: open$$1,\n        alert: alert$$1,\n        confirm: confirm$$1,\n        close: close$$1,\n        getParams: getParams,\n        setParams: setParams\n      };\n    }\n\n    var get = function (editor) {\n      var renderUI = function (args) {\n        return Render.renderUI(editor, this, args);\n      };\n      var resizeTo = function (w, h) {\n        return Resize.resizeTo(editor, w, h);\n      };\n      var resizeBy = function (dw, dh) {\n        return Resize.resizeBy(editor, dw, dh);\n      };\n      var getNotificationManagerImpl = function () {\n        return NotificationManagerImpl(editor);\n      };\n      var getWindowManagerImpl = function () {\n        return WindowManagerImpl(editor);\n      };\n      return {\n        renderUI: renderUI,\n        resizeTo: resizeTo,\n        resizeBy: resizeBy,\n        getNotificationManagerImpl: getNotificationManagerImpl,\n        getWindowManagerImpl: getWindowManagerImpl\n      };\n    };\n    var ThemeApi = { get: get };\n\n    var Layout = global$a.extend({\n      Defaults: {\n        firstControlClass: 'first',\n        lastControlClass: 'last'\n      },\n      init: function (settings) {\n        this.settings = global$2.extend({}, this.Defaults, settings);\n      },\n      preRender: function (container) {\n        container.bodyClasses.add(this.settings.containerClass);\n      },\n      applyClasses: function (items) {\n        var self = this;\n        var settings = self.settings;\n        var firstClass, lastClass, firstItem, lastItem;\n        firstClass = settings.firstControlClass;\n        lastClass = settings.lastControlClass;\n        items.each(function (item) {\n          item.classes.remove(firstClass).remove(lastClass).add(settings.controlClass);\n          if (item.visible()) {\n            if (!firstItem) {\n              firstItem = item;\n            }\n            lastItem = item;\n          }\n        });\n        if (firstItem) {\n          firstItem.classes.add(firstClass);\n        }\n        if (lastItem) {\n          lastItem.classes.add(lastClass);\n        }\n      },\n      renderHtml: function (container) {\n        var self = this;\n        var html = '';\n        self.applyClasses(container.items());\n        container.items().each(function (item) {\n          html += item.renderHtml();\n        });\n        return html;\n      },\n      recalc: function () {\n      },\n      postRender: function () {\n      },\n      isNative: function () {\n        return false;\n      }\n    });\n\n    var AbsoluteLayout = Layout.extend({\n      Defaults: {\n        containerClass: 'abs-layout',\n        controlClass: 'abs-layout-item'\n      },\n      recalc: function (container) {\n        container.items().filter(':visible').each(function (ctrl) {\n          var settings = ctrl.settings;\n          ctrl.layoutRect({\n            x: settings.x,\n            y: settings.y,\n            w: settings.w,\n            h: settings.h\n          });\n          if (ctrl.recalc) {\n            ctrl.recalc();\n          }\n        });\n      },\n      renderHtml: function (container) {\n        return '<div id=\"' + container._id + '-absend\" class=\"' + container.classPrefix + 'abs-end\"></div>' + this._super(container);\n      }\n    });\n\n    var Button = Widget.extend({\n      Defaults: {\n        classes: 'widget btn',\n        role: 'button'\n      },\n      init: function (settings) {\n        var self$$1 = this;\n        var size;\n        self$$1._super(settings);\n        settings = self$$1.settings;\n        size = self$$1.settings.size;\n        self$$1.on('click mousedown', function (e) {\n          e.preventDefault();\n        });\n        self$$1.on('touchstart', function (e) {\n          self$$1.fire('click', e);\n          e.preventDefault();\n        });\n        if (settings.subtype) {\n          self$$1.classes.add(settings.subtype);\n        }\n        if (size) {\n          self$$1.classes.add('btn-' + size);\n        }\n        if (settings.icon) {\n          self$$1.icon(settings.icon);\n        }\n      },\n      icon: function (icon) {\n        if (!arguments.length) {\n          return this.state.get('icon');\n        }\n        this.state.set('icon', icon);\n        return this;\n      },\n      repaint: function () {\n        var btnElm = this.getEl().firstChild;\n        var btnStyle;\n        if (btnElm) {\n          btnStyle = btnElm.style;\n          btnStyle.width = btnStyle.height = '100%';\n        }\n        this._super();\n      },\n      renderHtml: function () {\n        var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;\n        var icon = self$$1.state.get('icon'), image;\n        var text = self$$1.state.get('text');\n        var textHtml = '';\n        var ariaPressed;\n        var settings = self$$1.settings;\n        image = settings.image;\n        if (image) {\n          icon = 'none';\n          if (typeof image !== 'string') {\n            image = window.getSelection ? image[0] : image[1];\n          }\n          image = ' style=\"background-image: url(\\'' + image + '\\')\"';\n        } else {\n          image = '';\n        }\n        if (text) {\n          self$$1.classes.add('btn-has-text');\n          textHtml = '<span class=\"' + prefix + 'txt\">' + self$$1.encode(text) + '</span>';\n        }\n        icon = icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';\n        ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed=\"' + settings.active + '\"' : '';\n        return '<div id=\"' + id + '\" class=\"' + self$$1.classes + '\" tabindex=\"-1\"' + ariaPressed + '>' + '<button id=\"' + id + '-button\" role=\"presentation\" type=\"button\" tabindex=\"-1\">' + (icon ? '<i class=\"' + icon + '\"' + image + '></i>' : '') + textHtml + '</button>' + '</div>';\n      },\n      bindStates: function () {\n        var self$$1 = this, $ = self$$1.$, textCls = self$$1.classPrefix + 'txt';\n        function setButtonText(text) {\n          var $span = $('span.' + textCls, self$$1.getEl());\n          if (text) {\n            if (!$span[0]) {\n              $('button:first', self$$1.getEl()).append('<span class=\"' + textCls + '\"></span>');\n              $span = $('span.' + textCls, self$$1.getEl());\n            }\n            $span.html(self$$1.encode(text));\n          } else {\n            $span.remove();\n          }\n          self$$1.classes.toggle('btn-has-text', !!text);\n        }\n        self$$1.state.on('change:text', function (e) {\n          setButtonText(e.value);\n        });\n        self$$1.state.on('change:icon', function (e) {\n          var icon = e.value;\n          var prefix = self$$1.classPrefix;\n          self$$1.settings.icon = icon;\n          icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';\n          var btnElm = self$$1.getEl().firstChild;\n          var iconElm = btnElm.getElementsByTagName('i')[0];\n          if (icon) {\n            if (!iconElm || iconElm !== btnElm.firstChild) {\n              iconElm = document.createElement('i');\n              btnElm.insertBefore(iconElm, btnElm.firstChild);\n            }\n            iconElm.className = icon;\n          } else if (iconElm) {\n            btnElm.removeChild(iconElm);\n          }\n          setButtonText(self$$1.state.get('text'));\n        });\n        return self$$1._super();\n      }\n    });\n\n    var BrowseButton = Button.extend({\n      init: function (settings) {\n        var self = this;\n        settings = global$2.extend({\n          text: 'Browse...',\n          multiple: false,\n          accept: null\n        }, settings);\n        self._super(settings);\n        self.classes.add('browsebutton');\n        if (settings.multiple) {\n          self.classes.add('multiple');\n        }\n      },\n      postRender: function () {\n        var self = this;\n        var input = funcs.create('input', {\n          type: 'file',\n          id: self._id + '-browse',\n          accept: self.settings.accept\n        });\n        self._super();\n        global$9(input).on('change', function (e) {\n          var files = e.target.files;\n          self.value = function () {\n            if (!files.length) {\n              return null;\n            } else if (self.settings.multiple) {\n              return files;\n            } else {\n              return files[0];\n            }\n          };\n          e.preventDefault();\n          if (files.length) {\n            self.fire('change', e);\n          }\n        });\n        global$9(input).on('click', function (e) {\n          e.stopPropagation();\n        });\n        global$9(self.getEl('button')).on('click', function (e) {\n          e.stopPropagation();\n          input.click();\n        });\n        self.getEl().appendChild(input);\n      },\n      remove: function () {\n        global$9(this.getEl('button')).off();\n        global$9(this.getEl('input')).off();\n        this._super();\n      }\n    });\n\n    var ButtonGroup = Container.extend({\n      Defaults: {\n        defaultType: 'button',\n        role: 'group'\n      },\n      renderHtml: function () {\n        var self = this, layout = self._layout;\n        self.classes.add('btn-group');\n        self.preRender();\n        layout.preRender(self);\n        return '<div id=\"' + self._id + '\" class=\"' + self.classes + '\">' + '<div id=\"' + self._id + '-body\">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';\n      }\n    });\n\n    var Checkbox = Widget.extend({\n      Defaults: {\n        classes: 'checkbox',\n        role: 'checkbox',\n        checked: false\n      },\n      init: function (settings) {\n        var self$$1 = this;\n        self$$1._super(settings);\n        self$$1.on('click mousedown', function (e) {\n          e.preventDefault();\n        });\n        self$$1.on('click', function (e) {\n          e.preventDefault();\n          if (!self$$1.disabled()) {\n            self$$1.checked(!self$$1.checked());\n          }\n        });\n        self$$1.checked(self$$1.settings.checked);\n      },\n      checked: function (state) {\n        if (!arguments.length) {\n          return this.state.get('checked');\n        }\n        this.state.set('checked', state);\n        return this;\n      },\n      value: function (state) {\n        if (!arguments.length) {\n          return this.checked();\n        }\n        return this.checked(state);\n      },\n      renderHtml: function () {\n        var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;\n        return '<div id=\"' + id + '\" class=\"' + self$$1.classes + '\" unselectable=\"on\" aria-labelledby=\"' + id + '-al\" tabindex=\"-1\">' + '<i class=\"' + prefix + 'ico ' + prefix + 'i-checkbox\"></i>' + '<span id=\"' + id + '-al\" class=\"' + prefix + 'label\">' + self$$1.encode(self$$1.state.get('text')) + '</span>' + '</div>';\n      },\n      bindStates: function () {\n        var self$$1 = this;\n        function checked(state) {\n          self$$1.classes.toggle('checked', state);\n          self$$1.aria('checked', state);\n        }\n        self$$1.state.on('change:text', function (e) {\n          self$$1.getEl('al').firstChild.data = self$$1.translate(e.value);\n        });\n        self$$1.state.on('change:checked change:value', function (e) {\n          self$$1.fire('change');\n          checked(e.value);\n        });\n        self$$1.state.on('change:icon', function (e) {\n          var icon = e.value;\n          var prefix = self$$1.classPrefix;\n          if (typeof icon === 'undefined') {\n            return self$$1.settings.icon;\n          }\n          self$$1.settings.icon = icon;\n          icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';\n          var btnElm = self$$1.getEl().firstChild;\n          var iconElm = btnElm.getElementsByTagName('i')[0];\n          if (icon) {\n            if (!iconElm || iconElm !== btnElm.firstChild) {\n              iconElm = document.createElement('i');\n              btnElm.insertBefore(iconElm, btnElm.firstChild);\n            }\n            iconElm.className = icon;\n          } else if (iconElm) {\n            btnElm.removeChild(iconElm);\n          }\n        });\n        if (self$$1.state.get('checked')) {\n          checked(true);\n        }\n        return self$$1._super();\n      }\n    });\n\n    var global$d = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n    var ComboBox = Widget.extend({\n      init: function (settings) {\n        var self$$1 = this;\n        self$$1._super(settings);\n        settings = self$$1.settings;\n        self$$1.classes.add('combobox');\n        self$$1.subinput = true;\n        self$$1.ariaTarget = 'inp';\n        settings.menu = settings.menu || settings.values;\n        if (settings.menu) {\n          settings.icon = 'caret';\n        }\n        self$$1.on('click', function (e) {\n          var elm = e.target;\n          var root = self$$1.getEl();\n          if (!global$9.contains(root, elm) && elm !== root) {\n            return;\n          }\n          while (elm && elm !== root) {\n            if (elm.id && elm.id.indexOf('-open') !== -1) {\n              self$$1.fire('action');\n              if (settings.menu) {\n                self$$1.showMenu();\n                if (e.aria) {\n                  self$$1.menu.items()[0].focus();\n                }\n              }\n            }\n            elm = elm.parentNode;\n          }\n        });\n        self$$1.on('keydown', function (e) {\n          var rootControl;\n          if (e.keyCode === 13 && e.target.nodeName === 'INPUT') {\n            e.preventDefault();\n            self$$1.parents().reverse().each(function (ctrl) {\n              if (ctrl.toJSON) {\n                rootControl = ctrl;\n                return false;\n              }\n            });\n            self$$1.fire('submit', { data: rootControl.toJSON() });\n          }\n        });\n        self$$1.on('keyup', function (e) {\n          if (e.target.nodeName === 'INPUT') {\n            var oldValue = self$$1.state.get('value');\n            var newValue = e.target.value;\n            if (newValue !== oldValue) {\n              self$$1.state.set('value', newValue);\n              self$$1.fire('autocomplete', e);\n            }\n          }\n        });\n        self$$1.on('mouseover', function (e) {\n          var tooltip = self$$1.tooltip().moveTo(-65535);\n          if (self$$1.statusLevel() && e.target.className.indexOf(self$$1.classPrefix + 'status') !== -1) {\n            var statusMessage = self$$1.statusMessage() || 'Ok';\n            var rel = tooltip.text(statusMessage).show().testMoveRel(e.target, [\n              'bc-tc',\n              'bc-tl',\n              'bc-tr'\n            ]);\n            tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');\n            tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');\n            tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');\n            tooltip.moveRel(e.target, rel);\n          }\n        });\n      },\n      statusLevel: function (value) {\n        if (arguments.length > 0) {\n          this.state.set('statusLevel', value);\n        }\n        return this.state.get('statusLevel');\n      },\n      statusMessage: function (value) {\n        if (arguments.length > 0) {\n          this.state.set('statusMessage', value);\n        }\n        return this.state.get('statusMessage');\n      },\n      showMenu: function () {\n        var self$$1 = this;\n        var settings = self$$1.settings;\n        var menu;\n        if (!self$$1.menu) {\n          menu = settings.menu || [];\n          if (menu.length) {\n            menu = {\n              type: 'menu',\n              items: menu\n            };\n          } else {\n            menu.type = menu.type || 'menu';\n          }\n          self$$1.menu = global$4.create(menu).parent(self$$1).renderTo(self$$1.getContainerElm());\n          self$$1.fire('createmenu');\n          self$$1.menu.reflow();\n          self$$1.menu.on('cancel', function (e) {\n            if (e.control === self$$1.menu) {\n              self$$1.focus();\n            }\n          });\n          self$$1.menu.on('show hide', function (e) {\n            e.control.items().each(function (ctrl) {\n              ctrl.active(ctrl.value() === self$$1.value());\n            });\n          }).fire('show');\n          self$$1.menu.on('select', function (e) {\n            self$$1.value(e.control.value());\n          });\n          self$$1.on('focusin', function (e) {\n            if (e.target.tagName.toUpperCase() === 'INPUT') {\n              self$$1.menu.hide();\n            }\n          });\n          self$$1.aria('expanded', true);\n        }\n        self$$1.menu.show();\n        self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });\n        self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [\n          'br-tr',\n          'tr-br'\n        ] : [\n          'bl-tl',\n          'tl-bl'\n        ]);\n      },\n      focus: function () {\n        this.getEl('inp').focus();\n      },\n      repaint: function () {\n        var self$$1 = this, elm = self$$1.getEl(), openElm = self$$1.getEl('open'), rect = self$$1.layoutRect();\n        var width, lineHeight, innerPadding = 0;\n        var inputElm = elm.firstChild;\n        if (self$$1.statusLevel() && self$$1.statusLevel() !== 'none') {\n          innerPadding = parseInt(funcs.getRuntimeStyle(inputElm, 'padding-right'), 10) - parseInt(funcs.getRuntimeStyle(inputElm, 'padding-left'), 10);\n        }\n        if (openElm) {\n          width = rect.w - funcs.getSize(openElm).width - 10;\n        } else {\n          width = rect.w - 10;\n        }\n        var doc = document;\n        if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {\n          lineHeight = self$$1.layoutRect().h - 2 + 'px';\n        }\n        global$9(inputElm).css({\n          width: width - innerPadding,\n          lineHeight: lineHeight\n        });\n        self$$1._super();\n        return self$$1;\n      },\n      postRender: function () {\n        var self$$1 = this;\n        global$9(this.getEl('inp')).on('change', function (e) {\n          self$$1.state.set('value', e.target.value);\n          self$$1.fire('change', e);\n        });\n        return self$$1._super();\n      },\n      renderHtml: function () {\n        var self$$1 = this, id = self$$1._id, settings = self$$1.settings, prefix = self$$1.classPrefix;\n        var value = self$$1.state.get('value') || '';\n        var icon, text, openBtnHtml = '', extraAttrs = '', statusHtml = '';\n        if ('spellcheck' in settings) {\n          extraAttrs += ' spellcheck=\"' + settings.spellcheck + '\"';\n        }\n        if (settings.maxLength) {\n          extraAttrs += ' maxlength=\"' + settings.maxLength + '\"';\n        }\n        if (settings.size) {\n          extraAttrs += ' size=\"' + settings.size + '\"';\n        }\n        if (settings.subtype) {\n          extraAttrs += ' type=\"' + settings.subtype + '\"';\n        }\n        statusHtml = '<i id=\"' + id + '-status\" class=\"mce-status mce-ico\" style=\"display: none\"></i>';\n        if (self$$1.disabled()) {\n          extraAttrs += ' disabled=\"disabled\"';\n        }\n        icon = settings.icon;\n        if (icon && icon !== 'caret') {\n          icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;\n        }\n        text = self$$1.state.get('text');\n        if (icon || text) {\n          openBtnHtml = '<div id=\"' + id + '-open\" class=\"' + prefix + 'btn ' + prefix + 'open\" tabIndex=\"-1\" role=\"button\">' + '<button id=\"' + id + '-action\" type=\"button\" hidefocus=\"1\" tabindex=\"-1\">' + (icon !== 'caret' ? '<i class=\"' + icon + '\"></i>' : '<i class=\"' + prefix + 'caret\"></i>') + (text ? (icon ? ' ' : '') + text : '') + '</button>' + '</div>';\n          self$$1.classes.add('has-open');\n        }\n        return '<div id=\"' + id + '\" class=\"' + self$$1.classes + '\">' + '<input id=\"' + id + '-inp\" class=\"' + prefix + 'textbox\" value=\"' + self$$1.encode(value, false) + '\" hidefocus=\"1\"' + extraAttrs + ' placeholder=\"' + self$$1.encode(settings.placeholder) + '\" />' + statusHtml + openBtnHtml + '</div>';\n      },\n      value: function (value) {\n        if (arguments.length) {\n          this.state.set('value', value);\n          return this;\n        }\n        if (this.state.get('rendered')) {\n          this.state.set('value', this.getEl('inp').value);\n        }\n        return this.state.get('value');\n      },\n      showAutoComplete: function (items, term) {\n        var self$$1 = this;\n        if (items.length === 0) {\n          self$$1.hideMenu();\n          return;\n        }\n        var insert = function (value, title) {\n          return function () {\n            self$$1.fire('selectitem', {\n              title: title,\n              value: value\n            });\n          };\n        };\n        if (self$$1.menu) {\n          self$$1.menu.items().remove();\n        } else {\n          self$$1.menu = global$4.create({\n            type: 'menu',\n            classes: 'combobox-menu',\n            layout: 'flow'\n          }).parent(self$$1).renderTo();\n        }\n        global$2.each(items, function (item) {\n          self$$1.menu.add({\n            text: item.title,\n            url: item.previewUrl,\n            match: term,\n            classes: 'menu-item-ellipsis',\n            onclick: insert(item.value, item.title)\n          });\n        });\n        self$$1.menu.renderNew();\n        self$$1.hideMenu();\n        self$$1.menu.on('cancel', function (e) {\n          if (e.control.parent() === self$$1.menu) {\n            e.stopPropagation();\n            self$$1.focus();\n            self$$1.hideMenu();\n          }\n        });\n        self$$1.menu.on('select', function () {\n          self$$1.focus();\n        });\n        var maxW = self$$1.layoutRect().w;\n        self$$1.menu.layoutRect({\n          w: maxW,\n          minW: 0,\n          maxW: maxW\n        });\n        self$$1.menu.repaint();\n        self$$1.menu.reflow();\n        self$$1.menu.show();\n        self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [\n          'br-tr',\n          'tr-br'\n        ] : [\n          'bl-tl',\n          'tl-bl'\n        ]);\n      },\n      hideMenu: function () {\n        if (this.menu) {\n          this.menu.hide();\n        }\n      },\n      bindStates: function () {\n        var self$$1 = this;\n        self$$1.state.on('change:value', function (e) {\n          if (self$$1.getEl('inp').value !== e.value) {\n            self$$1.getEl('inp').value = e.value;\n          }\n        });\n        self$$1.state.on('change:disabled', function (e) {\n          self$$1.getEl('inp').disabled = e.value;\n        });\n        self$$1.state.on('change:statusLevel', function (e) {\n          var statusIconElm = self$$1.getEl('status');\n          var prefix = self$$1.classPrefix, value = e.value;\n          funcs.css(statusIconElm, 'display', value === 'none' ? 'none' : '');\n          funcs.toggleClass(statusIconElm, prefix + 'i-checkmark', value === 'ok');\n          funcs.toggleClass(statusIconElm, prefix + 'i-warning', value === 'warn');\n          funcs.toggleClass(statusIconElm, prefix + 'i-error', value === 'error');\n          self$$1.classes.toggle('has-status', value !== 'none');\n          self$$1.repaint();\n        });\n        funcs.on(self$$1.getEl('status'), 'mouseleave', function () {\n          self$$1.tooltip().hide();\n        });\n        self$$1.on('cancel', function (e) {\n          if (self$$1.menu && self$$1.menu.visible()) {\n            e.stopPropagation();\n            self$$1.hideMenu();\n          }\n        });\n        var focusIdx = function (idx, menu) {\n          if (menu && menu.items().length > 0) {\n            menu.items().eq(idx)[0].focus();\n          }\n        };\n        self$$1.on('keydown', function (e) {\n          var keyCode = e.keyCode;\n          if (e.target.nodeName === 'INPUT') {\n            if (keyCode === global$d.DOWN) {\n              e.preventDefault();\n              self$$1.fire('autocomplete');\n              focusIdx(0, self$$1.menu);\n            } else if (keyCode === global$d.UP) {\n              e.preventDefault();\n              focusIdx(-1, self$$1.menu);\n            }\n          }\n        });\n        return self$$1._super();\n      },\n      remove: function () {\n        global$9(this.getEl('inp')).off();\n        if (this.menu) {\n          this.menu.remove();\n        }\n        this._super();\n      }\n    });\n\n    var ColorBox = ComboBox.extend({\n      init: function (settings) {\n        var self = this;\n        settings.spellcheck = false;\n        if (settings.onaction) {\n          settings.icon = 'none';\n        }\n        self._super(settings);\n        self.classes.add('colorbox');\n        self.on('change keyup postrender', function () {\n          self.repaintColor(self.value());\n        });\n      },\n      repaintColor: function (value) {\n        var openElm = this.getEl('open');\n        var elm = openElm ? openElm.getElementsByTagName('i')[0] : null;\n        if (elm) {\n          try {\n            elm.style.background = value;\n          } catch (ex) {\n          }\n        }\n      },\n      bindStates: function () {\n        var self = this;\n        self.state.on('change:value', function (e) {\n          if (self.state.get('rendered')) {\n            self.repaintColor(e.value);\n          }\n        });\n        return self._super();\n      }\n    });\n\n    var PanelButton = Button.extend({\n      showPanel: function () {\n        var self = this, settings = self.settings;\n        self.classes.add('opened');\n        if (!self.panel) {\n          var panelSettings = settings.panel;\n          if (panelSettings.type) {\n            panelSettings = {\n              layout: 'grid',\n              items: panelSettings\n            };\n          }\n          panelSettings.role = panelSettings.role || 'dialog';\n          panelSettings.popover = true;\n          panelSettings.autohide = true;\n          panelSettings.ariaRoot = true;\n          self.panel = new FloatPanel(panelSettings).on('hide', function () {\n            self.classes.remove('opened');\n          }).on('cancel', function (e) {\n            e.stopPropagation();\n            self.focus();\n            self.hidePanel();\n          }).parent(self).renderTo(self.getContainerElm());\n          self.panel.fire('show');\n          self.panel.reflow();\n        } else {\n          self.panel.show();\n        }\n        var rtlRels = [\n          'bc-tc',\n          'bc-tl',\n          'bc-tr'\n        ];\n        var ltrRels = [\n          'bc-tc',\n          'bc-tr',\n          'bc-tl',\n          'tc-bc',\n          'tc-br',\n          'tc-bl'\n        ];\n        var rel = self.panel.testMoveRel(self.getEl(), settings.popoverAlign || (self.isRtl() ? rtlRels : ltrRels));\n        self.panel.classes.toggle('start', rel.substr(-1) === 'l');\n        self.panel.classes.toggle('end', rel.substr(-1) === 'r');\n        var isTop = rel.substr(0, 1) === 't';\n        self.panel.classes.toggle('bottom', !isTop);\n        self.panel.classes.toggle('top', isTop);\n        self.panel.moveRel(self.getEl(), rel);\n      },\n      hidePanel: function () {\n        var self = this;\n        if (self.panel) {\n          self.panel.hide();\n        }\n      },\n      postRender: function () {\n        var self = this;\n        self.aria('haspopup', true);\n        self.on('click', function (e) {\n          if (e.control === self) {\n            if (self.panel && self.panel.visible()) {\n              self.hidePanel();\n            } else {\n              self.showPanel();\n              self.panel.focus(!!e.aria);\n            }\n          }\n        });\n        return self._super();\n      },\n      remove: function () {\n        if (this.panel) {\n          this.panel.remove();\n          this.panel = null;\n        }\n        return this._super();\n      }\n    });\n\n    var DOM$3 = global$3.DOM;\n    var ColorButton = PanelButton.extend({\n      init: function (settings) {\n        this._super(settings);\n        this.classes.add('splitbtn');\n        this.classes.add('colorbutton');\n      },\n      color: function (color) {\n        if (color) {\n          this._color = color;\n          this.getEl('preview').style.backgroundColor = color;\n          return this;\n        }\n        return this._color;\n      },\n      resetColor: function () {\n        this._color = null;\n        this.getEl('preview').style.backgroundColor = null;\n        return this;\n      },\n      renderHtml: function () {\n        var self = this, id = self._id, prefix = self.classPrefix, text = self.state.get('text');\n        var icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';\n        var image = self.settings.image ? ' style=\"background-image: url(\\'' + self.settings.image + '\\')\"' : '';\n        var textHtml = '';\n        if (text) {\n          self.classes.add('btn-has-text');\n          textHtml = '<span class=\"' + prefix + 'txt\">' + self.encode(text) + '</span>';\n        }\n        return '<div id=\"' + id + '\" class=\"' + self.classes + '\" role=\"button\" tabindex=\"-1\" aria-haspopup=\"true\">' + '<button role=\"presentation\" hidefocus=\"1\" type=\"button\" tabindex=\"-1\">' + (icon ? '<i class=\"' + icon + '\"' + image + '></i>' : '') + '<span id=\"' + id + '-preview\" class=\"' + prefix + 'preview\"></span>' + textHtml + '</button>' + '<button type=\"button\" class=\"' + prefix + 'open\" hidefocus=\"1\" tabindex=\"-1\">' + ' <i class=\"' + prefix + 'caret\"></i>' + '</button>' + '</div>';\n      },\n      postRender: function () {\n        var self = this, onClickHandler = self.settings.onclick;\n        self.on('click', function (e) {\n          if (e.aria && e.aria.key === 'down') {\n            return;\n          }\n          if (e.control === self && !DOM$3.getParent(e.target, '.' + self.classPrefix + 'open')) {\n            e.stopImmediatePropagation();\n            onClickHandler.call(self, e);\n          }\n        });\n        delete self.settings.onclick;\n        return self._super();\n      }\n    });\n\n    var global$e = tinymce.util.Tools.resolve('tinymce.util.Color');\n\n    var ColorPicker = Widget.extend({\n      Defaults: { classes: 'widget colorpicker' },\n      init: function (settings) {\n        this._super(settings);\n      },\n      postRender: function () {\n        var self = this;\n        var color = self.color();\n        var hsv, hueRootElm, huePointElm, svRootElm, svPointElm;\n        hueRootElm = self.getEl('h');\n        huePointElm = self.getEl('hp');\n        svRootElm = self.getEl('sv');\n        svPointElm = self.getEl('svp');\n        function getPos(elm, event) {\n          var pos = funcs.getPos(elm);\n          var x, y;\n          x = event.pageX - pos.x;\n          y = event.pageY - pos.y;\n          x = Math.max(0, Math.min(x / elm.clientWidth, 1));\n          y = Math.max(0, Math.min(y / elm.clientHeight, 1));\n          return {\n            x: x,\n            y: y\n          };\n        }\n        function updateColor(hsv, hueUpdate) {\n          var hue = (360 - hsv.h) / 360;\n          funcs.css(huePointElm, { top: hue * 100 + '%' });\n          if (!hueUpdate) {\n            funcs.css(svPointElm, {\n              left: hsv.s + '%',\n              top: 100 - hsv.v + '%'\n            });\n          }\n          svRootElm.style.background = global$e({\n            s: 100,\n            v: 100,\n            h: hsv.h\n          }).toHex();\n          self.color().parse({\n            s: hsv.s,\n            v: hsv.v,\n            h: hsv.h\n          });\n        }\n        function updateSaturationAndValue(e) {\n          var pos;\n          pos = getPos(svRootElm, e);\n          hsv.s = pos.x * 100;\n          hsv.v = (1 - pos.y) * 100;\n          updateColor(hsv);\n          self.fire('change');\n        }\n        function updateHue(e) {\n          var pos;\n          pos = getPos(hueRootElm, e);\n          hsv = color.toHsv();\n          hsv.h = (1 - pos.y) * 360;\n          updateColor(hsv, true);\n          self.fire('change');\n        }\n        self._repaint = function () {\n          hsv = color.toHsv();\n          updateColor(hsv);\n        };\n        self._super();\n        self._svdraghelper = new DragHelper(self._id + '-sv', {\n          start: updateSaturationAndValue,\n          drag: updateSaturationAndValue\n        });\n        self._hdraghelper = new DragHelper(self._id + '-h', {\n          start: updateHue,\n          drag: updateHue\n        });\n        self._repaint();\n      },\n      rgb: function () {\n        return this.color().toRgb();\n      },\n      value: function (value) {\n        var self = this;\n        if (arguments.length) {\n          self.color().parse(value);\n          if (self._rendered) {\n            self._repaint();\n          }\n        } else {\n          return self.color().toHex();\n        }\n      },\n      color: function () {\n        if (!this._color) {\n          this._color = global$e();\n        }\n        return this._color;\n      },\n      renderHtml: function () {\n        var self = this;\n        var id = self._id;\n        var prefix = self.classPrefix;\n        var hueHtml;\n        var stops = '#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000';\n        function getOldIeFallbackHtml() {\n          var i, l, html = '', gradientPrefix, stopsList;\n          gradientPrefix = 'filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=';\n          stopsList = stops.split(',');\n          for (i = 0, l = stopsList.length - 1; i < l; i++) {\n            html += '<div class=\"' + prefix + 'colorpicker-h-chunk\" style=\"' + 'height:' + 100 / l + '%;' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ');' + '-ms-' + gradientPrefix + stopsList[i] + ',endColorstr=' + stopsList[i + 1] + ')' + '\"></div>';\n          }\n          return html;\n        }\n        var gradientCssText = 'background: -ms-linear-gradient(top,' + stops + ');' + 'background: linear-gradient(to bottom,' + stops + ');';\n        hueHtml = '<div id=\"' + id + '-h\" class=\"' + prefix + 'colorpicker-h\" style=\"' + gradientCssText + '\">' + getOldIeFallbackHtml() + '<div id=\"' + id + '-hp\" class=\"' + prefix + 'colorpicker-h-marker\"></div>' + '</div>';\n        return '<div id=\"' + id + '\" class=\"' + self.classes + '\">' + '<div id=\"' + id + '-sv\" class=\"' + prefix + 'colorpicker-sv\">' + '<div class=\"' + prefix + 'colorpicker-overlay1\">' + '<div class=\"' + prefix + 'colorpicker-overlay2\">' + '<div id=\"' + id + '-svp\" class=\"' + prefix + 'colorpicker-selector1\">' + '<div class=\"' + prefix + 'colorpicker-selector2\"></div>' + '</div>' + '</div>' + '</div>' + '</div>' + hueHtml + '</div>';\n      }\n    });\n\n    var DropZone = Widget.extend({\n      init: function (settings) {\n        var self = this;\n        settings = global$2.extend({\n          height: 100,\n          text: 'Drop an image here',\n          multiple: false,\n          accept: null\n        }, settings);\n        self._super(settings);\n        self.classes.add('dropzone');\n        if (settings.multiple) {\n          self.classes.add('multiple');\n        }\n      },\n      renderHtml: function () {\n        var self = this;\n        var attrs, elm;\n        var cfg = self.settings;\n        attrs = {\n          id: self._id,\n          hidefocus: '1'\n        };\n        elm = funcs.create('div', attrs, '<span>' + this.translate(cfg.text) + '</span>');\n        if (cfg.height) {\n          funcs.css(elm, 'height', cfg.height + 'px');\n        }\n        if (cfg.width) {\n          funcs.css(elm, 'width', cfg.width + 'px');\n        }\n        elm.className = self.classes;\n        return elm.outerHTML;\n      },\n      postRender: function () {\n        var self = this;\n        var toggleDragClass = function (e) {\n          e.preventDefault();\n          self.classes.toggle('dragenter');\n          self.getEl().className = self.classes;\n        };\n        var filter = function (files) {\n          var accept = self.settings.accept;\n          if (typeof accept !== 'string') {\n            return files;\n          }\n          var re = new RegExp('(' + accept.split(/\\s*,\\s*/).join('|') + ')$', 'i');\n          return global$2.grep(files, function (file) {\n            return re.test(file.name);\n          });\n        };\n        self._super();\n        self.$el.on('dragover', function (e) {\n          e.preventDefault();\n        });\n        self.$el.on('dragenter', toggleDragClass);\n        self.$el.on('dragleave', toggleDragClass);\n        self.$el.on('drop', function (e) {\n          e.preventDefault();\n          if (self.state.get('disabled')) {\n            return;\n          }\n          var files = filter(e.dataTransfer.files);\n          self.value = function () {\n            if (!files.length) {\n              return null;\n            } else if (self.settings.multiple) {\n              return files;\n            } else {\n              return files[0];\n            }\n          };\n          if (files.length) {\n            self.fire('change', e);\n          }\n        });\n      },\n      remove: function () {\n        this.$el.off();\n        this._super();\n      }\n    });\n\n    var Path = Widget.extend({\n      init: function (settings) {\n        var self = this;\n        if (!settings.delimiter) {\n          settings.delimiter = '\\xBB';\n        }\n        self._super(settings);\n        self.classes.add('path');\n        self.canFocus = true;\n        self.on('click', function (e) {\n          var index;\n          var target = e.target;\n          if (index = target.getAttribute('data-index')) {\n            self.fire('select', {\n              value: self.row()[index],\n              index: index\n            });\n          }\n        });\n        self.row(self.settings.row);\n      },\n      focus: function () {\n        var self = this;\n        self.getEl().firstChild.focus();\n        return self;\n      },\n      row: function (row) {\n        if (!arguments.length) {\n          return this.state.get('row');\n        }\n        this.state.set('row', row);\n        return this;\n      },\n      renderHtml: function () {\n        var self = this;\n        return '<div id=\"' + self._id + '\" class=\"' + self.classes + '\">' + self._getDataPathHtml(self.state.get('row')) + '</div>';\n      },\n      bindStates: function () {\n        var self = this;\n        self.state.on('change:row', function (e) {\n          self.innerHtml(self._getDataPathHtml(e.value));\n        });\n        return self._super();\n      },\n      _getDataPathHtml: function (data) {\n        var self = this;\n        var parts = data || [];\n        var i, l, html = '';\n        var prefix = self.classPrefix;\n        for (i = 0, l = parts.length; i < l; i++) {\n          html += (i > 0 ? '<div class=\"' + prefix + 'divider\" aria-hidden=\"true\"> ' + self.settings.delimiter + ' </div>' : '') + '<div role=\"button\" class=\"' + prefix + 'path-item' + (i === l - 1 ? ' ' + prefix + 'last' : '') + '\" data-index=\"' + i + '\" tabindex=\"-1\" id=\"' + self._id + '-' + i + '\" aria-level=\"' + (i + 1) + '\">' + parts[i].name + '</div>';\n        }\n        if (!html) {\n          html = '<div class=\"' + prefix + 'path-item\">\\xA0</div>';\n        }\n        return html;\n      }\n    });\n\n    var ElementPath = Path.extend({\n      postRender: function () {\n        var self = this, editor = self.settings.editor;\n        function isHidden(elm) {\n          if (elm.nodeType === 1) {\n            if (elm.nodeName === 'BR' || !!elm.getAttribute('data-mce-bogus')) {\n              return true;\n            }\n            if (elm.getAttribute('data-mce-type') === 'bookmark') {\n              return true;\n            }\n          }\n          return false;\n        }\n        if (editor.settings.elementpath !== false) {\n          self.on('select', function (e) {\n            editor.focus();\n            editor.selection.select(this.row()[e.index].element);\n            editor.nodeChanged();\n          });\n          editor.on('nodeChange', function (e) {\n            var outParents = [];\n            var parents = e.parents;\n            var i = parents.length;\n            while (i--) {\n              if (parents[i].nodeType === 1 && !isHidden(parents[i])) {\n                var args = editor.fire('ResolveName', {\n                  name: parents[i].nodeName.toLowerCase(),\n                  target: parents[i]\n                });\n                if (!args.isDefaultPrevented()) {\n                  outParents.push({\n                    name: args.name,\n                    element: parents[i]\n                  });\n                }\n                if (args.isPropagationStopped()) {\n                  break;\n                }\n              }\n            }\n            self.row(outParents);\n          });\n        }\n        return self._super();\n      }\n    });\n\n    var FormItem = Container.extend({\n      Defaults: {\n        layout: 'flex',\n        align: 'center',\n        defaults: { flex: 1 }\n      },\n      renderHtml: function () {\n        var self = this, layout = self._layout, prefix = self.classPrefix;\n        self.classes.add('formitem');\n        layout.preRender(self);\n        return '<div id=\"' + self._id + '\" class=\"' + self.classes + '\" hidefocus=\"1\" tabindex=\"-1\">' + (self.settings.title ? '<div id=\"' + self._id + '-title\" class=\"' + prefix + 'title\">' + self.settings.title + '</div>' : '') + '<div id=\"' + self._id + '-body\" class=\"' + self.bodyClasses + '\">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</div>';\n      }\n    });\n\n    var Form = Container.extend({\n      Defaults: {\n        containerCls: 'form',\n        layout: 'flex',\n        direction: 'column',\n        align: 'stretch',\n        flex: 1,\n        padding: 15,\n        labelGap: 30,\n        spacing: 10,\n        callbacks: {\n          submit: function () {\n            this.submit();\n          }\n        }\n      },\n      preRender: function () {\n        var self = this, items = self.items();\n        if (!self.settings.formItemDefaults) {\n          self.settings.formItemDefaults = {\n            layout: 'flex',\n            autoResize: 'overflow',\n            defaults: { flex: 1 }\n          };\n        }\n        items.each(function (ctrl) {\n          var formItem;\n          var label = ctrl.settings.label;\n          if (label) {\n            formItem = new FormItem(global$2.extend({\n              items: {\n                type: 'label',\n                id: ctrl._id + '-l',\n                text: label,\n                flex: 0,\n                forId: ctrl._id,\n                disabled: ctrl.disabled()\n              }\n            }, self.settings.formItemDefaults));\n            formItem.type = 'formitem';\n            ctrl.aria('labelledby', ctrl._id + '-l');\n            if (typeof ctrl.settings.flex === 'undefined') {\n              ctrl.settings.flex = 1;\n            }\n            self.replace(ctrl, formItem);\n            formItem.add(ctrl);\n          }\n        });\n      },\n      submit: function () {\n        return this.fire('submit', { data: this.toJSON() });\n      },\n      postRender: function () {\n        var self = this;\n        self._super();\n        self.fromJSON(self.settings.data);\n      },\n      bindStates: function () {\n        var self = this;\n        self._super();\n        function recalcLabels() {\n          var maxLabelWidth = 0;\n          var labels = [];\n          var i, labelGap, items;\n          if (self.settings.labelGapCalc === false) {\n            return;\n          }\n          if (self.settings.labelGapCalc === 'children') {\n            items = self.find('formitem');\n          } else {\n            items = self.items();\n          }\n          items.filter('formitem').each(function (item) {\n            var labelCtrl = item.items()[0], labelWidth = labelCtrl.getEl().clientWidth;\n            maxLabelWidth = labelWidth > maxLabelWidth ? labelWidth : maxLabelWidth;\n            labels.push(labelCtrl);\n          });\n          labelGap = self.settings.labelGap || 0;\n          i = labels.length;\n          while (i--) {\n            labels[i].settings.minWidth = maxLabelWidth + labelGap;\n          }\n        }\n        self.on('show', recalcLabels);\n        recalcLabels();\n      }\n    });\n\n    var FieldSet = Form.extend({\n      Defaults: {\n        containerCls: 'fieldset',\n        layout: 'flex',\n        direction: 'column',\n        align: 'stretch',\n        flex: 1,\n        padding: '25 15 5 15',\n        labelGap: 30,\n        spacing: 10,\n        border: 1\n      },\n      renderHtml: function () {\n        var self = this, layout = self._layout, prefix = self.classPrefix;\n        self.preRender();\n        layout.preRender(self);\n        return '<fieldset id=\"' + self._id + '\" class=\"' + self.classes + '\" hidefocus=\"1\" tabindex=\"-1\">' + (self.settings.title ? '<legend id=\"' + self._id + '-title\" class=\"' + prefix + 'fieldset-title\">' + self.settings.title + '</legend>' : '') + '<div id=\"' + self._id + '-body\" class=\"' + self.bodyClasses + '\">' + (self.settings.html || '') + layout.renderHtml(self) + '</div>' + '</fieldset>';\n      }\n    });\n\n    var unique$1 = 0;\n    var generate = function (prefix) {\n      var date = new Date();\n      var time = date.getTime();\n      var random = Math.floor(Math.random() * 1000000000);\n      unique$1++;\n      return prefix + '_' + random + unique$1 + String(time);\n    };\n\n    var fromHtml = function (html, scope) {\n      var doc = scope || document;\n      var div = doc.createElement('div');\n      div.innerHTML = html;\n      if (!div.hasChildNodes() || div.childNodes.length > 1) {\n        console.error('HTML does not have a single root node', html);\n        throw 'HTML must have a single root node';\n      }\n      return fromDom(div.childNodes[0]);\n    };\n    var fromTag = function (tag, scope) {\n      var doc = scope || document;\n      var node = doc.createElement(tag);\n      return fromDom(node);\n    };\n    var fromText = function (text, scope) {\n      var doc = scope || document;\n      var node = doc.createTextNode(text);\n      return fromDom(node);\n    };\n    var fromDom = function (node) {\n      if (node === null || node === undefined)\n        throw new Error('Node cannot be null or undefined');\n      return { dom: constant(node) };\n    };\n    var fromPoint = function (docElm, x, y) {\n      var doc = docElm.dom();\n      return Option.from(doc.elementFromPoint(x, y)).map(fromDom);\n    };\n    var Element$$1 = {\n      fromHtml: fromHtml,\n      fromTag: fromTag,\n      fromText: fromText,\n      fromDom: fromDom,\n      fromPoint: fromPoint\n    };\n\n    var cached = function (f) {\n      var called = false;\n      var r;\n      return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          args[_i] = arguments[_i];\n        }\n        if (!called) {\n          called = true;\n          r = f.apply(null, args);\n        }\n        return r;\n      };\n    };\n\n    var ATTRIBUTE = Node.ATTRIBUTE_NODE;\n    var CDATA_SECTION = Node.CDATA_SECTION_NODE;\n    var COMMENT = Node.COMMENT_NODE;\n    var DOCUMENT = Node.DOCUMENT_NODE;\n    var DOCUMENT_TYPE = Node.DOCUMENT_TYPE_NODE;\n    var DOCUMENT_FRAGMENT = Node.DOCUMENT_FRAGMENT_NODE;\n    var ELEMENT = Node.ELEMENT_NODE;\n    var TEXT = Node.TEXT_NODE;\n    var PROCESSING_INSTRUCTION = Node.PROCESSING_INSTRUCTION_NODE;\n    var ENTITY_REFERENCE = Node.ENTITY_REFERENCE_NODE;\n    var ENTITY = Node.ENTITY_NODE;\n    var NOTATION = Node.NOTATION_NODE;\n\n    var Immutable = function () {\n      var fields = [];\n      for (var _i = 0; _i < arguments.length; _i++) {\n        fields[_i] = arguments[_i];\n      }\n      return function () {\n        var values = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n          values[_i] = arguments[_i];\n        }\n        if (fields.length !== values.length) {\n          throw new Error('Wrong number of arguments to struct. Expected \"[' + fields.length + ']\", got ' + values.length + ' arguments');\n        }\n        var struct = {};\n        each(fields, function (name, i) {\n          struct[name] = constant(values[i]);\n        });\n        return struct;\n      };\n    };\n\n    var Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n    var path = function (parts, scope) {\n      var o = scope !== undefined && scope !== null ? scope : Global;\n      for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)\n        o = o[parts[i]];\n      return o;\n    };\n    var resolve = function (p, scope) {\n      var parts = p.split('.');\n      return path(parts, scope);\n    };\n\n    var unsafe = function (name, scope) {\n      return resolve(name, scope);\n    };\n    var getOrDie = function (name, scope) {\n      var actual = unsafe(name, scope);\n      if (actual === undefined || actual === null)\n        throw name + ' not available on this browser';\n      return actual;\n    };\n    var Global$1 = { getOrDie: getOrDie };\n\n    var node = function () {\n      var f = Global$1.getOrDie('Node');\n      return f;\n    };\n    var compareDocumentPosition = function (a, b, match) {\n      return (a.compareDocumentPosition(b) & match) !== 0;\n    };\n    var documentPositionPreceding = function (a, b) {\n      return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);\n    };\n    var documentPositionContainedBy = function (a, b) {\n      return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);\n    };\n    var Node$1 = {\n      documentPositionPreceding: documentPositionPreceding,\n      documentPositionContainedBy: documentPositionContainedBy\n    };\n\n    var firstMatch = function (regexes, s) {\n      for (var i = 0; i < regexes.length; i++) {\n        var x = regexes[i];\n        if (x.test(s))\n          return x;\n      }\n      return undefined;\n    };\n    var find$2 = function (regexes, agent) {\n      var r = firstMatch(regexes, agent);\n      if (!r)\n        return {\n          major: 0,\n          minor: 0\n        };\n      var group = function (i) {\n        return Number(agent.replace(r, '$' + i));\n      };\n      return nu(group(1), group(2));\n    };\n    var detect = function (versionRegexes, agent) {\n      var cleanedAgent = String(agent).toLowerCase();\n      if (versionRegexes.length === 0)\n        return unknown();\n      return find$2(versionRegexes, cleanedAgent);\n    };\n    var unknown = function () {\n      return nu(0, 0);\n    };\n    var nu = function (major, minor) {\n      return {\n        major: major,\n        minor: minor\n      };\n    };\n    var Version = {\n      nu: nu,\n      detect: detect,\n      unknown: unknown\n    };\n\n    var edge = 'Edge';\n    var chrome = 'Chrome';\n    var ie = 'IE';\n    var opera = 'Opera';\n    var firefox = 'Firefox';\n    var safari = 'Safari';\n    var isBrowser = function (name, current) {\n      return function () {\n        return current === name;\n      };\n    };\n    var unknown$1 = function () {\n      return nu$1({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    var nu$1 = function (info) {\n      var current = info.current;\n      var version = info.version;\n      return {\n        current: current,\n        version: version,\n        isEdge: isBrowser(edge, current),\n        isChrome: isBrowser(chrome, current),\n        isIE: isBrowser(ie, current),\n        isOpera: isBrowser(opera, current),\n        isFirefox: isBrowser(firefox, current),\n        isSafari: isBrowser(safari, current)\n      };\n    };\n    var Browser = {\n      unknown: unknown$1,\n      nu: nu$1,\n      edge: constant(edge),\n      chrome: constant(chrome),\n      ie: constant(ie),\n      opera: constant(opera),\n      firefox: constant(firefox),\n      safari: constant(safari)\n    };\n\n    var windows$1 = 'Windows';\n    var ios = 'iOS';\n    var android = 'Android';\n    var linux = 'Linux';\n    var osx = 'OSX';\n    var solaris = 'Solaris';\n    var freebsd = 'FreeBSD';\n    var isOS = function (name, current) {\n      return function () {\n        return current === name;\n      };\n    };\n    var unknown$2 = function () {\n      return nu$2({\n        current: undefined,\n        version: Version.unknown()\n      });\n    };\n    var nu$2 = function (info) {\n      var current = info.current;\n      var version = info.version;\n      return {\n        current: current,\n        version: version,\n        isWindows: isOS(windows$1, current),\n        isiOS: isOS(ios, current),\n        isAndroid: isOS(android, current),\n        isOSX: isOS(osx, current),\n        isLinux: isOS(linux, current),\n        isSolaris: isOS(solaris, current),\n        isFreeBSD: isOS(freebsd, current)\n      };\n    };\n    var OperatingSystem = {\n      unknown: unknown$2,\n      nu: nu$2,\n      windows: constant(windows$1),\n      ios: constant(ios),\n      android: constant(android),\n      linux: constant(linux),\n      osx: constant(osx),\n      solaris: constant(solaris),\n      freebsd: constant(freebsd)\n    };\n\n    var DeviceType = function (os, browser, userAgent) {\n      var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\n      var isiPhone = os.isiOS() && !isiPad;\n      var isAndroid3 = os.isAndroid() && os.version.major === 3;\n      var isAndroid4 = os.isAndroid() && os.version.major === 4;\n      var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;\n      var isTouch = os.isiOS() || os.isAndroid();\n      var isPhone = isTouch && !isTablet;\n      var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\n      return {\n        isiPad: constant(isiPad),\n        isiPhone: constant(isiPhone),\n        isTablet: constant(isTablet),\n        isPhone: constant(isPhone),\n        isTouch: constant(isTouch),\n        isAndroid: os.isAndroid,\n        isiOS: os.isiOS,\n        isWebView: constant(iOSwebview)\n      };\n    };\n\n    var detect$1 = function (candidates, userAgent) {\n      var agent = String(userAgent).toLowerCase();\n      return find(candidates, function (candidate) {\n        return candidate.search(agent);\n      });\n    };\n    var detectBrowser = function (browsers, userAgent) {\n      return detect$1(browsers, userAgent).map(function (browser) {\n        var version = Version.detect(browser.versionRegexes, userAgent);\n        return {\n          current: browser.name,\n          version: version\n        };\n      });\n    };\n    var detectOs = function (oses, userAgent) {\n      return detect$1(oses, userAgent).map(function (os) {\n        var version = Version.detect(os.versionRegexes, userAgent);\n        return {\n          current: os.name,\n          version: version\n        };\n      });\n    };\n    var UaString = {\n      detectBrowser: detectBrowser,\n      detectOs: detectOs\n    };\n\n    var contains$1 = function (str, substr) {\n      return str.indexOf(substr) !== -1;\n    };\n\n    var normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\n    var checkContains = function (target) {\n      return function (uastring) {\n        return contains$1(uastring, target);\n      };\n    };\n    var browsers = [\n      {\n        name: 'Edge',\n        versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n        search: function (uastring) {\n          var monstrosity = contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');\n          return monstrosity;\n        }\n      },\n      {\n        name: 'Chrome',\n        versionRegexes: [\n          /.*?chrome\\/([0-9]+)\\.([0-9]+).*/,\n          normalVersionRegex\n        ],\n        search: function (uastring) {\n          return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');\n        }\n      },\n      {\n        name: 'IE',\n        versionRegexes: [\n          /.*?msie\\ ?([0-9]+)\\.([0-9]+).*/,\n          /.*?rv:([0-9]+)\\.([0-9]+).*/\n        ],\n        search: function (uastring) {\n          return contains$1(uastring, 'msie') || contains$1(uastring, 'trident');\n        }\n      },\n      {\n        name: 'Opera',\n        versionRegexes: [\n          normalVersionRegex,\n          /.*?opera\\/([0-9]+)\\.([0-9]+).*/\n        ],\n        search: checkContains('opera')\n      },\n      {\n        name: 'Firefox',\n        versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\n        search: checkContains('firefox')\n      },\n      {\n        name: 'Safari',\n        versionRegexes: [\n          normalVersionRegex,\n          /.*?cpu os ([0-9]+)_([0-9]+).*/\n        ],\n        search: function (uastring) {\n          return (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');\n        }\n      }\n    ];\n    var oses = [\n      {\n        name: 'Windows',\n        search: checkContains('win'),\n        versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\n      },\n      {\n        name: 'iOS',\n        search: function (uastring) {\n          return contains$1(uastring, 'iphone') || contains$1(uastring, 'ipad');\n        },\n        versionRegexes: [\n          /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/,\n          /.*cpu os ([0-9]+)_([0-9]+).*/,\n          /.*cpu iphone os ([0-9]+)_([0-9]+).*/\n        ]\n      },\n      {\n        name: 'Android',\n        search: checkContains('android'),\n        versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\n      },\n      {\n        name: 'OSX',\n        search: checkContains('os x'),\n        versionRegexes: [/.*?os\\ x\\ ?([0-9]+)_([0-9]+).*/]\n      },\n      {\n        name: 'Linux',\n        search: checkContains('linux'),\n        versionRegexes: []\n      },\n      {\n        name: 'Solaris',\n        search: checkContains('sunos'),\n        versionRegexes: []\n      },\n      {\n        name: 'FreeBSD',\n        search: checkContains('freebsd'),\n        versionRegexes: []\n      }\n    ];\n    var PlatformInfo = {\n      browsers: constant(browsers),\n      oses: constant(oses)\n    };\n\n    var detect$2 = function (userAgent) {\n      var browsers = PlatformInfo.browsers();\n      var oses = PlatformInfo.oses();\n      var browser = UaString.detectBrowser(browsers, userAgent).fold(Browser.unknown, Browser.nu);\n      var os = UaString.detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);\n      var deviceType = DeviceType(os, browser, userAgent);\n      return {\n        browser: browser,\n        os: os,\n        deviceType: deviceType\n      };\n    };\n    var PlatformDetection = { detect: detect$2 };\n\n    var detect$3 = cached(function () {\n      var userAgent = navigator.userAgent;\n      return PlatformDetection.detect(userAgent);\n    });\n    var PlatformDetection$1 = { detect: detect$3 };\n\n    var ELEMENT$1 = ELEMENT;\n    var DOCUMENT$1 = DOCUMENT;\n    var bypassSelector = function (dom) {\n      return dom.nodeType !== ELEMENT$1 && dom.nodeType !== DOCUMENT$1 || dom.childElementCount === 0;\n    };\n    var all = function (selector, scope) {\n      var base = scope === undefined ? document : scope.dom();\n      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);\n    };\n    var one = function (selector, scope) {\n      var base = scope === undefined ? document : scope.dom();\n      return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);\n    };\n\n    var regularContains = function (e1, e2) {\n      var d1 = e1.dom(), d2 = e2.dom();\n      return d1 === d2 ? false : d1.contains(d2);\n    };\n    var ieContains = function (e1, e2) {\n      return Node$1.documentPositionContainedBy(e1.dom(), e2.dom());\n    };\n    var browser = PlatformDetection$1.detect().browser;\n    var contains$2 = browser.isIE() ? ieContains : regularContains;\n\n    var spot = Immutable('element', 'offset');\n\n    var descendants$1 = function (scope, selector) {\n      return all(selector, scope);\n    };\n\n    var trim$1 = global$2.trim;\n    var hasContentEditableState = function (value) {\n      return function (node) {\n        if (node && node.nodeType === 1) {\n          if (node.contentEditable === value) {\n            return true;\n          }\n          if (node.getAttribute('data-mce-contenteditable') === value) {\n            return true;\n          }\n        }\n        return false;\n      };\n    };\n    var isContentEditableTrue = hasContentEditableState('true');\n    var isContentEditableFalse = hasContentEditableState('false');\n    var create = function (type, title, url, level, attach) {\n      return {\n        type: type,\n        title: title,\n        url: url,\n        level: level,\n        attach: attach\n      };\n    };\n    var isChildOfContentEditableTrue = function (node) {\n      while (node = node.parentNode) {\n        var value = node.contentEditable;\n        if (value && value !== 'inherit') {\n          return isContentEditableTrue(node);\n        }\n      }\n      return false;\n    };\n    var select = function (selector, root) {\n      return map(descendants$1(Element$$1.fromDom(root), selector), function (element) {\n        return element.dom();\n      });\n    };\n    var getElementText = function (elm) {\n      return elm.innerText || elm.textContent;\n    };\n    var getOrGenerateId = function (elm) {\n      return elm.id ? elm.id : generate('h');\n    };\n    var isAnchor = function (elm) {\n      return elm && elm.nodeName === 'A' && (elm.id || elm.name);\n    };\n    var isValidAnchor = function (elm) {\n      return isAnchor(elm) && isEditable(elm);\n    };\n    var isHeader = function (elm) {\n      return elm && /^(H[1-6])$/.test(elm.nodeName);\n    };\n    var isEditable = function (elm) {\n      return isChildOfContentEditableTrue(elm) && !isContentEditableFalse(elm);\n    };\n    var isValidHeader = function (elm) {\n      return isHeader(elm) && isEditable(elm);\n    };\n    var getLevel = function (elm) {\n      return isHeader(elm) ? parseInt(elm.nodeName.substr(1), 10) : 0;\n    };\n    var headerTarget = function (elm) {\n      var headerId = getOrGenerateId(elm);\n      var attach = function () {\n        elm.id = headerId;\n      };\n      return create('header', getElementText(elm), '#' + headerId, getLevel(elm), attach);\n    };\n    var anchorTarget = function (elm) {\n      var anchorId = elm.id || elm.name;\n      var anchorText = getElementText(elm);\n      return create('anchor', anchorText ? anchorText : '#' + anchorId, '#' + anchorId, 0, noop);\n    };\n    var getHeaderTargets = function (elms) {\n      return map(filter(elms, isValidHeader), headerTarget);\n    };\n    var getAnchorTargets = function (elms) {\n      return map(filter(elms, isValidAnchor), anchorTarget);\n    };\n    var getTargetElements = function (elm) {\n      var elms = select('h1,h2,h3,h4,h5,h6,a:not([href])', elm);\n      return elms;\n    };\n    var hasTitle = function (target) {\n      return trim$1(target.title).length > 0;\n    };\n    var find$3 = function (elm) {\n      var elms = getTargetElements(elm);\n      return filter(getHeaderTargets(elms).concat(getAnchorTargets(elms)), hasTitle);\n    };\n    var LinkTargets = { find: find$3 };\n\n    var getActiveEditor = function () {\n      return window.tinymce ? window.tinymce.activeEditor : global$1.activeEditor;\n    };\n    var history = {};\n    var HISTORY_LENGTH = 5;\n    var clearHistory = function () {\n      history = {};\n    };\n    var toMenuItem = function (target) {\n      return {\n        title: target.title,\n        value: {\n          title: { raw: target.title },\n          url: target.url,\n          attach: target.attach\n        }\n      };\n    };\n    var toMenuItems = function (targets) {\n      return global$2.map(targets, toMenuItem);\n    };\n    var staticMenuItem = function (title, url) {\n      return {\n        title: title,\n        value: {\n          title: title,\n          url: url,\n          attach: noop\n        }\n      };\n    };\n    var isUniqueUrl = function (url, targets) {\n      var foundTarget = exists(targets, function (target) {\n        return target.url === url;\n      });\n      return !foundTarget;\n    };\n    var getSetting = function (editorSettings, name, defaultValue) {\n      var value = name in editorSettings ? editorSettings[name] : defaultValue;\n      return value === false ? null : value;\n    };\n    var createMenuItems = function (term, targets, fileType, editorSettings) {\n      var separator = { title: '-' };\n      var fromHistoryMenuItems = function (history) {\n        var historyItems = history.hasOwnProperty(fileType) ? history[fileType] : [];\n        var uniqueHistory = filter(historyItems, function (url) {\n          return isUniqueUrl(url, targets);\n        });\n        return global$2.map(uniqueHistory, function (url) {\n          return {\n            title: url,\n            value: {\n              title: url,\n              url: url,\n              attach: noop\n            }\n          };\n        });\n      };\n      var fromMenuItems = function (type) {\n        var filteredTargets = filter(targets, function (target) {\n          return target.type === type;\n        });\n        return toMenuItems(filteredTargets);\n      };\n      var anchorMenuItems = function () {\n        var anchorMenuItems = fromMenuItems('anchor');\n        var topAnchor = getSetting(editorSettings, 'anchor_top', '#top');\n        var bottomAchor = getSetting(editorSettings, 'anchor_bottom', '#bottom');\n        if (topAnchor !== null) {\n          anchorMenuItems.unshift(staticMenuItem('<top>', topAnchor));\n        }\n        if (bottomAchor !== null) {\n          anchorMenuItems.push(staticMenuItem('<bottom>', bottomAchor));\n        }\n        return anchorMenuItems;\n      };\n      var join = function (items) {\n        return foldl(items, function (a, b) {\n          var bothEmpty = a.length === 0 || b.length === 0;\n          return bothEmpty ? a.concat(b) : a.concat(separator, b);\n        }, []);\n      };\n      if (editorSettings.typeahead_urls === false) {\n        return [];\n      }\n      return fileType === 'file' ? join([\n        filterByQuery(term, fromHistoryMenuItems(history)),\n        filterByQuery(term, fromMenuItems('header')),\n        filterByQuery(term, anchorMenuItems())\n      ]) : filterByQuery(term, fromHistoryMenuItems(history));\n    };\n    var addToHistory = function (url, fileType) {\n      var items = history[fileType];\n      if (!/^https?/.test(url)) {\n        return;\n      }\n      if (items) {\n        if (indexOf(items, url).isNone()) {\n          history[fileType] = items.slice(0, HISTORY_LENGTH).concat(url);\n        }\n      } else {\n        history[fileType] = [url];\n      }\n    };\n    var filterByQuery = function (term, menuItems) {\n      var lowerCaseTerm = term.toLowerCase();\n      var result = global$2.grep(menuItems, function (item) {\n        return item.title.toLowerCase().indexOf(lowerCaseTerm) !== -1;\n      });\n      return result.length === 1 && result[0].title === term ? [] : result;\n    };\n    var getTitle = function (linkDetails) {\n      var title = linkDetails.title;\n      return title.raw ? title.raw : title;\n    };\n    var setupAutoCompleteHandler = function (ctrl, editorSettings, bodyElm, fileType) {\n      var autocomplete = function (term) {\n        var linkTargets = LinkTargets.find(bodyElm);\n        var menuItems = createMenuItems(term, linkTargets, fileType, editorSettings);\n        ctrl.showAutoComplete(menuItems, term);\n      };\n      ctrl.on('autocomplete', function () {\n        autocomplete(ctrl.value());\n      });\n      ctrl.on('selectitem', function (e) {\n        var linkDetails = e.value;\n        ctrl.value(linkDetails.url);\n        var title = getTitle(linkDetails);\n        if (fileType === 'image') {\n          ctrl.fire('change', {\n            meta: {\n              alt: title,\n              attach: linkDetails.attach\n            }\n          });\n        } else {\n          ctrl.fire('change', {\n            meta: {\n              text: title,\n              attach: linkDetails.attach\n            }\n          });\n        }\n        ctrl.focus();\n      });\n      ctrl.on('click', function (e) {\n        if (ctrl.value().length === 0 && e.target.nodeName === 'INPUT') {\n          autocomplete('');\n        }\n      });\n      ctrl.on('PostRender', function () {\n        ctrl.getRoot().on('submit', function (e) {\n          if (!e.isDefaultPrevented()) {\n            addToHistory(ctrl.value(), fileType);\n          }\n        });\n      });\n    };\n    var statusToUiState = function (result) {\n      var status = result.status, message = result.message;\n      if (status === 'valid') {\n        return {\n          status: 'ok',\n          message: message\n        };\n      } else if (status === 'unknown') {\n        return {\n          status: 'warn',\n          message: message\n        };\n      } else if (status === 'invalid') {\n        return {\n          status: 'warn',\n          message: message\n        };\n      } else {\n        return {\n          status: 'none',\n          message: ''\n        };\n      }\n    };\n    var setupLinkValidatorHandler = function (ctrl, editorSettings, fileType) {\n      var validatorHandler = editorSettings.filepicker_validator_handler;\n      if (validatorHandler) {\n        var validateUrl_1 = function (url) {\n          if (url.length === 0) {\n            ctrl.statusLevel('none');\n            return;\n          }\n          validatorHandler({\n            url: url,\n            type: fileType\n          }, function (result) {\n            var uiState = statusToUiState(result);\n            ctrl.statusMessage(uiState.message);\n            ctrl.statusLevel(uiState.status);\n          });\n        };\n        ctrl.state.on('change:value', function (e) {\n          validateUrl_1(e.value);\n        });\n      }\n    };\n    var FilePicker = ComboBox.extend({\n      Statics: { clearHistory: clearHistory },\n      init: function (settings) {\n        var self = this, editor = getActiveEditor(), editorSettings = editor.settings;\n        var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;\n        var fileType = settings.filetype;\n        settings.spellcheck = false;\n        fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;\n        if (fileBrowserCallbackTypes) {\n          fileBrowserCallbackTypes = global$2.makeMap(fileBrowserCallbackTypes, /[, ]/);\n        }\n        if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType]) {\n          fileBrowserCallback = editorSettings.file_picker_callback;\n          if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {\n            actionCallback = function () {\n              var meta = self.fire('beforecall').meta;\n              meta = global$2.extend({ filetype: fileType }, meta);\n              fileBrowserCallback.call(editor, function (value, meta) {\n                self.value(value).fire('change', { meta: meta });\n              }, self.value(), meta);\n            };\n          } else {\n            fileBrowserCallback = editorSettings.file_browser_callback;\n            if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {\n              actionCallback = function () {\n                fileBrowserCallback(self.getEl('inp').id, self.value(), fileType, window);\n              };\n            }\n          }\n        }\n        if (actionCallback) {\n          settings.icon = 'browse';\n          settings.onaction = actionCallback;\n        }\n        self._super(settings);\n        self.classes.add('filepicker');\n        setupAutoCompleteHandler(self, editorSettings, editor.getBody(), fileType);\n        setupLinkValidatorHandler(self, editorSettings, fileType);\n      }\n    });\n\n    var FitLayout = AbsoluteLayout.extend({\n      recalc: function (container) {\n        var contLayoutRect = container.layoutRect(), paddingBox = container.paddingBox;\n        container.items().filter(':visible').each(function (ctrl) {\n          ctrl.layoutRect({\n            x: paddingBox.left,\n            y: paddingBox.top,\n            w: contLayoutRect.innerW - paddingBox.right - paddingBox.left,\n            h: contLayoutRect.innerH - paddingBox.top - paddingBox.bottom\n          });\n          if (ctrl.recalc) {\n            ctrl.recalc();\n          }\n        });\n      }\n    });\n\n    var FlexLayout = AbsoluteLayout.extend({\n      recalc: function (container) {\n        var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;\n        var ctrl, ctrlLayoutRect, ctrlSettings, flex;\n        var maxSizeItems = [];\n        var size, maxSize, ratio, rect, pos, maxAlignEndPos;\n        var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;\n        var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;\n        var alignDeltaSizeName, alignContentSizeName;\n        var max = Math.max, min = Math.min;\n        items = container.items().filter(':visible');\n        contLayoutRect = container.layoutRect();\n        contPaddingBox = container.paddingBox;\n        contSettings = container.settings;\n        direction = container.isRtl() ? contSettings.direction || 'row-reversed' : contSettings.direction;\n        align = contSettings.align;\n        pack = container.isRtl() ? contSettings.pack || 'end' : contSettings.pack;\n        spacing = contSettings.spacing || 0;\n        if (direction === 'row-reversed' || direction === 'column-reverse') {\n          items = items.set(items.toArray().reverse());\n          direction = direction.split('-')[0];\n        }\n        if (direction === 'column') {\n          posName = 'y';\n          sizeName = 'h';\n          minSizeName = 'minH';\n          maxSizeName = 'maxH';\n          innerSizeName = 'innerH';\n          beforeName = 'top';\n          deltaSizeName = 'deltaH';\n          contentSizeName = 'contentH';\n          alignBeforeName = 'left';\n          alignSizeName = 'w';\n          alignAxisName = 'x';\n          alignInnerSizeName = 'innerW';\n          alignMinSizeName = 'minW';\n          alignAfterName = 'right';\n          alignDeltaSizeName = 'deltaW';\n          alignContentSizeName = 'contentW';\n        } else {\n          posName = 'x';\n          sizeName = 'w';\n          minSizeName = 'minW';\n          maxSizeName = 'maxW';\n          innerSizeName = 'innerW';\n          beforeName = 'left';\n          deltaSizeName = 'deltaW';\n          contentSizeName = 'contentW';\n          alignBeforeName = 'top';\n          alignSizeName = 'h';\n          alignAxisName = 'y';\n          alignInnerSizeName = 'innerH';\n          alignMinSizeName = 'minH';\n          alignAfterName = 'bottom';\n          alignDeltaSizeName = 'deltaH';\n          alignContentSizeName = 'contentH';\n        }\n        availableSpace = contLayoutRect[innerSizeName] - contPaddingBox[beforeName] - contPaddingBox[beforeName];\n        maxAlignEndPos = totalFlex = 0;\n        for (i = 0, l = items.length; i < l; i++) {\n          ctrl = items[i];\n          ctrlLayoutRect = ctrl.layoutRect();\n          ctrlSettings = ctrl.settings;\n          flex = ctrlSettings.flex;\n          availableSpace -= i < l - 1 ? spacing : 0;\n          if (flex > 0) {\n            totalFlex += flex;\n            if (ctrlLayoutRect[maxSizeName]) {\n              maxSizeItems.push(ctrl);\n            }\n            ctrlLayoutRect.flex = flex;\n          }\n          availableSpace -= ctrlLayoutRect[minSizeName];\n          size = contPaddingBox[alignBeforeName] + ctrlLayoutRect[alignMinSizeName] + contPaddingBox[alignAfterName];\n          if (size > maxAlignEndPos) {\n            maxAlignEndPos = size;\n          }\n        }\n        rect = {};\n        if (availableSpace < 0) {\n          rect[minSizeName] = contLayoutRect[minSizeName] - availableSpace + contLayoutRect[deltaSizeName];\n        } else {\n          rect[minSizeName] = contLayoutRect[innerSizeName] - availableSpace + contLayoutRect[deltaSizeName];\n        }\n        rect[alignMinSizeName] = maxAlignEndPos + contLayoutRect[alignDeltaSizeName];\n        rect[contentSizeName] = contLayoutRect[innerSizeName] - availableSpace;\n        rect[alignContentSizeName] = maxAlignEndPos;\n        rect.minW = min(rect.minW, contLayoutRect.maxW);\n        rect.minH = min(rect.minH, contLayoutRect.maxH);\n        rect.minW = max(rect.minW, contLayoutRect.startMinWidth);\n        rect.minH = max(rect.minH, contLayoutRect.startMinHeight);\n        if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {\n          rect.w = rect.minW;\n          rect.h = rect.minH;\n          container.layoutRect(rect);\n          this.recalc(container);\n          if (container._lastRect === null) {\n            var parentCtrl = container.parent();\n            if (parentCtrl) {\n              parentCtrl._lastRect = null;\n              parentCtrl.recalc();\n            }\n          }\n          return;\n        }\n        ratio = availableSpace / totalFlex;\n        for (i = 0, l = maxSizeItems.length; i < l; i++) {\n          ctrl = maxSizeItems[i];\n          ctrlLayoutRect = ctrl.layoutRect();\n          maxSize = ctrlLayoutRect[maxSizeName];\n          size = ctrlLayoutRect[minSizeName] + ctrlLayoutRect.flex * ratio;\n          if (size > maxSize) {\n            availableSpace -= ctrlLayoutRect[maxSizeName] - ctrlLayoutRect[minSizeName];\n            totalFlex -= ctrlLayoutRect.flex;\n            ctrlLayoutRect.flex = 0;\n            ctrlLayoutRect.maxFlexSize = maxSize;\n          } else {\n            ctrlLayoutRect.maxFlexSize = 0;\n          }\n        }\n        ratio = availableSpace / totalFlex;\n        pos = contPaddingBox[beforeName];\n        rect = {};\n        if (totalFlex === 0) {\n          if (pack === 'end') {\n            pos = availableSpace + contPaddingBox[beforeName];\n          } else if (pack === 'center') {\n            pos = Math.round(contLayoutRect[innerSizeName] / 2 - (contLayoutRect[innerSizeName] - availableSpace) / 2) + contPaddingBox[beforeName];\n            if (pos < 0) {\n              pos = contPaddingBox[beforeName];\n            }\n          } else if (pack === 'justify') {\n            pos = contPaddingBox[beforeName];\n            spacing = Math.floor(availableSpace / (items.length - 1));\n          }\n        }\n        rect[alignAxisName] = contPaddingBox[alignBeforeName];\n        for (i = 0, l = items.length; i < l; i++) {\n          ctrl = items[i];\n          ctrlLayoutRect = ctrl.layoutRect();\n          size = ctrlLayoutRect.maxFlexSize || ctrlLayoutRect[minSizeName];\n          if (align === 'center') {\n            rect[alignAxisName] = Math.round(contLayoutRect[alignInnerSizeName] / 2 - ctrlLayoutRect[alignSizeName] / 2);\n          } else if (align === 'stretch') {\n            rect[alignSizeName] = max(ctrlLayoutRect[alignMinSizeName] || 0, contLayoutRect[alignInnerSizeName] - contPaddingBox[alignBeforeName] - contPaddingBox[alignAfterName]);\n            rect[alignAxisName] = contPaddingBox[alignBeforeName];\n          } else if (align === 'end') {\n            rect[alignAxisName] = contLayoutRect[alignInnerSizeName] - ctrlLayoutRect[alignSizeName] - contPaddingBox.top;\n          }\n          if (ctrlLayoutRect.flex > 0) {\n            size += ctrlLayoutRect.flex * ratio;\n          }\n          rect[sizeName] = size;\n          rect[posName] = pos;\n          ctrl.layoutRect(rect);\n          if (ctrl.recalc) {\n            ctrl.recalc();\n          }\n          pos += size + spacing;\n        }\n      }\n    });\n\n    var FlowLayout = Layout.extend({\n      Defaults: {\n        containerClass: 'flow-layout',\n        controlClass: 'flow-layout-item',\n        endClass: 'break'\n      },\n      recalc: function (container) {\n        container.items().filter(':visible').each(function (ctrl) {\n          if (ctrl.recalc) {\n            ctrl.recalc();\n          }\n        });\n      },\n      isNative: function () {\n        return true;\n      }\n    });\n\n    var descendant$1 = function (scope, selector) {\n      return one(selector, scope);\n    };\n\n    var toggleFormat = function (editor, fmt) {\n      return function () {\n        editor.execCommand('mceToggleFormat', false, fmt);\n      };\n    };\n    var addFormatChangedListener = function (editor, name, changed) {\n      var handler = function (state) {\n        changed(state, name);\n      };\n      if (editor.formatter) {\n        editor.formatter.formatChanged(name, handler);\n      } else {\n        editor.on('init', function () {\n          editor.formatter.formatChanged(name, handler);\n        });\n      }\n    };\n    var postRenderFormatToggle = function (editor, name) {\n      return function (e) {\n        addFormatChangedListener(editor, name, function (state) {\n          e.control.active(state);\n        });\n      };\n    };\n\n    var register = function (editor) {\n      var alignFormats = [\n        'alignleft',\n        'aligncenter',\n        'alignright',\n        'alignjustify'\n      ];\n      var defaultAlign = 'alignleft';\n      var alignMenuItems = [\n        {\n          text: 'Left',\n          icon: 'alignleft',\n          onclick: toggleFormat(editor, 'alignleft')\n        },\n        {\n          text: 'Center',\n          icon: 'aligncenter',\n          onclick: toggleFormat(editor, 'aligncenter')\n        },\n        {\n          text: 'Right',\n          icon: 'alignright',\n          onclick: toggleFormat(editor, 'alignright')\n        },\n        {\n          text: 'Justify',\n          icon: 'alignjustify',\n          onclick: toggleFormat(editor, 'alignjustify')\n        }\n      ];\n      editor.addMenuItem('align', {\n        text: 'Align',\n        menu: alignMenuItems\n      });\n      editor.addButton('align', {\n        type: 'menubutton',\n        icon: defaultAlign,\n        menu: alignMenuItems,\n        onShowMenu: function (e) {\n          var menu = e.control.menu;\n          global$2.each(alignFormats, function (formatName, idx) {\n            menu.items().eq(idx).each(function (item) {\n              return item.active(editor.formatter.match(formatName));\n            });\n          });\n        },\n        onPostRender: function (e) {\n          var ctrl = e.control;\n          global$2.each(alignFormats, function (formatName, idx) {\n            addFormatChangedListener(editor, formatName, function (state) {\n              ctrl.icon(defaultAlign);\n              if (state) {\n                ctrl.icon(formatName);\n              }\n            });\n          });\n        }\n      });\n      global$2.each({\n        alignleft: [\n          'Align left',\n          'JustifyLeft'\n        ],\n        aligncenter: [\n          'Align center',\n          'JustifyCenter'\n        ],\n        alignright: [\n          'Align right',\n          'JustifyRight'\n        ],\n        alignjustify: [\n          'Justify',\n          'JustifyFull'\n        ],\n        alignnone: [\n          'No alignment',\n          'JustifyNone'\n        ]\n      }, function (item, name) {\n        editor.addButton(name, {\n          active: false,\n          tooltip: item[0],\n          cmd: item[1],\n          onPostRender: postRenderFormatToggle(editor, name)\n        });\n      });\n    };\n    var Align = { register: register };\n\n    var getFirstFont = function (fontFamily) {\n      return fontFamily ? fontFamily.split(',')[0] : '';\n    };\n    var findMatchingValue = function (items, fontFamily) {\n      var font = fontFamily ? fontFamily.toLowerCase() : '';\n      var value;\n      global$2.each(items, function (item) {\n        if (item.value.toLowerCase() === font) {\n          value = item.value;\n        }\n      });\n      global$2.each(items, function (item) {\n        if (!value && getFirstFont(item.value).toLowerCase() === getFirstFont(font).toLowerCase()) {\n          value = item.value;\n        }\n      });\n      return value;\n    };\n    var createFontNameListBoxChangeHandler = function (editor, items) {\n      return function () {\n        var self = this;\n        self.state.set('value', null);\n        editor.on('init nodeChange', function (e) {\n          var fontFamily = editor.queryCommandValue('FontName');\n          var match = findMatchingValue(items, fontFamily);\n          self.value(match ? match : null);\n          if (!match && fontFamily) {\n            self.text(getFirstFont(fontFamily));\n          }\n        });\n      };\n    };\n    var createFormats = function (formats) {\n      formats = formats.replace(/;$/, '').split(';');\n      var i = formats.length;\n      while (i--) {\n        formats[i] = formats[i].split('=');\n      }\n      return formats;\n    };\n    var getFontItems = function (editor) {\n      var defaultFontsFormats = 'Andale Mono=andale mono,monospace;' + 'Arial=arial,helvetica,sans-serif;' + 'Arial Black=arial black,sans-serif;' + 'Book Antiqua=book antiqua,palatino,serif;' + 'Comic Sans MS=comic sans ms,sans-serif;' + 'Courier New=courier new,courier,monospace;' + 'Georgia=georgia,palatino,serif;' + 'Helvetica=helvetica,arial,sans-serif;' + 'Impact=impact,sans-serif;' + 'Symbol=symbol;' + 'Tahoma=tahoma,arial,helvetica,sans-serif;' + 'Terminal=terminal,monaco,monospace;' + 'Times New Roman=times new roman,times,serif;' + 'Trebuchet MS=trebuchet ms,geneva,sans-serif;' + 'Verdana=verdana,geneva,sans-serif;' + 'Webdings=webdings;' + 'Wingdings=wingdings,zapf dingbats';\n      var fonts = createFormats(editor.settings.font_formats || defaultFontsFormats);\n      return global$2.map(fonts, function (font) {\n        return {\n          text: { raw: font[0] },\n          value: font[1],\n          textStyle: font[1].indexOf('dings') === -1 ? 'font-family:' + font[1] : ''\n        };\n      });\n    };\n    var registerButtons = function (editor) {\n      editor.addButton('fontselect', function () {\n        var items = getFontItems(editor);\n        return {\n          type: 'listbox',\n          text: 'Font Family',\n          tooltip: 'Font Family',\n          values: items,\n          fixedWidth: true,\n          onPostRender: createFontNameListBoxChangeHandler(editor, items),\n          onselect: function (e) {\n            if (e.control.settings.value) {\n              editor.execCommand('FontName', false, e.control.settings.value);\n            }\n          }\n        };\n      });\n    };\n    var register$1 = function (editor) {\n      registerButtons(editor);\n    };\n    var FontSelect = { register: register$1 };\n\n    var round = function (number, precision) {\n      var factor = Math.pow(10, precision);\n      return Math.round(number * factor) / factor;\n    };\n    var toPt = function (fontSize, precision) {\n      if (/[0-9.]+px$/.test(fontSize)) {\n        return round(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';\n      }\n      return fontSize;\n    };\n    var findMatchingValue$1 = function (items, pt, px) {\n      var value;\n      global$2.each(items, function (item) {\n        if (item.value === px) {\n          value = px;\n        } else if (item.value === pt) {\n          value = pt;\n        }\n      });\n      return value;\n    };\n    var createFontSizeListBoxChangeHandler = function (editor, items) {\n      return function () {\n        var self = this;\n        editor.on('init nodeChange', function (e) {\n          var px, pt, precision, match;\n          px = editor.queryCommandValue('FontSize');\n          if (px) {\n            for (precision = 3; !match && precision >= 0; precision--) {\n              pt = toPt(px, precision);\n              match = findMatchingValue$1(items, pt, px);\n            }\n          }\n          self.value(match ? match : null);\n          if (!match) {\n            self.text(pt);\n          }\n        });\n      };\n    };\n    var getFontSizeItems = function (editor) {\n      var defaultFontsizeFormats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';\n      var fontsizeFormats = editor.settings.fontsize_formats || defaultFontsizeFormats;\n      return global$2.map(fontsizeFormats.split(' '), function (item) {\n        var text = item, value = item;\n        var values = item.split('=');\n        if (values.length > 1) {\n          text = values[0];\n          value = values[1];\n        }\n        return {\n          text: text,\n          value: value\n        };\n      });\n    };\n    var registerButtons$1 = function (editor) {\n      editor.addButton('fontsizeselect', function () {\n        var items = getFontSizeItems(editor);\n        return {\n          type: 'listbox',\n          text: 'Font Sizes',\n          tooltip: 'Font Sizes',\n          values: items,\n          fixedWidth: true,\n          onPostRender: createFontSizeListBoxChangeHandler(editor, items),\n          onclick: function (e) {\n            if (e.control.settings.value) {\n              editor.execCommand('FontSize', false, e.control.settings.value);\n            }\n          }\n        };\n      });\n    };\n    var register$2 = function (editor) {\n      registerButtons$1(editor);\n    };\n    var FontSizeSelect = { register: register$2 };\n\n    var hideMenuObjects = function (editor, menu) {\n      var count = menu.length;\n      global$2.each(menu, function (item) {\n        if (item.menu) {\n          item.hidden = hideMenuObjects(editor, item.menu) === 0;\n        }\n        var formatName = item.format;\n        if (formatName) {\n          item.hidden = !editor.formatter.canApply(formatName);\n        }\n        if (item.hidden) {\n          count--;\n        }\n      });\n      return count;\n    };\n    var hideFormatMenuItems = function (editor, menu) {\n      var count = menu.items().length;\n      menu.items().each(function (item) {\n        if (item.menu) {\n          item.visible(hideFormatMenuItems(editor, item.menu) > 0);\n        }\n        if (!item.menu && item.settings.menu) {\n          item.visible(hideMenuObjects(editor, item.settings.menu) > 0);\n        }\n        var formatName = item.settings.format;\n        if (formatName) {\n          item.visible(editor.formatter.canApply(formatName));\n        }\n        if (!item.visible()) {\n          count--;\n        }\n      });\n      return count;\n    };\n    var createFormatMenu = function (editor) {\n      var count = 0;\n      var newFormats = [];\n      var defaultStyleFormats = [\n        {\n          title: 'Headings',\n          items: [\n            {\n              title: 'Heading 1',\n              format: 'h1'\n            },\n            {\n              title: 'Heading 2',\n              format: 'h2'\n            },\n            {\n              title: 'Heading 3',\n              format: 'h3'\n            },\n            {\n              title: 'Heading 4',\n              format: 'h4'\n            },\n            {\n              title: 'Heading 5',\n              format: 'h5'\n            },\n            {\n              title: 'Heading 6',\n              format: 'h6'\n            }\n          ]\n        },\n        {\n          title: 'Inline',\n          items: [\n            {\n              title: 'Bold',\n              icon: 'bold',\n              format: 'bold'\n            },\n            {\n              title: 'Italic',\n              icon: 'italic',\n              format: 'italic'\n            },\n            {\n              title: 'Underline',\n              icon: 'underline',\n              format: 'underline'\n            },\n            {\n              title: 'Strikethrough',\n              icon: 'strikethrough',\n              format: 'strikethrough'\n            },\n            {\n              title: 'Superscript',\n              icon: 'superscript',\n              format: 'superscript'\n            },\n            {\n              title: 'Subscript',\n              icon: 'subscript',\n              format: 'subscript'\n            },\n            {\n              title: 'Code',\n              icon: 'code',\n              format: 'code'\n            }\n          ]\n        },\n        {\n          title: 'Blocks',\n          items: [\n            {\n              title: 'Paragraph',\n              format: 'p'\n            },\n            {\n              title: 'Blockquote',\n              format: 'blockquote'\n            },\n            {\n              title: 'Div',\n              format: 'div'\n            },\n            {\n              title: 'Pre',\n              format: 'pre'\n            }\n          ]\n        },\n        {\n          title: 'Alignment',\n          items: [\n            {\n              title: 'Left',\n              icon: 'alignleft',\n              format: 'alignleft'\n            },\n            {\n              title: 'Center',\n              icon: 'aligncenter',\n              format: 'aligncenter'\n            },\n            {\n              title: 'Right',\n              icon: 'alignright',\n              format: 'alignright'\n            },\n            {\n              title: 'Justify',\n              icon: 'alignjustify',\n              format: 'alignjustify'\n            }\n          ]\n        }\n      ];\n      var createMenu = function (formats) {\n        var menu = [];\n        if (!formats) {\n          return;\n        }\n        global$2.each(formats, function (format) {\n          var menuItem = {\n            text: format.title,\n            icon: format.icon\n          };\n          if (format.items) {\n            menuItem.menu = createMenu(format.items);\n          } else {\n            var formatName = format.format || 'custom' + count++;\n            if (!format.format) {\n              format.name = formatName;\n              newFormats.push(format);\n            }\n            menuItem.format = formatName;\n            menuItem.cmd = format.cmd;\n          }\n          menu.push(menuItem);\n        });\n        return menu;\n      };\n      var createStylesMenu = function () {\n        var menu;\n        if (editor.settings.style_formats_merge) {\n          if (editor.settings.style_formats) {\n            menu = createMenu(defaultStyleFormats.concat(editor.settings.style_formats));\n          } else {\n            menu = createMenu(defaultStyleFormats);\n          }\n        } else {\n          menu = createMenu(editor.settings.style_formats || defaultStyleFormats);\n        }\n        return menu;\n      };\n      editor.on('init', function () {\n        global$2.each(newFormats, function (format) {\n          editor.formatter.register(format.name, format);\n        });\n      });\n      return {\n        type: 'menu',\n        items: createStylesMenu(),\n        onPostRender: function (e) {\n          editor.fire('renderFormatsMenu', { control: e.control });\n        },\n        itemDefaults: {\n          preview: true,\n          textStyle: function () {\n            if (this.settings.format) {\n              return editor.formatter.getCssText(this.settings.format);\n            }\n          },\n          onPostRender: function () {\n            var self = this;\n            self.parent().on('show', function () {\n              var formatName, command;\n              formatName = self.settings.format;\n              if (formatName) {\n                self.disabled(!editor.formatter.canApply(formatName));\n                self.active(editor.formatter.match(formatName));\n              }\n              command = self.settings.cmd;\n              if (command) {\n                self.active(editor.queryCommandState(command));\n              }\n            });\n          },\n          onclick: function () {\n            if (this.settings.format) {\n              toggleFormat(editor, this.settings.format)();\n            }\n            if (this.settings.cmd) {\n              editor.execCommand(this.settings.cmd);\n            }\n          }\n        }\n      };\n    };\n    var registerMenuItems = function (editor, formatMenu) {\n      editor.addMenuItem('formats', {\n        text: 'Formats',\n        menu: formatMenu\n      });\n    };\n    var registerButtons$2 = function (editor, formatMenu) {\n      editor.addButton('styleselect', {\n        type: 'menubutton',\n        text: 'Formats',\n        menu: formatMenu,\n        onShowMenu: function () {\n          if (editor.settings.style_formats_autohide) {\n            hideFormatMenuItems(editor, this.menu);\n          }\n        }\n      });\n    };\n    var register$3 = function (editor) {\n      var formatMenu = createFormatMenu(editor);\n      registerMenuItems(editor, formatMenu);\n      registerButtons$2(editor, formatMenu);\n    };\n    var Formats = { register: register$3 };\n\n    var defaultBlocks = 'Paragraph=p;' + 'Heading 1=h1;' + 'Heading 2=h2;' + 'Heading 3=h3;' + 'Heading 4=h4;' + 'Heading 5=h5;' + 'Heading 6=h6;' + 'Preformatted=pre';\n    var createFormats$1 = function (formats) {\n      formats = formats.replace(/;$/, '').split(';');\n      var i = formats.length;\n      while (i--) {\n        formats[i] = formats[i].split('=');\n      }\n      return formats;\n    };\n    var createListBoxChangeHandler = function (editor, items, formatName) {\n      return function () {\n        var self = this;\n        editor.on('nodeChange', function (e) {\n          var formatter = editor.formatter;\n          var value = null;\n          global$2.each(e.parents, function (node) {\n            global$2.each(items, function (item) {\n              if (formatName) {\n                if (formatter.matchNode(node, formatName, { value: item.value })) {\n                  value = item.value;\n                }\n              } else {\n                if (formatter.matchNode(node, item.value)) {\n                  value = item.value;\n                }\n              }\n              if (value) {\n                return false;\n              }\n            });\n            if (value) {\n              return false;\n            }\n          });\n          self.value(value);\n        });\n      };\n    };\n    var lazyFormatSelectBoxItems = function (editor, blocks) {\n      return function () {\n        var items = [];\n        global$2.each(blocks, function (block) {\n          items.push({\n            text: block[0],\n            value: block[1],\n            textStyle: function () {\n              return editor.formatter.getCssText(block[1]);\n            }\n          });\n        });\n        return {\n          type: 'listbox',\n          text: blocks[0][0],\n          values: items,\n          fixedWidth: true,\n          onselect: function (e) {\n            if (e.control) {\n              var fmt = e.control.value();\n              toggleFormat(editor, fmt)();\n            }\n          },\n          onPostRender: createListBoxChangeHandler(editor, items)\n        };\n      };\n    };\n    var buildMenuItems = function (editor, blocks) {\n      return global$2.map(blocks, function (block) {\n        return {\n          text: block[0],\n          onclick: toggleFormat(editor, block[1]),\n          textStyle: function () {\n            return editor.formatter.getCssText(block[1]);\n          }\n        };\n      });\n    };\n    var register$4 = function (editor) {\n      var blocks = createFormats$1(editor.settings.block_formats || defaultBlocks);\n      editor.addMenuItem('blockformats', {\n        text: 'Blocks',\n        menu: buildMenuItems(editor, blocks)\n      });\n      editor.addButton('formatselect', lazyFormatSelectBoxItems(editor, blocks));\n    };\n    var FormatSelect = { register: register$4 };\n\n    var createCustomMenuItems = function (editor, names) {\n      var items, nameList;\n      if (typeof names === 'string') {\n        nameList = names.split(' ');\n      } else if (global$2.isArray(names)) {\n        return flatten(global$2.map(names, function (names) {\n          return createCustomMenuItems(editor, names);\n        }));\n      }\n      items = global$2.grep(nameList, function (name) {\n        return name === '|' || name in editor.menuItems;\n      });\n      return global$2.map(items, function (name) {\n        return name === '|' ? { text: '-' } : editor.menuItems[name];\n      });\n    };\n    var isSeparator$1 = function (menuItem) {\n      return menuItem && menuItem.text === '-';\n    };\n    var trimMenuItems = function (menuItems) {\n      var menuItems2 = filter(menuItems, function (menuItem, i, menuItems) {\n        return !isSeparator$1(menuItem) || !isSeparator$1(menuItems[i - 1]);\n      });\n      return filter(menuItems2, function (menuItem, i, menuItems) {\n        return !isSeparator$1(menuItem) || i > 0 && i < menuItems.length - 1;\n      });\n    };\n    var createContextMenuItems = function (editor, context) {\n      var outputMenuItems = [{ text: '-' }];\n      var menuItems = global$2.grep(editor.menuItems, function (menuItem) {\n        return menuItem.context === context;\n      });\n      global$2.each(menuItems, function (menuItem) {\n        if (menuItem.separator === 'before') {\n          outputMenuItems.push({ text: '|' });\n        }\n        if (menuItem.prependToContext) {\n          outputMenuItems.unshift(menuItem);\n        } else {\n          outputMenuItems.push(menuItem);\n        }\n        if (menuItem.separator === 'after') {\n          outputMenuItems.push({ text: '|' });\n        }\n      });\n      return outputMenuItems;\n    };\n    var createInsertMenu = function (editor) {\n      var insertButtonItems = editor.settings.insert_button_items;\n      if (insertButtonItems) {\n        return trimMenuItems(createCustomMenuItems(editor, insertButtonItems));\n      } else {\n        return trimMenuItems(createContextMenuItems(editor, 'insert'));\n      }\n    };\n    var registerButtons$3 = function (editor) {\n      editor.addButton('insert', {\n        type: 'menubutton',\n        icon: 'insert',\n        menu: [],\n        oncreatemenu: function () {\n          this.menu.add(createInsertMenu(editor));\n          this.menu.renderNew();\n        }\n      });\n    };\n    var register$5 = function (editor) {\n      registerButtons$3(editor);\n    };\n    var InsertButton = { register: register$5 };\n\n    var registerFormatButtons = function (editor) {\n      global$2.each({\n        bold: 'Bold',\n        italic: 'Italic',\n        underline: 'Underline',\n        strikethrough: 'Strikethrough',\n        subscript: 'Subscript',\n        superscript: 'Superscript'\n      }, function (text, name) {\n        editor.addButton(name, {\n          active: false,\n          tooltip: text,\n          onPostRender: postRenderFormatToggle(editor, name),\n          onclick: toggleFormat(editor, name)\n        });\n      });\n    };\n    var registerCommandButtons = function (editor) {\n      global$2.each({\n        outdent: [\n          'Decrease indent',\n          'Outdent'\n        ],\n        indent: [\n          'Increase indent',\n          'Indent'\n        ],\n        cut: [\n          'Cut',\n          'Cut'\n        ],\n        copy: [\n          'Copy',\n          'Copy'\n        ],\n        paste: [\n          'Paste',\n          'Paste'\n        ],\n        help: [\n          'Help',\n          'mceHelp'\n        ],\n        selectall: [\n          'Select all',\n          'SelectAll'\n        ],\n        visualaid: [\n          'Visual aids',\n          'mceToggleVisualAid'\n        ],\n        newdocument: [\n          'New document',\n          'mceNewDocument'\n        ],\n        removeformat: [\n          'Clear formatting',\n          'RemoveFormat'\n        ],\n        remove: [\n          'Remove',\n          'Delete'\n        ]\n      }, function (item, name) {\n        editor.addButton(name, {\n          tooltip: item[0],\n          cmd: item[1]\n        });\n      });\n    };\n    var registerCommandToggleButtons = function (editor) {\n      global$2.each({\n        blockquote: [\n          'Blockquote',\n          'mceBlockQuote'\n        ],\n        subscript: [\n          'Subscript',\n          'Subscript'\n        ],\n        superscript: [\n          'Superscript',\n          'Superscript'\n        ]\n      }, function (item, name) {\n        editor.addButton(name, {\n          active: false,\n          tooltip: item[0],\n          cmd: item[1],\n          onPostRender: postRenderFormatToggle(editor, name)\n        });\n      });\n    };\n    var registerButtons$4 = function (editor) {\n      registerFormatButtons(editor);\n      registerCommandButtons(editor);\n      registerCommandToggleButtons(editor);\n    };\n    var registerMenuItems$1 = function (editor) {\n      global$2.each({\n        bold: [\n          'Bold',\n          'Bold',\n          'Meta+B'\n        ],\n        italic: [\n          'Italic',\n          'Italic',\n          'Meta+I'\n        ],\n        underline: [\n          'Underline',\n          'Underline',\n          'Meta+U'\n        ],\n        strikethrough: [\n          'Strikethrough',\n          'Strikethrough'\n        ],\n        subscript: [\n          'Subscript',\n          'Subscript'\n        ],\n        superscript: [\n          'Superscript',\n          'Superscript'\n        ],\n        removeformat: [\n          'Clear formatting',\n          'RemoveFormat'\n        ],\n        newdocument: [\n          'New document',\n          'mceNewDocument'\n        ],\n        cut: [\n          'Cut',\n          'Cut',\n          'Meta+X'\n        ],\n        copy: [\n          'Copy',\n          'Copy',\n          'Meta+C'\n        ],\n        paste: [\n          'Paste',\n          'Paste',\n          'Meta+V'\n        ],\n        selectall: [\n          'Select all',\n          'SelectAll',\n          'Meta+A'\n        ]\n      }, function (item, name) {\n        editor.addMenuItem(name, {\n          text: item[0],\n          icon: name,\n          shortcut: item[2],\n          cmd: item[1]\n        });\n      });\n      editor.addMenuItem('codeformat', {\n        text: 'Code',\n        icon: 'code',\n        onclick: toggleFormat(editor, 'code')\n      });\n    };\n    var register$6 = function (editor) {\n      registerButtons$4(editor);\n      registerMenuItems$1(editor);\n    };\n    var SimpleControls = { register: register$6 };\n\n    var toggleUndoRedoState = function (editor, type) {\n      return function () {\n        var self = this;\n        var checkState = function () {\n          var typeFn = type === 'redo' ? 'hasRedo' : 'hasUndo';\n          return editor.undoManager ? editor.undoManager[typeFn]() : false;\n        };\n        self.disabled(!checkState());\n        editor.on('Undo Redo AddUndo TypingUndo ClearUndos SwitchMode', function () {\n          self.disabled(editor.readonly || !checkState());\n        });\n      };\n    };\n    var registerMenuItems$2 = function (editor) {\n      editor.addMenuItem('undo', {\n        text: 'Undo',\n        icon: 'undo',\n        shortcut: 'Meta+Z',\n        onPostRender: toggleUndoRedoState(editor, 'undo'),\n        cmd: 'undo'\n      });\n      editor.addMenuItem('redo', {\n        text: 'Redo',\n        icon: 'redo',\n        shortcut: 'Meta+Y',\n        onPostRender: toggleUndoRedoState(editor, 'redo'),\n        cmd: 'redo'\n      });\n    };\n    var registerButtons$5 = function (editor) {\n      editor.addButton('undo', {\n        tooltip: 'Undo',\n        onPostRender: toggleUndoRedoState(editor, 'undo'),\n        cmd: 'undo'\n      });\n      editor.addButton('redo', {\n        tooltip: 'Redo',\n        onPostRender: toggleUndoRedoState(editor, 'redo'),\n        cmd: 'redo'\n      });\n    };\n    var register$7 = function (editor) {\n      registerMenuItems$2(editor);\n      registerButtons$5(editor);\n    };\n    var UndoRedo = { register: register$7 };\n\n    var toggleVisualAidState = function (editor) {\n      return function () {\n        var self = this;\n        editor.on('VisualAid', function (e) {\n          self.active(e.hasVisual);\n        });\n        self.active(editor.hasVisual);\n      };\n    };\n    var registerMenuItems$3 = function (editor) {\n      editor.addMenuItem('visualaid', {\n        text: 'Visual aids',\n        selectable: true,\n        onPostRender: toggleVisualAidState(editor),\n        cmd: 'mceToggleVisualAid'\n      });\n    };\n    var register$8 = function (editor) {\n      registerMenuItems$3(editor);\n    };\n    var VisualAid = { register: register$8 };\n\n    var setupEnvironment = function () {\n      Widget.tooltips = !global$8.iOS;\n      Control$1.translate = function (text) {\n        return global$1.translate(text);\n      };\n    };\n    var setupUiContainer = function (editor) {\n      if (editor.settings.ui_container) {\n        global$8.container = descendant$1(Element$$1.fromDom(document.body), editor.settings.ui_container).fold(constant(null), function (elm) {\n          return elm.dom();\n        });\n      }\n    };\n    var setupRtlMode = function (editor) {\n      if (editor.rtl) {\n        Control$1.rtl = true;\n      }\n    };\n    var setupHideFloatPanels = function (editor) {\n      editor.on('mousedown progressstate', function () {\n        FloatPanel.hideAll();\n      });\n    };\n    var setup$1 = function (editor) {\n      setupRtlMode(editor);\n      setupHideFloatPanels(editor);\n      setupUiContainer(editor);\n      setupEnvironment();\n      FormatSelect.register(editor);\n      Align.register(editor);\n      SimpleControls.register(editor);\n      UndoRedo.register(editor);\n      FontSizeSelect.register(editor);\n      FontSelect.register(editor);\n      Formats.register(editor);\n      VisualAid.register(editor);\n      InsertButton.register(editor);\n    };\n    var FormatControls = { setup: setup$1 };\n\n    var GridLayout = AbsoluteLayout.extend({\n      recalc: function (container) {\n        var settings, rows, cols, items, contLayoutRect, width, height, rect, ctrlLayoutRect, ctrl, x, y, posX, posY, ctrlSettings, contPaddingBox, align, spacingH, spacingV, alignH, alignV, maxX, maxY;\n        var colWidths = [];\n        var rowHeights = [];\n        var ctrlMinWidth, ctrlMinHeight, availableWidth, availableHeight, reverseRows, idx;\n        settings = container.settings;\n        items = container.items().filter(':visible');\n        contLayoutRect = container.layoutRect();\n        cols = settings.columns || Math.ceil(Math.sqrt(items.length));\n        rows = Math.ceil(items.length / cols);\n        spacingH = settings.spacingH || settings.spacing || 0;\n        spacingV = settings.spacingV || settings.spacing || 0;\n        alignH = settings.alignH || settings.align;\n        alignV = settings.alignV || settings.align;\n        contPaddingBox = container.paddingBox;\n        reverseRows = 'reverseRows' in settings ? settings.reverseRows : container.isRtl();\n        if (alignH && typeof alignH === 'string') {\n          alignH = [alignH];\n        }\n        if (alignV && typeof alignV === 'string') {\n          alignV = [alignV];\n        }\n        for (x = 0; x < cols; x++) {\n          colWidths.push(0);\n        }\n        for (y = 0; y < rows; y++) {\n          rowHeights.push(0);\n        }\n        for (y = 0; y < rows; y++) {\n          for (x = 0; x < cols; x++) {\n            ctrl = items[y * cols + x];\n            if (!ctrl) {\n              break;\n            }\n            ctrlLayoutRect = ctrl.layoutRect();\n            ctrlMinWidth = ctrlLayoutRect.minW;\n            ctrlMinHeight = ctrlLayoutRect.minH;\n            colWidths[x] = ctrlMinWidth > colWidths[x] ? ctrlMinWidth : colWidths[x];\n            rowHeights[y] = ctrlMinHeight > rowHeights[y] ? ctrlMinHeight : rowHeights[y];\n          }\n        }\n        availableWidth = contLayoutRect.innerW - contPaddingBox.left - contPaddingBox.right;\n        for (maxX = 0, x = 0; x < cols; x++) {\n          maxX += colWidths[x] + (x > 0 ? spacingH : 0);\n          availableWidth -= (x > 0 ? spacingH : 0) + colWidths[x];\n        }\n        availableHeight = contLayoutRect.innerH - contPaddingBox.top - contPaddingBox.bottom;\n        for (maxY = 0, y = 0; y < rows; y++) {\n          maxY += rowHeights[y] + (y > 0 ? spacingV : 0);\n          availableHeight -= (y > 0 ? spacingV : 0) + rowHeights[y];\n        }\n        maxX += contPaddingBox.left + contPaddingBox.right;\n        maxY += contPaddingBox.top + contPaddingBox.bottom;\n        rect = {};\n        rect.minW = maxX + (contLayoutRect.w - contLayoutRect.innerW);\n        rect.minH = maxY + (contLayoutRect.h - contLayoutRect.innerH);\n        rect.contentW = rect.minW - contLayoutRect.deltaW;\n        rect.contentH = rect.minH - contLayoutRect.deltaH;\n        rect.minW = Math.min(rect.minW, contLayoutRect.maxW);\n        rect.minH = Math.min(rect.minH, contLayoutRect.maxH);\n        rect.minW = Math.max(rect.minW, contLayoutRect.startMinWidth);\n        rect.minH = Math.max(rect.minH, contLayoutRect.startMinHeight);\n        if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {\n          rect.w = rect.minW;\n          rect.h = rect.minH;\n          container.layoutRect(rect);\n          this.recalc(container);\n          if (container._lastRect === null) {\n            var parentCtrl = container.parent();\n            if (parentCtrl) {\n              parentCtrl._lastRect = null;\n              parentCtrl.recalc();\n            }\n          }\n          return;\n        }\n        if (contLayoutRect.autoResize) {\n          rect = container.layoutRect(rect);\n          rect.contentW = rect.minW - contLayoutRect.deltaW;\n          rect.contentH = rect.minH - contLayoutRect.deltaH;\n        }\n        var flexV;\n        if (settings.packV === 'start') {\n          flexV = 0;\n        } else {\n          flexV = availableHeight > 0 ? Math.floor(availableHeight / rows) : 0;\n        }\n        var totalFlex = 0;\n        var flexWidths = settings.flexWidths;\n        if (flexWidths) {\n          for (x = 0; x < flexWidths.length; x++) {\n            totalFlex += flexWidths[x];\n          }\n        } else {\n          totalFlex = cols;\n        }\n        var ratio = availableWidth / totalFlex;\n        for (x = 0; x < cols; x++) {\n          colWidths[x] += flexWidths ? flexWidths[x] * ratio : ratio;\n        }\n        posY = contPaddingBox.top;\n        for (y = 0; y < rows; y++) {\n          posX = contPaddingBox.left;\n          height = rowHeights[y] + flexV;\n          for (x = 0; x < cols; x++) {\n            if (reverseRows) {\n              idx = y * cols + cols - 1 - x;\n            } else {\n              idx = y * cols + x;\n            }\n            ctrl = items[idx];\n            if (!ctrl) {\n              break;\n            }\n            ctrlSettings = ctrl.settings;\n            ctrlLayoutRect = ctrl.layoutRect();\n            width = Math.max(colWidths[x], ctrlLayoutRect.startMinWidth);\n            ctrlLayoutRect.x = posX;\n            ctrlLayoutRect.y = posY;\n            align = ctrlSettings.alignH || (alignH ? alignH[x] || alignH[0] : null);\n            if (align === 'center') {\n              ctrlLayoutRect.x = posX + width / 2 - ctrlLayoutRect.w / 2;\n            } else if (align === 'right') {\n              ctrlLayoutRect.x = posX + width - ctrlLayoutRect.w;\n            } else if (align === 'stretch') {\n              ctrlLayoutRect.w = width;\n            }\n            align = ctrlSettings.alignV || (alignV ? alignV[x] || alignV[0] : null);\n            if (align === 'center') {\n              ctrlLayoutRect.y = posY + height / 2 - ctrlLayoutRect.h / 2;\n            } else if (align === 'bottom') {\n              ctrlLayoutRect.y = posY + height - ctrlLayoutRect.h;\n            } else if (align === 'stretch') {\n              ctrlLayoutRect.h = height;\n            }\n            ctrl.layoutRect(ctrlLayoutRect);\n            posX += width + spacingH;\n            if (ctrl.recalc) {\n              ctrl.recalc();\n            }\n          }\n          posY += height + spacingV;\n        }\n      }\n    });\n\n    var Iframe$1 = Widget.extend({\n      renderHtml: function () {\n        var self = this;\n        self.classes.add('iframe');\n        self.canFocus = false;\n        return '<iframe id=\"' + self._id + '\" class=\"' + self.classes + '\" tabindex=\"-1\" src=\"' + (self.settings.url || 'javascript:\\'\\'') + '\" frameborder=\"0\"></iframe>';\n      },\n      src: function (src) {\n        this.getEl().src = src;\n      },\n      html: function (html, callback) {\n        var self = this, body = this.getEl().contentWindow.document.body;\n        if (!body) {\n          global$7.setTimeout(function () {\n            self.html(html);\n          });\n        } else {\n          body.innerHTML = html;\n          if (callback) {\n            callback();\n          }\n        }\n        return this;\n      }\n    });\n\n    var InfoBox = Widget.extend({\n      init: function (settings) {\n        var self = this;\n        self._super(settings);\n        self.classes.add('widget').add('infobox');\n        self.canFocus = false;\n      },\n      severity: function (level) {\n        this.classes.remove('error');\n        this.classes.remove('warning');\n        this.classes.remove('success');\n        this.classes.add(level);\n      },\n      help: function (state) {\n        this.state.set('help', state);\n      },\n      renderHtml: function () {\n        var self = this, prefix = self.classPrefix;\n        return '<div id=\"' + self._id + '\" class=\"' + self.classes + '\">' + '<div id=\"' + self._id + '-body\">' + self.encode(self.state.get('text')) + '<button role=\"button\" tabindex=\"-1\">' + '<i class=\"' + prefix + 'ico ' + prefix + 'i-help\"></i>' + '</button>' + '</div>' + '</div>';\n      },\n      bindStates: function () {\n        var self = this;\n        self.state.on('change:text', function (e) {\n          self.getEl('body').firstChild.data = self.encode(e.value);\n          if (self.state.get('rendered')) {\n            self.updateLayoutRect();\n          }\n        });\n        self.state.on('change:help', function (e) {\n          self.classes.toggle('has-help', e.value);\n          if (self.state.get('rendered')) {\n            self.updateLayoutRect();\n          }\n        });\n        return self._super();\n      }\n    });\n\n    var Label = Widget.extend({\n      init: function (settings) {\n        var self = this;\n        self._super(settings);\n        self.classes.add('widget').add('label');\n        self.canFocus = false;\n        if (settings.multiline) {\n          self.classes.add('autoscroll');\n        }\n        if (settings.strong) {\n          self.classes.add('strong');\n        }\n      },\n      initLayoutRect: function () {\n        var self = this, layoutRect = self._super();\n        if (self.settings.multiline) {\n          var size = funcs.getSize(self.getEl());\n          if (size.width > layoutRect.maxW) {\n            layoutRect.minW = layoutRect.maxW;\n            self.classes.add('multiline');\n          }\n          self.getEl().style.width = layoutRect.minW + 'px';\n          layoutRect.startMinH = layoutRect.h = layoutRect.minH = Math.min(layoutRect.maxH, funcs.getSize(self.getEl()).height);\n        }\n        return layoutRect;\n      },\n      repaint: function () {\n        var self = this;\n        if (!self.settings.multiline) {\n          self.getEl().style.lineHeight = self.layoutRect().h + 'px';\n        }\n        return self._super();\n      },\n      severity: function (level) {\n        this.classes.remove('error');\n        this.classes.remove('warning');\n        this.classes.remove('success');\n        this.classes.add(level);\n      },\n      renderHtml: function () {\n        var self = this;\n        var targetCtrl, forName, forId = self.settings.forId;\n        var text = self.settings.html ? self.settings.html : self.encode(self.state.get('text'));\n        if (!forId && (forName = self.settings.forName)) {\n          targetCtrl = self.getRoot().find('#' + forName)[0];\n          if (targetCtrl) {\n            forId = targetCtrl._id;\n          }\n        }\n        if (forId) {\n          return '<label id=\"' + self._id + '\" class=\"' + self.classes + '\"' + (forId ? ' for=\"' + forId + '\"' : '') + '>' + text + '</label>';\n        }\n        return '<span id=\"' + self._id + '\" class=\"' + self.classes + '\">' + text + '</span>';\n      },\n      bindStates: function () {\n        var self = this;\n        self.state.on('change:text', function (e) {\n          self.innerHtml(self.encode(e.value));\n          if (self.state.get('rendered')) {\n            self.updateLayoutRect();\n          }\n        });\n        return self._super();\n      }\n    });\n\n    var Toolbar$1 = Container.extend({\n      Defaults: {\n        role: 'toolbar',\n        layout: 'flow'\n      },\n      init: function (settings) {\n        var self = this;\n        self._super(settings);\n        self.classes.add('toolbar');\n      },\n      postRender: function () {\n        var self = this;\n        self.items().each(function (ctrl) {\n          ctrl.classes.add('toolbar-item');\n        });\n        return self._super();\n      }\n    });\n\n    var MenuBar = Toolbar$1.extend({\n      Defaults: {\n        role: 'menubar',\n        containerCls: 'menubar',\n        ariaRoot: true,\n        defaults: { type: 'menubutton' }\n      }\n    });\n\n    function isChildOf$1(node, parent$$1) {\n      while (node) {\n        if (parent$$1 === node) {\n          return true;\n        }\n        node = node.parentNode;\n      }\n      return false;\n    }\n    var MenuButton = Button.extend({\n      init: function (settings) {\n        var self$$1 = this;\n        self$$1._renderOpen = true;\n        self$$1._super(settings);\n        settings = self$$1.settings;\n        self$$1.classes.add('menubtn');\n        if (settings.fixedWidth) {\n          self$$1.classes.add('fixed-width');\n        }\n        self$$1.aria('haspopup', true);\n        self$$1.state.set('menu', settings.menu || self$$1.render());\n      },\n      showMenu: function (toggle) {\n        var self$$1 = this;\n        var menu;\n        if (self$$1.menu && self$$1.menu.visible() && toggle !== false) {\n          return self$$1.hideMenu();\n        }\n        if (!self$$1.menu) {\n          menu = self$$1.state.get('menu') || [];\n          self$$1.classes.add('opened');\n          if (menu.length) {\n            menu = {\n              type: 'menu',\n              animate: true,\n              items: menu\n            };\n          } else {\n            menu.type = menu.type || 'menu';\n            menu.animate = true;\n          }\n          if (!menu.renderTo) {\n            self$$1.menu = global$4.create(menu).parent(self$$1).renderTo();\n          } else {\n            self$$1.menu = menu.parent(self$$1).show().renderTo();\n          }\n          self$$1.fire('createmenu');\n          self$$1.menu.reflow();\n          self$$1.menu.on('cancel', function (e) {\n            if (e.control.parent() === self$$1.menu) {\n              e.stopPropagation();\n              self$$1.focus();\n              self$$1.hideMenu();\n            }\n          });\n          self$$1.menu.on('select', function () {\n            self$$1.focus();\n          });\n          self$$1.menu.on('show hide', function (e) {\n            if (e.type === 'hide' && e.control.parent() === self$$1) {\n              self$$1.classes.remove('opened-under');\n            }\n            if (e.control === self$$1.menu) {\n              self$$1.activeMenu(e.type === 'show');\n              self$$1.classes.toggle('opened', e.type === 'show');\n            }\n            self$$1.aria('expanded', e.type === 'show');\n          }).fire('show');\n        }\n        self$$1.menu.show();\n        self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });\n        self$$1.menu.repaint();\n        self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [\n          'br-tr',\n          'tr-br'\n        ] : [\n          'bl-tl',\n          'tl-bl'\n        ]);\n        var menuLayoutRect = self$$1.menu.layoutRect();\n        var selfBottom = self$$1.$el.offset().top + self$$1.layoutRect().h;\n        if (selfBottom > menuLayoutRect.y && selfBottom < menuLayoutRect.y + menuLayoutRect.h) {\n          self$$1.classes.add('opened-under');\n        }\n        self$$1.fire('showmenu');\n      },\n      hideMenu: function () {\n        var self$$1 = this;\n        if (self$$1.menu) {\n          self$$1.menu.items().each(function (item) {\n            if (item.hideMenu) {\n              item.hideMenu();\n            }\n          });\n          self$$1.menu.hide();\n        }\n      },\n      activeMenu: function (state) {\n        this.classes.toggle('active', state);\n      },\n      renderHtml: function () {\n        var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;\n        var icon = self$$1.settings.icon, image;\n        var text = self$$1.state.get('text');\n        var textHtml = '';\n        image = self$$1.settings.image;\n        if (image) {\n          icon = 'none';\n          if (typeof image !== 'string') {\n            image = window.getSelection ? image[0] : image[1];\n          }\n          image = ' style=\"background-image: url(\\'' + image + '\\')\"';\n        } else {\n          image = '';\n        }\n        if (text) {\n          self$$1.classes.add('btn-has-text');\n          textHtml = '<span class=\"' + prefix + 'txt\">' + self$$1.encode(text) + '</span>';\n        }\n        icon = self$$1.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';\n        self$$1.aria('role', self$$1.parent() instanceof MenuBar ? 'menuitem' : 'button');\n        return '<div id=\"' + id + '\" class=\"' + self$$1.classes + '\" tabindex=\"-1\" aria-labelledby=\"' + id + '\">' + '<button id=\"' + id + '-open\" role=\"presentation\" type=\"button\" tabindex=\"-1\">' + (icon ? '<i class=\"' + icon + '\"' + image + '></i>' : '') + textHtml + ' <i class=\"' + prefix + 'caret\"></i>' + '</button>' + '</div>';\n      },\n      postRender: function () {\n        var self$$1 = this;\n        self$$1.on('click', function (e) {\n          if (e.control === self$$1 && isChildOf$1(e.target, self$$1.getEl())) {\n            self$$1.focus();\n            self$$1.showMenu(!e.aria);\n            if (e.aria) {\n              self$$1.menu.items().filter(':visible')[0].focus();\n            }\n          }\n        });\n        self$$1.on('mouseenter', function (e) {\n          var overCtrl = e.control;\n          var parent$$1 = self$$1.parent();\n          var hasVisibleSiblingMenu;\n          if (overCtrl && parent$$1 && overCtrl instanceof MenuButton && overCtrl.parent() === parent$$1) {\n            parent$$1.items().filter('MenuButton').each(function (ctrl) {\n              if (ctrl.hideMenu && ctrl !== overCtrl) {\n                if (ctrl.menu && ctrl.menu.visible()) {\n                  hasVisibleSiblingMenu = true;\n                }\n                ctrl.hideMenu();\n              }\n            });\n            if (hasVisibleSiblingMenu) {\n              overCtrl.focus();\n              overCtrl.showMenu();\n            }\n          }\n        });\n        return self$$1._super();\n      },\n      bindStates: function () {\n        var self$$1 = this;\n        self$$1.state.on('change:menu', function () {\n          if (self$$1.menu) {\n            self$$1.menu.remove();\n          }\n          self$$1.menu = null;\n        });\n        return self$$1._super();\n      },\n      remove: function () {\n        this._super();\n        if (this.menu) {\n          this.menu.remove();\n        }\n      }\n    });\n\n    var Menu = FloatPanel.extend({\n      Defaults: {\n        defaultType: 'menuitem',\n        border: 1,\n        layout: 'stack',\n        role: 'application',\n        bodyRole: 'menu',\n        ariaRoot: true\n      },\n      init: function (settings) {\n        var self = this;\n        settings.autohide = true;\n        settings.constrainToViewport = true;\n        if (typeof settings.items === 'function') {\n          settings.itemsFactory = settings.items;\n          settings.items = [];\n        }\n        if (settings.itemDefaults) {\n          var items = settings.items;\n          var i = items.length;\n          while (i--) {\n            items[i] = global$2.extend({}, settings.itemDefaults, items[i]);\n          }\n        }\n        self._super(settings);\n        self.classes.add('menu');\n        if (settings.animate && global$8.ie !== 11) {\n          self.classes.add('animate');\n        }\n      },\n      repaint: function () {\n        this.classes.toggle('menu-align', true);\n        this._super();\n        this.getEl().style.height = '';\n        this.getEl('body').style.height = '';\n        return this;\n      },\n      cancel: function () {\n        var self = this;\n        self.hideAll();\n        self.fire('select');\n      },\n      load: function () {\n        var self = this;\n        var time, factory;\n        function hideThrobber() {\n          if (self.throbber) {\n            self.throbber.hide();\n            self.throbber = null;\n          }\n        }\n        factory = self.settings.itemsFactory;\n        if (!factory) {\n          return;\n        }\n        if (!self.throbber) {\n          self.throbber = new Throbber(self.getEl('body'), true);\n          if (self.items().length === 0) {\n            self.throbber.show();\n            self.fire('loading');\n          } else {\n            self.throbber.show(100, function () {\n              self.items().remove();\n              self.fire('loading');\n            });\n          }\n          self.on('hide close', hideThrobber);\n        }\n        self.requestTime = time = new Date().getTime();\n        self.settings.itemsFactory(function (items) {\n          if (items.length === 0) {\n            self.hide();\n            return;\n          }\n          if (self.requestTime !== time) {\n            return;\n          }\n          self.getEl().style.width = '';\n          self.getEl('body').style.width = '';\n          hideThrobber();\n          self.items().remove();\n          self.getEl('body').innerHTML = '';\n          self.add(items);\n          self.renderNew();\n          self.fire('loaded');\n        });\n      },\n      hideAll: function () {\n        var self = this;\n        this.find('menuitem').exec('hideMenu');\n        return self._super();\n      },\n      preRender: function () {\n        var self = this;\n        self.items().each(function (ctrl) {\n          var settings = ctrl.settings;\n          if (settings.icon || settings.image || settings.selectable) {\n            self._hasIcons = true;\n            return false;\n          }\n        });\n        if (self.settings.itemsFactory) {\n          self.on('postrender', function () {\n            if (self.settings.itemsFactory) {\n              self.load();\n            }\n          });\n        }\n        self.on('show hide', function (e) {\n          if (e.control === self) {\n            if (e.type === 'show') {\n              global$7.setTimeout(function () {\n                self.classes.add('in');\n              }, 0);\n            } else {\n              self.classes.remove('in');\n            }\n          }\n        });\n        return self._super();\n      }\n    });\n\n    var ListBox = MenuButton.extend({\n      init: function (settings) {\n        var self = this;\n        var values, selected, selectedText, lastItemCtrl;\n        function setSelected(menuValues) {\n          for (var i = 0; i < menuValues.length; i++) {\n            selected = menuValues[i].selected || settings.value === menuValues[i].value;\n            if (selected) {\n              selectedText = selectedText || menuValues[i].text;\n              self.state.set('value', menuValues[i].value);\n              return true;\n            }\n            if (menuValues[i].menu) {\n              if (setSelected(menuValues[i].menu)) {\n                return true;\n              }\n            }\n          }\n        }\n        self._super(settings);\n        settings = self.settings;\n        self._values = values = settings.values;\n        if (values) {\n          if (typeof settings.value !== 'undefined') {\n            setSelected(values);\n          }\n          if (!selected && values.length > 0) {\n            selectedText = values[0].text;\n            self.state.set('value', values[0].value);\n          }\n          self.state.set('menu', values);\n        }\n        self.state.set('text', settings.text || selectedText);\n        self.classes.add('listbox');\n        self.on('select', function (e) {\n          var ctrl = e.control;\n          if (lastItemCtrl) {\n            e.lastControl = lastItemCtrl;\n          }\n          if (settings.multiple) {\n            ctrl.active(!ctrl.active());\n          } else {\n            self.value(e.control.value());\n          }\n          lastItemCtrl = ctrl;\n        });\n      },\n      value: function (value) {\n        if (arguments.length === 0) {\n          return this.state.get('value');\n        }\n        if (typeof value === 'undefined') {\n          return this;\n        }\n        function valueExists(values) {\n          return exists(values, function (a) {\n            return a.menu ? valueExists(a.menu) : a.value === value;\n          });\n        }\n        if (this.settings.values) {\n          if (valueExists(this.settings.values)) {\n            this.state.set('value', value);\n          } else if (value === null) {\n            this.state.set('value', null);\n          }\n        } else {\n          this.state.set('value', value);\n        }\n        return this;\n      },\n      bindStates: function () {\n        var self = this;\n        function activateMenuItemsByValue(menu, value) {\n          if (menu instanceof Menu) {\n            menu.items().each(function (ctrl) {\n              if (!ctrl.hasMenus()) {\n                ctrl.active(ctrl.value() === value);\n              }\n            });\n          }\n        }\n        function getSelectedItem(menuValues, value) {\n          var selectedItem;\n          if (!menuValues) {\n            return;\n          }\n          for (var i = 0; i < menuValues.length; i++) {\n            if (menuValues[i].value === value) {\n              return menuValues[i];\n            }\n            if (menuValues[i].menu) {\n              selectedItem = getSelectedItem(menuValues[i].menu, value);\n              if (selectedItem) {\n                return selectedItem;\n              }\n            }\n          }\n        }\n        self.on('show', function (e) {\n          activateMenuItemsByValue(e.control, self.value());\n        });\n        self.state.on('change:value', function (e) {\n          var selectedItem = getSelectedItem(self.state.get('menu'), e.value);\n          if (selectedItem) {\n            self.text(selectedItem.text);\n          } else {\n            self.text(self.settings.text);\n          }\n        });\n        return self._super();\n      }\n    });\n\n    var toggleTextStyle = function (ctrl, state) {\n      var textStyle = ctrl._textStyle;\n      if (textStyle) {\n        var textElm = ctrl.getEl('text');\n        textElm.setAttribute('style', textStyle);\n        if (state) {\n          textElm.style.color = '';\n          textElm.style.backgroundColor = '';\n        }\n      }\n    };\n    var MenuItem = Widget.extend({\n      Defaults: {\n        border: 0,\n        role: 'menuitem'\n      },\n      init: function (settings) {\n        var self = this;\n        var text;\n        self._super(settings);\n        settings = self.settings;\n        self.classes.add('menu-item');\n        if (settings.menu) {\n          self.classes.add('menu-item-expand');\n        }\n        if (settings.preview) {\n          self.classes.add('menu-item-preview');\n        }\n        text = self.state.get('text');\n        if (text === '-' || text === '|') {\n          self.classes.add('menu-item-sep');\n          self.aria('role', 'separator');\n          self.state.set('text', '-');\n        }\n        if (settings.selectable) {\n          self.aria('role', 'menuitemcheckbox');\n          self.classes.add('menu-item-checkbox');\n          settings.icon = 'selected';\n        }\n        if (!settings.preview && !settings.selectable) {\n          self.classes.add('menu-item-normal');\n        }\n        self.on('mousedown', function (e) {\n          e.preventDefault();\n        });\n        if (settings.menu && !settings.ariaHideMenu) {\n          self.aria('haspopup', true);\n        }\n      },\n      hasMenus: function () {\n        return !!this.settings.menu;\n      },\n      showMenu: function () {\n        var self = this;\n        var settings = self.settings;\n        var menu;\n        var parent = self.parent();\n        parent.items().each(function (ctrl) {\n          if (ctrl !== self) {\n            ctrl.hideMenu();\n          }\n        });\n        if (settings.menu) {\n          menu = self.menu;\n          if (!menu) {\n            menu = settings.menu;\n            if (menu.length) {\n              menu = {\n                type: 'menu',\n                items: menu\n              };\n            } else {\n              menu.type = menu.type || 'menu';\n            }\n            if (parent.settings.itemDefaults) {\n              menu.itemDefaults = parent.settings.itemDefaults;\n            }\n            menu = self.menu = global$4.create(menu).parent(self).renderTo();\n            menu.reflow();\n            menu.on('cancel', function (e) {\n              e.stopPropagation();\n              self.focus();\n              menu.hide();\n            });\n            menu.on('show hide', function (e) {\n              if (e.control.items) {\n                e.control.items().each(function (ctrl) {\n                  ctrl.active(ctrl.settings.selected);\n                });\n              }\n            }).fire('show');\n            menu.on('hide', function (e) {\n              if (e.control === menu) {\n                self.classes.remove('selected');\n              }\n            });\n            menu.submenu = true;\n          } else {\n            menu.show();\n          }\n          menu._parentMenu = parent;\n          menu.classes.add('menu-sub');\n          var rel = menu.testMoveRel(self.getEl(), self.isRtl() ? [\n            'tl-tr',\n            'bl-br',\n            'tr-tl',\n            'br-bl'\n          ] : [\n            'tr-tl',\n            'br-bl',\n            'tl-tr',\n            'bl-br'\n          ]);\n          menu.moveRel(self.getEl(), rel);\n          menu.rel = rel;\n          rel = 'menu-sub-' + rel;\n          menu.classes.remove(menu._lastRel).add(rel);\n          menu._lastRel = rel;\n          self.classes.add('selected');\n          self.aria('expanded', true);\n        }\n      },\n      hideMenu: function () {\n        var self = this;\n        if (self.menu) {\n          self.menu.items().each(function (item) {\n            if (item.hideMenu) {\n              item.hideMenu();\n            }\n          });\n          self.menu.hide();\n          self.aria('expanded', false);\n        }\n        return self;\n      },\n      renderHtml: function () {\n        var self = this;\n        var id = self._id;\n        var settings = self.settings;\n        var prefix = self.classPrefix;\n        var text = self.state.get('text');\n        var icon = self.settings.icon, image = '', shortcut = settings.shortcut;\n        var url = self.encode(settings.url), iconHtml = '';\n        function convertShortcut(shortcut) {\n          var i, value, replace = {};\n          if (global$8.mac) {\n            replace = {\n              alt: '&#x2325;',\n              ctrl: '&#x2318;',\n              shift: '&#x21E7;',\n              meta: '&#x2318;'\n            };\n          } else {\n            replace = { meta: 'Ctrl' };\n          }\n          shortcut = shortcut.split('+');\n          for (i = 0; i < shortcut.length; i++) {\n            value = replace[shortcut[i].toLowerCase()];\n            if (value) {\n              shortcut[i] = value;\n            }\n          }\n          return shortcut.join('+');\n        }\n        function escapeRegExp(str) {\n          return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n        }\n        function markMatches(text) {\n          var match = settings.match || '';\n          return match ? text.replace(new RegExp(escapeRegExp(match), 'gi'), function (match) {\n            return '!mce~match[' + match + ']mce~match!';\n          }) : text;\n        }\n        function boldMatches(text) {\n          return text.replace(new RegExp(escapeRegExp('!mce~match['), 'g'), '<b>').replace(new RegExp(escapeRegExp(']mce~match!'), 'g'), '</b>');\n        }\n        if (icon) {\n          self.parent().classes.add('menu-has-icons');\n        }\n        if (settings.image) {\n          image = ' style=\"background-image: url(\\'' + settings.image + '\\')\"';\n        }\n        if (shortcut) {\n          shortcut = convertShortcut(shortcut);\n        }\n        icon = prefix + 'ico ' + prefix + 'i-' + (self.settings.icon || 'none');\n        iconHtml = text !== '-' ? '<i class=\"' + icon + '\"' + image + '></i>\\xA0' : '';\n        text = boldMatches(self.encode(markMatches(text)));\n        url = boldMatches(self.encode(markMatches(url)));\n        return '<div id=\"' + id + '\" class=\"' + self.classes + '\" tabindex=\"-1\">' + iconHtml + (text !== '-' ? '<span id=\"' + id + '-text\" class=\"' + prefix + 'text\">' + text + '</span>' : '') + (shortcut ? '<div id=\"' + id + '-shortcut\" class=\"' + prefix + 'menu-shortcut\">' + shortcut + '</div>' : '') + (settings.menu ? '<div class=\"' + prefix + 'caret\"></div>' : '') + (url ? '<div class=\"' + prefix + 'menu-item-link\">' + url + '</div>' : '') + '</div>';\n      },\n      postRender: function () {\n        var self = this, settings = self.settings;\n        var textStyle = settings.textStyle;\n        if (typeof textStyle === 'function') {\n          textStyle = textStyle.call(this);\n        }\n        if (textStyle) {\n          var textElm = self.getEl('text');\n          if (textElm) {\n            textElm.setAttribute('style', textStyle);\n            self._textStyle = textStyle;\n          }\n        }\n        self.on('mouseenter click', function (e) {\n          if (e.control === self) {\n            if (!settings.menu && e.type === 'click') {\n              self.fire('select');\n              global$7.requestAnimationFrame(function () {\n                self.parent().hideAll();\n              });\n            } else {\n              self.showMenu();\n              if (e.aria) {\n                self.menu.focus(true);\n              }\n            }\n          }\n        });\n        self._super();\n        return self;\n      },\n      hover: function () {\n        var self = this;\n        self.parent().items().each(function (ctrl) {\n          ctrl.classes.remove('selected');\n        });\n        self.classes.toggle('selected', true);\n        return self;\n      },\n      active: function (state) {\n        toggleTextStyle(this, state);\n        if (typeof state !== 'undefined') {\n          this.aria('checked', state);\n        }\n        return this._super(state);\n      },\n      remove: function () {\n        this._super();\n        if (this.menu) {\n          this.menu.remove();\n        }\n      }\n    });\n\n    var Radio = Checkbox.extend({\n      Defaults: {\n        classes: 'radio',\n        role: 'radio'\n      }\n    });\n\n    var ResizeHandle = Widget.extend({\n      renderHtml: function () {\n        var self = this, prefix = self.classPrefix;\n        self.classes.add('resizehandle');\n        if (self.settings.direction === 'both') {\n          self.classes.add('resizehandle-both');\n        }\n        self.canFocus = false;\n        return '<div id=\"' + self._id + '\" class=\"' + self.classes + '\">' + '<i class=\"' + prefix + 'ico ' + prefix + 'i-resize\"></i>' + '</div>';\n      },\n      postRender: function () {\n        var self = this;\n        self._super();\n        self.resizeDragHelper = new DragHelper(this._id, {\n          start: function () {\n            self.fire('ResizeStart');\n          },\n          drag: function (e) {\n            if (self.settings.direction !== 'both') {\n              e.deltaX = 0;\n            }\n            self.fire('Resize', e);\n          },\n          stop: function () {\n            self.fire('ResizeEnd');\n          }\n        });\n      },\n      remove: function () {\n        if (this.resizeDragHelper) {\n          this.resizeDragHelper.destroy();\n        }\n        return this._super();\n      }\n    });\n\n    function createOptions(options) {\n      var strOptions = '';\n      if (options) {\n        for (var i = 0; i < options.length; i++) {\n          strOptions += '<option value=\"' + options[i] + '\">' + options[i] + '</option>';\n        }\n      }\n      return strOptions;\n    }\n    var SelectBox = Widget.extend({\n      Defaults: {\n        classes: 'selectbox',\n        role: 'selectbox',\n        options: []\n      },\n      init: function (settings) {\n        var self = this;\n        self._super(settings);\n        if (self.settings.size) {\n          self.size = self.settings.size;\n        }\n        if (self.settings.options) {\n          self._options = self.settings.options;\n        }\n        self.on('keydown', function (e) {\n          var rootControl;\n          if (e.keyCode === 13) {\n            e.preventDefault();\n            self.parents().reverse().each(function (ctrl) {\n              if (ctrl.toJSON) {\n                rootControl = ctrl;\n                return false;\n              }\n            });\n            self.fire('submit', { data: rootControl.toJSON() });\n          }\n        });\n      },\n      options: function (state) {\n        if (!arguments.length) {\n          return this.state.get('options');\n        }\n        this.state.set('options', state);\n        return this;\n      },\n      renderHtml: function () {\n        var self = this;\n        var options, size = '';\n        options = createOptions(self._options);\n        if (self.size) {\n          size = ' size = \"' + self.size + '\"';\n        }\n        return '<select id=\"' + self._id + '\" class=\"' + self.classes + '\"' + size + '>' + options + '</select>';\n      },\n      bindStates: function () {\n        var self = this;\n        self.state.on('change:options', function (e) {\n          self.getEl().innerHTML = createOptions(e.value);\n        });\n        return self._super();\n      }\n    });\n\n    function constrain(value, minVal, maxVal) {\n      if (value < minVal) {\n        value = minVal;\n      }\n      if (value > maxVal) {\n        value = maxVal;\n      }\n      return value;\n    }\n    function setAriaProp(el, name, value) {\n      el.setAttribute('aria-' + name, value);\n    }\n    function updateSliderHandle(ctrl, value) {\n      var maxHandlePos, shortSizeName, sizeName, stylePosName, styleValue, handleEl;\n      if (ctrl.settings.orientation === 'v') {\n        stylePosName = 'top';\n        sizeName = 'height';\n        shortSizeName = 'h';\n      } else {\n        stylePosName = 'left';\n        sizeName = 'width';\n        shortSizeName = 'w';\n      }\n      handleEl = ctrl.getEl('handle');\n      maxHandlePos = (ctrl.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];\n      styleValue = maxHandlePos * ((value - ctrl._minValue) / (ctrl._maxValue - ctrl._minValue)) + 'px';\n      handleEl.style[stylePosName] = styleValue;\n      handleEl.style.height = ctrl.layoutRect().h + 'px';\n      setAriaProp(handleEl, 'valuenow', value);\n      setAriaProp(handleEl, 'valuetext', '' + ctrl.settings.previewFilter(value));\n      setAriaProp(handleEl, 'valuemin', ctrl._minValue);\n      setAriaProp(handleEl, 'valuemax', ctrl._maxValue);\n    }\n    var Slider = Widget.extend({\n      init: function (settings) {\n        var self = this;\n        if (!settings.previewFilter) {\n          settings.previewFilter = function (value) {\n            return Math.round(value * 100) / 100;\n          };\n        }\n        self._super(settings);\n        self.classes.add('slider');\n        if (settings.orientation === 'v') {\n          self.classes.add('vertical');\n        }\n        self._minValue = isNumber(settings.minValue) ? settings.minValue : 0;\n        self._maxValue = isNumber(settings.maxValue) ? settings.maxValue : 100;\n        self._initValue = self.state.get('value');\n      },\n      renderHtml: function () {\n        var self = this, id = self._id, prefix = self.classPrefix;\n        return '<div id=\"' + id + '\" class=\"' + self.classes + '\">' + '<div id=\"' + id + '-handle\" class=\"' + prefix + 'slider-handle\" role=\"slider\" tabindex=\"-1\"></div>' + '</div>';\n      },\n      reset: function () {\n        this.value(this._initValue).repaint();\n      },\n      postRender: function () {\n        var self = this;\n        var minValue, maxValue, screenCordName, stylePosName, sizeName, shortSizeName;\n        function toFraction(min, max, val) {\n          return (val + min) / (max - min);\n        }\n        function fromFraction(min, max, val) {\n          return val * (max - min) - min;\n        }\n        function handleKeyboard(minValue, maxValue) {\n          function alter(delta) {\n            var value;\n            value = self.value();\n            value = fromFraction(minValue, maxValue, toFraction(minValue, maxValue, value) + delta * 0.05);\n            value = constrain(value, minValue, maxValue);\n            self.value(value);\n            self.fire('dragstart', { value: value });\n            self.fire('drag', { value: value });\n            self.fire('dragend', { value: value });\n          }\n          self.on('keydown', function (e) {\n            switch (e.keyCode) {\n            case 37:\n            case 38:\n              alter(-1);\n              break;\n            case 39:\n            case 40:\n              alter(1);\n              break;\n            }\n          });\n        }\n        function handleDrag(minValue, maxValue, handleEl) {\n          var startPos, startHandlePos, maxHandlePos, handlePos, value;\n          self._dragHelper = new DragHelper(self._id, {\n            handle: self._id + '-handle',\n            start: function (e) {\n              startPos = e[screenCordName];\n              startHandlePos = parseInt(self.getEl('handle').style[stylePosName], 10);\n              maxHandlePos = (self.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];\n              self.fire('dragstart', { value: value });\n            },\n            drag: function (e) {\n              var delta = e[screenCordName] - startPos;\n              handlePos = constrain(startHandlePos + delta, 0, maxHandlePos);\n              handleEl.style[stylePosName] = handlePos + 'px';\n              value = minValue + handlePos / maxHandlePos * (maxValue - minValue);\n              self.value(value);\n              self.tooltip().text('' + self.settings.previewFilter(value)).show().moveRel(handleEl, 'bc tc');\n              self.fire('drag', { value: value });\n            },\n            stop: function () {\n              self.tooltip().hide();\n              self.fire('dragend', { value: value });\n            }\n          });\n        }\n        minValue = self._minValue;\n        maxValue = self._maxValue;\n        if (self.settings.orientation === 'v') {\n          screenCordName = 'screenY';\n          stylePosName = 'top';\n          sizeName = 'height';\n          shortSizeName = 'h';\n        } else {\n          screenCordName = 'screenX';\n          stylePosName = 'left';\n          sizeName = 'width';\n          shortSizeName = 'w';\n        }\n        self._super();\n        handleKeyboard(minValue, maxValue);\n        handleDrag(minValue, maxValue, self.getEl('handle'));\n      },\n      repaint: function () {\n        this._super();\n        updateSliderHandle(this, this.value());\n      },\n      bindStates: function () {\n        var self = this;\n        self.state.on('change:value', function (e) {\n          updateSliderHandle(self, e.value);\n        });\n        return self._super();\n      }\n    });\n\n    var Spacer = Widget.extend({\n      renderHtml: function () {\n        var self = this;\n        self.classes.add('spacer');\n        self.canFocus = false;\n        return '<div id=\"' + self._id + '\" class=\"' + self.classes + '\"></div>';\n      }\n    });\n\n    var SplitButton = MenuButton.extend({\n      Defaults: {\n        classes: 'widget btn splitbtn',\n        role: 'button'\n      },\n      repaint: function () {\n        var self$$1 = this;\n        var elm = self$$1.getEl();\n        var rect = self$$1.layoutRect();\n        var mainButtonElm, menuButtonElm;\n        self$$1._super();\n        mainButtonElm = elm.firstChild;\n        menuButtonElm = elm.lastChild;\n        global$9(mainButtonElm).css({\n          width: rect.w - funcs.getSize(menuButtonElm).width,\n          height: rect.h - 2\n        });\n        global$9(menuButtonElm).css({ height: rect.h - 2 });\n        return self$$1;\n      },\n      activeMenu: function (state) {\n        var self$$1 = this;\n        global$9(self$$1.getEl().lastChild).toggleClass(self$$1.classPrefix + 'active', state);\n      },\n      renderHtml: function () {\n        var self$$1 = this;\n        var id = self$$1._id;\n        var prefix = self$$1.classPrefix;\n        var image;\n        var icon = self$$1.state.get('icon');\n        var text = self$$1.state.get('text');\n        var settings = self$$1.settings;\n        var textHtml = '', ariaPressed;\n        image = settings.image;\n        if (image) {\n          icon = 'none';\n          if (typeof image !== 'string') {\n            image = window.getSelection ? image[0] : image[1];\n          }\n          image = ' style=\"background-image: url(\\'' + image + '\\')\"';\n        } else {\n          image = '';\n        }\n        icon = settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';\n        if (text) {\n          self$$1.classes.add('btn-has-text');\n          textHtml = '<span class=\"' + prefix + 'txt\">' + self$$1.encode(text) + '</span>';\n        }\n        ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed=\"' + settings.active + '\"' : '';\n        return '<div id=\"' + id + '\" class=\"' + self$$1.classes + '\" role=\"button\"' + ariaPressed + ' tabindex=\"-1\">' + '<button type=\"button\" hidefocus=\"1\" tabindex=\"-1\">' + (icon ? '<i class=\"' + icon + '\"' + image + '></i>' : '') + textHtml + '</button>' + '<button type=\"button\" class=\"' + prefix + 'open\" hidefocus=\"1\" tabindex=\"-1\">' + (self$$1._menuBtnText ? (icon ? '\\xA0' : '') + self$$1._menuBtnText : '') + ' <i class=\"' + prefix + 'caret\"></i>' + '</button>' + '</div>';\n      },\n      postRender: function () {\n        var self$$1 = this, onClickHandler = self$$1.settings.onclick;\n        self$$1.on('click', function (e) {\n          var node = e.target;\n          if (e.control === this) {\n            while (node) {\n              if (e.aria && e.aria.key !== 'down' || node.nodeName === 'BUTTON' && node.className.indexOf('open') === -1) {\n                e.stopImmediatePropagation();\n                if (onClickHandler) {\n                  onClickHandler.call(this, e);\n                }\n                return;\n              }\n              node = node.parentNode;\n            }\n          }\n        });\n        delete self$$1.settings.onclick;\n        return self$$1._super();\n      }\n    });\n\n    var StackLayout = FlowLayout.extend({\n      Defaults: {\n        containerClass: 'stack-layout',\n        controlClass: 'stack-layout-item',\n        endClass: 'break'\n      },\n      isNative: function () {\n        return true;\n      }\n    });\n\n    var TabPanel = Panel.extend({\n      Defaults: {\n        layout: 'absolute',\n        defaults: { type: 'panel' }\n      },\n      activateTab: function (idx) {\n        var activeTabElm;\n        if (this.activeTabId) {\n          activeTabElm = this.getEl(this.activeTabId);\n          global$9(activeTabElm).removeClass(this.classPrefix + 'active');\n          activeTabElm.setAttribute('aria-selected', 'false');\n        }\n        this.activeTabId = 't' + idx;\n        activeTabElm = this.getEl('t' + idx);\n        activeTabElm.setAttribute('aria-selected', 'true');\n        global$9(activeTabElm).addClass(this.classPrefix + 'active');\n        this.items()[idx].show().fire('showtab');\n        this.reflow();\n        this.items().each(function (item, i) {\n          if (idx !== i) {\n            item.hide();\n          }\n        });\n      },\n      renderHtml: function () {\n        var self = this;\n        var layout = self._layout;\n        var tabsHtml = '';\n        var prefix = self.classPrefix;\n        self.preRender();\n        layout.preRender(self);\n        self.items().each(function (ctrl, i) {\n          var id = self._id + '-t' + i;\n          ctrl.aria('role', 'tabpanel');\n          ctrl.aria('labelledby', id);\n          tabsHtml += '<div id=\"' + id + '\" class=\"' + prefix + 'tab\" ' + 'unselectable=\"on\" role=\"tab\" aria-controls=\"' + ctrl._id + '\" aria-selected=\"false\" tabIndex=\"-1\">' + self.encode(ctrl.settings.title) + '</div>';\n        });\n        return '<div id=\"' + self._id + '\" class=\"' + self.classes + '\" hidefocus=\"1\" tabindex=\"-1\">' + '<div id=\"' + self._id + '-head\" class=\"' + prefix + 'tabs\" role=\"tablist\">' + tabsHtml + '</div>' + '<div id=\"' + self._id + '-body\" class=\"' + self.bodyClasses + '\">' + layout.renderHtml(self) + '</div>' + '</div>';\n      },\n      postRender: function () {\n        var self = this;\n        self._super();\n        self.settings.activeTab = self.settings.activeTab || 0;\n        self.activateTab(self.settings.activeTab);\n        this.on('click', function (e) {\n          var targetParent = e.target.parentNode;\n          if (targetParent && targetParent.id === self._id + '-head') {\n            var i = targetParent.childNodes.length;\n            while (i--) {\n              if (targetParent.childNodes[i] === e.target) {\n                self.activateTab(i);\n              }\n            }\n          }\n        });\n      },\n      initLayoutRect: function () {\n        var self = this;\n        var rect, minW, minH;\n        minW = funcs.getSize(self.getEl('head')).width;\n        minW = minW < 0 ? 0 : minW;\n        minH = 0;\n        self.items().each(function (item) {\n          minW = Math.max(minW, item.layoutRect().minW);\n          minH = Math.max(minH, item.layoutRect().minH);\n        });\n        self.items().each(function (ctrl) {\n          ctrl.settings.x = 0;\n          ctrl.settings.y = 0;\n          ctrl.settings.w = minW;\n          ctrl.settings.h = minH;\n          ctrl.layoutRect({\n            x: 0,\n            y: 0,\n            w: minW,\n            h: minH\n          });\n        });\n        var headH = funcs.getSize(self.getEl('head')).height;\n        self.settings.minWidth = minW;\n        self.settings.minHeight = minH + headH;\n        rect = self._super();\n        rect.deltaH += headH;\n        rect.innerH = rect.h - rect.deltaH;\n        return rect;\n      }\n    });\n\n    var TextBox = Widget.extend({\n      init: function (settings) {\n        var self$$1 = this;\n        self$$1._super(settings);\n        self$$1.classes.add('textbox');\n        if (settings.multiline) {\n          self$$1.classes.add('multiline');\n        } else {\n          self$$1.on('keydown', function (e) {\n            var rootControl;\n            if (e.keyCode === 13) {\n              e.preventDefault();\n              self$$1.parents().reverse().each(function (ctrl) {\n                if (ctrl.toJSON) {\n                  rootControl = ctrl;\n                  return false;\n                }\n              });\n              self$$1.fire('submit', { data: rootControl.toJSON() });\n            }\n          });\n          self$$1.on('keyup', function (e) {\n            self$$1.state.set('value', e.target.value);\n          });\n        }\n      },\n      repaint: function () {\n        var self$$1 = this;\n        var style, rect, borderBox, borderW, borderH = 0, lastRepaintRect;\n        style = self$$1.getEl().style;\n        rect = self$$1._layoutRect;\n        lastRepaintRect = self$$1._lastRepaintRect || {};\n        var doc = document;\n        if (!self$$1.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {\n          style.lineHeight = rect.h - borderH + 'px';\n        }\n        borderBox = self$$1.borderBox;\n        borderW = borderBox.left + borderBox.right + 8;\n        borderH = borderBox.top + borderBox.bottom + (self$$1.settings.multiline ? 8 : 0);\n        if (rect.x !== lastRepaintRect.x) {\n          style.left = rect.x + 'px';\n          lastRepaintRect.x = rect.x;\n        }\n        if (rect.y !== lastRepaintRect.y) {\n          style.top = rect.y + 'px';\n          lastRepaintRect.y = rect.y;\n        }\n        if (rect.w !== lastRepaintRect.w) {\n          style.width = rect.w - borderW + 'px';\n          lastRepaintRect.w = rect.w;\n        }\n        if (rect.h !== lastRepaintRect.h) {\n          style.height = rect.h - borderH + 'px';\n          lastRepaintRect.h = rect.h;\n        }\n        self$$1._lastRepaintRect = lastRepaintRect;\n        self$$1.fire('repaint', {}, false);\n        return self$$1;\n      },\n      renderHtml: function () {\n        var self$$1 = this;\n        var settings = self$$1.settings;\n        var attrs, elm;\n        attrs = {\n          id: self$$1._id,\n          hidefocus: '1'\n        };\n        global$2.each([\n          'rows',\n          'spellcheck',\n          'maxLength',\n          'size',\n          'readonly',\n          'min',\n          'max',\n          'step',\n          'list',\n          'pattern',\n          'placeholder',\n          'required',\n          'multiple'\n        ], function (name$$1) {\n          attrs[name$$1] = settings[name$$1];\n        });\n        if (self$$1.disabled()) {\n          attrs.disabled = 'disabled';\n        }\n        if (settings.subtype) {\n          attrs.type = settings.subtype;\n        }\n        elm = funcs.create(settings.multiline ? 'textarea' : 'input', attrs);\n        elm.value = self$$1.state.get('value');\n        elm.className = self$$1.classes.toString();\n        return elm.outerHTML;\n      },\n      value: function (value) {\n        if (arguments.length) {\n          this.state.set('value', value);\n          return this;\n        }\n        if (this.state.get('rendered')) {\n          this.state.set('value', this.getEl().value);\n        }\n        return this.state.get('value');\n      },\n      postRender: function () {\n        var self$$1 = this;\n        self$$1.getEl().value = self$$1.state.get('value');\n        self$$1._super();\n        self$$1.$el.on('change', function (e) {\n          self$$1.state.set('value', e.target.value);\n          self$$1.fire('change', e);\n        });\n      },\n      bindStates: function () {\n        var self$$1 = this;\n        self$$1.state.on('change:value', function (e) {\n          if (self$$1.getEl().value !== e.value) {\n            self$$1.getEl().value = e.value;\n          }\n        });\n        self$$1.state.on('change:disabled', function (e) {\n          self$$1.getEl().disabled = e.value;\n        });\n        return self$$1._super();\n      },\n      remove: function () {\n        this.$el.off();\n        this._super();\n      }\n    });\n\n    var getApi = function () {\n      return {\n        Selector: Selector,\n        Collection: Collection$2,\n        ReflowQueue: ReflowQueue,\n        Control: Control$1,\n        Factory: global$4,\n        KeyboardNavigation: KeyboardNavigation,\n        Container: Container,\n        DragHelper: DragHelper,\n        Scrollable: Scrollable,\n        Panel: Panel,\n        Movable: Movable,\n        Resizable: Resizable,\n        FloatPanel: FloatPanel,\n        Window: Window$$1,\n        MessageBox: MessageBox,\n        Tooltip: Tooltip,\n        Widget: Widget,\n        Progress: Progress,\n        Notification: Notification,\n        Layout: Layout,\n        AbsoluteLayout: AbsoluteLayout,\n        Button: Button,\n        ButtonGroup: ButtonGroup,\n        Checkbox: Checkbox,\n        ComboBox: ComboBox,\n        ColorBox: ColorBox,\n        PanelButton: PanelButton,\n        ColorButton: ColorButton,\n        ColorPicker: ColorPicker,\n        Path: Path,\n        ElementPath: ElementPath,\n        FormItem: FormItem,\n        Form: Form,\n        FieldSet: FieldSet,\n        FilePicker: FilePicker,\n        FitLayout: FitLayout,\n        FlexLayout: FlexLayout,\n        FlowLayout: FlowLayout,\n        FormatControls: FormatControls,\n        GridLayout: GridLayout,\n        Iframe: Iframe$1,\n        InfoBox: InfoBox,\n        Label: Label,\n        Toolbar: Toolbar$1,\n        MenuBar: MenuBar,\n        MenuButton: MenuButton,\n        MenuItem: MenuItem,\n        Throbber: Throbber,\n        Menu: Menu,\n        ListBox: ListBox,\n        Radio: Radio,\n        ResizeHandle: ResizeHandle,\n        SelectBox: SelectBox,\n        Slider: Slider,\n        Spacer: Spacer,\n        SplitButton: SplitButton,\n        StackLayout: StackLayout,\n        TabPanel: TabPanel,\n        TextBox: TextBox,\n        DropZone: DropZone,\n        BrowseButton: BrowseButton\n      };\n    };\n    var appendTo = function (target) {\n      if (target.ui) {\n        global$2.each(getApi(), function (ref, key) {\n          target.ui[key] = ref;\n        });\n      } else {\n        target.ui = getApi();\n      }\n    };\n    var registerToFactory = function () {\n      global$2.each(getApi(), function (ref, key) {\n        global$4.add(key, ref);\n      });\n    };\n    var Api = {\n      appendTo: appendTo,\n      registerToFactory: registerToFactory\n    };\n\n    Api.registerToFactory();\n    Api.appendTo(window.tinymce ? window.tinymce : {});\n    global.add('modern', function (editor) {\n      FormatControls.setup(editor);\n      return ThemeApi.get(editor);\n    });\n    function Theme () {\n    }\n\n    return Theme;\n\n}());\n})();\n\n}.call(window));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/tinymce/themes/modern/theme.js\n// module id = o5MNHB+lfN\n// module chunks = 2 3 28 35 44 54 73 85 102","//\n// Copyright (C) 2012 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see <http://www.gnu.org/licenses/>.\n\n// #\n// add the [data-tooltip] attribute and title=\"<tooltip contents>\" to anything you want to give a tooltip:\n//\n// usage: (see Styleguide)\n//   <a data-tooltip title=\"pops up on top center\">default</a>\n//   <a data-tooltip=\"top\" title=\"same as default\">top</a>\n//   <a data-tooltip=\"right\" title=\"should be right center\">right</a>\n//   <a data-tooltip=\"bottom\" title=\"should be bottom center\">bottom</a>\n//   <a data-tooltip=\"left\" title=\"should be left center\">left</a>\n//   <a data-tooltip='{\"track\":true}' title=\"this toolstip will stay connected to mouse as it moves around\">\n//     tooltip that tracks mouse\n//   </a>\n//   <button data-tooltip title=\"any type of element can have a tooltip\" class=\"btn\">\n//     button with tooltip\n//   </button>\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport htmlEscape from 'str/htmlEscape'\nimport sanitizeHtml from 'jsx/shared/sanitizeHtml'\nimport 'jqueryui/tooltip'\n\nconst tooltipsToShortCirtuit = {}\nconst shortCircutTooltip = target => tooltipsToShortCirtuit[target] || tooltipsToShortCirtuit[target[0]]\n\nconst tooltipUtils = {\n  setPosition (opts) {\n    function caret () {\n      if ((opts.tooltipClass || '').match('popover')) {\n        return 30\n      } else {\n        return 5\n      }\n    }\n\n    const collision = opts.force_position === 'true' ? 'none' : 'flipfit'\n    const positions = {\n      right: {\n        my: 'left center',\n        at: `right+${caret()} center`,\n        collision,\n      },\n      left: {\n        my: 'right center',\n        at: `left-${caret()} center`,\n        collision,\n      },\n      top: {\n        my: 'center bottom',\n        at: `center top-${caret()}`,\n        collision,\n      },\n      bottom: {\n        my: 'center top',\n        at: `center bottom+${caret()}`,\n        collision,\n      },\n    }\n    if (opts.position in positions) {\n      opts.position = positions[opts.position]\n    }\n  }\n}\n\n// create a custom widget that inherits from the default jQuery UI\n// tooltip but extends the open method with a setTimeout wrapper so\n// that our browser can scroll to the tabbed focus element before\n// positioning the tooltip relative to window.\n$.widget('custom.timeoutTooltip', $.ui.tooltip, {\n  _open (event, target, content) {\n    if (shortCircutTooltip(target)) return null\n\n    // Converts arguments to an array\n    const args = Array.prototype.slice.call(arguments, 0)\n    args.splice(2, 1, htmlEscape(content).toString())\n    // if you move very fast, it's possible that\n    // @timeout will be defined\n    if (this.timeout) return\n\n    const apply = this._superApply.bind(this, args)\n    this.timeout = setTimeout(() => {\n      // make sure close will be called\n      delete this.timeout\n      // remove extra handlers we added, super will add them back\n      this._off(target, 'mouseleave focusout keyup')\n      apply()\n    }, 200)\n    // this is from the jquery ui tooltip _open\n    // we need to bind events to trigger close so that the\n    // timeout is cleared when we mouseout / or leave focus\n    return this._on(target, {\n      mouseleave: 'close',\n      focusout: 'close',\n      keyup (event) {\n        if (event.keyCode === $.ui.keyCode.ESCAPE) {\n          const fakeEvent = $.Event(event)\n          fakeEvent.currentTarget = target[0]\n          return this.close(fakeEvent, true)\n        }\n      },\n    })\n  },\n\n  close (event) {\n    if (this.timeout) {\n      clearTimeout(this.timeout)\n      delete this.timeout\n      return\n    }\n    return this._superApply([event, true])\n  },\n})\n\n\n// you can provide a 'using' option to jqueryUI position (which gets called by jqueryui Tooltip to\n// position it on the screen), it will be passed the position cordinates and a feedback object which,\n// among other things, tells you where it positioned it relative to the target. we use it to add some\n// css classes that handle putting the pointer triangle (aka: caret) back to the trigger.\nfunction using (position, feedback) {\n  return $(this).css(position).removeClass('left right top bottom center middle vertical horizontal').addClass([\n    // one of: \"left\", \"right\", \"center\"\n    feedback.horizontal,\n\n    // one of \"top\", \"bottom\", \"middle\"\n    feedback.vertical,\n\n    // if tooltip was positioned mostly above/below trigger then: \"vertical\"\n    // else since the tooltip was positioned more to the left or right: \"horizontal\"\n    feedback.important,\n  ].join(' '))\n}\n\n$('body').on('mouseenter focusin', '[data-tooltip]', function (event) {\n  const $this = $(this)\n  let opts = $this.data('tooltip')\n\n  // allow specifying position by simply doing <a data-tooltip=\"left\">\n  // and allow shorthand top|bottom|left|right positions like <a data-tooltip='{\"position\":\"left\"}'>\n  if (['right', 'left', 'top', 'bottom'].includes(opts)) opts = { position: opts}\n  if (!opts) opts = {}\n  if (!opts.position) opts.position = 'top'\n\n  tooltipUtils.setPosition(opts)\n  if (opts.collision) opts.position.collision = opts.collision\n\n  if (!opts.position.using) opts.position.using = using\n\n  if ($this.data('html-tooltip-title')) {\n    opts.content = function () {\n      return $.raw(sanitizeHtml($(this).data('html-tooltip-title')))\n    }\n    opts.items = '[data-html-tooltip-title]'\n  }\n\n  if ($this.data('tooltip-class')) opts.tooltipClass = $this.data('tooltip-class')\n\n  $this.removeAttr('data-tooltip').timeoutTooltip(opts).timeoutTooltip('open').click(() => $this.timeoutTooltip('close'))\n})\n\nconst restartTooltip = event => (tooltipsToShortCirtuit[event.target] = false)\n\nconst stopTooltip = event => (tooltipsToShortCirtuit[event.target] = true)\n\n$(window).bind('detachTooltip', stopTooltip)\n$(window).bind('reattachTooltip', restartTooltip)\n\nexport default tooltipUtils\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/behaviors/tooltip.js","//\n// Copyright (C) 2011 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see <http://www.gnu.org/licenses/>.\n\nimport $ from 'jquery'\nimport 'jquery.ui.menu.inputmenu'\nimport 'jqueryui/button'\nimport 'jqueryui/popup'\n\n/*\n * PLEASE READ BEFORE MODIFYING THIS FILE:\n * This provides the 'admin cog' menus amongst other things used throughout\n * Canvas.  It has been extensively tested for accessibility.  Before making\n * any changes to this file, please check with someone about the accessibility\n * repercussions of what you intend to do.\n */\n\nexport default class KyleMenu {\n\n  constructor (trigger, options) {\n    ['onOpen', 'select', 'onClose', 'close', 'keepButtonActive'].forEach(m => this[m] = this[m].bind(this))\n    this.$trigger = $(trigger).data('kyleMenu', this)\n    this.$ariaMenuWrapper = this.$trigger.parent()\n    this.opts = $.extend(true, {}, KyleMenu.defaults, options)\n\n    if (!this.opts.noButton) {\n      if (this.opts.buttonOpts.addDropArrow) {\n        this.$trigger.append('<i class=\"icon-mini-arrow-down\"></i>')\n      }\n      this.$trigger.button(this.opts.buttonOpts)\n\n      // this is to undo the removal of the 'ui-state-active' class that jquery.ui.button\n      // does by default on mouse out if the menu is still open\n      this.$trigger.bind('mouseleave.button', this.keepButtonActive)\n    }\n\n    this.$menu = this.$trigger\n      .next()\n      .menu(this.opts.menuOpts)\n      .popup(this.opts.popupOpts)\n      .addClass('ui-kyle-menu use-css-transitions-for-show-hide')\n\n    // passing an appendMenuTo option when initializing a kylemenu helps get around popup being hidden\n    // by overflow:scroll on its parents\n    // but by doing so we need to make sure that click events still get propagated up in case we\n    // were delegating events to a parent container\n    if (this.opts.appendMenuTo) {\n      // to keep tab order when appended out of place\n      this.$menu.on({\n        keydown: (e) => {\n          if (e.keyCode === $.ui.keyCode.TAB) {\n            let tabKey\n            if (e.shiftKey) {\n              tabKey = {\n                which: $.ui.keyCode.TAB,\n                shiftKey: true,\n              }\n            } else {\n              tabKey = {\n                which: $.ui.keyCode.TAB,\n              }\n            }\n\n            const pressTab = $.Event('keydown', tabKey)\n            this.$trigger.focus().trigger(pressTab)\n          }\n        }\n      })\n\n      const popupInstance = this.$menu.data('popup')\n      const _open = popupInstance.open\n      const self = this\n      // monkey patch just this plugin instance not $.ui.popup.prototype.open\n      popupInstance.open = function () {\n        self.$menu.appendTo(self.opts.appendMenuTo)\n        return _open.apply(this, arguments)\n      }\n\n      this.$placeholder = $('<span style=\"display:none;\">').insertAfter(this.$menu)\n      this.$menu.bind('click', (...args) => this.$placeholder.trigger(...args))\n    }\n\n    // passing a notifyMenuActiveOn option when initializing a kylemenu helps\n    // get around issue of page-specific parent elements needing to know when the menu\n    // is active and removed. The value of the option is a CSS selector for a parent\n    // element of the trigger.\n    if (this.opts.notifyMenuActiveOnParent) {\n      this.$notifyParent = this.$trigger.closest(this.opts.notifyMenuActiveOnParent)\n    }\n\n    this.$menu.on({\n      menuselect: this.select,\n      popupopen: this.onOpen,\n      popupclose: this.onClose,\n    })\n  }\n\n  onOpen (event) {\n    this.$ariaMenuWrapper.attr('role', 'application')\n    this.adjustCarat(event)\n    this.$menu.addClass('ui-state-open')\n    if (this.opts.notifyMenuActiveOnParent) this.$notifyParent.addClass('menu_active')\n  }\n\n  open () {\n    this.$menu.popup('open')\n  }\n\n  select (e, ui) {\n    let $target\n    if ('click' !== (e.originalEvent && e.originalEvent.type) && ($target = $(ui.item).find('a'))) {\n      e.preventDefault()\n      const el = $target[0]\n      const event = document.createEvent('MouseEvent')\n      event.initEvent('click', true, true)\n      el.dispatchEvent(event)\n    }\n    this.close()\n  }\n\n  onClose () {\n    if (this.opts.appendMenuTo) this.$menu.insertBefore(this.$placeholder)\n    this.$trigger.removeClass('ui-state-active')\n    this.$ariaMenuWrapper.removeAttr('role')\n    this.$menu.removeClass('ui-state-open')\n    if (this.opts.notifyMenuActiveOnParent) this.$notifyParent.removeClass('menu_active')\n\n    // passing a returnFocusTo option when initializing a kylemenu provides an\n    // interface to ensure focus is not lost and returned to the body. This was\n    // introduced specifically to address the complexity of dynamically-\n    // generated menus. This rule will not be honored if the returnFocusTo\n    // element becomes disabled.\n    if (this.opts.returnFocusTo && !this.opts.returnFocusTo.prop('disabled')) {\n      this.opts.returnFocusTo.focus()\n    }\n  }\n\n  close () {\n    this.$menu.hasClass('ui-state-open') && this.$menu.popup('close').removeClass('ui-state-open')\n  }\n\n  keepButtonActive () {\n    if (this.$menu.is('.ui-state-open') && this.$trigger.is('.btn, .ui-button')) {\n      this.$trigger.addClass('ui-state-active')\n    }\n  }\n\n  // handle sticking the carat right below where you clicked on the button\n  adjustCarat (event) {\n    if (this.$carat) this.$carat.remove()\n    if (this.$trigger.is('.btn, .ui-button')) this.$trigger.addClass('ui-state-active')\n\n    const triggerWidth = this.$trigger.outerWidth()\n    const triggerOffsetLeft = this.$trigger.offset().left\n\n    // the menu may have flipped above the trigger\n    const mbox = this.$menu[0].getBoundingClientRect()\n    const tbox = this.$trigger[0].getBoundingClientRect()\n    const caratIsBelow = (mbox.top + mbox.height) < tbox.top\n    const caratY = mbox.height - 2\n\n    // if it is a mouse event, it will have a 'pageX' otherwise use the middle of the trigger\n    const pointToDropDownFrom = event.pageX || triggerOffsetLeft + triggerWidth / 2\n    const differenceInOffset = triggerOffsetLeft - this.$menu.offset().left\n    const actualOffset = pointToDropDownFrom - this.$trigger.offset().left\n    const caratOffset = Math.min(Math.max(6, actualOffset), triggerWidth - 6) + differenceInOffset\n    this.$carat = $('<span class=\"ui-menu-carat\"><span /></span>').css('left', caratOffset)\n    if (caratIsBelow) {\n      this.$carat.css('top', caratY).css('transform', 'rotateX(180deg)')\n    }\n    this.$carat.prependTo(this.$menu)\n  }\n\n  static defaults = {\n    popupOpts: {\n      position: {\n        my: 'center top',\n        at: 'center bottom',\n        offset: '0 10px',\n        within: '#main',\n        collision: 'flipfit'\n      }\n    },\n    buttonOpts: {\n      addDropArrow: true\n    }\n  }\n}\n\n// expose jQuery plugin\n$.fn.kyleMenu = function (options) {\n  return this.each(function () {\n    if (!$(this).data().kyleMenu) new KyleMenu(this, options)\n  })\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/jquery.kylemenu.js","//\n// Copyright (C) 2012 - present Instructure, Inc.\n//\n// This file is part of Canvas.\n//\n// Canvas is free software: you can redistribute it and/or modify it under\n// the terms of the GNU Affero General Public License as published by the Free\n// Software Foundation, version 3 of the License.\n//\n// Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n// A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n// details.\n//\n// You should have received a copy of the GNU Affero General Public License along\n// with this program. If not, see <http://www.gnu.org/licenses/>.\n\n// copied from\n// https://github.com/rails/jquery-ujs\n\nimport $ from 'jquery'\nimport htmlEscape from 'str/htmlEscape'\n\n// #\n// Handles \"data-method\" on links such as:\n// <a data-url=\"/users/5\" data-method=\"delete\" rel=\"nofollow\" data-confirm=\"Are you sure?\">Delete</a>\nfunction handleMethod (link) {\n  link.data('handled', true)\n  const href = link.data('url') || link.attr('href')\n  const method = link.data('method')\n  const target = link.attr('target')\n  const form = $(`<form method=\"post\" action=\"${htmlEscape(href)}\"></form>`)\n  const metadataInputHtml = `\n    <input name=\"_method\" value=\"${htmlEscape(method)}\" type=\"hidden\" />\n    <input name=\"authenticity_token\" type=\"hidden\" />\n  `\n\n  if (target) form.attr('target', target)\n  form.hide().append(metadataInputHtml).appendTo('body').submit()\n}\n\n// For 'data-confirm' attribute:\n//  - Shows the confirmation dialog\nfunction allowAction (element) {\n  const message = element.data('confirm')\n  if (!message) return true\n\n  return confirm(message)\n}\n\n$(document).delegate('a[data-confirm], a[data-method], a[data-remove]', 'click', function (event) {\n  const $link = $(this)\n\n  if ($link.data('handled') || !allowAction($link)) return false\n\n  if ($link.data('remove')) {\n    handleRemove($link)\n    return false\n  } else if ($link.data('method')) {\n    handleMethod($link)\n    return false\n  }\n})\n\n// #\n// for clicking link to remove element from page and send DELETE request to remove it from db\n// sample markup:\n// <div class=\"user\">\n//   Clicking the × will make the .user div go away, if the ajax request fails it will reappear.\n//   <a class=\"close\" href=\"#\" data-url=\"/users/5\" data-remove=\".user\" data-confirm=\"Are you sure?\"> × </a>\n// </div>\nfunction handleRemove ($link) {\n  const selector = $link.data('remove')\n  let $startLookingFrom = $link\n  const url = $link.data('url')\n\n  // special case for handling links inside of a KyleMenu that were appendedTo the body and are\n  // no longer children of where they should be\n  const closestKyleMenu = $link.closest(':ui-popup').popup('option', 'trigger').data('KyleMenu')\n  if (closestKyleMenu && closestKyleMenu.opts.appendMenuTo) {\n    $startLookingFrom = closestKyleMenu.$placeholder\n  }\n\n  const $elToRemove = $startLookingFrom.closest(selector)\n\n  // bind the 'beforeremove' and 'remove' events if you want to handle this with your own code\n  // if you stop propigation this will not remove it\n  $elToRemove.bind({\n    beforeremove () { $elToRemove.hide() },\n    remove () { $elToRemove.remove() }\n  })\n\n  $elToRemove.trigger('beforeremove')\n\n  const triggerRemove = () => $elToRemove.trigger('remove')\n  const revert = () => $elToRemove.show()\n\n  if (url) {\n    $.ajaxJSON(url, 'DELETE', {}, triggerRemove, revert)\n  } else {\n    triggerRemove()\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/coffeescripts/behaviors/ujsLinks.js"],"sourceRoot":""}