{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/imagens/logos/logo-CNA-big.png","webpack:///./src/common/directives/htmleditor.js","webpack:///./src/assets/js/tinymce/tinymce.js","webpack:///./src/assets/js/tinymce/plugins/code/plugin.js","webpack:///./src/common/tutor-step.js","webpack:///./src/common/cache.js","webpack:///./src/common/directives/datepicker.js","webpack:///./src/assets/imagens/logos/logo-CNA-mobile.png","webpack:///./src/assets/js/tinymce/plugins/link/plugin.js","webpack:///./src/assets/js/tinymce/plugins/paste/plugin.js","webpack:///./src/common/api.js","webpack:///./src/assets/js/tinymce/plugins/media/plugin.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/common/components/loading.vue?ae42","webpack:///./src/assets/js/tinymce/plugins/advlist/plugin.js","webpack:///./src/assets/js/tinymce/plugins/preview/plugin.js","webpack:///./src/App.vue?c3f6","webpack:///./src/App.vue","webpack:///./src/template/index.vue?7ae8","webpack:///./src/template/footer.vue?90bb","webpack:///src/template/footer.vue","webpack:///./src/template/footer.vue?6ef6","webpack:///./src/template/footer.vue","webpack:///./src/template/header.vue?cd68","webpack:///./src/template/form-detalhe-atualizacao.vue?e82c","webpack:///src/template/form-detalhe-atualizacao.vue","webpack:///./src/template/form-detalhe-atualizacao.vue?cf94","webpack:///./src/template/form-detalhe-atualizacao.vue","webpack:///src/template/header.vue","webpack:///./src/template/header.vue?6b5b","webpack:///./src/template/header.vue","webpack:///./src/common/components/loading.vue?0617","webpack:///src/common/components/loading.vue","webpack:///./src/common/components/loading.vue?39e7","webpack:///./src/common/components/loading.vue","webpack:///src/template/index.vue","webpack:///./src/template/index.vue?d5bb","webpack:///./src/template/index.vue","webpack:///./src/views/home/index.vue?7488","webpack:///./src/views/colaboradordesligamento/index.vue?fe83","webpack:///src/views/colaboradordesligamento/index.vue","webpack:///./src/views/colaboradordesligamento/index.vue?938d","webpack:///./src/views/colaboradordesligamento/index.vue","webpack:///src/views/home/index.vue","webpack:///./src/views/home/index.vue?79c3","webpack:///./src/views/home/index.vue","webpack:///./src/views/authorized/index.vue?0937","webpack:///src/views/authorized/index.vue","webpack:///./src/views/authorized/index.vue?3c66","webpack:///./src/views/authorized/index.vue","webpack:///./src/views/trocarescola/index.vue?fd02","webpack:///src/views/trocarescola/index.vue","webpack:///./src/views/trocarescola/index.vue?18e8","webpack:///./src/views/trocarescola/index.vue","webpack:///./src/views/testerealizar/index.vue?782b","webpack:///src/views/testerealizar/index.vue","webpack:///./src/views/testerealizar/index.vue?7aec","webpack:///./src/views/testerealizar/index.vue","webpack:///./src/views/acessonegado/index.vue?adcc","webpack:///src/views/acessonegado/index.vue","webpack:///./src/views/acessonegado/index.vue?89d0","webpack:///./src/views/acessonegado/index.vue","webpack:///./src/views/contratarconfirmacao/index.vue?69d3","webpack:///src/views/contratarconfirmacao/index.vue","webpack:///./src/views/contratarconfirmacao/index.vue?5c0d","webpack:///./src/views/contratarconfirmacao/index.vue","webpack:///./src/router/generated.js","webpack:///./src/router/index.js","webpack:///./src/common/directives/canaccess.js","webpack:///./src/main.js","webpack:///./src/template/form-detalhe-atualizacao.vue?03b7","webpack:///./src/common/components/pagination.vue?cd87","webpack:///src/common/components/pagination.vue","webpack:///./src/common/components/pagination.vue?2354","webpack:///./src/common/components/pagination.vue","webpack:///./src/common/base.js","webpack:///./src/assets/js/tinymce/plugins/lists/plugin.js","webpack:///./src/common/global.js","webpack:///./src/common/auth.js","webpack:///./src/assets/loader.png","webpack:///./src/common/directives/select.js","webpack:///./src/App.vue?e652","webpack:///./src/assets/js/tinymce/plugins/image/plugin.js","webpack:///./src/assets/js/tinymce/themes/modern/theme.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","44","jsonpScriptSrc","p","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","head","appendChild","then","installedChunkData","promise","script","charset","timeout","nc","setAttribute","setTimeout","onScriptComplete","clearTimeout","chunk","errorType","realSrc","error","undefined","all","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","oe","console","jsonpArray","window","oldJsonpFunction","bind","slice","jquery__WEBPACK_IMPORTED_MODULE_18__","on","isModal","hasClass","removeAttr","log","vue__WEBPACK_IMPORTED_MODULE_4__","directive","twoWay","inserted","el","binding","vnode","_lastfileuploaded","_interval","_hascustomtag","_pluginWindowsCustomTag","editor","windowManager","open","title","body","label","onsubmit","insertContent","description","findVModelName","directives","find","expression","setVModelValue","prop","eval","hascustomtag","tinymce","PluginManager","add","addButton","text","icon","onclick","addMenuItem","context","init","mode","language_url","plugins","height","media_live_embeds","toolbar","extended_valid_elements","custom_elements","image_advtab","file_picker_types","setup","setInterval","id","getBody","innerHTML","clearInterval","getContent","replace","relative_urls","remove_script_host","media_poster","media_filter_html","automatic_uploads","images_upload_url","_global__WEBPACK_IMPORTED_MODULE_6__","URL_DOWNLOAD","images_upload_handler","blobInfo","success","failure","_api__WEBPACK_IMPORTED_MODULE_5__","END_POINT_PORTAL_CORPORATIVO","upload","blob","audio_template_callback","source","sourcemime","altsource","altsourcemime","video_template_callback","indexOf","source1","source1mime","width","poster","source2","source2mime","file_picker_callback","cb","meta","filetype","input","onchange","file","files","reader","FileReader","Date","getTime","blobCache","activeEditor","editorUpload","base64","split","create","blobUri","readAsDataURL","click","size","alert","opera","webkit","ie","ie11","ie12","gecko","mac","iDevice","android","fileApi","phone","tablet","windowsPhone","noop","x","_i","arguments","compose","fa","fb","constant","identity","curry","f","args","Array","newArgs","concat","die","msg","never","always","never$1","always$1","none","NONE","eq","isNone","call$$1","thunk","noop$$1","nul","undef","me","fold","is","isSome","getOr","getOrThunk","getOrDie","getOrNull","getOrUndefined","or","orThunk","map","ap","each","flatten","exists","forall","filter","equals","equals_","toArray","toString","freeze","some","a","constant_a","self","v","optfab","fab","elementEq","b","from","Option","typeOf","t","_home_vsts_work_1_s_CNA_Jobs_Ui_node_modules_babel_runtime_helpers_builtin_es6_typeof__WEBPACK_IMPORTED_MODULE_17__","isPrototypeOf","String","isType","isString","isObject","isArray","isNull","isBoolean","isFunction","isNumber","rawIndexOf","pIndexOf","fastIndex","xs","slowIndex","slowIndexOf","contains","pred","findIndex","len","eachr","partition","pass","fail","arr","foldr","acc","foldl","output","reverse","difference","a1","a2","mapToObject","sort","comparator","copy","last","from$1","Global","Function","path","parts","scope","unsafe","actual","$_89i3w1cjkmcwk2c","url","createObjectURL","revokeObjectURL","u","$_ci16mbjkmcwk2b","nav","navigator","userAgent","matchMediaQuery","query","matchMedia","matches","test","appName","exec","requestAnimationFramePromise","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document$1","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains$1","contentEditable","parseInt","match","$_cvvl9iajkmcwk25","iOS","transparentSrc","caretAfter","range","getSelection","documentMode","ceFalse","cacheSuffix","container","overrideViewPort","experimentalShadowDom","canHaveCSP","desktop","fn","thisArg","this","TypeError","_state","_value","_deferreds","doResolve","asap","immediateFn","setImmediate","handle","deferred","onFulfilled","onRejected","ret","newValue","finale","Handler","done","reason","ex","catch","remaining","res","val","constructor","race","values","promiseObj","requestAnimationFrame$$1","callback","element","requestAnimationFrameFunc","requestAnimationFrame","vendors","featurefill","wrappedSetTimeout","time","wrappedSetInterval","wrappedClearTimeout","wrappedClearInterval","debounce","timer","func","stop","$_3l01gcijkmcwk99","setEditorTimeout","removed","setEditorInterval","throttle","eventExpandoPrefix","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","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","mouseenter","mouseleave","executeHandlers","evt","callbackList","names","fakeName","nativeHandler","defaultNativeHandler","nodeType","current","related","currentTarget","relatedTarget","parentNode","unbind","ci","eventMap","fire","defaultView","parentWindow","clean","children","destroy","cancel","Event","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","strundefined","MAX_NEGATIVE","hasOwn","pop","push_native","push$1","slice$1","indexOf$1","elem","booleans","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","Sizzle","selector","results","seed","groups","old","nid","newContext","newSelector","getElementById","getElementsByClassName","qsa","nodeName","toLowerCase","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","markFunction","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","node","hasCompare","parent$$1","getTop","getById","attrId","tmp","className","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","bp","unshift","expr","elements","matchesSelector","attr","attrHandle","getAttributeNode","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir","first"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","parent","header","button","length$$1","even","odd","lt","gt","nth","radio","checkbox","password","image","submit","reset","tokens","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","filters","parseOnly","soFar","preFilters","cached","token","compiled","isArray$1","obj","array","each$1","map$1","out","item","index","filter$1","indexOf$2","reduce","collection","iteratee","accumulator","findIndex$1","predicate","find$1","last$1","$_9g1fibmjkmcwkbu","whiteSpaceRegExp","trim","str","makeMap","items","delim","sp","ns","cn","scn","de","createNS","onCreate","extend","static","ext","walk","resolve$1","explode","_addCacheSuffix","$_4ujg4tljkmcwkbk","grep","inArray","push$2","slice$2","rquickExpr$1","Event$$1","skipUniques","isDefined","isString$1","isWindow","createFragment","html","fragDoc","frag","createDocumentFragment","domManipulate","targetNodes","sourceItem","getElementDocument","DomQuery","makeArray","wrap","wrapper","lastParent","newWrapper","cloneNode","insertBefore","numericCssMap","booleanMap","propFix","for","class","readonly","cssFix","float","attrHooks","cssHooks","whiteSpaceRegExp$1","trim$1","each$2","charAt","nodes","unique","hook","set","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","until","sibling","siblingName","firstSibling","parents","next","prev","contentDocument","contentWindow","parentsUntil","nextUntil","prevUntil","overrideDefaults","defaults","sub","appendHooks","targetHooks","hooks","maxlength","maxLength","cssText","opacity","zoom","called","firstMatch","regexes","find$2","agent","major","minor","group","Number","nu","detect","versionRegexes","cleanedAgent","unknown","$_2kio3msjkmcwkcv","edge","chrome","ie$1","opera$1","firefox","safari","isBrowser","unknown$1","nu$1","version","info","isEdge","isChrome","isIE","isOpera","isFirefox","isSafari","$_ei4lq0rjkmcwkcq","windows","ios","android$1","linux","osx","solaris","freebsd","isOS","unknown$2","nu$2","isWindows","isiOS","isAndroid","isOSX","isLinux","isSolaris","isFreeBSD","$_85w4ndtjkmcwkcx","DeviceType","os","browser","isiPad","isiPhone","isAndroid3","isAndroid4","isTablet","isTouch","isPhone","iOSwebview","isWebView","detect$1","candidates","candidate","search","detectBrowser","browsers","detectOs","oses","$_6qxoukvjkmcwkd5","contains$2","substr","trim$2","normalVersionRegex","checkContains","uastring","monstrosity","$_6vxr68wjkmcwkdc","detect$2","deviceType","$_c5ox8vqjkmcwkco","detect$3","$_b1ykk4ojkmcwkcj","fromHtml","div","hasChildNodes","fromDom","fromTag","fromText","createTextNode","dom","fromPoint","elementFromPoint","Element$$1","$_c8e5uh12jkmcwke2","ATTRIBUTE","Node","ATTRIBUTE_NODE","CDATA_SECTION","CDATA_SECTION_NODE","COMMENT","COMMENT_NODE","DOCUMENT","DOCUMENT_NODE","DOCUMENT_TYPE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT","DOCUMENT_FRAGMENT_NODE","ELEMENT","ELEMENT_NODE","TEXT","TEXT_NODE","PROCESSING_INSTRUCTION","PROCESSING_INSTRUCTION_NODE","ENTITY_REFERENCE","ENTITY_REFERENCE_NODE","ENTITY","ENTITY_NODE","NOTATION","NOTATION_NODE","isType$1","isComment","isElement","isText","isDocument","$_2xwdjv11jkmcwke0","each$3","props","k","map$2","tupleMap","tuple","bifilter","branch","rawSet","setAll","attrs","hasAttribute","hasNone","transferOne","destination","transfer","$_29helg15jkmcwkf0","inBody","$_g4uup916jkmcwkfg","isSupported","$_crv2n17jkmcwkfl","internalSet","setProperty","internalRemove","set$1","setAll$1","setOptions","get$1","styles","getUnsafeProperty","getRaw","raw","getAllRaw","ruleName","isValidValue","remove$1","preserve","oldStyles","restore","sourceDom","targetDom","reflow","offsetWidth","transferOne$1","transfer$1","$_4enzit13jkmcwke5","Immutable","fields","struct","toArray$1","recurse","$_ea405s1djkmcwkgi","documentPositionPreceding","DOCUMENT_POSITION_PRECEDING","documentPositionContainedBy","DOCUMENT_POSITION_CONTAINED_BY","$_ggq6431fjkmcwkgt","is$1","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","bypassSelector","childElementCount","one","querySelector","$_4jv6d81gjkmcwkgv","e1","e2","isEqualNode","member","regularContains","d1","d2","ieContains","contains$3","$_e4hu6h1ejkmcwkgj","owner","findIndex$2","kin","isRoot","rawParent","siblings","filterSelf","offsetParent","prevSibling","previousSibling","prevSiblings","nextSiblings","child","childNodesCount","spot","leaf","cs","$_ca6pc118jkmcwkfs","browser$1","firstElement","getTableCaptionDeltaY","caption","bodyTop","offsetTop","captionTop","captionHeight","offsetHeight","getPos","rootElm","offsetLeft","$_5o0xi0njkmcwkbz","nu$3","baseFn","callbacks","map$$1","nCallback","isReady","run","cbs","pure$1","LazyValue","pure","bounce","nu$4","aFutureB","anonBind","futureB","toLazy","pure$2","Future","par","asyncValues","asyncValue","par$1","futures","value$1","opt","onValue","toOption","isValue","isError","message","onError","Result","StyleSheetLoader","document$$1","settings","maxLoadTime","idCount","loadedStates","appendToHead","load","loadedCallback","errorCallback","link","startTime","passed","status","failed","isOldWebKit","webKitChunks","wait","testCallback","waitCallback","waitForWebKitLinkLoaded","styleSheet","styleSheets","ownerNode","owningElement","waitForGeckoLinkLoaded","cssRules","sheet","async","defer","loadF","unbox","loadAll","urls","TreeWalker","startNode","rootNode","findSibling","startName","shallow","findPreviousNode","prev2","namedEntities","baseEntities","reverseEntities","blocks","voids","tableCells","tableSections","textBlocks","headings","listItems","lists","wsElements","lazyLookup","lookup","isHeading","isBlock","isInline","isBr","isTextBlock","isList","isListItem","isVoid","isTableSection","isTableCell","isWsPreserveElement","isNodeType","isElement$1","matchNodeNames","matchStyleValues","cssValue","computed","hasPropValue","propName","propValue","attrName","attrValue","hasAttributeValue","isBogus","isBogusAll","isTable","tagName","hasContentEditableState","isText$1","isComment$1","isDocument$1","isBr$1","isContentEditableTrue","isContentEditableFalse","$_bjermr1rjkmcwkij","surroundedBySpans","previousIsSpan","nextIsSpan","isBookmarkNode","trimNode","trimmedLength","$_br9sxm1pjkmcwki4","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","\"","'","<","&","`","<",">","&",""","'","nativeDecode","buildEntitiesLookup","radix","chr","entity","encodeRaw","encodeAllRaw","encodeNumeric","charCodeAt","encodeNamed","entities","getEncodeFunc","entitiesMap","encodeNamedAndNumeric","encodeCustomNamed","nameMap","named","numeric","decode","$_33qwr1sjkmcwkip","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","compileElementMap","*","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","valid_children","dd","dt","li","td","th","tr","tbody","thead","tfoot","legend","area","param","parentsRequired","invalid_elements","getValidStyles","getInvalidStyles","getValidClasses","getBoolAttrs","getBlockElements","getTextBlockElements","getTextInlineElements","getShortEndedElements","getSelfClosingElements","getNonEmptyElements","getMoveCaretBeforeOnEnterElements","getWhiteSpaceElements","getSpecialElements","isValidChild","isValid","attrPatterns","getCustomElements","toHex","g","hex","Styles","encodingItems","rgbRegExp","urlOrStrRegExp","styleRegExp","trimRightRegExp","encodingLookup","invisibleChar","color","parse","isEncoded","urlConverter","url_converter","urlConverterScope","url_converter_scope","compress","suffix","noJoin","right","bottom","box","canCompress","compress2","encode","keepSlashes","decodeSingleHexSequence","escSeq","decodeHexSequences","processUrl","url2","url3","str2","allow_script_urls","scriptUrl","allow_svg_data_urls","lastIndex","border","serialize","serializeStyles","styleList","styleMap","each$5","grep$1","simpleSelectorRe","whiteSpaceRegExp$2","setupAttrHooks","getContext","keepValues","keep_values","keepUrlHook","$elm","updateInternalStyleAttr","rawValue","findNodeIndex","normalized","lastNodeType","DOMUtils","_this","addedStyles","counter","stdMode","boxModel","styleSheetLoader","boundEvents","ownEvents","proxy","$","getRoot","getElementsByName","$$","getAttrib","defaultVal","getAttribs","setAttrib","originalValue","onSetAttrib","attrElm","deep","clone_1","root_element","getViewPort","argWin","actWin","pageXOffset","pageYOffset","w","innerWidth","clientWidth","h","innerHeight","clientHeight","setStyle","update_styles","setStyles","stylesArg","getStyle","getSize","getRect","elms","getParents","collect","selectorVal","getParent","_findSib","getNext","getPrev","setAttribs","setHTML","canHaveHTML","parentElm","newElm","createHTML","outHtml","keepChildren","$node","removeAllAttribs","removeAttributeNode","parseStyle","serializeStyle","addStyle","styleElm","DOM","loadCSS","cls","isHidden","uniqueId","getOuterHTML","outerHTML","setOuterHTML","insertAfter","reference","referenceNode","oldElm","replaceChild","rename","attrNode","findCommonAncestor","pe","ps","rgbVal","isEmpty","walker","brCount","bogusVal","createRng","createRange","splitElm","replacementElm","bef","aft","pa","setStart","setEnd","extractContents","getContentEditable","getContentEditableParent","isChildOf","dumpRng","startContainer","startOffset","endContainer","endOffset","DOMUtils$1","each$6","grep$2","isFunction$1","ScriptLoader","QUEUED","LOADING","LOADED","FAILED","states","queue","scriptLoadedCallbacks","queueLoadedCallbacks","loading","loadScript","onreadystatechange","isDone","markDone","loadQueue","loadScripts","scripts","failures","execCallbacks","loadingScripts","notifyCallbacks","each$7","AddOnManager","_listeners","instance","dependencies","requireLangPack","languages","language","languageLoad","addOn","listener","createUrl","baseUrl","dep","resource","addComponents","pluginName","pluginUrl","loadDependencies","addOnUrl","deps","newUrl","urlString","baseURL","substring","lastIndexOf","waitFor","ThemeManager","marker","appendAt","wrap$1","$_f4qt4v1yjkmcwkl2","before$1","after$1","prepend$1","append$1","$_1ev7t1xjkmcwkky","rogue","remove$2","$_eualm21wjkmcwkku","first$1","rate","last$3","Cell","initial","Toggler","turnOff","turnOn","active","toggle","isOn","read","remove$3","$_4m1njo26jkmcwkme","supports","classList","get$2","add$1","clazz","remove$4","$_ewhsr825jkmcwkm2","add$2","cleanClass","remove$5","toggle$1","toggler","hasClasslist","has$1","$_ftm4v023jkmcwklz","all$1","descendants","ancestors","siblings$1","children$1","$_733l9k28jkmcwkmj","all$2","ancestors$1","siblings$2","children$2","descendants$1","$_2gqm0n27jkmcwkmi","ClosestOrAncestor","ancestor","first$2","descendant","sibling$1","child$1","descend","$_253nd92ajkmcwkmp","first$3","ancestor$1","sibling$2","child$2","descendant$1","closest$1","$_4ki4d929jkmcwkmn","annotation","dataAnnotation","dataAnnotationId","identify","annotationName","rng","selection","getRng","an","newStart","getAttr","uid","findMarkers","isAnnotation","findAll","markers","directory","nodesAlready","registry","changeCallbacks","initData","listeners","previous","withCallbacks","updateCallbacks","callbackMap","outputData","fireCallbacks","fireNoAnnotation","onNodeChange","annotations","_a","addListener","setup$1","identifyParserNode","span","optAnnotation","serializer","addNodeFilter","spans","persistent","create$1","register","generate","date","floor","add$3","classes","remove$6","toggle$2","hasAll","hasAny","getNative","get$3","$_dw1myr2hjkmcwko1","clone$1","original","shallowAs","copy$1","cloneChildren","mutate","$_44uvy22ijkmcwko5","slice$3","constant$1","negate","compose$2","and","curry$1","tempArgs","noop$1","$_fl2rax2ljkmcwkot","ZWSP","isZwsp","trim$3","$_cadvcr2pjkmcwkph","isElement$2","isText$2","isCaretContainerBlock","isCaretContainerInline","isCaretContainer","hasContent","insertInline","textNode","endsWithCaretContainer","splitText","startsWithCaretContainer","isBeforeInline","isAfterInline","createBogusBr","br","insertBlock","blockName","blockNode","trimBogusBr","brs","lastBr","showCaretContainerBlock","caretContainer","isRangeInCaretContainerBlock","isContentEditableTrue$1","isContentEditableFalse$1","isBr$2","isText$3","isInvalidTextElement","isAtomicInline","isTable$1","isCaretContainer$1","isCaretCandidate","isNonUiContentEditableFalse","isUnselectable","isInEditable","isAtomicContentEditableFalse","isAtomic","isEditableCaretCandidate","round","clone$2","rect","collapse","toStart","isEqual","rect1","rect2","isValidOverflow","overflowY","min","isAbove","isBelow","containsXY","overflowX","outer","inner","getOverflow","getSelectedNode","getNode","extendingChars","isExtendingChar","ch","liftN","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","isAtStart","toRange","isVisible","isEqual$$1","getNode$$1","fromRangeStart","fromRangeEnd","pos1","pos2","isTextPosition","isElementPosition","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","$_aw3zi52jjkmcwkoa","getUndoBookmark","CARET_ID","isCaretNode","getParentCaretContainer","isElement$4","isText$6","removeNode","getNodeValue","setNodeValue","trimCount","trimmedText","removeUnchanged","remove$7","removeTextAndReposition","removeElementAndReposition","newPosition","removeTextCaretContainer","removeElementCaretContainer","removeAndReposition","caretContainerNode","$_xl2r331jkmcwkri","isContentEditableTrue$2","isContentEditableFalse$3","showCaret","direction","scrollIntoView","_selectionOverrides","getNodeRange","selectNode","renderCaretAtRange","normalizedRange","normalizeRange","caretPositionNode","caretPositionBeforeNode","ceRoot","renderRangeCaret","caretRange","BreakType","isContentEditableFalse$4","isText$7","isElement$5","isBr$4","isCaretCandidate$2","isAtomic$1","isEditableCaretCandidate$1","nodeAtIndex","getCaretCandidatePosition","isForwards","isBackwards","isBrBeforeBlock","findCaretPosition","isInSameBlock","startPos","nextNode","innerNode","rootContentEditableFalseElm","findNode","CaretWalker","Forwards","Backwards","flip","positions","walk$1","caretWalker","getBreakType","currentPos","nextPos","Br","Block","Wrap","getPositionsUntil","breakType","breakAt","Eol","getAdjacentLinePositions","getPositionsUntilBreak","findClosestHorizontalPositionFromPoint","newPos","lastPos","lastRect","newRect","lastDist","abs","newDist","findClosestHorizontalPosition","targetRect","getPositionsUntilPreviousLine","getPositionsUntilNextLine","getPositionsAbove","getPositionsBelow","getFirstLinePositions","$_1m3f3j2yjkmcwkqg","firstPositionIn","getLastLinePositions","lastPositionIn","deflate","delta","getCorners","getYAxisValue","tds","cell","findClosestCorner","corners","newCorner","oldCorner","oldDist","sqrt","getClosestCell","isTargetCorner","cells","corner","getBottomValue","getTopValue","isAbove$1","isBelow$1","getClosestCellAbove","getClosestCellBelow","findClosestPositionInAboveCell","findClosestPositionInBelowCell","getPos$1","fireScrollIntoViewEvent","alignToTop","scrollEvent","scrollElementIntoView","viewPort","viewPortY","viewPortH","offsetY","scrollContainer","getScrollContainer","getWin","scrollTo","getViewPortRect","scrollBy","dx","dy","scrollRangeIntoView","rngRect","bodyRect","overflow","margin","$_a6610x37jkmcwkt5","getBodySetting","getParam","bodyObj","getIframeAttrs","getDocType","getDocumentBaseUrl","getBodyId","getBodyClass","getContentSecurityPolicy","shouldPutBrInPre","getForcedRootBlock","block","getForcedRootBlockAttrs","getBrNewLineSelector","getNoNewLineSelector","shouldKeepStyles","shouldEndContainerOnEmptyBlock","getFontStyleValues","getFontSizeClasses","$_2ycm1438jkmcwkta","browser$2","isFakeCaretTableBrowser","moveToRange","setRng","isAtTableCellLine","lineInfo","breakPos","isAtFirstTableCellLine","isAtLastTableCellLine","isCaretAtStartOrEndOfTable","caretPos","positionIn","navigateHorizontally","getClosestAbovePosition","getClosestBelowPosition","getTable","renderBlock","down","forcedRootBlock","undoManager","transact","moveCaret","last$$1","navigateVertically","moveH","moveV","isContentEditableFalse$5","isTableCell$1","getAbsoluteClientRect","scrollX","scrollY","rootRect","trimInlineCaretContainers","contentEditableFalseNodes","deleteData","FakeCaret","cursorInterval","lastVisualCaret","caret","caretState","startBlink","reposition","getCss","isFakeCaretTarget","isContentEditableFalse$6","isBlockLike","isCaretContainer$2","isCaretContainerBlock$1","curry$2","isElement$6","isCaretCandidate$3","skipCaretContainers","predicateFn","getParentBlock","caretPosition1","caretPosition2","getChildNodeAtRelativeOffset","relativeOffset","beforeAfter","setStartBefore","setEndBefore","setStartAfter","isNodesInSameBlock","node1","node2","lean","before$2","after$2","leanLeft","leanRight","isNextToContentEditableFalse","isNextToTable","getRelativeCefElm","getNormalizedRangeEndPoint","isBeforeContentEditableFalse","isAfterContentEditableFalse","isBeforeTable","isAfterTable","walkToPositionIn","position","fromPosition","afterElement","isBeforeOrStart","isAfterOrEnd","isBeforeAfterSameElement","to","isAtBr","shouldSkipPosition","navigate","nextPosition","prevPosition","isStringPathBookmark","isRangeBookmark","isIdBookmark","isIndexBookmark","isPathBookmark","addBogus","resolveCaretPositionBookmark","insertZwsp","tryFindRangePosition","padEmptyCaretContainer","setEndPoint","isValidTextNode","restoreEndPoint","appendData","alt","o1","o2","resolvePaths","resolveId","endPos","spos","epos","resolveIndex$1","resolve$3","$_1fx23n2wjkmcwkq6","getBookmark$1","isBookmarkNode$1","$_e4btcc2vjkmcwkq3","isInlineBlock","moveStart","isWhiteSpaceNode","getNonWhiteSpaceSibling","inc","isTextBlock$1","ed","replaceVars","vars","isEq","str1","normalizeStyleValue","getTextDecoration","decoration","getParents$1","$_dli08w3ajkmcwktg","isBookmarkNode$2","getParents$2","isWhiteSpaceNode$1","isTextBlock$2","findLeaf","excludeTrailingWhitespace","isBogusBr","findParentContentEditable","findSpace","findWordEndPoint","lastTextNode","findSelectorEndPoint","format","curFormat","findBlockEndPoint","scopeRoot","findParentContainer","block_expand","expandRng","endPoint","expand","$_97afwh2ujkmcwkpw","each$8","getEndChild","walk$2","startPoint","exclude","collectSiblings","endNode","findEndPoint","walkBoundary","$_cuckrv3bjkmcwktk","zeroWidth","NodeValue","getOption","getOptionIE10","getOptionSafe","api","get$4","set$2","$_ckzc193ejkmcwktu","isZeroWidth","wrapName","__rest","getOwnPropertySymbols","applyWordGrab","annotate","decorate","_b","newWrappers","master","_c","_d","_e","finishWrapper","getOrOpenWrapper","processElements","processElement","ctx","processNodes","annotateWithBookmark","initialRng","Annotator","changes","annotationChanged","getAll","hasOnlyOneChild","isPaddingNode","isPaddedEmptyBlock","blockElements","isEmptyFragmentElement","nonEmptyElements","isListFragment","fragment","cleanupDomFragment","domFragment","toDomFragment","listItems$1","isPadding","isListItemPadded","isEmptyOrPadded","trimListItems","getParentLi","parentBlock","isParentBlockLi","getSplit","beforeRng","afterRng","cloneContents","findFirstIn","newCaretPos","findLastOf","insertMiddle","insertAtCaret","liTarget","liElms","BEGINNING","END","isAt","$_e6q31u3jjkmcwkvd","each$9","ElementUtils","attribs","compareObjects","obj1","obj2","getLastChildren","rawNode","removeTrailingBr","allBrs","fillWithPaddingBr","isPaddingContents","isPaddedElement","trimBlockTrailingBr","lastChildPrevSibling","$_zygeg3ljkmcwkvo","makeMap$3","Writer","indent","indentBefore","indentAfter","htmlOutput","indent_before","indent_after","entity_encoding","element_format","cdata","comment","pi","doctype","HtmlSerializer","writer","validate","handlers","sortedAttrs","elementRule","handler","shortEnded","createRange$1","normalizeBlockSelectionRange","commonAncestorContainer","newEndPos","normalize","$_bx30le3ojkmcwkw9","isTableCell$2","validInsertion","setContent","trimBrsFromTableCell","insertHtmlAtCaret","details","parser","bookmarkHtml","merge","textInlineElements","trimOrPaddLeftRight","hasSiblingText","trimNbspAfterDeleteAndPaddValue","reduceInlineTextElements","root_1","elementUtils_1","testNode","markFragmentElements","umarkFragmentElements","isPartOfFragment","canHaveChildren","moveSelectionToMarker","parentEditableFalseElm","nextRng","getContentEditableFalseParent","findNextCaretRng","data-mce-bogus","paste","caretElement","parentElement","getDoc","execCommand","parserArgs","insert","showBlockCaretContainer","invalid","getStart","addVisual","processValue","insertAtCaret$1","$_g2yj883ijkmcwkv2","sectionResult","detection","mobilePlugins","defaultMobileSettings","theme","normalizePlugins","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","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","isArrayOf","strongRtl","hasStrongRtl","isInlineTarget","isRtl","findInlineParents","findRootInline","hasSameParentBlock","block1","block2","isAtZwsp","normalizePosition","normalizeForwards","normalizeBackwards","$_crqmqb3tjkmcwkxd","isBeforeRoot","getParentBlock$1","placeCaretInEmptyBody","setCursorLocation","paddEmptyBody","willDeleteLastPositionInElement","fromPos","firstPos","normalizedFirstPos","normalizedLastPos","normalizedFromPos","prevPos","$_8z75uj3sjkmcwkx3","any","ancestor$2","sibling$3","child$3","descendant$2","closest$2","$_6rijl23xjkmcwl24","hasWhitespacePreserveParent","rootElement","isWhitespace","isNamedAnchor","isContent","isBookmark","isBogus$2","isBogusAll$1","isEmptyNode","targetNode","isEmpty$1","$_1jnfso3wjkmcwl1v","BlockPosition","BlockBoundary","getBlockPosition","containerElm","isDifferentBlocks","blockBoundary","hasSameParent","parent1","parent2","isEditable","skipLastBr","blockPosition","lastPositionInBlock","readFromRange","fromBlockPos","toBlockPos","blockPos","read$1","$_2x2kic3rjkmcwkwi","dropLast","parentsUntil$1","parents$1","parentsAndSelf","$_cir6zl3zjkmcwl2j","getChildrenUntilBlockBoundary","extractChildren","trimBr","removeEmptyRoot","findParentInsertPoint","toBlock","getInsertionPoint","fromBlock","mergeBlockInto","children_1","mergeBlocks","$_ezyxdl3yjkmcwl27","backspaceDelete","$_1wrlyf3qjkmcwkwe","deleteRangeMergeBlocks","deleteContents","isRawNodeInTable","isSelectionInTable","isEverythingSelected","noPrevious","noNext","emptyEditor","deleteRange","backspaceDelete$1","$_egxtcx40jkmcwl2q","generate$1","cases","constructors","adt","acase","argLength","branches","branchKeys","allReqd","reqKey","params","Adt","isCompoundElement","DeleteAction","moveToElement","moveToPosition","isAtContentEditableBlockCaret","caretLocation","isDeleteFromCefDifferentBlocks","inSameBlock","deleteEmptyBlockOrMoveToCef","toCefElm","blockElm","findCefPosition","getContentEditableBlockAction","skipMoveToActionFromInlineCefToContent","deleteAction","getContentEditableAction","read$2","needsReposition","beforeOrStartOf","afterOrEndOf","getPreviousSiblingCaretPosition","getNextSiblingCaretPosition","findCaretPositionBackwardsFromElm","startPosition","findCaretPositionForwardsFromElm","findCaretPositionBackwards","findCaretPositionForward","findCaretPosition$1","findCaretPosOutsideElmAfterDelete","setSelection","eqRawNode","isBlock$2","paddEmptyBlock","deleteNormalized","afterDeletePosOpt","afterDeletePos","prevNode","deleteElement","normalizedAfterDeletePos","paddPos","$_4yq1i444jkmcwl3w","deleteElement$1","hideFakeCaret","backspaceDeleteCaret","deleteOffscreenSelection","backspaceDeleteRange","selectedElement","getContentEditableRoot","paddEmptyElement","backspaceDelete$2","$_1hyiiy41jkmcwl2z","isText$8","startsWithCaretContainer$1","endsWithCaretContainer$1","createZwsp","insertBefore$1","insertData","newNode","insertAfter$1","insertInline$1","insertInlineBefore","insertInlineAfter","insertInlinePos","isPosCaretContainer","caretNode","renderCaret","$_efgx6546jkmcwl4n","evaluateUntil","fns","$_8hyv6o49jkmcwl58","Location","rescope","before$3","nPos","isNotInsideFormatCaretContainer","findInsideRootInline","after$3","isValidLocation","getElement","readLocation","getName","outside","inside","isEq$1","location1","location2","betweenInlines","fromInline","toInline","skipNoMovement","fromLocation","toLocation","findLocationTraverse","findLocationSimple","findLocation","$_gau9ep48jkmcwl4x","prevLocation","nextLocation","hasSelectionModifyApi","getSel","modify","moveRel","moveByWord","$_dessn94bjkmcwl5p","setCaretPosition","isFeatureEnabled","inline_boundaries","setSelected","renderCaretLocation","findLocation$1","toggleInlines","selectedInlines","targetInlines","safeRemoveCaretContainer","composing","renderInsideInlineCaret","inlines","move","moveWord","setupSelectedState","moveNextWord","movePrevWord","$_dl6t9m4ajkmcwl5b","isFeatureEnabled$1","rangeFromPositions","hasOnlyTwoOrLessPositionsLeft","setCaretLocation","location$$1","deleteFromTo","ignore","nodeChanged","rescope$1","backspaceDeleteCollapsed","toPosition","backspaceDelete$3","$_dqvreg45jkmcwl4e","tableCellRng","tableSelection","removeTable","emptyCells","isRootFromElement","getClosestCell$1","getClosestTable","isExpandedCellRng","cellRng","getTableFromCellRng","startParentTable","endParentTable","getTableCells","getCellRangeFromStartTable","endCell","partialSelection","startCell","isWithinSameTable","getCellRng","getTableSelectionFromCellRng","getTableSelectionFromRng","getCellIndex","getSelectedCells","startIndex","endIndex","getAction","getActionFromCells","getActionFromRange","$_2x2sml4djkmcwl68","getRanges","ranges","rangeCount","getRangeAt","getSelectedNodes","hasMultipleRanges","$_admly54fjkmcwl6u","getCellsFromRanges","getCellsFromElement","selectedCells","getCellsFromElementOrRanges","rangeCells","getCellsFromEditor","$_7q5gk44ejkmcwl6p","deleteTableElement","deleteCellRange","action","deleteCaptionRange","emptyElement","deleteTableRange","startElm","getParentCaption","deleteRange$1","getParentCell","deleteBetweenCells","fromCell","toCell","isDeleteOfLastCharPos","fromCaption","emptyCaretCaption","validateCaretCaption","toCaption","deleteCaretInsideCaption","deleteCaretCells","deleteCaretCaption","deleteCaret","backspaceDelete$4","$_5lrlvq4cjkmcwl5t","nativeCommand","command","deleteCommand","forwardDeleteCommand","$_3ahn8y3pjkmcwkwc","getSpecifiedFontProp","getProperty","round$1","number","precision","factor","pow","toPt","fontSize","normalizeFontFamily","fontFamily","getComputedFontProp","getFontProp","$_3qs0f64hjkmcwl74","getFontSize","getFontFamily","findFirstCaretElement","isRangeAtStartOfNode","getCaretElement","fromFontSizeNumber","fontSizeNumber","fontSizes","fontClasses","fontNameAction","formatter","fontNameQuery","fontSizeAction","fontSizeQuery","isEq$2","rng1","$_axtxv74kjkmcwl84","findParent","hasParent","hasParentWithName","isTable$2","isTableCell$3","isCeFalseCaretContainer","hasBrBeforeAfter","isPrevNode","hasContentEditableFalseParent","findTextNodeRelative","isAfterNode","lastInlineElement","parentBlockContainer","normalizeEndPoint","directionLeft","normalize$1","normRng","$_21c07i4jjkmcwl7w","hasRightSideContent","scrollToBr","brElm","moveSelectionToBr","extraBr","insertBrAtCaret","isAfterLastNodeInContainer","containerBlock","containerBlockName","isControlKey","ctrlKey","insertBrBefore","insertBrAfter","hasBrAfter","isBeforeBr","isAnchorLink","isInsideAnchor","readInlineAnchorLocation","insertBrOutsideAnchor","anchorLocation","$_dc07up4ijkmcwl7n","cata","subject","onBefore","onOn","onAfter","situ","$_1s5vuk4njkmcwl8r","type$1","domRange","exact","range$1","exactFromRange","simRange","soffset","finish","foffset","getStart$1","startSitu","finishSitu","$_2v8ne64mjkmcwl8l","browser$3","clamp","normalizeRng","isOrContains","isRngInRoot","shouldStore","nativeRangeToSelectionRange","readRange","getBookmark$2","bookmarkToNativeRng","store","newBookmark","storeNative","$_39c3zs4ljkmcwl86","indentElement","useMargin","unit","indentStyleName","styleValue","indentUnit","indentValue","queryCommandState","getSelectedBlocks","each$10","extend$2","map$3","inArray$2","EditorCommands","commands","ui","customCommand","skip_focus","quirks","queryCommandValue","addCommands","commandList","addCommand","queryCommandSupported","addQueryStateHandler","addQueryValueHandler","hasCustomCommand","execNativeCommand","isFormatMatch","toggleFormat","storeSelection","restoreSelection","mceResetDesignMode,mceBeginUndoLevel","mceEndUndoLevel,mceAddUndoLevel","Cut,Copy,Paste","queryCommandEnabled","translate","notificationManager","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","beforeFire","once","extra","bindingName","hi","isNative","customEventRootDelegates","getEventDispatcher","_eventDispatcher","toggleNativeEvent","$_ed2ug44qjkmcwl97","bubble","hasEventListeners","firePreProcess","firePostProcess","fireRemove","fireSwitchMode","fireObjectResizeStart","fireObjectResized","$_q3ric4tjkmcwl9q","setEditorCommandState","cmd","toggleReadOnly","controlSelection","hideResizeRect","setMode","getMode","initialized","isReadOnly","DOM$1","getEventTarget","eventName","event_root","eventRoot","isListening","hidden","fireEvent","bindEventDelegate","eventRootElm","delegate","delegates","editorManager","editors","EditorObservable","bindPendingEventDelegates","_pendingNativeEvents","unbindAllNativeEvents","getContainer","EditorObservable$1","each$11","explode$2","keyCodeLookup","f9","f10","f11","modifierNames","Shortcuts","shortcuts","pendingPatterns","parseShortcut","shortcut","keyCode","charCode","access","ctrl","createShortcut","desc","cmdFunc","subpatterns","hasModifier","altKey","isFunctionKey","matchShortcut","shiftKey","executeShortcutAction","any$1","ancestor$3","closest$3","sibling$4","child$4","descendant$3","$_szg1f4xjkmcwlad","focus$$1","blur$$1","blur","_doc","focusInside","$_468a0m4wjkmcwla6","getContentEditableHost","getCollapsedNode","getFocusInElement","normalizeSelection","focusBody","setActive","hasElementFocus","hasIframeFocus","iframeElement","hasInlineFocus","rawBody","hasFocus$1","focusEditor","refreshContentEditable","contentEditableHost","activateEditor","bookmarkRng","focus$1","skipFocus","$_e3v8sn4vjkmcwl9y","getProp","rawElm","getComputedSizeProp","getClientWidth","getClientHeight","getMarginTop","getMarginLeft","getBoundingClientRect$1","isInsideElementContentArea","bodyElm","transpose","deltaX","deltaY","isXYInContentArea","targetElm","transposedPoint","fromDomSafe","isEditorAttachedToDom","rawContainer","getContentAreaContainer","$_8we2e850jkmcwlaw","NotificationManagerImpl","unimplemented","close","getArgs","NotificationManager","notifications","getImplementation","getNotificationManagerImpl","getTopNotification","progressBar","addNotification","notification","closeNotification","otherNotification","getNotifications","registerEvents","serviceMessage","service_message","WindowManagerImpl","confirm","getParams","setParams","WindowManager","getWindowManagerImpl","funcBind","fireOpenEvent","fireCloseEvent","addWindow","closeWindow","otherWindow","getTopWindow","getWindows","resolvePluginName","targetUrl","matchUrl","pluginUrlToMessage","plugin","displayNotification","displayError","_skinLoaded","uploadError","pluginLoadError","initError","console$$1","$_b9je0i54jkmcwlbe","PluginManager$1","XMLHttpRequest","Uploader","uploadStatus","pendingPromises","pathJoin","path1","path2","defaultHandler","progress","xhr","formData","withCredentials","credentials","onprogress","loaded","total","json","JSON","responseText","basePath","FormData","filename","send","noUpload","handlerSuccess","handlerFailure","resolvePending","uploadBlobInfo","openNotification","markPending","closeNotification_1","markUploaded","removeFailed","percent","isDefaultHandler","pendingUploadBlobInfo","uploadBlobs","blobInfos","isUploaded","isPending","Blob","properties","Uint8Array","requestAnimationFrame$1","atob","$_b0eesx5hjkmcwld6","blobUriToBlob","rejectWithError","responseType","response","parseDataUri","uri","decodeURIComponent","dataUriToBlob","uriToBlob","blobToDataUri","onloadend","$_7eufcj5djkmcwlcv","imageToBlobInfo","img","getByUri","dataUri","findFirst","cachedBlobInfo","getAllImages","ImageScanner","cachedPromises","images","imageInfo","newPromise","count$1","rnd","now","uuid","$_8flfjw5jjkmcwldd","BlobCache","mimeToExt","mime","mimes","image/jpeg","image/jpg","image/gif","image/png","toBlobInfo","removeByUri","UploadStatus","PENDING","UPLOADED","blobUriStatuses","createStatus","resultUri","hasBlobUri","getResultUri","EditorUpload","uploader","imageScanner","aliveGuard","cacheInvalidator","replaceString","replaceImageUrl","replacementUrl","replaceUrlInUndoStack","level","fragments","replaceImageUri","images_reuse_filename","data-mce-src","uploadImages","images_upload_base_path","images_upload_credentials","scanForImages","imageInfos","filteredResult","uploadInfo","images_replace_blob_uris","uploadImagesAuto","isValidDataUriImage","imgElm","images_dataimg_filter","resultItem","replaceBlobUris","source_view","isBlockElement","isValidTarget","hasBlockParent","shouldRemoveTextNode","addRootBlocks","rootBlockNode","tempNode","wrapped","rootNodeName","forced_root_block_attrs","setup$2","$_5utnj35ljkmcwldh","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","calculatePosition","bodyPosition","mousePosition","calc","$_7vqqhl5qjkmcwlfd","isContentEditableFalse$7","isContentEditableTrue$4","isDraggable","isValidDropTarget","targetElement","dragElement","cloneElement","cloneElm","createGhost","clonedElm","ghostElm","unselectable","contenteditable","padding","boxSizing","appendGhostToBody","moveGhost","maxX","maxY","removeElement","isLeftMouseButtonPressed","hasDraggableElement","applyRelPos","relX","start$1","ceElm","elmPos","screenX","screenY","scrollWidth","scrollHeight","relY","ghost","move$1","throttledPlaceCaretAt","placeCaretAt","movement","dragging","targetPos","getRawTarget","drop","targetClone_1","targetClone","removeDragState","stop$$1","bindFakeDragEvents","pageDom","dragStartHandler","dragHandler","dropHandler","dragEndHandler","rootDocument","blockIeDrop","realTarget","$_amfo0m5pjkmcwlf7","getNodeClientRects","toArrayWithNode","findUntil","walkUntil","isAboveFn","isBeflowFn","targetClientRect","line","aboveLineNumber","lineNumber","isLineNumber","upUntil","Up","downUntil","Down","positionsUntil","walkFn","isBelowFn","getClientRect","isAboveLine","isLine","isContentEditableFalse$8","findNode$1","distanceToRectLeft","distanceToRectRight","isInside","findClosestClientRect","oldClientRect","oldDistance","newDistance","walkUntil$1","findLineNodeRects","targetNodeRect","checkPosFn","lineRects","getFakeCaretTargets","caretInfo","closestCaret","closestNodeRect","contentEditableFalseNodeRects","targetNodeRects","isXYWithinRange","$_95lcbc5ujkmcwlg1","setup$3","renderFocusCaret","$_8glegd5vjkmcwlg3","$_6bj5795wjkmcwlg6","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","isFakeSelectionElement","getRealSelectionElement","setRange","getRange","showCaret$$1","getNormalizedRangeEndPoint$$1","blockCaretContainer","contentEditableRoot","removeContentEditableSelection","handleTouchSelect","moved","setContentEditableSelection","hasNormalCaretPosition","isInSameBlock$$1","hasBetterMouseTarget","targetBlock","caretBlock","isPasteBin","isRangeInCaretContainer","clipboardData","realSelectionElement","clearData","setData","outerText","addCss","contentStyles","rootClass","isWithinCaretContainer","$realSelectionContainer","origTargetClone","removeAllRanges","addRange","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","anyAttributesRequired","selfClosing","attrRegExp","fixSelfClosing","stack","filteredUrlAttrs","scriptUriRegExp","processEndTag","valid","parseAttribute","val2","val3","attrRule","trimRegExp","unescape","self_closing_elements","remove_internals","allow_conditional_comments","findEndTag","SaxParser$1","trimHtml","tempAttrs","trimContentRegExp","trimInternal","endTagIndex","matchLength","bogusAllRegExp","getTempAttrs","trimExternal","$_2varuf5zjkmcwlgq","KEEP","INSERT","vDown","vUp","snake","diag","buildScript","start1","end1","start2","end2","middle","getMiddleSnake","i2","buildSnake","sum","$_3xze2m62jkmcwlh7","getOuterHtml","createFragment$1","insertAt","removeAt","applyDiff","read$3","write","currentFragments","$_cyedqm61jkmcwlh3","fromHtml$1","fromTags","tags","fromText$1","texts","fromDom$1","$_bos53z64jkmcwlhd","get$6","set$3","docDom","contentElements","getOuter","$_xg5463jkmcwlhb","undoLevelDocument","lazyTempDocument","implementation","createHTMLDocument","hasIframes","createFragmentedLevel","beforeBookmark","createCompleteLevel","createFromEditor","trimmedFragments","trimmed","applyToEditor","getLevelContent","getCleanLevelContent","hasEqualContent","level1","level2","hasEqualCleanedContent","isEq$3","$_3cqp0r5yjkmcwlgf","UndoManager","isFirstTypedCharacter","locks","isUnlocked","setTyping","typing","setDirty","addNonTypingUndoLevel","endTyping","beforeChange","isDirty","lastLevel","modKey","isInsertReplacementText","inputType","isInsertTextDataNull","addShortcut","currentLevel","custom_undo_redo_levels","clear","hasUndo","hasRedo","callback1","callback2","isEq$4","matchesUnInheritedFormatSelector","formatList","inherit","matchParents","matchName","matchItems","itemName","similar","onmatch","matchAll","startElement","matchedFormatNames","checkedMap","canApply","defaultBlock","$_axwnk168jkmcwlim","split$1","$_bnmynr69jkmcwlir","ZWSP$1","CARET_ID$1","importNode","getEmptyCaretContainers","isCaretContainerEmpty","findFirstTextNode","createCaretContainer","fill","trimZwspFromCaretContainer","removeCaretContainerNode","removeCaretContainer","insertCaretContainerNode","formatNode","appendNode","insertFormatNodesIntoCaretContainer","formatNodes","innerMostFormatNode","applyCaretFormat","wordcharRegex","removeCaretFormat","hasContentAfter","expandedRng","newCaretContainer","disableCaretContainer","setup$4","replaceWithCaretFormat","innerMost","isFormatElement","inlineElements","postProcessHooks","filter$2","each$12","addPostProcessHook","postProcess","isPre","hasPreSibling","pre","joinPre","pre1","pre2","$_dp9y746ajkmcwlit","MCE_ATTR_RE","each$13","isEq$5","isTableCell$4","lastIdx","wrap$2","matchName$1","isColorFormatAndAnchor","links","find$4","removeNode$1","rootBlockElm","list_block","removeFormat","compareNode","stylesModified","remove_similar","valueOut","findFormatRoot","formatRoot","wrapAndSplit","lastClone","firstClone","formatRootParent","mixed","remove$8","splitToFormatRoot","process","lastContentEditable","removeRngStyle","textDecoration","ceFalseOverride","$_2vklhc6cjkmcwlj5","each$14","isElementNode","findElementSibling","mergeSiblingsNodes","tmpSibling","elementUtils","processChildElements","hasStyle","applyStyle","unwrapEmptySpan","processUnderlineAndColor","mergeUnderlineAndColor","mergeBackgroundColorAndFontSize","backgroundColor","mergeSubSup","mergeSiblings","merge_siblings","clearChildStyles","clear_child_styles","mergeWithChildren","mergeWithParents","merge_with_parents","$_ehzows6bjkmcwliw","each$15","isElementNode$1","applyFormat","setElementFormat","fmt","onformat","styleVal","applyNodeStyle","found","applyRngStyle","nodeSpecific","wrapElm","currentWrapElm","parentName","childCount","getChildCount","getChildElementNode","mergeStyles","curSelNode","$_bcenmc66jkmcwlhp","each$16","setup$5","formatChangeData","currentFormats","matchedFormats","addListeners","formats","formatChangeItems","formatChanged","formatChangeState","$_5j3j9s6djkmcwljg","get$7","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","$_8oc5be6fjkmcwljl","FormatRegistry","unregister","each$17","parsedSelectorToHtml","ancestry","sItem","getRequiredParent","elmRule","wrapInHtml","parentCandidate","parentRequired","ancestorName","siblingElm","selectorToHtml","parseSelector","parseSelectorItem","$0","$1","$2","$3","$4","getCssText","previewFrag","previewElm","parentFontSize","previewStyles","previewCss","preview_styles","removeVars","numValue","parseFloat","$_ga7lpr6gjkmcwlk1","toggle$3","$_1zpcor6hjkmcwlk7","setup$6","$_2ind0x6ijkmcwlk8","Formatter","hasOwnProperty$1","shallow$1","baseMerge","merger","objects","curObject","htmlParser","addAttributeFilter","internalName","cleanup","trimTrailingBr","brNode1","brNode2","$_ft0zjh6mjkmcwlkr","preProcess","impl","oldDoc","shouldFireEvent","no_events","$_27apc6njkmcwll3","removeAttrs","addFontToSpansFilter","domParser","face","addStrikeToSpanFilter","addFilters","register$1","$_2klegh6pjkmcwllk","whiteSpaceRegExp$3","typeLookup","#text","#cdata","#pi","#doctype","#document-fragment","walk$3","Node$2","selfAttrs","selfAttr","cloneAttrs","refNode","paddEmptyNode","brPreferred","padd_empty_with_br","isPaddedWithNbsp","hasOnlyChild","isPadded","isEmpty$2","whitespaceElements","isLineBreakNode","register$2","remove_trailing_brs","prevName","whiteSpaceElements","appendRel","addNoOpener","newRel","allow_unsafe_link_target","allow_html_in_named_anchor","fix_list_elements","classValue","validClassesMap","makeMap$4","each$18","explode$3","extend$3","DomParser","nodeFilters","attributeFilters","matchedNodes","matchedAttributes","root_name","fixInvalidChildren","newParent","currentNode","childNode","nonSplitableElements","textBlockElements","fixed","filterNode","getNodeFilters","getAttributeFilters","fi","fl","isInWhiteSpacePreservedElement","invalidChildren","rootBlockName","startWhiteSpaceRegExp","endWhiteSpaceRegExp","allWhiteSpaceRegExp","isAllWhiteSpaceRegExp","createNode","removeWhitespaceBefore","textNodeNext","textVal","cloneAndExcludeBlocks","attrFiltersLen","isRootContent","addTempAttr","postProcess$1","outArgs","getHtmlFromNode","getInner","parseHtml","serializeNode","htmlSerializer","toHtml","DomSerializer","addRules","rules","setRules","DomSerializer$1","domSerializer","BookmarkManager","BookmarkManager$1","isContentEditableFalse$10","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","proportional","resizeHelperX","resizeHelperY","resize_img_proportional","endGhostResize","setSizeProp","showResizeRect","targetWidth","targetHeight","unbindResizeHandleEvents","handleElm","startDrag","unSelectabe","updateResizeRect","controlElm","isChildOrEqual","disableGeckoResize","isWithinContentEditableFalse","delayedSelect","throttledUpdateResizeRect","hasCeProperty","findParent$1","findClosestIeRange","rects","createTextRange","moveToElementText","moveToPoint","moveOutOfContentEditableFalse","fromPoint$1","pointDoc","caretPositionFromPoint","offsetNode","caretRangeFromPoint","$_52q21w6wjkmcwlna","processRanges","$_8161126xjkmcwlnd","fromElements","$_a3l7fy70jkmcwloa","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","fromDom$2","tableElm","toDom","subsection","endElement","$_6wuzo771jkmcwlof","findParentListContainer","getFullySelectedListWrappers","listCont","wrap$3","innerElm","directListWrappers","commonAnchorContainer","getWrapElements","wrapElements","listWrappers","allWrappers","emptyFragment","getFragmentFromRange","getParentTable","getTableFragment","selectedTableCells","firstCell","lastCell","fullTableModel","sectionedTableModel","getSelectionFragment","read$4","$_2bm266zjkmcwlnj","tmpElm","contextual","htmlText","$_eu7sms6yjkmcwlnf","createContextualFragment","pasteHTML","$_b7rwud72jkmcwlow","getEndpointElement","real","getStart$2","skipEmptyTextNodes","forwards","orig","getNode$1","endElm","selectedBlocks","select$1","each$19","isNativeIeSelection","isAttachedToDom","isValidRange","Selection$1","bookmarkManager","selectedRange","explicitRange","selectorChangedData","getEnd$$1","compareEndPoints","tryCompareBoundaryPoints","how","sourceRange","destinationRange","compareBoundaryPoints","START_TO_START","END_TO_END","ieRange","setBaseAndExtent","anchorNode","focusNode","setNode","getSelectedBlocks$$1","isForward","anchorRange","focusRange","anchorOffset","focusOffset","selectorChanged","currentSelectors","matchedSelectors","isContentEditableFalse$11","getSelectedNode$1","isAfterContentEditableFalse$2","isBeforeContentEditableFalse$2","getVisualCaretPosition","isMoveInsideSameBlock","moveToCeFalseHorizontally","getNextPosFn","peekCaretPosition","rangeIsInContainerBlock","isBeforeContentEditableFalseFn","moveToCeFalseVertically","walkerFn","linePositions","nextLinePositions","closestNextLineRect","caretClientRect","dist1","dist2","contentEditableFalseNode","caretPositions","createTextBlock","textBlock","exitPreBlock","newBlock","getNextVisualCaretPosition","getPrevVisualCaretPosition","getHorizontalRange","newRange","getVerticalRange","moveH$1","moveV$1","defaultPatterns","patterns","matchesEvent","match$1","execute","$_3olmgr77jkmcwlpj","executeKeydownOverride","setup$7","$_emza9w75jkmcwlp9","getParentInlines","hasOnlyOneChild$1","deleteLastPosition","parentInlines","isFormatElement$$1","deleteCaret$1","backspaceDelete$5","$_7tr96779jkmcwlpz","executeKeydownOverride$1","executeKeyupOverride","setup$8","$_4dsl7478jkmcwlpw","firstNonWhiteSpaceNodeSibling","moveToCaretPosition","tempElm","lastNode","getEditableRoot","editableRoot","getParentBlock$2","getParentBlockName","isListItemParentBlock","$_79nvm87ejkmcwlqu","hasFirstChild","hasParent$1","isListBlock","isNestedList","getContainerBlock","containerBlockParent","isFirstOrLastLi","insert$1","createNewBlock","newBlockName","tmpRng","$_5ckamj7djkmcwlqo","isEmptyAnchor","isTableCell$5","emptyBlock","containerAndSiblingName","canSplitBlock","trimInlineElementsOnLeftSideOfBlock","firstChilds","normalizeZwspOffset","includeZwspInRange","trimLeadingLineBreaks","getEditableRoot$1","setForcedBlockAttrs","forcedRootBlockName","wrapSelfAndSiblingsInDefaultBlock","addBrToBlockIfNeeded","insert$2","parentBlockName","clonedNode","isCaretAtStartOrEndOfBlock","normalizedOffset","insertNewBlockAfter","$_dr0y3j7cjkmcwlqe","shouldInsertBr","shouldBlockNewLine","$_g7oj6o7gjkmcwlr8","newLineAction","shouldBlockNewLine$1","isBrMode","requiredState","brMode","inListBlock","inBlock","inPreBlock","inSummaryBlock","shouldPutBrInPre$1","inBrContext","hasShiftKey","canInsertIntoEditableRoot","rootEditable","match$2","predicates","isMatch","getAction$1","$_47r1sh7fjkmcwlr1","insert$3","$_fs2ah67bjkmcwlq8","endTypingLevel","handleEnterKeyEvent","setup$9","$_ni5l67ajkmcwlq7","isValidInsertPoint","isAtStartOrEnd","insertNbspAtPosition","insertAtLocation","insertAtCaret$2","boundaryLocation","insertAtSelection","$_2cwo047ijkmcwlrj","executeKeydownOverride$2","setup$10","$_agfz917hjkmcwlrh","findBlockCaretContainer","removeIeControlRect","handleBlockContainer","setup$11","$_gfp1h7jjkmcwlrn","setup$12","$_ejk8vk74jkmcwlp8","Quirks","isGecko","isWebKit","mceInternalUrlPrefix","mceInternalDataType","setMceInternalContent","selectionHtml","internalContent","dataTransfer","escape","getMceInternalContent","getData","insertClipboardContents","internal","emptyEditorWhenDeleting","serializeRng","allContentsSelected","allRng","allSelection","inputMethodFocus","removeHrOnBackspace","Range","body_1","selectControlElements","removeStylesWhenDeletingAcrossBlockElements","getAttributeApplyFunction","template","setAttributeNode","isSelectionAcrossElements","applyAttributes","disableBackspaceIntoATable","removeBlockQuoteOnBackSpace","setGeckoEditingOptions","setOpts","addBrAfterLastLinks","fixLinks","setDefaultBlockType","showBrokenImageIcon","restoreFocusOnKeyDown","bodyHeight","blockCmdArrowNavigation","disableAutoUrlDetect","tapLinksAndImages","blockFormSubmitInsideEditor","removeAppleInterchangeBrs","ieInternalDragAndDrop","isTextBlockNode","normalizeSelection$1","setup$13","detail","preventSummaryToggle","filterDetails","setup$14","DOM$2","appendStyle","createParser","autoFocus","auto_focus","destroyed","initEditor","execCallback","getStyleSheetLoader","initContentBody","skipWrite","contentCssText","visibility","orgVisibility","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","$_fssayf58jkmcwlbz","DOM$3","relaxDomain","ifr","domain","hostname","bodyUuid","domainRelaxUrl","normalizeHeight","normalizedHeight","createIframeElement","customAttrs","iframe","frameBorder","allowTransparency","getIframeHtml","bodyId","bodyClass","documentBaseURI","getURI","createIframe","isDomainRelaxed","contentAreaContainer","iframeContainer","init$1","boxInfo","editorContainer","orgDisplay","$_9jv4e17njkmcwlsj","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$2","rtl","rtl_ui","i18n","setCode","aria_label","getLang","content_css","toAbsolute","$_4z079955jkmcwlbj","DOM$5","hasSkipLoadPrefix","loadLanguage","scriptLoader","loadTheme","themeUrl","theme_url","loadPlugins","render","form","formElement","hasHiddenInput","formEventDelegate","_mceOldSubmit","triggerSave","encoding","save","_beforeUnload","set_dirty","$_9u29xe4yjkmcwlai","add$4","sidebars","$_gcw4n27ojkmcwlsr","each$20","trim$4","queryParts","DEFAULT_PORTS","ftp","http","https","mailto","URI","baseUri","base_uri","isProtocolRelative","protocol","toAbsPath","part","userInfo","port","setPath","toRelative","tu","uu","toRelPath","noHost","isSameOrigin","defaultPort","breakPoint","outPath","nb","noProtoHost","loc","pathname","defaultFormat","trimEmptyContents","emptyRegExp","getContentFromBody","getContent$1","traverse","findMatchingNodes","nodeMatches","attrMatches","filter$$1","filter$3","defaultFormat$1","isTreeNode","moveSelection","setEditorHtml","setContentString","padd","setContentTree","setContent$1","DOM$6","restoreOriginalStyles","safeDestroy","clearDomReferences","restoreForm","remove$9","is_removing","automatic","DOM$7","extend$4","each$21","resolve$4","ie$2","Editor","documentBaseURL","baseURI","language_load","loadedCSS","editorCommands","buttons","menuItems","cache_suffix","override_viewport","callbackLookup","lang_1","i18n_1","stateSelector","tooltip","addSidebar","addContextToolbar","contextToolbars","focusedEditor","setProgressState","isNotDirty","oldState","urlconverter_callback","visual_table_class","visual_anchor_class","_scanForImages","documentFocusInHandler","beforeUnloadDelegate","EditorManager","isEditorUIElement","$_48zpgt7xjkmcwlum","isManualNodeChange","registerPageMouseUp","throttledStore","mouseUpPage","registerFocusOut","registerMouseUp","registerEditorEvents","register$3","$_d657g07yjkmcwlun","DOM$8","isEditorUIElement$1","isUIElement","customSelector","custom_ui_selector","getActiveElement","blurredEditor","unregisterDocumentEvents","setup$15","$_6zk6867wjkmcwluj","$_9pp0ut7zjkmcwlut","newCode","_dir","getCode","langData","getLangData","values_1","DOM$9","explode$4","each$22","extend$5","instanceCounter","boundGlobalEvents","legacyEditors","isValidLegacyKey","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","existingEditor","addI18n","EditorManager$1","RangeUtils","normalizedRng","compareRanges","getCaretRangeFromPoint","extendClass","initializing","RangeUtils$1","round$2","relativePosition","targetW","targetH","create$3","findBestRelativePosition","constrainRect","rels","inflate","intersect","cropRect","x1","y1","clamp$1","clampRect","fixedSize","underflowX1","underflowY1","overflowX2","overflowY2","cx2","cy2","fromClientRect","$_es7eh281jkmcwlv1","$_e5pe6n82jkmcwlv8","typeClass","lctype","controlType","ControlType","each$23","extend$6","Class$1","_super","Class","mixins","mixin","Mixins","dummy","createMethod","name_1","Methods","Properties","fieldName","Statics","Defaults","min$1","max$1","round$3","Color","rgb2hsv","minRGB","maxRGB","hsvToRgb","hue","saturation","brightness","side","chroma","toRgb","toHsv","quote","$_6nxmdo85jkmcwlvi","$_cygb5686jkmcwlvk","XHR","ready","success_scope","error_scope","overrideMimeType","content_type","crossDomain","setRequestHeader","requestheaders","extend$7","JSONRequest","sendRPC","ecb","scb","ty","method","localStorage$$1","create$4","storage","getItem","setItem","removeItem","localStorage","LocalStorage","publicApi","geom","Rect","util","Delay","Tools","VK","EventDispatcher","Observable","I18n","JSONP","Serializer","Selection","Entities","Factory","Env","FocusManager","isMac","Tinymce","exportToModuleLoaders","exportToWindowGlobal","tinyMCE","global","global$1","getMinWidth","getMinHeight","$_2agnwba2jkmcwo8k","$_gf01w3a4jkmcwo8n","minWidth","multiline","onSubmit","$_4xs1xna1jkmcwo8j","$_atmzsea0jkmcwo8i","$_f9f308a5jkmcwo8o","introJs","__webpack_exports__","steps","_intro","setOption","oncomplete","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","_common_api__WEBPACK_IMPORTED_MODULE_4__","_common_global__WEBPACK_IMPORTED_MODULE_5__","post","tutorialPassoId","return","chaveIdentificacaoSistema","CHAVE_IDENTIFICACAO_SISTEMA","filterBehavior","dataList","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","_element","addStep","intro","_getSalt","_get","isSession","_setStorage","_salt","bytes","crypto_js__WEBPACK_IMPORTED_MODULE_1___default","AES","decrypt","originalText","enc","Utf8","_add","_newdata","encrypt","_update","_remove","_reset","sessionStorage","update","vue__WEBPACK_IMPORTED_MODULE_3__","picker","pikaday__WEBPACK_IMPORTED_MODULE_4___default","field","onSelect","previousMonth","nextMonth","months","weekdays","weekdaysShort","assumeExternalTargets","editorSettings","link_assume_external_targets","hasContextToolbar","link_context_toolbar","getLinkList","link_list","hasDefaultLinkTarget","default_link_target","getDefaultLinkTarget","getTargetList","target_list","setTargetList","shouldShowTargetList","getRelList","rel_list","hasRelList","getLinkClassList","link_class_list","hasLinkClassList","shouldShowLinkTitle","link_title","allowUnsafeLinkTarget","$_7h5h1kfvjkmcwp8j","global$2","global$3","appendClickRemove","dispatchEvent","open$$1","createEvent","initMouseEvent","opener","$_50rjczfwjkmcwp8l","global$4","toggleTargetRules","isUnsafe","addTargetRules","removeTargetRules","trimCaretContainers","getAnchorElement","isImageFigure","getAnchorText","anchorElm","isLink","hasLinks","isOnlyTextSelected","attachState","linkAttrs","attach","linkImageFigure","unlinkImageFigure","fig","$_f96xu2g0jkmcwp91","global$5","global$6","createLinkList","linkList","buildListItems","inputList","itemCallback","startItems","appendItems","menuItem","menu","delayedConfirm","showDialog","initialText","onlyText","textListCtrl","linkListCtrl","relListCtrl","targetListCtrl","classListCtrl","linkTitleCtrl","linkListChangeHandler","textCtrl","lastControl","control","buildAnchorListControl","anchorList","onselect","updateText","urlChange","inp","onBeforeCall","toJSON","onPostRender","textStyle","autofocus","onkeyup","onpaste","onbeforecall","insertLink","removeLink","resultData","open$1","$_1hdbnpg2jkmcwp96","getLink","getSelectedLink","getHref","isContextMenuVisible","contextmenu","hasOnlyAltModifier","gotoLink","targetEl","openDialog","gotoSelectedLink","leftClickedOnAHref","setupGotoLinks","toggleActiveState","toggleViewLinkState","toggleVisibility","$_dlew49ftjkmcwp8f","$_3nvo42fsjkmcwp8b","$_aoohpyg5jkmcwp9f","setupButtons","onpostrender","setupMenuItems","prependToContext","setupContextToolbars","$_3wxsofg6jkmcwp9g","hasProPlugin","$_ee0gktiejkmcwpkb","clipboard","$_6khw6eigjkmcwpkp","firePastePreProcess","isWordHtml","wordContent","firePastePostProcess","firePastePlainTextToggle","firePaste","ieFake","$_d8ovv8ijjkmcwpku","shouldPlainTextInform","shouldBlockDrop","shouldPasteDataImages","shouldFilterDrop","getPreProcess","getPostProcess","getWebkitStyles","shouldRemoveWebKitStyles","shouldMergeFormats","isSmartPasteEnabled","isPasteAsTextEnabled","getRetainStyleProps","getWordValidElements","defaultValidElements","shouldConvertWordFakeLists","shouldUseDefaultFilters","$_5peev0ikjkmcwpkv","shouldInformUserAboutPlainText","userIsInformedState","togglePlainTextPaste","pasteFormat","$_7rw4pkiijkmcwpks","pasteHtml","pasteText","$_gh26txihjkmcwpkr","internalMimeType","internalMark","mark","unmark","isMarked","$_93gcj3irjkmcwpld","internalHtmlMime","isPlainText","toBRs","openContainer","rootTag","rootAttrs","_home_vsts_work_1_s_CNA_Jobs_Ui_node_modules_babel_runtime_helpers_builtin_es6_typeof__WEBPACK_IMPORTED_MODULE_5__","toBlockElements","tagOpen","tagClose","paragraphs","stitch","convert","$_3nag2qisjkmcwple","global$7","global$8","global$9","ignoreElements","trimSpaces","s1","s2","createIdGenerator","isMsEdge","$_2u5gcyj0jkmcwplv","isWordContent","isNumericList","isBulletList","convertFakeListsToProperLists","currentListNode","prevListNode","txt","trimListStart","regExp","removeIgnoredNodes","_listIgnore","convertParagraphToLi","paragraphNode","listName","_listLevel","nodeText","filterStyles","outputStyles","filterWordContent","retainStyleProperties","spaces","$_759xt5ivjkmcwplk","processResult","cancelled","postProcessFilter","tempBody","postProcessArgs","filterContent","preProcessArgs","$_7a37nniujkmcwplh","isAbsoluteUrl","isImageUrl","createImage","pasteHtmlFn","createLink","linkSelection","insertImage","smartInsertContent","$_3wqigwj1jkmcwplz","pasteHtml$1","internalFlag","getDataTransferItems","legacyText","contentType","getClipboardContent","clipboardEvent","text/html","hasContentType","clipboardContent","mimeType","hasHtmlOrText","getBase64FromUri","extractFilename","pasteImage","Image","existingBlobInfo","isClipboardEvent","pasteImageData","processItems","hadImage","getAsFile","paste_data_images","isBrokenAndroidClipboardEvent","isKeyboardPasteEvent","registerEventHandlers","pasteBin","keyboardPastePlainTextState","keyboardPasteTimeStamp","insertClipboardContent","isKeyBoardPaste","plainTextMode","isPlainTextHtml","getHtml","isDefaultContent","removePasteBinOnKeyUp","getLastRng","clipboardTimer","clipboardDelay","getEl","registerEventsAndFilters","isPasteInsert","isWebKitFakeUrl","isDataUri","getPasteBinParent","isExternalPasteBin","delegatePasteEvents","pasteBinElm","pasteBinDefaultContent","isDefault","lastRngCell","pasteBinClone","pasteBinClones","dirtyWrappers","cleanWrapper","copyAndRemove","toElm","fromElm","PasteBin","Clipboard","hasWorkingClipboardApi","setHtml5Clipboard","setClipboardData","fallback","markedHtml","offscreenRange","cut","$_5k6lg4j3jkmcwpmg","global$10","getCaretRangeFromEvent","isPlainTextFileUrl","plainTextContent","setFocusedRange","draggingInternallyState","dropContent","content_1","$_eiqz0aj4jkmcwpmj","$_9alamfj6jkmcwpmm","addPreProcessFilter","filterFunc","addPostProcessFilter","removeExplorerBrElementsAfterBlocks","explorerBlocksRegExp","removeWebKitStyles","webKitStyles","webKitStylesSetting","dom_1","node_1","inputStyles","inputValue","currentValue","removeUnderlineAndFontInAnchor","$_ca6muwj7jkmcwpmo","stateChange","postRender","selectable","$_98erksj8jkmcwpmr","Api","endpoint","Resourse","EndPoint","defaultFilter","pageSize","pageIndex","isPaginate","byCache","hasDefaultFilters","lastAction","_post","put","_put","_delete","dataItem","_dataItem","export","_export","_upload","folder","makeUri","axios__WEBPACK_IMPORTED_MODULE_8___default","handleSuccess","handleError","model","_filters","assign","paramsSerializer","qs__WEBPACK_IMPORTED_MODULE_9___default","stringify","_global_js__WEBPACK_IMPORTED_MODULE_12__","END_POINT_DEFAULT","configHeaders","accesstoken","_cache_js__WEBPACK_IMPORTED_MODULE_11__","ACCESS_TOKEN","headers","common","addCache","_auth_js__WEBPACK_IMPORTED_MODULE_13__","login","Data","DataList","Add","theString","regEx","$httpParamSerializer","qs","pairs","forEach","pair","vue__WEBPACK_IMPORTED_MODULE_7__","use","vue_axios__WEBPACK_IMPORTED_MODULE_10___default","getScripts","getAudioTemplateCallback","getVideoTemplateCallback","hasLiveEmbeds","shouldFilterHtml","getUrlResolver","hasAltSource","hasPoster","hasDimensions","$_6qt1nth3jkmcwpf2","getVideoScriptMatch","prefixes","$_5qpz66h7jkmcwpf7","trimPx","addPx","setSize","$_1gasfuh8jkmcwpf8","getMaxWidth","getMaxHeight","setMaxWidth","setMaxHeight","getEphoxEmbedIri","isEphoxEmbed","htmlToDataSax","movie","videoScript","ephoxEmbedHtmlToData","htmlToData","$_1f89fyh4jkmcwpf3","guess","mp3","wav","mp4","webm","ogg","swf","fileEnd","$_e86s3ihcjkmcwpfk","setAttributes","updatedAttrs","normalizeHtml","updateHtmlSax","updateAll","hasImage","sourceCount","imgAttrs","isEphoxEmbed$1","updateEphoxEmbed","updateHtml","$_6s992lhdjkmcwpfn","urlPatterns","regex","allowFullscreen","getUrl","_loop_1","matchPattern","getFlashHtml","getAudioHtml","audioTemplateCallback","getVideoHtml","videoTemplateCallback","getScriptHtml","dataToHtml","dataIn","embed","$_65qpjdhbjkmcwpfc","embedPromise","rej","wrappedResolve","defaultPromise","loadedData","getEmbedHtml","embedHandler","isCached","$_74pv8fh9jkmcwpf9","doSyncSize","widthCtrl","heightCtrl","doSizeControls","constrained","doUpdateSize","isContrained","oldWidth","oldHeight","newWidth","newHeight","syncSize","updateSize","createUi","onChange","recalcSize","layout","spacing","ariaLabel","$_gd8vqohhjkmcwpg2","embedChange","errorMessage","dataEmbed","data-ephox-embed-iri","getSource","addEmbedHtml","fromJSON","selectPlaceholder","beforeObjects","afterObjects","handleInsert","submitForm","populateMeta","generalFormItems","advancedFormItems","reserialise","embedTextBox","flex","updateValueOnChange","forId","bodyType","$_3njyjoh0jkmcwpew","$_eg0prjgzjkmcwpeu","$_8o48izhijkmcwpg5","sanitize","blocked","$_f1oicehmjkmcwpge","boolAttrs","realElm","innerHtml","realElmName","$_b6ycdhhjjkmcwpg6","$_c1o1r8hnjkmcwpgg","selectedNode","objectType","$_8yods0hojkmcwpgh","$_ew8gthhpjkmcwpgk","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-in","./en-in.js","./en-nz","./en-nz.js","./en-sg","./en-sg.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fil","./fil.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-deva","./gom-deva.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./oc-lnc","./oc-lnc.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tk","./tk.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-mo","./zh-mo.js","./zh-tw","./zh-tw.js","webpackContext","req","webpackContextResolve","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_2_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_2_2_node_modules_vue_loader_lib_index_js_vue_loader_options_loading_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","applyListFormat","list-style-type","$_55fky08fjkmcwo2a","$_cjqqqe8ejkmcwo28","getNumberStyles","getBulletStyles","$_2zo4iv8hjkmcwo2f","isChildOfBody","isTableCellNode","isListNode","getSelectedStyleType","$_djj0lo8ijkmcwo2g","styleValueToText","toMenuItems","$_cbyrf58jjkmcwo2h","listState","tableCellIndex","updateSelection","listStyleType","addSplitButton","onshow","addControl","$_d74fz58gjkmcwo2b","hasPlugin","getPreviewDialogWidth","getPreviewDialogHeight","getContentStyle","$_6hy26xjfjkmcwppy","getPreviewHtml","previewHtml","headHtml","contentStyle","body_id","body_class","preventClicksOnLinksScript","dirAttr","injectIframeContent","sandbox","encodeURIComponent","$_5s7etcjgjkmcwppz","dialogHtml","dialogWidth","dialogHeight","iframeElm","$_4mmnpbjdjkmcwppw","$_c197icjcjkmcwppv","$_eluyd4jijkmcwpq6","Appvue_type_template_id_45772c13_render","_vm","_h","$createElement","_self","staticRenderFns","component","componentNormalizer","App","templatevue_type_template_id_22d4223e_render","templatevue_type_template_id_22d4223e_staticRenderFns","footervue_type_template_id_b9be3010_render","_m","staticClass","staticStyle","font-size","$event","dialogChangeLog","_v","_s","changelog","versao","no-close-on-backdrop","no-close-on-esc","centered","hide-footer","$$v","domProps","detalhes","footervue_type_template_id_b9be3010_staticRenderFns","footervue_type_script_lang_js","mounted","template_footervue_type_script_lang_js","footer_component","footer","headervue_type_template_id_6c08f3f4_render","variant","no-caret","rawName","urlFoto","user","escolaNome","irParaPortalCorporativo","cursor","logout","hide-header-close","content-class","dialogDetalheMelhoria","textoAtualizacao","textoDetalheAtualizacao","changeLogId","on-saved","onSaved","on-back","hideAll","headervue_type_template_id_6c08f3f4_staticRenderFns","form_detalhe_atualizacaovue_type_template_id_6dd37daa_render","ref","novalidate","executeCreate","onBack","form_detalhe_atualizacaovue_type_template_id_6dd37daa_staticRenderFns","form_detalhe_atualizacaovue_type_script_lang_js","cpfCarregado","ativaClose","escolaLogadaId","usuarioLogado","ChangeLogId","ColaboradorId","EscolaId","resources","methods","attributeBehavior","defaultSuccessResult","defaultErrorResult","onAtivaClose","$emit","auth","currentUser","tenant","template_form_detalhe_atualizacaovue_type_script_lang_js","form_detalhe_atualizacao_component","form_detalhe_atualizacao","headervue_type_script_lang_js","components","formDetalheAtualizacao","urlPortalCorporativo","URL_PORTAL_CORPORATIVO","escolas","foto","escola","escolaId","nomeEscola","openDetalheMelhoria","executeLeituraObrigatoria","_this2","getFotoUser","sistemaId","EhLeituraObrigatoria","detalheAtualizacao","resultado","template_headervue_type_script_lang_js","header_component","loadingvue_type_template_id_6e980aa2_render","loadingvue_type_template_id_6e980aa2_staticRenderFns","loadingvue_type_script_lang_js","isloading","$eventHub","$on","beforeDestroy","$off","components_loadingvue_type_script_lang_js","loading_component","templatevue_type_script_lang_js","footerCna","headerCna","$notify","duration","speed","snackbar_color","snackbar_showing","src_templatevue_type_script_lang_js","template_component","homevue_type_template_id_2d56c06a_render","escola-id","homevue_type_template_id_2d56c06a_staticRenderFns","aria-hidden","colaboradordesligamentovue_type_template_id_3fabc425_render","_l","tagJobsId","colaborador","nmCompleto","dtUltimoAcesso","dtContratacao","openSituacaoColaboradorEscola","dialogSituacaoColaboradorEscola","slot","atualizaSituacaoColaboradorEscola","colaboradordesligamentovue_type_template_id_3fabc425_staticRenderFns","colaboradordesligamentovue_type_script_lang_js","isPagination","executeLoad","showLoading","somenteSemAcessoRecente","somenteAtivos","summary","hideLoading","failLoading","errors","views_colaboradordesligamentovue_type_script_lang_js","colaboradordesligamento_component","colaboradordesligamento","homevue_type_script_lang_js","colaboradorDesligamento","detectaMobile","mobile","tutor_step","views_homevue_type_script_lang_js","home_component","home","authorizedvue_type_template_id_53e262d2_render","authorizedvue_type_template_id_53e262d2_staticRenderFns","margin-top","max-width","text-align","authorizedvue_type_script_lang_js","processTokenCallback","getCurrentUser","colaboradorId","menu_key","permissoes_key","permissoes","foto_key","loadfinished_key","_lastlocation","lastlocation_key","views_authorizedvue_type_script_lang_js","authorized_component","authorized","trocarescolavue_type_template_id_a6c99bf8_render","change","$$selectedVal","options","escola_escolhida","multiple","trocarEscola","trocarescolavue_type_template_id_a6c99bf8_staticRenderFns","trocarescolavue_type_script_lang_js","colaborador_id","claimsAddLoginSso","resulBusca","filtros","views_trocarescolavue_type_script_lang_js","trocarescola_component","trocarescola","testerealizarvue_type_template_id_33941e07_render","step","buscarCandidato","cpf","placeholder","teste","avaliacao","mensagemInicial","iniciarTeste","substep","totalQuestoes","text-danger","temporestante","progresso","striped","animated","testeQuestaoPergunta","questaoPerguntaId","questaoPergunta","questao","disciplina","nome","enunciado","pergunta","tipoRespostaId","multiplasCorretas","questaoResposta","questaoId","resposta","_q","$set","respostas","$$a","$$el","$$c","$$i","index2","line-height","ordem","keyup","montaRespostaCompleteLacunas","revisarDepois","voltarSubstep","totalsubstep","openPausar","proximoSubstep","irParaQuestao","list-group-item-warning","finalizarTeste","notaobtida","notaAprovacao","mensagemAprovacao","mensagemReprovacao","closePagina","dialogPausar","candidato","diasValidadeCandidato","onClose","pausarTeste","testerealizarvue_type_template_id_33941e07_staticRenderFns","testerealizarvue_type_script_lang_js","setintervaltimer","candidatoId","testeId","botaoFinalizar","formValidate","getTeste","passoAtual","collectionTesteQuestaoPergunta","tempoRestante","preparaElementosPergunta","_respostas","collectionQuestaoPerguntaResposta","$form","$refs","checkValidity","_this3","limpaSetintervaltimer","adicionarTempoUtilizado","_this4","salvarTeste","_this5","_teste","preparaModelSave","ehLivreRedeCna","nota","_this6","newteste","_elements","_el","addRespostaMultipla","_accessToken","$route","_cpf","configNotification","views_testerealizarvue_type_script_lang_js","testerealizar_component","testerealizar","acessonegadovue_type_template_id_056e350e_render","acessonegadovue_type_template_id_056e350e_staticRenderFns","role","acessonegadovue_type_script_lang_js","views_acessonegadovue_type_script_lang_js","acessonegado_component","acessonegado","contratarconfirmacaovue_type_template_id_80010e08_render","abrirPortal","autocomplete","verificaSenha","senha","nivelSenha","senhaConfirmacao","salvarSenha","contratarconfirmacaovue_type_template_id_80010e08_staticRenderFns","contratarconfirmacaovue_type_script_lang_js","chaveAcesso","viacnajobs","show_form","mostrarLink","temLetra","temEspecial","temNumero","senhaMD5","senhaMD5Confirm","views_contratarconfirmacaovue_type_script_lang_js","contratarconfirmacao_component","contratarconfirmacao","routers","__WEBPACK_AMD_REQUIRE_ARRAY__","generated","vue_runtime_esm","vue_router_esm","childrens","router","routes","redirect","requiresAuth","beforeEach","_ref","asyncToGenerator","regeneratorRuntime","_callee","_context","record","logged","abrupt","canAccess","_x","_x2","_x3","src_router","can","esm","dist_default","vue_the_mask_default","v_money_default","config","productionTip","$mount","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_6_oneOf_2_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_6_oneOf_2_2_node_modules_vue_loader_lib_index_js_vue_loader_options_form_detalhe_atualizacao_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default","navClass","ulClass","showPrevious","liClass","internalCurrentPage","previousText","aria-label","ariaPrevious","changePage","num","showNext","lastPage","nextText","ariaNext","paginationvue_type_script_lang_js","currentPage","default","watch","immediate","_total","_pageSize","_from","_to","_arr","alwaysShowPrevNext","page","components_paginationvue_type_script_lang_js","pagination","mask_data","mask_cpf","mask_rg","mask_tel","mask_cel","mask_cep","money","decimal","thousands","masked","defaultPageChanged","defaultOrderBy","orderByType","orderFields","isOrderByDynamic","isTextNode","isListItemNode","isFirstChild","isLastChild","keepBookmarks","$_eyfb4cgljkmcwpc0","getNormalizedEndPoint","textNodeOffset","outRng","rangeStart","rangeEnd","$_8n62cfgkjkmcwpbw","createBookmark","setupEndPoint","resolveBookmark","$_aredwjgjjkmcwpbt","normalizeList","ul","normalizeLists","$_f0sxyjgmjkmcwpc3","getParentList","selectionStart","getClosestListRootElm","isParentListSelected","parentList","findSubLists","getSelectedSubLists","findParentListItemsNodes","listItemsElms","parentLi","getSelectedListItems","parentTableCell","$_g5359xgnjkmcwpc5","createNewTextBlock","contentNode","hasContentNode","$_givla1gqjkmcwpcb","splitList","bookmarks","removeAndKeepBookmarks","$_3aykwpgpjkmcwpc8","removeEmptyLi","outdent","ulParent","outdentSelection","listElements","$_80fi2gghjkmcwpbq","updateListStyle","updateListAttrs","updateListWithDetails","removeStyles","getEndPointNode","getSelectedTextBlocks","hasCompatibleStyle","sib","sibStyle","detailStyle","applyList","listItemName","listBlock","mergeWithAdjacentLists","removeList","emptyListItems","rootList","isValidLists","list1","list2","hasSameListStyle","targetStyle","hasSameClasses","elm1","elm2","shouldMerge","updateList","newList","toggleMultipleLists","hasListStyleDetail","toggleSingleList","toggleList","selectedSubLists","$_8bvl87gejkmcwpbi","findNextCaretContainer","nonEmptyBlocks","hasOnlyOneBlockChild","unwrapSingleBlockChild","moveChildren","mergeLiElements","listNode","mergeIntoEmptyLi","fromLi","toLi","mergeForward","mergeBackward","resolvedBookmark","backspaceDeleteFromListToListCaret","otherLi","selectionStartElm","removeBlock","backspaceDeleteIntoListCaret","otherLi_1","startListParent","$_17li1sgajkmcwpb9","$_4wrbe2g9jkmcwpb7","mergeLists","listStyle","indentSelection","$_fhzwh2gtjkmcwpco","queryListCommandState","isHandled","$_7snno4gsjkmcwpcf","shouldIndentOnTab","$_7hi6itgvjkmcwpcr","setupTabKey","$_fv3b7wgujkmcwpcq","indentPostRender","listItemBlocks","disable","$_e09q6ogwjkmcwpct","SSO_END_POINT","SSO_REDIRECT_LOGIN_URL","SSO_REDIRECT_LOGOUT_URL","SSO_CLIENT_ID","SSO_RESPONSE_TYPE","SSO_SCOPE","ID_TOKEN","USER_INFO","ID_STATE","URL_CANDIDATO","authorize_url","_global__WEBPACK_IMPORTED_MODULE_3__","addclaims_authorize_url","endsession_url","redirect_uri","post_logout_redirect_uri","client_id","response_type","getToken","_cache__WEBPACK_IMPORTED_MODULE_2__","getAccessToken","getState","saveActualPage","_api__WEBPACK_IMPORTED_MODULE_4__","_user","timers__WEBPACK_IMPORTED_MODULE_5__","itens","access_token","expires_in","id_token","claim_type","claim_value","getPermissoes","_fromcache","getMenu","permissions","endsWith","rotaSplited","splited","todosparametrosbatem","itemrota","_addOption","_addItems","isMultiple","dataitem","getVModelValue","choices_js__WEBPACK_IMPORTED_MODULE_6___default","placeholderValue","searchPlaceholderValue","removeItems","removeItemButton","shouldSort","shouldSortItems","loadingText","noResultsText","noChoicesText","itemSelectText","oninvalid","elParent","wasValidated","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_8_oneOf_2_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_8_oneOf_2_2_node_modules_sass_loader_lib_loader_js_ref_8_oneOf_2_3_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_scss__WEBPACK_IMPORTED_MODULE_0___default","image_dimensions","hasAdvTab","getPrependUrl","getClassList","hasDescription","image_description","hasImageTitle","image_title","hasImageCaption","image_caption","getImageList","hasUploadUrl","hasUploadHandler","getUploadUrl","getUploadHandler","getUploadBasePath","getUploadCredentials","$_gc1jdictjkmcwomd","$_db9o2scwjkmcwomp","parseIntAndGetMax","val1","getImageSize","removePixelSuffix","addPixelSuffix","mergeMargins","splitMargin","createImageList","imageList","waitLoadImage","selectImage","$_9v7cmwcujkmcwomi","getHspace","getVspace","marginTop","marginBottom","getBorder","borderWidth","hasCaption","wrapInFigure","figureElm","removeFigure","toggleCaption","normalizeStyle","normalizeCss","setHspace","pxValue","setVspace","setBorder","setBorderStyle","borderStyle","getBorderStyle","isFigure","defaultData","hspace","vspace","getStyleValue","figure","updateProp","oldData","newData","_name","mergedCss","compressed","getSelectedImage","splitTextBlock","readImageDataFromSelection","insertImageAtCaret","insertedElm","syncSrcAttr","deleteImage","writeImageDataToSelection","insertOrUpdateImage","updateVSpaceHSpaceBorder","rootControl","updateStyle","makeTab","pack","packV","columns","maxWidth","$_4qd61kd3jkmcwonl","$_14kdtjdajkmcwoo8","onSrcChange","srcURL","prependURL","absoluteURLPattern","imageListCtrl","getGeneralItems","makeTab$1","$_bpqbuud9jkmcwoo5","$_e8tsx4dcjkmcwooe","uploadBlob","onFileInput","Throbber","throbber","finalize","dataUrl","activateTab","acceptExts","makeTab$2","accept","$_26ghgddbjkmcwooa","Dialog","altCtrl","$_cwg86qcrjkmcwom6","hasImageClass","toggleContentEditableState","toggleContentEditable","$_8m7aavdhjkmcwooq","$_2zobs0dijkmcwoos","isBrandingEnabled","hasMenubar","getMenubar","hasStatusbar","getToolbarSize","getFixedToolbarContainer","getInlineToolbarPositionHandler","getRemovedMenuItems","isSkinDisabled","skin","getResize","resize","getSkinUrl","skinUrl","skin_url","skinName","getIndexedToolbars","defaultToolbar","toolbars","mainToolbar","getToolbars","fireSkinLoaded","fireResizeEditor","fireBeforeRenderUI","$_1jkxpltzjkmcwsg4","panel","addKeys","$_1mdekmu0jkmcwsg5","getUiContainerDelta","uiContainer","getUiContainer","containerPos","setUiContainer","ui_container","inheritUiContainer","fromCtrl","toCtrl","$_5kmlp5u4jkmcwsge","createToolbar","buttonGroup","toolbarItems","bindSelectorChanged","disabledStateSelector","createToolbars","addToolbar","ariaRoot","ariaRemember","$_5g1hacu7jkmcwsgn","toClientRect","geomRect","hideAllFloatingPanels","movePanelTo","moveTo","togglePositionClass","relPos","userConstrain","elementRect","contentAreaRect","panelRect","addContextualToolbars","getContextToolbars","getElementRect","shouldShow","relRect","testPositions","smallElementWidthThreshold","repositionHandler","findFrontMostMatch","bindScrollEvent","reposition_1","uiContainer_1","showContextToolbar","autohide","autofix","oncancel","renderTo","hideAllContextToolbars","$_44ggy0u1jkmcwsg7","_home_vsts_work_1_s_CNA_Jobs_Ui_node_modules_babel_runtime_helpers_builtin_es6_typeof__WEBPACK_IMPORTED_MODULE_11__","defaultMenus","edit","view","tools","help","delimiterMenuNamePair","createMenuNameItemPair","hasItemName","namedMenuItems","namedMenuItem","isSeparator","cleanupMenu","removedMenuItems","menuItemsPass1","menuItemsPass2","createMenu","editorMenuItems","menus","menuButton","isUserDefined","separator","getDefaultMenubar","defaultMenuBar","createMenuButtons","menuButtons","menubar","enabledMenuNames","$_3ke8tlu8jkmcwsgq","resizeTo","containerSize","iframeSize","resizeBy","dw","dh","$_focm2tubjkmcwsh5","sidebar","callbackName","hidePanels","visible","deactivateButtons","findSidebar","showPanel","btnCtrl","isModernBrowser","hasSidebar","createSidebar","$_93h32bucjkmcwsh7","fireSkinLoaded$1","$_2tsyb2uejkmcwsha","switchMode","editArea","editAreaContainer","resizeHandleCtrl","startSize","skinUiCss","onResizeStart","onResize","linkHtml","brandingLabel","renderBefore","$_9mz4sntvjkmcwsft","funcs","getWindowSize","getRuntimeStyle","isStatic","isFixed","calculateRelativePosition","ctrlElm","selfW","selfH","viewport","getWindowViewPort","getUiContainerViewPort","customUiContainer","$_77p0ikukjkmcwsie","testMoveRel","viewPortRect","moveBy","layoutRect","constrain","constrainToViewport","repaint","global$11","$_79d0aauqjkmcwsj9","parseBox","measureBox","computedStyle","getSide","ClassList","_map","uniqueItems","__checked","_change","curState","clsValue","Collection","Collection$1","proto","chunker","Selector","compileNameFilter","compileIdFilter","compileClassesFilter","compileAttrFilter","cmp","compilePsuedoFilter","notSelectors","parseChunks","direct","_selectors","si","sl","Collection$2","Binding","otherModel","otherName","fromSelfToOther","fromOtherToSelf","_bindings","global$12","isNode","animationFrameRequested","Control","ObservableObject","oldValue","dirtyCtrls","$_921m08uxjkmcwsk2","_layout","_id","hasMouseWheelEventSupport","hasWheelEventSupport","classPrefix","idCounter","proto$1","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","aria","ariaTarget","newItems","controls","_eventsRoot","renderHtml","preRender","parentEventsRoot","_nativeEvents","bindPendingEvents","border-top-width","border-right-width","border-bottom-width","border-left-width","bindStates","parentCtrl","getOffset","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","focusFirst","focusElements","moveFocusToIndex","lastAriaIndex","moveFocus","parentRole","submenu","enter","up","tab","handleNonTabOrEscEvent","selectorCache","Container","_items","bodyClasses","containerCls","keyboard","focusCtrl","keyboardNav","statusbar","oldItem","newItem","ctrlItems","defaultType","renderNew","curItems","beforeItems","afterItems","recalc","getDocumentSize","updateWithTouchData","changedTouches","DragHelper","$eventOverlay","downButton","drag","handleElement","docSize","runtimeStyle","zIndex","documentClickHandler","documentScrollHandler","windowResizeHandler","hasModal","$_c9juz9uzjkmcwskb","renderScroll","repaintScroll","hasScrollH","hasScrollV","repaintAxis","axisName","posName","sizeName","contentSizeName","hasScroll","ax","scrollBarElm","scrollThumbElm","scrollSize","posNameLower","sizeNameLower","addScroll","addScrollAxis","deltaPosName","scrollStart","axisId","draghelper","autoScroll","_hasScroll","Panel","_preBodyHtml","$_4ci2x6v1jkmcwski","resizeToContent","visiblePanels","zOrder","skipOrHidePanels","clickCtrl","bindDocumentClickHandler","bindDocumentScrollHandler","repositionPanel","bindWindowResizeHandler","docElm_1","clientWidth_1","clientHeight_1","FloatPanel","scrollY$$1","toggleFixedChildPanels","_autoFixY","addRemove","topModal","modal","modalBlockEl","currentZIndex","$modalBlockEl_1","prefix_1","popover","describedBy","removeVisiblePanel","bodyRole","isFixed$1","inlineToolbarContainer","render$1","fixedToolbarContainer","_fixed","bodyPos","scrollContainerPos","$_aqv3nuufjkmcwshc","$_575jhev2jkmcwskj","$_7k92xgtrjkmcwsfn","Tooltip","Widget","tooltips","_tooltip","Progress","setValue","updateLiveRegion","Notification","closeButton","notificationStyle","getEditorContainer","getContainerWidth","prePositionNotifications","positionNotifications","firstItem","closeCallback","extendedArgs","notif","oldMetaValue","toggleFullScreenState","contentValue","noScaleMetaValue","toggleBodyFullScreenClasses","checkFullscreenWindows","_fullscreen","handleWindowResize","lastSize_1","Window$$1","closeClass","needsRecalc","statusbar$$1","headerW","headEl","headerH","headerHtml","footerHtml","fullscreen","slowRendering","_timer","_initial","dragHelper","getContentWindow","MessageBox","OK","OK_CANCEL","YES_NO","YES_NO_CANCEL","msgBox","createButton","status$$1","primary","subtype","onClick","onCancel","features","alert$$1","choiceCallback","confirm$$1","close$$1","window$$1","$_f0tepxtqjkmcwsfm","Layout","firstControlClass","lastControlClass","containerClass","firstClass","lastClass","lastItem","controlClass","AbsoluteLayout","Button","btnStyle","btnElm","ariaPressed","textHtml","textCls","setButtonText","$span","iconElm","BrowseButton","ButtonGroup","Checkbox","global$13","ComboBox","subinput","showMenu","statusLevel","statusMessage","lineHeight","openElm","innerPadding","inputElm","openBtnHtml","extraAttrs","statusHtml","showAutoComplete","term","previewUrl","hideMenu","statusIconElm","focusIdx","ColorBox","onaction","repaintColor","background","PanelButton","panelSettings","hidePanel","rtlRels","ltrRels","popoverAlign","isTop","ColorButton","_color","resetColor","onClickHandler","global$14","ColorPicker","hsv","hueRootElm","huePointElm","svRootElm","svPointElm","updateColor","hueUpdate","updateSaturationAndValue","updateHue","_repaint","_svdraghelper","_hdraghelper","rgb","_rendered","hueHtml","stops","getOldIeFallbackHtml","gradientPrefix","stopsList","gradientCssText","DropZone","cfg","hidefocus","toggleDragClass","Path","delimiter","_getDataPathHtml","ElementPath","elementpath","outParents","FormItem","Form","labelGap","formItemDefaults","formItem","recalcLabels","maxLabelWidth","labels","labelGapCalc","labelCtrl","labelWidth","FieldSet","unique$1","$_g9js5fw5jkmcwsoh","$_dg0wqww4jkmcwsog","$_9gi0tmw2jkmcwsob","$_9vmnzpwcjkmcwsph","$_22q3m2wfjkmcwsps","$_60zxbqwejkmcwspr","$_7ota5pwljkmcwsq4","$_fknyifwkjkmcwsq1","windows$1","$_4dmnqawmjkmcwsq6","$_21yllowojkmcwsqc","$_993j3rwpjkmcwsqg","$_4sbeluwjjkmcwsq0","$_g4vzapwijkmcwspx","$_3tbwnywtjkmcwsqr","$_622morwdjkmcwspi","$_adk4mbw6jkmcwsok","$_bf8vd5w1jkmcwso8","$_4ig9ruw0jkmcwso7","isChildOfContentEditableTrue","getElementText","getOrGenerateId","isAnchor","isValidAnchor","isHeader","isValidHeader","getLevel","headerTarget","headerId","anchorTarget","anchorId","anchorText","getHeaderTargets","getAnchorTargets","getTargetElements","hasTitle","find$3","$_cb7rvvvxjkmcwsnn","getActiveEditor","history","HISTORY_LENGTH","clearHistory","toMenuItem","staticMenuItem","isUniqueUrl","foundTarget","getSetting","createMenuItems","fileType","fromHistoryMenuItems","historyItems","uniqueHistory","fromMenuItems","filteredTargets","anchorMenuItems","topAnchor","bottomAchor","bothEmpty","typeahead_urls","filterByQuery","addToHistory","lowerCaseTerm","getTitle","linkDetails","setupAutoCompleteHandler","linkTargets","statusToUiState","setupLinkValidatorHandler","validatorHandler","filepicker_validator_handler","validateUrl_1","uiState","FilePicker","actionCallback","fileBrowserCallback","fileBrowserCallbackTypes","file_browser_callback_types","file_browser_callback","FitLayout","contLayoutRect","FlexLayout","contPaddingBox","contSettings","totalFlex","availableSpace","ctrlLayoutRect","ctrlSettings","maxSize","maxAlignEndPos","minSizeName","maxSizeName","beforeName","innerSizeName","deltaSizeName","alignAxisName","alignInnerSizeName","alignSizeName","alignMinSizeName","alignBeforeName","alignAfterName","alignDeltaSizeName","alignContentSizeName","maxSizeItems","maxFlexSize","FlowLayout","endClass","$_13w0c1wzjkmcwsri","$_epq3p6wyjkmcwsrh","addFormatChangedListener","changed","postRenderFormatToggle","alignFormats","defaultAlign","alignMenuItems","onShowMenu","formatName","alignnone","$_ffg0cgx1jkmcwsrx","getFirstFont","findMatchingValue","font","createFontNameListBoxChangeHandler","createFormats","getFontItems","defaultFontsFormats","fonts","font_formats","registerButtons","fixedWidth","$_1be6fjx3jkmcwss1","findMatchingValue$1","pt","px","createFontSizeListBoxChangeHandler","getFontSizeItems","defaultFontsizeFormats","fontsizeFormats","fontsize_formats","registerButtons$1","$_fnu5cxx4jkmcwss4","hideMenuObjects","hideFormatMenuItems","createFormatMenu","newFormats","defaultStyleFormats","createStylesMenu","style_formats_merge","style_formats","itemDefaults","registerMenuItems","formatMenu","registerButtons$2","style_formats_autohide","$_cmdomhx5jkmcwss6","defaultBlocks","createFormats$1","createListBoxChangeHandler","lazyFormatSelectBoxItems","buildMenuItems","register$4","block_formats","$_cl4rffx6jkmcwssb","createCustomMenuItems","nameList","isSeparator$1","trimMenuItems","menuItems2","createContextMenuItems","outputMenuItems","createInsertMenu","insertButtonItems","insert_button_items","registerButtons$3","oncreatemenu","register$5","$_7ix8zax7jkmcwssd","registerFormatButtons","registerCommandButtons","selectall","visualaid","newdocument","registerCommandToggleButtons","registerButtons$4","registerMenuItems$1","register$6","$_gbsmm2x8jkmcwssh","toggleUndoRedoState","checkState","typeFn","registerMenuItems$2","registerButtons$5","register$7","$_1bdkmax9jkmcwssr","toggleVisualAidState","registerMenuItems$3","register$8","$_21pl3hxajkmcwsst","setupEnvironment","setupUiContainer","setupRtlMode","setupHideFloatPanels","$_drujjnwxjkmcwsrc","GridLayout","cols","posX","posY","spacingH","spacingV","alignH","alignV","ctrlMinWidth","ctrlMinHeight","availableWidth","availableHeight","reverseRows","colWidths","rowHeights","ceil","flexV","flexWidths","Iframe$1","InfoBox","severity","Label","strong","startMinH","targetCtrl","forName","Toolbar$1","MenuBar","isChildOf$1","MenuButton","_renderOpen","animate","activeMenu","hasVisibleSiblingMenu","overCtrl","Menu","itemsFactory","factory","hideThrobber","requestTime","_hasIcons","ListBox","selectedText","lastItemCtrl","menuValues","_values","matchingValues","activateMenuItemsByValue","hasMenus","getSelectedItem","selectedItem","toggleTextStyle","_textStyle","textElm","MenuItem","ariaHideMenu","_parentMenu","_lastRel","iconHtml","convertShortcut","escapeRegExp","markMatches","boldMatches","hover","Radio","ResizeHandle","resizeDragHelper","createOptions","strOptions","SelectBox","_options","minVal","maxVal","setAriaProp","updateSliderHandle","maxHandlePos","shortSizeName","stylePosName","handleEl","orientation","_minValue","_maxValue","previewFilter","Slider","minValue","maxValue","_initValue","screenCordName","toFraction","fromFraction","handleKeyboard","alter","handleDrag","startHandlePos","handlePos","_dragHelper","Spacer","SplitButton","mainButtonElm","menuButtonElm","_menuBtnText","StackLayout","TabPanel","activeTabElm","activeTabId","tabsHtml","activeTab","targetParent","headH","TextBox","getApi","ReflowQueue","Scrollable","Movable","Resizable","Window","FormatControls","Iframe","Toolbar","registerToFactory"],"mappings":"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A,IAAW0gB,EAAU1gB,EAASA,EAAOpL,WAE5E,GADAwX,EAAUpM,EAAOqM,GACbD,EACF,OAAOA,KAMb0U,EAAmB,SAAU/lB,EAAM6lB,EAAWvU,EAAawU,GAC7D,IAAIzU,EAASpM,EAAQkb,EACrB,GAAIngB,EAAM,CAER,GADAqR,EAAUrR,EAAKsR,GACXqU,GAAYtU,IAAYsU,EAC1B,OAEF,GAAItU,EAAS,CACX,IAAKyU,EACH,IAAK3F,EAAQ9O,EAAQwU,GAAY1F,EAAOA,EAAQA,EAAM0F,GACpD,IAAK1F,EAAM0F,GACT,OAAO1F,EAIb,OAAO9O,EAGT,GADApM,EAASjF,EAAKnG,WACVoL,GAAUA,IAAW0gB,EACvB,OAAO1gB,IAIbtT,KAAK8H,QAAU,WACb,OAAOuG,GAETrO,KAAK8f,KAAO,SAAUqU,GAEpB,OADA9lB,EAAO4lB,EAAY5lB,EAAM,aAAc,cAAe8lB,GAC/C9lB,GAETrO,KAAK+f,KAAO,SAAUoU,GAEpB,OADA9lB,EAAO4lB,EAAY5lB,EAAM,YAAa,kBAAmB8lB,GAClD9lB,GAETrO,KAAKq0B,MAAQ,SAAUF,GAErB,OADA9lB,EAAO+lB,EAAiB/lB,EAAM,YAAa,kBAAmB8lB,GACvD9lB,GAIX,IAkSIimB,GACAC,GACAC,GApSAC,IACF,UACA,QACA,UACA,MACA,KACA,aACA,SACA,OACA,WACA,SACA,SACA,OACA,OACA,MACA,UACA,UACA,OACA,IACA,KACA,WACA,KACA,SACA,UACA,SACA,aACA,KACA,KACA,KACA,KACA,KACA,KACA,UACA,MACA,MACA,YACA,OACA,MACA,KACA,KACA,KACA,KACA,QACA,QACA,QACA,QACA,KACA,KACA,KACA,WAEEC,IACF,OACA,OACA,WACA,KACA,MACA,QACA,KACA,MACA,QACA,UACA,OACA,OACA,QACA,QACA,SACA,MACA,SAEEC,IACF,KACA,MAEEC,IACF,QACA,QACA,SAEEC,IACF,KACA,KACA,KACA,KACA,KACA,KACA,IACA,MACA,UACA,MACA,OACA,aACA,SACA,MACA,WACA,SACA,SACA,UACA,UACA,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OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,WAAA,OACAC,cAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,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","file":"js/app.8cd26cbe.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t44: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t44: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"0\":\"973236c6\",\"1\":\"865619e8\",\"2\":\"0de02538\",\"3\":\"1a528cd7\",\"4\":\"c4668b54\",\"5\":\"8a6c83d5\",\"6\":\"f006723e\",\"7\":\"4d4f9171\",\"8\":\"d44d0577\",\"9\":\"74587a37\",\"10\":\"71534d98\",\"11\":\"7cd41e2f\",\"12\":\"e941c980\",\"13\":\"c04c3a88\",\"14\":\"2861858d\",\"15\":\"b220a636\",\"16\":\"86371c4f\",\"17\":\"e87c23d0\",\"18\":\"1477fe99\",\"19\":\"12d5af6f\",\"20\":\"947e534b\",\"21\":\"0a748ceb\",\"22\":\"97eeae9a\",\"23\":\"cfb3bff3\",\"24\":\"66b683c5\",\"25\":\"4c5a4090\",\"26\":\"8e91dccd\",\"27\":\"9a9e740d\",\"28\":\"3cebc30a\",\"29\":\"72d77938\",\"30\":\"5807be19\",\"31\":\"c284933a\",\"32\":\"e06522d0\",\"33\":\"148f6cbe\",\"34\":\"8c81ff90\",\"35\":\"ac3d6c6d\",\"36\":\"5747feeb\",\"37\":\"0f59afe1\",\"38\":\"680e8819\",\"39\":\"12cb5166\",\"40\":\"7dd67ba8\",\"41\":\"c82f24f3\",\"42\":\"1847b5cb\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"2\":1,\"3\":1,\"9\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + chunkId + \".\" + {\"0\":\"31d6cfe0\",\"1\":\"31d6cfe0\",\"2\":\"5f411518\",\"3\":\"0ec8476b\",\"4\":\"31d6cfe0\",\"5\":\"31d6cfe0\",\"6\":\"31d6cfe0\",\"7\":\"31d6cfe0\",\"8\":\"31d6cfe0\",\"9\":\"855b3d01\",\"10\":\"31d6cfe0\",\"11\":\"31d6cfe0\",\"12\":\"31d6cfe0\",\"13\":\"31d6cfe0\",\"14\":\"31d6cfe0\",\"15\":\"31d6cfe0\",\"16\":\"31d6cfe0\",\"17\":\"31d6cfe0\",\"18\":\"31d6cfe0\",\"19\":\"31d6cfe0\",\"20\":\"31d6cfe0\",\"21\":\"31d6cfe0\",\"22\":\"31d6cfe0\",\"23\":\"31d6cfe0\",\"24\":\"31d6cfe0\",\"25\":\"31d6cfe0\",\"26\":\"31d6cfe0\",\"27\":\"31d6cfe0\",\"28\":\"31d6cfe0\",\"29\":\"31d6cfe0\",\"30\":\"31d6cfe0\",\"31\":\"31d6cfe0\",\"32\":\"31d6cfe0\",\"33\":\"31d6cfe0\",\"34\":\"31d6cfe0\",\"35\":\"31d6cfe0\",\"36\":\"31d6cfe0\",\"37\":\"31d6cfe0\",\"38\":\"31d6cfe0\",\"39\":\"31d6cfe0\",\"40\":\"31d6cfe0\",\"41\":\"31d6cfe0\",\"42\":\"31d6cfe0\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.request = request;\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\t\tvar script = document.createElement('script');\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tfunction onScriptComplete(event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\tvar error = new Error('Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')');\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\thead.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([14,43]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJcAAAA+CAYAAAAmjIlfAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFHGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE4LTA4LTE0VDE3OjQwOjU1LTAzOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOC0wOC0xNFQxNzo0MTo0Ni0wMzowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOC0wOC0xNFQxNzo0MTo0Ni0wMzowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplM2Q0YTZjMi0xNTJi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\"","\nimport Vue from 'vue';\n\nimport { Api } from '../api';\nimport Global from '../global';\nimport '../../common/base.js';\n\nimport '../../assets/js/tinymce/tinymce'\nimport '../../assets/js/tinymce/themes/modern/theme';\nimport '../../assets/js/tinymce/plugins/link/plugin';\nimport '../../assets/js/tinymce/plugins/paste/plugin';\nimport '../../assets/js/tinymce/plugins/lists/plugin';\nimport '../../assets/js/tinymce/plugins/code/plugin';\nimport '../../assets/js/tinymce/plugins/preview/plugin';\nimport '../../assets/js/tinymce/plugins/advlist/plugin';\nimport '../../assets/js/tinymce/plugins/image/plugin';\nimport '../../assets/js/tinymce/plugins/media/plugin';\n\nimport * as $ from 'jquery';\n\n$(document).on('focusin', () => {\n var isModal = $(event.target).hasClass(\"modal-content\")\n if (isModal) {\n $(event.target).removeAttr(\"tabindex\")\n console.log(event.target)\n }\n\n});\n\nVue.directive('htmleditor', {\n twoWay: true,\n inserted: (el, binding, vnode) => {\n\n let _lastfileuploaded;\n let _interval;\n let _hascustomtag;\n\n if (binding && binding.value) {\n _hascustomtag = binding.value.hascustomtag == true;\n //console.log(\"oioioi\",_hascustomtag);\n }\n\n tinymce.PluginManager.add('customtag', (editor) => {\n\n editor.addButton('customTagButton', {\n text: 'Tag de Resposta',\n icon: false,\n onclick: () => {\n _pluginWindowsCustomTag(editor)\n }\n });\n\n editor.addMenuItem('customTagMenuItem', {\n text: 'Tag de Resposta',\n context: 'tools',\n onclick: () => {\n _pluginWindowsCustomTag(editor)\n }\n });\n });\n\n function _pluginWindowsCustomTag(editor) {\n editor.windowManager.open({\n title: 'Insira a Resposta',\n body: [\n { type: 'textbox', name: 'description', label: 'Resposta' }\n ],\n onsubmit: (e) => {\n editor.insertContent('##' + e.data.description + '##');\n }\n });\n }\n\n tinymce.init({\n target: el,\n mode: \"inline\",\n language_url: '/js/tinymce-pt_br.js',\n plugins: ['link', 'paste', 'lists', 'code', 'preview', 'advlist', 'image', 'media', _hascustomtag ? 'customtag' : ''],\n height: 400,\n media_live_embeds: true,\n toolbar: \"formatselect | bold italic strikethrough forecolor backcolor | link | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat | image | media\" + (_hascustomtag ? \" | customTagButton\" : \"\"),\n extended_valid_elements: \"customtag\",\n custom_elements: \"customtag\",\n image_advtab: true,\n file_picker_types: 'image file media',\n setup: (editor) => {\n\n _interval = setInterval(() => {\n if (el.value && el.value.length > 0) {\n tinymce.get(el.id).getBody().innerHTML = el.value;\n clearInterval(_interval)\n \n }\n }, 1000)\n\n editor.on('change', () => {\n clearInterval(_interval)\n var value = editor.getContent();\n value = value.replace(/'/g, '’');\n value = value.replace(/\\r?\\n|\\r/g, '');\n\n el.value = value;\n\n \n setVModelValue(value, vnode)\n });\n },\n\n relative_urls: false,\n remove_script_host: false,\n media_poster: false,\n media_filter_html: false,\n automatic_uploads: true,\n images_upload_url: Global.URL_DOWNLOAD,\n\n images_upload_handler: (blobInfo, success, failure) => {\n new Api('document/upload', Global.END_POINT_PORTAL_CORPORATIVO)\n .upload(blobInfo.blob(), \"editorhtml\", true)\n .then(result => {\n success(Global.URL_DOWNLOAD + \"editorhtml/\" + result.data[0]);\n }, (err) => {\n failure('Erro ao fazer upload');\n });\n },\n audio_template_callback: function (data) {\n return '';\n },\n video_template_callback: function (data) {\n if (_lastfileuploaded && _lastfileuploaded.indexOf(\"audio\") > -1)\n return '';\n else\n return '';\n },\n file_picker_callback: (cb, value, meta) => {\n //alert(meta.filetype);\n if (meta.filetype == 'image') {\n var input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('accept', 'image/*');\n //console.log(\"dados \", input);\n //console.log(\"dados \", input.file);\n input.onchange = () => {\n //console.log(\"dados \", input.files.length);\n var file = input.files[0];\n _lastfileuploaded = file.type;\n var reader = new FileReader();\n reader.onload = () => {\n var id = 'blobid' + (new Date()).getTime();\n var blobCache = tinymce.activeEditor.editorUpload.blobCache;\n var base64 = reader.result.split(',')[1];\n var blobInfo = blobCache.create(id, file, base64);\n blobCache.add(blobInfo);\n cb(blobInfo.blobUri(), { title: file.name });\n };\n reader.readAsDataURL(file);\n };\n input.click();\n }\n\n if (meta.filetype == 'media') {\n var input = document.createElement('input');\n input.setAttribute('type', 'file'); \n input.setAttribute('accept', 'video/*, audio/*');\n input.onchange = () => {\n //console.log(\"dados media \", input.files.length);\n //console.log(\"input caixa....\", input.files[0].size);\n var file = input.files[0];\n if (file.size > 2 * 1024 * 1000) {\n //event.target.files = []; \n //this.defaultErrorResult(\"Ops! Máximo de 1MB.\");\n alert(\"Ops! Arquivos de video/audio máximo de 2MB.\");\n return false;\n }\n _lastfileuploaded = file.type;\n var reader = new FileReader();\n reader.onload = () => {\n var id = 'blobid' + (new Date()).getTime();\n var blobCache = tinymce.activeEditor.editorUpload.blobCache;\n var base64 = reader.result.split(',')[1];\n var blobInfo = blobCache.create(id, file, base64);\n blobCache.add(blobInfo);\n cb(blobInfo.blobUri());\n };\n reader.readAsDataURL(file);\n };\n input.click();\n }\n\n }\n });\n\n function findVModelName(vnode) {\n return vnode.data.directives.find(function (o) {\n return o.name === 'model';\n }).expression;\n }\n\n function setVModelValue(value, vnode) {\n var prop = findVModelName(vnode)\n eval('vnode.context.' + prop + ' = ' + '\\'' + value + '\\'')\n }\n }\n})","// 4.8.2 (2018-08-09)\n(function () {\n(function () {\n 'use strict';\n\n var noop = function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n };\n\n var compose = function (fa, fb) {\n return function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n return fa(fb.apply(null, arguments));\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\n var curry = function (f) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = new Array(arguments.length - 1);\n for (var i = 1; i < arguments.length; i++)\n args[i - 1] = arguments[i];\n return function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n var newArgs = new Array(arguments.length);\n for (var j = 0; j < newArgs.length; j++)\n newArgs[j] = arguments[j];\n var all = args.concat(newArgs);\n return f.apply(null, all);\n };\n };\n\n var die = function (msg) {\n return function () {\n throw new Error(msg);\n };\n };\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\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\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\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\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\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 $_89i3w1cjkmcwk2c = { getOrDie: getOrDie };\n\n var url = function () {\n return $_89i3w1cjkmcwk2c.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 $_ci16mbjkmcwk2b = {\n createObjectURL: createObjectURL,\n revokeObjectURL: revokeObjectURL\n };\n\n var nav = navigator;\n var userAgent = nav.userAgent;\n var opera;\n var webkit;\n var ie;\n var ie11;\n var ie12;\n var gecko;\n var mac;\n var iDevice;\n var android;\n var fileApi;\n var phone;\n var tablet;\n var 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 && !!$_ci16mbjkmcwk2b.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 $_cvvl9iajkmcwk25 = {\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 $_3l01gcijkmcwk99 = {\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 ($_cvvl9iajkmcwk25.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 $_3l01gcijkmcwk99.setTimeout(tryScroll);\n return;\n }\n readyHandler();\n };\n if (doc.addEventListener && !($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.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;\n var support;\n var Expr;\n var getText;\n var isXML;\n var tokenize;\n var compile;\n var select;\n var outermostContext;\n var sortInput;\n var hasDuplicate;\n var setDocument;\n var document$1;\n var docElem;\n var documentIsHTML;\n var rbuggyQSA;\n var rbuggyMatches;\n var matches;\n var contains$1;\n var expando = 'sizzle' + -new Date();\n var preferredDoc = window.document;\n var dirruns = 0;\n var done = 0;\n var classCache = createCache();\n var tokenCache = createCache();\n var compilerCache = createCache();\n var sortOrder = function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n return 0;\n };\n var strundefined = typeof undefined;\n var MAX_NEGATIVE = 1 << 31;\n var hasOwn = {}.hasOwnProperty;\n var arr = [];\n var pop = arr.pop;\n var push_native = arr.push;\n var push$1 = arr.push;\n var slice$1 = arr.slice;\n var 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 };\n var booleans = 'checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped';\n var whitespace = '[\\\\x20\\\\t\\\\r\\\\n\\\\f]';\n var identifier = '(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+';\n var attributes = '\\\\[' + whitespace + '*(' + identifier + ')(?:' + whitespace + '*([*^$|!~]?=)' + whitespace + '*(?:\\'((?:\\\\\\\\.|[^\\\\\\\\\\'])*)\\'|\"((?:\\\\\\\\.|[^\\\\\\\\\"])*)\"|(' + identifier + '))|)' + whitespace + '*\\\\]';\n var pseudos = ':(' + identifier + ')(?:\\\\((' + '(\\'((?:\\\\\\\\.|[^\\\\\\\\\\'])*)\\'|\"((?:\\\\\\\\.|[^\\\\\\\\\"])*)\")|' + '((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|' + attributes + ')*)|' + '.*' + ')\\\\)|)';\n var rtrim = new RegExp('^' + whitespace + '+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)' + whitespace + '+$', 'g');\n var rcomma = new RegExp('^' + whitespace + '*,' + whitespace + '*');\n var rcombinators = new RegExp('^' + whitespace + '*([>+~]|' + whitespace + ')' + whitespace + '*');\n var rattributeQuotes = new RegExp('=' + whitespace + '*([^\\\\]\\'\"]*?)' + whitespace + '*\\\\]', 'g');\n var rpseudo = new RegExp(pseudos);\n var ridentifier = new RegExp('^' + identifier + '$');\n var 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 };\n var rinputs = /^(?:input|select|textarea|button)$/i;\n var rheader = /^h\\d$/i;\n var rnative = /^[^{]+\\{\\s*\\[native \\w/;\n var rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/;\n var rsibling = /[+~]/;\n var rescape = /'|\\\\/g;\n var runescape = new RegExp('\\\\\\\\([\\\\da-f]{1,6}' + whitespace + '?|(' + whitespace + ')|.)', 'ig');\n var 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 $_9g1fibmjkmcwkbu = {\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' && $_9g1fibmjkmcwkbu.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 $_9g1fibmjkmcwkbu.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 $_9g1fibmjkmcwkbu.map(s.split(d || ','), trim);\n };\n var _addCacheSuffix = function (url) {\n var cacheSuffix = $_cvvl9iajkmcwk25.cacheSuffix;\n if (cacheSuffix) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + cacheSuffix;\n }\n return url;\n };\n var $_4ujg4tljkmcwkbk = {\n trim: trim,\n isArray: $_9g1fibmjkmcwkbu.isArray,\n is: is,\n toArray: $_9g1fibmjkmcwkbu.toArray,\n makeMap: makeMap,\n each: $_9g1fibmjkmcwkbu.each,\n map: $_9g1fibmjkmcwkbu.map,\n grep: $_9g1fibmjkmcwkbu.filter,\n inArray: $_9g1fibmjkmcwkbu.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;\n var push$2 = Array.prototype.push;\n var slice$2 = Array.prototype.slice;\n var rquickExpr$1 = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/;\n var Event$$1 = EventUtils.Event;\n var skipUniques = $_4ujg4tljkmcwkbk.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 = $_4ujg4tljkmcwkbk.makeMap('fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom', ' ');\n var booleanMap = $_4ujg4tljkmcwkbk.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 = {};\n var 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 $_4ujg4tljkmcwkbk.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 $_4ujg4tljkmcwkbk.extend(DomQuery, {\n extend: $_4ujg4tljkmcwkbk.extend,\n makeArray: function (object) {\n if (isWindow(object) || object.nodeType) {\n return [object];\n }\n return $_4ujg4tljkmcwkbk.toArray(object);\n },\n inArray: inArray,\n isArray: $_4ujg4tljkmcwkbk.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 $_4ujg4tljkmcwkbk.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 ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.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 ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.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 $_2kio3msjkmcwkcv = {\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: $_2kio3msjkmcwkcv.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 $_ei4lq0rjkmcwkcq = {\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: $_2kio3msjkmcwkcv.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 $_85w4ndtjkmcwkcx = {\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 function DeviceType (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 = $_2kio3msjkmcwkcv.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 = $_2kio3msjkmcwkcv.detect(os.versionRegexes, userAgent);\n return {\n current: os.name,\n version: version\n };\n });\n };\n var $_6qxoukvjkmcwkd5 = {\n detectBrowser: detectBrowser,\n detectOs: detectOs\n };\n\n var contains$2 = function (str, substr) {\n return str.indexOf(substr) !== -1;\n };\n\n\n\n var trim$2 = 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$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 $_6vxr68wjkmcwkdc = {\n browsers: constant(browsers),\n oses: constant(oses)\n };\n\n var detect$2 = function (userAgent) {\n var browsers = $_6vxr68wjkmcwkdc.browsers();\n var oses = $_6vxr68wjkmcwkdc.oses();\n var browser = $_6qxoukvjkmcwkd5.detectBrowser(browsers, userAgent).fold($_ei4lq0rjkmcwkcq.unknown, $_ei4lq0rjkmcwkcq.nu);\n var os = $_6qxoukvjkmcwkd5.detectOs(oses, userAgent).fold($_85w4ndtjkmcwkcx.unknown, $_85w4ndtjkmcwkcx.nu);\n var deviceType = DeviceType(os, browser, userAgent);\n return {\n browser: browser,\n os: os,\n deviceType: deviceType\n };\n };\n var $_c5ox8vqjkmcwkco = { detect: detect$2 };\n\n var detect$3 = cached(function () {\n var userAgent = navigator.userAgent;\n return $_c5ox8vqjkmcwkco.detect(userAgent);\n });\n var $_b1ykk4ojkmcwkcj = { 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 $_c8e5uh12jkmcwke2 = {\n ATTRIBUTE: Node.ATTRIBUTE_NODE,\n CDATA_SECTION: Node.CDATA_SECTION_NODE,\n COMMENT: Node.COMMENT_NODE,\n DOCUMENT: Node.DOCUMENT_NODE,\n DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE,\n DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE,\n ELEMENT: Node.ELEMENT_NODE,\n TEXT: Node.TEXT_NODE,\n PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE,\n ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE,\n ENTITY: Node.ENTITY_NODE,\n NOTATION: Node.NOTATION_NODE\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 value = function (element) {\n return element.dom().nodeValue;\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) === $_c8e5uh12jkmcwke2.COMMENT || name(element) === '#comment';\n };\n var isElement = isType$1($_c8e5uh12jkmcwke2.ELEMENT);\n var isText = isType$1($_c8e5uh12jkmcwke2.TEXT);\n var isDocument = isType$1($_c8e5uh12jkmcwke2.DOCUMENT);\n var $_2xwdjv11jkmcwke0 = {\n name: name,\n type: type,\n value: value,\n isElement: isElement,\n isText: isText,\n isDocument: isDocument,\n isComment: isComment\n };\n\n var keys = Object.keys;\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\n var rawSet = function (dom, key, value) {\n if (isString(value) || isBoolean(value) || isNumber(value)) {\n dom.setAttribute(key, value + '');\n } else {\n console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n throw new Error('Attribute value was not simple');\n }\n };\n var set = function (element, key, value) {\n rawSet(element.dom(), key, value);\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 = function (element, key) {\n var v = element.dom().getAttribute(key);\n return v === null ? undefined : v;\n };\n var has = 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 hasNone = function (element) {\n var attrs = element.dom().attributes;\n return attrs === undefined || attrs === null || attrs.length === 0;\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 var transferOne = function (source, destination, attr) {\n if (has(source, attr) && !has(destination, attr))\n set(destination, attr, get(source, attr));\n };\n var transfer = function (source, destination, attrs) {\n if (!$_2xwdjv11jkmcwke0.isElement(source) || !$_2xwdjv11jkmcwke0.isElement(destination))\n return;\n each(attrs, function (attr) {\n transferOne(source, destination, attr);\n });\n };\n var $_29helg15jkmcwkf0 = {\n clone: clone,\n set: set,\n setAll: setAll,\n get: get,\n has: has,\n remove: remove,\n hasNone: hasNone,\n transfer: transfer\n };\n\n var inBody = function (element) {\n var dom = $_2xwdjv11jkmcwke0.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 var $_g4uup916jkmcwkfg = {\n body: body,\n getBody: getBody,\n inBody: inBody\n };\n\n var isSupported = function (dom) {\n return dom.style !== undefined;\n };\n var $_crv2n17jkmcwkfl = { isSupported: isSupported };\n\n var internalSet = function (dom, property, value) {\n if (!isString(value)) {\n console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);\n throw new Error('CSS value must be a string: ' + value);\n }\n if ($_crv2n17jkmcwkfl.isSupported(dom))\n dom.style.setProperty(property, value);\n };\n var internalRemove = function (dom, property) {\n if ($_crv2n17jkmcwkfl.isSupported(dom))\n dom.style.removeProperty(property);\n };\n var set$1 = function (element, property, value) {\n var dom = element.dom();\n internalSet(dom, property, value);\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 setOptions = function (element, css) {\n var dom = element.dom();\n each$3(css, function (v, k) {\n v.fold(function () {\n internalRemove(dom, k);\n }, function (value) {\n internalSet(dom, k, value);\n });\n });\n };\n var get$1 = function (element, property) {\n var dom = element.dom();\n var styles = window.getComputedStyle(dom);\n var r = styles.getPropertyValue(property);\n var v = r === '' && !$_g4uup916jkmcwkfg.inBody(element) ? getUnsafeProperty(dom, property) : r;\n return v === null ? undefined : v;\n };\n var getUnsafeProperty = function (dom, property) {\n return $_crv2n17jkmcwkfl.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 getAllRaw = function (element) {\n var css = {};\n var dom = element.dom();\n if ($_crv2n17jkmcwkfl.isSupported(dom)) {\n for (var i = 0; i < dom.style.length; i++) {\n var ruleName = dom.style.item(i);\n css[ruleName] = dom.style[ruleName];\n }\n }\n return css;\n };\n var isValidValue = function (tag, property, value) {\n var element = Element$$1.fromTag(tag);\n set$1(element, property, value);\n var style = getRaw(element, property);\n return style.isSome();\n };\n var remove$1 = function (element, property) {\n var dom = element.dom();\n internalRemove(dom, property);\n if ($_29helg15jkmcwkf0.has(element, 'style') && trim$2($_29helg15jkmcwkf0.get(element, 'style')) === '') {\n $_29helg15jkmcwkf0.remove(element, 'style');\n }\n };\n var preserve = function (element, f) {\n var oldStyles = $_29helg15jkmcwkf0.get(element, 'style');\n var result = f(element);\n var restore = oldStyles === undefined ? $_29helg15jkmcwkf0.remove : $_29helg15jkmcwkf0.set;\n restore(element, 'style', oldStyles);\n return result;\n };\n var copy = function (source, target) {\n var sourceDom = source.dom();\n var targetDom = target.dom();\n if ($_crv2n17jkmcwkfl.isSupported(sourceDom) && $_crv2n17jkmcwkfl.isSupported(targetDom)) {\n targetDom.style.cssText = sourceDom.style.cssText;\n }\n };\n var reflow = function (e) {\n return e.dom().offsetWidth;\n };\n var transferOne$1 = function (source, destination, style) {\n getRaw(source, style).each(function (value) {\n if (getRaw(destination, style).isNone())\n set$1(destination, style, value);\n });\n };\n var transfer$1 = function (source, destination, styles) {\n if (!$_2xwdjv11jkmcwke0.isElement(source) || !$_2xwdjv11jkmcwke0.isElement(destination))\n return;\n each(styles, function (style) {\n transferOne$1(source, destination, style);\n });\n };\n var $_4enzit13jkmcwke5 = {\n copy: copy,\n set: set$1,\n preserve: preserve,\n setAll: setAll$1,\n setOptions: setOptions,\n remove: remove$1,\n get: get$1,\n getRaw: getRaw,\n getAllRaw: getAllRaw,\n isValidValue: isValidValue,\n reflow: reflow,\n transfer: transfer$1\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 $_ea405s1djkmcwkgi = { toArray: toArray$1 };\n\n var node = function () {\n var f = $_89i3w1cjkmcwk2c.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 $_ggq6431fjkmcwkgt = {\n documentPositionPreceding: documentPositionPreceding,\n documentPositionContainedBy: documentPositionContainedBy\n };\n\n var ELEMENT = $_c8e5uh12jkmcwke2.ELEMENT;\n var DOCUMENT = $_c8e5uh12jkmcwke2.DOCUMENT;\n var is$1 = function (element, selector) {\n var elem = element.dom();\n if (elem.nodeType !== ELEMENT)\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 && dom.nodeType !== DOCUMENT || 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 var $_4jv6d81gjkmcwkgv = {\n all: all,\n is: is$1,\n one: one\n };\n\n var eq = function (e1, e2) {\n return e1.dom() === e2.dom();\n };\n var isEqualNode = function (e1, e2) {\n return e1.dom().isEqualNode(e2.dom());\n };\n var member = function (element, elements) {\n return exists(elements, curry(eq, element));\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 $_ggq6431fjkmcwkgt.documentPositionContainedBy(e1.dom(), e2.dom());\n };\n var browser = $_b1ykk4ojkmcwkcj.detect().browser;\n var contains$3 = browser.isIE() ? ieContains : regularContains;\n var $_e4hu6h1ejkmcwkgj = {\n eq: eq,\n isEqualNode: isEqualNode,\n member: member,\n contains: contains$3,\n is: $_4jv6d81gjkmcwkgv.is\n };\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 findIndex$2 = function (element) {\n return parent(element).bind(function (p) {\n var kin = children(p);\n return findIndex(kin, function (elem) {\n return $_e4hu6h1ejkmcwkgj.eq(element, elem);\n });\n });\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 siblings = function (element) {\n var filterSelf = function (elements) {\n return filter(elements, function (x) {\n return !$_e4hu6h1ejkmcwkgj.eq(element, x);\n });\n };\n return parent(element).map(children).map(filterSelf).getOr([]);\n };\n var offsetParent = function (element) {\n var dom = element.dom();\n return Option.from(dom.offsetParent).map(Element$$1.fromDom);\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($_ea405s1djkmcwkgi.toArray(element, prevSibling));\n };\n var nextSiblings = function (element) {\n return $_ea405s1djkmcwkgi.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 hasChildNodes = function (element) {\n return element.dom().hasChildNodes();\n };\n var spot = Immutable('element', 'offset');\n var leaf = function (element, offset) {\n var cs = children(element);\n return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset);\n };\n var $_ca6pc118jkmcwkfs = {\n owner: owner,\n defaultView: defaultView,\n documentElement: documentElement,\n parent: parent,\n findIndex: findIndex$2,\n parents: parents,\n siblings: siblings,\n prevSibling: prevSibling,\n offsetParent: offsetParent,\n prevSiblings: prevSiblings,\n nextSibling: nextSibling,\n nextSiblings: nextSiblings,\n children: children,\n child: child,\n firstChild: firstChild,\n lastChild: lastChild,\n childNodesCount: childNodesCount,\n hasChildNodes: hasChildNodes,\n leaf: leaf\n };\n\n var browser$1 = $_b1ykk4ojkmcwkcj.detect().browser;\n var firstElement = function (nodes) {\n return find(nodes, $_2xwdjv11jkmcwke0.isElement);\n };\n var getTableCaptionDeltaY = function (elm) {\n if (browser$1.isFirefox() && $_2xwdjv11jkmcwke0.name(elm) === 'table') {\n return firstElement($_ca6pc118jkmcwkfs.children(elm)).filter(function (elm) {\n return $_2xwdjv11jkmcwke0.name(elm) === 'caption';\n }).bind(function (caption) {\n return firstElement($_ca6pc118jkmcwkfs.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;\n var doc = body.ownerDocument;\n var pos;\n rootElm = rootElm ? rootElm : body;\n if (elm) {\n if (rootElm === body && elm.getBoundingClientRect && $_4enzit13jkmcwke5.get(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 = elm;\n while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) {\n x += offsetParent.offsetLeft || 0;\n y += offsetParent.offsetTop || 0;\n offsetParent = offsetParent.offsetParent;\n }\n offsetParent = elm.parentNode;\n while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) {\n x -= offsetParent.scrollLeft || 0;\n y -= offsetParent.scrollTop || 0;\n offsetParent = offsetParent.parentNode;\n }\n y += getTableCaptionDeltaY(Element$$1.fromDom(elm));\n }\n return {\n x: x,\n y: y\n };\n };\n var $_5o0xi0njkmcwkbz = { 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 return {\n map: map,\n bind: bind,\n anonBind: anonBind,\n toLazy: toLazy,\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 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 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 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 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 var idCount = 0;\n var loadedStates = {};\n var maxLoadTime;\n settings = settings || {};\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 $_3l01gcijkmcwk99.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 = $_4ujg4tljkmcwkbk._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 ('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($_2xwdjv11jkmcwke0.name(node));\n };\n };\n var isHeading = lazyLookup(headings);\n var isBlock = lazyLookup(blocks);\n var isInline = function (node) {\n return $_2xwdjv11jkmcwke0.isElement(node) && !isBlock(node);\n };\n var isBr = function (node) {\n return $_2xwdjv11jkmcwke0.isElement(node) && $_2xwdjv11jkmcwke0.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 $_bjermr1rjkmcwkij = {\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 ($_bjermr1rjkmcwkij.isElement(node) && isBookmarkNode(node)) {\n return;\n }\n for (i = children.length - 1; i >= 0; i--) {\n trimNode(dom, children[i]);\n }\n if ($_bjermr1rjkmcwkij.isDocument(node) === false) {\n if ($_bjermr1rjkmcwkij.isText(node) && node.nodeValue.length > 0) {\n var trimmedLength = $_4ujg4tljkmcwkbk.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 ($_bjermr1rjkmcwkij.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 $_br9sxm1pjkmcwki4 = { trimNode: trimNode };\n\n var makeMap$1 = $_4ujg4tljkmcwkbk.makeMap;\n var namedEntities;\n var baseEntities;\n var 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 '\"': '"',\n '\\'': ''',\n '<': '<',\n '>': '>',\n '&': '&',\n '`': '`'\n };\n reverseEntities = {\n '<': '<',\n '>': '>',\n '&': '&',\n '"': '\"',\n ''': '\\''\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 $_33qwr1sjkmcwkip = {\n encodeRaw: encodeRaw,\n encodeAllRaw: encodeAllRaw,\n encodeNumeric: encodeNumeric,\n encodeNamed: encodeNamed,\n getEncodeFunc: getEncodeFunc,\n decode: decode\n };\n\n var mapCache = {};\n var dummyObj = {};\n var makeMap$2 = $_4ujg4tljkmcwkbk.makeMap;\n var each$4 = $_4ujg4tljkmcwkbk.each;\n var extend$1 = $_4ujg4tljkmcwkbk.extend;\n var explode$1 = $_4ujg4tljkmcwkbk.explode;\n var inArray$1 = $_4ujg4tljkmcwkbk.inArray;\n var split = function (items, delim) {\n items = $_4ujg4tljkmcwkbk.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 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 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 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(']*>', '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 = $_4ujg4tljkmcwkbk.each;\n var grep$1 = $_4ujg4tljkmcwkbk.grep;\n var isIE = $_cvvl9iajkmcwk25.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);\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 $_5o0xi0njkmcwkbz.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 = $_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.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 ($_4ujg4tljkmcwkbk.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 ($_4ujg4tljkmcwkbk.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 = '
' + html;\n target.removeChild(target.firstChild);\n } catch (ex) {\n DomQuery('
').html('
' + 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 = $_33qwr1sjkmcwkip.decode;\n var encode = $_33qwr1sjkmcwkip.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 + '';\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 = $_4ujg4tljkmcwkbk._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 $_bjermr1rjkmcwkij.isElement(node) ? node.outerHTML : DomQuery('
').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 ($_4ujg4tljkmcwkbk.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($_4ujg4tljkmcwkbk.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 ($_bjermr1rjkmcwkij.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($_br9sxm1pjkmcwki4.trimNode(self$$1, bef), parentElm);\n if (replacementElm) {\n pa.insertBefore(replacementElm, parentElm);\n } else {\n pa.insertBefore(splitElm, parentElm);\n }\n pa.insertBefore($_br9sxm1pjkmcwki4.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 ($_4ujg4tljkmcwkbk.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 ($_4ujg4tljkmcwkbk.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 && $_bjermr1rjkmcwkij.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 = $_4ujg4tljkmcwkbk.each;\n var grep$2 = $_4ujg4tljkmcwkbk.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 = $_4ujg4tljkmcwkbk._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 = $_4ujg4tljkmcwkbk.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 = $_ca6pc118jkmcwkfs.parent(marker);\n parent.each(function (v) {\n v.dom().insertBefore(element.dom(), marker.dom());\n });\n };\n var after = function (marker, element) {\n var sibling = $_ca6pc118jkmcwkfs.nextSibling(marker);\n sibling.fold(function () {\n var parent = $_ca6pc118jkmcwkfs.parent(marker);\n parent.each(function (v) {\n append(v, element);\n });\n }, function (v) {\n before(v, element);\n });\n };\n var prepend = function (parent, element) {\n var firstChild = $_ca6pc118jkmcwkfs.firstChild(parent);\n firstChild.fold(function () {\n append(parent, element);\n }, function (v) {\n parent.dom().insertBefore(element.dom(), v.dom());\n });\n };\n var append = function (parent, element) {\n parent.dom().appendChild(element.dom());\n };\n var appendAt = function (parent, element, index) {\n $_ca6pc118jkmcwkfs.child(parent, index).fold(function () {\n append(parent, element);\n }, function (v) {\n before(v, element);\n });\n };\n var wrap$1 = function (element, wrapper) {\n before(element, wrapper);\n append(wrapper, element);\n };\n var $_f4qt4v1yjkmcwkl2 = {\n before: before,\n after: after,\n prepend: prepend,\n append: append,\n appendAt: appendAt,\n wrap: wrap$1\n };\n\n var before$1 = function (marker, elements) {\n each(elements, function (x) {\n $_f4qt4v1yjkmcwkl2.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 $_f4qt4v1yjkmcwkl2.after(e, x);\n });\n };\n var prepend$1 = function (parent, elements) {\n each(elements.slice().reverse(), function (x) {\n $_f4qt4v1yjkmcwkl2.prepend(parent, x);\n });\n };\n var append$1 = function (parent, elements) {\n each(elements, function (x) {\n $_f4qt4v1yjkmcwkl2.append(parent, x);\n });\n };\n var $_1ev7t1xjkmcwkky = {\n before: before$1,\n after: after$1,\n prepend: prepend$1,\n append: append$1\n };\n\n var empty = function (element) {\n element.dom().textContent = '';\n each($_ca6pc118jkmcwkfs.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 = $_ca6pc118jkmcwkfs.children(wrapper);\n if (children.length > 0)\n $_1ev7t1xjkmcwkky.before(wrapper, children);\n remove$2(wrapper);\n };\n var $_eualm21wjkmcwkku = {\n empty: empty,\n remove: remove$2,\n unwrap: unwrap\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 function Toggler (turnOff, turnOn, initial) {\n var active = initial || false;\n var on = function () {\n turnOn();\n active = true;\n };\n var off = function () {\n turnOff();\n active = false;\n };\n var toggle = function () {\n var f = active ? off : on;\n f();\n };\n var isOn = function () {\n return active;\n };\n return {\n on: on,\n off: off,\n toggle: toggle,\n isOn: isOn\n };\n }\n\n var read = function (element, attr) {\n var value = $_29helg15jkmcwkf0.get(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 $_29helg15jkmcwkf0.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 $_29helg15jkmcwkf0.set(element, attr, nu.join(' '));\n else\n $_29helg15jkmcwkf0.remove(element, attr);\n return false;\n };\n var $_4m1njo26jkmcwkme = {\n read: read,\n add: add,\n remove: remove$3\n };\n\n var supports = function (element) {\n return element.dom().classList !== undefined;\n };\n var get$2 = function (element) {\n return $_4m1njo26jkmcwkme.read(element, 'class');\n };\n var add$1 = function (element, clazz) {\n return $_4m1njo26jkmcwkme.add(element, 'class', clazz);\n };\n var remove$4 = function (element, clazz) {\n return $_4m1njo26jkmcwkme.remove(element, 'class', clazz);\n };\n var toggle = function (element, clazz) {\n if (contains(get$2(element), clazz)) {\n return remove$4(element, clazz);\n } else {\n return add$1(element, clazz);\n }\n };\n var $_ewhsr825jkmcwkm2 = {\n get: get$2,\n add: add$1,\n remove: remove$4,\n toggle: toggle,\n supports: supports\n };\n\n var add$2 = function (element, clazz) {\n if ($_ewhsr825jkmcwkm2.supports(element))\n element.dom().classList.add(clazz);\n else\n $_ewhsr825jkmcwkm2.add(element, clazz);\n };\n var cleanClass = function (element) {\n var classList = $_ewhsr825jkmcwkm2.supports(element) ? element.dom().classList : $_ewhsr825jkmcwkm2.get(element);\n if (classList.length === 0) {\n $_29helg15jkmcwkf0.remove(element, 'class');\n }\n };\n var remove$5 = function (element, clazz) {\n if ($_ewhsr825jkmcwkm2.supports(element)) {\n var classList = element.dom().classList;\n classList.remove(clazz);\n } else\n $_ewhsr825jkmcwkm2.remove(element, clazz);\n cleanClass(element);\n };\n var toggle$1 = function (element, clazz) {\n return $_ewhsr825jkmcwkm2.supports(element) ? element.dom().classList.toggle(clazz) : $_ewhsr825jkmcwkm2.toggle(element, clazz);\n };\n var toggler = function (element, clazz) {\n var hasClasslist = $_ewhsr825jkmcwkm2.supports(element);\n var classList = element.dom().classList;\n var off = function () {\n if (hasClasslist)\n classList.remove(clazz);\n else\n $_ewhsr825jkmcwkm2.remove(element, clazz);\n };\n var on = function () {\n if (hasClasslist)\n classList.add(clazz);\n else\n $_ewhsr825jkmcwkm2.add(element, clazz);\n };\n return Toggler(off, on, has$1(element, clazz));\n };\n var has$1 = function (element, clazz) {\n return $_ewhsr825jkmcwkm2.supports(element) && element.dom().classList.contains(clazz);\n };\n var $_ftm4v023jkmcwklz = {\n add: add$2,\n remove: remove$5,\n toggle: toggle$1,\n toggler: toggler,\n has: has$1\n };\n\n var all$1 = function (predicate) {\n return descendants($_g4uup916jkmcwkfg.body(), predicate);\n };\n var ancestors = function (scope, predicate, isRoot) {\n return filter($_ca6pc118jkmcwkfs.parents(scope, isRoot), predicate);\n };\n var siblings$1 = function (scope, predicate) {\n return filter($_ca6pc118jkmcwkfs.siblings(scope), predicate);\n };\n var children$1 = function (scope, predicate) {\n return filter($_ca6pc118jkmcwkfs.children(scope), predicate);\n };\n var descendants = function (scope, predicate) {\n var result = [];\n each($_ca6pc118jkmcwkfs.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 var $_733l9k28jkmcwkmj = {\n all: all$1,\n ancestors: ancestors,\n siblings: siblings$1,\n children: children$1,\n descendants: descendants\n };\n\n var all$2 = function (selector) {\n return $_4jv6d81gjkmcwkgv.all(selector);\n };\n var ancestors$1 = function (scope, selector, isRoot) {\n return $_733l9k28jkmcwkmj.ancestors(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n }, isRoot);\n };\n var siblings$2 = function (scope, selector) {\n return $_733l9k28jkmcwkmj.siblings(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n });\n };\n var children$2 = function (scope, selector) {\n return $_733l9k28jkmcwkmj.children(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n });\n };\n var descendants$1 = function (scope, selector) {\n return $_4jv6d81gjkmcwkgv.all(selector, scope);\n };\n var $_2gqm0n27jkmcwkmi = {\n all: all$2,\n ancestors: ancestors$1,\n siblings: siblings$2,\n children: children$2,\n descendants: descendants$1\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 first$2 = function (predicate) {\n return descendant($_g4uup916jkmcwkfg.body(), predicate);\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 sibling$1 = function (scope, predicate) {\n var element = scope.dom();\n if (!element.parentNode)\n return Option.none();\n return child$1(Element$$1.fromDom(element.parentNode), function (x) {\n return !$_e4hu6h1ejkmcwkgj.eq(scope, x) && predicate(x);\n });\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 var $_253nd92ajkmcwkmp = {\n first: first$2,\n ancestor: ancestor,\n closest: closest,\n sibling: sibling$1,\n child: child$1,\n descendant: descendant\n };\n\n var first$3 = function (selector) {\n return $_4jv6d81gjkmcwkgv.one(selector);\n };\n var ancestor$1 = function (scope, selector, isRoot) {\n return $_253nd92ajkmcwkmp.ancestor(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n }, isRoot);\n };\n var sibling$2 = function (scope, selector) {\n return $_253nd92ajkmcwkmp.sibling(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n });\n };\n var child$2 = function (scope, selector) {\n return $_253nd92ajkmcwkmp.child(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n });\n };\n var descendant$1 = function (scope, selector) {\n return $_4jv6d81gjkmcwkgv.one(selector, scope);\n };\n var closest$1 = function (scope, selector, isRoot) {\n return ClosestOrAncestor($_4jv6d81gjkmcwkgv.is, ancestor$1, scope, selector, isRoot);\n };\n var $_4ki4d929jkmcwkmn = {\n first: first$3,\n ancestor: ancestor$1,\n sibling: sibling$2,\n child: child$2,\n descendant: descendant$1,\n closest: closest$1\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 = $_ca6pc118jkmcwkfs.child(start, rng.startOffset).getOr(start);\n var closest = $_4ki4d929jkmcwkmn.closest(newStart, selector, function (n) {\n return $_e4hu6h1ejkmcwkgj.eq(n, root);\n });\n var getAttr = function (c, property) {\n if ($_29helg15jkmcwkf0.has(c, property)) {\n return Option.some($_29helg15jkmcwkf0.get(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) {\n var elements = findMarkers(editor, uid);\n return {\n uid: uid,\n name: name,\n elements: elements\n };\n });\n });\n });\n };\n var isAnnotation = function (elem) {\n return $_2xwdjv11jkmcwke0.isElement(elem) && $_ftm4v023jkmcwklz.has(elem, annotation());\n };\n var findMarkers = function (editor, uid) {\n var body = Element$$1.fromDom(editor.getBody());\n return $_2gqm0n27jkmcwkmi.descendants(body, '[' + dataAnnotationId() + '=\"' + uid + '\"]');\n };\n var findAll = function (editor, name) {\n var body = Element$$1.fromDom(editor.getBody());\n var markers = $_2gqm0n27jkmcwkmi.descendants(body, '[' + dataAnnotation() + '=\"' + name + '\"]');\n var directory = {};\n each(markers, function (m) {\n var uid = $_29helg15jkmcwkf0.get(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 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 $_ftm4v023jkmcwklz.add(element, x);\n });\n };\n var remove$6 = function (element, classes) {\n each(classes, function (x) {\n $_ftm4v023jkmcwklz.remove(element, x);\n });\n };\n var toggle$2 = function (element, classes) {\n each(classes, function (x) {\n $_ftm4v023jkmcwklz.toggle(element, x);\n });\n };\n var hasAll = function (element, classes) {\n return forall(classes, function (clazz) {\n return $_ftm4v023jkmcwklz.has(element, clazz);\n });\n };\n var hasAny = function (element, classes) {\n return exists(classes, function (clazz) {\n return $_ftm4v023jkmcwklz.has(element, clazz);\n });\n };\n var getNative = function (element) {\n var classList = element.dom().classList;\n var r = new Array(classList.length);\n for (var i = 0; i < classList.length; i++) {\n r[i] = classList.item(i);\n }\n return r;\n };\n var get$3 = function (element) {\n return $_ewhsr825jkmcwkm2.supports(element) ? getNative(element) : $_ewhsr825jkmcwkm2.get(element);\n };\n var $_dw1myr2hjkmcwko1 = {\n add: add$3,\n remove: remove$6,\n toggle: toggle$2,\n hasAll: hasAll,\n hasAny: hasAny,\n get: get$3\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 var shallowAs = function (original, tag) {\n var nu = Element$$1.fromTag(tag);\n var attributes = $_29helg15jkmcwkf0.clone(original);\n $_29helg15jkmcwkf0.setAll(nu, attributes);\n return nu;\n };\n var copy$1 = function (original, tag) {\n var nu = shallowAs(original, tag);\n var cloneChildren = $_ca6pc118jkmcwkfs.children(deep(original));\n $_1ev7t1xjkmcwkky.append(nu, cloneChildren);\n return nu;\n };\n var mutate = function (original, tag) {\n var nu = shallowAs(original, tag);\n $_f4qt4v1yjkmcwkl2.before(original, nu);\n var children = $_ca6pc118jkmcwkfs.children(original);\n $_1ev7t1xjkmcwkky.append(nu, children);\n $_eualm21wjkmcwkku.remove(original);\n return nu;\n };\n var $_44uvy22ijkmcwko5 = {\n shallow: shallow,\n shallowAs: shallowAs,\n deep: deep,\n copy: copy$1,\n mutate: mutate\n };\n\n var slice$3 = [].slice;\n var constant$1 = function (value) {\n return function () {\n return value;\n };\n };\n var negate = function (predicate) {\n return function (x) {\n return !predicate(x);\n };\n };\n var compose$2 = function (f, g) {\n return function (x) {\n return f(g(x));\n };\n };\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 curry$1 = function (fn) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = slice$3.call(arguments);\n if (args.length - 1 >= fn.length) {\n return fn.apply(this, args.slice(1));\n }\n return function () {\n var tempArgs = args.concat([].slice.call(arguments));\n return curry$1.apply(this, tempArgs);\n };\n };\n var noop$1 = function () {\n };\n var $_fl2rax2ljkmcwkot = {\n constant: constant$1,\n negate: negate,\n and: and,\n or: or,\n curry: curry$1,\n compose: compose$2,\n noop: noop$1\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 $_cadvcr2pjkmcwkph = {\n isZwsp: isZwsp,\n ZWSP: ZWSP,\n trim: trim$3\n };\n\n var isElement$2 = $_bjermr1rjkmcwkij.isElement;\n var isText$2 = $_bjermr1rjkmcwkij.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) && $_cadvcr2pjkmcwkph.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 || !$_bjermr1rjkmcwkij.isBr(node.firstChild);\n };\n var insertInline = function (node, before) {\n var doc, sibling, textNode, parentNode;\n doc = node.ownerDocument;\n textNode = doc.createTextNode($_cadvcr2pjkmcwkph.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 && $_bjermr1rjkmcwkij.isText(container) && container.data.charAt(pos.offset()) === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var isAfterInline = function (pos) {\n var container = pos.container();\n return pos && $_bjermr1rjkmcwkij.isText(container) && container.data.charAt(pos.offset() - 1) === $_cadvcr2pjkmcwkph.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] === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var endsWithCaretContainer = function (node) {\n return isText$2(node) && node.data[node.data.length - 1] === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var trimBogusBr = function (elm) {\n var brs = elm.getElementsByTagName('br');\n var lastBr = brs[brs.length - 1];\n if ($_bjermr1rjkmcwkij.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 = $_bjermr1rjkmcwkij.isContentEditableTrue;\n var isContentEditableFalse$1 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isBr$2 = $_bjermr1rjkmcwkij.isBr;\n var isText$3 = $_bjermr1rjkmcwkij.isText;\n var isInvalidTextElement = $_bjermr1rjkmcwkij.matchNodeNames('script style textarea');\n var isAtomicInline = $_bjermr1rjkmcwkij.matchNodeNames('img input textarea hr iframe video audio object');\n var isTable$1 = $_bjermr1rjkmcwkij.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 $_bjermr1rjkmcwkij.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 $_9g1fibmjkmcwkbu.reduce(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 isElement$3 = $_bjermr1rjkmcwkij.isElement;\n var isCaretCandidate$1 = isCaretCandidate;\n var isBlock$1 = $_bjermr1rjkmcwkij.matchStyleValues('display', 'block table');\n var isFloated = $_bjermr1rjkmcwkij.matchStyleValues('float', 'left right');\n var isValidElementCaretCandidate = $_fl2rax2ljkmcwkot.and(isElement$3, isCaretCandidate$1, $_fl2rax2ljkmcwkot.negate(isFloated));\n var isNotPre = $_fl2rax2ljkmcwkot.negate($_bjermr1rjkmcwkij.matchStyleValues('white-space', 'pre pre-line pre-wrap'));\n var isText$4 = $_bjermr1rjkmcwkij.isText;\n var isBr$3 = $_bjermr1rjkmcwkij.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) && $_bjermr1rjkmcwkij.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 && $_bjermr1rjkmcwkij.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: $_fl2rax2ljkmcwkot.constant(container),\n offset: $_fl2rax2ljkmcwkot.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 ? $_bjermr1rjkmcwkij.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 = $_bjermr1rjkmcwkij.isText;\n var isBogus$1 = $_bjermr1rjkmcwkij.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 $_9g1fibmjkmcwkbu.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 = $_9g1fibmjkmcwkbu.findIndex(nodes, equal$1(node), node);\n nodes = nodes.slice(0, index + 1);\n numTextFragments = $_9g1fibmjkmcwkbu.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 = $_9g1fibmjkmcwkbu.filter(nodes, $_bjermr1rjkmcwkij.matchNodeNames(node.nodeName));\n index = $_9g1fibmjkmcwkbu.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 = $_9g1fibmjkmcwkbu.filter(parents, $_fl2rax2ljkmcwkot.negate($_bjermr1rjkmcwkij.isBogus));\n path = path.concat($_9g1fibmjkmcwkbu.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 = $_9g1fibmjkmcwkbu.filter(nodes, function (node, index) {\n return !isText$5(node) || !isText$5(nodes[index - 1]);\n });\n nodes = $_9g1fibmjkmcwkbu.filter(nodes, $_bjermr1rjkmcwkij.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 = $_9g1fibmjkmcwkbu.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 = $_bjermr1rjkmcwkij.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 && $_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.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 $_4ujg4tljkmcwkbk.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 ($_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.isElement(node)) {\n node = getNode(node, offset);\n if (isContentEditableFalse$2(node)) {\n return node;\n }\n }\n if (isCaretContainer(node)) {\n if ($_bjermr1rjkmcwkij.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, '') : 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 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($_cadvcr2pjkmcwkph.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 $_aw3zi52jjkmcwkoa = {\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 $_bjermr1rjkmcwkij.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 = $_bjermr1rjkmcwkij.isElement;\n var isText$6 = $_bjermr1rjkmcwkij.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 = $_cadvcr2pjkmcwkph.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 = $_cadvcr2pjkmcwkph.trim(getNodeValue(caretContainerNode));\n setNodeValue(caretContainerNode, text);\n }\n };\n var $_xl2r331jkmcwkri = {\n removeAndReposition: removeAndReposition,\n remove: remove$7\n };\n\n var isContentEditableTrue$2 = $_bjermr1rjkmcwkij.isContentEditableTrue;\n var isContentEditableFalse$3 = $_bjermr1rjkmcwkij.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$3(caretPositionNode)) {\n return showCaret(1, editor, caretPositionNode, !caretPosition.isAtEnd(), false);\n }\n var caretPositionBeforeNode = caretPosition.getNode(true);\n if (isContentEditableFalse$3(caretPositionBeforeNode)) {\n return showCaret(1, editor, caretPositionBeforeNode, false, false);\n }\n var ceRoot = editor.dom.getParent(caretPosition.getNode(), function (node) {\n return isContentEditableFalse$3(node) || isContentEditableTrue$2(node);\n });\n if (isContentEditableFalse$3(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 HDirection;\n (function (HDirection) {\n HDirection[HDirection['Backwards'] = -1] = 'Backwards';\n HDirection[HDirection['Forwards'] = 1] = 'Forwards';\n }(HDirection || (HDirection = {})));\n var isContentEditableFalse$4 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isText$7 = $_bjermr1rjkmcwkij.isText;\n var isElement$5 = $_bjermr1rjkmcwkij.isElement;\n var isBr$4 = $_bjermr1rjkmcwkij.isBr;\n var isCaretCandidate$2 = 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$2(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$2(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 isBrBeforeBlock = function (node, root) {\n var next;\n if (!$_bjermr1rjkmcwkij.isBr(node)) {\n return false;\n }\n next = findCaretPosition(1, CaretPosition$1.after(node), root);\n if (!next) {\n return false;\n }\n return !isInSameBlock(CaretPosition$1.before(node), CaretPosition$1.before(next), root);\n };\n var findCaretPosition = function (direction, startPos, root) {\n var node, nextNode, innerNode;\n var rootContentEditableFalseElm, caretPosition;\n if (!isElement$5(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$2(root.lastChild) && isElement$5(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$2(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$2(nextNode)) {\n if (isBr$4(nextNode) && root.lastChild === nextNode) {\n return null;\n }\n if (isBrBeforeBlock(nextNode, root)) {\n return findCaretPosition(direction, CaretPosition$1.after(nextNode), root);\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, $_fl2rax2ljkmcwkot.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 = $_9g1fibmjkmcwkbu.last($_9g1fibmjkmcwkbu.filter(getParents(container, root), isContentEditableFalse$4));\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 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$1 = 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 ($_bjermr1rjkmcwkij.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$1(direction, caretWalker, currentPos);\n if (!nextPos) {\n break;\n }\n if ($_bjermr1rjkmcwkij.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 getPositionsAbove = curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine);\n var getPositionsBelow = curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine);\n var getFirstLinePositions = function (scope) {\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(scope).map(function (pos) {\n return [pos].concat(getPositionsUntilNextLine(scope, pos).positions);\n }).getOr([]);\n };\n var getLastLinePositions = function (scope) {\n return $_1m3f3j2yjkmcwkqg.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(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 = function (getYAxisValue, isTargetCorner, table, x, y) {\n var cells = $_2gqm0n27jkmcwkmi.descendants(Element$$1.fromDom(table), 'td,th').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, getBottomValue, isAbove$1);\n var getClosestCellBelow = curry(getClosestCell, 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 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 (!$_bjermr1rjkmcwkij.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 $_a6610x37jkmcwkt5 = {\n scrollElementIntoView: scrollElementIntoView,\n scrollRangeIntoView: scrollRangeIntoView\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', '');\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 $_4ujg4tljkmcwkbk.explode(editor.getParam('font_size_style_values', ''));\n };\n var getFontSizeClasses = function (editor) {\n return $_4ujg4tljkmcwkbk.explode(editor.getParam('font_size_classes', ''));\n };\n var $_2ycm1438jkmcwkta = {\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 };\n\n var browser$2 = $_b1ykk4ojkmcwkcj.detect().browser;\n var isFakeCaretTableBrowser = function () {\n return browser$2.isIE() || browser$2.isEdge() || browser$2.isFirefox();\n };\n var moveToRange = function (editor, rng) {\n editor.selection.setRng(rng);\n $_a6610x37jkmcwkt5.scrollRangeIntoView(editor, rng);\n };\n var isAtTableCellLine = function (getPositionsUntil, scope, pos) {\n var lineInfo = getPositionsUntil(scope, pos);\n if (lineInfo.breakType === BreakType.Wrap && lineInfo.positions.length === 0) {\n return lineInfo.breakAt.map(function (breakPos) {\n return getPositionsUntil(scope, breakPos).breakAt.isNone();\n }).getOr(true);\n } else {\n return lineInfo.breakAt.isNone();\n }\n };\n var isAtFirstTableCellLine = $_fl2rax2ljkmcwkot.curry(isAtTableCellLine, getPositionsUntilPreviousLine);\n var isAtLastTableCellLine = $_fl2rax2ljkmcwkot.curry(isAtTableCellLine, getPositionsUntilNextLine);\n var isCaretAtStartOrEndOfTable = function (forward, rng, table) {\n var caretPos = CaretPosition$1.fromRangeStart(rng);\n return $_1m3f3j2yjkmcwkqg.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 $_bjermr1rjkmcwkij.isElement(node) && node.nodeName === 'TABLE' ? Option.some(node) : Option.none();\n };\n var renderBlock = function (down, editor, table, pos) {\n var forcedRootBlock = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n if (forcedRootBlock) {\n editor.undoManager.transact(function () {\n var element = Element$$1.fromTag(forcedRootBlock);\n $_29helg15jkmcwkf0.setAll(element, $_2ycm1438jkmcwkta.getForcedRootBlockAttrs(editor));\n $_f4qt4v1yjkmcwkl2.append(element, Element$$1.fromTag('br'));\n if (down) {\n $_f4qt4v1yjkmcwkl2.after(Element$$1.fromDom(table), element);\n } else {\n $_f4qt4v1yjkmcwkl2.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 $_1m3f3j2yjkmcwkqg.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 = 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 = 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 isContentEditableFalse$5 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isTableCell$1 = function (node) {\n return $_bjermr1rjkmcwkij.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('
').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$5(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 $_xl2r331jkmcwkri.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 = $_3l01gcijkmcwk99.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 $_3l01gcijkmcwk99.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 isFakeCaretTarget = function (node) {\n return isContentEditableFalse$5(node) || $_bjermr1rjkmcwkij.isTable(node) && isFakeCaretTableBrowser();\n };\n\n var isContentEditableFalse$6 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isBlockLike = $_bjermr1rjkmcwkij.matchStyleValues('display', 'block table table-cell table-caption list-item');\n var isCaretContainer$2 = isCaretContainer;\n var isCaretContainerBlock$1 = isCaretContainerBlock;\n var curry$2 = $_fl2rax2ljkmcwkot.curry;\n var isElement$6 = $_bjermr1rjkmcwkij.isElement;\n var isCaretCandidate$3 = 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$6(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$6(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$6(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$6(sibling)) {\n if (isNodesInSameBlock(root, sibling, node)) {\n return sibling;\n }\n break;\n }\n if (isCaretCandidate$3(sibling)) {\n break;\n }\n node = node.parentNode;\n }\n return null;\n };\n var before$2 = curry$2(beforeAfter, true);\n var after$2 = curry$2(beforeAfter, false);\n var normalizeRange = function (direction, root, range) {\n var node, container, offset, location;\n var leanLeft = curry$2(lean, true, root);\n var leanRight = curry$2(lean, false, root);\n container = range.startContainer;\n offset = range.startOffset;\n if (isCaretContainerBlock(container)) {\n if (!isElement$6(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 ($_bjermr1rjkmcwkij.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$6(node) && !$_bjermr1rjkmcwkij.isBogusAll(node);\n };\n var isNextToTable = function (relativeOffset, caretPosition) {\n return $_bjermr1rjkmcwkij.isTable(getChildNodeAtRelativeOffset(relativeOffset, caretPosition));\n };\n var getRelativeCefElm = function (forward, caretPosition) {\n return Option.from(getChildNodeAtRelativeOffset(forward ? 0 : -1, caretPosition)).filter(isContentEditableFalse$6);\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$2(isNextToContentEditableFalse, 0);\n var isAfterContentEditableFalse = curry$2(isNextToContentEditableFalse, -1);\n var isBeforeTable = curry$2(isNextToTable, 0);\n var isAfterTable = curry$2(isNextToTable, -1);\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 $_bjermr1rjkmcwkij.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) && $_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.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 $_1m3f3j2yjkmcwkqg = {\n fromPosition: fromPosition,\n nextPosition: curry(fromPosition, true),\n prevPosition: curry(fromPosition, false),\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 $_4ujg4tljkmcwkbk.isArray(bookmark.start);\n };\n\n var addBogus = function (dom, node) {\n if (dom.isBlock(node) && !node.innerHTML && !$_cvvl9iajkmcwk25.ie) {\n node.innerHTML = '
';\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($_cadvcr2pjkmcwkph.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 $_1m3f3j2yjkmcwkqg.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 $_bjermr1rjkmcwkij.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 $_4ujg4tljkmcwkbk.each($_4ujg4tljkmcwkbk.grep(marker.childNodes), function (node) {\n if ($_bjermr1rjkmcwkij.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 && $_bjermr1rjkmcwkij.isText(prev) && !$_cvvl9iajkmcwk25.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 $_1fx23n2wjkmcwkq6 = { resolve: resolve$3 };\n\n var getBookmark$1 = function (selection, type, normalized) {\n return $_aw3zi52jjkmcwkoa.getBookmark(selection, type, normalized);\n };\n var moveToBookmark = function (selection, bookmark) {\n $_1fx23n2wjkmcwkq6.resolve(selection, bookmark).each(function (rng) {\n selection.setRng(rng);\n });\n };\n var isBookmarkNode$1 = function (node) {\n return $_bjermr1rjkmcwkij.isElement(node) && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';\n };\n var $_e4btcc2vjkmcwkq3 = {\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 $_dli08w3ajkmcwktg = {\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 = $_e4btcc2vjkmcwkq3.isBookmarkNode;\n var getParents$2 = $_dli08w3ajkmcwktg.getParents;\n var isWhiteSpaceNode$1 = $_dli08w3ajkmcwktg.isWhiteSpaceNode;\n var isTextBlock$2 = $_dli08w3ajkmcwktg.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) {\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) {\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)) {\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 ($_dli08w3ajkmcwktg.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 startContainer = startContainer.nextSibling || startContainer;\n if (startContainer.nodeType === 3) {\n startOffset = 0;\n }\n }\n if (isBookmarkNode$2(endContainer.parentNode) || isBookmarkNode$2(endContainer)) {\n endContainer = isBookmarkNode$2(endContainer) ? endContainer : endContainer.parentNode;\n endContainer = endContainer.previousSibling || endContainer;\n if (endContainer.nodeType === 3) {\n endOffset = endContainer.length;\n }\n }\n if (format[0].inline) {\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 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 $_97afwh2ujkmcwkpw = { expandRng: expandRng };\n\n var each$8 = $_4ujg4tljkmcwkbk.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$2 = 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 $_cuckrv3bjkmcwktk = { walk: walk$2 };\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 = $_b1ykk4ojkmcwkcj.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($_2xwdjv11jkmcwke0.isText, 'text');\n var get$4 = 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) {\n api.set(element, value);\n };\n var $_ckzc193ejkmcwktu = {\n get: get$4,\n getOption: getOption,\n set: set$2\n };\n\n var isZeroWidth = function (elem) {\n return $_2xwdjv11jkmcwke0.isText(elem) && $_ckzc193ejkmcwktu.get(elem) === zeroWidth();\n };\n var context = function (editor, elem, wrapName, nodeName) {\n return $_ca6pc118jkmcwkfs.parent(elem).fold(function () {\n return 'skipping';\n }, function (parent) {\n if (nodeName === 'br' || isZeroWidth(elem)) {\n return 'skipping';\n } else if (isAnnotation(elem)) {\n return 'existing';\n } else if (isCaretNode(elem)) {\n return 'caret';\n } else if (!$_dli08w3ajkmcwktg.isValid(editor, wrapName, nodeName) || !$_dli08w3ajkmcwktg.isValid(editor, $_2xwdjv11jkmcwke0.name(parent), wrapName)) {\n return 'invalid-child';\n } else {\n return 'valid';\n }\n });\n };\n\n var __rest = undefined && undefined.__rest || function (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 var applyWordGrab = function (editor, rng) {\n var r = $_97afwh2ujkmcwkpw.expandRng(editor, rng, [{ inline: true }], false);\n rng.setStart(r.startContainer, r.startOffset);\n rng.setEnd(r.endContainer, r.endOffset);\n editor.selection.setRng(rng);\n };\n var annotate = function (editor, rng, annotationName, decorate, _a) {\n var _b = _a.uid, uid = _b === void 0 ? generate('mce-annotation') : _b, data = __rest(_a, ['uid']);\n var newWrappers = [];\n var master = Element$$1.fromTag('span');\n $_ftm4v023jkmcwklz.add(master, annotation());\n $_29helg15jkmcwkf0.set(master, '' + dataAnnotationId(), uid);\n $_29helg15jkmcwkf0.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 $_29helg15jkmcwkf0.setAll(master, attributes);\n $_dw1myr2hjkmcwko1.add(master, classes);\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 = $_44uvy22ijkmcwko5.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', $_2xwdjv11jkmcwke0.name(elem));\n switch (ctx) {\n case 'invalid-child': {\n finishWrapper();\n var children = $_ca6pc118jkmcwkfs.children(elem);\n processElements(children);\n finishWrapper();\n break;\n }\n case 'valid': {\n var w = getOrOpenWrapper();\n $_f4qt4v1yjkmcwkl2.wrap(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 $_cuckrv3bjkmcwktk.walk(editor.dom, rng, function (nodes) {\n finishWrapper();\n processNodes(nodes);\n });\n return newWrappers;\n };\n var annotateWithBookmark = function (editor, name, settings, data) {\n editor.undoManager.transact(function () {\n var initialRng = editor.selection.getRng();\n if (initialRng.collapsed) {\n applyWordGrab(editor, initialRng);\n }\n var bookmark = $_aw3zi52jjkmcwkoa.getPersistentBookmark(editor.selection, true);\n var rng = editor.selection.getRng();\n annotate(editor, rng, name, settings.decorate, data);\n editor.selection.moveToBookmark(bookmark);\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, $_eualm21wjkmcwkku.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 $_4ujg4tljkmcwkbk.grep(elm.childNodes, function (child) {\n return child.nodeName === 'LI';\n });\n };\n var isPadding = function (node) {\n return node.data === '\\xA0' || $_bjermr1rjkmcwkij.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 $_4ujg4tljkmcwkbk.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 $_4ujg4tljkmcwkbk.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 $_e6q31u3jjkmcwkvd = {\n isListFragment: isListFragment,\n insertAtCaret: insertAtCaret,\n isParentBlockLi: isParentBlockLi,\n trimListItems: trimListItems,\n listItems: listItems$1\n };\n\n var each$9 = $_4ujg4tljkmcwkbk.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 !$_e4btcc2vjkmcwkq3.isBookmarkNode(node1) && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node2);\n };\n };\n\n var getLastChildren = function (elm) {\n var children = [];\n var rawNode = elm.dom();\n while (rawNode) {\n children.push(Element$$1.fromDom(rawNode));\n rawNode = rawNode.lastChild;\n }\n return children;\n };\n var removeTrailingBr = function (elm) {\n var allBrs = $_2gqm0n27jkmcwkmi.descendants(elm, 'br');\n var brs = filter(getLastChildren(elm).slice(-1), isBr);\n if (allBrs.length === brs.length) {\n each(brs, $_eualm21wjkmcwkku.remove);\n }\n };\n var fillWithPaddingBr = function (elm) {\n $_eualm21wjkmcwkku.empty(elm);\n $_f4qt4v1yjkmcwkl2.append(elm, Element$$1.fromHtml('
'));\n };\n var isPaddingContents = function (elm) {\n return $_2xwdjv11jkmcwke0.isText(elm) ? $_ckzc193ejkmcwktu.get(elm) === '\\xA0' : isBr(elm);\n };\n var isPaddedElement = function (elm) {\n return filter($_ca6pc118jkmcwkfs.children(elm), isPaddingContents).length === 1;\n };\n var trimBlockTrailingBr = function (elm) {\n $_ca6pc118jkmcwkfs.lastChild(elm).each(function (lastChild) {\n $_ca6pc118jkmcwkfs.prevSibling(lastChild).each(function (lastChildPrevSibling) {\n if (isBlock(elm) && isBr(lastChild) && isBlock(lastChildPrevSibling)) {\n $_eualm21wjkmcwkku.remove(lastChild);\n }\n });\n });\n };\n var $_zygeg3ljkmcwkvo = {\n removeTrailingBr: removeTrailingBr,\n fillWithPaddingBr: fillWithPaddingBr,\n isPaddedElement: isPaddedElement,\n trimBlockTrailingBr: trimBlockTrailingBr\n };\n\n var makeMap$3 = $_4ujg4tljkmcwkbk.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 = $_33qwr1sjkmcwkip.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('');\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('');\n },\n comment: function (text) {\n html.push('');\n },\n pi: function (name, text) {\n if (text) {\n html.push('');\n } else {\n html.push('');\n }\n if (indent) {\n html.push('\\n');\n }\n },\n doctype: function (text) {\n html.push('', 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 HtmlSerializer (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 $_1m3f3j2yjkmcwkqg.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 $_bx30le3ojkmcwkw9 = { normalize: normalize };\n\n var isTableCell$2 = $_bjermr1rjkmcwkij.matchNodeNames('td th');\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 editor.selection.setContent(value);\n }\n }\n };\n var trimBrsFromTableCell = function (dom, elm) {\n Option.from(dom.getParent(elm, 'td,th')).map(Element$$1.fromDom).each($_zygeg3ljkmcwkvo.trimBlockTrailingBr);\n };\n var insertHtmlAtCaret = function (editor, value, details) {\n var parser, serializer, parentNode, rootNode, fragment, args;\n var marker, rng, node, node2, bookmarkHtml, merge;\n var textInlineElements = editor.schema.getTextInlineElements();\n var selection = editor.selection, dom = editor.dom;\n var trimOrPaddLeftRight = function (html) {\n var rng, container, offset;\n rng = selection.getRng();\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(/^ /, ' ');\n } else if (!hasSiblingText('previousSibling')) {\n html = html.replace(/^ /, ' ');\n }\n if (offset < container.length) {\n html = html.replace(/ (
|)$/, ' ');\n } else if (!hasSiblingText('nextSibling')) {\n html = html.replace(/( | )(
|)$/, ' ');\n }\n }\n return html;\n };\n var trimNbspAfterDeleteAndPaddValue = function () {\n var rng, container, offset;\n rng = selection.getRng();\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 };\n var reduceInlineTextElements = function () {\n if (merge) {\n var root_1 = editor.getBody(), elementUtils_1 = new ElementUtils(dom);\n $_4ujg4tljkmcwkbk.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 $_4ujg4tljkmcwkbk.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 (node) {\n return node && !editor.schema.getShortEndedElements()[node.nodeName];\n };\n var moveSelectionToMarker = function (marker) {\n var parentEditableFalseElm, parentBlock, nextRng;\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 selection.scrollIntoView(marker);\n parentEditableFalseElm = getContentEditableFalseParent(marker);\n if (parentEditableFalseElm) {\n dom.remove(marker);\n selection.select(parentEditableFalseElm);\n return;\n }\n rng = dom.createRng();\n node = marker.previousSibling;\n if (node && node.nodeType === 3) {\n rng.setStart(node, node.nodeValue.length);\n if (!$_cvvl9iajkmcwk25.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 if (/^ | $/.test(value)) {\n value = trimOrPaddLeftRight(value);\n }\n parser = editor.parser;\n merge = details.merge;\n serializer = HtmlSerializer({ validate: editor.settings.validate }, editor.schema);\n bookmarkHtml = '​';\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(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($_bx30le3ojkmcwkw9.normalize(editor.selection.getRng()));\n editor.getDoc().execCommand('Delete', false, null);\n trimNbspAfterDeleteAndPaddValue();\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 && $_e6q31u3jjkmcwkvd.isListFragment(editor.schema, fragment) && $_e6q31u3jjkmcwkvd.isParentBlockLi(dom, parentNode)) {\n rng = $_e6q31u3jjkmcwkvd.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 selection.setContent(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(//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();\n moveSelectionToMarker(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 = $_4ujg4tljkmcwkbk.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 $_g2yj883ijkmcwkv2 = { insertAtCaret: insertAtCaret$1 };\n\n var sectionResult = Immutable('sections', 'settings');\n var detection = $_b1ykk4ojkmcwkcj.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 $_4ujg4tljkmcwkbk.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: '',\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: '30px',\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 $_4ujg4tljkmcwkbk.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 $_4ujg4tljkmcwkbk.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 = $_4ujg4tljkmcwkbk.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[$_4ujg4tljkmcwkbk.trim(arr[0])] = $_4ujg4tljkmcwkbk.trim(arr[1]);\n } else {\n output[$_4ujg4tljkmcwkbk.trim(arr[0])] = $_4ujg4tljkmcwkbk.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 $_4jv6d81gjkmcwkgv.is(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 ($_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.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 $_crqmqb3tjkmcwkxd = {\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 $_e4hu6h1ejkmcwkgj.eq(rootNode, Element$$1.fromDom(elm.dom().parentNode));\n };\n };\n var getParentBlock$1 = function (rootNode, elm) {\n return $_e4hu6h1ejkmcwkgj.contains(rootNode, elm) ? $_253nd92ajkmcwkmp.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 $_1m3f3j2yjkmcwkqg.firstPositionIn(elm),\n $_1m3f3j2yjkmcwkqg.lastPositionIn(elm)\n ], function (firstPos, lastPos) {\n var normalizedFirstPos = $_crqmqb3tjkmcwkxd.normalizePosition(true, firstPos);\n var normalizedLastPos = $_crqmqb3tjkmcwkxd.normalizePosition(false, lastPos);\n var normalizedFromPos = $_crqmqb3tjkmcwkxd.normalizePosition(false, fromPos);\n if (forward) {\n return $_1m3f3j2yjkmcwkqg.nextPosition(elm, normalizedFromPos).map(function (nextPos) {\n return nextPos.isEqual(normalizedLastPos) && fromPos.isEqual(normalizedFirstPos);\n }).getOr(false);\n } else {\n return $_1m3f3j2yjkmcwkqg.prevPosition(elm, normalizedFromPos).map(function (prevPos) {\n return prevPos.isEqual(normalizedFirstPos) && fromPos.isEqual(normalizedLastPos);\n }).getOr(false);\n }\n }).getOr(true);\n };\n var $_8z75uj3sjkmcwkx3 = {\n getParentBlock: getParentBlock$1,\n paddEmptyBody: paddEmptyBody,\n willDeleteLastPositionInElement: willDeleteLastPositionInElement\n };\n\n var any = function (selector) {\n return $_4ki4d929jkmcwkmn.first(selector).isSome();\n };\n var ancestor$2 = function (scope, selector, isRoot) {\n return $_4ki4d929jkmcwkmn.ancestor(scope, selector, isRoot).isSome();\n };\n var sibling$3 = function (scope, selector) {\n return $_4ki4d929jkmcwkmn.sibling(scope, selector).isSome();\n };\n var child$3 = function (scope, selector) {\n return $_4ki4d929jkmcwkmn.child(scope, selector).isSome();\n };\n var descendant$2 = function (scope, selector) {\n return $_4ki4d929jkmcwkmn.descendant(scope, selector).isSome();\n };\n var closest$2 = function (scope, selector, isRoot) {\n return $_4ki4d929jkmcwkmn.closest(scope, selector, isRoot).isSome();\n };\n var $_6rijl23xjkmcwl24 = {\n any: any,\n ancestor: ancestor$2,\n sibling: sibling$3,\n child: child$3,\n descendant: descendant$2,\n closest: closest$2\n };\n\n var hasWhitespacePreserveParent = function (rootNode, node) {\n var rootElement = Element$$1.fromDom(rootNode);\n var startNode = Element$$1.fromDom(node);\n return $_6rijl23xjkmcwl24.ancestor(startNode, 'pre,code', curry($_e4hu6h1ejkmcwkgj.eq, rootElement));\n };\n var isWhitespace = function (rootNode, node) {\n return $_bjermr1rjkmcwkij.isText(node) && /^[ \\t\\r\\n]*$/.test(node.data) && hasWhitespacePreserveParent(rootNode, node) === false;\n };\n var isNamedAnchor = function (node) {\n return $_bjermr1rjkmcwkij.isElement(node) && node.nodeName === 'A' && node.hasAttribute('name');\n };\n var isContent = function (rootNode, node) {\n return isCaretCandidate(node) && isWhitespace(rootNode, node) === false || isNamedAnchor(node) || isBookmark(node);\n };\n var isBookmark = $_bjermr1rjkmcwkij.hasAttribute('data-mce-bookmark');\n var isBogus$2 = $_bjermr1rjkmcwkij.hasAttribute('data-mce-bogus');\n var isBogusAll$1 = $_bjermr1rjkmcwkij.hasAttributeValue('data-mce-bogus', 'all');\n var isEmptyNode = function (targetNode) {\n var walker, node, brCount = 0;\n if (isContent(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 ($_bjermr1rjkmcwkij.isBr(node)) {\n brCount++;\n node = walker.next();\n continue;\n }\n if (isContent(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 $_1jnfso3wjkmcwl1v = { 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 $_8z75uj3sjkmcwkx3.getParentBlock(rootElm, containerElm).map(function (block) {\n return BlockPosition(block, pos);\n });\n };\n var isDifferentBlocks = function (blockBoundary) {\n return $_e4hu6h1ejkmcwkgj.eq(blockBoundary.from().block(), blockBoundary.to().block()) === false;\n };\n var hasSameParent = function (blockBoundary) {\n return $_ca6pc118jkmcwkfs.parent(blockBoundary.from().block()).bind(function (parent1) {\n return $_ca6pc118jkmcwkfs.parent(blockBoundary.to().block()).filter(function (parent2) {\n return $_e4hu6h1ejkmcwkgj.eq(parent1, parent2);\n });\n }).isSome();\n };\n var isEditable = function (blockBoundary) {\n return $_bjermr1rjkmcwkij.isContentEditableFalse(blockBoundary.from().block()) === false && $_bjermr1rjkmcwkij.isContentEditableFalse(blockBoundary.to().block()) === false;\n };\n var skipLastBr = function (rootNode, forward, blockPosition) {\n if ($_bjermr1rjkmcwkij.isBr(blockPosition.position().getNode()) && $_1jnfso3wjkmcwl1v.isEmpty(blockPosition.block()) === false) {\n return $_1m3f3j2yjkmcwkqg.positionIn(false, blockPosition.block().dom()).bind(function (lastPositionInBlock) {\n if (lastPositionInBlock.isEqual(blockPosition.position())) {\n return $_1m3f3j2yjkmcwkqg.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 $_1m3f3j2yjkmcwkqg.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 $_2x2kic3rjkmcwkwi = { read: read$1 };\n\n var dropLast = function (xs) {\n return xs.slice(0, -1);\n };\n var parentsUntil$1 = function (startNode, rootElm, predicate) {\n if ($_e4hu6h1ejkmcwkgj.contains(rootElm, startNode)) {\n return dropLast($_ca6pc118jkmcwkfs.parents(startNode, function (elm) {\n return predicate(elm) || $_e4hu6h1ejkmcwkgj.eq(elm, rootElm);\n }));\n } else {\n return [];\n }\n };\n var parents$1 = function (startNode, rootElm) {\n return parentsUntil$1(startNode, rootElm, constant(false));\n };\n var parentsAndSelf = function (startNode, rootElm) {\n return [startNode].concat(parents$1(startNode, rootElm));\n };\n var $_cir6zl3zjkmcwl2j = {\n parentsUntil: parentsUntil$1,\n parents: parents$1,\n parentsAndSelf: parentsAndSelf\n };\n\n var getChildrenUntilBlockBoundary = function (block) {\n var children = $_ca6pc118jkmcwkfs.children(block);\n return findIndex(children, isBlock).fold(function () {\n return children;\n }, function (index) {\n return children.slice(0, index);\n });\n };\n var extractChildren = function (block) {\n var children = getChildrenUntilBlockBoundary(block);\n each(children, function (node) {\n $_eualm21wjkmcwkku.remove(node);\n });\n return children;\n };\n var trimBr = function (first, block) {\n $_1m3f3j2yjkmcwkqg.positionIn(first, block.dom()).each(function (position) {\n var node = position.getNode();\n if ($_bjermr1rjkmcwkij.isBr(node)) {\n $_eualm21wjkmcwkku.remove(Element$$1.fromDom(node));\n }\n });\n };\n var removeEmptyRoot = function (rootNode, block) {\n var parents = $_cir6zl3zjkmcwl2j.parentsAndSelf(block, rootNode);\n return find(parents.reverse(), $_1jnfso3wjkmcwl1v.isEmpty).each($_eualm21wjkmcwkku.remove);\n };\n var findParentInsertPoint = function (toBlock, block) {\n var parents = $_ca6pc118jkmcwkfs.parents(block, function (elm) {\n return $_e4hu6h1ejkmcwkgj.eq(elm, toBlock);\n });\n return Option.from(parents[parents.length - 2]);\n };\n var getInsertionPoint = function (fromBlock, toBlock) {\n if ($_e4hu6h1ejkmcwkgj.contains(toBlock, fromBlock)) {\n return $_ca6pc118jkmcwkfs.parent(fromBlock).bind(function (parent) {\n return $_e4hu6h1ejkmcwkgj.eq(parent, toBlock) ? Option.some(fromBlock) : findParentInsertPoint(toBlock, fromBlock);\n });\n } else {\n return Option.none();\n }\n };\n var mergeBlockInto = function (rootNode, fromBlock, toBlock) {\n if ($_1jnfso3wjkmcwl1v.isEmpty(toBlock)) {\n $_eualm21wjkmcwkku.remove(toBlock);\n if ($_1jnfso3wjkmcwl1v.isEmpty(fromBlock)) {\n $_zygeg3ljkmcwkvo.fillWithPaddingBr(fromBlock);\n }\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(fromBlock.dom());\n } else {\n trimBr(true, fromBlock);\n trimBr(false, toBlock);\n var children_1 = extractChildren(fromBlock);\n return getInsertionPoint(fromBlock, toBlock).fold(function () {\n removeEmptyRoot(rootNode, fromBlock);\n var position = $_1m3f3j2yjkmcwkqg.lastPositionIn(toBlock.dom());\n each(children_1, function (node) {\n $_f4qt4v1yjkmcwkl2.append(toBlock, node);\n });\n return position;\n }, function (target) {\n var position = $_1m3f3j2yjkmcwkqg.prevPosition(toBlock.dom(), CaretPosition$1.before(target.dom()));\n each(children_1, function (node) {\n $_f4qt4v1yjkmcwkl2.before(target, node);\n });\n removeEmptyRoot(rootNode, fromBlock);\n return position;\n });\n }\n };\n var mergeBlocks = function (rootNode, forward, block1, block2) {\n return forward ? mergeBlockInto(rootNode, block2, block1) : mergeBlockInto(rootNode, block1, block2);\n };\n var $_ezyxdl3yjkmcwl27 = { mergeBlocks: mergeBlocks };\n\n var backspaceDelete = function (editor, forward) {\n var position;\n var rootNode = Element$$1.fromDom(editor.getBody());\n position = $_2x2kic3rjkmcwkwi.read(rootNode.dom(), forward, editor.selection.getRng()).bind(function (blockBoundary) {\n return $_ezyxdl3yjkmcwl27.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 $_1wrlyf3qjkmcwkwe = { backspaceDelete: backspaceDelete };\n\n var deleteRangeMergeBlocks = function (rootNode, selection) {\n var rng = selection.getRng();\n return liftN([\n $_8z75uj3sjkmcwkx3.getParentBlock(rootNode, Element$$1.fromDom(rng.startContainer)),\n $_8z75uj3sjkmcwkx3.getParentBlock(rootNode, Element$$1.fromDom(rng.endContainer))\n ], function (block1, block2) {\n if ($_e4hu6h1ejkmcwkgj.eq(block1, block2) === false) {\n rng.deleteContents();\n $_ezyxdl3yjkmcwl27.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($_e4hu6h1ejkmcwkgj.eq, root);\n return $_253nd92ajkmcwkmp.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 = $_1m3f3j2yjkmcwkqg.prevPosition(root.dom(), CaretPosition$1.fromRangeStart(rng)).isNone();\n var noNext = $_1m3f3j2yjkmcwkqg.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 $_egxtcx40jkmcwl2q = { 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 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 $_bjermr1rjkmcwkij.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 $_8z75uj3sjkmcwkx3.getParentBlock(Element$$1.fromDom(root), Element$$1.fromDom(from.getNode())).map(function (blockElm) {\n return $_1jnfso3wjkmcwl1v.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 $_1m3f3j2yjkmcwkqg.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 && $_bjermr1rjkmcwkij.isContentEditableFalse(to.getNode())) {\n return deleteEmptyBlockOrMoveToCef(root, forward, from, to);\n } else if (forward === false && $_bjermr1rjkmcwkij.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 && $_bjermr1rjkmcwkij.isContentEditableFalse(elm.nextSibling)) {\n return Option.some(DeleteAction.moveToElement(elm.nextSibling));\n } else if (forward === false && $_bjermr1rjkmcwkij.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 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 {\n return getContentEditableAction(root, forward, from);\n }\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 $_bjermr1rjkmcwkij.isText(node) ? CaretPosition$1(node, 0) : CaretPosition$1.before(node);\n };\n var afterOrEndOf = function (node) {\n return $_bjermr1rjkmcwkij.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 ? $_1m3f3j2yjkmcwkqg.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 ? $_1m3f3j2yjkmcwkqg.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 $_1m3f3j2yjkmcwkqg.prevPosition(rootElement, startPosition).fold(function () {\n return $_1m3f3j2yjkmcwkqg.nextPosition(rootElement, CaretPosition$1.after(elm));\n }, Option.some);\n };\n var findCaretPositionForwardsFromElm = function (rootElement, elm) {\n return $_1m3f3j2yjkmcwkqg.nextPosition(rootElement, CaretPosition$1.after(elm)).fold(function () {\n return $_1m3f3j2yjkmcwkqg.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($_2xwdjv11jkmcwke0.name(elm));\n };\n var paddEmptyBlock = function (elm) {\n if ($_1jnfso3wjkmcwl1v.isEmpty(elm)) {\n var br = Element$$1.fromHtml('
');\n $_eualm21wjkmcwkku.empty(elm);\n $_f4qt4v1yjkmcwkl2.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) {\n return liftN([\n $_ca6pc118jkmcwkfs.prevSibling(elm),\n $_ca6pc118jkmcwkfs.nextSibling(elm),\n afterDeletePosOpt\n ], function (prev, next, afterDeletePos) {\n var offset;\n var prevNode = prev.dom();\n var nextNode = next.dom();\n if ($_bjermr1rjkmcwkij.isText(prevNode) && $_bjermr1rjkmcwkij.isText(nextNode)) {\n offset = prevNode.data.length;\n prevNode.appendData(nextNode.data);\n $_eualm21wjkmcwkku.remove(next);\n $_eualm21wjkmcwkku.remove(elm);\n if (afterDeletePos.container() === nextNode) {\n return CaretPosition$1(prevNode, offset);\n } else {\n return afterDeletePos;\n }\n } else {\n $_eualm21wjkmcwkku.remove(elm);\n return afterDeletePos;\n }\n }).orThunk(function () {\n $_eualm21wjkmcwkku.remove(elm);\n return afterDeletePosOpt;\n });\n };\n var deleteElement = function (editor, forward, elm) {\n var afterDeletePos = findCaretPosOutsideElmAfterDelete(forward, editor.getBody(), elm.dom());\n var parentBlock = $_253nd92ajkmcwkmp.ancestor(elm, curry(isBlock$2, editor), eqRawNode(editor.getBody()));\n var normalizedAfterDeletePos = deleteNormalized(elm, afterDeletePos);\n if (editor.dom.isEmpty(editor.getBody())) {\n editor.setContent('');\n editor.selection.setCursorLocation();\n } else {\n parentBlock.bind(paddEmptyBlock).fold(function () {\n setSelection(editor, forward, normalizedAfterDeletePos);\n }, function (paddPos) {\n setSelection(editor, forward, Option.some(paddPos));\n });\n }\n };\n var $_4yq1i444jkmcwl3w = { deleteElement: deleteElement };\n\n var deleteElement$1 = function (editor, forward) {\n return function (element) {\n editor._selectionOverrides.hideFakeCaret();\n $_4yq1i444jkmcwl3w.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($_2gqm0n27jkmcwkmi.descendants(rootElement, '.mce-offscreen-selection'), $_eualm21wjkmcwkku.remove);\n };\n var backspaceDeleteRange = function (editor, forward) {\n var selectedElement = editor.selection.getNode();\n if ($_bjermr1rjkmcwkij.isContentEditableFalse(selectedElement)) {\n deleteOffscreenSelection(Element$$1.fromDom(editor.getBody()));\n $_4yq1i444jkmcwl3w.deleteElement(editor, forward, Element$$1.fromDom(editor.selection.getNode()));\n $_8z75uj3sjkmcwkx3.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 ($_bjermr1rjkmcwkij.isContentEditableTrue(node) || $_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.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 $_1hyiiy41jkmcwl2z = {\n backspaceDelete: backspaceDelete$2,\n paddEmptyElement: paddEmptyElement\n };\n\n var isText$8 = $_bjermr1rjkmcwkij.isText;\n var startsWithCaretContainer$1 = function (node) {\n return isText$8(node) && node.data[0] === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var endsWithCaretContainer$1 = function (node) {\n return isText$8(node) && node.data[node.data.length - 1] === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var createZwsp = function (node) {\n return node.ownerDocument.createTextNode($_cadvcr2pjkmcwkph.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($_cadvcr2pjkmcwkph.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, $_cadvcr2pjkmcwkph.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, $_cadvcr2pjkmcwkph.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($_cadvcr2pjkmcwkph.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 ($_bjermr1rjkmcwkij.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 $_xl2r331jkmcwkri.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 $_1m3f3j2yjkmcwkqg.firstPositionIn(element).map(function (pos) {\n if (!isPosCaretContainer(pos, caret)) {\n $_xl2r331jkmcwkri.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 $_1m3f3j2yjkmcwkqg.lastPositionIn(element).map(function (pos) {\n if (!isPosCaretContainer(pos, caret)) {\n $_xl2r331jkmcwkri.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 $_xl2r331jkmcwkri.remove(caret.get());\n var text = insertInlineAfter(element);\n caret.set(text);\n return Option.some(CaretPosition$1(text, 1));\n });\n };\n var $_efgx6546jkmcwl4n = { 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 $_8hyv6o49jkmcwl58 = { 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 = $_crqmqb3tjkmcwkxd.normalizeForwards(pos);\n var scope = rescope(rootNode, nPos.container());\n return $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, scope, nPos).fold(function () {\n return $_1m3f3j2yjkmcwkqg.nextPosition(scope, nPos).bind(curry($_crqmqb3tjkmcwkxd.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 $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, pos).filter(curry(isNotInsideFormatCaretContainer, rootNode));\n };\n var start = function (isInlineTarget, rootNode, pos) {\n var nPos = $_crqmqb3tjkmcwkxd.normalizeBackwards(pos);\n return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) {\n var prevPos = $_1m3f3j2yjkmcwkqg.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 = $_crqmqb3tjkmcwkxd.normalizeForwards(pos);\n return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) {\n var nextPos = $_1m3f3j2yjkmcwkqg.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 = $_crqmqb3tjkmcwkxd.normalizeBackwards(pos);\n var scope = rescope(rootNode, nPos.container());\n return $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, scope, nPos).fold(function () {\n return $_1m3f3j2yjkmcwkqg.prevPosition(scope, nPos).bind(curry($_crqmqb3tjkmcwkxd.findRootInline, isInlineTarget, scope)).map(function (inline) {\n return Location.after(inline);\n });\n }, Option.none);\n };\n var isValidLocation = function (location) {\n return $_crqmqb3tjkmcwkxd.isRtl(getElement(location)) === false;\n };\n var readLocation = function (isInlineTarget, rootNode, pos) {\n var location = $_8hyv6o49jkmcwl58.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 $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, from),\n $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, to)\n ], function (fromInline, toInline) {\n if (fromInline !== toInline && $_crqmqb3tjkmcwkxd.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 = $_crqmqb3tjkmcwkxd.normalizePosition(forward, pos);\n var to = $_1m3f3j2yjkmcwkqg.fromPosition(forward, rootNode, from).map(curry($_crqmqb3tjkmcwkxd.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 = $_crqmqb3tjkmcwkxd.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 $_gau9ep48jkmcwl4x = {\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 $_dessn94bjkmcwl5p = {\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 $_efgx6546jkmcwl4n.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($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n var location = $_gau9ep48jkmcwl4x.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) && $_crqmqb3tjkmcwkxd.isAtZwsp(pos) === false) {\n setCaretPosition(editor, $_xl2r331jkmcwkri.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 $_gau9ep48jkmcwl4x.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) ? $_dessn94bjkmcwl5p.moveByWord(forward, editor) : false;\n };\n };\n var setupSelectedState = function (editor) {\n var caret = Cell(null);\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.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 $_dl6t9m4ajkmcwl5b = {\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 $_1m3f3j2yjkmcwkqg.firstPositionIn(elm),\n $_1m3f3j2yjkmcwkqg.lastPositionIn(elm)\n ], function (firstPos, lastPos) {\n var normalizedFirstPos = $_crqmqb3tjkmcwkxd.normalizePosition(true, firstPos);\n var normalizedLastPos = $_crqmqb3tjkmcwkxd.normalizePosition(false, lastPos);\n return $_1m3f3j2yjkmcwkqg.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 $_efgx6546jkmcwl4n.renderCaret(caret, location$$1).map(function (pos) {\n $_dl6t9m4ajkmcwl5b.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($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n editor.undoManager.ignore(function () {\n editor.selection.setRng(rangeFromPositions(from, to));\n editor.execCommand('Delete');\n $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, rootNode, CaretPosition$1.fromRangeStart(editor.selection.getRng())).map($_gau9ep48jkmcwl4x.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($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n var fromLocation = $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, rootNode, from);\n return fromLocation.bind(function (location$$1) {\n if (forward) {\n return location$$1.fold(constant(Option.some($_gau9ep48jkmcwl4x.inside(location$$1))), Option.none, constant(Option.some($_gau9ep48jkmcwl4x.outside(location$$1))), Option.none);\n } else {\n return location$$1.fold(Option.none, constant(Option.some($_gau9ep48jkmcwl4x.outside(location$$1))), Option.none, constant(Option.some($_gau9ep48jkmcwl4x.inside(location$$1))));\n }\n }).map(setCaretLocation(editor, caret)).getOrThunk(function () {\n var toPosition = $_1m3f3j2yjkmcwkqg.navigate(forward, rootNode, from);\n var toLocation = toPosition.bind(function (pos) {\n return $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, rootNode, pos);\n });\n if (fromLocation.isSome() && toLocation.isSome()) {\n return $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, from).map(function (elm) {\n if (hasOnlyTwoOrLessPositionsLeft(elm)) {\n $_4yq1i444jkmcwl3w.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 $_dqvreg45jkmcwl4e = { 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($_e4hu6h1ejkmcwkgj.eq, root);\n };\n var getClosestCell$1 = function (container, isRoot) {\n return $_4ki4d929jkmcwkmn.closest(Element$$1.fromDom(container), 'td,th', isRoot);\n };\n var getClosestTable = function (cell, isRoot) {\n return $_4ki4d929jkmcwkmn.ancestor(cell, 'table', isRoot);\n };\n var isExpandedCellRng = function (cellRng) {\n return $_e4hu6h1ejkmcwkgj.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 $_e4hu6h1ejkmcwkgj.eq(startParentTable, endParentTable) ? Option.some(startParentTable) : Option.none();\n });\n });\n };\n var getTableCells = function (table) {\n return $_2gqm0n27jkmcwkmi.descendants(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$1(rng.startContainer, isRoot);\n var endCell = getClosestCell$1(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$1(rng.startContainer, isRoot);\n var endCell = getClosestCell$1(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 $_e4hu6h1ejkmcwkgj.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 $_2x2sml4djkmcwl68 = {\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 $_admly54fjkmcwl6u = {\n getRanges: getRanges,\n getSelectedNodes: getSelectedNodes,\n hasMultipleRanges: hasMultipleRanges\n };\n\n var getCellsFromRanges = function (ranges) {\n return filter($_admly54fjkmcwl6u.getSelectedNodes(ranges), isTableCell);\n };\n var getCellsFromElement = function (elm) {\n var selectedCells = $_2gqm0n27jkmcwkmi.descendants(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($_admly54fjkmcwl6u.getRanges(editor.selection.getSel()), Element$$1.fromDom(editor.getBody()));\n };\n var $_7q5gk44ejkmcwl6p = {\n getCellsFromRanges: getCellsFromRanges,\n getCellsFromElement: getCellsFromElement,\n getCellsFromElementOrRanges: getCellsFromElementOrRanges,\n getCellsFromEditor: getCellsFromEditor\n };\n\n var emptyCells = function (editor, cells) {\n each(cells, $_zygeg3ljkmcwkvo.fillWithPaddingBr);\n editor.selection.setCursorLocation(cells[0].dom(), 0);\n return true;\n };\n var deleteTableElement = function (editor, table) {\n $_4yq1i444jkmcwl3w.deleteElement(editor, false, table);\n return true;\n };\n var deleteCellRange = function (editor, rootElm, rng) {\n return $_2x2sml4djkmcwl68.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 = $_7q5gk44ejkmcwl6p.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($_cir6zl3zjkmcwl2j.parentsAndSelf(elm, rootElm), isTableCell);\n };\n var getParentCaption = function (rootElm, elm) {\n return find($_cir6zl3zjkmcwl2j.parentsAndSelf(elm, rootElm), function (elm) {\n return $_2xwdjv11jkmcwke0.name(elm) === 'caption';\n });\n };\n var deleteBetweenCells = function (editor, rootElm, forward, fromCell, from) {\n return $_1m3f3j2yjkmcwkqg.navigate(forward, editor.getBody(), from).bind(function (to) {\n return getParentCell(rootElm, Element$$1.fromDom(to.getNode())).map(function (toCell) {\n return $_e4hu6h1ejkmcwkgj.eq(toCell, fromCell) === false;\n });\n });\n };\n var emptyElement = function (editor, elm) {\n $_zygeg3ljkmcwkvo.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 $_1m3f3j2yjkmcwkqg.firstPositionIn(fromCaption.dom()).bind(function (first) {\n return $_1m3f3j2yjkmcwkqg.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 $_e4hu6h1ejkmcwkgj.eq(toCaption, fromCaption) === false;\n });\n };\n var deleteCaretInsideCaption = function (editor, rootElm, forward, fromCaption, from) {\n return $_1m3f3j2yjkmcwkqg.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 $_1jnfso3wjkmcwl1v.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 $_1jnfso3wjkmcwl1v.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 = $_7q5gk44ejkmcwl6p.getCellsFromEditor(editor);\n return editor.selection.isCollapsed() && cells.length === 0 ? deleteCaret(editor, forward, startElm) : deleteRange$1(editor, startElm);\n };\n var $_5lrlvq4cjkmcwl5t = { 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 ($_1hyiiy41jkmcwl2z.backspaceDelete(editor, false)) {\n return;\n } else if ($_dqvreg45jkmcwl4e.backspaceDelete(editor, false)) {\n return;\n } else if ($_1wrlyf3qjkmcwkwe.backspaceDelete(editor, false)) {\n return;\n } else if ($_5lrlvq4cjkmcwl5t.backspaceDelete(editor)) {\n return;\n } else if ($_egxtcx40jkmcwl2q.backspaceDelete(editor, false)) {\n return;\n } else {\n nativeCommand(editor, 'Delete');\n $_8z75uj3sjkmcwkx3.paddEmptyBody(editor);\n }\n };\n var forwardDeleteCommand = function (editor) {\n if ($_1hyiiy41jkmcwl2z.backspaceDelete(editor, true)) {\n return;\n } else if ($_dqvreg45jkmcwl4e.backspaceDelete(editor, true)) {\n return;\n } else if ($_1wrlyf3qjkmcwkwe.backspaceDelete(editor, true)) {\n return;\n } else if ($_5lrlvq4cjkmcwl5t.backspaceDelete(editor)) {\n return;\n } else if ($_egxtcx40jkmcwl2q.backspaceDelete(editor, true)) {\n return;\n } else {\n nativeCommand(editor, 'ForwardDelete');\n }\n };\n var $_3ahn8y3pjkmcwkwc = {\n deleteCommand: deleteCommand,\n forwardDeleteCommand: forwardDeleteCommand\n };\n\n var getSpecifiedFontProp = function (propName, rootElm, elm) {\n var getProperty = function (elm) {\n return $_4enzit13jkmcwke5.getRaw(elm, propName);\n };\n var isRoot = function (elm) {\n return $_e4hu6h1ejkmcwkgj.eq(Element$$1.fromDom(rootElm), elm);\n };\n return $_253nd92ajkmcwkmp.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($_2xwdjv11jkmcwke0.isElement).bind(function (element) {\n return getSpecifiedFontProp(propName, rootElm, element.dom()).or(getComputedFontProp(propName, element.dom()));\n }).getOr('');\n };\n };\n var $_3qs0f64hjkmcwl74 = {\n getFontSize: getFontProp('font-size'),\n getFontFamily: compose(normalizeFontFamily, getFontProp('font-family')),\n toPt: toPt\n };\n\n var findFirstCaretElement = function (editor) {\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(editor.getBody()).map(function (caret) {\n var container = caret.container();\n return $_bjermr1rjkmcwkij.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 = $_2ycm1438jkmcwkta.getFontStyleValues(editor);\n var fontClasses = $_2ycm1438jkmcwkta.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 $_3qs0f64hjkmcwl74.getFontFamily(editor.getBody(), caretElement);\n }).getOr('');\n }, function (caretElement) {\n return $_3qs0f64hjkmcwl74.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 $_3qs0f64hjkmcwl74.getFontSize(editor.getBody(), caretElement);\n }).getOr('');\n }, function (caretElement) {\n return $_3qs0f64hjkmcwl74.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 $_axtxv74kjkmcwl84 = { 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 ($_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.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 && $_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.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 = $_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.isElement(container) && offset > container.childNodes.length - 1) {\n directionLeft = false;\n }\n if ($_bjermr1rjkmcwkij.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 = $_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.isContentEditableFalse(node) || isCaretContainer(node)) {\n normalized = false;\n break;\n }\n if ($_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.isElement(container)) {\n node = container.childNodes[offset];\n if (!node) {\n node = container.childNodes[offset - 1];\n }\n if (node && $_bjermr1rjkmcwkij.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 && $_bjermr1rjkmcwkij.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$1 = 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 $_axtxv74kjkmcwl84.isEq(rng, normRng) ? Option.none() : Option.some(normRng);\n };\n var $_21c07i4jjkmcwl7w = { normalize: normalize$1 };\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', {}, ' ');\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 $_21c07i4jjkmcwl7w.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 $_f4qt4v1yjkmcwkl2.before(Element$$1.fromDom(inline), br);\n editor.undoManager.add();\n };\n var insertBrAfter = function (editor, inline) {\n if (!hasBrAfter(editor.getBody(), inline)) {\n $_f4qt4v1yjkmcwkl2.after(Element$$1.fromDom(inline), Element$$1.fromTag('br'));\n }\n var br = Element$$1.fromTag('br');\n $_f4qt4v1yjkmcwkl2.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 = function (pos) {\n return $_bjermr1rjkmcwkij.isBr(pos.getNode());\n };\n var hasBrAfter = function (rootNode, startNode) {\n if (isBeforeBr(CaretPosition$1.after(startNode))) {\n return true;\n } else {\n return $_1m3f3j2yjkmcwkqg.nextPosition(rootNode, CaretPosition$1.after(startNode)).map(function (pos) {\n return $_bjermr1rjkmcwkij.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($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n var position = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n return $_gau9ep48jkmcwl4x.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 $_dc07up4ijkmcwl7n = { 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 var cata = 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 $_1s5vuk4njkmcwl8r = {\n before: adt.before,\n on: adt.on,\n after: adt.after,\n cata: cata,\n getStart: getStart\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 exactFromRange = function (simRange) {\n return type$1.exact(simRange.start(), simRange.soffset(), simRange.finish(), simRange.foffset());\n };\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 $_1s5vuk4njkmcwl8r.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 $_ca6pc118jkmcwkfs.defaultView(start);\n };\n var $_2v8ne64mjkmcwl8l = {\n domRange: type$1.domRange,\n relative: type$1.relative,\n exact: type$1.exact,\n exactFromRange: exactFromRange,\n range: range$1,\n getWin: getWin\n };\n\n var browser$3 = $_b1ykk4ojkmcwkcj.detect().browser;\n var clamp = function (offset, element) {\n var max = $_2xwdjv11jkmcwke0.isText(element) ? $_ckzc193ejkmcwktu.get(element).length : $_ca6pc118jkmcwkfs.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 $_2v8ne64mjkmcwl8l.range(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish()));\n };\n var isOrContains = function (root, elm) {\n return $_e4hu6h1ejkmcwkgj.contains(root, elm) || $_e4hu6h1ejkmcwkgj.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 $_2v8ne64mjkmcwl8l.range(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 = $_ca6pc118jkmcwkfs.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 $_39c3zs4ljkmcwl86 = {\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 if (element.nodeName !== 'LI') {\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 };\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 each(selection.getSelectedBlocks(), function (element) {\n return indentElement(dom, command, useMargin, indentValue, indentUnit, element);\n });\n }\n };\n\n var each$10 = $_4ujg4tljkmcwkbk.each;\n var extend$2 = $_4ujg4tljkmcwkbk.extend;\n var map$3 = $_4ujg4tljkmcwkbk.map;\n var inArray$2 = $_4ujg4tljkmcwkbk.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 $_39c3zs4ljkmcwl86.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$10(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$10(commandList, function (callback, command) {\n each$10(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 ($_cvvl9iajkmcwk25.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$10('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 $_g2yj883ijkmcwkv2.insertAtCaret(editor, value);\n },\n 'mceInsertRawHTML': function (command, ui, value) {\n var content = editor.getContent();\n selection.setContent('tiny_mce_marker');\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, '
');\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(), $_bjermr1rjkmcwkij.isContentEditableTrue);\n if (editingHost) {\n var rng = dom.createRng();\n rng.selectNodeContents(editingHost);\n selection.setRng(rng);\n }\n },\n 'delete': function () {\n $_3ahn8y3pjkmcwkwc.deleteCommand(editor);\n },\n 'forwardDelete': function () {\n $_3ahn8y3pjkmcwkwc.forwardDeleteCommand(editor);\n },\n 'mceNewDocument': function () {\n editor.setContent('');\n },\n 'InsertLineBreak': function (command, ui, value) {\n $_dc07up4ijkmcwl7n.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 = $_4ujg4tljkmcwkbk.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 $_4ujg4tljkmcwkbk.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 $_ed2ug44qjkmcwl97 = {\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 $_q3ric4tjkmcwl9q = {\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 ($_ftm4v023jkmcwklz.has(elm, cls) && state === false) {\n $_ftm4v023jkmcwklz.remove(elm, cls);\n } else if (state) {\n $_ftm4v023jkmcwklz.add(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 $_q3ric4tjkmcwl9q.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 $_4ujg4tljkmcwkbk.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 = $_4ujg4tljkmcwkbk.extend({}, $_ed2ug44qjkmcwl97, EditorObservable);\n var EditorObservable$1 = EditorObservable;\n\n var each$11 = $_4ujg4tljkmcwkbk.each;\n var explode$2 = $_4ujg4tljkmcwkbk.explode;\n var keyCodeLookup = {\n f9: 120,\n f10: 121,\n f11: 122\n };\n var modifierNames = $_4ujg4tljkmcwkbk.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$11(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 ($_cvvl9iajkmcwk25.mac) {\n shortcut.ctrl = true;\n } else {\n shortcut.shift = true;\n }\n }\n if (shortcut.meta) {\n if ($_cvvl9iajkmcwk25.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 = $_4ujg4tljkmcwkbk.map(explode$2(pattern, '>'), parseShortcut);\n shortcuts[shortcuts.length - 1] = $_4ujg4tljkmcwkbk.extend(shortcuts[shortcuts.length - 1], {\n func: cmdFunc,\n scope: scope || editor\n });\n return $_4ujg4tljkmcwkbk.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$11(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 ($_4ujg4tljkmcwkbk.isArray(cmd)) {\n cmdFunc = function () {\n editor.execCommand(cmd[0], cmd[1], cmd[2]);\n };\n }\n each$11(explode$2($_4ujg4tljkmcwkbk.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 any$1 = function (predicate) {\n return $_253nd92ajkmcwkmp.first(predicate).isSome();\n };\n var ancestor$3 = function (scope, predicate, isRoot) {\n return $_253nd92ajkmcwkmp.ancestor(scope, predicate, isRoot).isSome();\n };\n var closest$3 = function (scope, predicate, isRoot) {\n return $_253nd92ajkmcwkmp.closest(scope, predicate, isRoot).isSome();\n };\n var sibling$4 = function (scope, predicate) {\n return $_253nd92ajkmcwkmp.sibling(scope, predicate).isSome();\n };\n var child$4 = function (scope, predicate) {\n return $_253nd92ajkmcwkmp.child(scope, predicate).isSome();\n };\n var descendant$3 = function (scope, predicate) {\n return $_253nd92ajkmcwkmp.descendant(scope, predicate).isSome();\n };\n var $_szg1f4xjkmcwlad = {\n any: any$1,\n ancestor: ancestor$3,\n closest: closest$3,\n sibling: sibling$4,\n child: child$4,\n descendant: descendant$3\n };\n\n var focus$$1 = function (element) {\n element.dom().focus();\n };\n var blur$$1 = function (element) {\n element.dom().blur();\n };\n var hasFocus = function (element) {\n var doc = $_ca6pc118jkmcwkfs.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 focusInside = function (element) {\n var doc = $_ca6pc118jkmcwkfs.owner(element);\n var inside = active(doc).filter(function (a) {\n return $_szg1f4xjkmcwlad.closest(a, curry($_e4hu6h1ejkmcwkgj.eq, element));\n });\n inside.fold(function () {\n focus$$1(element);\n }, noop);\n };\n var search = function (element) {\n return active($_ca6pc118jkmcwkfs.owner(element)).filter(function (e) {\n return element.dom().contains(e.dom());\n });\n };\n var $_468a0m4wjkmcwla6 = {\n hasFocus: hasFocus,\n focus: focus$$1,\n blur: blur$$1,\n active: active,\n search: search,\n focusInside: focusInside\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 ($_e4hu6h1ejkmcwkgj.contains(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 $_1m3f3j2yjkmcwkqg.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 $_468a0m4wjkmcwla6.hasFocus(elm) || $_468a0m4wjkmcwla6.search(elm).isSome();\n };\n var hasIframeFocus = function (editor) {\n return editor.iframeElement && $_468a0m4wjkmcwla6.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 $_39c3zs4ljkmcwl86.getRng(editor).each(function (bookmarkRng) {\n editor.selection.setRng(bookmarkRng);\n rng = bookmarkRng;\n });\n }\n if (!contentEditable) {\n if (!$_cvvl9iajkmcwk25.opera) {\n focusBody(body);\n }\n editor.getWin().focus();\n }\n if ($_cvvl9iajkmcwk25.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 $_e3v8sn4vjkmcwl9y = {\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($_4enzit13jkmcwke5.get(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 : $_ca6pc118jkmcwkfs.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 $_e4hu6h1ejkmcwkgj.contains($_ca6pc118jkmcwkfs.owner(container), container);\n }).getOr(false);\n };\n var $_8we2e850jkmcwlaw = {\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 || !$_8we2e850jkmcwlaw.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 $_3l01gcijkmcwk99.requestAnimationFrame(reposition);\n });\n editor.on('remove', function () {\n each(notifications, 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 $_39c3zs4ljkmcwl86.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 $_b9je0i54jkmcwlbe = {\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 = $_89i3w1cjkmcwk2c.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 = new 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 $_4ujg4tljkmcwkbk.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 = $_4ujg4tljkmcwkbk.grep(blobInfos, function (blobInfo) {\n return !uploadStatus.isUploaded(blobInfo.blobUri());\n });\n return promiseObj.all($_4ujg4tljkmcwkbk.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 settings = $_4ujg4tljkmcwkbk.extend({\n credentials: false,\n handler: defaultHandler\n }, settings);\n return { upload: upload };\n }\n\n function Blob (parts, properties) {\n var f = $_89i3w1cjkmcwk2c.getOrDie('Blob');\n return new f(parts, properties);\n }\n\n function FileReader () {\n var f = $_89i3w1cjkmcwk2c.getOrDie('FileReader');\n return new f();\n }\n\n function Uint8Array (arr) {\n var f = $_89i3w1cjkmcwk2c.getOrDie('Uint8Array');\n return new f(arr);\n }\n\n var requestAnimationFrame$1 = function (callback) {\n var f = $_89i3w1cjkmcwk2c.getOrDie('requestAnimationFrame');\n f(callback);\n };\n var atob = function (base64) {\n var f = $_89i3w1cjkmcwk2c.getOrDie('atob');\n return f(base64);\n };\n var $_b0eesx5hjkmcwld6 = {\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 = new 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 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 var dataUriToBlob = function (uri) {\n return new promiseObj(function (resolve) {\n var str, arr, i;\n uri = parseDataUri(uri);\n try {\n str = $_b0eesx5hjkmcwld6.atob(uri.data);\n } catch (e) {\n resolve(new Blob([]));\n return;\n }\n arr = new Uint8Array(str.length);\n for (i = 0; i < arr.length; i++) {\n arr[i] = str.charCodeAt(i);\n }\n resolve(new Blob([arr], { type: uri.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 = new FileReader();\n reader.onloadend = function () {\n resolve(reader.result);\n };\n reader.readAsDataURL(blob);\n });\n };\n var $_7eufcj5djkmcwlcv = {\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 $_7eufcj5djkmcwlcv.uriToBlob(img.src).then(function (blob) {\n $_7eufcj5djkmcwlcv.blobToDataUri(blob).then(function (dataUri) {\n base64 = $_7eufcj5djkmcwlcv.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 = $_7eufcj5djkmcwlcv.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 $_7eufcj5djkmcwlcv.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 ? 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 = $_fl2rax2ljkmcwkot.constant(true);\n }\n images = $_9g1fibmjkmcwkbu.filter(getAllImages(elm), function (img) {\n var src = img.src;\n if (!$_cvvl9iajkmcwk25.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 === $_cvvl9iajkmcwk25.transparentSrc) {\n return false;\n }\n if (src.indexOf('blob:') === 0) {\n return !uploadStatus.isUploaded(src);\n }\n if (src.indexOf('data:') === 0) {\n return predicate(img);\n }\n return false;\n });\n var promises = $_9g1fibmjkmcwkbu.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 $_8flfjw5jjkmcwldd = { uuid: uuid };\n\n function BlobCache () {\n var cache = [];\n var constant = $_fl2rax2ljkmcwkot.constant;\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 return typeof o === 'object' ? toBlobInfo(o) : toBlobInfo({\n id: o,\n name: filename,\n blob: blob,\n base64: base64\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 || $_8flfjw5jjkmcwldd.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 || $_ci16mbjkmcwk2b.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 $_9g1fibmjkmcwkbu.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 = $_9g1fibmjkmcwkbu.filter(cache, function (blobInfo) {\n if (blobInfo.blobUri() === blobUri) {\n $_ci16mbjkmcwk2b.revokeObjectURL(blobInfo.blobUri());\n return false;\n }\n return true;\n });\n };\n var destroy = function () {\n $_9g1fibmjkmcwkbu.each(cache, function (cachedBlobInfo) {\n $_ci16mbjkmcwk2b.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 settings = editor.settings;\n var uploadStatus = UploadStatus();\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 $_9g1fibmjkmcwkbu.each(editor.undoManager.data, function (level) {\n if (level.type === 'fragmented') {\n level.fragments = $_9g1fibmjkmcwkbu.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.images_reuse_filename ? 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.images_upload_url,\n basePath: settings.images_upload_base_path,\n credentials: settings.images_upload_credentials,\n handler: settings.images_upload_handler\n });\n }\n return scanForImages().then(aliveGuard(function (imageInfos) {\n var blobInfos;\n blobInfos = $_9g1fibmjkmcwkbu.map(imageInfos, function (imageInfo) {\n return imageInfo.blobInfo;\n });\n return uploader.upload(blobInfos, openNotification).then(aliveGuard(function (result) {\n var filteredResult = $_9g1fibmjkmcwkbu.map(result, function (uploadInfo, index) {\n var image = imageInfos[index].image;\n if (uploadInfo.status && editor.settings.images_replace_blob_uris !== false) {\n replaceImageUri(image, uploadInfo.url);\n } else if (uploadInfo.error) {\n $_b9je0i54jkmcwlbe.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.automatic_uploads !== false) {\n return uploadImages(callback);\n }\n };\n var isValidDataUriImage = function (imgElm) {\n return settings.images_dataimg_filter ? settings.images_dataimg_filter(imgElm) : true;\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 = $_9g1fibmjkmcwkbu.filter(result, function (resultItem) {\n if (typeof resultItem === 'string') {\n $_b9je0i54jkmcwlbe.displayError(editor, resultItem);\n return false;\n }\n return true;\n });\n $_9g1fibmjkmcwkbu.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 = $_9g1fibmjkmcwkbu.reduce(editor.editorManager.get(), function (result, editor) {\n return result || editor.editorUpload && editor.editorUpload.blobCache.getByUri(blobUri);\n }, null);\n }\n if (blobInfo) {\n return 'src=\"data:' + blobInfo.blob().type + ';base64,' + blobInfo.base64() + '\"';\n }\n return match;\n });\n };\n editor.on('setContent', function () {\n if (editor.settings.automatic_uploads !== false) {\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 $_9g1fibmjkmcwkbu.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 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 ($_bjermr1rjkmcwkij.isText(node)) {\n return true;\n } else if ($_bjermr1rjkmcwkij.isElement(node)) {\n return !isBlockElement(blockElements, node) && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node);\n } else {\n return false;\n }\n };\n var hasBlockParent = function (blockElements, root, node) {\n return exists($_cir6zl3zjkmcwl2j.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 ($_bjermr1rjkmcwkij.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 || !$_bjermr1rjkmcwkij.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 = $_e3v8sn4vjkmcwl9y.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 $_5utnj35ljkmcwldh = { setup: setup$2 };\n\n var getStartNode = function (rng) {\n var sc = rng.startContainer, so = rng.startOffset;\n if ($_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.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 $_ca6pc118jkmcwkfs.firstChild(node).fold(constant([node]), function (child) {\n return [node].concat(getFirstChildren(child));\n });\n };\n var getLastChildren$1 = function (node) {\n return $_ca6pc118jkmcwkfs.lastChild(node).fold(constant([node]), function (child) {\n if ($_2xwdjv11jkmcwke0.name(child) === 'br') {\n return $_ca6pc118jkmcwkfs.prevSibling(child).map(function (sibling) {\n return [node].concat(getLastChildren$1(sibling));\n }).getOr([]);\n } else {\n return [node].concat(getLastChildren$1(child));\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($_e4hu6h1ejkmcwkgj.eq, startNode));\n var end = find(getLastChildren$1(elm), curry($_e4hu6h1ejkmcwkgj.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 && $_4ujg4tljkmcwkbk.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 ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.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' || !$_axtxv74kjkmcwl84.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 || !$_cvvl9iajkmcwk25.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 $_3l01gcijkmcwk99.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 $_7vqqhl5qjkmcwlfd = { calc: calc };\n\n var isContentEditableFalse$7 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isContentEditableTrue$4 = $_bjermr1rjkmcwkij.isContentEditableTrue;\n var isDraggable = function (rootElm, elm) {\n return isContentEditableFalse$7(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$7(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 = $_9g1fibmjkmcwkbu.find(editor.dom.getParents(e.target), $_fl2rax2ljkmcwkot.or(isContentEditableFalse$7, isContentEditableTrue$4));\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 = $_3l01gcijkmcwk99.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, $_7vqqhl5qjkmcwlfd.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$7(realTarget) || isContentEditableFalse$7(editor.dom.getContentEditableParent(realTarget))) {\n e.preventDefault();\n }\n });\n };\n var init = function (editor) {\n bindFakeDragEvents(editor);\n blockIeDrop(editor);\n };\n var $_amfo0m5pjkmcwlf7 = { init: init };\n\n var getNodeClientRects = function (node) {\n var toArrayWithNode = function (clientRects) {\n return $_9g1fibmjkmcwkbu.map(clientRects, function (clientRect) {\n clientRect = clone$2(clientRect);\n clientRect.node = node;\n return clientRect;\n });\n };\n if ($_bjermr1rjkmcwkij.isElement(node)) {\n return toArrayWithNode(node.getClientRects());\n }\n if ($_bjermr1rjkmcwkij.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 $_9g1fibmjkmcwkbu.reduce(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, $_9g1fibmjkmcwkbu.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 = $_9g1fibmjkmcwkbu.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 $_9g1fibmjkmcwkbu.last(caretPosition.getClientRects());\n }\n return $_9g1fibmjkmcwkbu.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, $_9g1fibmjkmcwkbu.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$8 = $_bjermr1rjkmcwkij.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 $_9g1fibmjkmcwkbu.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$8(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 = $_9g1fibmjkmcwkbu.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 $_9g1fibmjkmcwkbu.filter($_9g1fibmjkmcwkbu.toArray(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 = $_9g1fibmjkmcwkbu.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 $_95lcbc5ujkmcwlg1 = { isXYWithinRange: isXYWithinRange };\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 $_8glegd5vjkmcwlg3 = { setup: setup$3 };\n\n var $_6bj5795wjkmcwlg6 = {\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 $_cvvl9iajkmcwk25.mac ? e.metaKey : e.ctrlKey && !e.altKey;\n }\n };\n\n var isContentEditableTrue$5 = $_bjermr1rjkmcwkij.isContentEditableTrue;\n var isContentEditableFalse$9 = $_bjermr1rjkmcwkij.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 $_e3v8sn4vjkmcwl9y.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 && $_8we2e850jkmcwlaw.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 ($_8we2e850jkmcwlaw.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) && !$_95lcbc5ujkmcwlg1.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 ($_6bj5795wjkmcwlg6.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 && !$_cvvl9iajkmcwk25.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 $_amfo0m5pjkmcwlf7.init(editor);\n $_8glegd5vjkmcwlg3.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 = $_4ki4d929jkmcwkmn.descendant(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 = $('
').attr('id', realSelectionId);\n $realSelectionContainer.appendTo(editor.getBody());\n }\n range$$1 = editor.dom.createRng();\n if (targetClone === origTargetClone && $_cvvl9iajkmcwk25.ie) {\n $realSelectionContainer.empty().append('

\\xA0

').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($_2gqm0n27jkmcwkmi.descendants(Element$$1.fromDom(editor.getBody()), '*[data-mce-selected]'), function (elm) {\n $_29helg15jkmcwkf0.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 $_4ki4d929jkmcwkmn.descendant(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).each($_eualm21wjkmcwkku.remove);\n selectedContentEditableNode = null;\n }\n $_4ki4d929jkmcwkmn.descendant(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).each($_eualm21wjkmcwkku.remove);\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 ($_cvvl9iajkmcwk25.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 = $_33qwr1sjkmcwkip.decode;\n var fixSelfClosing;\n var filteredUrlAttrs = $_4ujg4tljkmcwkbk.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 $_cadvcr2pjkmcwkph.trim(content);\n };\n var trimExternal = trimInternal;\n var $_2varuf5zjkmcwlgq = {\n trimExternal: trimExternal,\n trimInternal: trimInternal\n };\n\n var KEEP = 0;\n var INSERT = 1;\n var 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 $_3xze2m62jkmcwlh7 = {\n KEEP: KEEP,\n DELETE: DELETE,\n INSERT: INSERT,\n diff: diff\n };\n\n var getOuterHtml = function (elm) {\n if ($_bjermr1rjkmcwkij.isElement(elm)) {\n return elm.outerHTML;\n } else if ($_bjermr1rjkmcwkij.isText(elm)) {\n return $_33qwr1sjkmcwkip.encodeRaw(elm.data, false);\n } else if ($_bjermr1rjkmcwkij.isComment(elm)) {\n return '';\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 $_9g1fibmjkmcwkbu.each(diff, function (action) {\n if (action[0] === $_3xze2m62jkmcwlh7.KEEP) {\n index++;\n } else if (action[0] === $_3xze2m62jkmcwlh7.INSERT) {\n insertAt(elm, action[1], index);\n index++;\n } else if (action[0] === $_3xze2m62jkmcwlh7.DELETE) {\n removeAt(elm, index);\n }\n });\n };\n var read$3 = function (elm) {\n return $_9g1fibmjkmcwkbu.filter($_9g1fibmjkmcwkbu.map(elm.childNodes, getOuterHtml), function (item) {\n return item.length > 0;\n });\n };\n var write = function (fragments, elm) {\n var currentFragments = $_9g1fibmjkmcwkbu.map(elm.childNodes, getOuterHtml);\n applyDiff($_3xze2m62jkmcwlh7.diff(currentFragments, fragments), elm);\n return elm;\n };\n var $_cyedqm61jkmcwlh3 = {\n read: read$3,\n write: write\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 $_ca6pc118jkmcwkfs.children(Element$$1.fromDom(div));\n };\n var fromTags = function (tags, scope) {\n return map(tags, function (x) {\n return Element$$1.fromTag(x, scope);\n });\n };\n var fromText$1 = function (texts, scope) {\n return map(texts, function (x) {\n return Element$$1.fromText(x, scope);\n });\n };\n var fromDom$1 = function (nodes) {\n return map(nodes, Element$$1.fromDom);\n };\n var $_bos53z64jkmcwlhd = {\n fromHtml: fromHtml$1,\n fromTags: fromTags,\n fromText: fromText$1,\n fromDom: fromDom$1\n };\n\n var get$6 = function (element) {\n return element.dom().innerHTML;\n };\n var set$3 = function (element, content) {\n var owner = $_ca6pc118jkmcwkfs.owner(element);\n var docDom = owner.dom();\n var fragment = Element$$1.fromDom(docDom.createDocumentFragment());\n var contentElements = $_bos53z64jkmcwlhd.fromHtml(content, docDom);\n $_1ev7t1xjkmcwkky.append(fragment, contentElements);\n $_eualm21wjkmcwkku.empty(element);\n $_f4qt4v1yjkmcwkl2.append(element, fragment);\n };\n var getOuter = function (element) {\n var container = Element$$1.fromTag('div');\n var clone = Element$$1.fromDom(element.dom().cloneNode(true));\n $_f4qt4v1yjkmcwkl2.append(container, clone);\n return get$6(container);\n };\n var $_xg5463jkmcwlhb = {\n get: get$6,\n set: set$3,\n getOuter: getOuter\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('') !== -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 = $_cyedqm61jkmcwlh3.read(editor.getBody());\n trimmedFragments = bind(fragments, function (html) {\n var trimmed = $_2varuf5zjkmcwlgq.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 $_cyedqm61jkmcwlh3.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 $_xg5463jkmcwlhb.set(elm, getLevelContent(level));\n each($_2gqm0n27jkmcwkmi.descendants(elm, '*[data-mce-bogus]'), $_eualm21wjkmcwkku.unwrap);\n return $_xg5463jkmcwlhb.get(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 $_3cqp0r5yjkmcwlgf = {\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 && $_3cqp0r5yjkmcwlgf.isEq($_3cqp0r5yjkmcwlgf.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 = $_aw3zi52jjkmcwkoa.getUndoBookmark(editor.selection);\n }\n },\n add: function (level, event) {\n var i;\n var settings = editor.settings;\n var lastLevel, currentLevel;\n currentLevel = $_3cqp0r5yjkmcwlgf.createFromEditor(editor);\n level = level || {};\n level = $_4ujg4tljkmcwkbk.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 && $_3cqp0r5yjkmcwlgf.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 = $_aw3zi52jjkmcwkoa.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 $_3cqp0r5yjkmcwlgf.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 $_3cqp0r5yjkmcwlgf.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] && !$_3cqp0r5yjkmcwlgf.isEq($_3cqp0r5yjkmcwlgf.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 $_3cqp0r5yjkmcwlgf.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 = $_dli08w3ajkmcwktg.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 = $_dli08w3ajkmcwktg.getStyle(dom, node, key);\n }\n if (similar && !value && !format.exact) {\n return;\n }\n if ((!similar || format.exact) && !isEq$4(value, $_dli08w3ajkmcwktg.normalizeStyleValue(dom, $_dli08w3ajkmcwktg.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]) : $_dli08w3ajkmcwktg.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 = $_dli08w3ajkmcwktg.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 $_axwnk168jkmcwlim = {\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 && $_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.isText(startContainer) && startOffset > 0 && startOffset < startContainer.nodeValue.length) {\n startContainer = splitText(startContainer, startOffset);\n startOffset = 0;\n }\n if ($_bjermr1rjkmcwkij.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 $_bnmynr69jkmcwlir = { split: split$1 };\n\n var ZWSP$1 = $_cadvcr2pjkmcwkph.ZWSP;\n var 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 $_29helg15jkmcwkf0.setAll(caretContainer, {\n 'id': CARET_ID$1,\n 'data-mce-bogus': '1',\n 'data-mce-type': 'format-caret'\n });\n if (fill) {\n $_f4qt4v1yjkmcwkl2.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 (dom, selection, node, moveCaret) {\n var rng, block, textNode;\n rng = selection.getRng(true);\n block = dom.getParent(node, dom.isBlock);\n if (isCaretContainerEmpty(node)) {\n if (moveCaret !== false) {\n rng.setStartBefore(node);\n rng.setEndBefore(node);\n }\n dom.remove(node);\n } else {\n 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 }\n if (block && dom.isEmpty(block)) {\n $_zygeg3ljkmcwkvo.fillWithPaddingBr(Element$$1.fromDom(block));\n }\n selection.setRng(rng);\n };\n var removeCaretContainer = function (body, dom, selection, node, moveCaret) {\n if (!node) {\n node = getParentCaretContainer(body, selection.getStart());\n if (!node) {\n while (node = dom.get(CARET_ID$1)) {\n removeCaretContainerNode(dom, selection, node, false);\n }\n }\n } else {\n removeCaretContainerNode(dom, selection, node, moveCaret);\n }\n };\n var insertCaretContainerNode = function (editor, caretContainer, formatNode) {\n var dom = editor.dom, block = dom.getParent(formatNode, $_fl2rax2ljkmcwkot.curry($_dli08w3ajkmcwktg.isTextBlock, editor));\n if (block && dom.isEmpty(block)) {\n formatNode.parentNode.replaceChild(caretContainer, formatNode);\n } else {\n $_zygeg3ljkmcwkvo.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, 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 = $_97afwh2ujkmcwkpw.expandRng(editor, rng, editor.formatter.get(name));\n rng = $_bnmynr69jkmcwlir.split(rng);\n editor.formatter.apply(name, 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, vars, caretContainer);\n } else {\n editor.formatter.apply(name, vars, caretContainer);\n }\n selection.setCursorLocation(textNode, offset);\n }\n };\n var removeCaretFormat = function (editor, name, 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 ($_axwnk168jkmcwlim.matchNode(editor, node, name, 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 = $_97afwh2ujkmcwkpw.expandRng(editor, rng, editor.formatter.get(name), true);\n expandedRng = $_bnmynr69jkmcwlir.split(expandedRng);\n editor.formatter.remove(name, 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(dom, selection, caretContainer, false);\n selection.setCursorLocation(caretNode, 1);\n if (dom.isEmpty(formatNode)) {\n dom.remove(formatNode);\n }\n }\n };\n var disableCaretContainer = function (body, dom, selection, keyCode) {\n removeCaretContainer(body, dom, selection, null, false);\n if (keyCode === 8 && selection.isCollapsed() && selection.getStart().innerHTML === ZWSP$1) {\n removeCaretContainer(body, dom, selection, getParentCaretContainer(body, selection.getStart()));\n }\n if (keyCode === 37 || keyCode === 39) {\n removeCaretContainer(body, dom, selection, getParentCaretContainer(body, selection.getStart()));\n }\n };\n var setup$4 = function (editor) {\n var dom = editor.dom, selection = editor.selection;\n var body = editor.getBody();\n editor.on('mouseup keydown', function (e) {\n disableCaretContainer(body, dom, selection, e.keyCode);\n });\n };\n var replaceWithCaretFormat = function (targetNode, formatNodes) {\n var caretContainer = createCaretContainer(false);\n var innerMost = insertFormatNodesIntoCaretContainer(formatNodes, caretContainer.dom());\n $_f4qt4v1yjkmcwkl2.before(Element$$1.fromDom(targetNode), caretContainer);\n $_eualm21wjkmcwkku.remove(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($_2xwdjv11jkmcwke0.name(element)) && !isCaretNode(element.dom()) && !$_bjermr1rjkmcwkij.isBogus(element.dom());\n };\n\n var postProcessHooks = {};\n var filter$2 = $_9g1fibmjkmcwkbu.filter;\n var each$12 = $_9g1fibmjkmcwkbu.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$12(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) && $_9g1fibmjkmcwkbu.indexOf(blocks, pre.previousSibling) !== -1;\n };\n var joinPre = function (pre1, pre2) {\n DomQuery(pre2).remove();\n DomQuery(pre1).append('

').append(pre2.childNodes);\n };\n isPre = $_bjermr1rjkmcwkij.matchNodeNames('pre');\n if (!rng.collapsed) {\n blocks = editor.selection.getSelectedBlocks();\n each$12(filter$2(filter$2(blocks, isPre), hasPreSibling), function (pre) {\n joinPre(pre.previousSibling, pre);\n });\n }\n });\n var $_dp9y746ajkmcwlit = { postProcess: postProcess };\n\n var MCE_ATTR_RE = /^(src|href|style)$/;\n var each$13 = $_4ujg4tljkmcwkbk.each;\n var isEq$5 = $_dli08w3ajkmcwktg.isEq;\n var isTableCell$4 = function (node) {\n return /^(TH|TD)$/.test(node.nodeName);\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 ($_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.isText(container) && start && offset >= container.nodeValue.length) {\n container = new TreeWalker(container, ed.getBody()).next() || container;\n }\n if ($_bjermr1rjkmcwkij.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 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 $_bjermr1rjkmcwkij.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 = $_dli08w3ajkmcwktg.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$13($_4ujg4tljkmcwkbk.grep(node.childNodes), function (node) {\n if ($_dli08w3ajkmcwktg.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$13(format.styles, function (value, name) {\n value = $_dli08w3ajkmcwktg.normalizeStyleValue(dom, $_dli08w3ajkmcwktg.replaceVars(value, vars), name);\n if (typeof name === 'number') {\n name = value;\n compareNode = 0;\n }\n if (format.remove_similar || (!compareNode || isEq$5($_dli08w3ajkmcwktg.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$13(format.attributes, function (value, name) {\n var valueOut;\n value = $_dli08w3ajkmcwktg.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$13(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$13(format.classes, function (value) {\n value = $_dli08w3ajkmcwktg.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$13($_dli08w3ajkmcwktg.getParents(editor.dom, container.parentNode).reverse(), function (parent) {\n var format;\n if (!formatRoot && parent.id !== '_start' && parent.id !== '_end') {\n format = $_axwnk168jkmcwlim.matchNode(editor, parent, name, vars, similar);\n if (format && format.split !== false) {\n formatRoot = parent;\n }\n }\n });\n return formatRoot;\n };\n var wrapAndSplit = function (editor, formatList, formatRoot, container, target, split, format, vars) {\n var parent, clone, lastClone, firstClone, i, formatRootParent;\n var dom = editor.dom;\n if (formatRoot) {\n formatRootParent = formatRoot.parentNode;\n for (parent = container.parentNode; parent && parent !== formatRootParent; parent = parent.parentNode) {\n clone = dom.clone(parent, 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 process = function (node) {\n var children, i, l, lastContentEditable, hasContentEditableState;\n if ($_bjermr1rjkmcwkij.isElement(node) && dom.getContentEditable(node)) {\n lastContentEditable = contentEditable;\n contentEditable = dom.getContentEditable(node) === 'true';\n hasContentEditableState = true;\n }\n children = $_4ujg4tljkmcwkbk.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.length) {\n for (i = 0, l = children.length; i < l; i++) {\n process(children[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 ($_e4btcc2vjkmcwkq3.isBookmarkNode(out)) {\n out = out[start ? 'firstChild' : 'lastChild'];\n }\n if ($_bjermr1rjkmcwkij.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 = $_97afwh2ujkmcwkpw.expandRng(ed, rng, formatList, true);\n if (format.split) {\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 (dom.isChildOf(startContainer, endContainer) && startContainer !== endContainer && !dom.isBlock(endContainer) && !isTableCell$4(startContainer) && !isTableCell$4(endContainer)) {\n startContainer = wrap$2(dom, startContainer, 'span', {\n 'id': '_start',\n 'data-mce-type': 'bookmark'\n });\n splitToFormatRoot(startContainer);\n startContainer = unwrap(true);\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 $_cuckrv3bjkmcwktk.walk(dom, rng, function (nodes) {\n each$13(nodes, function (node) {\n process(node);\n if ($_bjermr1rjkmcwkij.isElement(node) && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && $_dli08w3ajkmcwktg.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 = $_aw3zi52jjkmcwkoa.getPersistentBookmark(ed.selection, true);\n removeRngStyle(selection.getRng());\n selection.moveToBookmark(bookmark);\n if (format.inline && $_axwnk168jkmcwlim.match(ed, name, vars, selection.getStart())) {\n $_dli08w3ajkmcwktg.moveStart(dom, selection, selection.getRng());\n }\n ed.nodeChanged();\n } else {\n removeCaretFormat(ed, name, vars, similar);\n }\n };\n var $_2vklhc6cjkmcwlj5 = {\n removeFormat: removeFormat,\n remove: remove$8\n };\n\n var each$14 = $_4ujg4tljkmcwkbk.each;\n var isElementNode = function (node) {\n return node && node.nodeType === 1 && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node) && !isCaretNode(node) && !$_bjermr1rjkmcwkij.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 && !$_e4btcc2vjkmcwkq3.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 $_4ujg4tljkmcwkbk.each($_4ujg4tljkmcwkbk.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$14(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 && $_dli08w3ajkmcwktg.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 = $_dli08w3ajkmcwktg.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 $_4ujg4tljkmcwkbk.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', $_dli08w3ajkmcwktg.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, $_dli08w3ajkmcwktg.getNonWhiteSpaceSibling(node), node);\n node = mergeSiblingsNodes(dom, node, $_dli08w3ajkmcwktg.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$14(dom.select(selector, node), function (node) {\n if (isElementNode(node)) {\n each$14(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$14(formatList, function (format) {\n each$14(editor.dom.select(format.inline, node), function (child) {\n if (!isElementNode(child)) {\n return;\n }\n $_2vklhc6cjkmcwlj5.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 ($_axwnk168jkmcwlim.matchNode(editor, node.parentNode, name, vars)) {\n if ($_2vklhc6cjkmcwlj5.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 ($_axwnk168jkmcwlim.matchNode(editor, parent, name, vars)) {\n $_2vklhc6cjkmcwlj5.removeFormat(editor, format, vars, node);\n return true;\n }\n });\n }\n };\n var $_ehzows6bjkmcwliw = {\n mergeWithChildren: mergeWithChildren,\n mergeUnderlineAndColor: mergeUnderlineAndColor,\n mergeBackgroundColorAndFontSize: mergeBackgroundColorAndFontSize,\n mergeSubSup: mergeSubSup,\n mergeSiblings: mergeSiblings,\n mergeWithParents: mergeWithParents\n };\n\n var each$15 = $_4ujg4tljkmcwkbk.each;\n var isElementNode$1 = function (node) {\n return node && node.nodeType === 1 && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node) && !isCaretNode(node) && !$_bjermr1rjkmcwkij.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$15(fmt.styles, function (value, name) {\n dom.setStyle(elm, name, $_dli08w3ajkmcwktg.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$15(fmt.attributes, function (value, name) {\n dom.setAttrib(elm, name, $_dli08w3ajkmcwktg.replaceVars(value, vars));\n });\n each$15(fmt.classes, function (value) {\n value = $_dli08w3ajkmcwktg.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$15(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 $_cuckrv3bjkmcwktk.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 ($_dli08w3ajkmcwktg.isEq(nodeName, 'br')) {\n currentWrapElm = 0;\n if (format.block) {\n dom.remove(node);\n }\n return;\n }\n if (format.wrapper && $_axwnk168jkmcwlim.matchNode(ed, node, name, vars)) {\n currentWrapElm = 0;\n return;\n }\n if (contentEditable && !hasContentEditableState && format.block && !format.wrapper && $_dli08w3ajkmcwktg.isTextBlock(ed, nodeName) && $_dli08w3ajkmcwktg.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 && $_dli08w3ajkmcwktg.isValid(ed, wrapName, nodeName) && $_dli08w3ajkmcwktg.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$15($_4ujg4tljkmcwkbk.grep(node.childNodes), process);\n if (hasContentEditableState) {\n contentEditable = lastContentEditable;\n }\n currentWrapElm = 0;\n }\n };\n each$15(nodes, process);\n });\n if (format.links === true) {\n each$15(newWrappers, function (node) {\n var process = function (node) {\n if (node.nodeName === 'A') {\n setElementFormat(node, format);\n }\n each$15($_4ujg4tljkmcwkbk.grep(node.childNodes), process);\n };\n process(node);\n });\n }\n each$15(newWrappers, function (node) {\n var childCount;\n var getChildCount = function (node) {\n var count = 0;\n each$15(node.childNodes, function (node) {\n if (!$_dli08w3ajkmcwktg.isWhiteSpaceNode(node) && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node)) {\n count++;\n }\n });\n return count;\n };\n var getChildElementNode = function (root) {\n var child = false;\n each$15(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 && !$_e4btcc2vjkmcwkq3.isBookmarkNode(child) && $_axwnk168jkmcwlim.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 $_ehzows6bjkmcwliw.mergeWithChildren(ed, formatList, vars, node);\n $_ehzows6bjkmcwliw.mergeWithParents(ed, format, name, vars, node);\n $_ehzows6bjkmcwliw.mergeBackgroundColorAndFontSize(dom, format, vars, node);\n $_ehzows6bjkmcwliw.mergeSubSup(dom, format, vars, node);\n $_ehzows6bjkmcwliw.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, $_97afwh2ujkmcwkpw.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($_bx30le3ojkmcwkw9.normalize(ed.selection.getRng()));\n bookmark = $_aw3zi52jjkmcwkoa.getPersistentBookmark(ed.selection, true);\n applyRngStyle(dom, $_97afwh2ujkmcwkpw.expandRng(ed, selection.getRng(), formatList), bookmark);\n if (format.styles) {\n $_ehzows6bjkmcwliw.mergeUnderlineAndColor(dom, format, vars, curSelNode);\n }\n selection.moveToBookmark(bookmark);\n $_dli08w3ajkmcwktg.moveStart(dom, selection, selection.getRng());\n ed.nodeChanged();\n } else {\n applyCaretFormat(ed, name, vars);\n }\n }\n $_dp9y746ajkmcwlit.postProcess(name, ed);\n }\n };\n var $_bcenmc66jkmcwlhp = { applyFormat: applyFormat };\n\n var each$16 = $_4ujg4tljkmcwkbk.each;\n var setup$5 = function (formatChangeData, editor) {\n var currentFormats = {};\n formatChangeData.set({});\n editor.on('NodeChange', function (e) {\n var parents = $_dli08w3ajkmcwktg.getParents(editor.dom, e.element);\n var matchedFormats = {};\n parents = $_4ujg4tljkmcwkbk.grep(parents, function (node) {\n return node.nodeType === 1 && !node.getAttribute('data-mce-bogus');\n });\n each$16(formatChangeData.get(), function (callbacks, format) {\n each$16(parents, function (node) {\n if (editor.formatter.matchNode(node, format, {}, callbacks.similar)) {\n if (!currentFormats[format]) {\n each$16(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 ($_axwnk168jkmcwlim.matchesUnInheritedFormatSelector(editor, node, format)) {\n return false;\n }\n });\n });\n each$16(currentFormats, function (callbacks, format) {\n if (!matchedFormats[format]) {\n delete currentFormats[format];\n each$16(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$16(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 $_5j3j9s6djkmcwljg = { formatChanged: formatChanged };\n\n var get$7 = 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 $_4ujg4tljkmcwkbk.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 $_4ujg4tljkmcwkbk.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 $_8oc5be6fjkmcwljl = { get: get$7 };\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 $_4ujg4tljkmcwkbk.each(name, function (format, name) {\n register(name, format);\n });\n } else {\n format = format.length ? format : [format];\n $_4ujg4tljkmcwkbk.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($_8oc5be6fjkmcwljl.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$17 = $_4ujg4tljkmcwkbk.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 && $_4ujg4tljkmcwkbk.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 $_4ujg4tljkmcwkbk.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 = $_4ujg4tljkmcwkbk.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 ($_4ujg4tljkmcwkbk.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 $_4ujg4tljkmcwkbk.map(selector.split(/(?:>|\\s+(?![^\\[\\]]+\\]))/), function (item) {\n var siblings = $_4ujg4tljkmcwkbk.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$17(format.styles, function (value, name) {\n value = removeVars(value);\n if (value) {\n dom.setStyle(previewElm, name, value);\n }\n });\n each$17(format.attributes, function (value, name) {\n value = removeVars(value);\n if (value) {\n dom.setAttrib(previewElm, name, value);\n }\n });\n each$17(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$17(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 $_ga7lpr6gjkmcwlk1 = {\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 ($_axwnk168jkmcwlim.match(editor, name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) {\n $_2vklhc6cjkmcwlj5.remove(editor, name, vars, node);\n } else {\n $_bcenmc66jkmcwlhp.applyFormat(editor, name, vars, node);\n }\n };\n var $_1zpcor6hjkmcwlk7 = { 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 $_2ind0x6ijkmcwlk8 = { setup: setup$6 };\n\n function Formatter (editor) {\n var formats = FormatRegistry(editor);\n var formatChangeState = Cell(null);\n $_2ind0x6ijkmcwlk8.setup(editor);\n setup$4(editor);\n return {\n get: formats.get,\n register: formats.register,\n unregister: formats.unregister,\n apply: curry($_bcenmc66jkmcwlhp.applyFormat, editor),\n remove: curry($_2vklhc6cjkmcwlj5.remove, editor),\n toggle: curry($_1zpcor6hjkmcwlk7.toggle, editor, formats),\n match: curry($_axwnk168jkmcwlim.match, editor),\n matchAll: curry($_axwnk168jkmcwlim.matchAll, editor),\n matchNode: curry($_axwnk168jkmcwlim.matchNode, editor),\n canApply: curry($_axwnk168jkmcwlim.canApply, editor),\n formatChanged: curry($_5j3j9s6djkmcwljg.formatChanged, editor, formatChangeState),\n getCssText: curry($_ga7lpr6gjkmcwlk1.getCssText, editor)\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\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 = $_33qwr1sjkmcwkip.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(/()/g, '\\n').replace(/^[\\r\\n]*|[\\r\\n]*$/g, '').replace(/^\\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 = '// ';\n }\n } else {\n if (settings.element_format === 'xhtml' && value.length > 0) {\n node.firstChild.value = '';\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 $_ft0zjh6mjkmcwlkr = {\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 $_4ujg4tljkmcwkbk.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 $_q3ric4tjkmcwl9q.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 $_27apc6njkmcwll3 = { 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, $_4ujg4tljkmcwkbk.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 $_2klegh6pjkmcwllk = { 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$3 = 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$3(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$3(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$3(node, self));\n }\n return true;\n };\n Node.prototype.walk = function (prev) {\n return walk$3(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 = $_4ujg4tljkmcwkbk.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 ? $_4ujg4tljkmcwkbk.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 = $_4ujg4tljkmcwkbk.makeMap;\n var each$18 = $_4ujg4tljkmcwkbk.each;\n var explode$3 = $_4ujg4tljkmcwkbk.explode;\n var extend$3 = $_4ujg4tljkmcwkbk.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 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$18(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$18(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 $_2klegh6pjkmcwllk.register(exports, settings);\n return exports;\n }\n\n var addTempAttr = function (htmlParser, tempAttrs, name) {\n if ($_4ujg4tljkmcwkbk.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 = $_q3ric4tjkmcwl9q.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 = $_cadvcr2pjkmcwkph.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node));\n return args.selection || isWsPreserveElement(Element$$1.fromDom(node)) ? html : $_4ujg4tljkmcwkbk.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 $_ft0zjh6mjkmcwlkr.trimTrailingBr(rootNode);\n return rootNode;\n };\n var serializeNode = function (settings, schema, node) {\n var htmlSerializer = HtmlSerializer(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 $_ft0zjh6mjkmcwlkr.register(htmlParser, settings, dom);\n var serialize = function (node, parserArgs) {\n var args = merge({ format: 'html' }, parserArgs ? parserArgs : {});\n var targetNode = $_27apc6njkmcwll3.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 DomSerializer$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($_e4btcc2vjkmcwkq3.getBookmark, selection),\n moveToBookmark: curry($_e4btcc2vjkmcwkq3.moveToBookmark, selection)\n };\n }\n (function (BookmarkManager) {\n BookmarkManager.isBookmarkNode = $_e4btcc2vjkmcwkq3.isBookmarkNode;\n }(BookmarkManager || (BookmarkManager = {})));\n var BookmarkManager$1 = BookmarkManager;\n\n var isContentEditableFalse$10 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isContentEditableTrue$6 = $_bjermr1rjkmcwkij.isContentEditableTrue;\n var getContentEditableRoot$2 = function (root, node) {\n while (node && node !== root) {\n if (isContentEditableTrue$6(node) || isContentEditableFalse$10(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 = $_4ujg4tljkmcwkbk.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;' + ($_cvvl9iajkmcwk25.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) && !$_95lcbc5ujkmcwlg1.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 || $_cvvl9iajkmcwk25.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 $_4jv6d81gjkmcwkgv.is(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 = !$_6bj5795wjkmcwlg6.modifierPressed(e);\n } else {\n proportional = $_6bj5795wjkmcwlg6.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 + ' × ' + 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 $_q3ric4tjkmcwl9q.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 $_q3ric4tjkmcwl9q.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 + ' × ' + 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 ($_cvvl9iajkmcwk25.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$10(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 ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.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 $_3l01gcijkmcwk99.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 = $_3l01gcijkmcwk99.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 hasCeProperty = function (node) {\n return $_bjermr1rjkmcwkij.isContentEditableTrue(node) || $_bjermr1rjkmcwkij.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 = $_4ujg4tljkmcwkbk.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 $_bjermr1rjkmcwkij.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 $_52q21w6wjkmcwlna = { 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 $_8161126xjkmcwlnd = { 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 var $_a3l7fy70jkmcwloa = { fromElements: fromElements };\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($_29helg15jkmcwkf0.get(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($_44uvy22ijkmcwko5.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 : $_44uvy22ijkmcwko5.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 ($_e4hu6h1ejkmcwkgj.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 = $_44uvy22ijkmcwko5.shallow(table.element());\n var tableBody = Element$$1.fromTag('tbody');\n $_1ev7t1xjkmcwkky.append(tableBody, rows);\n $_f4qt4v1yjkmcwkl2.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 = $_44uvy22ijkmcwko5.deep(cell);\n $_29helg15jkmcwkf0.remove(td, 'colspan');\n $_29helg15jkmcwkf0.remove(td, 'rowspan');\n return td;\n });\n var tr = $_44uvy22ijkmcwko5.shallow(row.element());\n $_1ev7t1xjkmcwkky.append(tr, cells);\n return tr;\n });\n };\n var fromDom$2 = function (tableElm) {\n var table = tableModel($_44uvy22ijkmcwko5.shallow(tableElm), 0, []);\n each($_2gqm0n27jkmcwkmi.descendants(tableElm, 'tr'), function (tr, y) {\n each($_2gqm0n27jkmcwkmi.descendants(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 $_6wuzo771jkmcwlof = {\n fromDom: fromDom$2,\n toDom: toDom,\n subsection: subsection\n };\n\n var findParentListContainer = function (parents) {\n return find(parents, function (elm) {\n return $_2xwdjv11jkmcwke0.name(elm) === 'ul' || $_2xwdjv11jkmcwke0.name(elm) === 'ol';\n });\n };\n var getFullySelectedListWrappers = function (parents, rng) {\n return find(parents, function (elm) {\n return $_2xwdjv11jkmcwke0.name(elm) === 'li' && hasAllContentsSelected(elm, rng);\n }).fold(constant([]), function (li) {\n return findParentListContainer(parents).map(function (listCont) {\n return [\n Element$$1.fromTag('li'),\n Element$$1.fromTag($_2xwdjv11jkmcwke0.name(listCont))\n ];\n }).getOr([]);\n });\n };\n var wrap$3 = function (innerElm, elms) {\n var wrapped = foldl(elms, function (acc, elm) {\n $_f4qt4v1yjkmcwkl2.append(elm, acc);\n return elm;\n }, innerElm);\n return elms.length > 0 ? $_a3l7fy70jkmcwloa.fromElements([wrapped]) : wrapped;\n };\n var directListWrappers = function (commonAnchorContainer) {\n if (isListItem(commonAnchorContainer)) {\n return $_ca6pc118jkmcwkfs.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 = $_cir6zl3zjkmcwl2j.parentsAndSelf(commonAnchorContainer, rootNode);\n var wrapElements = filter(parents, function (elm) {\n return isInline(elm) || isHeading(elm);\n });\n var listWrappers = getFullySelectedListWrappers(parents, rng);\n var allWrappers = wrapElements.concat(listWrappers.length ? listWrappers : directListWrappers(commonAnchorContainer));\n return map(allWrappers, $_44uvy22ijkmcwko5.shallow);\n };\n var emptyFragment = function () {\n return $_a3l7fy70jkmcwloa.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 $_4ki4d929jkmcwkmn.ancestor(cell, 'table', curry($_e4hu6h1ejkmcwkgj.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 = $_6wuzo771jkmcwlof.fromDom(tableElm);\n return $_6wuzo771jkmcwlof.subsection(fullTableModel, firstCell, lastCell).map(function (sectionedTableModel) {\n return $_a3l7fy70jkmcwloa.fromElements([$_6wuzo771jkmcwlof.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 = $_7q5gk44ejkmcwl6p.getCellsFromElementOrRanges(ranges, rootNode);\n return selectedCells.length > 0 ? getTableFragment(rootNode, selectedCells) : getSelectionFragment(rootNode, ranges);\n };\n var $_2bm266zjkmcwlnj = { read: read$4 };\n\n var getContent = 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 = $_8161126xjkmcwlnd.processRanges(editor, $_admly54fjkmcwl6u.getRanges(sel));\n args = args || {};\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 editor.selection.isCollapsed() ? '' : $_cadvcr2pjkmcwkph.trim(rng.text || (sel.toString ? sel.toString() : ''));\n }\n if (rng.cloneContents) {\n fragment = args.contextual ? $_2bm266zjkmcwlnj.read(Element$$1.fromDom(editor.getBody()), ranges).dom() : rng.cloneContents();\n if (fragment) {\n tmpElm.appendChild(fragment);\n }\n } else if (rng.item !== undefined || rng.htmlText !== undefined) {\n tmpElm.innerHTML = '
' + (rng.item ? rng.item(0).outerHTML : rng.htmlText);\n tmpElm.removeChild(tmpElm.firstChild);\n } else {\n tmpElm.innerHTML = rng.toString();\n }\n args.getInner = true;\n var content = editor.selection.serializer.serialize(tmpElm, args);\n if (args.format === 'tree') {\n return content;\n }\n args.content = editor.selection.isCollapsed() ? '' : content;\n editor.fire('GetContent', args);\n return args.content;\n };\n var $_eu7sms6yjkmcwlnf = { 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 += '_';\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('_' + 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 $_b7rwud72jkmcwlow = { 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 ? $_ca6pc118jkmcwkfs.child(elm, resolve(elm, offset)).getOr(elm) : elm;\n }).bind(function (elm) {\n return $_2xwdjv11jkmcwke0.isElement(elm) ? Option.some(elm) : $_ca6pc118jkmcwkfs.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($_ca6pc118jkmcwkfs.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 && $_bjermr1rjkmcwkij.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$19 = $_4ujg4tljkmcwkbk.each;\n var isNativeIeSelection = function (rng) {\n return !!rng.select;\n };\n var isAttachedToDom = function (node) {\n return !!(node && node.ownerDocument) && $_e4hu6h1ejkmcwkgj.contains(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$1 = 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 $_eu7sms6yjkmcwlnf.getContent(editor, args);\n };\n var setContent = function (content, args) {\n return $_b7rwud72jkmcwlow.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 && $_e3v8sn4vjkmcwl9y.hasFocus(editor) === false) {\n var bookmark = $_39c3zs4ljkmcwl86.getRng(editor);\n if (bookmark.isSome()) {\n return bookmark.map(function (r) {\n return $_8161126xjkmcwlnd.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 = $_8161126xjkmcwlnd.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 && !$_cvvl9iajkmcwk25.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 (!$_admly54fjkmcwl6u.hasMultipleRanges(sel) && hasAnyRanges(editor)) {\n var normRng = $_21c07i4jjkmcwl7w.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$19(selectorChangedData, function (callbacks, selector) {\n each$19(parents, function (node) {\n if (dom.is(node, selector)) {\n if (!currentSelectors[selector]) {\n each$19(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$19(currentSelectors, function (callbacks, selector) {\n if (!matchedSelectors[selector]) {\n delete currentSelectors[selector];\n each$19(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 $_a6610x37jkmcwkt5.scrollElementIntoView(editor, elm, alignToTop);\n };\n var placeCaretAt = function (clientX, clientY) {\n return setRng($_52q21w6wjkmcwlna.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$11 = $_bjermr1rjkmcwkij.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 && $_bjermr1rjkmcwkij.isBr(from.getNode())) {\n return true;\n }\n return inSameBlock;\n };\n var moveToCeFalseHorizontally = function (direction, editor, getNextPosFn, range) {\n var node, caretPosition, peekCaretPosition, rangeIsInContainerBlock;\n var forwards = direction === HDirection.Forwards;\n var isBeforeContentEditableFalseFn = forwards ? isBeforeContentEditableFalse$2 : isAfterContentEditableFalse$2;\n if (!range.collapsed) {\n node = getSelectedNode$1(range);\n if (isContentEditableFalse$11(node)) {\n return showCaret(direction, editor, node, direction === HDirection.Backwards, true);\n }\n }\n rangeIsInContainerBlock = isRangeInCaretContainerBlock(range);\n caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);\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;\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) {\n var caretPosition, linePositions, nextLinePositions;\n var closestNextLineRect, caretClientRect, clientX;\n var dist1, dist2, contentEditableFalseNode;\n contentEditableFalseNode = getSelectedNode$1(range);\n caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);\n linePositions = walkerFn(editor.getBody(), isAboveLine(1), caretPosition);\n nextLinePositions = $_9g1fibmjkmcwkbu.filter(linePositions, isLine(1));\n caretClientRect = $_9g1fibmjkmcwkbu.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$11(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($_9g1fibmjkmcwkbu.filter(caretPositions, isLine(1)), clientX);\n if (closestNextLineRect) {\n return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true);\n }\n closestNextLineRect = $_9g1fibmjkmcwkbu.last($_9g1fibmjkmcwkbu.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 (!$_cvvl9iajkmcwk25.ie || $_cvvl9iajkmcwk25.ie >= 11) {\n textBlock.innerHTML = '
';\n }\n return textBlock;\n };\n var exitPreBlock = function (editor, direction, range) {\n var pre, caretPos, newBlock;\n var caretWalker = CaretWalker(editor.getBody());\n var getNextVisualCaretPosition = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.next);\n var getPrevVisualCaretPosition = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.prev);\n if (range.collapsed && editor.settings.forced_root_block) {\n pre = editor.dom.getParent(range.startContainer, 'PRE');\n if (!pre) {\n return;\n }\n if (direction === 1) {\n caretPos = getNextVisualCaretPosition(CaretPosition$1.fromRangeStart(range));\n } else {\n caretPos = getPrevVisualCaretPosition(CaretPosition$1.fromRangeStart(range));\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 = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.next);\n var getPrevVisualCaretPosition = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.prev);\n var newRange;\n var direction = forward ? HDirection.Forwards : HDirection.Backwards;\n var getNextPosFn = forward ? getNextVisualCaretPosition : getPrevVisualCaretPosition;\n var range = editor.selection.getRng();\n newRange = moveToCeFalseHorizontally(direction, editor, getNextPosFn, range);\n if (newRange) {\n return newRange;\n }\n newRange = exitPreBlock(editor, direction, range);\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 = editor.selection.getRng();\n newRange = moveToCeFalseVertically(direction, editor, walkerFn, range);\n if (newRange) {\n return newRange;\n }\n newRange = exitPreBlock(editor, direction, range);\n if (newRange) {\n return newRange;\n }\n return null;\n };\n var moveH$1 = 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$1 = 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 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 $_3olmgr77jkmcwlpj = {\n match: match$1,\n action: action,\n execute: execute\n };\n\n var executeKeydownOverride = function (editor, caret, evt) {\n var os = $_b1ykk4ojkmcwkcj.detect().os;\n $_3olmgr77jkmcwlpj.execute([\n {\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\n action: moveH$1(editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\n action: moveH$1(editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.UP,\n action: moveV$1(editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DOWN,\n action: moveV$1(editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\n action: moveH(editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\n action: moveH(editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.UP,\n action: moveV(editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DOWN,\n action: moveV(editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\n action: $_dl6t9m4ajkmcwl5b.move(editor, caret, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\n action: $_dl6t9m4ajkmcwl5b.move(editor, caret, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\n ctrlKey: !os.isOSX(),\n altKey: os.isOSX(),\n action: $_dl6t9m4ajkmcwl5b.moveNextWord(editor, caret)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\n ctrlKey: !os.isOSX(),\n altKey: os.isOSX(),\n action: $_dl6t9m4ajkmcwl5b.movePrevWord(editor, caret)\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 $_emza9w75jkmcwlp9 = { setup: setup$7 };\n\n var getParentInlines = function (rootElm, startElm) {\n var parents = $_cir6zl3zjkmcwl2j.parentsAndSelf(startElm, rootElm);\n return findIndex(parents, isBlock).fold(constant(parents), function (index) {\n return parents.slice(0, index);\n });\n };\n var hasOnlyOneChild$1 = function (elm) {\n return $_ca6pc118jkmcwkfs.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 $_4yq1i444jkmcwl3w.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 ($_8z75uj3sjkmcwkx3.willDeleteLastPositionInElement(forward, fromPos, target.dom())) {\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 $_7tr96779jkmcwlpz = { backspaceDelete: backspaceDelete$5 };\n\n var executeKeydownOverride$1 = function (editor, caret, evt) {\n $_3olmgr77jkmcwlpj.execute([\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.backspaceDelete, editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.backspaceDelete, editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_dqvreg45jkmcwl4e.backspaceDelete, editor, caret, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_dqvreg45jkmcwl4e.backspaceDelete, editor, caret, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_5lrlvq4cjkmcwl5t.backspaceDelete, editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_5lrlvq4cjkmcwl5t.backspaceDelete, editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_egxtcx40jkmcwl2q.backspaceDelete, editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_egxtcx40jkmcwl2q.backspaceDelete, editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_1wrlyf3qjkmcwkwe.backspaceDelete, editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_1wrlyf3qjkmcwkwe.backspaceDelete, editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_7tr96779jkmcwlpz.backspaceDelete, editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_7tr96779jkmcwlpz.backspaceDelete, editor, true)\n }\n ], evt).each(function (_) {\n evt.preventDefault();\n });\n };\n var executeKeyupOverride = function (editor, evt) {\n $_3olmgr77jkmcwlpj.execute([\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.paddEmptyElement, editor)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.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 $_4dsl7478jkmcwlpw = { 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 ($_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.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 $_79nvm87ejkmcwlqu = {\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 ($_bjermr1rjkmcwkij.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 $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\n };\n var $_5ckamj7djkmcwlqo = { insert: insert$1 };\n\n var isEmptyAnchor = function (elm) {\n return elm && elm.nodeName === 'A' && $_4ujg4tljkmcwkbk.trim($_cadvcr2pjkmcwkph.trim(elm.innerText || elm.textContent)).length === 0;\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 = '
';\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 ($_bjermr1rjkmcwkij.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(node)) {\n dom.remove(node);\n }\n }\n }\n };\n var normalizeZwspOffset = function (start, container, offset) {\n if ($_bjermr1rjkmcwkij.isText(container) === false) {\n return offset;\n } else if (start) {\n return offset === 1 && container.data.charAt(offset - 1) === $_cadvcr2pjkmcwkph.ZWSP ? 0 : offset;\n } else {\n return offset === container.data.length - 1 && container.data.charAt(offset) === $_cadvcr2pjkmcwkph.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 ($_bjermr1rjkmcwkij.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 = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n if (forcedRootBlockName && forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) {\n editor.dom.setAttribs(node, $_2ycm1438jkmcwkta.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) {\n var node = container, block, clonedNode, caretNode;\n var textInlineElements = schema.getTextInlineElements();\n if (name || parentBlockName === 'TABLE' || parentBlockName === 'HR') {\n block = dom.create(name || newBlockName);\n setForcedBlockAttrs(editor, block);\n } else {\n block = parentBlock.cloneNode(false);\n }\n caretNode = block;\n if ($_2ycm1438jkmcwkta.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, normalizedOffset;\n normalizedOffset = normalizeZwspOffset(start, container, offset);\n if ($_bjermr1rjkmcwkij.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 && $_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.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 ($_bjermr1rjkmcwkij.isElement(node)) {\n if (!node.getAttribute('data-mce-bogus')) {\n name = node.nodeName.toLowerCase();\n if (nonEmptyElementsMap[name] && name !== 'br') {\n return false;\n }\n }\n } else if ($_bjermr1rjkmcwkij.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 ($_2ycm1438jkmcwkta.shouldEndContainerOnEmptyBlock(editor) && canSplitBlock(dom, containerBlock) && dom.isEmpty(parentBlock)) {\n newBlock = dom.split(containerBlock, parentBlock);\n } else {\n dom.insertAfter(newBlock, parentBlock);\n }\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\n };\n $_21c07i4jjkmcwl7w.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 = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n shiftKey = evt.shiftKey;\n if ($_bjermr1rjkmcwkij.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 && $_bjermr1rjkmcwkij.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 $_5ckamj7djkmcwlqo.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 $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\n } else if (isCaretAtStartOrEndOfBlock()) {\n insertNewBlockAfter();\n } else if (isCaretAtStartOrEndOfBlock(true)) {\n newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock);\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, containerAndSiblingName(parentBlock, 'HR') ? newBlock : parentBlock);\n } else {\n tmpRng = includeZwspInRange(rng).cloneRange();\n tmpRng.setEndAfter(parentBlock);\n fragment = tmpRng.extractContents();\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 $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\n }\n }\n dom.setAttrib(newBlock, 'id', '');\n editor.fire('NewBlock', { newBlock: newBlock });\n };\n var $_dr0y3j7cjkmcwlqe = { insert: insert$2 };\n\n var matchesSelector = function (editor, selector) {\n return $_79nvm87ejkmcwlqu.getParentBlock(editor).filter(function (parentBlock) {\n return selector.length > 0 && $_4jv6d81gjkmcwkgv.is(Element$$1.fromDom(parentBlock), selector);\n }).isSome();\n };\n var shouldInsertBr = function (editor) {\n return matchesSelector(editor, $_2ycm1438jkmcwkta.getBrNewLineSelector(editor));\n };\n var shouldBlockNewLine = function (editor) {\n return matchesSelector(editor, $_2ycm1438jkmcwkta.getNoNewLineSelector(editor));\n };\n var $_g7oj6o7gjkmcwlr8 = {\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 $_g7oj6o7gjkmcwlr8.shouldBlockNewLine(editor);\n };\n var isBrMode = function (requiredState) {\n return function (editor, shiftKey) {\n var brMode = $_2ycm1438jkmcwkta.getForcedRootBlock(editor) === '';\n return brMode === requiredState;\n };\n };\n var inListBlock = function (requiredState) {\n return function (editor, shiftKey) {\n return $_79nvm87ejkmcwlqu.isListItemParentBlock(editor) === requiredState;\n };\n };\n var inBlock = function (blockName, requiredState) {\n return function (editor, shiftKey) {\n var state = $_79nvm87ejkmcwlqu.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 $_2ycm1438jkmcwkta.shouldPutBrInPre(editor) === requiredState;\n };\n };\n var inBrContext = function (editor, shiftKey) {\n return $_g7oj6o7gjkmcwlr8.shouldInsertBr(editor);\n };\n var hasShiftKey = function (editor, shiftKey) {\n return shiftKey;\n };\n var canInsertIntoEditableRoot = function (editor) {\n var forcedRootBlock = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n var rootEditable = $_79nvm87ejkmcwlqu.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 $_8hyv6o49jkmcwl58.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 $_47r1sh7fjkmcwlr1 = { getAction: getAction$1 };\n\n var insert$3 = function (editor, evt) {\n $_47r1sh7fjkmcwlr1.getAction(editor, evt).fold(function () {\n $_dc07up4ijkmcwl7n.insert(editor, evt);\n }, function () {\n $_dr0y3j7cjkmcwlqe.insert(editor, evt);\n }, noop);\n };\n var $_fs2ah67bjkmcwlq8 = { 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 $_fs2ah67bjkmcwlq8.insert(editor, event);\n });\n };\n var setup$9 = function (editor) {\n editor.on('keydown', function (event) {\n if (event.keyCode === $_6bj5795wjkmcwlg6.ENTER) {\n handleEnterKeyEvent(editor, event);\n }\n });\n };\n var $_ni5l67ajkmcwlq7 = { setup: setup$9 };\n\n var isValidInsertPoint = function (location, caretPosition) {\n return isAtStartOrEnd(location) && $_bjermr1rjkmcwkij.isText(caretPosition.container());\n };\n var insertNbspAtPosition = function (editor, caretPosition) {\n var container = caretPosition.container();\n var offset = caretPosition.offset();\n container.insertData(offset, '\\xA0');\n editor.selection.setCursorLocation(container, offset + 1);\n };\n var insertAtLocation = function (editor, caretPosition, location) {\n if (isValidInsertPoint(location, caretPosition)) {\n insertNbspAtPosition(editor, caretPosition);\n return true;\n } else {\n return false;\n }\n };\n var insertAtCaret$2 = function (editor) {\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n var caretPosition = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n var boundaryLocation = $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, editor.getBody(), caretPosition);\n return boundaryLocation.map(curry(insertAtLocation, editor, caretPosition)).getOr(false);\n };\n var isAtStartOrEnd = function (location) {\n return location.fold(constant(false), constant(true), constant(true), constant(false));\n };\n var insertAtSelection = function (editor) {\n return editor.selection.isCollapsed() ? insertAtCaret$2(editor) : false;\n };\n var $_2cwo047ijkmcwlrj = { insertAtSelection: insertAtSelection };\n\n var executeKeydownOverride$2 = function (editor, evt) {\n $_3olmgr77jkmcwlpj.execute([{\n keyCode: $_6bj5795wjkmcwlg6.SPACEBAR,\n action: $_3olmgr77jkmcwlpj.action($_2cwo047ijkmcwlrj.insertAtSelection, editor)\n }], evt).each(function (_) {\n evt.preventDefault();\n });\n };\n var setup$10 = function (editor) {\n editor.on('keydown', function (evt) {\n if (evt.isDefaultPrevented() === false) {\n executeKeydownOverride$2(editor, evt);\n }\n });\n };\n var $_agfz917hjkmcwlrh = { setup: setup$10 };\n\n var findBlockCaretContainer = function (editor) {\n return $_4ki4d929jkmcwkmn.descendant(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$11 = function (editor) {\n editor.on('keyup compositionstart', curry(handleBlockContainer, editor));\n };\n var $_gfp1h7jjkmcwlrn = { setup: setup$11 };\n\n var setup$12 = function (editor) {\n var caret = $_dl6t9m4ajkmcwl5b.setupSelectedState(editor);\n $_gfp1h7jjkmcwlrn.setup(editor);\n $_emza9w75jkmcwlp9.setup(editor, caret);\n $_4dsl7478jkmcwlpw.setup(editor, caret);\n $_ni5l67ajkmcwlq7.setup(editor);\n $_agfz917hjkmcwlrh.setup(editor);\n };\n var $_ejk8vk74jkmcwlp8 = { setup: setup$12 };\n\n function Quirks (editor) {\n var each = $_4ujg4tljkmcwkbk.each;\n var BACKSPACE = $_6bj5795wjkmcwlg6.BACKSPACE, DELETE = $_6bj5795wjkmcwlg6.DELETE, dom = editor.dom, selection = editor.selection, settings = editor.settings, parser = editor.parser;\n var isGecko = $_cvvl9iajkmcwk25.gecko, isIE = $_cvvl9iajkmcwk25.ie, isWebKit = $_cvvl9iajkmcwk25.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 $_3l01gcijkmcwk99.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 $_3l01gcijkmcwk99.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 !== $_6bj5795wjkmcwlg6.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 (!$_6bj5795wjkmcwlg6.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 ($_cvvl9iajkmcwk25.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 ($_cvvl9iajkmcwk25.mac) {\n editor.on('keydown', function (e) {\n if ($_6bj5795wjkmcwlg6.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 = $_52q21w6wjkmcwlna.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 (!$_cvvl9iajkmcwk25.windowsPhone) {\n normalizeSelection();\n }\n if (isWebKit) {\n inputMethodFocus();\n selectControlElements();\n setDefaultBlockType();\n blockFormSubmitInsideEditor();\n disableBackspaceIntoATable();\n removeAppleInterchangeBrs();\n if ($_cvvl9iajkmcwk25.iOS) {\n restoreFocusOnKeyDown();\n bodyHeight();\n tapLinksAndImages();\n } else {\n selectAll();\n }\n }\n if ($_cvvl9iajkmcwk25.ie >= 11) {\n bodyHeight();\n disableBackspaceIntoATable();\n }\n if ($_cvvl9iajkmcwk25.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 $_bjermr1rjkmcwkij.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 $_1m3f3j2yjkmcwkqg.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 $_1m3f3j2yjkmcwkqg.lastPositionIn(container).each(function (pos) {\n return rng.setEnd(pos.container(), pos.offset());\n });\n }\n }\n editor.selection.setRng($_bx30le3ojkmcwkw9.normalize(rng));\n };\n var setup$13 = 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$14 = 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 $_29helg15jkmcwkf0.set(tag, 'type', 'text/css');\n $_f4qt4v1yjkmcwkl2.append(tag, Element$$1.fromText(text));\n $_f4qt4v1yjkmcwkl2.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 $_3l01gcijkmcwk99.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 onSetAttrib: function (e) {\n editor.fire('SetAttrib', e);\n }\n });\n editor.parser = createParser(editor);\n editor.serializer = DomSerializer$1(settings, editor);\n editor.selection = Selection$1(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$14(editor);\n setup$13(editor);\n $_ejk8vk74jkmcwlp8.setup(editor);\n $_5utnj35ljkmcwldh.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 $_4ujg4tljkmcwkbk.each(settings.protect, function (pattern) {\n e.content = e.content.replace(pattern, function (str) {\n return '';\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 $_4ujg4tljkmcwkbk.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 $_fssayf58jkmcwlbz = { initContentBody: initContentBody };\n\n var DOM$3 = DOMUtils$1.DOM;\n var relaxDomain = function (editor, ifr) {\n if (document.domain !== window.location.hostname && $_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 12) {\n var bodyUuid = $_8flfjw5jjkmcwldd.uuid('mce');\n editor[bodyUuid] = function () {\n $_fssayf58jkmcwlbz.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 $_29helg15jkmcwkf0.setAll(iframe, customAttrs);\n $_29helg15jkmcwkf0.setAll(iframe, {\n id: id + '_ifr',\n frameBorder: '0',\n allowTransparency: 'true',\n title: title\n });\n $_4enzit13jkmcwke5.setAll(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 = $_2ycm1438jkmcwkta.getDocType(editor) + '';\n if ($_2ycm1438jkmcwkta.getDocumentBaseUrl(editor) !== editor.documentBaseUrl) {\n iframeHTML += '';\n }\n iframeHTML += '';\n bodyId = $_2ycm1438jkmcwkta.getBodyId(editor);\n bodyClass = $_2ycm1438jkmcwkta.getBodyClass(editor);\n if ($_2ycm1438jkmcwkta.getContentSecurityPolicy(editor)) {\n iframeHTML += '';\n }\n iframeHTML += '
';\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, $_2ycm1438jkmcwkta.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 $_fssayf58jkmcwlbz.initContentBody(editor);\n }\n };\n var $_9jv4e17njkmcwlsj = { 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 = $_4ujg4tljkmcwkbk.trim(plugin);\n if (Plugin && $_4ujg4tljkmcwkbk.inArray(initializedPlugins, plugin) === -1) {\n $_4ujg4tljkmcwkbk.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 $_4ujg4tljkmcwkbk.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 $_4ujg4tljkmcwkbk.each($_4ujg4tljkmcwkbk.explode(settings.content_css), function (u) {\n editor.contentCSS.push(editor.documentBaseURI.toAbsolute(u));\n });\n }\n if (settings.content_editable) {\n return $_fssayf58jkmcwlbz.initContentBody(editor);\n } else {\n return $_9jv4e17njkmcwlsj.init(editor, boxInfo);\n }\n };\n var $_4z079955jkmcwlbj = { 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 ($_4ujg4tljkmcwkbk.isArray(settings.plugins)) {\n settings.plugins = settings.plugins.join(' ');\n }\n $_4ujg4tljkmcwkbk.each(settings.external_plugins, function (url, name$$1) {\n PluginManager$1.load(name$$1, url);\n settings.plugins += ' ' + name$$1;\n });\n $_4ujg4tljkmcwkbk.each(settings.plugins.split(/[ ,]/), function (plugin) {\n plugin = $_4ujg4tljkmcwkbk.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 $_4ujg4tljkmcwkbk.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 $_4z079955jkmcwlbj.init(editor);\n }\n }, editor, function (urls) {\n $_b9je0i54jkmcwlbe.pluginLoadError(editor, urls[0]);\n if (!editor.removed) {\n $_4z079955jkmcwlbj.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 (!$_cvvl9iajkmcwk25.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 $_9u29xe4yjkmcwlai = { 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 $_gcw4n27ojkmcwlsr = { add: add$4 };\n\n var each$20 = $_4ujg4tljkmcwkbk.each;\n var trim$4 = $_4ujg4tljkmcwkbk.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$20(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$20(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 = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n var emptyRegExp = new RegExp('^(<' + blockName + '[^>]*>( | |\\\\s|\\xA0|
|)<\\\\/' + blockName + '>[\\r\\n]*|
[\\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 = $_4ujg4tljkmcwkbk.trim($_2varuf5zjkmcwlgq.trimExternal(editor.serializer, body.innerHTML));\n } else if (args.format === 'text') {\n content = $_cadvcr2pjkmcwkph.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 = $_4ujg4tljkmcwkbk.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 ($_e3v8sn4vjkmcwl9y.hasFocus(editor)) {\n $_1m3f3j2yjkmcwkqg.firstPositionIn(editor.getBody()).each(function (pos) {\n var node = pos.getNode();\n var caretPos = $_bjermr1rjkmcwkij.isTable(node) ? $_1m3f3j2yjkmcwkqg.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 = '
';\n if (body.nodeName === 'TABLE') {\n content = '' + padd + '';\n } else if (/^(UL|OL)$/.test(body.nodeName)) {\n content = '
  • ' + padd + '
  • ';\n }\n forcedRootBlockName = $_2ycm1438jkmcwkta.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 = '
    ';\n }\n setEditorHtml(editor, content);\n editor.fire('SetContent', args);\n } else {\n if (args.format !== 'raw') {\n content = HtmlSerializer({ 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 : $_4ujg4tljkmcwkbk.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 = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(content);\n args.content = isWsPreserveElement(Element$$1.fromDom(body)) ? html : $_4ujg4tljkmcwkbk.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 $_q3ric4tjkmcwl9q.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 = $_4ujg4tljkmcwkbk.extend;\n var each$21 = $_4ujg4tljkmcwkbk.each;\n var resolve$4 = $_4ujg4tljkmcwkbk.resolve;\n var ie$2 = $_cvvl9iajkmcwk25.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 $_cvvl9iajkmcwk25.cacheSuffix = settings.cache_suffix.replace(/^[\\?\\&]+/, '');\n }\n if (settings.override_viewport === false) {\n $_cvvl9iajkmcwk25.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 $_9u29xe4yjkmcwlai.render(this);\n },\n focus: function (skipFocus) {\n $_e3v8sn4vjkmcwl9y.focus(this, skipFocus);\n },\n hasFocus: function () {\n return $_e3v8sn4vjkmcwl9y.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 && $_4ujg4tljkmcwkbk.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 self.buttons = self.buttons;\n settings.tooltip = settings.tooltip || settings.title;\n self.buttons[name] = settings;\n },\n addSidebar: function (name, settings) {\n return $_gcw4n27ojkmcwlsr.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 = self.menuItems;\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: $_8flfjw5jjkmcwldd.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$21(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$21(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 $_48zpgt7xjkmcwlum = { 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 $_39c3zs4ljkmcwl86.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 = $_b1ykk4ojkmcwkcj.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 $_39c3zs4ljkmcwl86.store(editor);\n }\n });\n };\n var register$3 = function (editor) {\n var throttledStore = first$1(function () {\n $_39c3zs4ljkmcwl86.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 $_d657g07yjkmcwlun = { register: register$3 };\n\n var documentFocusInHandler;\n var DOM$8 = DOMUtils$1.DOM;\n var isEditorUIElement$1 = function (elm) {\n return $_48zpgt7xjkmcwlum.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 $_d657g07yjkmcwlun.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 $_3l01gcijkmcwk99.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$15 = function (editorManager) {\n editorManager.on('AddEditor', curry(registerEvents, editorManager));\n editorManager.on('RemoveEditor', curry(unregisterDocumentEvents, editorManager));\n };\n var $_6zk6867wjkmcwluj = {\n setup: setup$15,\n isEditorUIElement: isEditorUIElement$1,\n isUIElement: isUIElement\n };\n\n var data = {};\n var code = 'en';\n var $_9pp0ut7zjkmcwlut = {\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 ($_4ujg4tljkmcwkbk.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 || $_4ujg4tljkmcwkbk.is(text, 'undefined');\n };\n var getLangData = function (text) {\n text = toString(text);\n return $_4ujg4tljkmcwkbk.hasOwn(langData, text) ? toString(langData[text]) : text;\n };\n if (isEmpty(text)) {\n return '';\n }\n if ($_4ujg4tljkmcwkbk.is(text, 'object') && $_4ujg4tljkmcwkbk.hasOwn(text, 'raw')) {\n return toString(text.raw);\n }\n if ($_4ujg4tljkmcwkbk.is(text, 'array')) {\n var values_1 = text.slice(1);\n text = getLangData(text[0]).replace(/\\{([0-9]+)\\}/g, function ($1, $2) {\n return $_4ujg4tljkmcwkbk.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 = $_4ujg4tljkmcwkbk.explode;\n var each$22 = $_4ujg4tljkmcwkbk.each;\n var extend$5 = $_4ujg4tljkmcwkbk.extend;\n var instanceCounter = 0;\n var beforeUnloadDelegate;\n var EditorManager;\n var 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$22(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: '8.2',\n releaseDate: '2018-08-09',\n editors: legacyEditors,\n i18n: $_9pp0ut7zjkmcwlut,\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 $_6zk6867wjkmcwluj.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 = $_4ujg4tljkmcwkbk.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 ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 11) {\n $_b9je0i54jkmcwlbe.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$22(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$22(explode$4(l), function (id) {\n var elm;\n if (elm = DOM$9.get(id)) {\n targets.push(elm);\n } else {\n each$22(document.forms, function (f) {\n each$22(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$22(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$22(settings.types, function (type) {\n $_4ujg4tljkmcwkbk.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 $_4ujg4tljkmcwkbk.each(targets, function (elm) {\n purgeDestroyedEditor(self$$1.get(elm.id));\n });\n targets = $_4ujg4tljkmcwkbk.grep(targets, function (elm) {\n return !self$$1.get(elm.id);\n });\n if (targets.length === 0) {\n provideResults([]);\n } else {\n each$22(targets, function (elm) {\n if (isInvalidInlineTarget(settings, elm)) {\n $_b9je0i54jkmcwlbe.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$22(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$22(editors, function (editor) {\n editor.save();\n });\n },\n addI18n: function (code, items) {\n $_9pp0ut7zjkmcwlut.add(code, items);\n },\n translate: function (text) {\n return $_9pp0ut7zjkmcwlut.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, $_ed2ug44qjkmcwl97);\n EditorManager.setup();\n var EditorManager$1 = EditorManager;\n\n function RangeUtils(dom) {\n var walk = function (rng, callback) {\n return $_cuckrv3bjkmcwktk.walk(dom, rng, callback);\n };\n var split = $_bnmynr69jkmcwlir.split;\n var normalize = function (rng) {\n return $_21c07i4jjkmcwl7w.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 = $_axtxv74kjkmcwl84.isEq;\n RangeUtils.getCaretRangeFromPoint = $_52q21w6wjkmcwlna.fromPoint;\n RangeUtils.getSelectedNode = getSelectedNode;\n RangeUtils.getNode = getNode;\n }(RangeUtils || (RangeUtils = {})));\n var RangeUtils$1 = RangeUtils;\n\n var min = Math.min;\n var max = Math.max;\n var 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 $_es7eh281jkmcwlv1 = {\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 $_e5pe6n82jkmcwlv8 = {\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$23 = $_4ujg4tljkmcwkbk.each;\n var extend$6 = $_4ujg4tljkmcwkbk.extend;\n var extendClass;\n var initializing;\n var Class$1 = function () {\n };\n Class$1.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$23(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$23(prop.Methods.split(','), function (name) {\n prop[name] = dummy;\n });\n }\n if (prop.Properties) {\n each$23(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$23(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;\n var max$1 = Math.max;\n var 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 $_6nxmdo85jkmcwlvi = {\n serialize: serialize,\n parse: function (text) {\n try {\n return JSON.parse(text);\n } catch (ex) {\n }\n }\n };\n\n var $_cygb5686jkmcwlvk = {\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 = new 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 $_4ujg4tljkmcwkbk.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 $_4ujg4tljkmcwkbk.extend(XHR, $_ed2ug44qjkmcwl97);\n\n var extend$7 = $_4ujg4tljkmcwkbk.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 = $_6nxmdo85jkmcwlvi.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 = $_6nxmdo85jkmcwlvi.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: $_es7eh281jkmcwlv1 },\n util: {\n Promise: promiseObj,\n Delay: $_3l01gcijkmcwk99,\n Tools: $_4ujg4tljkmcwkbk,\n VK: $_6bj5795wjkmcwlg6,\n URI: URI,\n Class: Class$1,\n EventDispatcher: Dispatcher,\n Observable: $_ed2ug44qjkmcwl97,\n I18n: $_9pp0ut7zjkmcwlut,\n XHR: XHR,\n JSON: $_6nxmdo85jkmcwlvi,\n JSONRequest: JSONRequest,\n JSONP: $_cygb5686jkmcwlvk,\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: DomSerializer$1,\n ControlSelection: ControlSelection,\n BookmarkManager: BookmarkManager$1,\n Selection: Selection$1,\n Event: EventUtils.Event\n },\n html: {\n Styles: Styles,\n Entities: $_33qwr1sjkmcwkip,\n Node: Node$2,\n Schema: Schema,\n SaxParser: SaxParser$1,\n DomParser: DomParser,\n Writer: Writer,\n Serializer: HtmlSerializer\n },\n ui: { Factory: $_e5pe6n82jkmcwlv8 },\n Env: $_cvvl9iajkmcwk25,\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: $_48zpgt7xjkmcwlum,\n EditorManager: EditorManager$1,\n DOM: DOMUtils$1.DOM,\n ScriptLoader: ScriptLoader.ScriptLoader,\n PluginManager: AddOnManager.PluginManager,\n ThemeManager: AddOnManager.ThemeManager,\n trim: $_4ujg4tljkmcwkbk.trim,\n isArray: $_4ujg4tljkmcwkbk.isArray,\n is: $_4ujg4tljkmcwkbk.is,\n toArray: $_4ujg4tljkmcwkbk.toArray,\n makeMap: $_4ujg4tljkmcwkbk.makeMap,\n each: $_4ujg4tljkmcwkbk.each,\n map: $_4ujg4tljkmcwkbk.map,\n grep: $_4ujg4tljkmcwkbk.grep,\n inArray: $_4ujg4tljkmcwkbk.inArray,\n extend: $_4ujg4tljkmcwkbk.extend,\n create: $_4ujg4tljkmcwkbk.create,\n walk: $_4ujg4tljkmcwkbk.walk,\n createNS: $_4ujg4tljkmcwkbk.createNS,\n resolve: $_4ujg4tljkmcwkbk.resolve,\n explode: $_4ujg4tljkmcwkbk.explode,\n _addCacheSuffix: $_4ujg4tljkmcwkbk._addCacheSuffix,\n isOpera: $_cvvl9iajkmcwk25.opera,\n isWebKit: $_cvvl9iajkmcwk25.webkit,\n isIE: $_cvvl9iajkmcwk25.ie,\n isGecko: $_cvvl9iajkmcwk25.gecko,\n isMac: $_cvvl9iajkmcwk25.mac\n };\n tinymce = $_4ujg4tljkmcwkbk.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","(function () {\nvar code = (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.DOMUtils');\n\n var getMinWidth = function (editor) {\n return editor.getParam('code_dialog_width', 600);\n };\n var getMinHeight = function (editor) {\n return editor.getParam('code_dialog_height', Math.min(global$1.DOM.getViewPort().h - 200, 500));\n };\n var $_2agnwba2jkmcwo8k = {\n getMinWidth: getMinWidth,\n getMinHeight: getMinHeight\n };\n\n var setContent = function (editor, html) {\n editor.focus();\n editor.undoManager.transact(function () {\n editor.setContent(html);\n });\n editor.selection.setCursorLocation();\n editor.nodeChanged();\n };\n var getContent = function (editor) {\n return editor.getContent({ source_view: true });\n };\n var $_gf01w3a4jkmcwo8n = {\n setContent: setContent,\n getContent: getContent\n };\n\n var open = function (editor) {\n var minWidth = $_2agnwba2jkmcwo8k.getMinWidth(editor);\n var minHeight = $_2agnwba2jkmcwo8k.getMinHeight(editor);\n var win = editor.windowManager.open({\n title: 'Source code',\n body: {\n type: 'textbox',\n name: 'code',\n multiline: true,\n minWidth: minWidth,\n minHeight: minHeight,\n spellcheck: false,\n style: 'direction: ltr; text-align: left'\n },\n onSubmit: function (e) {\n $_gf01w3a4jkmcwo8n.setContent(editor, e.data.code);\n }\n });\n win.find('#code').value($_gf01w3a4jkmcwo8n.getContent(editor));\n };\n var $_4xs1xna1jkmcwo8j = { open: open };\n\n var register = function (editor) {\n editor.addCommand('mceCodeEditor', function () {\n $_4xs1xna1jkmcwo8j.open(editor);\n });\n };\n var $_atmzsea0jkmcwo8i = { register: register };\n\n var register$1 = function (editor) {\n editor.addButton('code', {\n icon: 'code',\n tooltip: 'Source code',\n onclick: function () {\n $_4xs1xna1jkmcwo8j.open(editor);\n }\n });\n editor.addMenuItem('code', {\n icon: 'code',\n text: 'Source code',\n onclick: function () {\n $_4xs1xna1jkmcwo8j.open(editor);\n }\n });\n };\n var $_f9f308a5jkmcwo8o = { register: register$1 };\n\n global.add('code', function (editor) {\n $_atmzsea0jkmcwo8i.register(editor);\n $_f9f308a5jkmcwo8o.register(editor);\n return {};\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","import Vue from 'vue'\nimport { Api } from '@/common/api'\nimport Global from '@/common/global'\nimport { $, jQuery } from 'jquery';\nimport \"intro.js/introjs.css\"\nimport \"intro.js/themes/introjs-modern.css\"\n\nvar introJs = require(\"intro.js/intro.js\")\n\nexport default {\n\n steps: [],\n\n start(url) {\n setTimeout(() => {\n\n var _intro = introJs()\n\n _intro.setOption(\"showProgress\", true);\n _intro.setOption(\"showBullets\", false);\n _intro.setOption(\"showStepNumbers\", false);\n _intro.setOption(\"nextLabel\", \"Próximo\");\n _intro.setOption(\"prevLabel\", \"Anterior\");\n _intro.setOption(\"doneLabel\", \"Concluir\");\n _intro.setOption(\"skipLabel\", \"Sair\");\n _intro.setOption(\"exitOnEsc\", false);\n _intro.setOption(\"exitOnOverlayClick\", false);\n _intro.setOption(\"disableInteraction\", true);\n\n _intro.oncomplete(() => {\n for (var item of this.steps) {\n new Api('ColaboradorTutorialPasso', Global.END_POINT_PORTAL_CORPORATIVO).post({ \n tutorialPassoId: item.tutorialPassoId\n }).then(data => { })\n }\n });\n\n new Api('tutorialpasso/more', Global.END_POINT_PORTAL_CORPORATIVO).get({\n chaveIdentificacaoSistema: Global.CHAVE_IDENTIFICACAO_SISTEMA,\n url: url,\n filterBehavior: \"GetDataListCustom\"\n }).then(result => {\n this.steps = result.dataList;\n for (var item of this.steps) {\n var _element = item.element;\n \n if (_element) {\n _intro.addStep({\n element: _element,\n intro: item.intro\n })\n }\n }\n _intro.start();\n });\n }, 500)\n }\n}","import CryptoJS from \"crypto-js\"\n\nlet _storage = window.localStorage;\n\nfunction _getSalt(key) {\n return key + \"lnOywPDcNeNyh&7c97ixysnXTtR\";\n}\n\nfunction _get(key, isSession) {\n _setStorage(isSession);\n var result = window.localStorage.getItem(key);\n if (result) {\n try {\n var _salt = _getSalt(key);\n var bytes = CryptoJS.AES.decrypt(result, _salt);\n var originalText = bytes.toString(CryptoJS.enc.Utf8);\n return originalText;\n } catch (e) { \n return result;\n }\n }\n return result;\n}\n\nfunction _add(key, data, isSession) {\n _setStorage(isSession);\n var _salt = _getSalt(key);\n var _newdata = CryptoJS.AES.encrypt(data.toString(), _salt).toString();\n window.localStorage.setItem(key, _newdata);\n}\n\nfunction _update(key, data, isSession) {\n _setStorage(isSession);\n var _salt = _getSalt(key);\n var _newdata = CryptoJS.AES.encrypt(data.toString(), _salt).toString();\n window.localStorage.setItem(key, _newdata);\n}\n\nfunction _remove(key, isSession) {\n _setStorage(isSession);\n window.localStorage.removeItem(key);\n}\n\nfunction _reset(isSession) {\n _setStorage(isSession);\n window.localStorage.clear();\n}\n\nfunction _setStorage(isSession) {\n if (isSession) _storage = window.sessionStorage;\n else _storage = window.localStorage;\n}\nexport default {\n get: _get,\n add: _add,\n update: _update,\n remove: _remove,\n reset: _reset,\n}\n","import Vue from 'vue'\nimport Pikaday from 'pikaday'\nimport 'pikaday/scss/pikaday.scss'\n\nVue.directive('datepicker', {\n twoWay: true,\n bind: (el, binding, vnode) => {\n var picker = new Pikaday({\n field: el,\n format: 'DD/MM/YYYY',\n onSelect: () => {\n setVModelValue(picker.toString(), vnode)\n },\n i18n: {\n previousMonth: 'Mês Anterior',\n nextMonth: 'Mês Seguinte',\n months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\n weekdays: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],\n weekdaysShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab']\n }\n });\n \n function findVModelName(vnode) {\n return vnode.data.directives.find(function (o) {\n return o.name === 'model';\n }).expression;\n }\n\n function setVModelValue(value, vnode) {\n var prop = findVModelName(vnode)\n eval('vnode.context.' + prop + ' = ' + '\"' + value + '\"')\n }\n },\n\n})","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAAiCAYAAAD1aT8BAAABN2lDQ1BBZG9iZSBSR0IgKDE5OTgpAAAokZWPv0rDUBSHvxtFxaFWCOLgcCdRUGzVwYxJW4ogWKtDkq1JQ5ViEm6uf/oQjm4dXNx9AidHwUHxCXwDxamDQ4QMBYvf9J3fORzOAaNi152GUYbzWKt205Gu58vZF2aYAoBOmKV2q3UAECdxxBjf7wiA10277jTG+38yH6ZKAyNguxtlIYgK0L/SqQYxBMygn2oQD4CpTto1EE9AqZf7G1AKcv8ASsr1fBBfgNlzPR+MOcAMcl8BTB1da4Bakg7UWe9Uy6plWdLuJkEkjweZjs4zuR+HiUoT1dFRF8jvA2AxH2w3HblWtay99X/+PRHX82Vun0cIQCw9F1lBeKEuf1UYO5PrYsdwGQ7vYXpUZLs3cLcBC7dFtlqF8hY8Dn8AwMZP/fNTP8gAAAAJcEhZcwAACxMAAAsTAQCanBgAAAXsaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzE0MiA3OS4xNjA5MjQsIDIwMTcvMDcvMTMtMDE6MDY6MzkgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE4IChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTgtMDgtMTRUMTc6NDA6NTUtMDM6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDE4LTA4LTE0VDE3OjQ4OjUzLTAzOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE4LTA4LTE0VDE3OjQ4OjUzLTAzOjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjgwNjhkOGJlLWM3YTEtOTA0Mi04MDdkLTdmYWZmZjQwNGRmNSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDplM2Q0YTZjMi0xNTJiLTRiNDUtYWFkZi1mOGU4MzI2NTU5M2EiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplM2Q0YTZjMi0xNTJiLTRiNDUtYWFkZi1mOGU4MzI2NTU5M2EiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmUzZDRhNmMyLTE1MmItNGI0NS1hYWRmLWY4ZTgzMjY1NTkzYSIgc3RFdnQ6d2hlbj0iMjAxOC0wOC0xNFQxNzo0MDo1NS0wMzowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo4MDY4ZDhiZS1jN2ExLTkwNDItODA3ZC03ZmFmZmY0MDRkZjUiIHN0RXZ0OndoZW49IjIwMTgtMDgtMTRUMTc6NDg6NTMtMDM6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE4IChXaW5kb3dzKSIgc3RFdnQ6Y2hh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\"","(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 $_7h5h1kfvjkmcwp8j = {\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('');\n doc.close();\n }\n }\n };\n var $_50rjczfwjkmcwp8l = { 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 (/]+>[^<]+<\\/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 (!$_7h5h1kfvjkmcwp8j.hasRelList(editor.settings) && $_7h5h1kfvjkmcwp8j.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 $_f96xu2g0jkmcwp91 = {\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 = $_7h5h1kfvjkmcwp8j.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 = $_f96xu2g0jkmcwp91.isOnlyTextSelected(selection.getContent());\n anchorElm = $_f96xu2g0jkmcwp91.getAnchorElement(editor);\n data.text = initialText = $_f96xu2g0jkmcwp91.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 ($_7h5h1kfvjkmcwp8j.hasDefaultLinkTarget(editor.settings)) {\n data.target = $_7h5h1kfvjkmcwp8j.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 ($_7h5h1kfvjkmcwp8j.shouldShowTargetList(editor.settings)) {\n if ($_7h5h1kfvjkmcwp8j.getTargetList(editor.settings) === undefined) {\n $_7h5h1kfvjkmcwp8j.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($_7h5h1kfvjkmcwp8j.getTargetList(editor.settings))\n };\n }\n if ($_7h5h1kfvjkmcwp8j.hasRelList(editor.settings)) {\n relListCtrl = {\n name: 'rel',\n type: 'listbox',\n label: 'Rel',\n values: buildListItems($_7h5h1kfvjkmcwp8j.getRelList(editor.settings), function (item) {\n if ($_7h5h1kfvjkmcwp8j.allowUnsafeLinkTarget(editor.settings) === false) {\n item.value = $_f96xu2g0jkmcwp91.toggleTargetRules(item.value, data.target === '_blank');\n }\n })\n };\n }\n if ($_7h5h1kfvjkmcwp8j.hasLinkClassList(editor.settings)) {\n classListCtrl = {\n name: 'class',\n type: 'listbox',\n label: 'Class',\n values: buildListItems($_7h5h1kfvjkmcwp8j.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 ($_7h5h1kfvjkmcwp8j.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 = $_7h5h1kfvjkmcwp8j.assumeExternalTargets(editor.settings);\n var insertLink = $_f96xu2g0jkmcwp91.link(editor, attachState);\n var removeLink = $_f96xu2g0jkmcwp91.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 $_1hdbnpg2jkmcwp96 = { 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 $_50rjczfwjkmcwp8l.open(a.href);\n }\n }\n };\n var openDialog = function (editor) {\n return function () {\n $_1hdbnpg2jkmcwp96.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 ($_7h5h1kfvjkmcwp8j.hasContextToolbar(editor.settings) && !isContextMenuVisible(editor) && $_f96xu2g0jkmcwp91.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 && !!$_f96xu2g0jkmcwp91.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 ($_f96xu2g0jkmcwp91.hasLinks(e.parents)) {\n self.show();\n } else {\n self.hide();\n }\n };\n if (!$_f96xu2g0jkmcwp91.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 $_dlew49ftjkmcwp8f = {\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', $_dlew49ftjkmcwp8f.openDialog(editor));\n };\n var $_3nvo42fsjkmcwp8b = { register: register };\n\n var setup = function (editor) {\n editor.addShortcut('Meta+K', '', $_dlew49ftjkmcwp8f.openDialog(editor));\n };\n var $_aoohpyg5jkmcwp9f = { 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: $_dlew49ftjkmcwp8f.openDialog(editor),\n onpostrender: $_dlew49ftjkmcwp8f.toggleActiveState(editor)\n });\n editor.addButton('unlink', {\n active: false,\n icon: 'unlink',\n tooltip: 'Remove link',\n onclick: $_f96xu2g0jkmcwp91.unlink(editor),\n onpostrender: $_dlew49ftjkmcwp8f.toggleActiveState(editor)\n });\n if (editor.addContextToolbar) {\n editor.addButton('openlink', {\n icon: 'newtab',\n tooltip: 'Open link',\n onclick: $_dlew49ftjkmcwp8f.gotoSelectedLink(editor)\n });\n }\n };\n var setupMenuItems = function (editor) {\n editor.addMenuItem('openlink', {\n text: 'Open link',\n icon: 'newtab',\n onclick: $_dlew49ftjkmcwp8f.gotoSelectedLink(editor),\n onPostRender: $_dlew49ftjkmcwp8f.toggleViewLinkState(editor),\n prependToContext: true\n });\n editor.addMenuItem('link', {\n icon: 'link',\n text: 'Link',\n shortcut: 'Meta+K',\n onclick: $_dlew49ftjkmcwp8f.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: $_f96xu2g0jkmcwp91.unlink(editor),\n stateSelector: 'a[href]'\n });\n };\n var setupContextToolbars = function (editor) {\n if (editor.addContextToolbar) {\n editor.addContextToolbar($_dlew49ftjkmcwp8f.leftClickedOnAHref(editor), 'openlink | link unlink');\n }\n };\n var $_3wxsofg6jkmcwp9g = {\n setupButtons: setupButtons,\n setupMenuItems: setupMenuItems,\n setupContextToolbars: setupContextToolbars\n };\n\n global.add('link', function (editor) {\n $_3wxsofg6jkmcwp9g.setupButtons(editor);\n $_3wxsofg6jkmcwp9g.setupMenuItems(editor);\n $_3wxsofg6jkmcwp9g.setupContextToolbars(editor);\n $_dlew49ftjkmcwp8f.setupGotoLinks(editor);\n $_3nvo42fsjkmcwp8b.register(editor);\n $_aoohpyg5jkmcwp9f.setup(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\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 $_ee0gktiejkmcwpkb = { hasProPlugin: hasProPlugin };\n\n var get = function (clipboard, quirks) {\n return {\n clipboard: clipboard,\n quirks: quirks\n };\n };\n var $_6khw6eigjkmcwpkp = { 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 $_d8ovv8ijjkmcwpku = {\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 $_5peev0ikjkmcwpkv = {\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 && $_5peev0ikjkmcwpkv.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 $_d8ovv8ijjkmcwpku.firePastePlainTextToggle(editor, false);\n } else {\n clipboard.pasteFormat.set('text');\n $_d8ovv8ijjkmcwpku.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 $_7rw4pkiijkmcwpks = { togglePlainTextPaste: togglePlainTextPaste };\n\n var register = function (editor, clipboard, userIsInformedState) {\n editor.addCommand('mceTogglePlainTextPaste', function () {\n $_7rw4pkiijkmcwpks.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 $_gh26txihjkmcwpkr = { 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 = '';\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 $_93gcj3irjkmcwpld = {\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, '
    ');\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 = '';\n var paragraphs = global$3.map(blocks, function (p) {\n return p.split(/\\n/).join('
    ');\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 $_3nag2qisjkmcwple = {\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 (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]*]*>\\s*|\\s*<\\/body[^>]*>[\\s\\S]*$/ig,\n /|/g,\n [\n /( ?)\\u00a0<\\/span>( ?)/g,\n trimSpaces\n ],\n /
    /g,\n /
    $/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 $_2u5gcyj0jkmcwplv = {\n filter: filter,\n innerText: innerText,\n trimHtml: trimHtml,\n createIdGenerator: createIdGenerator,\n isMsEdge: isMsEdge\n };\n\n function isWordContent(content) {\n return / 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 ($_5peev0ikjkmcwpkv.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 = $_5peev0ikjkmcwpkv.getRetainStyleProps(editor);\n if (retainStyleProperties) {\n validStyles = global$3.makeMap(retainStyleProperties.split(/[, ]/));\n }\n content = $_2u5gcyj0jkmcwplv.filter(content, [\n /
    /gi,\n /]+id=\"?docs-internal-[^>]*>/gi,\n //gi,\n /<(!|script[^>]*>.*?<\\/script(?=[>\\s])|\\/?(\\?xml(:\\w+)?|img|meta|link|style|\\w:\\w+)(?=[\\s\\/>]))[^>]*>/gi,\n [\n /<(\\/?)s>/gi,\n '<$1strike>'\n ],\n [\n / /gi,\n '\\xA0'\n ],\n [\n /([\\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 = $_5peev0ikjkmcwpkv.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 ($_5peev0ikjkmcwpkv.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 $_5peev0ikjkmcwpkv.shouldUseDefaultFilters(editor) ? filterWordContent(editor, content) : content;\n };\n var $_759xt5ivjkmcwplk = {\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 = $_d8ovv8ijjkmcwpku.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 = $_d8ovv8ijjkmcwpku.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 = $_759xt5ivjkmcwplk.isWordContent(html);\n var content = isWordHtml ? $_759xt5ivjkmcwplk.preProcess(editor, html) : html;\n return filterContent(editor, content, internal, isWordHtml);\n };\n var $_7a37nniujkmcwplh = { process: process };\n\n var pasteHtml = function (editor, html) {\n editor.insertContent(html, {\n merge: $_5peev0ikjkmcwpkv.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('');\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 ($_5peev0ikjkmcwpkv.isSmartPasteEnabled(editor) === false) {\n pasteHtml(editor, html);\n } else {\n smartInsertContent(editor, html);\n }\n };\n var $_3wqigwj1jkmcwplz = {\n isImageUrl: isImageUrl,\n isAbsoluteUrl: isAbsoluteUrl,\n insertContent: insertContent\n };\n\n var pasteHtml$1 = function (editor, html, internalFlag) {\n var internal = internalFlag ? internalFlag : $_93gcj3irjkmcwpld.isMarked(html);\n var args = $_7a37nniujkmcwplh.process(editor, $_93gcj3irjkmcwpld.unmark(html), internal);\n if (args.cancelled === false) {\n $_3wqigwj1jkmcwplz.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 = $_3nag2qisjkmcwple.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 $_2u5gcyj0jkmcwplv.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 = $_2u5gcyj0jkmcwplv.createIdGenerator('mceclip');\n var pasteImage = function (editor, rng, reader, blob) {\n if (rng) {\n editor.selection.setRng(rng);\n rng = null;\n }\n var dataUri = reader.result;\n var base64 = getBase64FromUri(dataUri);\n var id = uniqueId();\n var name$$1 = editor.settings.images_reuse_filename && blob.name ? extractFilename(editor, blob.name) : id;\n var img = new Image();\n img.src = dataUri;\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, blob, base64, name$$1);\n blobCache.add(blobInfo);\n } else {\n blobInfo = existingBlobInfo;\n }\n pasteHtml$1(editor, '', false);\n } else {\n pasteHtml$1(editor, '', false);\n }\n };\n var isClipboardEvent = function (event$$1) {\n return event$$1.type === 'paste';\n };\n var pasteImageData = function (editor, e, rng) {\n var dataTransfer = isClipboardEvent(e) ? e.clipboardData : e.dataTransfer;\n function processItems(items) {\n var i, item, reader, hadImage = false;\n if (items) {\n for (i = 0; i < items.length; i++) {\n item = items[i];\n if (/^image\\/(jpeg|png|gif|bmp)$/.test(item.type)) {\n var blob = item.getAsFile ? item.getAsFile() : item;\n reader = new window.FileReader();\n reader.onload = pasteImage.bind(null, editor, rng, reader, blob);\n reader.readAsDataURL(blob);\n e.preventDefault();\n hadImage = true;\n }\n }\n }\n return hadImage;\n }\n if (editor.settings.paste_data_images && dataTransfer) {\n return processItems(dataTransfer.items) || processItems(dataTransfer.files);\n }\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 $_d8ovv8ijjkmcwpku.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 : $_93gcj3irjkmcwpld.isMarked(content);\n if (pasteBin.isDefaultContent(content)) {\n plainTextMode = true;\n }\n }\n content = $_2u5gcyj0jkmcwplv.trimHtml(content);\n pasteBin.remove();\n isPlainTextHtml = internal === false && $_3nag2qisjkmcwple.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 = $_2u5gcyj0jkmcwplv.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, $_93gcj3irjkmcwpld.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 = $_93gcj3irjkmcwpld.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 = function () {\n };\n var hasWorkingClipboardApi = function (clipboardData) {\n return global$1.iOS === false && clipboardData !== undefined && typeof clipboardData.setData === 'function' && $_2u5gcyj0jkmcwplv.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($_93gcj3irjkmcwpld.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 = $_93gcj3irjkmcwpld.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 cut = function (editor) {\n return function (evt) {\n if (editor.selection.isCollapsed() === false) {\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 (editor.selection.isCollapsed() === false) {\n setClipboardData(evt, getData(editor), fallback(editor), noop);\n }\n };\n };\n var register$1 = function (editor) {\n editor.on('cut', cut(editor));\n editor.on('copy', copy(editor));\n };\n var $_5k6lg4j3jkmcwpmg = { register: register$1 };\n\n var global$10 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');\n\n var getCaretRangeFromEvent = function (editor, e) {\n return global$10.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 ($_5peev0ikjkmcwpkv.shouldBlockDrop(editor)) {\n editor.on('dragend dragover draggesture dragdrop drop drag', function (e) {\n e.preventDefault();\n e.stopPropagation();\n });\n }\n if (!$_5peev0ikjkmcwpkv.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, $_93gcj3irjkmcwpld.internalHtmlMime());\n if ((!clipboard.hasHtmlOrText(dropContent) || isPlainTextFileUrl(dropContent)) && clipboard.pasteImageData(e, rng)) {\n return;\n }\n if (rng && $_5peev0ikjkmcwpkv.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 = $_2u5gcyj0jkmcwplv.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 ($_5peev0ikjkmcwpkv.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 $_eiqz0aj4jkmcwpmj = { setup: setup };\n\n var setup$1 = function (editor) {\n var plugin = editor.plugins.paste;\n var preProcess = $_5peev0ikjkmcwpkv.getPreProcess(editor);\n if (preProcess) {\n editor.on('PastePreProcess', function (e) {\n preProcess.call(plugin, plugin, e);\n });\n }\n var postProcess = $_5peev0ikjkmcwpkv.getPostProcess(editor);\n if (postProcess) {\n editor.on('PastePostProcess', function (e) {\n postProcess.call(plugin, plugin, e);\n });\n }\n };\n var $_9alamfj6jkmcwpmm = { 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 (!$_759xt5ivjkmcwplk.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('(?:
     [\\\\s\\\\r\\\\n]+|
    )*(<\\\\/?(' + blockElements.join('|') + ')[^>]*>)(?:
     [\\\\s\\\\r\\\\n]+|
    )*', 'g');\n html = $_2u5gcyj0jkmcwplv.filter(html, [[\n explorerBlocksRegExp,\n '$1'\n ]]);\n html = $_2u5gcyj0jkmcwplv.filter(html, [\n [\n /

    /g,\n '

    '\n ],\n [\n /
    /g,\n ' '\n ],\n [\n /

    /g,\n '
    '\n ]\n ]);\n return html;\n }\n function removeWebKitStyles(editor, content, internal, isWordHtml) {\n if (isWordHtml || internal) {\n return content;\n }\n var webKitStylesSetting = $_5peev0ikjkmcwpkv.getWebkitStyles(editor);\n var webKitStyles;\n if ($_5peev0ikjkmcwpkv.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 $_ca6muwj7jkmcwpmo = { setup: setup$2 };\n\n var curry = function (f) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = new Array(arguments.length - 1);\n for (var i = 1; i < arguments.length; i++)\n args[i - 1] = arguments[i];\n return function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n var newArgs = new Array(arguments.length);\n for (var j = 0; j < newArgs.length; j++)\n newArgs[j] = arguments[j];\n var all = args.concat(newArgs);\n return f.apply(null, all);\n };\n };\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 $_98erksj8jkmcwpmr = { register: register$2 };\n\n global.add('paste', function (editor) {\n if ($_ee0gktiejkmcwpkb.hasProPlugin(editor) === false) {\n var userIsInformedState = Cell(false);\n var draggingInternallyState = Cell(false);\n var pasteFormat = Cell($_5peev0ikjkmcwpkv.isPasteAsTextEnabled(editor) ? 'text' : 'html');\n var clipboard = Clipboard(editor, pasteFormat);\n var quirks = $_ca6muwj7jkmcwpmo.setup(editor);\n $_98erksj8jkmcwpmr.register(editor, clipboard);\n $_gh26txihjkmcwpkr.register(editor, clipboard, userIsInformedState);\n $_9alamfj6jkmcwpmm.setup(editor);\n $_5k6lg4j3jkmcwpmg.register(editor);\n $_eiqz0aj4jkmcwpmj.setup(editor, clipboard, draggingInternallyState);\n return $_6khw6eigjkmcwpkp.get(clipboard, quirks);\n }\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","import Vue from 'vue'\nimport axios from 'axios'\nimport qs from 'qs'\nimport VueAxios from 'vue-axios'\nimport Cache from './cache.js'\nimport Global from './global.js'\nimport Auth from './auth.js'\n\nVue.use(VueAxios, axios)\n\nexport function Api(resource, endpoint) {\n\n this.Resourse = resource;\n this.EndPoint = endpoint;\n\n this.defaultFilter = {\n pageSize: 10,\n pageIndex: 0,\n isPaginate: true,\n };\n\n this.byCache = false;\n this.hasDefaultFilters = true;\n this.lastAction = \"none\";\n this.url = \"\";\n\n this.get = _get;\n this.post = _post;\n this.put = _put;\n this.delete = _delete;\n this.dataItem = _dataItem;\n this.export = _export;\n this.upload = _upload;\n\n var self = this;\n\n function _upload(file, folder) {\n\n self.lastAction = \"upload\";\n self.url = makeUri();\n\n let formData = new FormData();\n formData.append('files', file, file.name);\n formData.append('folder', folder);\n\n return axios\n .post(self.url, formData)\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _post(model) {\n\n self.lastAction = \"post\";\n self.url = makeUri();\n\n return axios\n .post(self.url, model)\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _put(model) {\n\n self.lastAction = \"put\";\n self.url = makeUri();\n\n return axios\n .put(self.url, model)\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _delete(model) {\n\n self.lastAction = \"delete\";\n self.url = makeUri()\n\n return axios\n .delete(self.url, { params: model })\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _get(filters) {\n\n self.lastAction = \"get\";\n self.url = makeUri()\n\n var _filters = Object.assign(this.defaultFilter, filters);\n if (_filters.id)\n self.url = String.format(\"{0}/{1}\", self.url, _filters.id);\n \n return axios\n .get(self.url, {\n params: _filters,\n paramsSerializer: () => {\n return qs.stringify(filters)\n }\n })\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _export(filters) {\n\n self.lastAction = \"export\";\n self.url = makeUri()\n\n var _filters = Object.assign(this.defaultFilter, filters);\n if (_filters.id)\n self.url = String.format(\"{0}/{1}\", self.url, _filters.id);\n\n return axios\n .get(self.url, {\n params: _filters,\n paramsSerializer: () => {\n return qs.stringify(filters)\n },\n responseType: \"blob\"\n })\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _dataItem(filters) {\n\n self.lastAction = \"get\";\n self.url = makeUri()\n\n var _filters = Object.assign(this.defaultFilter, filters);\n if (_filters.id)\n self.url = String.format(\"{0}/{1}\", self.url, _filters.id);\n\n return axios\n .get(self.url, {\n params: _filters,\n paramsSerializer: () => {\n return qs.stringify(filters)\n }\n })\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function makeUri() {\n\n var endpoint = self.EndPoint;\n\n if (!self.EndPoint)\n endpoint = Global.END_POINT_DEFAULT;\n \n configHeaders();\n\n return String.format(\"{0}/{1}\", endpoint, self.Resourse)\n }\n\n function configHeaders() {\n var accesstoken = Cache.get(Global.ACCESS_TOKEN);\n if (accesstoken)\n axios.defaults.headers.common['Authorization'] = \"Bearer \" + Cache.get(Global.ACCESS_TOKEN);\n\n axios.defaults.headers.common['Accept-Language'] = \"pt-BR\";\n }\n\n function handleSuccess(response) {\n addCache(response.data);\n }\n\n function handleError(err) {\n if (err && err.status == 401)\n Auth.login(true);\n }\n\n function addCache(data) {\n\n if (!self.byCache)\n return;\n\n if (self.url == \"\")\n return;\n\n if (self.lastAction == \"get\") {\n if (data.Data != null || (data.DataList != null && data.DataList.length > 0)) {\n data = JSON.stringify(data);\n Cache.Add(self.url, data)\n }\n }\n }\n\n //function loadFromCache() {\n\n // if (!self.byCache)\n // return;\n\n // var data = Cache.Get(self.url);\n // data = JSON.parse(data);\n\n // return new Promise(function (resolve, reject) {\n // if (data != null)\n // resolve(data);\n // else\n // reject(\"Nada encontrado\")\n // })\n //}\n\n //function isOffline() {\n // if (navigator.network != null) {\n // var isOffline = !navigator.onLine;\n // return isOffline;\n // }\n // return false;\n //}\n\n String.format = function () {\n var theString = arguments[0];\n for (var i = 1; i < arguments.length; i++) {\n var regEx = new RegExp(\"\\\\{\" + (i - 1) + \"\\\\}\", \"gm\");\n theString = theString.replace(regEx, arguments[i]);\n }\n return theString;\n }\n\n Object.$httpParamSerializer = function () {\n\n var qs = JSON.stringify(arguments[0]);\n\n var pairs = qs.split('&');\n var result = {};\n pairs.forEach((p) => {\n var pair = p.split('=');\n var key = pair[0];\n var value = decodeURIComponent(pair[1] || '');\n\n if (result[key]) {\n if (Object.prototype.toString.call(result[key]) === '[object Array]') {\n result[key].push(value);\n } else {\n result[key] = [result[key], value];\n }\n } else {\n result[key] = value;\n }\n });\n console.log(result)\n return JSON.parse(JSON.stringify(result));\n\n //return Object.entries(obj).map(([key, val]) => `${key}=${val}`).join('&')\n }\n\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 $_6qt1nth3jkmcwpf2 = {\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 $_5qpz66h7jkmcwpf7 = { 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 $_1gasfuh8jkmcwpf8 = {\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 = $_5qpz66h7jkmcwpf7.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: $_1gasfuh8jkmcwpf8.getMaxWidth(div),\n height: $_1gasfuh8jkmcwpf8.getMaxHeight(div)\n };\n };\n var htmlToData = function (prefixes, html) {\n return isEphoxEmbed(html) ? ephoxEmbedHtmlToData(html) : htmlToDataSax(prefixes, html);\n };\n var $_1f89fyh4jkmcwpf3 = { 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 $_e86s3ihcjkmcwpfk = { 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 $_1gasfuh8jkmcwpf8.setMaxWidth(div, data.width);\n $_1gasfuh8jkmcwpf8.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 $_6s992lhdjkmcwpfn = { 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&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 '';\n };\n var getFlashHtml = function (data) {\n var html = '';\n if (data.poster) {\n html += '';\n }\n html += '';\n return html;\n };\n var getAudioHtml = function (data, audioTemplateCallback) {\n if (audioTemplateCallback) {\n return audioTemplateCallback(data);\n } else {\n return '';\n }\n };\n var getVideoHtml = function (data, videoTemplateCallback) {\n if (videoTemplateCallback) {\n return videoTemplateCallback(data);\n } else {\n return '';\n }\n };\n var getScriptHtml = function (data) {\n return '';\n };\n var dataToHtml = function (editor, dataIn) {\n var data = global$2.extend({}, dataIn);\n if (!data.source1) {\n global$2.extend(data, $_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.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 = $_e86s3ihcjkmcwpfk.guess(data.source1);\n data.source2mime = $_e86s3ihcjkmcwpfk.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 $_6s992lhdjkmcwpfn.updateHtml(data.embed, data, true);\n } else {\n var videoScript = $_5qpz66h7jkmcwpf7.getVideoScriptMatch($_6qt1nth3jkmcwpf2.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 = $_6qt1nth3jkmcwpf2.getAudioTemplateCallback(editor);\n var videoTemplateCallback = $_6qt1nth3jkmcwpf2.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 $_65qpjdhbjkmcwpfc = { 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 $_65qpjdhbjkmcwpfc.dataToHtml(editor, data);\n };\n };\n var getEmbedHtml = function (editor, data) {\n var embedHandler = $_6qt1nth3jkmcwpf2.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 $_74pv8fh9jkmcwpf9 = {\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 $_gd8vqohhjkmcwpg2 = {\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': $_1gasfuh8jkmcwpf8.getMaxWidth(element),\n 'height': $_1gasfuh8jkmcwpf8.getMaxHeight(element)\n };\n }\n return element.getAttribute('data-mce-object') ? $_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.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($_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.getScripts(editor), html), { source1: response.url });\n win.fromJSON(data);\n if (embed) {\n embed.value(html);\n $_gd8vqohhjkmcwpg2.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 = $_6s992lhdjkmcwpfn.updateHtml(data.embed, data);\n if (data.embed && $_74pv8fh9jkmcwpf9.isCached(data.source1)) {\n handleInsert(editor, data.embed);\n } else {\n $_74pv8fh9jkmcwpf9.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 $_74pv8fh9jkmcwpf9.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));\n }, 1);\n },\n onchange: function (e) {\n $_74pv8fh9jkmcwpf9.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($_6s992lhdjkmcwpfn.updateHtml(data.embed, data));\n };\n if ($_6qt1nth3jkmcwpf2.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 ($_6qt1nth3jkmcwpf2.hasPoster(editor)) {\n advancedFormItems.push({\n name: 'poster',\n type: 'filepicker',\n filetype: 'image',\n size: 40,\n label: 'Poster'\n });\n }\n if ($_6qt1nth3jkmcwpf2.hasDimensions(editor)) {\n var control = $_gd8vqohhjkmcwpg2.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({}, $_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.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 $_gd8vqohhjkmcwpg2.updateSize(win);\n submitForm(win, editor);\n }\n });\n $_gd8vqohhjkmcwpg2.syncSize(win);\n };\n var $_3njyjoh0jkmcwpew = { showDialog: showDialog };\n\n var get = function (editor) {\n var showDialog = function () {\n $_3njyjoh0jkmcwpew.showDialog(editor);\n };\n return { showDialog: showDialog };\n };\n var $_eg0prjgzjkmcwpeu = { get: get };\n\n var register = function (editor) {\n var showDialog = function () {\n $_3njyjoh0jkmcwpew.showDialog(editor);\n };\n editor.addCommand('mceMedia', showDialog);\n };\n var $_8o48izhijkmcwpg5 = { register: register };\n\n var global$8 = tinymce.util.Tools.resolve('tinymce.html.Node');\n\n var sanitize = function (editor, html) {\n if ($_6qt1nth3jkmcwpf2.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 $_f1oicehmjkmcwpge = { 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($_f1oicehmjkmcwpge.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 = $_5qpz66h7jkmcwpf7.getVideoScriptMatch($_6qt1nth3jkmcwpf2.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' && $_6qt1nth3jkmcwpf2.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 $_f6hjinhljkmcwpga = {\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(']*>', 'gi');\n });\n var boolAttrs = editor.schema.getBoolAttrs();\n global$2.each('webkitallowfullscreen mozallowfullscreen allowfullscreen'.split(' '), function (name) {\n boolAttrs[name] = {};\n });\n //AQUI\n //editor.parser.addNodeFilter('iframe,video,audio,object,embed,script', $_f6hjinhljkmcwpga.placeHolderConverter(editor));\n\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 = $_f1oicehmjkmcwpge.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('');\n }\n });\n });\n };\n var $_b6ycdhhjjkmcwpg6 = { 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 $_c1o1r8hnjkmcwpgg = { 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($_6s992lhdjkmcwpfn.updateHtml(html, {\n width: e.width,\n height: e.height\n })));\n }\n }\n });\n };\n var $_8yods0hojkmcwpgh = { 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 $_ew8gthhpjkmcwpgk = { register: register$1 };\n\n global.add('media', function (editor) {\n $_8o48izhijkmcwpg5.register(editor);\n $_ew8gthhpjkmcwpgk.register(editor);\n $_c1o1r8hnjkmcwpgg.setup(editor);\n $_b6ycdhhjjkmcwpg6.setup(editor);\n $_8yods0hojkmcwpgh.setup(editor);\n return $_eg0prjgzjkmcwpeu.get(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-in\": \"7C5Q\",\n\t\"./en-in.js\": \"7C5Q\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./en-sg\": \"t+mt\",\n\t\"./en-sg.js\": \"t+mt\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fil\": \"1ppg\",\n\t\"./fil.js\": \"1ppg\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-deva\": \"qvJo\",\n\t\"./gom-deva.js\": \"qvJo\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./oc-lnc\": \"Fnuy\",\n\t\"./oc-lnc.js\": \"Fnuy\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tk\": \"Wv91\",\n\t\"./tk.js\": \"Wv91\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-mo\": \"OmwH\",\n\t\"./zh-mo.js\": \"OmwH\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\tvar module = __webpack_require__(id);\n\treturn module;\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error('Cannot find module \"' + req + '\".');\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-2-2!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--6-oneOf-2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--6-oneOf-2-2!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=style&index=0&lang=css\"","(function () {\nvar advlist = (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 applyListFormat = function (editor, listName, styleValue) {\n var cmd = listName === 'UL' ? 'InsertUnorderedList' : 'InsertOrderedList';\n editor.execCommand(cmd, false, styleValue === false ? null : { 'list-style-type': styleValue });\n };\n var $_55fky08fjkmcwo2a = { applyListFormat: applyListFormat };\n\n var register = function (editor) {\n editor.addCommand('ApplyUnorderedListStyle', function (ui, value) {\n $_55fky08fjkmcwo2a.applyListFormat(editor, 'UL', value['list-style-type']);\n });\n editor.addCommand('ApplyOrderedListStyle', function (ui, value) {\n $_55fky08fjkmcwo2a.applyListFormat(editor, 'OL', value['list-style-type']);\n });\n };\n var $_cjqqqe8ejkmcwo28 = { register: register };\n\n var getNumberStyles = function (editor) {\n var styles = editor.getParam('advlist_number_styles', 'default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman');\n return styles ? styles.split(/[ ,]/) : [];\n };\n var getBulletStyles = function (editor) {\n var styles = editor.getParam('advlist_bullet_styles', 'default,circle,disc,square');\n return styles ? styles.split(/[ ,]/) : [];\n };\n var $_2zo4iv8hjkmcwo2f = {\n getNumberStyles: getNumberStyles,\n getBulletStyles: getBulletStyles\n };\n\n var isChildOfBody = function (editor, elm) {\n return editor.$.contains(editor.getBody(), elm);\n };\n var isTableCellNode = function (node) {\n return node && /^(TH|TD)$/.test(node.nodeName);\n };\n var isListNode = function (editor) {\n return function (node) {\n return node && /^(OL|UL|DL)$/.test(node.nodeName) && isChildOfBody(editor, node);\n };\n };\n var getSelectedStyleType = function (editor) {\n var listElm = editor.dom.getParent(editor.selection.getNode(), 'ol,ul');\n return editor.dom.getStyle(listElm, 'listStyleType') || '';\n };\n var $_djj0lo8ijkmcwo2g = {\n isTableCellNode: isTableCellNode,\n isListNode: isListNode,\n getSelectedStyleType: getSelectedStyleType\n };\n\n var styleValueToText = function (styleValue) {\n return styleValue.replace(/\\-/g, ' ').replace(/\\b\\w/g, function (chr) {\n return chr.toUpperCase();\n });\n };\n var toMenuItems = function (styles) {\n return global$1.map(styles, function (styleValue) {\n var text = styleValueToText(styleValue);\n var data = styleValue === 'default' ? '' : styleValue;\n return {\n text: text,\n data: data\n };\n });\n };\n var $_cbyrf58jjkmcwo2h = { toMenuItems: toMenuItems };\n\n var findIndex = 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(e.parents, $_djj0lo8ijkmcwo2g.isTableCellNode);\n var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents;\n var lists = global$1.grep(parents, $_djj0lo8ijkmcwo2g.isListNode(editor));\n ctrl.active(lists.length > 0 && lists[0].nodeName === listName);\n });\n };\n };\n var updateSelection = function (editor) {\n return function (e) {\n var listStyleType = $_djj0lo8ijkmcwo2g.getSelectedStyleType(editor);\n e.control.items().each(function (ctrl) {\n ctrl.active(ctrl.settings.data === listStyleType);\n });\n };\n };\n var addSplitButton = function (editor, id, tooltip, cmd, nodeName, styles) {\n editor.addButton(id, {\n active: false,\n type: 'splitbutton',\n tooltip: tooltip,\n menu: $_cbyrf58jjkmcwo2h.toMenuItems(styles),\n onPostRender: listState(editor, nodeName),\n onshow: updateSelection(editor),\n onselect: function (e) {\n $_55fky08fjkmcwo2a.applyListFormat(editor, nodeName, e.control.settings.data);\n },\n onclick: function () {\n editor.execCommand(cmd);\n }\n });\n };\n var addButton = function (editor, id, tooltip, cmd, nodeName, styles) {\n editor.addButton(id, {\n active: false,\n type: 'button',\n tooltip: tooltip,\n onPostRender: listState(editor, nodeName),\n onclick: function () {\n editor.execCommand(cmd);\n }\n });\n };\n var addControl = function (editor, id, tooltip, cmd, nodeName, styles) {\n if (styles.length > 0) {\n addSplitButton(editor, id, tooltip, cmd, nodeName, styles);\n } else {\n addButton(editor, id, tooltip, cmd, nodeName, styles);\n }\n };\n var register$1 = function (editor) {\n addControl(editor, 'numlist', 'Numbered list', 'InsertOrderedList', 'OL', $_2zo4iv8hjkmcwo2f.getNumberStyles(editor));\n addControl(editor, 'bullist', 'Bullet list', 'InsertUnorderedList', 'UL', $_2zo4iv8hjkmcwo2f.getBulletStyles(editor));\n };\n var $_d74fz58gjkmcwo2b = { register: register$1 };\n\n global.add('advlist', function (editor) {\n var hasPlugin = function (editor, plugin) {\n var plugins = editor.settings.plugins ? editor.settings.plugins : '';\n return global$1.inArray(plugins.split(/[ ,]/), plugin) !== -1;\n };\n if (hasPlugin(editor, 'lists')) {\n $_d74fz58gjkmcwo2b.register(editor);\n $_cjqqqe8ejkmcwo28.register(editor);\n }\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","(function () {\nvar preview = (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 getPreviewDialogWidth = function (editor) {\n return parseInt(editor.getParam('plugin_preview_width', '650'), 10);\n };\n var getPreviewDialogHeight = function (editor) {\n return parseInt(editor.getParam('plugin_preview_height', '500'), 10);\n };\n var getContentStyle = function (editor) {\n return editor.getParam('content_style', '');\n };\n var $_6hy26xjfjkmcwppy = {\n getPreviewDialogWidth: getPreviewDialogWidth,\n getPreviewDialogHeight: getPreviewDialogHeight,\n getContentStyle: getContentStyle\n };\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var getPreviewHtml = function (editor) {\n var previewHtml;\n var headHtml = '';\n var encode = editor.dom.encode;\n var contentStyle = $_6hy26xjfjkmcwppy.getContentStyle(editor);\n headHtml += '';\n if (contentStyle) {\n headHtml += '';\n }\n global$2.each(editor.contentCSS, function (url) {\n headHtml += '';\n });\n var bodyId = editor.settings.body_id || 'tinymce';\n if (bodyId.indexOf('=') !== -1) {\n bodyId = editor.getParam('body_id', '', 'hash');\n bodyId = bodyId[editor.id] || bodyId;\n }\n var bodyClass = editor.settings.body_class || '';\n if (bodyClass.indexOf('=') !== -1) {\n bodyClass = editor.getParam('body_class', '', 'hash');\n bodyClass = bodyClass[editor.id] || '';\n }\n var preventClicksOnLinksScript = ' ';\n var dirAttr = editor.settings.directionality ? ' dir=\"' + editor.settings.directionality + '\"' : '';\n previewHtml = '' + '' + '' + headHtml + '' + '' + editor.getContent() + preventClicksOnLinksScript + '' + '';\n return previewHtml;\n };\n var injectIframeContent = function (editor, iframe, sandbox) {\n var previewHtml = getPreviewHtml(editor);\n if (!sandbox) {\n var doc = iframe.contentWindow.document;\n doc.open();\n doc.write(previewHtml);\n doc.close();\n } else {\n iframe.src = 'data:text/html;charset=utf-8,' + encodeURIComponent(previewHtml);\n }\n };\n var $_5s7etcjgjkmcwppz = {\n getPreviewHtml: getPreviewHtml,\n injectIframeContent: injectIframeContent\n };\n\n var open = function (editor) {\n var sandbox = !global$1.ie;\n var dialogHtml = '';\n var dialogWidth = $_6hy26xjfjkmcwppy.getPreviewDialogWidth(editor);\n var dialogHeight = $_6hy26xjfjkmcwppy.getPreviewDialogHeight(editor);\n editor.windowManager.open({\n title: 'Preview',\n width: dialogWidth,\n height: dialogHeight,\n html: dialogHtml,\n buttons: {\n text: 'Close',\n onclick: function (e) {\n e.control.parent().parent().close();\n }\n },\n onPostRender: function (e) {\n var iframeElm = e.control.getEl('body').firstChild;\n $_5s7etcjgjkmcwppz.injectIframeContent(editor, iframeElm, sandbox);\n }\n });\n };\n var $_4mmnpbjdjkmcwppw = { open: open };\n\n var register = function (editor) {\n editor.addCommand('mcePreview', function () {\n $_4mmnpbjdjkmcwppw.open(editor);\n });\n };\n var $_c197icjcjkmcwppv = { register: register };\n\n var register$1 = function (editor) {\n editor.addButton('preview', {\n title: 'Preview',\n cmd: 'mcePreview'\n });\n editor.addMenuItem('preview', {\n text: 'Preview',\n cmd: 'mcePreview',\n context: 'view'\n });\n };\n var $_eluyd4jijkmcwpq6 = { register: register$1 };\n\n global.add('preview', function (editor) {\n $_c197icjcjkmcwppv.register(editor);\n $_eluyd4jijkmcwpq6.register(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=45772c13\"\nvar script = {}\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('loading'),_c('notifications'),_c('header-cna'),_c('router-view'),_c('footer-cna')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',[_vm._m(0),_c('div',{staticClass:\"row\"},[_vm._m(1),(_vm.changelog)?_c('div',{staticClass:\"content-960 clearfix\"},[_c('button',{staticClass:\"btn btn-link\",staticStyle:{\"padding\":\"0\",\"color\":\"#272727\",\"font-size\":\"11px\"},on:{\"click\":function($event){_vm.dialogChangeLog = true}}},[_vm._v(\"\\n Versão \"+_vm._s(_vm.changelog.versao)+\"\\n \")])]):_vm._e()]),(_vm.changelog)?_c('b-modal',{attrs:{\"no-close-on-backdrop\":true,\"no-close-on-esc\":true,\"centered\":\"\",\"hide-footer\":true,\"title\":'Versão de ' + _vm.changelog.data},model:{value:(_vm.dialogChangeLog),callback:function ($$v) {_vm.dialogChangeLog=$$v},expression:\"dialogChangeLog\"}},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.changelog.detalhes)}})]):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row-black\"},[_c('div',{staticClass:\"content-960 clearfix\"},[_c('ul',{staticClass:\"list-icons\"},[_c('li',[_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://pt-br.facebook.com/CNAoficial/\",\"title\":\"Facebook\"}},[_c('div',{staticClass:\"fa fa-facebook\"})])]),_c('li',[_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://twitter.com/cnaoficial\",\"title\":\"Twitter\"}},[_c('div',{staticClass:\"fa fa-twitter\"})])]),_c('li',[_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://www.instagram.com/cnaoficial\",\"title\":\"Instagram\"}},[_c('div',{staticClass:\"fa fa-instagram\"})])]),_c('li',[_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://br.linkedin.com/company/cna-ensino-de-linguas\",\"title\":\"Linkedin\"}},[_c('div',{staticClass:\"fa fa-linkedin\"})])]),_c('li',[_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://www.youtube.com/user/cnaoficial\",\"title\":\"Youtube\"}},[_c('div',{staticClass:\"fa fa-youtube\"})])])])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content-960 clearfix\"},[_c('a',{attrs:{\"href\":\"#\",\"title\":\"Copyright © CNA.com.br - Todos os direitos reservados.\"}},[_vm._v(\"Copyright © CNA.com.br - Todos os direitos reservados.\")]),_c('a',{attrs:{\"href\":\"#\",\"title\":\"Política de Privacidade\"}},[_vm._v(\"Política de uso\")])])}]\n\nexport { render, staticRenderFns }","\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./footer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./footer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./footer.vue?vue&type=template&id=b9be3010\"\nimport script from \"./footer.vue?vue&type=script&lang=js\"\nexport * from \"./footer.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',[_c('div',{staticClass:\"row-black no-padding-bottom clearfix\"},[_c('div',{staticClass:\"content-960\"},[_c('div',{staticClass:\"menu pull-left bt-mobile\"},[_c('div',{staticClass:\"dropdown menu-mobile\"},[_c('b-dropdown',{staticClass:\"text-white\",attrs:{\"variant\":\"link\",\"no-caret\":\"\"}},[_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/home'),expression:\"'/home'\"}]},[_c('router-link',{attrs:{\"to\":\"/home\"}},[_vm._v(\"Home\")])],1),_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/iniciarprocessoseletivo'),expression:\"'/iniciarprocessoseletivo'\"}]},[_c('router-link',{attrs:{\"to\":\"/iniciarprocessoseletivo\"}},[_vm._v(\"Iniciar Processo Seletivo\")])],1),_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/colaborador'),expression:\"'/colaborador'\"}]},[_c('router-link',{attrs:{\"to\":\"/colaborador\"}},[_vm._v(\"Colaboradores / Candidatos\")])],1),_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/candidato'),expression:\"'/candidato'\"}]},[_c('router-link',{attrs:{\"to\":\"/candidato\"}},[_vm._v(\"Testes / Entrevistas\")])],1),_c('b-dropdown-divider'),_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/questao'),expression:\"'/questao'\"}]},[_c('router-link',{attrs:{\"to\":\"/questao\"}},[_vm._v(\"Questões\")])],1),_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/avaliacao'),expression:\"'/avaliacao'\"}]},[_c('router-link',{attrs:{\"to\":\"/avaliacao\"}},[_vm._v(\"Testes\")])],1),_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/tagjobs'),expression:\"'/tagjobs'\"}]},[_c('router-link',{attrs:{\"to\":\"/tagjobs\"}},[_vm._v(\"Tags\")])],1),_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/auxconceito'),expression:\"'/auxconceito'\"}]},[_c('router-link',{attrs:{\"to\":\"/auxconceito\"}},[_vm._v(\"Conceitos\")])],1),_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/auxdisciplina'),expression:\"'/auxdisciplina'\"}]},[_c('router-link',{attrs:{\"to\":\"/auxdisciplina\"}},[_vm._v(\"Disciplina\")])],1),_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/auxdificuldade'),expression:\"'/auxdificuldade'\"}]},[_c('router-link',{attrs:{\"to\":\"/auxdificuldade\"}},[_vm._v(\"Dificuldade\")])],1)],1)],1)]),_vm._m(0),_c('div',{staticClass:\"user\"},[_c('div',{staticClass:\"click-menu click-animate\"},[_c('div',{staticClass:\"img-user\"},[_c('img',{attrs:{\"src\":_vm.urlFoto,\"alt\":\"Imagem do Usuário\",\"title\":_vm.user.name}})]),_c('h2',[_vm._v(\"Olá, \"),_c('span',{attrs:{\"title\":_vm.user.name}},[_vm._v(_vm._s(_vm.user.name))])]),_c('div',{staticClass:\"cna-local\"},[_c('span',{attrs:{\"title\":_vm.escolaNome}},[_vm._v(_vm._s(_vm.escolaNome))]),_c('a',{staticClass:\"icons-arrows\",attrs:{\"href\":\"javascript:void(0);\"},on:{\"click\":function($event){_vm.irParaPortalCorporativo()}}},[_vm._m(1)]),_c('router-link',{staticClass:\"icons-arrows\",attrs:{\"to\":\"/trocarescola\"}},[_c('span',[_c('br'),_vm._v(\"Trocar escola\")])]),_c('a',{staticClass:\"float-right\",staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){_vm.logout()}}},[_vm._v(\"\\n Sair\\n \")])],1),_c('br')]),_c('div',{staticClass:\"wrap-conteudo\"},[_c('div',{staticClass:\"dados-user-mobile\"},[_c('h2',[_vm._v(\"Olá, \"),_c('span',[_vm._v(_vm._s(_vm.user.name))])]),_c('div',{staticClass:\"cna-local\"},[_vm._v(\"\\n \"+_vm._s(_vm.escolaNome)+\"\\n \")])])])]),_c('div',{staticClass:\"menu-desktop\"},[_c('ul',{staticClass:\"style-hover\"},[_c('li',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/home'),expression:\"'/home'\"}]},[_c('router-link',{attrs:{\"to\":\"/home\"}},[_vm._v(\"Home\")])],1),_c('li',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/iniciarprocessoseletivo'),expression:\"'/iniciarprocessoseletivo'\"}],attrs:{\"id\":\"div-iniciarprocessoseletivo\"}},[_c('router-link',{attrs:{\"to\":\"/iniciarprocessoseletivo\"}},[_vm._v(\"Iniciar Processo Seletivo\")])],1),_c('li',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/colaborador'),expression:\"'/colaborador'\"}],attrs:{\"id\":\"div-colaborador\"}},[_c('router-link',{attrs:{\"to\":\"/colaborador\"}},[_vm._v(\"Colaboradores / Candidatos\")])],1),_c('li',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/candidato'),expression:\"'/candidato'\"}],attrs:{\"id\":\"div-candidato\"}},[_c('router-link',{attrs:{\"to\":\"/candidato\"}},[_vm._v(\"Testes / Entrevistas\")])],1),_c('b-nav-item-dropdown',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/relatorios'),expression:\"'/relatorios'\"}],staticClass:\"menu-color\",attrs:{\"text\":\"Relatórios\",\"left\":\"\"}},[_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/relatorios/colaboradores'),expression:\"'/relatorios/colaboradores'\"}]},[_c('router-link',{attrs:{\"to\":\"/relatorios/colaboradores\"}},[_vm._v(\"Colaboradores\")])],1)],1),_c('b-nav-item-dropdown',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/gerencial'),expression:\"'/gerencial'\"}],staticClass:\"menu-color\",attrs:{\"text\":\"Gerencial\",\"left\":\"\"}},[_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/questao'),expression:\"'/questao'\"}]},[_c('router-link',{attrs:{\"to\":\"/questao\"}},[_vm._v(\"Questões\")])],1),_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/avaliacao'),expression:\"'/avaliacao'\"}]},[_c('router-link',{attrs:{\"to\":\"/avaliacao\"}},[_vm._v(\"Testes\")])],1),_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/tagjobs'),expression:\"'/tagjobs'\"}]},[_c('router-link',{attrs:{\"to\":\"/tagjobs\"}},[_vm._v(\"Tags\")])],1),_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/auxconceito'),expression:\"'/auxconceito'\"}]},[_c('router-link',{attrs:{\"to\":\"/auxconceito\"}},[_vm._v(\"Conceitos\")])],1),_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/auxdisciplina'),expression:\"'/auxdisciplina'\"}]},[_c('router-link',{attrs:{\"to\":\"/auxdisciplina\"}},[_vm._v(\"Disciplina\")])],1),_c('b-dropdown-item',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/auxdificuldade'),expression:\"'/auxdificuldade'\"}]},[_c('router-link',{attrs:{\"to\":\"/auxdificuldade\"}},[_vm._v(\"Dificuldade\")])],1)],1)],1)])])]),_c('b-modal',{attrs:{\"no-close-on-backdrop\":true,\"no-close-on-esc\":true,\"size\":\"lg\",\"hide-header-close\":true,\"centered\":\"\",\"hide-footer\":true,\"title\":\"Detalhes da Atualização\",\"content-class\":\"ObrLeitura\"},model:{value:(_vm.dialogDetalheMelhoria),callback:function ($$v) {_vm.dialogDetalheMelhoria=$$v},expression:\"dialogDetalheMelhoria\"}},[(_vm.dialogDetalheMelhoria)?_c('form-detalhe-atualizacao',{attrs:{\"textoAtualizacao\":_vm.textoDetalheAtualizacao,\"id\":_vm.changeLogId},on:{\"on-saved\":_vm.onSaved,\"on-back\":function($event){_vm.hideAll()}}}):_vm._e()],1)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"logo-header\",attrs:{\"href\":\"/home\",\"title\":\"Logo CNA Portal Corporativo\"}},[_c('img',{staticClass:\"logo-desktop\",attrs:{\"src\":require(\"../assets/imagens/logos/logo-CNA-big.png\"),\"alt\":\"Imagem Logo CNA\",\"title\":\"CNA Jobs\"}}),_c('img',{staticClass:\"logo-mobile margin-ajust\",attrs:{\"src\":require(\"../assets/imagens/logos/logo-CNA-mobile.png\"),\"alt\":\"Imagem Logo CNA\",\"title\":\"CNA Jobs\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('br'),_vm._v(\"Ir para Portal Corporativo\")])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{ref:\"form-detalhe-atualizacao\",attrs:{\"novalidate\":\"\"},on:{\"submit\":function($event){$event.preventDefault();_vm.executeCreate(_vm.model)}}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12 ajustaLista\",domProps:{\"innerHTML\":_vm._s(_vm.textoAtualizacao)}})]),_c('button',{staticClass:\"btn btn-success float-right\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.onBack()}}},[_c('span',[_vm._v(\"CONFIRMAR LEITURA\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./form-detalhe-atualizacao.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./form-detalhe-atualizacao.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./form-detalhe-atualizacao.vue?vue&type=template&id=6dd37daa\"\nimport script from \"./form-detalhe-atualizacao.vue?vue&type=script&lang=js\"\nexport * from \"./form-detalhe-atualizacao.vue?vue&type=script&lang=js\"\nimport style0 from \"./form-detalhe-atualizacao.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./header.vue?vue&type=template&id=6c08f3f4\"\nimport script from \"./header.vue?vue&type=script&lang=js\"\nexport * from \"./header.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isloading),expression:\"isloading\"}],staticClass:\"loader\"},[_c('img',{attrs:{\"src\":require(\"../../assets/loader.png\"),\"alt\":\"Carregando...\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./loading.vue?vue&type=template&id=6e980aa2\"\nimport script from \"./loading.vue?vue&type=script&lang=js\"\nexport * from \"./loading.vue?vue&type=script&lang=js\"\nimport style0 from \"./loading.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=22d4223e\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('main',{staticClass:\"opacity-introjs\"},[(_vm.detectaMobile)?_c('section',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/acessorapidomobile'),expression:\"'/acessorapidomobile'\"}],staticClass:\"menu-mobile\"},[_vm._m(0),_c('div',{staticClass:\"content-960 mobile-row\"},[_c('div',{staticClass:\"wrapper-960 clearfix\"},[_vm._m(1),_c('div',{staticClass:\"no-img\"},[_c('ul',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/iniciarprocessoseletivo'),expression:\"'/iniciarprocessoseletivo'\"}],staticClass:\"breadcrumb\"},[_c('li',[_c('router-link',{attrs:{\"to\":\"/iniciarprocessoseletivo\"}},[_vm._v(\"Iniciar Processo Seletivo\")])],1)]),_c('ul',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/colaborador'),expression:\"'/colaborador'\"}],staticClass:\"breadcrumb\"},[_c('li',[_c('router-link',{attrs:{\"to\":\"/colaborador\"}},[_vm._v(\"Colaboradores / Candidatos\")])],1)]),_c('ul',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/candidato'),expression:\"'/candidato'\"}],staticClass:\"breadcrumb\"},[_c('li',[_c('router-link',{attrs:{\"to\":\"/candidato\"}},[_vm._v(\"Testes / Entrevistas\")])],1)])])])])]):_vm._e(),_c('section',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/revisarcolaboradores'),expression:\"'/revisarcolaboradores'\"}]},[_vm._m(2),_c('div',{staticClass:\"content-960 mobile-row\"},[_c('div',{staticClass:\"wrapper-960 clearfix\"},[_vm._m(3),(_vm.escolaLogadaId > 0)?_c('colaborador-desligamento',{attrs:{\"escola-id\":_vm.escolaLogadaId}}):_vm._e()],1)])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content-960\"},[_c('ul',{staticClass:\"breadcrumb\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"text-center\"},[_c('h2',{staticClass:\"uppercase\"},[_c('b',[_vm._v(\" Acesso Rápido \")])]),_c('i',{staticClass:\"fa fa-arrow-circle-right\",attrs:{\"aria-hidden\":\"true\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content-960\"},[_c('ul',{staticClass:\"breadcrumb\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"titles icons icon-news-middle\"},[_c('h2',{staticClass:\"uppercase\"},[_c('b',[_vm._v(\"Revise as situações dos colaboradores\")])])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('main',[_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12\"},[_c('div',{staticClass:\"table-responsive standard-table header-cinza\"},[_c('table',[_vm._m(1),_c('tbody',_vm._l((_vm.result.items),function(item){return _c('tr',{key:item.tagJobsId,staticClass:\"animated fadeIn\"},[_c('td',[_vm._v(_vm._s(item.colaborador.nmCompleto))]),_c('td',[_vm._v(_vm._s(item.dtUltimoAcesso))]),_c('td',[_vm._v(_vm._s(item.dtContratacao))]),_c('td',[_c('button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\"}],staticClass:\"btn btn-sm btn-danger\",attrs:{\"type\":\"button\",\"title\":\"Inativar\"},on:{\"click\":function($event){_vm.openSituacaoColaboradorEscola(item)}}},[_c('i',{staticClass:\"fa fa-times\"})])])])}))])])])]),_c('b-modal',{attrs:{\"no-close-on-backdrop\":true,\"no-close-on-esc\":true,\"centered\":\"\",\"title\":\"Confirmação de Atualização\"},model:{value:(_vm.dialogSituacaoColaboradorEscola),callback:function ($$v) {_vm.dialogSituacaoColaboradorEscola=$$v},expression:\"dialogSituacaoColaboradorEscola\"}},[(_vm.model)?_c('strong',[_vm._v(_vm._s(_vm.model.colaborador.nmCompleto))]):_vm._e(),_c('p',[_vm._v(\"Tem certeza que deseja inativar este colaborador?\")]),_c('div',{attrs:{\"slot\":\"modal-footer\"},slot:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-sm btn-success\",on:{\"click\":function($event){_vm.atualizaSituacaoColaboradorEscola()}}},[_vm._v(\"\\n Atualizar\\n \")])])])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12\"},[_c('div',{staticClass:\"alert alert-info\"},[_vm._v(\"\\n Verique se os colaboradores abaixo ainda estão ativos em sua escola, pois fazem mais de 30 dias desde o último acesso.\\n \")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"Nome\")]),_c('th',[_vm._v(\"Último Acesso\")]),_c('th',[_vm._v(\"Contratação\")]),_c('th',{attrs:{\"width\":\"50\"}},[_c('i',{staticClass:\"fa fa-cogs\"})])])])}]\n\nexport { render, staticRenderFns }","\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3fabc425\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=2d56c06a\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content-960 mobile-row\",staticStyle:{\"margin-top\":\"40px\",\"max-width\":\"470px\",\"text-align\":\"center\"}},[_c('div',{staticClass:\"wrapper-960 clearfix\"},[_c('div',{staticClass:\"titles\"},[_c('h2',{staticClass:\"uppercase\"},[_c('b',[_vm._v(\"Aguarde, estamos concluindo seu acesso.\")]),_c('br')])]),_c('br'),_c('div',{staticClass:\"titles icon-animated\"},[_c('i',{staticClass:\"fa fa-6x fa-check-circle\",staticStyle:{\"font-size\":\"90px\",\"color\":\"green\"}})])])])}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=53e262d2\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content-960 mobile-row\",staticStyle:{\"margin-top\":\"40px\",\"max-width\":\"470px\",\"text-align\":\"center\"}},[_c('div',{staticClass:\"wrapper-960 clearfix\"},[_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-12 col-lg-12 col-sm-12\"},[_c('label',{staticClass:\"title title--news mb-2 cna-login__title\"},[_vm._v(\"Selecione sua escola\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.escola_escolhida),expression:\"escola_escolhida\"}],staticClass:\"form-control\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.escola_escolhida=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Selecione\")]),_vm._l((_vm.escolas),function(escola){return _c('option',{key:escola.escolaId,domProps:{\"value\":escola.escolaId}},[_vm._v(_vm._s(escola.nomeEscola))])})],2)])]),_c('br'),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-12 col-lg-12 col-sm-12\"},[_c('div',{staticClass:\"form-group cna-login__group\"},[_c('button',{staticClass:\"btn btn-sm btn-success p-2\",attrs:{\"type\":\"button\",\"disabled\":_vm.escola_escolhida == 0},on:{\"click\":function($event){_vm.trocarEscola()}}},[_vm._v(\"Escolher Escola\")])])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"titles\"},[_c('h2',{staticClass:\"uppercase\"},[_c('b',[_vm._v(\"Trocar escola\")]),_c('br')])])}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=a6c99bf8\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('main',{staticStyle:{\"margin-top\":\"25px\"}},[_c('loading'),_c('notifications'),_c('section',[(_vm.step == 0)?_c('div',{staticClass:\"content-960\"},[_c('div',{staticClass:\"wrapper-960 clearfix\"},[_vm._m(0),_c('div',{staticClass:\"mold-txt-center\"},[_c('form',{ref:\"testerealizar-form-cpf\",on:{\"submit\":function($event){$event.preventDefault();_vm.buscarCandidato(_vm.cpf)}}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"form-group col-md-12\"},[_c('label',{attrs:{\"for\":\"nome\"}},[_vm._v(\"Digite seu CPF\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.cpf),expression:\"cpf\"},{name:\"mask\",rawName:\"v-mask\",value:(_vm.mask_cpf),expression:\"mask_cpf\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"nome\",\"placeholder\":\"___.___.___-__\",\"required\":\"\"},domProps:{\"value\":(_vm.cpf)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.cpf=$event.target.value}}})])]),_c('button',{staticClass:\"btn-large-40 btn-red uppercase\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.buscarCandidato(_vm.cpf)}}},[_c('i',{staticClass:\"fa fa-arrow-right\"}),_vm._v(\"\\n Acessar teste\\n \")])])])])]):_vm._e(),(_vm.step == 1)?_c('div',{staticClass:\"content-960\"},[_c('div',{staticClass:\"wrapper-960 clearfix\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"podeConterIMG\",domProps:{\"innerHTML\":_vm._s(_vm.teste.avaliacao.mensagemInicial)}})]),_c('div',{staticClass:\"card-footer\"},[_c('ul',{staticClass:\"pagination\"},[_c('li',{staticClass:\"page-item\"},[_c('a',{staticClass:\"page-link\",on:{\"click\":function($event){_vm.iniciarTeste()}}},[_vm._v(\"Iniciar teste\")])])])])])])]):_vm._e(),(_vm.step == 2)?_c('div',{staticClass:\"content-960\"},[_c('div',{staticClass:\"wrapper-960 clearfix\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6 text-left\"},[_c('h4',[_c('strong',[_vm._v(_vm._s(_vm.substep+1)+\"/\"+_vm._s(_vm.totalQuestoes))])])]),_c('div',{staticClass:\"col-md-6 text-right\",class:{ 'text-danger': _vm.temporestante <= 10 }},[(_vm.temporestante <= 10)?_c('small',[_vm._v(\"Seu tempo está quase acabando\")]):_vm._e(),_vm._v(\"\\n Tempo restante: \"),_c('strong',[_vm._v(_vm._s(_vm.temporestante)+\" min.\")]),_c('br')])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('b-progress',{staticClass:\"mb-2\",attrs:{\"value\":_vm.progresso,\"variant\":\"success\",\"striped\":\"\",\"animated\":true}})],1)]),_c('div',{staticClass:\"card\"},[_vm._l((_vm.teste.collectionTesteQuestaoPergunta),function(testeQuestaoPergunta,index){return (_vm.substep == index)?_c('div',{key:testeQuestaoPergunta.questaoPerguntaId,staticClass:\"card-body\"},[_c('strong',[_vm._v(\"Questão \"+_vm._s(index + 1)+\" - \"+_vm._s(testeQuestaoPergunta.questaoPergunta.questao.disciplina.nome))]),_c('hr'),_c('small',[_vm._v(\"Enunciado\")]),_c('div',{staticClass:\"podeConterIMG\",domProps:{\"innerHTML\":_vm._s(testeQuestaoPergunta.questaoPergunta.questao.enunciado)}}),_c('hr'),_c('small',[_vm._v(\"Pergunta\")]),_c('div',{staticClass:\"podeConterIMG\",domProps:{\"innerHTML\":_vm._s(testeQuestaoPergunta.questaoPergunta.pergunta)}}),(testeQuestaoPergunta.questaoPergunta.questao.tipoRespostaId == 1 && !testeQuestaoPergunta.questaoPergunta.multiplasCorretas)?_c('div',[_c('br'),_c('ul',{staticClass:\"list-group\"},_vm._l((testeQuestaoPergunta.questaoPergunta.collectionQuestaoPerguntaResposta),function(questaoResposta){return _c('li',{key:questaoResposta.questaoId,staticClass:\"list-group-item\"},[_c('label',{staticClass:\"custom-control custom-radio\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(testeQuestaoPergunta.resposta),expression:\"testeQuestaoPergunta.resposta\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"radio\",\"name\":\"questaoResposta.resposta\"},domProps:{\"value\":questaoResposta.resposta,\"checked\":_vm._q(testeQuestaoPergunta.resposta,questaoResposta.resposta)},on:{\"change\":function($event){_vm.$set(testeQuestaoPergunta, \"resposta\", questaoResposta.resposta)}}}),_c('span',{staticClass:\"custom-control-indicator\"}),_c('span',{staticClass:\"custom-control-description podeConterIMG\",domProps:{\"innerHTML\":_vm._s(questaoResposta.resposta)}})])])}))]):_vm._e(),(testeQuestaoPergunta.questaoPergunta.questao.tipoRespostaId == 1 && testeQuestaoPergunta.questaoPergunta.multiplasCorretas)?_c('div',[_c('br'),_c('ul',{staticClass:\"list-group\"},_vm._l((testeQuestaoPergunta.questaoPergunta.collectionQuestaoPerguntaResposta),function(questaoResposta){return _c('li',{key:questaoResposta.questaoId,staticClass:\"list-group-item\"},[_c('label',{staticClass:\"custom-control custom-checkbox\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(testeQuestaoPergunta.respostas),expression:\"testeQuestaoPergunta.respostas\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\"},domProps:{\"value\":questaoResposta.resposta,\"checked\":Array.isArray(testeQuestaoPergunta.respostas)?_vm._i(testeQuestaoPergunta.respostas,questaoResposta.resposta)>-1:(testeQuestaoPergunta.respostas)},on:{\"change\":[function($event){var $$a=testeQuestaoPergunta.respostas,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=questaoResposta.resposta,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(testeQuestaoPergunta, \"respostas\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(testeQuestaoPergunta, \"respostas\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(testeQuestaoPergunta, \"respostas\", $$c)}},function($event){testeQuestaoPergunta.resposta = testeQuestaoPergunta.respostas.join('|')}]}}),_c('span',{staticClass:\"custom-control-indicator\"}),_c('span',{staticClass:\"custom-control-description podeConterIMG\",domProps:{\"innerHTML\":_vm._s(questaoResposta.resposta)}})])])}))]):_vm._e(),(testeQuestaoPergunta.questaoPergunta.questao.tipoRespostaId == 2)?_c('div',[_c('br'),_c('br'),_c('small',[_vm._v(\"Preencha os campos abaixo de acordo com a lacuna.\")]),_c('br'),_vm._l((testeQuestaoPergunta.questaoPergunta.collectionQuestaoPerguntaResposta),function(questaoResposta,index2){return _c('div',{key:questaoResposta.questaoId},[_c('div',{staticClass:\"row mb-4\"},[_c('div',{staticClass:\"col-0\"},[_c('strong',{staticStyle:{\"line-height\":\"35px\"}},[_vm._v(\"[\"+_vm._s(questaoResposta.ordem)+\"]\")])]),_c('div',{staticClass:\"col-10\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(questaoResposta.resposta),expression:\"questaoResposta.resposta\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"questaoResposta.resposta\"},domProps:{\"value\":(questaoResposta.resposta)},on:{\"keyup\":function($event){_vm.montaRespostaCompleteLacunas(testeQuestaoPergunta)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(questaoResposta, \"resposta\", $event.target.value)}}})])])])})],2):_vm._e(),(testeQuestaoPergunta.questaoPergunta.questao.tipoRespostaId == 3)?_c('div',[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(testeQuestaoPergunta.resposta),expression:\"testeQuestaoPergunta.resposta\"}],staticClass:\"form-control\",attrs:{\"placeholder\":\"Insira sua resposta.\"},domProps:{\"value\":(testeQuestaoPergunta.resposta)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(testeQuestaoPergunta, \"resposta\", $event.target.value)}}})]):_vm._e(),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"custom-control custom-checkbox custom-control-inline\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(testeQuestaoPergunta.revisarDepois),expression:\"testeQuestaoPergunta.revisarDepois\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"value\":\"true\"},domProps:{\"checked\":Array.isArray(testeQuestaoPergunta.revisarDepois)?_vm._i(testeQuestaoPergunta.revisarDepois,\"true\")>-1:(testeQuestaoPergunta.revisarDepois)},on:{\"change\":function($event){var $$a=testeQuestaoPergunta.revisarDepois,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=\"true\",$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(testeQuestaoPergunta, \"revisarDepois\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(testeQuestaoPergunta, \"revisarDepois\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(testeQuestaoPergunta, \"revisarDepois\", $$c)}}}}),_c('span',{staticClass:\"custom-control-indicator\"}),_c('span',{staticClass:\"custom-control-description\"},[_vm._v(\"Revisar resposta depois.\")])])]),_c('hr'),_c('ul',{staticClass:\"pagination\"},[(_vm.substep != 0)?_c('li',{staticClass:\"page-item\"},[_c('button',{staticClass:\"btn btn-sm btn-default\",on:{\"click\":function($event){_vm.voltarSubstep()}}},[_c('i',{staticClass:\"fa fa-arrow-left\"}),_vm._v(\" Questão anterior\")])]):_vm._e(),(_vm.substep != _vm.totalsubstep)?_c('li',{staticClass:\"page-item\"},[_c('button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\"}],staticClass:\"btn btn-sm btn-default\",attrs:{\"title\":\"Salvar teste e continuar posteriormente.\"},on:{\"click\":function($event){_vm.openPausar()}}},[_c('i',{staticClass:\"fa fa-pause\"}),_vm._v(\" Pausar teste\")])]):_vm._e(),(_vm.substep != _vm.totalsubstep)?_c('li',{staticClass:\"page-item\"},[_c('button',{staticClass:\"btn btn-sm btn-default\",attrs:{\"disabled\":!testeQuestaoPergunta.resposta && !testeQuestaoPergunta.revisarDepois},on:{\"click\":function($event){_vm.proximoSubstep()}}},[_vm._v(\"Próxima questão \"),_c('i',{staticClass:\"fa fa-arrow-right\"})])]):_vm._e(),(_vm.botaoFinalizar)?_c('li',{staticClass:\"page-item\"},[_c('button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\"}],staticClass:\"btn btn-sm btn-default\",attrs:{\"title\":\"Ir para o final\"},on:{\"click\":function($event){_vm.irParaQuestao(_vm.totalsubstep)}}},[_vm._v(\"Finalizar \"),_c('i',{staticClass:\"fa fa-forward\"})])]):_vm._e()])]):_vm._e()}),(_vm.substep == _vm.totalsubstep)?_c('div',{staticClass:\"card-body\"},[_c('div',[_vm._v(\"\\n Revise suas respostas abaixo antes de finalizar. Caso necessário e haja tempo disponível, você poderá alterar suas respostas.\\n \")]),_c('hr'),_c('ul',{staticClass:\"list-group\"},_vm._l((_vm.teste.collectionTesteQuestaoPergunta),function(testeQuestaoPergunta,index){return _c('li',{key:testeQuestaoPergunta.questaoPerguntaId,staticClass:\"list-group-item\",class:{ 'list-group-item-warning': testeQuestaoPergunta.revisarDepois }},[_c('strong',[_vm._v(_vm._s(index + 1)+\") \")]),_c('span',{staticClass:\"podeConterIMG\",domProps:{\"innerHTML\":_vm._s(testeQuestaoPergunta.resposta || '--')}}),(testeQuestaoPergunta.revisarDepois)?_c('a',{staticClass:\"float-right\"},[(testeQuestaoPergunta.resposta)?_c('em',{on:{\"click\":function($event){_vm.irParaQuestao(index)}}},[_vm._v(\"Revisar resposta\")]):_vm._e(),(!testeQuestaoPergunta.resposta)?_c('em',{on:{\"click\":function($event){_vm.irParaQuestao(index)}}},[_vm._v(\"Completar resposta\")]):_vm._e()]):_vm._e()])})),_c('hr'),_c('ul',{staticClass:\"pagination\"},[(_vm.substep != 0)?_c('li',{staticClass:\"page-item\"},[_c('button',{staticClass:\"btn btn-sm btn-default\",on:{\"click\":function($event){_vm.voltarSubstep()}}},[_c('i',{staticClass:\"fa fa-arrow-left\"}),_vm._v(\" Questão anterior\")])]):_vm._e(),(_vm.substep == _vm.totalsubstep)?_c('li',{staticClass:\"page-item\"},[_c('button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\"}],staticClass:\"btn btn-sm btn-default\",attrs:{\"title\":\"Clique para encerrar o teste e enviar suas respostas. Não será possível cancelar essa ação depois\"},on:{\"click\":function($event){_vm.finalizarTeste()}}},[_c('i',{staticClass:\"fa fa-check\"}),_vm._v(\" Finalizar\")])]):_vm._e()])]):_vm._e()],2)])]):_vm._e(),(_vm.step == 3)?_c('div',{staticClass:\"content-960\"},[_c('div',{staticClass:\"wrapper-960 clearfix\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-body podeConterIMG\"},[(_vm.temporestante == 0)?_c('div',{staticClass:\"text-center text-danger\"},[_vm._v(\"\\n Seu tempo esgotou!\\n \"),_c('br')]):_vm._e(),_c('div',[(_vm.notaobtida >= _vm.teste.avaliacao.notaAprovacao)?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.teste.avaliacao.mensagemAprovacao)}}):_vm._e(),(_vm.notaobtida < _vm.teste.avaliacao.notaAprovacao)?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.teste.avaliacao.mensagemReprovacao)}}):_vm._e(),_c('br')]),_c('hr'),_c('button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\"}],staticClass:\"btn btn-sm btn-danger\",attrs:{\"type\":\"button\",\"title\":\"Fechar e sair do teste\"},on:{\"click\":function($event){_vm.closePagina()}}},[_vm._v(\"\\n Fechar\\n \")])])])])]):_vm._e(),(_vm.step == 4)?_c('div',{staticClass:\"content-960\"},[_c('div',{staticClass:\"wrapper-960 clearfix\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-body\"},[_vm._m(1),_c('hr'),_c('button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\"}],staticClass:\"btn btn-sm btn-danger\",attrs:{\"type\":\"button\",\"title\":\"Fechar e sair do teste\"},on:{\"click\":function($event){_vm.closePagina()}}},[_vm._v(\"\\n Fechar\\n \")])])])])]):_vm._e()]),_c('b-modal',{attrs:{\"no-close-on-backdrop\":true,\"no-close-on-esc\":true,\"size\":\"lg\",\"centered\":\"\",\"title\":\"Confirmação\"},model:{value:(_vm.dialogPausar),callback:function ($$v) {_vm.dialogPausar=$$v},expression:\"dialogPausar\"}},[(_vm.candidato)?_c('p',[_vm._v(\"\\n Você está prestes a pausar seu teste. Ele poderá ser retomado deste ponto dentro de um prazo até \"+_vm._s(_vm.candidato.diasValidadeCandidato)+\" dias.\\n \"),_c('br'),_c('br'),_vm._v(\"\\n Deseja continuar?\\n \")]):_vm._e(),_c('div',{attrs:{\"slot\":\"modal-footer\"},slot:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-sm btn-default\",on:{\"click\":function($event){_vm.onClose()}}},[_vm._v(\"\\n Não, desejo continuar o teste agora\\n \")]),_c('button',{staticClass:\"btn btn-sm btn-danger\",on:{\"click\":function($event){_vm.pausarTeste()}}},[_vm._v(\"\\n Sim, desejo pausar\\n \")])])])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"titles\"},[_c('h2',{staticClass:\"uppercase\"},[_c('b',[_c('i',{staticClass:\"fa fa-pencil\"}),_vm._v(\" Realizar teste\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('strong',[_vm._v(\"\\n Seu teste foi pausado.\\n \"),_c('br'),_vm._v(\"\\n Peça para que um colaborador da escola CNA acesse o CNA Jobs para continuar seu teste quando necessário.\\n \")]),_c('br')])}]\n\nexport { render, staticRenderFns }","0