@ -1,8 +1,8 @@
/ *
Copyright ( c ) 2003 - 202 2 , CKSource Holding sp . z o . o . All rights reserved .
Copyright ( c ) 2003 - 202 3 , CKSource Holding sp . z o . o . All rights reserved .
For licensing , see LICENSE . md or https : //ckeditor.com/legal/ckeditor-oss-license/
* /
( function ( ) { if ( window . CKEDITOR && window . CKEDITOR . dom ) return ; window . CKEDITOR || ( window . CKEDITOR = function ( ) { var a = /(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i , d = { timestamp : " M6K 9", version : "4. 19.1", revision : "445cf24ebd ", rnd : Math . floor ( 900 * Math . random ( ) ) + 100 , _ : { pending : [ ] , basePathSrcPattern : a } , status : "unloaded" , basePath : function ( ) { var b = window . CKEDITOR _BASEPATH || "" ; if ( ! b ) for ( var c = document . getElementsByTagName ( "script" ) , d = 0 ; d < c . length ; d ++ ) { var h = c [ d ] . src . match ( a ) ; if ( h ) { b = h [ 1 ] ; break } } - 1 == b . indexOf ( ":/" ) && "//" != b . slice ( 0 , 2 ) && ( b = 0 === b . indexOf ( "/" ) ? location . href . match ( /^.*?:\/\/[^\/]*/ ) [ 0 ] +
( function ( ) { if ( window . CKEDITOR && window . CKEDITOR . dom ) return ; window . CKEDITOR || ( window . CKEDITOR = function ( ) { var a = /(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i , d = { timestamp : " N2 M9", version : "4. 21.0", revision : "d529d176d7 ", rnd : Math . floor ( 900 * Math . random ( ) ) + 100 , _ : { pending : [ ] , basePathSrcPattern : a } , status : "unloaded" , basePath : function ( ) { var b = window . CKEDITOR _BASEPATH || "" ; if ( ! b ) for ( var c = document . getElementsByTagName ( "script" ) , d = 0 ; d < c . length ; d ++ ) { var h = c [ d ] . src . match ( a ) ; if ( h ) { b = h [ 1 ] ; break } } - 1 == b . indexOf ( ":/" ) && "//" != b . slice ( 0 , 2 ) && ( b = 0 === b . indexOf ( "/" ) ? location . href . match ( /^.*?:\/\/[^\/]*/ ) [ 0 ] +
b : location . href . match ( /^[^\?]*\/(?:)/ ) [ 0 ] + b ) ; if ( ! b ) throw 'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.' ; return b } ( ) , getUrl : function ( a ) { - 1 == a . indexOf ( ":/" ) && 0 !== a . indexOf ( "/" ) && ( a = this . basePath + a ) ; return a = this . appendTimestamp ( a ) } , appendTimestamp : function ( a ) { if ( ! this . timestamp || "/" === a . charAt ( a . length - 1 ) || /[&?]t=/ . test ( a ) ) return a ; var b = 0 <= a . indexOf ( "?" ) ? "\x26" : "?" ; return a + b + "t\x3d" + this . timestamp } ,
domReady : function ( ) { function a ( ) { try { document . addEventListener ? ( document . removeEventListener ( "DOMContentLoaded" , a , ! 1 ) , window . removeEventListener ( "load" , a , ! 1 ) , b ( ) ) : document . attachEvent && "complete" === document . readyState && ( document . detachEvent ( "onreadystatechange" , a ) , window . detachEvent ( "onload" , a ) , b ( ) ) } catch ( c ) { } } function b ( ) { for ( var a ; a = c . shift ( ) ; ) a ( ) } var c = [ ] ; return function ( b ) { function e ( ) { try { document . documentElement . doScroll ( "left" ) } catch ( b ) { setTimeout ( e , 1 ) ; return } a ( ) } c . push ( b ) ; "complete" === document . readyState &&
setTimeout ( a , 1 ) ; if ( 1 == c . length ) if ( document . addEventListener ) document . addEventListener ( "DOMContentLoaded" , a , ! 1 ) , window . addEventListener ( "load" , a , ! 1 ) ; else if ( document . attachEvent ) { document . attachEvent ( "onreadystatechange" , a ) ; window . attachEvent ( "onload" , a ) ; b = ! 1 ; try { b = ! window . frameElement } catch ( d ) { } document . documentElement . doScroll && b && e ( ) } } } ( ) } , b = window . CKEDITOR _GETURL ; if ( b ) { var c = d . getUrl ; d . getUrl = function ( a ) { return b . call ( d , a ) || c . call ( d , a ) } } return d } ( ) ) ;
@ -530,8 +530,8 @@ CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{attachStyleStateChange:function
else { var d = this , b = d . config . stylesCombo _stylesSet || d . config . stylesSet ; if ( ! 1 === b ) a ( null ) ; else if ( b instanceof Array ) d . _ . stylesDefinitions = b , a ( b ) ; else { b || ( b = "default" ) ; var b = b . split ( ":" ) , c = b [ 0 ] ; CKEDITOR . stylesSet . addExternal ( c , b [ 1 ] ? b . slice ( 1 ) . join ( ":" ) : CKEDITOR . getUrl ( "styles.js" ) , "" ) ; CKEDITOR . stylesSet . load ( c , function ( b ) { d . _ . stylesDefinitions = b [ c ] ; a ( d . _ . stylesDefinitions ) } ) } } } } ) ;
( function ( ) { if ( window . Promise ) CKEDITOR . tools . promise = Promise ; else { var a = CKEDITOR . getUrl ( "vendor/promise.js" ) ; if ( "function" === typeof window . define && window . define . amd && "function" === typeof window . require ) return window . require ( [ a ] , function ( a ) { CKEDITOR . tools . promise = a } ) ; CKEDITOR . scriptLoader . load ( a , function ( d ) { if ( ! d ) return CKEDITOR . error ( "no-vendor-lib" , { path : a } ) ; if ( "undefined" !== typeof window . ES6Promise ) return CKEDITOR . tools . promise = ES6Promise } ) } } ) ( ) ;
( function ( ) { function a ( a , f , e ) { a . once ( "selectionCheck" , function ( a ) { if ( ! d ) { var c = a . data . getRanges ( ) [ 0 ] ; e . equals ( c ) ? a . cancel ( ) : f . equals ( c ) && ( b = ! 0 ) } } , null , null , - 1 ) } var d = ! 0 , b = ! 1 ; CKEDITOR . dom . selection . setupEditorOptimization = function ( a ) { a . on ( "selectionCheck" , function ( a ) { a . data && ! b && a . data . optimizeInElementEnds ( ) ; b = ! 1 } ) ; a . on ( "contentDom" , function ( ) { var b = a . editable ( ) ; b && ( b . attachListener ( b , "keydown" , function ( a ) { this . _ . shiftPressed = a . data . $ . shiftKey } , this ) , b . attachListener ( b , "keyup" , function ( a ) { this . _ . shiftPressed =
a . data . $ . shiftKey } , this ) ) } ) } ; CKEDITOR . dom . selection . prototype . optimizeInElementEnds = function ( ) { var b = this . getRanges ( ) [ 0 ] , f = this . root . editor , e ; if ( this . root . editor . _ . shiftPressed || this . isFake || b . isCollapsed || b . startContainer . equals ( b . endContainer ) ) e = ! 1 ; else if ( 0 === b . endOffset ) e = ! 0 ; else { e = b . startContainer . type === CKEDITOR . NODE _TEXT ; var k = b . endContainer . type === CKEDITOR . NODE _TEXT , h = e ? b . startContainer . getLength ( ) : b . startContainer . getChildCount ( ) ; e = b . startOffset === h || e ^ k } e && ( e = b . clone ( ) , b . shrink ( CKEDITOR . SHRINK _TEXT ,
! 1 , { skipBogus : ! CKEDITOR . env . webkit } ) , d = ! 1 , a ( f , b , e ) , b . select ( ) , d = ! 0 ) } } ) ( ) ;
a . data . $ . shiftKey } , this ) ) } ) } ; CKEDITOR . dom . selection . prototype . optimizeInElementEnds = function ( ) { var b = this . getRanges ( ) [ 0 ] , f = this . root . editor , e ; if ( this . root . editor . _ . shiftPressed || this . isFake || b . isCollapsed || b . startContainer . equals ( b . endContainer ) || ( b . endContainer . is ? b . endContainer . is ( "li" ) : b . endContainer . getParent ( ) . is && b . endContainer . getParent ( ) . is ( "li" ) ) ) e = ! 1 ; else if ( 0 === b . endOffset ) e = ! 0 ; else { e = b . startContainer . type === CKEDITOR . NODE _TEXT ; var k = b . endContainer . type === CKEDITOR . NODE _TEXT , h = e ? b . startContainer . getLength ( ) :
b . startContainer . getChildCount ( ) ; e = b . startOffset === h || e ^ k } e && ( e = b . clone ( ) , b . shrink ( CKEDITOR . SHRINK _TEXT , ! 1 , { skipBogus : ! CKEDITOR . env . webkit } ) , d = ! 1 , a ( f , b , e ) , b . select ( ) , d = ! 0 ) } } ) ( ) ;
( function ( ) { function a ( a , c ) { if ( b ( a ) ) a = Math . round ( c * ( parseFloat ( a ) / 100 ) ) ; else if ( "string" === typeof a && a . match ( /^\d+$/gm ) || "string" === typeof a && a . match ( /^\d+(?:deg)?$/gm ) ) a = parseInt ( a , 10 ) ; return a } function d ( a , c ) { b ( a ) ? a = c * ( parseFloat ( a ) / 100 ) : "string" === typeof a && a . match ( /^\d?\.\d+/gm ) && ( a = parseFloat ( a ) ) ; return a } function b ( a ) { return "string" === typeof a && a . match ( /^((\d*\.\d+)|(\d+))%{1}$/gm ) } function c ( a , b , c ) { return ! isNaN ( a ) && a >= b && a <= c } function f ( a ) { a = a . toString ( 16 ) ; return 1 == a . length ? "0" + a : a } CKEDITOR . tools . color =
CKEDITOR . tools . createClass ( { $ : function ( a , b ) { this . _ . initialColorCode = a ; this . _ . defaultValue = b ; this . _ . parseInput ( a ) } , proto : { getHex : function ( ) { if ( ! this . _ . isValidColor ) return this . _ . defaultValue ; var a = this . _ . blendAlphaColor ( this . _ . red , this . _ . green , this . _ . blue , this . _ . alpha ) ; return this . _ . formatHexString ( a [ 0 ] , a [ 1 ] , a [ 2 ] ) } , getHexWithAlpha : function ( ) { if ( ! this . _ . isValidColor ) return this . _ . defaultValue ; var a = Math . round ( this . _ . alpha * CKEDITOR . tools . color . MAX _RGB _CHANNEL _VALUE ) ; return this . _ . formatHexString ( this . _ . red ,
this . _ . green , this . _ . blue , a ) } , getRgb : function ( ) { if ( ! this . _ . isValidColor ) return this . _ . defaultValue ; var a = this . _ . blendAlphaColor ( this . _ . red , this . _ . green , this . _ . blue , this . _ . alpha ) ; return this . _ . formatRgbString ( "rgb" , a [ 0 ] , a [ 1 ] , a [ 2 ] ) } , getRgba : function ( ) { return this . _ . isValidColor ? this . _ . formatRgbString ( "rgba" , this . _ . red , this . _ . green , this . _ . blue , this . _ . alpha ) : this . _ . defaultValue } , getHsl : function ( ) { var a = 0 === this . _ . alpha || 1 === this . _ . alpha ; if ( ! this . _ . isValidColor ) return this . _ . defaultValue ; this . _ . type ===
@ -572,49 +572,49 @@ c(this,"panel"));a=[[p,a]];f([b],d,a);f(h,e,a)}).call(this,a)}});var k="cke_ui_c
[ [ p , a ] ] ) } } ; b . on ( "panelShow" , a ) ; b . on ( "menuShow" , a ) ; b . config . uiColor && b . setUiColor ( b . config . uiColor ) } } ) } ) ( ) ;
( function ( ) { var a = CKEDITOR . dom . element . createFromHtml ( '\x3cdiv style\x3d"width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue"\x3e\x3c/div\x3e' , CKEDITOR . document ) ; a . appendTo ( CKEDITOR . document . getHead ( ) ) ; try { var d = a . getComputedStyle ( "border-top-color" ) , b = a . getComputedStyle ( "border-right-color" ) ; CKEDITOR . env . hc = ! ( ! d || d != b ) } catch ( c ) { CKEDITOR . env . hc = ! 1 } a . remove ( ) ; CKEDITOR . env . hc && ( CKEDITOR . env . cssClass += " cke_hc" ) ; CKEDITOR . document . appendStyleText ( ".cke{visibility:hidden;}" ) ;
CKEDITOR . status = "loaded" ; CKEDITOR . fireOnce ( "loaded" ) ; if ( a = CKEDITOR . _ . pending ) for ( delete CKEDITOR . _ . pending , d = 0 ; d < a . length ; d ++ ) CKEDITOR . editor . prototype . constructor . apply ( a [ d ] [ 0 ] , a [ d ] [ 1 ] ) , CKEDITOR . add ( a [ d ] [ 0 ] ) } ) ( ) ; / *
Copyright ( c ) 2003 - 202 2 , CKSource Holding sp . z o . o . All rights reserved .
Copyright ( c ) 2003 - 202 3 , CKSource Holding sp . z o . o . All rights reserved .
For licensing , see LICENSE . md or https : //ckeditor.com/legal/ckeditor-oss-license
* /
CKEDITOR . skin . name = "moono-lisa" ; CKEDITOR . skin . ua _editor = "ie,iequirks,ie8,gecko" ; CKEDITOR . skin . ua _dialog = "ie,iequirks,ie8" ;
CKEDITOR . skin . chameleon = function ( ) { var b = function ( ) { return function ( b , d ) { for ( var a = b . match ( /[^#]./g ) , e = 0 ; 3 > e ; e ++ ) { var f = e , c ; c = parseInt ( a [ e ] , 16 ) ; c = ( "0" + ( 0 > d ? 0 | c * ( 1 + d ) : 0 | c + ( 255 - c ) * d ) . toString ( 16 ) ) . slice ( - 2 ) ; a [ f ] = c } return "#" + a . join ( "" ) } } ( ) , f = { editor : new CKEDITOR . template ( "{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_bottom [background-color:{defaultBackground};border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [background-color:{defaultBackground};outline-color:{defaultBorder};] {id} .cke_dialog_tab [background-color:{dialogTab};border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [background-color:{lightBackground};] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} a.cke_button_off:hover,{id} a.cke_button_off:focus,{id} a.cke_button_off:active [background-color:{darkBackground};border-color:{toolbarElementsBorder};] {id} .cke_button_on [background-color:{ckeButtonOn};border-color:{toolbarElementsBorder};] {id} .cke_toolbar_separator,{id} .cke_toolgroup a.cke_button:last-child:after,{id} .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after [background-color: {toolbarElementsBorder};border-color: {toolbarElementsBorder};] {id} a.cke_combo_button:hover,{id} a.cke_combo_button:focus,{id} .cke_combo_on a.cke_combo_button [border-color:{toolbarElementsBorder};background-color:{darkBackground};] {id} .cke_combo:after [border-color:{toolbarElementsBorder};] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover,{id} a.cke_path_item:focus,{id} a.cke_path_item:active [background-color:{darkBackground};] {id}.cke_panel [border-color:{defaultBorder};] " ) , panel : new CKEDITOR . template ( ".cke_panel_grouptitle [background-color:{lightBackground};border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active [background-color:{menubuttonHover};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] " ) } ;
return function ( g , d ) { var a = b ( g . uiColor , . 4 ) , a = { id : "." + g . id , defaultBorder : b ( a , - . 2 ) , toolbarElementsBorder : b ( a , - . 25 ) , defaultBackground : a , lightBackground : b ( a , . 8 ) , darkBackground : b ( a , - . 15 ) , ckeButtonOn : b ( a , . 4 ) , ckeResizer : b ( a , - . 4 ) , ckeColorauto : b ( a , . 8 ) , dialogBody : b ( a , . 7 ) , dialogTab : b ( a , . 65 ) , dialogTabSelected : "#FFF" , dialogTabSelectedBorder : "#FFF" , elementsPathColor : b ( a , - . 6 ) , menubuttonHover : b ( a , . 1 ) , menubuttonIcon : b ( a , . 5 ) , menubuttonIconHover : b ( a , . 3 ) } ; return f [ d ] . output ( a ) . replace ( /\[/g , "{" ) . replace ( /\]/g , "}" ) } } ( ) ; CKEDITOR . plugins . add ( "dialogui" , { onLoad : function ( ) { var h = function ( b ) { this . _ || ( this . _ = { } ) ; this . _ [ "default" ] = this . _ . initValue = b [ "default" ] || "" ; this . _ . required = b . required || ! 1 ; for ( var a = [ this . _ ] , d = 1 ; d < arguments . length ; d ++ ) a . push ( arguments [ d ] ) ; a . push ( ! 0 ) ; CKEDITOR . tools . extend . apply ( CKEDITOR . tools , a ) ; return this . _ } , r = { build : function ( b , a , d ) { return new CKEDITOR . ui . dialog . textInput ( b , a , d ) } } , n = { build : function ( b , a , d ) { return new CKEDITOR . ui . dialog [ a . type ] ( b , a , d ) } } , q = { isChanged : function ( ) { return this . getValue ( ) !=
return function ( g , d ) { var a = b ( g . uiColor , . 4 ) , a = { id : "." + g . id , defaultBorder : b ( a , - . 2 ) , toolbarElementsBorder : b ( a , - . 25 ) , defaultBackground : a , lightBackground : b ( a , . 8 ) , darkBackground : b ( a , - . 15 ) , ckeButtonOn : b ( a , . 4 ) , ckeResizer : b ( a , - . 4 ) , ckeColorauto : b ( a , . 8 ) , dialogBody : b ( a , . 7 ) , dialogTab : b ( a , . 65 ) , dialogTabSelected : "#FFF" , dialogTabSelectedBorder : "#FFF" , elementsPathColor : b ( a , - . 6 ) , menubuttonHover : b ( a , . 1 ) , menubuttonIcon : b ( a , . 5 ) , menubuttonIconHover : b ( a , . 3 ) } ; return f [ d ] . output ( a ) . replace ( /\[/g , "{" ) . replace ( /\]/g , "}" ) } } ( ) ; CKEDITOR . plugins . add ( "dialogui" , { onLoad : function ( ) { var k = function ( b ) { this . _ || ( this . _ = { } ) ; this . _ [ "default" ] = this . _ . initValue = b [ "default" ] || "" ; this . _ . required = b . required || ! 1 ; for ( var a = [ this . _ ] , d = 1 ; d < arguments . length ; d ++ ) a . push ( arguments [ d ] ) ; a . push ( ! 0 ) ; CKEDITOR . tools . extend . apply ( CKEDITOR . tools , a ) ; return this . _ } , r = { build : function ( b , a , d ) { return new CKEDITOR . ui . dialog . textInput ( b , a , d ) } } , m = { build : function ( b , a , d ) { return new CKEDITOR . ui . dialog [ a . type ] ( b , a , d ) } } , q = { isChanged : function ( ) { return this . getValue ( ) !=
this . getInitValue ( ) } , reset : function ( b ) { this . setValue ( this . getInitValue ( ) , b ) } , setInitValue : function ( ) { this . _ . initValue = this . getValue ( ) } , resetInitValue : function ( ) { this . _ . initValue = this . _ [ "default" ] } , getInitValue : function ( ) { return this . _ . initValue } } , v = CKEDITOR . tools . extend ( { } , CKEDITOR . ui . dialog . uiElement . prototype . eventProcessors , { onChange : function ( b , a ) { this . _ . domOnChangeRegistered || ( b . on ( "load" , function ( ) { this . getInputElement ( ) . on ( "change" , function ( ) { b . parts . dialog . isVisible ( ) && this . fire ( "change" , { value : this . getValue ( ) } ) } ,
this ) } , this ) , this . _ . domOnChangeRegistered = ! 0 ) ; this . on ( "change" , a ) } } , ! 0 ) , x = /^on([A-Z]\w+)/ , t = function ( b ) { for ( var a in b ) ( x . test ( a ) || "title" == a || "type" == a ) && delete b [ a ] ; return b } , w = function ( b ) { b = b . data . getKeystroke ( ) ; b == CKEDITOR . SHIFT + CKEDITOR . ALT + 36 ? this . setDirectionMarker ( "ltr" ) : b == CKEDITOR . SHIFT + CKEDITOR . ALT + 35 && this . setDirectionMarker ( "rtl" ) } ; CKEDITOR . tools . extend ( CKEDITOR . ui . dialog , { labeledElement : function ( b , a , d , f ) { if ( ! ( 4 > arguments . length ) ) { var c = h . call ( this , a ) ; c . labelId = CKEDITOR . tools . getNextId ( ) +
"_label" ; this . _ . children = [ ] ; var e = { role : a . role || "presentation" } ; a . includeLabel && ( e [ "aria-labelledby" ] = c . labelId ) ; CKEDITOR . ui . dialog . uiElement . call ( this , b , a , d , "div" , null , e, function ( ) { var e = [ ] , g = a . required ? " cke_required" : "" ; "horizontal" != a . labelLayout ? e . push ( '\x3clabel class\x3d"cke_dialog_ui_labeled_label' + g + '" ' , ' id\x3d"' + c . labelId + '"' , c . inputId ? ' for\x3d"' + c . inputId + '"' : "" , ( a . labelStyle ? ' style\x3d"' + a . labelStyle + '"' : "" ) + "\x3e" , a . required ? a . label + '\x3cspan class\x3d"cke_dialog_ui_labeled_required" aria-hidden\x3d"true"\x3e*\x3c/span\x3e' :
a . label , "\x3c/label\x3e" , '\x3cdiv class\x3d"cke_dialog_ui_labeled_content"' , a . controlStyle ? ' style\x3d"' + a . controlStyle + '"' : "" , ' role\x3d"presentation"\x3e' , f . call ( this , b , a ) , "\x3c/div\x3e" ) : ( g = { type : "hbox" , widths : a . widths , padding : 0 , children : [ { type : "html" , html : '\x3clabel class\x3d"cke_dialog_ui_labeled_label' + g + '" id\x3d"' + c . labelId + '" for\x3d"' + c . inputId + '"' + ( a . labelStyle ? ' style\x3d"' + a . labelStyle + '"' : "" ) + "\x3e" + CKEDITOR . tools . htmlEncode ( a . label ) + "\x3c/label\x3e" } , { type : "html" , html : '\x3cspan class\x3d"cke_dialog_ui_labeled_content"' +
( a . controlStyle ? ' style\x3d"' + a . controlStyle + '"' : "" ) + "\x3e" + f . call ( this , b , a ) + "\x3c/span\x3e" } ] } , CKEDITOR . dialog . _ . uiElementBuilders . hbox . build ( b , g , e) ) ; return e . join ( "" ) } ) } } , textInput : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { h. call ( this , a ) ; var f = this . _ . inputId = CKEDITOR . tools . getNextId ( ) + "_textInput" , c = { "class" : "cke_dialog_ui_input_" + a . type , id : f , type : a . type } ; a . validate && ( this . validate = a . validate ) ; a . maxLength && ( c . maxlength = a . maxLength ) ; a . size && ( c . size = a . size ) ; a . inputStyle && ( c . style = a . inputStyle ) ; var e =
this , m = ! 1 ; b . on ( "load" , function ( ) { e . getInputElement ( ) . on ( "keydown" , function ( a ) { 13 == a . data . getKeystroke ( ) && ( m= ! 0 ) } ) ; e . getInputElement ( ) . on ( "keyup" , function ( a ) { 13 == a . data . getKeystroke ( ) && m && ( b . getButton ( "ok" ) && setTimeout ( function ( ) { b . getButton ( "ok" ) . click ( ) } , 0 ) , m= ! 1 ) ; e . bidi && w . call ( e , a ) } , null , null , 1E3 ) } ) ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { var b = [ '\x3cdiv class\x3d"cke_dialog_ui_input_' , a . type , '" role\x3d"presentation"' ] ; a . width && b . push ( 'style\x3d"width:' + a . width + '" ' ) ; b . push ( "\x3e\x3cinput " ) ;
c [ "aria-labelledby" ] = this . _ . labelId ; this . _ . required && ( c [ "aria-required" ] = this . _ . required ) ; for ( var e in c ) b . push ( e + '\x3d"' + c [ e ] + '" ' ) ; b . push ( " /\x3e\x3c/div\x3e" ) ; return b . join ( "" ) } ) } } , textarea : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { h. call ( this , a ) ; var f = this , c = this . _ . inputId = CKEDITOR . tools . getNextId ( ) + "_textarea" , e = { } ; a . validate && ( this . validate = a . validate ) ; e. rows = a . rows || 5 ; e . cols = a . cols || 20 ; e [ "class" ] = "cke_dialog_ui_input_textarea " + ( a [ "class" ] || "" ) ; "undefined" != typeof a . inputStyle && ( e . style = a . inputStyle ) ;
a . dir && ( e . dir = a . dir ) ; if ( f . bidi ) b . on ( "load" , function ( ) { f . getInputElement ( ) . on ( "keyup" , w ) } , f ) ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { e [ "aria-labelledby" ] = this . _ . labelId ; this . _ . required && ( e [ "aria-required" ] = this . _ . required ) ; var a = [ '\x3cdiv class\x3d"cke_dialog_ui_input_textarea" role\x3d"presentation"\x3e\x3ctextarea id\x3d"' , c , '" ' ] , b ; for ( b in e ) a . push ( b + '\x3d"' + CKEDITOR . tools . htmlEncode ( e [ b ] ) + '" ' ) ; a . push ( "\x3e" , CKEDITOR . tools . htmlEncode ( f . _ [ "default" ] ) , "\x3c/textarea\x3e\x3c/div\x3e" ) ;
return a . join ( "" ) } ) } } , checkbox : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { var f= h . call ( this , a , { "default" : ! ! a [ "default" ] } ) ; a . validate && ( this . validate = a . validate ) ; CKEDITOR . ui . dialog . uiElement . call ( this , b , a , d , "span" , null , null , function ( ) { var c = CKEDITOR . tools . extend ( { } , a , { id : a . id ? a . id + "_checkbox" : CKEDITOR . tools . getNextId ( ) + "_checkbox" } , ! 0 ) , e= [ ] , d = CKEDITOR . tools . getNextId ( ) + "_label" , g = { "class" : "cke_dialog_ui_checkbox_input" , type : "checkbox" , "aria-labelledby" : d } ; t ( c ) ; a [ "default" ] && ( g . checked = "checked" ) ; "undefined" !=
typeof c . inputStyle && ( c . style = c . inputStyle ) ; f . checkbox = new CKEDITOR . ui . dialog . uiElement ( b , c , e, "input" , null , g ) ; e . push ( ' \x3clabel id\x3d"' , d , '" for\x3d"' , g . id , '"' + ( a . labelStyle ? ' style\x3d"' + a . labelStyle + '"' : "" ) + "\x3e" , CKEDITOR . tools . htmlEncode ( a . label ) , "\x3c/label\x3e" ) ; return e . join ( "" ) } ) } } , radio : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { h . call ( this , a ) ; this . _ [ "default" ] || ( this . _ [ "default" ] = this . _ . initValue = a . items [ 0 ] [ 1 ] ) ; a . validate && ( this . validate = a . validate ) ; var f = [ ] , c = this ; a . role = "radiogroup" ;
a . includeLabel = ! 0 ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { for ( var e= [ ] , d = [ ] , g = ( a . id ? a . id : CKEDITOR . tools . getNextId ( ) ) + "_radio" , k= 0 ; k < a . items . length ; k ++ ) { var l = a . items [ k] , h = void 0 !== l [ 2 ] ? l [ 2 ] : l [ 0 ] , n = void 0 !== l [ 1 ] ? l [ 1 ] : l [ 0 ] , p = CKEDITOR . tools . getNextId ( ) + "_radio_input" , q = p + "_label" , p = CKEDITOR . tools . extend ( { } , a , { id : p , title : null , type : null } , ! 0 ) , h = CKEDITOR . tools . extend ( { } , p , { title : h } , ! 0 ) , r = { type : "radio" , "class" : "cke_dialog_ui_radio_input" , name : g , value : n , "aria-labelledby" : q } , u = [ ] ; c . _ [ "default" ] ==
n && ( r . checked = "checked" ) ; t ( p ) ; t ( h ) ; "undefined" != typeof p . inputStyle && ( p . style = p . inputStyle ) ; p. keyboardFocusable = ! 0 ; f . push ( new CKEDITOR . ui . dialog . uiElement ( b , p , u , "input" , null , r ) ); u . push ( " " ) ; new CKEDITOR . ui . dialog . uiElement ( b , h , u , "label" , null , { id : q , "for" : r . id } , l [ 0 ] ) ; e . push ( u . join ( "" ) ) } new CKEDITOR . ui . dialog . hbox ( b , f, e , d ) ; return d . join ( "" ) } ) ; this . _ . children = f } } , button : function ( b , a , d ) { if ( arguments . length ) { "function" == typeof a && ( a = a ( b . getParentEditor ( ) ) ) ; h . call ( this , a , { disabled : a . disabled || ! 1 } ) ; CKEDITOR . event . implementOn ( this ) ;
var f = this ; b . on ( "load" , function ( ) { var a = this . getElement ( ) ; ( function ( ) { a . on ( "click" , function ( a ) { f . click ( ) ; a . data . preventDefault ( ) } ) ; a . on ( "keydown" , function ( a ) { a . data . getKeystroke ( ) in { 32 : 1 } && ( f . click ( ) , a . data . preventDefault ( ) ) } ) } ) ( ) ; a . unselectable ( ) } , this ) ; var c = CKEDITOR . tools . extend ( { } , a ) ; delete c . style ; var e = CKEDITOR . tools . getNextId ( ) + "_label" ; CKEDITOR . ui . dialog . uiElement . call ( this , b , c , d , "a" , null , { style : a . style , href : "javascript:void(0)" , title : a . label , hidefocus : "true" , "class" : a [ "class" ] , role : "button" ,
" aria-labelledby": e } , '\x3cspan id\x3d"' + e + '" class\x3d"cke_dialog_ui_button"\x3e' + CKEDITOR . tools . htmlEncode ( a . label ) + "\x3c/span\x3e" ) } } , select : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { var f= h . call ( this , a ) ; a . validate && ( this . validate = a . validate ) ; f . inputId = CKEDITOR . tools . getNextId ( ) + "_select" ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { var c = CKEDITOR . tools . extend ( { } , a , { id : a . id ? a . id + "_select" : CKEDITOR . tools . getNextId ( ) + "_select" } , ! 0 ) , e= [ ] , d = [ ] , g = { id : f . inputId , "class" : "cke_dialog_ui_input_select" ,
"aria-labelledby" : this . _ . labelId } ; e . push ( '\x3cdiv class\x3d"cke_dialog_ui_input_' , a . type , '" role\x3d"presentation"' ) ; a . width && e . push ( 'style\x3d"width:' + a . width + '" ' ) ; e . push ( "\x3e" ) ; void 0 !== a . size && ( g . size = a . size ) ; void 0 !== a . multiple && ( g . multiple = a . multiple ) ; t ( c ) ; for ( var k= 0 , l ; k < a . items . length && ( l = a . items [ k] ) ; k ++ ) d . push ( '\x3coption value\x3d"' , CKEDITOR . tools . htmlEncode ( void 0 !== l [ 1 ] ? l [ 1 ] : l [ 0 ] ) . replace ( /"/g , "\x26quot;" ) , '" /\x3e ' , CKEDITOR . tools . htmlEncode ( l [ 0 ] ) ) ; "undefined" != typeof c . inputStyle &&
( c . style = c . inputStyle ) ; f . select = new CKEDITOR . ui . dialog . uiElement ( b , c , e, "select" , null , g , d . join ( "" ) ) ; e . push ( "\x3c/div\x3e" ) ; return e . join ( "" ) } ) } } , file : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { void 0 === a [ "default" ] && ( a [ "default" ] = "" ) ; var f= CKEDITOR . tools . extend ( h . call ( this , a ) , { definition : a , buttons : [ ] } ) ; a . validate && ( this . validate = a . validate ) ; b . on ( "load" , function ( ) { CKEDITOR . document . getById ( f . frameId ) . getParent ( ) . addClass ( "cke_dialog_ui_input_file" ) } ) ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d ,
function ( ) { f . frameId = CKEDITOR . tools . getNextId ( ) + "_fileInput" ; var b = [ '\x3ciframe frameborder\x3d"0" allowtransparency\x3d"0" class\x3d"cke_dialog_ui_input_file" role\x3d"presentation" id\x3d"' , f . frameId , '" title\x3d"' , a . label , '" src\x3d"javascript:void(' ] ; b . push ( CKEDITOR . env . ie ? "(function(){" + encodeURIComponent ( "document.open();(" + CKEDITOR . tools . fixDomain + ")();document.close();" ) + "})()" : "0" ) ; b . push ( ')"\x3e\x3c/iframe\x3e' ) ; return b . join ( "" ) } ) } } , fileButton : function ( b , a , d ) { var f = this ; if ( ! ( 3 > arguments . length ) ) { h . call ( this ,
a ) ; a . validate && ( this . validate = a . validate ) ; var c = CKEDITOR . tools . extend ( { } , a ) , e = c . onClick ; c . className = ( c . className ? c . className + " " : "" ) + "cke_dialog_ui_button" ; c . onClick = function ( c ) { var d = a [ "for" ] ; c = e? e . call ( this , c ) : ! 1 ; ! 1 !== c && ( "xhr" !== c && b . getContentElement ( d [ 0 ] , d [ 1 ] ) . submit ( ) , this . disable ( ) ) } ; b . on ( "load" , function ( ) { b . getContentElement ( a [ "for" ] [ 0 ] , a [ "for" ] [ 1 ] ) . _ . buttons . push ( f ) } ) ; CKEDITOR . ui . dialog . button . call ( this , b , c , d ) } } , html : function ( ) { var b = /^\s*<[\w:]+\s+([^>]*)?>/ , a = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/ ,
d = /\/$/ ; return function ( f, c , e ) { if ( ! ( 3 > arguments . length ) ) { var m = [ ] , g = c . html ; "\x3c" != g . charAt ( 0 ) && ( g = "\x3cspan\x3e" + g + "\x3c/span\x3e" ) ; var k= c . focus ; if ( k ) { var l = this . focus ; this . focus = function ( ) { ( "function" == typeof k? k : l ) . call ( this ) ; this . fire ( "focus" ) } ; c . isFocusable && ( this . isFocusable = this . isFocusable ) ; this . keyboardFocusable = ! 0 } CKEDITOR . ui . dialog . uiElement . call ( this , f, c , m , "span" , null , null , "" ) ; m= m . join ( "" ) . match ( b ) ; g = g . match ( a ) || [ "" , "" , "" ] ; d . test ( g [ 1 ] ) && ( g [ 1 ] = g [ 1 ] . slice ( 0 , - 1 ) , g [ 2 ] = "/" + g [ 2 ] ) ; e . push ( [ g [ 1 ] ,
" " , m [ 1 ] || "" , g [ 2 ] ] . join ( "" ) ) } } } ( ) , fieldset : function ( b , a , d , f, c ) { var e = c . label ; this . _ = { children : a } ; CKEDITOR . ui . dialog . uiElement . call ( this , b , c , f , "fieldset" , null , null , function ( ) { var a = [ ] ; e && a . push ( "\x3clegend" + ( c . labelStyle ? ' style\x3d"' + c . labelStyle + '"' : "" ) + "\x3e" + e + "\x3c/legend\x3e" ) ; for ( var b = 0 ; b < d . length ; b ++ ) a . push ( d [ b ] ) ; return a . join ( "" ) } ) } } , ! 0 ) ; CKEDITOR . ui . dialog . html . prototype = new CKEDITOR . ui . dialog . uiElement ; CKEDITOR . ui . dialog . labeledElement . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement ,
this ) } , this ) , this . _ . domOnChangeRegistered = ! 0 ) ; this . on ( "change" , a ) } } , ! 0 ) , x = /^on([A-Z]\w+)/ , t = function ( b ) { for ( var a in b ) ( x . test ( a ) || "title" == a || "type" == a ) && delete b [ a ] ; return b } , w = function ( b ) { b = b . data . getKeystroke ( ) ; b == CKEDITOR . SHIFT + CKEDITOR . ALT + 36 ? this . setDirectionMarker ( "ltr" ) : b == CKEDITOR . SHIFT + CKEDITOR . ALT + 35 && this . setDirectionMarker ( "rtl" ) } ; CKEDITOR . tools . extend ( CKEDITOR . ui . dialog , { labeledElement : function ( b , a , d , e ) { if ( ! ( 4 > arguments . length ) ) { var c = k . call ( this , a ) ; c . labelId = CKEDITOR . tools . getNextId ( ) +
"_label" ; this . _ . children = [ ] ; var f = { role : a . role || "presentation" } ; a . includeLabel && ( f [ "aria-labelledby" ] = c . labelId ) ; CKEDITOR . ui . dialog . uiElement . call ( this , b , a , d , "div" , null , f, function ( ) { var d = [ ] , g = a . required ? " cke_required" : "" ; "horizontal" != a . labelLayout ? d . push ( '\x3clabel class\x3d"cke_dialog_ui_labeled_label' + g + '" ' , ' id\x3d"' + c . labelId + '"' , c . inputId ? ' for\x3d"' + c . inputId + '"' : "" , ( a . labelStyle ? ' style\x3d"' + a . labelStyle + '"' : "" ) + "\x3e" , a . required ? a . label + '\x3cspan class\x3d"cke_dialog_ui_labeled_required" aria-hidden\x3d"true"\x3e*\x3c/span\x3e' :
a . label , "\x3c/label\x3e" , '\x3cdiv class\x3d"cke_dialog_ui_labeled_content"' , a . controlStyle ? ' style\x3d"' + a . controlStyle + '"' : "" , ' role\x3d"presentation"\x3e' , e . call ( this , b , a ) , "\x3c/div\x3e" ) : ( g = { type : "hbox" , widths : a . widths , padding : 0 , children : [ { type : "html" , html : '\x3clabel class\x3d"cke_dialog_ui_labeled_label' + g + '" id\x3d"' + c . labelId + '" for\x3d"' + c . inputId + '"' + ( a . labelStyle ? ' style\x3d"' + a . labelStyle + '"' : "" ) + "\x3e" + CKEDITOR . tools . htmlEncode ( a . label ) + "\x3c/label\x3e" } , { type : "html" , html : '\x3cspan class\x3d"cke_dialog_ui_labeled_content"' +
( a . controlStyle ? ' style\x3d"' + a . controlStyle + '"' : "" ) + "\x3e" + e . call ( this , b , a ) + "\x3c/span\x3e" } ] } , CKEDITOR . dialog . _ . uiElementBuilders . hbox . build ( b , g , d) ) ; return d . join ( "" ) } ) } } , textInput : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { k. call ( this , a ) ; var e = this . _ . inputId = CKEDITOR . tools . getNextId ( ) + "_textInput" , c = { "class" : "cke_dialog_ui_input_" + a . type , id : e , type : a . type } ; a . validate && ( this . validate = a . validate ) ; a . maxLength && ( c . maxlength = a . maxLength ) ; a . size && ( c . size = a . size ) ; a . inputStyle && ( c . style = a . inputStyle ) ; var f =
this , h = ! 1 ; b . on ( "load" , function ( ) { f . getInputElement ( ) . on ( "keydown" , function ( a ) { 13 == a . data . getKeystroke ( ) && ( h= ! 0 ) } ) ; f . getInputElement ( ) . on ( "keyup" , function ( a ) { 13 == a . data . getKeystroke ( ) && h && ( b . getButton ( "ok" ) && setTimeout ( function ( ) { b . getButton ( "ok" ) . click ( ) } , 0 ) , h= ! 1 ) ; f . bidi && w . call ( f , a ) } , null , null , 1E3 ) } ) ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { var b = [ '\x3cdiv class\x3d"cke_dialog_ui_input_' , a . type , '" role\x3d"presentation"' ] ; a . width && b . push ( 'style\x3d"width:' + a . width + '" ' ) ; b . push ( "\x3e\x3cinput " ) ;
c [ "aria-labelledby" ] = this . _ . labelId ; this . _ . required && ( c [ "aria-required" ] = this . _ . required ) ; for ( var e in c ) b . push ( e + '\x3d"' + c [ e ] + '" ' ) ; b . push ( " /\x3e\x3c/div\x3e" ) ; return b . join ( "" ) } ) } } , textarea : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { k. call ( this , a ) ; var e = this , c = this . _ . inputId = CKEDITOR . tools . getNextId ( ) + "_textarea" , f = { } ; a . validate && ( this . validate = a . validate ) ; f. rows = a . rows || 5 ; f . cols = a . cols || 20 ; f [ "class" ] = "cke_dialog_ui_input_textarea " + ( a [ "class" ] || "" ) ; "undefined" != typeof a . inputStyle && ( f . style = a . inputStyle ) ;
a . dir && ( f . dir = a . dir ) ; if ( e . bidi ) b . on ( "load" , function ( ) { e . getInputElement ( ) . on ( "keyup" , w ) } , e ) ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { f [ "aria-labelledby" ] = this . _ . labelId ; this . _ . required && ( f [ "aria-required" ] = this . _ . required ) ; var a = [ '\x3cdiv class\x3d"cke_dialog_ui_input_textarea" role\x3d"presentation"\x3e\x3ctextarea id\x3d"' , c , '" ' ] , b ; for ( b in f ) a . push ( b + '\x3d"' + CKEDITOR . tools . htmlEncode ( f [ b ] ) + '" ' ) ; a . push ( "\x3e" , CKEDITOR . tools . htmlEncode ( e . _ [ "default" ] ) , "\x3c/textarea\x3e\x3c/div\x3e" ) ;
return a . join ( "" ) } ) } } , checkbox : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { var e= k . call ( this , a , { "default" : ! ! a [ "default" ] } ) ; a . validate && ( this . validate = a . validate ) ; CKEDITOR . ui . dialog . uiElement . call ( this , b , a , d , "span" , null , null , function ( ) { var c = CKEDITOR . tools . extend ( { } , a , { id : a . id ? a . id + "_checkbox" : CKEDITOR . tools . getNextId ( ) + "_checkbox" } , ! 0 ) , d= [ ] , h = CKEDITOR . tools . getNextId ( ) + "_label" , g = { "class" : "cke_dialog_ui_checkbox_input" , type : "checkbox" , "aria-labelledby" : h } ; t ( c ) ; a [ "default" ] && ( g . checked = "checked" ) ; "undefined" !=
typeof c . inputStyle && ( c . style = c . inputStyle ) ; e . checkbox = new CKEDITOR . ui . dialog . uiElement ( b , c , d, "input" , null , g ) ; d . push ( ' \x3clabel id\x3d"' , h , '" for\x3d"' , g . id , '"' + ( a . labelStyle ? ' style\x3d"' + a . labelStyle + '"' : "" ) + "\x3e" , CKEDITOR . tools . htmlEncode ( a . label ) , "\x3c/label\x3e" ) ; return d . join ( "" ) } ) } } , radio : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { k . call ( this , a ) ; this . _ [ "default" ] || ( this . _ [ "default" ] = this . _ . initValue = a . items [ 0 ] [ 1 ] ) ; a . validate && ( this . validate = a . validate ) ; var e = [ ] , c = this ; a . role = "radiogroup" ;
a . includeLabel = ! 0 ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { for ( var d= [ ] , h = [ ] , g = ( a . id ? a . id : CKEDITOR . tools . getNextId ( ) ) + "_radio" , n= 0 ; n < a . items . length ; n ++ ) { var l = a . items [ n] , k = void 0 !== l [ 2 ] ? l [ 2 ] : l [ 0 ] , m = void 0 !== l [ 1 ] ? l [ 1 ] : l [ 0 ] , p = CKEDITOR . tools . getNextId ( ) + "_radio_input" , q = p + "_label" , p = CKEDITOR . tools . extend ( { } , a , { id : p , title : null , type : null } , ! 0 ) , k = CKEDITOR . tools . extend ( { } , p , { title : k } , ! 0 ) , r = { type : "radio" , "class" : "cke_dialog_ui_radio_input" , name : g , value : m , "aria-labelledby" : q } , u = [ ] ; c . _ [ "default" ] ==
m && ( r . checked = "checked" ) ; t ( p ) ; t ( k ) ; "undefined" != typeof p . inputStyle && ( p . style = p . inputStyle ) ; m= new CKEDITOR . ui . dialog . uiElement ( b , p , u , "input" , null , r ) ;m . on ( "focus" , function ( ) { c . click ( ) } ) ; e . push ( m ); u . push ( " " ) ; new CKEDITOR . ui . dialog . uiElement ( b , k , u , "label" , null , { id : q , "for" : r . id } , l [ 0 ] ) ; d . push ( u . join ( "" ) ) } new CKEDITOR . ui . dialog . hbox ( b , e, d , h ) ; return h . join ( "" ) } ) ; this . _ . children = e } } , button : function ( b , a , d ) { if ( arguments . length ) { "function" == typeof a && ( a = a ( b . getParentEditor ( ) ) ) ; k . call ( this , a , { disabled : a . disabled ||
! 1 } ) ; CKEDITOR . event . implementOn ( this ) ; var e = this ; b . on ( "load" , function ( ) { var a = this . getElement ( ) ; ( function ( ) { a . on ( "click" , function ( a ) { e . click ( ) ; a . data . preventDefault ( ) } ) ; a . on ( "keydown" , function ( a ) { a . data . getKeystroke ( ) in { 32 : 1 } && ( e . click ( ) , a . data . preventDefault ( ) ) } ) } ) ( ) ; a . unselectable ( ) } , this ) ; var c = CKEDITOR . tools . extend ( { } , a ) ; delete c . style ; var f = CKEDITOR . tools . getNextId ( ) + "_label" ; CKEDITOR . ui . dialog . uiElement . call ( this , b , c , d , "a" , null , { style : a . style , href : "javascript:void(0)" , title : a . label , hidefocus : "true" ,
" class": a [ "class" ] , role : "button" , "aria-labelledby" : f } , '\x3cspan id\x3d"' + f + '" class\x3d"cke_dialog_ui_button"\x3e' + CKEDITOR . tools . htmlEncode ( a . label ) + "\x3c/span\x3e" ) } } , select : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { var e= k . call ( this , a ) ; a . validate && ( this . validate = a . validate ) ; e . inputId = CKEDITOR . tools . getNextId ( ) + "_select" ; CKEDITOR . ui . dialog . labeledElement . call ( this , b , a , d , function ( ) { var c = CKEDITOR . tools . extend ( { } , a , { id : a . id ? a . id + "_select" : CKEDITOR . tools . getNextId ( ) + "_select" } , ! 0 ) , d= [ ] , h = [ ] , g = { id : e . inputId ,
"class" : "cke_dialog_ui_input_select" , "aria-labelledby" : this . _ . labelId } ; d . push ( '\x3cdiv class\x3d"cke_dialog_ui_input_' , a . type , '" role\x3d"presentation"' ) ; a . width && d . push ( 'style\x3d"width:' + a . width + '" ' ) ; d . push ( "\x3e" ) ; void 0 !== a . size && ( g . size = a . size ) ; void 0 !== a . multiple && ( g . multiple = a . multiple ) ; t ( c ) ; for ( var n= 0 , l ; n < a . items . length && ( l = a . items [ n] ) ; n ++ ) h . push ( '\x3coption value\x3d"' , CKEDITOR . tools . htmlEncode ( void 0 !== l [ 1 ] ? l [ 1 ] : l [ 0 ] ) . replace ( /"/g , "\x26quot;" ) , '" /\x3e ' , CKEDITOR . tools . htmlEncode ( l [ 0 ] ) ) ;
"undefined" != typeof c . inputStyle && ( c . style = c . inputStyle ) ; e . select = new CKEDITOR . ui . dialog . uiElement ( b , c , d, "select" , null , g , h . join ( "" ) ) ; d . push ( "\x3c/div\x3e" ) ; return d . join ( "" ) } ) } } , file : function ( b , a , d ) { if ( ! ( 3 > arguments . length ) ) { void 0 === a [ "default" ] && ( a [ "default" ] = "" ) ; var e= CKEDITOR . tools . extend ( k . call ( this , a ) , { definition : a , buttons : [ ] } ) ; a . validate && ( this . validate = a . validate ) ; b . on ( "load" , function ( ) { CKEDITOR . document . getById ( e . frameId ) . getParent ( ) . addClass ( "cke_dialog_ui_input_file" ) } ) ; CKEDITOR . ui . dialog . labeledElement . call ( this ,
b , a , d , function ( ) { e . frameId = CKEDITOR . tools . getNextId ( ) + "_fileInput" ; var b = [ '\x3ciframe frameborder\x3d"0" allowtransparency\x3d"0" class\x3d"cke_dialog_ui_input_file" role\x3d"presentation" id\x3d"' , e . frameId , '" title\x3d"' , a . label , '" src\x3d"javascript:void(' ] ; b . push ( CKEDITOR . env . ie ? "(function(){" + encodeURIComponent ( "document.open();(" + CKEDITOR . tools . fixDomain + ")();document.close();" ) + "})()" : "0" ) ; b . push ( ')"\x3e\x3c/iframe\x3e' ) ; return b . join ( "" ) } ) } } , fileButton : function ( b , a , d ) { var e = this ; if ( ! ( 3 > arguments . length ) ) { k . call ( this ,
a ) ; a . validate && ( this . validate = a . validate ) ; var c = CKEDITOR . tools . extend ( { } , a ) , f = c . onClick ; c . className = ( c . className ? c . className + " " : "" ) + "cke_dialog_ui_button" ; c . onClick = function ( c ) { var d = a [ "for" ] ; c = f? f . call ( this , c ) : ! 1 ; ! 1 !== c && ( "xhr" !== c && b . getContentElement ( d [ 0 ] , d [ 1 ] ) . submit ( ) , this . disable ( ) ) } ; b . on ( "load" , function ( ) { b . getContentElement ( a [ "for" ] [ 0 ] , a [ "for" ] [ 1 ] ) . _ . buttons . push ( e ) } ) ; CKEDITOR . ui . dialog . button . call ( this , b , c , d ) } } , html : function ( ) { var b = /^\s*<[\w:]+\s+([^>]*)?>/ , a = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/ ,
d = /\/$/ ; return function ( e, c , f ) { if ( ! ( 3 > arguments . length ) ) { var h = [ ] , g = c . html ; "\x3c" != g . charAt ( 0 ) && ( g = "\x3cspan\x3e" + g + "\x3c/span\x3e" ) ; var n= c . focus ; if ( n ) { var l = this . focus ; this . focus = function ( ) { ( "function" == typeof n? n : l ) . call ( this ) ; this . fire ( "focus" ) } ; c . isFocusable && ( this . isFocusable = this . isFocusable ) ; this . keyboardFocusable = ! 0 } CKEDITOR . ui . dialog . uiElement . call ( this , e, c , h , "span" , null , null , "" ) ; h= h . join ( "" ) . match ( b ) ; g = g . match ( a ) || [ "" , "" , "" ] ; d . test ( g [ 1 ] ) && ( g [ 1 ] = g [ 1 ] . slice ( 0 , - 1 ) , g [ 2 ] = "/" + g [ 2 ] ) ; f . push ( [ g [ 1 ] ,
" " , h [ 1 ] || "" , g [ 2 ] ] . join ( "" ) ) } } } ( ) , fieldset : function ( b , a , d , e, c ) { var f = c . label ; this . _ = { children : a } ; CKEDITOR . ui . dialog . uiElement . call ( this , b , c , e , "fieldset" , null , null , function ( ) { var a = [ ] ; f && a . push ( "\x3clegend" + ( c . labelStyle ? ' style\x3d"' + c . labelStyle + '"' : "" ) + "\x3e" + f + "\x3c/legend\x3e" ) ; for ( var b = 0 ; b < d . length ; b ++ ) a . push ( d [ b ] ) ; return a . join ( "" ) } ) } } , ! 0 ) ; CKEDITOR . ui . dialog . html . prototype = new CKEDITOR . ui . dialog . uiElement ; CKEDITOR . ui . dialog . labeledElement . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement ,
{ setLabel : function ( b ) { var a = CKEDITOR . document . getById ( this . _ . labelId ) ; 1 > a . getChildCount ( ) ? ( new CKEDITOR . dom . text ( b , CKEDITOR . document ) ) . appendTo ( a ) : a . getChild ( 0 ) . $ . nodeValue = b ; return this } , getLabel : function ( ) { var b = CKEDITOR . document . getById ( this . _ . labelId ) ; return ! b || 1 > b . getChildCount ( ) ? "" : b . getChild ( 0 ) . getText ( ) } , eventProcessors : v } , ! 0 ) ; CKEDITOR . ui . dialog . button . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement , { click : function ( ) { return this . _ . disabled ? ! 1 : this . fire ( "click" , { dialog : this . _ . dialog } ) } ,
enable : function ( ) { this . _ . disabled = ! 1 ; var b = this . getElement ( ) ; b && b . removeClass ( "cke_disabled" ) } , disable : function ( ) { this . _ . disabled = ! 0 ; this . getElement ( ) . addClass ( "cke_disabled" ) } , isVisible : function ( ) { return this . getElement ( ) . getFirst ( ) . isVisible ( ) } , isEnabled : function ( ) { return ! this . _ . disabled } , eventProcessors : CKEDITOR . tools . extend ( { } , CKEDITOR . ui . dialog . uiElement . prototype . eventProcessors , { onClick : function ( b , a ) { this . on ( "click" , function ( ) { a . apply ( this , arguments ) } ) } } , ! 0 ) , accessKeyUp : function ( ) { this . click ( ) } ,
accessKeyDown : function ( ) { this . focus ( ) } , keyboardFocusable : ! 0 } , ! 0 ) ; CKEDITOR . ui . dialog . textInput . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . labeledElement , { getInputElement : function ( ) { return CKEDITOR . document . getById ( this . _ . inputId ) } , focus : function ( ) { var b = this . selectParentTab ( ) ; setTimeout ( function ( ) { var a = b . getInputElement ( ) ; a && a . $ . focus ( ) } , 0 ) } , select : function ( ) { var b = this . selectParentTab ( ) ; setTimeout ( function ( ) { var a = b . getInputElement ( ) ; a && ( a . $ . focus ( ) , a . $ . select ( ) ) } , 0 ) } , accessKeyUp : function ( ) { this . select ( ) } ,
setValue : function ( b ) { if ( this . bidi ) { var a = b && b . charAt ( 0 ) ; ( a = " " == a ? "ltr" : " " == a ? "rtl" : null ) && ( b = b . slice ( 1 ) ) ; this . setDirectionMarker ( a ) } b || ( b = "" ) ; return CKEDITOR . ui . dialog . uiElement . prototype . setValue . apply ( this , arguments ) } , getValue : function ( ) { var b = CKEDITOR . ui . dialog . uiElement . prototype . getValue . call ( this ) ; if ( this . bidi && b ) { var a = this . getDirectionMarker ( ) ; a && ( b = ( "ltr" == a ? " " : " " ) + b ) } return b } , setDirectionMarker : function ( b ) { var a = this . getInputElement ( ) ; b ? a . setAttributes ( { dir : b , "data-cke-dir-marker" : b } ) :
this . getDirectionMarker ( ) && a . removeAttributes ( [ "dir" , "data-cke-dir-marker" ] ) } , getDirectionMarker : function ( ) { return this . getInputElement ( ) . data ( "cke-dir-marker" ) } , keyboardFocusable : ! 0 } , q , ! 0 ) ; CKEDITOR . ui . dialog . textarea . prototype = new CKEDITOR . ui . dialog . textInput ; CKEDITOR . ui . dialog . select . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . labeledElement , { getInputElement : function ( ) { return this . _ . select . getElement ( ) } , add : function ( b , a , d ) { var f = new CKEDITOR . dom . element ( "option" , this . getDialog ( ) . getParentEditor ( ) . document ) ,
c = this . getInputElement ( ) . $ ; f. $ . text = b ; f . $ . value = void 0 === a || null === a ? b : a ; void 0 === d || null === d ? CKEDITOR . env . ie ? c . add ( f. $ ) : c . add ( f . $ , null ) : c . add ( f . $ , d ) ; return this } , remove : function ( b ) { this . getInputElement ( ) . $ . remove ( b ) ; return this } , clear : function ( ) { for ( var b = this . getInputElement ( ) . $ ; 0 < b . length ; ) b . remove ( 0 ) ; return this } , keyboardFocusable : ! 0 } , q , ! 0 ) ; CKEDITOR . ui . dialog . checkbox . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement , { getInputElement : function ( ) { return this . _ . checkbox . getElement ( ) } ,
this . getDirectionMarker ( ) && a . removeAttributes ( [ "dir" , "data-cke-dir-marker" ] ) } , getDirectionMarker : function ( ) { return this . getInputElement ( ) . data ( "cke-dir-marker" ) } , keyboardFocusable : ! 0 } , q , ! 0 ) ; CKEDITOR . ui . dialog . textarea . prototype = new CKEDITOR . ui . dialog . textInput ; CKEDITOR . ui . dialog . select . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . labeledElement , { getInputElement : function ( ) { return this . _ . select . getElement ( ) } , add : function ( b , a , d ) { var e = new CKEDITOR . dom . element ( "option" , this . getDialog ( ) . getParentEditor ( ) . document ) ,
c = this . getInputElement ( ) . $ ; e. $ . text = b ; e . $ . value = void 0 === a || null === a ? b : a ; void 0 === d || null === d ? CKEDITOR . env . ie ? c . add ( e. $ ) : c . add ( e . $ , null ) : c . add ( e . $ , d ) ; return this } , remove : function ( b ) { this . getInputElement ( ) . $ . remove ( b ) ; return this } , clear : function ( ) { for ( var b = this . getInputElement ( ) . $ ; 0 < b . length ; ) b . remove ( 0 ) ; return this } , keyboardFocusable : ! 0 } , q , ! 0 ) ; CKEDITOR . ui . dialog . checkbox . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement , { getInputElement : function ( ) { return this . _ . checkbox . getElement ( ) } ,
setValue : function ( b , a ) { this . getInputElement ( ) . $ . checked = b ; ! a && this . fire ( "change" , { value : b } ) ; return this } , getValue : function ( ) { return this . getInputElement ( ) . $ . checked } , accessKeyUp : function ( ) { this . setValue ( ! this . getValue ( ) ) } , eventProcessors : { onChange : function ( b , a ) { if ( ! CKEDITOR . env . ie || 8 < CKEDITOR . env . version ) return v . onChange . apply ( this , arguments ) ; b . on ( "load" , function ( ) { var a = this . _ . checkbox . getElement ( ) ; a . on ( "propertychange" , function ( b ) { b = b . data . $ ; "checked" == b . propertyName && this . fire ( "change" , { value : a . $ . checked } ) } ,
this ) } , this ) ; this . on ( "change" , a ) ; return null } } , keyboardFocusable : ! 0 } , q , ! 0 ) ; CKEDITOR . ui . dialog . radio . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement , { setValue: function ( b , a ) { for ( var d = this . _ . children , f , c = 0 ; c < d . length && ( f = d [ c ] ) ; c ++ ) f . getElement ( ) . $ . checked = f . getValue ( ) == b ; ! a && this . fire ( "change" , { value : b } ) ; return this } , getValue : function ( ) { for ( var b = this . _ . children , a = 0 ; a < b . length ; a ++ ) if ( b [ a ] . getElement ( ) . $ . checked ) return b [ a ] . getValue ( ) ; return null } , accessKeyUp : function ( ) { var b = this . _ . children ,
a; for ( a = 0 ; a < b . length ; a ++ ) if ( b [ a ] . getElement ( ) . $ . checked ) { b [ a ] . getElement ( ) . focus ( ) ; return } b [ 0 ] . getElement ( ) . focus ( ) } , eventProcessors : { onChange : function ( b , a ) { if ( ! CKEDITOR . env . ie || 8 < CKEDITOR . env . version ) return v . onChange . apply ( this , arguments ) ; b . on ( "load" , function ( ) { for ( var a = this . _ . children , b = this , c = 0 ; c < a . length ; c ++ ) a [ c ] . getElement ( ) . on ( "propertychange" , function ( a ) { a = a . data . $ ; "checked" == a . propertyName && this . $ . checked && b . fire ( "change" , { value : this . getAttribute ( "value" ) } ) } ) } , this ) ; this . on ( "change" , a ) ;
return null } } } , q , ! 0 ) ; CKEDITOR . ui . dialog . file . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . labeledElement , q , { getInputElement : function ( ) { var b = CKEDITOR . document . getById ( this . _ . frameId ) . getFrameDocument ( ) ; return 0 < b . $ . forms . length ? new CKEDITOR . dom . element ( b . $ . forms [ 0 ] . elements [ 0 ] ) : this . getElement ( ) } , submit : function ( ) { this . getInputElement ( ) . getParent ( ) . $ . submit ( ) ; return this } , getAction : function ( ) { return this . getInputElement ( ) . getParent ( ) . $ . action } , registerEvents : function ( b ) { var a = /^on([A-Z]\w+)/ ,
d, f = function ( a , b , c , d ) { a . on ( "formLoaded" , function ( ) { a . getInputElement ( ) . on ( c , d , a ) } ) } , c ; for ( c in b ) if ( d = c . match ( a ) ) this . eventProcessors [ c ] ? this . eventProcessors [ c ] . call ( this , this . _ . dialog , b [ c ] ) : f ( this , this . _ . dialog , d [ 1 ] . toLowerCase ( ) , b [ c ] ) ; return this } , reset : function ( ) { function b ( ) { d . $ . open ( ) ; var b = "" ; f . size && ( b = f . size - ( CKEDITOR . env . ie ? 7 : 0 ) ) ; var h = a . frameId + "_input" ; d . $ . write ( [ '\x3chtml dir\x3d"' + g + '" lang\x3d"' + k + '"\x3e\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e\x3cbody style\x3d"margin: 0; overflow: hidden; background: transparent;"\x3e' ,
'\x3cform enctype\x3d"multipart/form-data" method\x3d"POST" dir\x3d"' + g + '" lang\x3d"' + k + '" action\x3d"' , CKEDITOR . tools . htmlEncode ( f . action ) , '"\x3e\x3clabel id\x3d"' , a . labelId , '" for\x3d"' , h , '" style\x3d"display:none"\x3e' , CKEDITOR . tools . htmlEncode ( f . label ) , '\x3c/label\x3e\x3cinput style\x3d"width:100%" id\x3d"' , h , '" aria-labelledby\x3d"' , a . labelId , '" type\x3d"file" name\x3d"' , CKEDITOR . tools . htmlEncode ( f . id || "cke_upload" ) , '" size\x3d"' , CKEDITOR . tools . htmlEncode ( 0 < b ? b : "" ) , '" /\x3e\x3c/form\x3e\x3c/body\x3e\x3c/html\x3e\x3cscript\x3e' ,
CKEDITOR . env . ie ? "(" + CKEDITOR . tools . fixDomain + ")();" : "" , "window.parent.CKEDITOR.tools.callFunction(" + e + ");" , "window.onbeforeunload \x3d function() {window.parent.CKEDITOR.tools.callFunction(" + m + ")}" , "\x3c/script\x3e" ] . join ( "" ) ) ; d . $ . close ( ) ; for ( b = 0 ; b < c . length ; b ++ ) c [ b ] . enable ( ) } var a = this . _ , d = CKEDITOR . document . getById ( a . frameId ) . getFrameDocument ( ) , f = a . definition , c = a . buttons , e = this . formLoadedNumber , m = this . formUnloadNumber , g = a . dialog . _ . editor . lang . dir , k = a . dialog . _ . editor . langCode ; e || ( e = this . formLoadedNumber =
CKEDITOR . tools . addFunction ( function ( ) { this . fire ( "formLoaded" ) } , this ) , m = this . formUnloadNumber = CKEDITOR . tools . addFunction ( function ( ) { this . getInputElement ( ) . clearCustomData ( ) } , this ) , this . getDialog ( ) . _ . editor . on ( "destroy" , function ( ) { CKEDITOR . tools . removeFunction ( e ) ; CKEDITOR . tools . removeFunction ( m ) } ) ) ; CKEDITOR . env . gecko ? setTimeout ( b , 500 ) : b ( ) } , getValue : function ( ) { return this . getInputElement ( ) . $ . value || "" } , setInitValue : function ( ) { this . _ . initValue = "" } , eventProcessors : { onChange : function ( b , a ) { this . _ . domOnChangeRegistered ||
( this . on ( "formLoaded" , function ( ) { this . getInputElement ( ) . on ( "change" , function ( ) { this . fire ( "change" , { value : this . getValue ( ) } ) } , this ) } , this ) , this . _ . domOnChangeRegistered = ! 0 ) ; this . on ( "change" , a ) } } , keyboardFocusable : ! 0 } , ! 0 ) ; CKEDITOR . ui . dialog . fileButton . prototype = new CKEDITOR . ui . dialog . button ; CKEDITOR . ui . dialog . fieldset . prototype = CKEDITOR . tools . clone ( CKEDITOR . ui . dialog . hbox . prototype ) ; CKEDITOR . dialog . addUIElement ( "text" , r ) ; CKEDITOR . dialog . addUIElement ( "password" , r ) ; CKEDITOR . dialog . addUIElement ( "tel" , r ) ;
CKEDITOR . dialog . addUIElement ( "textarea" , n ) ; CKEDITOR . dialog . addUIElement ( "checkbox" , n ) ; CKEDITOR . dialog . addUIElement ( "radio" , n ) ; CKEDITOR . dialog . addUIElement ( "button" , n ) ; CKEDITOR . dialog . addUIElement ( " select", n ) ; CKEDITOR . dialog . addUIElement ( " file", n ) ; CKEDITOR . dialog . addUIElement ( " fileButton", n ) ; CKEDITOR . dialog . addUIElement ( " html", n ) ; CKEDITOR . dialog . addUIElement ( " fieldset", { build : function ( b , a , d ) { for ( var f = a . children , c , e = [ ] , h = [ ] , g = 0 ; g < f . length && ( c = f [ g ] ) ; g ++ ) { var k = [ ] ; e . push ( k ) ; h . push ( CKEDITOR . dialog . _ . uiElementBuilders [ c . type ] . build ( b ,
c , k ) ) } return new CKEDITOR . ui . dialog [ a . type ] ( b , h , e , d , a ) } } ) } } ) ; CKEDITOR . DIALOG _RESIZE _NONE = 0 ; CKEDITOR . DIALOG _RESIZE _WIDTH = 1 ; CKEDITOR . DIALOG _RESIZE _HEIGHT = 2 ; CKEDITOR . DIALOG _RESIZE _BOTH = 3 ; CKEDITOR . DIALOG _STATE _IDLE = 1 ; CKEDITOR . DIALOG _STATE _BUSY = 2 ;
this ) } , this ) ; this . on ( "change" , a ) ; return null } } , keyboardFocusable : ! 0 } , q , ! 0 ) ; CKEDITOR . ui . dialog . radio . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . uiElement , { focus: function ( ) { var b = this . _ . children , a = b [ 0 ] , d = this . _ . dialog . _ , e = d . currentFocusIndex , c = e === d . focusList . length - 1 && 0 === this . focusIndex ; e > this . focusIndex && ! c && ( a = b [ b . length - 1 ] ) ; d . currentFocusIndex = this . focusIndex ; for ( d = 0 ; d < b . length ; d ++ ) if ( e = b [ d ] , e . getInputElement ( ) . $ . checked ) { a = e ; break } a . focus ( ) } , setValue : function ( b , a ) { for ( var d = this . _ . children ,
e, c = 0 ; c < d . length && ( e = d [ c ] ) ; c ++ ) e . getElement ( ) . $ . checked = e . getValue ( ) == b ; ! a && this . fire ( "change" , { value : b } ) ; return this } , getValue : function ( ) { for ( var b = this . _ . children , a = 0 ; a < b . length ; a ++ ) if ( b [ a ] . getElement ( ) . $ . checked ) return b [ a ] . getValue ( ) ; return null } , accessKeyUp : function ( ) { var b = this . _ . children , a ; for ( a = 0 ; a < b . length ; a ++ ) if ( b [ a ] . getElement ( ) . $ . checked ) { b [ a ] . getElement ( ) . focus ( ) ; return } b [ 0 ] . getElement ( ) . focus ( ) } , click : function ( ) { this . _ . dialog . _ . currentFocusIndex = this . focusIndex } , eventProcessors : { onChange : function ( b ,
a ) { if ( ! CKEDITOR . env . ie || 8 < CKEDITOR . env . version ) return v . onChange . apply ( this , arguments ) ; b . on ( "load" , function ( ) { for ( var a = this . _ . children , b = this , c = 0 ; c < a . length ; c ++ ) a [ c ] . getElement ( ) . on ( "propertychange" , function ( a ) { a = a . data . $ ; "checked" == a . propertyName && this . $ . checked && b . fire ( "change" , { value : this . getAttribute ( "value" ) } ) } ) } , this ) ; this . on ( "change" , a ) ; return null } } , keyboardFocusable : ! 0 } , q , ! 0 ) ; CKEDITOR . ui . dialog . file . prototype = CKEDITOR . tools . extend ( new CKEDITOR . ui . dialog . labeledElement , q , { getInputElement : function ( ) { var b =
CKEDITOR. document . getById ( this . _ . frameId ) . getFrameDocument ( ) ; return 0 < b . $ . forms . length ? new CKEDITOR . dom . element ( b . $ . forms [ 0 ] . elements [ 0 ] ) : this . getElement ( ) } , submit : function ( ) { this . getInputElement ( ) . getParent ( ) . $ . submit ( ) ; return this } , getAction : function ( ) { return this . getInputElement ( ) . getParent ( ) . $ . action } , registerEvents : function ( b ) { var a = /^on([A-Z]\w+)/ , d , e = function ( a , b , c , d ) { a . on ( "formLoaded" , function ( ) { a . getInputElement ( ) . on ( c , d , a ) } ) } , c ; for ( c in b ) if ( d = c . match ( a ) ) this . eventProcessors [ c ] ? this . eventProcessors [ c ] . call ( this ,
this . _ . dialog , b [ c ] ) : e ( this , this . _ . dialog , d [ 1 ] . toLowerCase ( ) , b [ c ] ) ; return this } , reset : function ( ) { function b ( ) { d . $ . open ( ) ; var b = "" ; e . size && ( b = e . size - ( CKEDITOR . env . ie ? 7 : 0 ) ) ; var k = a . frameId + "_input" ; d . $ . write ( [ '\x3chtml dir\x3d"' + g + '" lang\x3d"' + n + '"\x3e\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e\x3cbody style\x3d"margin: 0; overflow: hidden; background: transparent;"\x3e' , '\x3cform enctype\x3d"multipart/form-data" method\x3d"POST" dir\x3d"' + g + '" lang\x3d"' + n + '" action\x3d"' , CKEDITOR . tools . htmlEncode ( e . action ) ,
'"\x3e\x3clabel id\x3d"' , a . labelId , '" for\x3d"' , k , '" style\x3d"display:none"\x3e' , CKEDITOR . tools . htmlEncode ( e . label ) , '\x3c/label\x3e\x3cinput style\x3d"width:100%" id\x3d"' , k , '" aria-labelledby\x3d"' , a . labelId , '" type\x3d"file" name\x3d"' , CKEDITOR . tools . htmlEncode ( e . id || "cke_upload" ) , '" size\x3d"' , CKEDITOR . tools . htmlEncode ( 0 < b ? b : "" ) , '" /\x3e\x3c/form\x3e\x3c/body\x3e\x3c/html\x3e\x3cscript\x3e' , CKEDITOR . env . ie ? "(" + CKEDITOR . tools . fixDomain + ")();" : "" , "window.parent.CKEDITOR.tools.callFunction(" + f + ");" ,
"window.onbeforeunload \x3d function() {window.parent.CKEDITOR.tools.callFunction(" + h + ")}" , "\x3c/script\x3e" ] . join ( "" ) ) ; d . $ . close ( ) ; for ( b = 0 ; b < c . length ; b ++ ) c [ b ] . enable ( ) } var a = this . _ , d = CKEDITOR . document . getById ( a . frameId ) . getFrameDocument ( ) , e = a . definition , c = a . buttons , f = this . formLoadedNumber , h = this . formUnloadNumber , g = a . dialog . _ . editor . lang . dir , n = a . dialog . _ . editor . langCode ; f || ( f = this . formLoadedNumber = CKEDITOR . tools . addFunction ( function ( ) { this . fire ( "formLoaded" ) } , this ) , h = this . formUnloadNumber = CKEDITOR . tools . addFunction ( function ( ) { this . getInputElement ( ) . clearCustomData ( ) } ,
this ) , this . getDialog ( ) . _ . editor . on ( "destroy" , function ( ) { CKEDITOR . tools . removeFunction ( f ) ; CKEDITOR . tools . removeFunction ( h ) } ) ) ; CKEDITOR . env . gecko ? setTimeout ( b , 500 ) : b ( ) } , getValue : function ( ) { return this . getInputElement ( ) . $ . value || "" } , setInitValue : function ( ) { this . _ . initValue = "" } , eventProcessors : { onChange : function ( b , a ) { this . _ . domOnChangeRegistered || ( this . on ( "formLoaded" , function ( ) { this . getInputElement ( ) . on ( "change" , function ( ) { this . fire ( "change" , { value : this . getValue ( ) } ) } , this ) } , this ) , this . _ . domOnChangeRegistered =
! 0 ) ; this . on ( "change" , a ) } } , keyboardFocusable : ! 0 } , ! 0 ) ; CKEDITOR . ui . dialog . fileButton . prototype = new CKEDITOR . ui . dialog . button ; CKEDITOR . ui . dialog . fieldset . prototype = CKEDITOR . tools . clone ( CKEDITOR . ui . dialog . hbox . prototype ) ; CKEDITOR . dialog . addUIElement ( " text", r ) ; CKEDITOR . dialog . addUIElement ( " password", r ) ; CKEDITOR . dialog . addUIElement ( " tel", r ) ; CKEDITOR . dialog . addUIElement ( " textarea", m ) ; CKEDITOR . dialog . addUIElement ( " checkbox", m ) ; CKEDITOR . dialog . addUIElement ( "radio" , m ) ; CKEDITOR . dialog . addUIElement ( "button" , m ) ;
CKEDITOR . dialog . addUIElement ( "select" , m ) ; CKEDITOR . dialog . addUIElement ( "file" , m ) ; CKEDITOR . dialog . addUIElement ( "fileButton" , m ) ; CKEDITOR . dialog . addUIElement ( "html" , m ) ; CKEDITOR . dialog . addUIElement ( "fieldset" , { build : function ( b , a , d ) { for ( var e = a . children , c , f = [ ] , h = [ ] , g = 0 ; g < e . length && ( c = e [ g ] ) ; g ++ ) { var k = [ ] ; f . push ( k ) ; h . push ( CKEDITOR . dialog . _ . uiElementBuilders [ c . type ] . build ( b , c , k ) ) } return new CKEDITOR . ui . dialog [ a . type ] ( b , h , f , d , a ) } } ) } } ) ; CKEDITOR . DIALOG _RESIZE _NONE = 0 ; CKEDITOR . DIALOG _RESIZE _WIDTH = 1 ; CKEDITOR . DIALOG _RESIZE _HEIGHT = 2 ; CKEDITOR . DIALOG _RESIZE _BOTH = 3 ; CKEDITOR . DIALOG _STATE _IDLE = 1 ; CKEDITOR . DIALOG _STATE _BUSY = 2 ;
( function ( ) { function I ( a ) { a . _ . tabBarMode = ! 0 ; a . _ . tabs [ a . _ . currentTabId ] [ 0 ] . focus ( ) ; a . _ . currentFocusIndex = - 1 } function J ( ) { for ( var a = this . _ . tabIdList . length , b = CKEDITOR . tools . indexOf ( this . _ . tabIdList , this . _ . currentTabId ) + a , c = b - 1 ; c > b - a ; c -- ) if ( this . _ . tabs [ this . _ . tabIdList [ c % a ] ] [ 0 ] . $ . offsetHeight ) return this . _ . tabIdList [ c % a ] ; return null } function W ( ) { for ( var a = this . _ . tabIdList . length , b = CKEDITOR . tools . indexOf ( this . _ . tabIdList , this . _ . currentTabId ) , c = b + 1 ; c < b + a ; c ++ ) if ( this . _ . tabs [ this . _ . tabIdList [ c % a ] ] [ 0 ] . $ . offsetHeight ) return this . _ . tabIdList [ c %
a ] ; return null } function K ( a , b ) { for ( var c = a . $ . getElementsByTagName ( "input" ) , e = 0 , d = c . length ; e < d ; e ++ ) { var f = new CKEDITOR . dom . element ( c [ e ] ) ; "text" == f . getAttribute ( "type" ) . toLowerCase ( ) && ( b ? ( f . setAttribute ( "value" , f . getCustomData ( "fake_value" ) || "" ) , f . removeCustomData ( "fake_value" ) ) : ( f . setCustomData ( "fake_value" , f . getAttribute ( "value" ) ) , f . setAttribute ( "value" , "" ) ) ) } } function X ( a , b ) { var c = this . getInputElement ( ) ; c && ( a ? c . removeAttribute ( "aria-invalid" ) : c . setAttribute ( "aria-invalid" , ! 0 ) ) ; a || ( this . select ? this . select ( ) :
this . focus ( ) ) ; b && alert ( b ) ; this . fire ( "validated" , { valid : a , msg : b } ) } function Y ( ) { var a = this . getInputElement ( ) ; a && a . removeAttribute ( "aria-invalid" ) } function Z ( a ) { var b = CKEDITOR . dom . element . createFromHtml ( CKEDITOR . addTemplate ( "dialog" , aa ) . output ( { id : CKEDITOR . tools . getNextNumber ( ) , editorId : a . id , langDir : a . lang . dir , langCode : a . langCode , editorDialogClass : "cke_editor_" + a . name . replace ( /\./g , "\\." ) + "_dialog" , closeTitle : a . lang . common . close , hidpi : CKEDITOR . env . hidpi ? "cke_hidpi" : "" } ) ) , c = b . getChild ( [ 0 , 0 , 0 , 0 , 0 ] ) , e =
@ -653,8 +653,8 @@ c.$.style.zIndex-=Math.floor(e/2),this._.parentDialog.getElement().setStyle("z-i
( k . enable ( ) , f ++ ) ) } ! f || c && ! this . _ . editor . activeFilter . check ( c ) ? e [ 0 ] . addClass ( "cke_dialog_tab_disabled" ) : e [ 0 ] . removeClass ( "cke_dialog_tab_disabled" ) } } CKEDITOR . tools . setTimeout ( function ( ) { this . layout ( ) ; ba ( this ) ; this . parts . dialog . setStyle ( "visibility" , "" ) ; this . fireOnce ( "load" , { } ) ; CKEDITOR . ui . fire ( "ready" , this ) ; this . fire ( "show" , { } ) ; this . _ . editor . fire ( "dialogShow" , this ) ; this . _ . parentDialog || this . _ . editor . focusManager . lock ( ) ; this . foreach ( function ( a ) { a . setInitValue && a . setInitValue ( ) } ) } , 100 , this ) } , layout : function ( ) { var a =
this . parts . dialog ; if ( this . _ . moved || ! D ) { var b = this . getSize ( ) , c = CKEDITOR . document . getWindow ( ) . getViewPaneSize ( ) , e ; this . _ . moved && this . _ . position ? ( e = this . _ . position . x , b = this . _ . position . y ) : ( e = ( c . width - b . width ) / 2 , b = ( c . height - b . height ) / 2 ) ; CKEDITOR . env . ie6Compat || ( a . setStyle ( "position" , "absolute" ) , a . removeStyle ( "margin" ) ) ; e = Math . floor ( e ) ; b = Math . floor ( b ) ; this . move ( e , b ) } } , foreach : function ( a ) { for ( var b in this . _ . contents ) for ( var c in this . _ . contents [ b ] ) a . call ( this , this . _ . contents [ b ] [ c ] ) ; return this } , reset : function ( ) { var a =
function ( a ) { a . reset && a . reset ( 1 ) } ; return function ( ) { this . foreach ( a ) ; return this } } ( ) , setupContent : function ( ) { var a = arguments ; this . foreach ( function ( b ) { b . setup && b . setup . apply ( b , a ) } ) } , commitContent : function ( ) { var a = arguments ; this . foreach ( function ( b ) { CKEDITOR . env . ie && this . _ . currentFocusIndex == b . focusIndex && b . getInputElement ( ) . $ . blur ( ) ; b . commit && b . commit . apply ( b , a ) } ) } , hide : function ( ) { if ( this . parts . dialog . isVisible ( ) ) { this . fire ( "hide" , { } ) ; this . _ . editor . fire ( "dialogHide" , this ) ; this . selectPage ( this . _ . tabIdList [ 0 ] ) ;
var a = this . _ . element ; a . setStyle ( "display" , "none" ) ; this . parts . dialog . setStyle ( "visibility" , "hidden" ) ; for ( ea ( this ) ; CKEDITOR . dialog . _ . currentTop != this ; ) CKEDITOR . dialog . _ . currentTop . hide ( ) ; if ( this . _ . parentDialog ) { var b = this . _ . parentDialog . getElement ( ) . getFirst ( ) ;this . _ . parentDialog . getElement ( ) . removeStyle ( "z-index" ) ; b . setStyle ( "z-index" , parseInt ( b . $ . style . zIndex , 10 ) + Math . floor ( this . _ . editor . config . baseFloatZIndex / 2 ) ) } else Q ( this . _ . editor ) ; if ( CKEDITOR . dialog . _ . currentTop = this . _ . parentDialog ) CKEDITOR . dialog . _ . currentZIndex -=
10 ; else { CKEDITOR . dialog . _ . currentZIndex = null ; a . removeListener ( "keydown" , R ) ; a . removeListener ( "keyup" , S ) ; var c= this . _ . editor ; c . focus ( ) ; setTimeout ( function ( ) { c . focusManager . unlock ( ) ; CKEDITOR . env . iOS && c . window . focus ( ) } , 0 ) } delete this . _ . parentDialog ; this . foreach ( function ( a ) { a . resetInitValue && a . resetInitValue ( ) } ) ; this . setState ( CKEDITOR . DIALOG _STATE _IDLE ) } } , addPage : function ( a ) { if ( ! a . requiredContent || this . _ . editor . filter . check ( a . requiredContent ) ) { for ( var b = [ ] , c = a . label ? ' title\x3d"' + CKEDITOR . tools . htmlEncode ( a . label ) +
var a = this . _ . element ; a . setStyle ( "display" , "none" ) ; this . parts . dialog . setStyle ( "visibility" , "hidden" ) ; for ( ea ( this ) ; CKEDITOR . dialog . _ . currentTop != this ; ) CKEDITOR . dialog . _ . currentTop . hide ( ) ; if ( this . _ . parentDialog ) { var b = this . _ . parentDialog . getElement ( ) . getFirst ( ) ,c = parseInt ( b . $ . style . zIndex , 10 ) + Math . floor ( this . _ . editor . config . baseFloatZIndex / 2 ) ; this . _ . parentDialog . getElement ( ) . setStyle ( "z-index" , c ) ; b . setStyle ( "z-index" , c ) } else Q ( this . _ . editor ) ; if ( CKEDITOR . dialog . _ . currentTop = this . _ . parentDialog ) CKEDITOR . dialog . _ . currentZIndex -=
10 ; else { CKEDITOR . dialog . _ . currentZIndex = null ; a . removeListener ( "keydown" , R ) ; a . removeListener ( "keyup" , S ) ; var e= this . _ . editor ; e . focus ( ) ; setTimeout ( function ( ) { e . focusManager . unlock ( ) ; CKEDITOR . env . iOS && e . window . focus ( ) } , 0 ) } delete this . _ . parentDialog ; this . foreach ( function ( a ) { a . resetInitValue && a . resetInitValue ( ) } ) ; this . setState ( CKEDITOR . DIALOG _STATE _IDLE ) } } , addPage : function ( a ) { if ( ! a . requiredContent || this . _ . editor . filter . check ( a . requiredContent ) ) { for ( var b = [ ] , c = a . label ? ' title\x3d"' + CKEDITOR . tools . htmlEncode ( a . label ) +
'"' : "" , e = CKEDITOR . dialog . _ . uiElementBuilders . vbox . build ( this , { type : "vbox" , className : "cke_dialog_page_contents" , children : a . elements , expand : ! ! a . expand , padding : a . padding , style : a . style || "width: 100%;" } , b ) , d = this . _ . contents [ a . id ] = { } , f = e . getChild ( ) , g = 0 ; e = f . shift ( ) ; ) e . notAllowed || "hbox" == e . type || "vbox" == e . type || g ++ , d [ e . id ] = e , "function" == typeof e . getChild && f . push . apply ( f , e . getChild ( ) ) ; g || ( a . hidden = ! 0 ) ; b = CKEDITOR . dom . element . createFromHtml ( b . join ( "" ) ) ; b . setAttribute ( "role" , "tabpanel" ) ; b . setStyle ( "min-height" ,
"100%" ) ; e = CKEDITOR . env ; d = "cke_" + a . id + "_" + CKEDITOR . tools . getNextNumber ( ) ; c = CKEDITOR . dom . element . createFromHtml ( [ '\x3ca class\x3d"cke_dialog_tab"' , 0 < this . _ . pageCount ? " cke_last" : "cke_first" , c , a . hidden ? ' style\x3d"display:none"' : "" , ' id\x3d"' , d , '"' , e . gecko && ! e . hc ? "" : ' href\x3d"javascript:void(0)"' , ' tabIndex\x3d"-1" hidefocus\x3d"true" role\x3d"tab"\x3e' , a . label , "\x3c/a\x3e" ] . join ( "" ) ) ; b . setAttribute ( "aria-labelledby" , d ) ; this . _ . tabs [ a . id ] = [ c , b ] ; this . _ . tabIdList . push ( a . id ) ; ! a . hidden && this . _ . pageCount ++ ;
this . _ . lastTab = c ; this . updateStyle ( ) ; b . setAttribute ( "name" , a . id ) ; b . appendTo ( this . parts . contents ) ; c . unselectable ( ) ; this . parts . tabs . append ( c ) ; a . accessKey && ( T ( this , this , "CTRL+" + a . accessKey , ga , fa ) , this . _ . accessKeyMap [ "CTRL+" + a . accessKey ] = a . id ) } } , selectPage : function ( a ) { if ( this . _ . currentTabId != a && ! this . _ . tabs [ a ] [ 0 ] . hasClass ( "cke_dialog_tab_disabled" ) && ! 1 !== this . fire ( "selectPage" , { page : a , currentPage : this . _ . currentTabId } ) ) { for ( var b in this . _ . tabs ) { var c = this . _ . tabs [ b ] [ 0 ] , e = this . _ . tabs [ b ] [ 1 ] ; b != a && ( c . removeClass ( "cke_dialog_tab_selected" ) ,
@ -688,10 +688,10 @@ else break;h<a.length&&"string"==typeof a[h]&&(c=a[h],h++);h<a.length&&"number"=
a ) } , equals : function ( a , b ) { return this . functions ( function ( b ) { return b == a } , b ) } , notEqual : function ( a , b ) { return this . functions ( function ( b ) { return b != a } , b ) } } ; CKEDITOR . on ( "instanceDestroyed" , function ( a ) { if ( CKEDITOR . tools . isEmpty ( CKEDITOR . instances ) ) { for ( var b ; b = CKEDITOR . dialog . _ . currentTop ; ) b . hide ( ) ; for ( var c in B ) B [ c ] . remove ( ) ; B = { } } a = a . editor . _ . storedDialogs ; for ( var d in a ) a [ d ] . destroy ( ) } ) } ) ( ) ; CKEDITOR . tools . extend ( CKEDITOR . editor . prototype , { openDialog : function ( a , b , c ) { var e = null , d = CKEDITOR . dialog . _ . dialogDefinitions [ a ] ;
null === CKEDITOR . dialog . _ . currentTop && P ( this ) ; if ( "function" == typeof d ) d = this . _ . storedDialogs || ( this . _ . storedDialogs = { } ) , e = d [ a ] || ( d [ a ] = new CKEDITOR . dialog ( this , a ) ) , e . setModel ( c ) , b && b . call ( e , e ) , e . show ( ) ; else { if ( "failed" == d ) throw Q ( this ) , Error ( '[CKEDITOR.dialog.openDialog] Dialog "' + a + '" failed when loading definition.' ) ; "string" == typeof d && CKEDITOR . scriptLoader . load ( CKEDITOR . getUrl ( d ) , function ( ) { "function" != typeof CKEDITOR . dialog . _ . dialogDefinitions [ a ] && ( CKEDITOR . dialog . _ . dialogDefinitions [ a ] = "failed" ) ;
this . openDialog ( a , b , c ) } , this , 0 , 1 ) } CKEDITOR . skin . loadPart ( "dialog" ) ; if ( e ) e . once ( "hide" , function ( ) { e . setModel ( null ) } , null , null , 999 ) ; return e } } ) ; CKEDITOR . plugins . add ( "dialog" , { requires : "dialogui" , init : function ( a ) { V || ( CKEDITOR . document . appendStyleSheet ( this . path + "styles/dialog.css" ) , V = ! 0 ) ; a . on ( "doubleclick" , function ( b ) { b . data . dialog && a . openDialog ( b . data . dialog ) } , null , null , 999 ) } } ) } ) ( ) ; ( function ( ) { CKEDITOR . plugins . add ( "a11yhelp" , { requires : "dialog" , availableLangs : { af : 1 , ar : 1 , az : 1 , bg : 1 , ca : 1 , cs : 1 , cy : 1 , da : 1 , de : 1 , "de-ch" : 1 , el : 1 , en : 1 , "en-au" : 1 , "en-gb" : 1 , eo : 1 , es : 1 , "es-mx" : 1 , et : 1 , eu : 1 , fa : 1 , fi : 1 , fo : 1 , fr : 1 , "fr-ca" : 1 , gl : 1 , gu : 1 , he : 1 , hi : 1 , hr : 1 , hu : 1 , id : 1 , it : 1 , ja : 1 , km : 1 , ko : 1 , ku : 1 , lt : 1 , lv : 1 , mk : 1 , mn : 1 , nb : 1 , nl : 1 , no : 1 , oc : 1 , pl : 1 , pt : 1 , "pt-br" : 1 , ro : 1 , ru : 1 , si : 1 , sk : 1 , sl : 1 , sq : 1 , sr : 1 , "sr-latn" : 1 , sv : 1 , th : 1 , tr : 1 , tt : 1 , ug : 1 , uk : 1 , vi : 1 , zh : 1 , "zh-cn" : 1 } , init : function ( b ) { var c = this ; b . addCommand ( "a11yHelp" , { exec : function ( ) { var a =
b . langCode , a = c . availableLangs [ a ] ? a : c . availableLangs [ a . replace ( /-.*/ , "" ) ] ? a . replace ( /-.*/ , "" ) : "en" ; CKEDITOR . scriptLoader . load ( CKEDITOR . getUrl ( c . path + "dialogs/lang/" + a + ".js" ) , function ( ) { b . lang . a11yhelp = c . langEntries [ a ] ; b . openDialog ( "a11yHelp" ) } ) } , modes : { wysiwyg : 1 , source : 1 } , readOnly : 1 , canUndo : ! 1 } ) ; b . setKeystroke ( CKEDITOR . ALT + 48 , "a11yHelp" ) ; CKEDITOR . dialog . add ( "a11yHelp" , this . path + "dialogs/a11yhelp.js" ) ; b . on ( "ariaEditorHelpLabel" , function ( a ) { a . data . label = b . lang . common . editorHelp } ) } } ) } ) ( ) ; CKEDITOR . plugins . add ( "about" , { requires : "dialog" , init : function ( a ) { var b = a . addCommand ( "about" , new CKEDITOR . dialogCommand ( "about" ) ) ; b . modes = { wysiwyg : 1 , source : 1 } ; b . canUndo = ! 1 ; b . readOnly = 1 ; a . ui . addButton && a . ui . addButton ( "About" , { label : a . lang . about . dlgTitle , command : "about" , toolbar : "about" } ) ; CKEDITOR . dialog . add ( "about" , this . path + "dialogs/about.js" ) } } ) ; CKEDITOR . plugins . add ( "basicstyles" , { init : function ( c) { var e = 0 , d = function ( g , d , b , a ) { if ( a ) { a = new CKEDITOR . style ( a ) ; var f = h [ b ] ; f . unshift ( a ) ; c . attachStyleStateChange ( a , function ( a ) { ! c . readOnly && c . getCommand ( b ) . setState ( a ) } ) ; c . addCommand ( b , new CKEDITOR . styleCommand ( a , { contentForms : f } ) ) ; c . ui . addButton && c . ui . addButton ( g , { isToggle : ! 0 , label : d , command : b, toolbar : "basicstyles," + ( e += 10 ) } ) } } , h = { bold : [ "strong" , "b" , [ "span" , function ( a ) { a = a . styles [ "font-weight" ] ; return "bold" == a || 700 <= + a } ] ] , italic : [ "em" , "i" , [ "span" , function ( a ) { return "italic" ==
a . styles [ "font-style" ] } ] ] , underline : [ "u" , [ "span" , function ( a ) { return "underline" == a . styles [ "text-decoration" ] } ] ] , strike : [ "s" , "strike" , [ "span" , function ( a ) { return "line-through" == a . styles [ "text-decoration" ] } ] ] , subscript : [ "sub" ] , superscript : [ "sup" ] } , b= c . config , a = c . lang . basicstyles ; d ( "Bold" , a. bold , "bold" , b . coreStyles _bold ) ; d ( "Italic" , a. italic , "italic" , b . coreStyles _italic ) ; d ( "Underline" , a. underline , "underline" , b . coreStyles _underline ) ; d ( "Strike" , a. strike , "strike" , b . coreStyles _strike ) ; d ( "Subscript" , a . subscript ,
"subscript" , b . coreStyles _subscript ) ; d ( "Superscript" , a. superscript , "superscript" , b . coreStyles _superscript ) ; c . setKeystroke ( [ [ CKEDITOR . CTRL + 66 , "bold" ] , [ CKEDITOR . CTRL + 73 , "italic" ] , [ CKEDITOR . CTRL + 85 , "underline" ] ] ) } }) ; CKEDITOR . config . coreStyles _bold = { element : "strong" , overrides : "b" } ; CKEDITOR . config . coreStyles _italic = { element : "em" , overrides : "i" } ; CKEDITOR . config . coreStyles _underline = { element : "u" } ; CKEDITOR . config . coreStyles _strike = { element : "s" , overrides : "strike" } ; CKEDITOR . config . coreStyles _subscript = { element : "sub" } ;
CKEDITOR . config . coreStyles _superscript = { element : "sup" } ; ( function ( ) { function q ( a , f , e , b ) { if ( ! a . isReadOnly ( ) && ! a . equals ( e . editable ( ) ) ) { CKEDITOR . dom . element . setMarker ( b , a , "bidi_processed" , 1 ) ; b = a ; for ( var c = e . editable ( ) ; ( b = b . getParent ( ) ) && ! b . equals ( c ) ; ) if ( b . getCustomData ( "bidi_processed" ) ) { a . removeStyle ( "direction" ) ; a . removeAttribute ( "dir" ) ; return } b = e . config . useComputedState ; ( b ? a . getComputedStyle ( "direction" ) : a . getStyle ( "direction" ) || a . hasAttribute ( "dir" ) ) != f && ( a . removeStyle ( "direction" ) , b ? ( a . removeAttribute ( "dir" ) , f != a . getComputedStyle ( "direction" ) && a . setAttribute ( "dir" ,
b . langCode , a = c . availableLangs [ a ] ? a : c . availableLangs [ a . replace ( /-.*/ , "" ) ] ? a . replace ( /-.*/ , "" ) : "en" ; CKEDITOR . scriptLoader . load ( CKEDITOR . getUrl ( c . path + "dialogs/lang/" + a + ".js" ) , function ( ) { b . lang . a11yhelp = c . langEntries [ a ] ; b . openDialog ( "a11yHelp" ) } ) } , modes : { wysiwyg : 1 , source : 1 } , readOnly : 1 , canUndo : ! 1 } ) ; b . setKeystroke ( CKEDITOR . ALT + 48 , "a11yHelp" ) ; CKEDITOR . dialog . add ( "a11yHelp" , this . path + "dialogs/a11yhelp.js" ) ; b . on ( "ariaEditorHelpLabel" , function ( a ) { a . data . label = b . lang . common . editorHelp } ) } } ) } ) ( ) ; CKEDITOR . plugins . add ( "about" , { requires : "dialog" , init : function ( a ) { var b = a . addCommand ( "about" , new CKEDITOR . dialogCommand ( "about" ) ) ; b . modes = { wysiwyg : 1 , source : 1 } ; b . canUndo = ! 1 ; b . readOnly = 1 ; a . ui . addButton && a . ui . addButton ( "About" , { label : a . lang . about . dlgTitle , command : "about" , toolbar : "about" } ) ; CKEDITOR . dialog . add ( "about" , this . path + "dialogs/about.js" ) } } ) ; CKEDITOR . plugins . add ( "basicstyles" , { init : function ( a) { var f = 0 , d = function ( h , d , c , b ) { if ( b ) { b = new CKEDITOR . style ( b ) ; var g = e [ c ] ; g . unshift ( b ) ; a . attachStyleStateChange ( b , function ( b ) { ! a . readOnly && a . getCommand ( c ) . setState ( b ) } ) ; a . addCommand ( c , new CKEDITOR . styleCommand ( b , { contentForms : g } ) ) ; a . ui . addButton && a . ui . addButton ( h , { isToggle : ! 0 , label : d , command : c, toolbar : "basicstyles," + ( f += 10 ) } ) } } , e = { bold : [ "strong" , "b" , [ "span" , function ( a ) { a = a . styles [ "font-weight" ] ; return "bold" == a || 700 <= + a } ] ] , italic : [ "em" , "i" , [ "span" , function ( a ) { return "italic" ==
a . styles [ "font-style" ] } ] ] , underline : [ "u" , [ "span" , function ( a ) { return "underline" == a . styles [ "text-decoration" ] } ] ] , strike : [ "s" , "strike" , [ "span" , function ( a ) { return "line-through" == a . styles [ "text-decoration" ] } ] ] , subscript : [ "sub" ] , superscript : [ "sup" ] } , c= a . config , b = a . lang . basicstyles ; d ( "Bold" , b. bold , "bold" , c . coreStyles _bold ) ; d ( "Italic" , b. italic , "italic" , c . coreStyles _italic ) ; d ( "Underline" , b. underline , "underline" , c . coreStyles _underline ) ; d ( "Strike" , b. strike , "strike" , c . coreStyles _strike ) ; d ( "Subscript" , b . subscript ,
"subscript" , c . coreStyles _subscript ) ; d ( "Superscript" , b. superscript , "superscript" , c . coreStyles _superscript ) ; a . setKeystroke ( [ [ CKEDITOR . CTRL + 66 , "bold" ] , [ CKEDITOR . CTRL + 73 , "italic" ] , [ CKEDITOR . CTRL + 85 , "underline" ] ] ) } ,afterInit : function ( a ) { if ( a . config . coreStyles _toggleSubSup ) { var f = a . getCommand ( "subscript" ) , d = a . getCommand ( "superscript" ) ; if ( f && d ) a . on ( "afterCommandExec" , function ( e ) { e = e . data . name ; if ( "subscript" === e || "superscript" === e ) { var c = "subscript" === e ? d : f ; ( "subscript" === e ? f : d ) . state === CKEDITOR . TRISTATE _ON &&
c . state === CKEDITOR . TRISTATE _ON && ( c . exec ( a ) , a . fire ( "updateSnapshot" ) ) } } ) } } } ) ; CKEDITOR . config . coreStyles _bold = { element : "strong" , overrides : "b" } ; CKEDITOR . config . coreStyles _italic = { element : "em" , overrides : "i" } ; CKEDITOR . config . coreStyles _underline = { element : "u" } ; CKEDITOR . config . coreStyles _strike = { element : "s" , overrides : "strike" } ; CKEDITOR . config . coreStyles _subscript = { element : "sub" } ; CKEDITOR . config . coreStyles _superscript = { element : "sup" } ; CKEDITOR . config . coreStyles _toggleSubSup = ! 1 ; ( function ( ) { function q ( a , f , e , b ) { if ( ! a . isReadOnly ( ) && ! a . equals ( e . editable ( ) ) ) { CKEDITOR . dom . element . setMarker ( b , a , "bidi_processed" , 1 ) ; b = a ; for ( var c = e . editable ( ) ; ( b = b . getParent ( ) ) && ! b . equals ( c ) ; ) if ( b . getCustomData ( "bidi_processed" ) ) { a . removeStyle ( "direction" ) ; a . removeAttribute ( "dir" ) ; return } b = e . config . useComputedState ; ( b ? a . getComputedStyle ( "direction" ) : a . getStyle ( "direction" ) || a . hasAttribute ( "dir" ) ) != f && ( a . removeStyle ( "direction" ) , b ? ( a . removeAttribute ( "dir" ) , f != a . getComputedStyle ( "direction" ) && a . setAttribute ( "dir" ,
f ) ) : a . setAttribute ( "dir" , f ) , e . forceNextSelectionCheck ( ) ) } } function v ( a , f , e ) { var b = a . getCommonAncestor ( ! 1 , ! 0 ) ; a = a . clone ( ) ; a . enlarge ( e == CKEDITOR . ENTER _BR ? CKEDITOR . ENLARGE _LIST _ITEM _CONTENTS : CKEDITOR . ENLARGE _BLOCK _CONTENTS ) ; if ( a . checkBoundaryOfElement ( b , CKEDITOR . START ) && a . checkBoundaryOfElement ( b , CKEDITOR . END ) ) { for ( var c ; b && b . type == CKEDITOR . NODE _ELEMENT && ( c = b . getParent ( ) ) && 1 == c . getChildCount ( ) && ! ( b . getName ( ) in f ) ; ) b = c ; return b . type == CKEDITOR . NODE _ELEMENT && b . getName ( ) in f && b } } function p ( a ) { return { context : "p" ,
allowedContent : { "h1 h2 h3 h4 h5 h6 table ul ol blockquote div tr p div li td" : { propertiesOnly : ! 0 , attributes : "dir" } } , requiredContent : "p[dir]" , refresh : function ( a , e ) { var b = a . config . useComputedState , c ; if ( ! b ) { c = e . lastElement ; for ( var h = a . editable ( ) ; c && ! ( c . getName ( ) in u || c . equals ( h ) ) ; ) { var d = c . getParent ( ) ; if ( ! d ) break ; c = d } } c = c || e . block || e . blockLimit ; c . equals ( a . editable ( ) ) && ( h = a . getSelection ( ) . getRanges ( ) [ 0 ] . getEnclosedNode ( ) ) && h . type == CKEDITOR . NODE _ELEMENT && ( c = h ) ; c && ( b = b ? c . getComputedStyle ( "direction" ) : c . getStyle ( "direction" ) ||
c . getAttribute ( "dir" ) , a . getCommand ( "bidirtl" ) . setState ( "rtl" == b ? CKEDITOR . TRISTATE _ON : CKEDITOR . TRISTATE _OFF ) , a . getCommand ( "bidiltr" ) . setState ( "ltr" == b ? CKEDITOR . TRISTATE _ON : CKEDITOR . TRISTATE _OFF ) ) ; b = ( e . block || e . blockLimit || a . editable ( ) ) . getDirection ( 1 ) ; b != ( a . _ . selDir || a . lang . dir ) && ( a . _ . selDir = b , a . fire ( "contentDirChanged" , b ) ) } , exec : function ( f ) { var e = f . getSelection ( ) , b = f . config . enterMode , c = e . getRanges ( ) ; if ( c && c . length ) { for ( var h = { } , d = e . createBookmarks ( ) , c = c . createIterator ( ) , g , l = 0 ; g = c . getNextRange ( 1 ) ; ) { var k =
@ -715,52 +715,53 @@ e.onkey(e,a.getKeystroke())}),y=CKEDITOR.tools.addFunction(function(a){var b;e.o
m ) ) : g += "off" ; m = this . name || this . command ; var h = null , t = this . icon ; n = m ; this . icon && ! /\./ . test ( this . icon ) ? ( n = this . icon , t = null ) : ( this . icon && ( h = this . icon ) , CKEDITOR . env . hidpi && this . iconHiDpi && ( h = this . iconHiDpi ) ) ; h ? ( CKEDITOR . skin . addIcon ( h , h ) , t = null ) : h = n ; g = { id : r , name : m , iconName : n , label : this . label , cls : ( this . hasArrow ? "cke_button_expandable " : "" ) + ( this . className || "" ) , state : g , ariaDisabled : "disabled" == g ? "true" : "false" , title : this . title + ( k ? " (" + k . display + ")" : "" ) , ariaShortcutSpace : k ? "\x26nbsp;" : "" , ariaShortcut : k ? a . lang . common . keyboardShortcut +
" " + k . aria : "" , titleJs : q . gecko && ! q . hc ? "" : ( this . title || "" ) . replace ( "'" , "" ) , hasArrow : "string" === typeof this . hasArrow && this . hasArrow || ( this . hasArrow ? "true" : "false" ) , keydownFn : x , focusFn : y , clickFn : l , style : CKEDITOR . skin . getIconStyle ( h , "rtl" == a . lang . dir , t , this . iconOffset ) , arrowHtml : this . hasArrow ? v . output ( ) : "" , hasArrowAriaHtml : this . hasArrow ? ' aria-expanded\x3d"false"' : "" , toggleAriaHtml : this . isToggle ? 'aria-pressed\x3d"false"' : "" } ; w . output ( g , b ) ; if ( this . onRender ) this . onRender ( ) ; return e } , setState : function ( a ) { if ( this . _ . state ==
a ) return ! 1 ; this . _ . state = a ; var b = CKEDITOR . document . getById ( this . _ . id ) ; return b ? ( b . setState ( a , "cke_button" ) , b . setAttribute ( "aria-disabled" , a == CKEDITOR . TRISTATE _DISABLED ) , this . isToggle && ! this . hasArrow && b . setAttribute ( "aria-pressed" , a === CKEDITOR . TRISTATE _ON ) , ! 0 ) : ! 1 } , getState : function ( ) { return this . _ . state } , toFeature : function ( a ) { if ( this . _ . feature ) return this . _ . feature ; var b = this ; this . allowedContent || this . requiredContent || ! this . command || ( b = a . getCommand ( this . command ) || b ) ; return this . _ . feature = b } } ; CKEDITOR . ui . prototype . addButton =
function ( a , b ) { this . add ( a , CKEDITOR . UI _BUTTON , b ) } } ) ( ) ; ( function ( ) { CKEDITOR . plugins . add ( "codemirror" , { version : "1.18. 4 ", init : function ( b ) { function h ( ) { var a = [ "core" , "addons" ] ; switch ( c . mode ) { case "bbcode" : case "bbcodemixed" : a . push ( "modeHtml" ) ; break ; case "application/x-httpd-php" : a . push ( "modePHP" ) ; break ; case "text/javascript" : a . push ( "modeJs" ) ; break ; case "handlebars" : a . push ( "modeHandlebars" ) ; break ; case "twig" : a . push ( "modeTwig" ) ; break ; default : a . push ( "modeHtml" ) } c . useBeautifyOnStart && a . push ( "beautifyModule" ) ; c . enableSearchTools && a . push ( "addonSearch" ) ; return a }
function ( a , b ) { this . add ( a , CKEDITOR . UI _BUTTON , b ) } } ) ( ) ; ( function ( ) { CKEDITOR . plugins . add ( "codemirror" , { version : "1.18. 7 ", init : function ( b ) { function k ( ) { var a = [ "core" , "addons" ] ; switch ( c . mode ) { case "bbcode" : case "bbcodemixed" : a . push ( "modeHtml" ) ; break ; case "application/x-httpd-php" : a . push ( "modePHP" ) ; break ; case "text/javascript" : a . push ( "modeJs" ) ; break ; case "handlebars" : a . push ( "modeHandlebars" ) ; break ; case "twig" : a . push ( "modeTwig" ) ; break ; default : a . push ( "modeHtml" ) } c . useBeautifyOnStart && a . push ( "beautifyModule" ) ; c . enableSearchTools && a . push ( "addonSearch" ) ; return a }
function p ( ) { var a = [ e + "js/codemirror.addons.min.js" ] ; switch ( c . mode ) { case "handlebars" : a . push ( e + "js/codemirror.mode.handlebars.min.js" ) ; case "bbcode" : a . push ( e + "js/codemirror.mode.bbcode.min.js" ) ; break ; case "bbcodemixed" : a . push ( e + "js/codemirror.mode.bbcodemixed.min.js" ) ; break ; case "htmlmixed" : a . push ( e + "js/codemirror.mode.htmlmixed.min.js" ) ; break ; case "text/html" : a . push ( e + "js/codemirror.mode.htmlmixed.min.js" ) ; break ; case "application/x-httpd-php" : a . push ( e + "js/codemirror.mode.php.min.js" ) ; break ; case "text/javascript" : a . push ( e +
"js/codemirror.mode.javascript.min.js" ) ; break ; case "twig" : a . push ( e + "js/codemirror.mode.twig.min.js" ) ; break ; case "twig" : a . push ( e + "js/codemirror.mode.twig.min.js" ) ; break ; case "text/x-mssql" : case "text/x-mysql" : case "text/x-pgsql" : case "text/x-sql" : a . push ( e + "js/codemirror.mode.sql.min.js" ) ; break ; default : a . push ( e + "js/codemirror.mode.htmlmixed.min.js" ) } c . useBeautifyOnStart && a . push ( e + "js/beautify.min.js" ) ; c . enableSearchTools && a . push ( e + "js/codemirror.addons.search.min.js" ) ; return a } function n ( a ) { function b ( a ) { for ( var c =
[ [ CKEDITOR . SHIFT , "Shift-" ] , [ CKEDITOR . CTRL , "Ctrl-" ] , [ CKEDITOR . ALT , "Alt-" ] ] , d = "" , g= 0 ; g < c . length ; g ++ ) a & c [ g ] [ 0 ] && ( a -= c [ g] [ 0 ] , d += c [ g ] [ 1 ] ) ; return CodeMirror . keyNames [ a ] ? d + CodeMirror . keyNames [ a ] : null } var k = a . ui . space ( "contents" ) . getDocument ( ) . createElement ( "textarea" ) ; k . setStyles ( CKEDITOR . tools . extend ( { width : CKEDITOR . env . ie7Compat ? "99%" : "100%" , height : "100%" , resize : "none" , outline : "none" , "text-align" : "left" } , CKEDITOR . tools . cssVendorPrefix ( "tab-size" , a . config . sourceAreaTabSize || 4 ) ) ) ; var e = [ a . lang . editor , a . name ] . join ( ) ;
k . setAttributes ( { dir : "ltr" , tabIndex : CKEDITOR . env . webkit ? - 1 : a . tabIndex , role : "textbox" , "aria-label" : e } ) ; k. addClass ( "cke_source" ) ; k . addClass ( "cke_reset" ) ; k . addClass ( "cke_enable_context_menu" ) ; a . ui . space ( "contents" ) . append ( k ) ; window [ "editable_" + a . id ] = a . editable ( new d ( a , k ) ) ; window [ "editable_" + a . id ] . setData ( a . getData ( 1 ) ) ; window [ "editable_" + a . id ] . editorID = a . id ; a . fire ( "ariaWidget" , this ) ; k = window [ "editable_" + a . id ] ; e = k . getParent ( ) ; c . lineNumbers && c . enableCodeFolding && ( window [ "foldFunc_" + a . id ] = CodeMirror . newFoldFunction ( CodeMirror . tagRangeFinder ) ) ;
( function ( c ) { var f = a . keystrokeHandler . keystrokes , d ; for ( d in f) { var g = b ( d ) ; null !== g && "Enter" !== g && "Ctrl-B" !== g && "Ctrl-I" !== g && "Ctrl-U" !== g && "Ctrl-Y" !== g && "Ctrl-Z" !== g && "Ctrl-C" !== g && "Ctrl-V" !== g && function ( b ) { c [ g ] = function ( ) { a . execCommand ( b ) } } ( f [ d ] ) } } ) ( c . extraKeys ) ; var h= c . mode ; "handlebars" == h ? h = { name : "handlebars" , base : "text/html" } : "twig" == c . mode && ( h = { name : "twig" , base : "text/html" } ) ; window [ "codemirror_" + a . id ] = CodeMirror . fromTextArea ( k . $ , { direction : a . lang . dir , mode : h , matchBrackets : c . matchBrackets , maxHighlightLineLength : c . maxHighlightLineLength ,
[ [ CKEDITOR . SHIFT , "Shift-" ] , [ CKEDITOR . CTRL , "Ctrl-" ] , [ CKEDITOR . ALT , "Alt-" ] ] , d = "" , f= 0 ; f < c . length ; f ++ ) a & c [ f ] [ 0 ] && ( a -= c [ f] [ 0 ] , d += c [ f ] [ 1 ] ) ; return CodeMirror . keyNames [ a ] ? d + CodeMirror . keyNames [ a ] : null } var h = a . ui . space ( "contents" ) . getDocument ( ) . createElement ( "textarea" ) ; h . setStyles ( CKEDITOR . tools . extend ( { width : CKEDITOR . env . ie7Compat ? "99%" : "100%" , height : "100%" , resize : "none" , outline : "none" , "text-align" : "left" } , CKEDITOR . tools . cssVendorPrefix ( "tab-size" , a . config . sourceAreaTabSize || 4 ) ) ) ; var e = [ a . lang . editor , a . name ] . join ( ) ;
h . setAttributes ( { dir : "ltr" , tabIndex : CKEDITOR . env . webkit ? - 1 : a . tabIndex , role : "textbox" , "aria-label" : e } ) ; h. addClass ( "cke_source" ) ; h . addClass ( "cke_reset" ) ; h . addClass ( "cke_enable_context_menu" ) ; a . ui . space ( "contents" ) . append ( h ) ; window [ "editable_" + a . id ] = a . editable ( new d ( a , h ) ) ; window [ "editable_" + a . id ] . setData ( a . getData ( 1 ) ) ; window [ "editable_" + a . id ] . editorID = a . id ; a . fire ( "ariaWidget" , this ) ; h = window [ "editable_" + a . id ] ; e = h . getParent ( ) ; c . lineNumbers && c . enableCodeFolding && ( window [ "foldFunc_" + a . id ] = CodeMirror . newFoldFunction ( CodeMirror . tagRangeFinder ) ) ;
( function ( c ) { var g = a . keystrokeHandler . keystrokes , d ; for ( d in g) { var f = b ( d ) ; null !== f && "Enter" !== f && "Ctrl-B" !== f && "Ctrl-I" !== f && "Ctrl-U" !== f && "Ctrl-Y" !== f && "Ctrl-Z" !== f && "Ctrl-C" !== f && "Ctrl-V" !== f && function ( b ) { c [ f ] = function ( ) { a . execCommand ( b ) } } ( g [ d ] ) } } ) ( c . extraKeys ) ; var k= c . mode ; "handlebars" == k ? k = { name : "handlebars" , base : "text/html" } : "twig" == c . mode && ( k = { name : "twig" , base : "text/html" } ) ; window [ "codemirror_" + a . id ] = CodeMirror . fromTextArea ( h . $ , { direction : a . lang . dir , mode : k , matchBrackets : c . matchBrackets , maxHighlightLineLength : c . maxHighlightLineLength ,
matchTags : c . matchTags , workDelay : 300 , workTime : 35 , readOnly : a . readOnly , lineNumbers : c . lineNumbers , lineWrapping : ! 0 , autoCloseTags : c . autoCloseTags , autoCloseBrackets : c . autoCloseBrackets , highlightSelectionMatches : c . highlightMatches , continueComments : c . continueComments , indentWithTabs : c . indentWithTabs , theme : c . theme , showTrailingSpace : c . showTrailingSpace , showCursorWhenSelecting : ! 0 , hintOptions : c . hintOptions , styleActiveLine : c . styleActiveLine , extraKeys : c . extraKeys , foldGutter : ! 0 , gutters : [ "CodeMirror-linenumbers" , "CodeMirror-foldgutter" ] } ) ;
window [ "codemirror_" + a . id ] . display . wrapper . classList . add ( "cke_enable_context_menu" ) ; k = 0 == e . $ . clientHeight ? a . ui . space ( "contents" ) . getStyle ( "height" ) : e . $ . clientHeight + "px" ; window [ "codemirror_" + a . id ] . config = c ; c . autoFormatOnStart && ( c . useBeautifyOnStart ? ( e = window [ "codemirror_" + a . id ] . getValue ( ) , window [ "codemirror_" + a . id ] . setValue ( html _beautify ( e , 4 , " " , 120 , "collapse" ) ) ) : window [ "codemirror_" + a . id ] . autoFormatAll ( { line : 0 , ch : 0 } , { line : window [ "codemirror_" + a . id ] . lineCount ( ) , ch : 0 } ) ) ; window [ "codemirror_" + a . id ] . on ( "change" ,
function ( ) { window [ "codemirror_" + a . id ] . save ( ) ; a . fire ( "change" , this ) } ) ; window [ "codemirror_" + a . id ] . setSize ( null , k ) ; if ( c . lineNumbers && c . enableCodeFolding ) window [ "codemirror_" + a . id ] . on ( "gutterClick" , window [ "foldFunc_" + a . id ] ) ; if ( "function" === typeof c . onLoad ) c . onLoad ( window [ "codemirror_" + a . id ] , a ) ; window [ "codemirror_" + a . id ] . on ( "blur" , function ( ) { a . fire ( "blur" , this ) } ) ; window [ "codemirror_" + a . id ] . on ( "keypress" , function ( b , f ) { if ( c . enableCodeFormatting ) { var d = window [ "codemirror_" + a . id ] . getCursor ( ! 0 ) , g = window [ "codemirror_" +
a . id ] . getCursor ( ! 1 ) ; "keydown" !== f. type || ! f . ctrlKey || 75 !== f . keyCode || f . shiftKey || f . altKey ? "keydown" === f . type && f . ctrlKey && 75 === f . keyCode && f . shiftKey && ! f . altKey ? ( window [ "codemirror_" + a . id ] . commentRange ( ! 1 , d , g ) , c . autoFormatOnUncomment && window [ "codemirror_" + a . id ] . autoFormatRange ( d , g) ) : "keydown" === f . type && f . ctrlKey && 75 === f . keyCode && ! f . shiftKey && f . altKey && window [ "codemirror_" + a . id ] . autoFormatRange ( d , g ) : window [ "codemirror_" + a . id ] . commentRange ( ! 0 , d , g ) } } ) } b . addCommand ( "codemirrorAbout" , new CKEDITOR . dialogCommand ( "codemirrorAboutDialog" ) ) . modes =
window [ "codemirror_" + a . id ] . display . wrapper . classList . add ( "cke_enable_context_menu" ) ; h = 0 == e . $ . clientHeight ? a . ui . space ( "contents" ) . getStyle ( "height" ) : e . $ . clientHeight + "px" ; window [ "codemirror_" + a . id ] . config = c ; c . autoFormatOnStart && ( c . useBeautifyOnStart ? ( e = window [ "codemirror_" + a . id ] . getValue ( ) , window [ "codemirror_" + a . id ] . setValue ( html _beautify ( e , 4 , " " , 120 , "collapse" ) ) ) : window [ "codemirror_" + a . id ] . autoFormatAll ( { line : 0 , ch : 0 } , { line : window [ "codemirror_" + a . id ] . lineCount ( ) , ch : 0 } ) ) ; window [ "codemirror_" + a . id ] . on ( "change" ,
function ( ) { window [ "codemirror_" + a . id ] . save ( ) ; a . fire ( "change" , this ) } ) ; window [ "codemirror_" + a . id ] . setSize ( null , h ) ; if ( c . lineNumbers && c . enableCodeFolding ) window [ "codemirror_" + a . id ] . on ( "gutterClick" , window [ "foldFunc_" + a . id ] ) ; if ( "function" === typeof c . onLoad ) c . onLoad ( window [ "codemirror_" + a . id ] , a ) ; window [ "codemirror_" + a . id ] . on ( "blur" , function ( ) { a . fire ( "blur" , this ) } ) ; window [ "codemirror_" + a . id ] . on ( "keypress" , function ( b , g ) { if ( c . enableCodeFormatting ) { var d = window [ "codemirror_" + a . id ] . getCursor ( ! 0 ) , f = window [ "codemirror_" +
a . id ] . getCursor ( ! 1 ) ; "keydown" !== g. type || ! g . ctrlKey || 75 !== g . keyCode || g . shiftKey || g . altKey ? "keydown" === g . type && g . ctrlKey && 75 === g . keyCode && g . shiftKey && ! g . altKey ? ( window [ "codemirror_" + a . id ] . commentRange ( ! 1 , d , f ) , c . autoFormatOnUncomment && window [ "codemirror_" + a . id ] . autoFormatRange ( d , f) ) : "keydown" === g . type && g . ctrlKey && 75 === g . keyCode && ! g . shiftKey && g . altKey && window [ "codemirror_" + a . id ] . autoFormatRange ( d , f ) : window [ "codemirror_" + a . id ] . commentRange ( ! 0 , d , f ) } } ) } b . addCommand ( "codemirrorAbout" , new CKEDITOR . dialogCommand ( "codemirrorAboutDialog" ) ) . modes =
{ wysiwyg : 1 , source : 1 } ; CKEDITOR . dialog . add ( "codemirrorAboutDialog" , this . path + "dialogs/codemirrorAbout.js" ) ; var e = this . path , c = CKEDITOR . tools . extend ( { autoCloseBrackets : ! 0 , autoCloseTags : ! 0 , autoFormatOnStart : ! 1 , autoFormatOnUncomment : ! 1 , autoLoadCodeMirror : ! 0 , continueComments : ! 0 , enableCodeFolding : ! 0 , enableCodeFormatting : ! 0 , enableSearchTools : ! 0 , highlightMatches : ! 0 , indentWithTabs : ! 1 , lineNumbers : ! 0 , lineWrapping : ! 0 , mode : "htmlmixed" , matchBrackets : ! 0 , maxHighlightLineLength : 1E3 , matchTags : ! 0 , showAutoCompleteButton : ! 0 ,
showCommentButton : ! 0 , showFormatButton : ! 0 , showSearchButton : ! 0 , showTrailingSpace : ! 0 , showUncommentButton : ! 0 , styleActiveLine : ! 0 , theme : "default" , useBeautifyOnStart : ! 1 , hintOptions : null , extraKeys : { "Ctrl-Space" : "autocomplete" , "Ctrl-Q" : function ( a ) { if ( c . enableCodeFolding ) window [ "foldFunc_" + b . id ] ( a , a . getCursor ( ) . line ) } } } , b . config . codemirror || { } , ! 0 ) , m = b . lang . codemirror ; b . config . codemirror _theme && ( c . theme = b . config . codemirror _theme ) ; b . config . codemirror _autoFormatOnStart && ( c . autoFormatOnStart = b . config . codemirror _autoFormatOnStart ) ;
b . plugins . bbcode && 0 >= c . mode . indexOf ( "bbcode" ) && ( c . mode = "bbcode" ) ; var r = "function" === typeof require && "function" === typeof require . config , t ; if ( r ) { var q = c . requireContext || "_" , l = CKEDITOR . getUrl ( "plugins/codemirror/ js/") , l = l . substring ( 0 , l . length - 1 ) ; t = require . config ( { context : q , packages : [ { name : "codemirror" , location : l , main : "codemirror.min.js" } , { name : "codemirror-mode-handlebars" , location : l , main : "codemirror.mode.handlebars.min.js" } , { name : "codemirror-mode-twig" , location : l , main : "codemirror.mode.twig.min.js" } ,
b . plugins . bbcode && 0 >= c . mode . indexOf ( "bbcode" ) && ( c . mode = "bbcode" ) ; var r = "function" === typeof require && "function" === typeof require . config , t ; if ( r ) { var q = c . requireContext || "_" , l = CKEDITOR . getUrl ( CKEDITOR . plugins . getPath ( "codemirror" ) + " js/") , l = l . substring ( 0 , l . length - 1 ) ; t = require . config ( { context : q , packages : [ { name : "codemirror" , location : l , main : "codemirror.min.js" } , { name : "codemirror-mode-handlebars" , location : l , main : "codemirror.mode.handlebars.min.js" } , { name : "codemirror-mode-twig" , location : l , main : "codemirror.mode.twig.min.js" } ,
{ name : "codemirror-mode-html" , location : l , main : "codemirror.mode.htmlmixed.min.js" } , { name : "codemirror-mode-php" , location : l , main : "codemirror.mode.php.min.js" } , { name : "codemirror-mode-js" , location : l , main : "codemirror.mode.js.min.js" } , { name : "codemirror-addons" , location : l , main : "codemirror.addons.min.js" } , { name : "codemirror-addon-search" , location : l , main : "codemirror.addons.search.min.js" } , { name : "codemirror-beautify" , location : l , main : "beautify.min.js" } ] , bundles : { codemirror : [ "core" , "codemirror.js" ] , "codemirror-mode-handlebars" : [ "modeHandlebars" ] ,
"codemirror-mode-twig" : [ "modeTwig" ] , "codemirror-mode-html" : [ "modeHtml" ] , "codemirror-mode-php" : [ "modePHP" ] , "codemirror-mode-js" : [ "modeJS" ] , "codemirror-addons" : [ "addons" ] , "codemirror-addon-search" : [ "addonSearch" ] , "codemirror-beautify" : [ "beautifyModule" ] } , map : { "*" : { "lib/codemirror" : "codemirror.js" } } } ) } ( b . elementMode === CKEDITOR . ELEMENT _MODE _INLINE || b . plugins . sourcedialog ) && CKEDITOR . dialog . add ( "sourcedialog" , function ( a ) { function b ( a , d , e ) { var g= e . getSize ( ) ; e = g . width ; var g = g . height / 1.5 , k = c . mode ; "handlebars" ==
k? k = { name : "handlebars" , base : "text/html" } : "twig" == k&& ( k = { name : "twig" , base : "text/html" } ) ; window [ "codemirror_" + a . id ] = CodeMirror . fromTextArea ( d , { direction : a . lang . dir , mode : k , matchBrackets : c . matchBrackets , maxHighlightLineLength : c . maxHighlightLineLength , matchTags : c . matchTags , workDelay : 300 , workTime : 35 , readOnly : a . readOnly , lineNumbers : c . lineNumbers , lineWrapping : c . lineWrapping , autoCloseTags : c . autoCloseTags , autoCloseBrackets : c . autoCloseBrackets , highlightSelectionMatches : c . highlightMatches , continueComments : c . continueComments ,
indentWithTabs : c . indentWithTabs , theme : c . theme , showTrailingSpace : c . showTrailingSpace , showCursorWhenSelecting : ! 0 , styleActiveLine : c . styleActiveLine , hintOptions : c . hintOptions , viewportMargin : Infinity , extraKeys : c . extraKeys , foldGutter : ! 0 , gutters : [ "CodeMirror-linenumbbers" , "CodeMirror-foldgutter" ] } ) ; window [ "codemirror_" + a . id ] . display . wrapper . classList . add ( "cke_enable_context_menu" ) ; d = g + "px" ; e += "px" ; window [ "codemirror_" + a . id ] . config = c ; c . autoFormatOnStart && ( c . useBeautifyOnStart ? ( g = window [ "codemirror_" + a . id ] . getValue ( ) ,
window [ "codemirror_" + a . id ] . setValue ( html _beautify ( g , 4 , " " , 120 , "collapse" ) ) ) : window [ "codemirror_" + a . id ] . autoFormatAll ( { line : 0 , ch : 0 } , { line : window [ "codemirror_" + a . id ] . lineCount ( ) , ch : 0 } ) ) ; window [ "codemirror_" + a . id ] . on ( "change" , function ( ) { window [ "codemirror_" + a . id ] . save ( ) ; a . fire ( "change" , this ) } ) ; window [ "codemirror_" + a . id ] . setSize ( e , d ) ; if ( c . lineNumbers && c . enableCodeFolding ) window [ "codemirror_" + a . id ] . on ( "gutterClick" , window [ "foldFunc_" + a . id ] ) ; if ( "function" === typeof c . onLoad ) c . onLoad ( window [ "codemirror_" +
a . id ] , a ) ; window [ "codemirror_" + a . id ] . on ( "blur" , function ( ) { a . fire ( "blur" , this ) } ) ; window [ "codemirror_" + a . id ] . on ( "keypress" , function ( b , d ) { if ( c . enableCodeFormatting ) { var e = window [ "codemirror_" + a . id ] . getCursor ( ! 0 ) , f = window [ "codemirror_" + a . id ] . getCursor ( ! 1 ) ; "keydown" !== d . type || ! d . ctrlKey || 75 !== d . keyCode || d . shiftKey || d . altKey ? "keydown" === d . type && d . ctrlKey && 75 === d . keyCode && d . shiftKey && ! d . altKey ? ( window [ "codemirror_" + a . id ] . commentRange ( ! 1 , e , f ) , c . autoFormatOnUncomment && window [ "codemirror_" + a . id ] . autoFormatRange ( e ,
f ) ) : "keydown" === d . type && d . ctrlKey && 75 === d . keyCode && ! d . shiftKey && d . altKey && window [ "codemirror_" + a . id ] . autoFormatRange ( e , f ) : window [ "codemirror_" + a . id ] . commentRange ( ! 0 , e , f ) } } ) ; a . plugins . textselection && textRange && ! a . config . fullPage && ( d = OffSetToLineChannel ( window [ "codemirror_" + a . id ] , textRange . startOffset ) , "undefined" == typeof textRange . endOffset ? ( window [ "codemirror_" + a . id ] . focus ( ) , window [ "codemirror_" + a . id ] . setCursor ( d ) ) : ( window [ "codemirror_" + a . id ] . focus ( ) , e = OffSetToLineChannel ( window [ "codemirror_" + a . id ] ,
"codemirror-mode-twig" : [ "modeTwig" ] , "codemirror-mode-html" : [ "modeHtml" ] , "codemirror-mode-php" : [ "modePHP" ] , "codemirror-mode-js" : [ "modeJS" ] , "codemirror-addons" : [ "addons" ] , "codemirror-addon-search" : [ "addonSearch" ] , "codemirror-beautify" : [ "beautifyModule" ] } , map : { "*" : { "lib/codemirror" : "codemirror.js" } } } ) } ( b . elementMode === CKEDITOR . ELEMENT _MODE _INLINE || b . plugins . sourcedialog ) && CKEDITOR . dialog . add ( "sourcedialog" , function ( a ) { function b ( a , d , e ) { var f= e . getSize ( ) ; e = f . width ; var f = f . height / 1.5 , h = c . mode ; "handlebars" ==
h? h = { name : "handlebars" , base : "text/html" } : "twig" == h&& ( h = { name : "twig" , base : "text/html" } ) ; window [ "codemirror_" + a . id ] = CodeMirror . fromTextArea ( d , { direction : a . lang . dir , mode : h , matchBrackets : c . matchBrackets , maxHighlightLineLength : c . maxHighlightLineLength , matchTags : c . matchTags , workDelay : 300 , workTime : 35 , readOnly : a . readOnly , lineNumbers : c . lineNumbers , lineWrapping : c . lineWrapping , autoCloseTags : c . autoCloseTags , autoCloseBrackets : c . autoCloseBrackets , highlightSelectionMatches : c . highlightMatches , continueComments : c . continueComments ,
indentWithTabs : c . indentWithTabs , theme : c . theme , showTrailingSpace : c . showTrailingSpace , showCursorWhenSelecting : ! 0 , styleActiveLine : c . styleActiveLine , hintOptions : c . hintOptions , viewportMargin : Infinity , extraKeys : c . extraKeys , foldGutter : ! 0 , gutters : [ "CodeMirror-linenumbbers" , "CodeMirror-foldgutter" ] } ) ; window [ "codemirror_" + a . id ] . display . wrapper . classList . add ( "cke_enable_context_menu" ) ; d = f + "px" ; e += "px" ; window [ "codemirror_" + a . id ] . config = c ; c . autoFormatOnStart && ( c . useBeautifyOnStart ? ( f = window [ "codemirror_" + a . id ] . getValue ( ) ,
window [ "codemirror_" + a . id ] . setValue ( html _beautify ( f , 4 , " " , 120 , "collapse" ) ) ) : window [ "codemirror_" + a . id ] . autoFormatAll ( { line : 0 , ch : 0 } , { line : window [ "codemirror_" + a . id ] . lineCount ( ) , ch : 0 } ) ) ; window [ "codemirror_" + a . id ] . on ( "change" , function ( ) { window [ "codemirror_" + a . id ] . save ( ) ; a . fire ( "change" , this ) } ) ; window [ "codemirror_" + a . id ] . setSize ( e , d ) ; if ( c . lineNumbers && c . enableCodeFolding ) window [ "codemirror_" + a . id ] . on ( "gutterClick" , window [ "foldFunc_" + a . id ] ) ; if ( "function" === typeof c . onLoad ) c . onLoad ( window [ "codemirror_" +
a . id ] , a ) ; window [ "codemirror_" + a . id ] . on ( "blur" , function ( ) { a . fire ( "blur" , this ) } ) ; window [ "codemirror_" + a . id ] . on ( "keypress" , function ( b , d ) { if ( c . enableCodeFormatting ) { var e = window [ "codemirror_" + a . id ] . getCursor ( ! 0 ) , g = window [ "codemirror_" + a . id ] . getCursor ( ! 1 ) ; "keydown" !== d . type || ! d . ctrlKey || 75 !== d . keyCode || d . shiftKey || d . altKey ? "keydown" === d . type && d . ctrlKey && 75 === d . keyCode && d . shiftKey && ! d . altKey ? ( window [ "codemirror_" + a . id ] . commentRange ( ! 1 , e , g ) , c . autoFormatOnUncomment && window [ "codemirror_" + a . id ] . autoFormatRange ( e ,
g ) ) : "keydown" === d . type && d . ctrlKey && 75 === d . keyCode && ! d . shiftKey && d . altKey && window [ "codemirror_" + a . id ] . autoFormatRange ( e , g ) : window [ "codemirror_" + a . id ] . commentRange ( ! 0 , e , g ) } } ) ; a . plugins . textselection && textRange && ! a . config . fullPage && ( d = OffSetToLineChannel ( window [ "codemirror_" + a . id ] , textRange . startOffset ) , "undefined" == typeof textRange . endOffset ? ( window [ "codemirror_" + a . id ] . focus ( ) , window [ "codemirror_" + a . id ] . setCursor ( d ) ) : ( window [ "codemirror_" + a . id ] . focus ( ) , e = OffSetToLineChannel ( window [ "codemirror_" + a . id ] ,
textRange . endOffset ) , window [ "codemirror_" + a . id ] . setSelection ( d , e ) ) ) } var d = CKEDITOR . document . getWindow ( ) . getViewPaneSize ( ) , l = Math . min ( d . width - 70 , 800 ) , d = d . height / 1.5 , n ; return { title : a . lang . sourcedialog . title , minWidth : l , minHeight : d , resizable : CKEDITOR . DIALOG _RESIZE _BOTH , onLoad : function ( ) { this . on ( "resize" , function ( b ) { var c = b . sender . parts ; window [ "codemirror_" + a . id ] . setSize ( b . data . width + "px" , b . data . height - c . title . $ . offsetHeight - c . footer . $ . offsetHeight + "px" ) } , this ) } , onShow : function ( d ) { this . getContentElement ( "main" ,
"data" ) . focus ( ) ; this . getContentElement ( "main" , "AutoComplete" ) . setValue ( c . autoCloseTags , ! 0 ) ; var f = this . getContentElement ( "main" , "data" ) . getInputElement ( ) . $ ; this . setValueOf ( "main" , "data" , n = a . getData ( ) ) ; c . autoLoadCodeMirror && ( IsStyleSheetAlreadyLoaded ( e + "css/codemirror.min.css" ) || CKEDITOR . document . appendStyleSheet ( e + "css/codemirror.min.css" ) , c . theme . length && "default" != c . theme && ! IsStyleSheetAlreadyLoaded ( e + "theme/" + c . theme + ".css" ) && CKEDITOR . document . appendStyleSheet ( e + "theme/" + c . theme + ".css" ) , r ? t ( h ( ) ,
function ( c , e ) { b ( a , f , d . sender ) } ) : "undefined" == typeof CodeMirror ? CKEDITOR . scriptLoader . load ( e + "js/codemirror.min.js" , function ( ) { CKEDITOR . scriptLoader . load ( p ( ) , function ( ) { b ( a , f , d . sender ) } ) } ) : CodeMirror . prototype . autoFormatAll ? b ( a , f , d . sender ) : CKEDITOR . scriptLoader . load ( p ( ) , function ( ) { b ( a , f , d . sender ) } ) ) } , onCancel : function ( b ) { b . data . hide && ( window [ "codemirror_" + a . id ] . toTextArea ( ) , window [ "codemirror_" + a . id ] = null , a . fire ( "blur" , this ) , a . fire ( "focus" , this ) ) } , onOk : function ( ) { function b ( c ) { var d = this ; a . setData ( c ,
function ( ) { d . hide ( ) ; var b = a . createRange ( ) ; b . moveToElementEditStart ( a . editable ( ) ) ; b . select ( ) } ) } return function ( ) { window [ "codemirror_" + a . id ] . toTextArea ( ) ; window [ "codemirror_" + a . id ] = null ; var c = this . getValueOf ( "main" , "data" ) . replace ( /\r/g , "" ) ; if ( c === n ) return a . fire ( "blur" , this ) , a . fire ( "focus" , this ) , ! 0 ; CKEDITOR . env . ie ? CKEDITOR . tools . setTimeout ( b , 0 , this , c ) : b . call ( this , c ) ; a . fire ( "blur" , this ) ; a . fire ( "focus" , this ) ; return ! 1 } } ( ) , contents : [ { id : "main" , label : a . lang . sourcedialog . title , elements : [ { type : "hbox" , style : "width: 80px;margin:0;" ,
widths : [ "20px" , "20px" , "20px" , "20px" ] , children : [ { type : "button" , id : "searchCode" , label : "" , title : m . searchCode , "class" : "searchCodeButton cke_button_icon" , onClick : function ( ) { CodeMirror . commands . find ( window [ "codemirror_" + a . id ] ) } } , { type : "button" , id : "replaceCode" , label : "" , title : m . replaceCode , "class" : "replaceCodeButton" , onClick : function ( ) { CodeMirror . commands . replace ( window [ "codemirror_" + a . id ] ) } } , { type : "button" , id : "autoFormat" , label : "" , title : m . autoFormat , "class" : "autoFormat" , onClick : function ( ) { var b = window [ "codemirror_" +
a . id ] . getCursor ( ! 0 ) , c = window [ "codemirror_" + a . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + a . id ] . autoFormatRange ( b , c ) } } , { type : "button" , id : "CommentSelectedRange" , label : "" , title : m . commentSelectedRange , "class" : "CommentSelectedRange" , onClick : function ( ) { var b = window [ "codemirror_" + a . id ] . getCursor ( ! 0 ) , c = window [ "codemirror_" + a . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + a . id ] . commentRange ( ! 0 , b , c ) } } , { type : "button" , id : "UncommentSelectedRange" , label : "" , title : m . uncommentSelectedRange , "class" : "UncommentSelectedRange" , onClick : function ( ) { var b =
window [ "codemirror_" + a . id ] . getCursor ( ! 0 ) , c = window [ "codemirror_" + a . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + a . id ] . commentRange ( ! 1 , b , c ) ; window [ "codemirror_" + a . id ] . config . autoFormatOnUncomment && window [ "codemirror_" + a . id ] . autoFormatRange ( b , c ) } } , { type : "button" , id : "codemirrorAbout" , label : "" , title : m . dlgTitle , "class" : "codemirrorAbout" , onClick : function ( ) { a . execCommand ( "codemirrorAbout" ) } } ] } , { type : "checkbox" , id : "AutoComplete" , label : m . autoCompleteToggle , title : m . autoCompleteToggle , onChange : function ( ) { window [ "codemirror_" +
a . id ] . setOption ( "autoCloseTags" , this . getValue ( ) ) } } , { type : "textarea" , id : "data" , dir : "ltr" , inputStyle : "cursor:auto;width:" + l + "px;height:" + d + "px;tab-size:4;text-align:left;" , "class" : "cke_source cke_enable_context_menu" } ] } ] } } ) ; b . commands . find && ( b . commands . find . modes = { wysiwyg : 1 , source : 1 } , b . commands . find . exec = function ( ) { "wysiwyg" === b . mode ? b . openDialog ( "find" ) : CodeMirror . commands . find ( window [ "codemirror_" + b . id ] ) } ) ; b . commands . replace && ( b . commands . replace . modes = { wysiwyg : 1 , source : 1 } , b . commands . replace . exec =
function ( ) { "wysiwyg" === b . mode ? b . openDialog ( "find" , function ( ) { this . selectPage ( "replace" ) } ) : CodeMirror . commands . replace ( window [ "codemirror_" + b . id ] ) } ) ; q = CKEDITOR . plugins . sourcearea ; q . commands . searchCode || ( CKEDITOR . plugins . sourcearea . commands = { source : { modes : { wysiwyg : 1 , source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( a ) { "wysiwyg" === a . mode && a . fire ( "saveSnapshot" ) ; a . getCommand ( "source" ) . setState ( CKEDITOR . TRISTATE _DISABLED ) ; a . setMode ( "source" === a . mode ? "wysiwyg" : "source" ) } , canUndo : ! 1 } , searchCode : { modes : { wysiwyg : 0 ,
source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( a ) { CodeMirror . commands . find ( window [ "codemirror_" + a . id ] ) } , canUndo : ! 0 } , autoFormat : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( a ) { var b = window [ "codemirror_" + a . id ] . getCursor ( ! 0 ) , c = window [ "codemirror_" + a . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + a . id ] . autoFormatRange ( b , c ) } , canUndo : ! 0 } , commentSelectedRange : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( a ) { var b = window [ "codemirror_" + a . id ] . getCursor ( ! 0 ) , c = window [ "codemirror_" +
a . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + a . id ] . commentRange ( ! 0 , b , c ) } , canUndo : ! 0 } , uncommentSelectedRange : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( a ) { var b = window [ "codemirror_" + a . id ] . getCursor ( ! 0 ) , c = window [ "codemirror_" + a . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + a . id ] . commentRange ( ! 1 , b , c ) ; window [ "codemirror_" + a . id ] . config . autoFormatOnUncomment && window [ "codemirror_" + a . id ] . autoFormatRange ( b , c ) } , canUndo : ! 0 } , autoCompleteToggle : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 , readOnly : 1 ,
exec : function ( a ) { this . state == CKEDITOR . TRISTATE _ON ? window [ "codemirror_" + a . id ] . setOption ( "autoCloseTags" , ! 1 ) : this . state == CKEDITOR . TRISTATE _OFF && window [ "codemirror_" + a . id ] . setOption ( "autoCloseTags" , ! 0 ) ; this . toggleState ( ) } , canUndo : ! 0 } } ) ; b . addMode ( "source" , function ( a ) { c . autoLoadCodeMirror && ( IsStyleSheetAlreadyLoaded ( e + "css/codemirror.min.css" ) || CKEDITOR . document . appendStyleSheet ( e + "css/codemirror.min.css" ) , c . theme . length && "default" != c . theme && ! IsStyleSheetAlreadyLoaded ( e + "theme/" + c . theme + ".css" ) && CKEDITOR . document . appendStyleSheet ( e +
"theme/" + c . theme + ".css" ) , r ? t ( h ( ) , function ( ) { n ( b ) ; a ( ) } ) : "undefined" == typeof CodeMirror ? CKEDITOR . scriptLoader . load ( e + "js/codemirror.min.js" , function ( ) { CKEDITOR . scriptLoader . load ( p ( ) , function ( ) { n ( b ) ; a ( ) } ) } ) : CodeMirror . prototype . autoFormatAll ? ( n ( b ) , a ( ) ) : CKEDITOR . scriptLoader . load ( p ( ) , function ( ) { n ( b ) ; a ( ) } ) ) } ) ; b . addCommand ( "source" , q . commands . source ) ; b . ui . addButton && b . ui . addButton ( "Source" , { label : b . lang . codemirror . toolbar , command : "source" , toolbar : "mode,10" } ) ; c . enableCodeFormatting && ( b . addCommand ( "searchCode" ,
q . commands . searchCode ) , b . addCommand ( "autoFormat" , q . commands . autoFormat ) , b . addCommand ( "commentSelectedRange" , q . commands . commentSelectedRange ) , b . addCommand ( "uncommentSelectedRange" , q . commands . uncommentSelectedRange ) , b . addCommand ( "autoCompleteToggle" , q . commands . autoCompleteToggle ) , b . ui . addButton && ( ( c . showFormatButton || c . showCommentButton || c . showUncommentButton || c . showSearchButton ) && b . ui . add ( "-" , CKEDITOR . UI _SEPARATOR , { toolbar : "mode,30" } ) , c . showFormatButton && b . ui . addButton ( "autoFormat" , { icon : this . path +
"images/autoformat.svg" , label : m . autoFormat , command : "autoFormat" , toolbar : "mode,50" } ) , c . showCommentButton && b . ui . addButton ( "CommentSelectedRange" , { icon : this . path + "images/commentselectedrange.svg" , label : m . commentSelectedRange , command : "commentSelectedRange" , toolbar : "mode,60" } ) , c . showUncommentButton && b . ui . addButton ( "UncommentSelectedRange" , { icon : this . path + "images/uncommentselectedrange.svg" , label : m . uncommentSelectedRange , command : "uncommentSelectedRange" , toolbar : "mode,70" } ) , c . showAutoCompleteButton && b . ui . addButton ( "AutoComplete" ,
{ icon : this . path + "images/autocomplete.svg" , label : m . autoCompleteToggle , command : "autoCompleteToggle" , toolbar : "mode,80" } ) , b . ui . addButton ( "codemirrorAbout" , { icon : this . path + "images/codemirror.svg" , label : m . dlgTitle , command : "codemirrorAbout" , toolbar : "mode,90" } ) ) ) ; b . on ( "beforeModeUnload" , function ( a ) { if ( "source" === b . mode && b . plugins . textselection && ! b . config . fullPage ) { var c = b . getTextSelection ( ) ; c . startOffset = LineChannelToOffSet ( window [ "codemirror_" + b . id ] , window [ "codemirror_" + b . id ] . getCursor ( ! 0 ) ) ; c . endOffset =
LineChannelToOffSet ( window [ "codemirror_" + b . id ] , window [ "codemirror_" + b . id ] . getCursor ( ! 1 ) ) ; delete c . element ; c . createBookmark ( b ) ; sourceBookmark = ! 0 ; b . undoManager && b . undoManager . unlock ( ) ; a . data = c . content } } ) ; b . on ( "mode" , function ( ) { b . getCommand ( "source" ) . setState ( "source" === b . mode ? CKEDITOR . TRISTATE _ON : CKEDITOR . TRISTATE _OFF ) ; if ( "source" === b . mode && ( "autoCompleteToggle" in b . commands && b . getCommand ( "autoCompleteToggle" ) . setState ( window [ "codemirror_" + b . id ] . config . autoCloseTags ? CKEDITOR . TRISTATE _ON : CKEDITOR . TRISTATE _OFF ) ,
b . plugins . textselection && textRange && ! b . config . fullPage ) ) { var a , c ; a = OffSetToLineChannel ( window [ "codemirror_" + b . id ] , textRange . startOffset ) ; "undefined" == typeof textRange . endOffset ? ( window [ "codemirror_" + b . id ] . focus ( ) , window [ "codemirror_" + b . id ] . setCursor ( a ) ) : ( window [ "codemirror_" + b . id ] . focus ( ) , c = OffSetToLineChannel ( window [ "codemirror_" + b . id ] , textRange . endOffset ) , window [ "codemirror_" + b . id ] . setSelection ( a , c ) ) } } ) ; b . on ( "resize" , function ( ) { if ( window [ "editable_" + b . id ] && "source" === b . mode ) { var a = window [ "editable_" +
b . id ] . getParent ( ) ; window [ "codemirror_" + b . id ] . setSize ( a . $ . clientWidth + "px" , a . $ . clientHeight + "px" ) } } ) ; b . on ( "readOnly" , function ( ) { window [ "editable_" + b . id ] && "source" === b . mode && window [ "codemirror_" + b . id ] . setOption ( "readOnly" , this . readOnly ) } ) ; b . on ( "instanceReady" , function ( a ) { a = b . commands . selectAll ; null != a && ( a . exec = function ( ) { if ( "source" === b . mode ) window [ "codemirror_" + b . id ] . setSelection ( { line : 0 , ch : 0 } , { line : window [ "codemirror_" + b . id ] . lineCount ( ) , ch : 0 } ) ; else { var a = b . editable ( ) ; if ( a . is ( "body" ) ) b . document . $ . execCommand ( "SelectAll" ,
! 1 , null ) ; else { var c = b . createRange ( ) ; c . selectNodeContents ( a ) ; c . select ( ) } b . forceNextSelectionCheck ( ) ; b . selectionChange ( ) } } ) } ) ; if ( "undefined" != typeof jQuery && jQuery ( 'a[data-toggle\x3d"tab"]' ) && window [ "codemirror_" + b . id ] ) jQuery ( 'a[data-toggle\x3d"tab"]' ) . on ( "shown.bs.tab" , function ( ) { window [ "codemirror_" + b . id ] . refresh ( ) } ) ; b . on ( "setData" , function ( a ) { window [ "editable_" + a . editor . id ] && "source" === a . editor . mode && window [ "codemirror_" + a . editor . id ] . setValue ( a . data . dataValue ) } ) } } ) ; var d = CKEDITOR . tools . createClass ( { base : CKEDITOR . editable ,
proto : { setData : function ( b ) { this . setValue ( b ) ; window [ "editable_" + this . editor . id ] && "source" === this . editor . mode && window [ "codemirror_" + this . editor . id ] . setValue ( b ) ; this . editor . fire ( "dataReady" ) } , getData : function ( ) { return this . getValue ( ) } , insertHtml : function ( ) { } , insertElement : function ( ) { } , insertText : function ( ) { } , setReadOnly : function ( b ) { this [ ( b ? "set" : "remove" ) + "Attribute" ] ( "readOnly" , "readonly" ) } , editorID : null , detach : function ( ) { window [ "codemirror_" + this . editorID ] . toTextArea ( ) ; window [ "editable_" + this . editorID ] =
null ; window [ "codemirror_" + this . editorID ] = null ; d . baseProto . detach . call ( this ) ; this . clearCustomData ( ) ; this . remove ( ) } } } ) } ) ( ) ;
"data" ) . focus ( ) ; this . getContentElement ( "main" , "AutoComplete" ) . setValue ( c . autoCloseTags , ! 0 ) ; var g = this . getContentElement ( "main" , "data" ) . getInputElement ( ) . $ ; if ( a . plugins . textselection ) { a . _ . previousModeData = a . getData ( ) ; if ( a . getData ( ) ) { if ( CKEDITOR . env . gecko && ! a . focusManager . hasFocus ) return ; var h = a . getSelection ( ) , f ; h && ( f = h . getRanges ( ) [ 0 ] ) && ( wysiwygBookmark = f . createBookmark ( a ) ) } "wysiwyg" === a . mode && wysiwygBookmark && ( textRange = new CKEDITOR . dom . textRange ( a . getData ( ) ) , textRange . moveToBookmark ( wysiwygBookmark ,
a ) , a . setData ( textRange . content ) ) } this . setValueOf ( "main" , "data" , n = a . getData ( ) ) ; c . autoLoadCodeMirror && ( IsStyleSheetAlreadyLoaded ( e + "css/codemirror.min.css" ) || CKEDITOR . document . appendStyleSheet ( e + "css/codemirror.min.css" ) , c . theme . length && "default" != c . theme && ! IsStyleSheetAlreadyLoaded ( e + "theme/" + c . theme + ".css" ) && CKEDITOR . document . appendStyleSheet ( e + "theme/" + c . theme + ".css" ) , r ? t ( k ( ) , function ( c , e ) { b ( a , g , d . sender ) } ) : "undefined" == typeof CodeMirror ? CKEDITOR . scriptLoader . load ( e + "js/codemirror.min.js" , function ( ) { CKEDITOR . scriptLoader . load ( p ( ) ,
function ( ) { b ( a , g , d . sender ) } ) } ) : CodeMirror . prototype . autoFormatAll ? b ( a , g , d . sender ) : CKEDITOR . scriptLoader . load ( p ( ) , function ( ) { b ( a , g , d . sender ) } ) ) } , onCancel : function ( b ) { b . data . hide && ( window [ "codemirror_" + a . id ] . toTextArea ( ) , window [ "codemirror_" + a . id ] = null , a . fire ( "blur" , this ) , a . fire ( "focus" , this ) ) } , onOk : function ( ) { function b ( c ) { var d = this ; a . setData ( c , function ( ) { d . hide ( ) ; var b = a . createRange ( ) ; b . moveToElementEditStart ( a . editable ( ) ) ; b . select ( ) } ) } return function ( ) { window [ "codemirror_" + a . id ] . toTextArea ( ) ; window [ "codemirror_" +
a . id ] = null ; var c = this . getValueOf ( "main" , "data" ) . replace ( /\r/g , "" ) ; if ( c === n ) return a . fire ( "blur" , this ) , a . fire ( "focus" , this ) , ! 0 ; CKEDITOR . env . ie ? CKEDITOR . tools . setTimeout ( b , 0 , this , c ) : b . call ( this , c ) ; a . fire ( "blur" , this ) ; a . fire ( "focus" , this ) ; return ! 1 } } ( ) , contents : [ { id : "main" , label : a . lang . sourcedialog . title , elements : [ { type : "hbox" , style : "width: 80px;margin:0;" , widths : [ "20px" , "20px" , "20px" , "20px" ] , children : [ { type : "button" , id : "searchCode" , label : "" , title : m . searchCode , "class" : "searchCodeButton cke_button_icon" ,
onClick : function ( ) { CodeMirror . commands . find ( window [ "codemirror_" + a . id ] ) } } , { type : "button" , id : "replaceCode" , label : "" , title : m . replaceCode , "class" : "replaceCodeButton" , onClick : function ( ) { CodeMirror . commands . replace ( window [ "codemirror_" + a . id ] ) } } , { type : "button" , id : "autoFormat" , label : "" , title : m . autoFormat , "class" : "autoFormat" , onClick : function ( ) { var b = window [ "codemirror_" + a . id ] . getCursor ( ! 0 ) , c = window [ "codemirror_" + a . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + a . id ] . autoFormatRange ( b , c ) } } , { type : "button" , id : "CommentSelectedRange" ,
label : "" , title : m . commentSelectedRange , "class" : "CommentSelectedRange" , onClick : function ( ) { var b = window [ "codemirror_" + a . id ] . getCursor ( ! 0 ) , c = window [ "codemirror_" + a . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + a . id ] . commentRange ( ! 0 , b , c ) } } , { type : "button" , id : "UncommentSelectedRange" , label : "" , title : m . uncommentSelectedRange , "class" : "UncommentSelectedRange" , onClick : function ( ) { var b = window [ "codemirror_" + a . id ] . getCursor ( ! 0 ) , c = window [ "codemirror_" + a . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + a . id ] . commentRange ( ! 1 , b , c ) ;
window [ "codemirror_" + a . id ] . config . autoFormatOnUncomment && window [ "codemirror_" + a . id ] . autoFormatRange ( b , c ) } } , { type : "button" , id : "codemirrorAbout" , label : "" , title : m . dlgTitle , "class" : "codemirrorAbout" , onClick : function ( ) { a . execCommand ( "codemirrorAbout" ) } } ] } , { type : "checkbox" , id : "AutoComplete" , label : m . autoCompleteToggle , title : m . autoCompleteToggle , onChange : function ( ) { window [ "codemirror_" + a . id ] . setOption ( "autoCloseTags" , this . getValue ( ) ) } } , { type : "textarea" , id : "data" , dir : "ltr" , inputStyle : "cursor:auto;width:" +
l + "px;height:" + d + "px;tab-size:4;text-align:left;" , "class" : "cke_source cke_enable_context_menu" } ] } ] } } ) ; b . commands . find && ( b . commands . find . modes = { wysiwyg : 1 , source : 1 } , b . commands . find . exec = function ( ) { "wysiwyg" === b . mode ? b . openDialog ( "find" ) : CodeMirror . commands . find ( window [ "codemirror_" + b . id ] ) } ) ; b . commands . replace && ( b . commands . replace . modes = { wysiwyg : 1 , source : 1 } , b . commands . replace . exec = function ( ) { "wysiwyg" === b . mode ? b . openDialog ( "find" , function ( ) { this . selectPage ( "replace" ) } ) : CodeMirror . commands . replace ( window [ "codemirror_" +
b . id ] ) } ) ; q = CKEDITOR . plugins . sourcearea ; q . commands . searchCode || ( CKEDITOR . plugins . sourcearea . commands = { source : { modes : { wysiwyg : 1 , source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( a ) { "wysiwyg" === a . mode && a . fire ( "saveSnapshot" ) ; a . getCommand ( "source" ) . setState ( CKEDITOR . TRISTATE _DISABLED ) ; a . setMode ( "source" === a . mode ? "wysiwyg" : "source" ) } , canUndo : ! 1 } , searchCode : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( a ) { CodeMirror . commands . find ( window [ "codemirror_" + a . id ] ) } , canUndo : ! 0 } , autoFormat : { modes : { wysiwyg : 0 ,
source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( a ) { var b = window [ "codemirror_" + a . id ] . getCursor ( ! 0 ) , c = window [ "codemirror_" + a . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + a . id ] . autoFormatRange ( b , c ) } , canUndo : ! 0 } , commentSelectedRange : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( a ) { var b = window [ "codemirror_" + a . id ] . getCursor ( ! 0 ) , c = window [ "codemirror_" + a . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + a . id ] . commentRange ( ! 0 , b , c ) } , canUndo : ! 0 } , uncommentSelectedRange : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 ,
readOnly : 1 , exec : function ( a ) { var b = window [ "codemirror_" + a . id ] . getCursor ( ! 0 ) , c = window [ "codemirror_" + a . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + a . id ] . commentRange ( ! 1 , b , c ) ; window [ "codemirror_" + a . id ] . config . autoFormatOnUncomment && window [ "codemirror_" + a . id ] . autoFormatRange ( b , c ) } , canUndo : ! 0 } , autoCompleteToggle : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( a ) { this . state == CKEDITOR . TRISTATE _ON ? window [ "codemirror_" + a . id ] . setOption ( "autoCloseTags" , ! 1 ) : this . state == CKEDITOR . TRISTATE _OFF && window [ "codemirror_" +
a . id ] . setOption ( "autoCloseTags" , ! 0 ) ; this . toggleState ( ) } , canUndo : ! 0 } } ) ; b . addMode ( "source" , function ( a ) { c . autoLoadCodeMirror && null !== b . ui . space ( "contents" ) && ( IsStyleSheetAlreadyLoaded ( e + "css/codemirror.min.css" ) || CKEDITOR . document . appendStyleSheet ( e + "css/codemirror.min.css" ) , c . theme . length && "default" != c . theme && ! IsStyleSheetAlreadyLoaded ( e + "theme/" + c . theme + ".css" ) && CKEDITOR . document . appendStyleSheet ( e + "theme/" + c . theme + ".css" ) , r ? t ( k ( ) , function ( ) { n ( b ) ; a ( ) } ) : "undefined" == typeof CodeMirror ? CKEDITOR . scriptLoader . load ( e +
"js/codemirror.min.js" , function ( ) { CKEDITOR . scriptLoader . load ( p ( ) , function ( ) { n ( b ) ; a ( ) } ) } ) : CodeMirror . prototype . autoFormatAll ? ( n ( b ) , a ( ) ) : CKEDITOR . scriptLoader . load ( p ( ) , function ( ) { n ( b ) ; a ( ) } ) ) } ) ; b . addCommand ( "source" , q . commands . source ) ; b . ui . addButton && null != b . ui . space ( "contents" ) && b . ui . addButton ( "Source" , { label : b . lang . codemirror . toolbar , command : "source" , toolbar : "mode,10" } ) ; c . enableCodeFormatting && ( b . addCommand ( "searchCode" , q . commands . searchCode ) , b . addCommand ( "autoFormat" , q . commands . autoFormat ) , b . addCommand ( "commentSelectedRange" ,
q . commands . commentSelectedRange ) , b . addCommand ( "uncommentSelectedRange" , q . commands . uncommentSelectedRange ) , b . addCommand ( "autoCompleteToggle" , q . commands . autoCompleteToggle ) , b . ui . addButton && ( ( c . showFormatButton || c . showCommentButton || c . showUncommentButton || c . showSearchButton ) && b . ui . add ( "-" , CKEDITOR . UI _SEPARATOR , { toolbar : "mode,30" } ) , c . showFormatButton && b . ui . addButton ( "autoFormat" , { icon : this . path + "images/autoformat.svg" , label : m . autoFormat , command : "autoFormat" , toolbar : "mode,50" } ) , c . showCommentButton && b . ui . addButton ( "CommentSelectedRange" ,
{ icon : this . path + "images/commentselectedrange.svg" , label : m . commentSelectedRange , command : "commentSelectedRange" , toolbar : "mode,60" } ) , c . showUncommentButton && b . ui . addButton ( "UncommentSelectedRange" , { icon : this . path + "images/uncommentselectedrange.svg" , label : m . uncommentSelectedRange , command : "uncommentSelectedRange" , toolbar : "mode,70" } ) , c . showAutoCompleteButton && b . ui . addButton ( "AutoComplete" , { icon : this . path + "images/autocomplete.svg" , label : m . autoCompleteToggle , command : "autoCompleteToggle" , toolbar : "mode,80" } ) ,
b . ui . addButton ( "codemirrorAbout" , { icon : this . path + "images/codemirror.svg" , label : m . dlgTitle , command : "codemirrorAbout" , toolbar : "mode,90" } ) ) ) ; b . on ( "beforeModeUnload" , function ( a ) { if ( "source" === b . mode && b . plugins . textselection && ! b . config . fullPage ) { var c = b . getTextSelection ( ) ; c . startOffset = LineChannelToOffSet ( window [ "codemirror_" + b . id ] , window [ "codemirror_" + b . id ] . getCursor ( ! 0 ) ) ; c . endOffset = LineChannelToOffSet ( window [ "codemirror_" + b . id ] , window [ "codemirror_" + b . id ] . getCursor ( ! 1 ) ) ; delete c . element ; c . createBookmark ( b ) ;
sourceBookmark = ! 0 ; b . undoManager && b . undoManager . unlock ( ) ; a . data = c . content } } ) ; b . on ( "mode" , function ( ) { b . getCommand ( "source" ) . setState ( "source" === b . mode ? CKEDITOR . TRISTATE _ON : CKEDITOR . TRISTATE _OFF ) ; if ( "source" === b . mode && ( "autoCompleteToggle" in b . commands && b . getCommand ( "autoCompleteToggle" ) . setState ( window [ "codemirror_" + b . id ] . config . autoCloseTags ? CKEDITOR . TRISTATE _ON : CKEDITOR . TRISTATE _OFF ) , b . plugins . textselection && textRange && ! b . config . fullPage ) ) { var a , c ; a = OffSetToLineChannel ( window [ "codemirror_" + b . id ] ,
textRange . startOffset ) ; "undefined" == typeof textRange . endOffset ? ( window [ "codemirror_" + b . id ] . focus ( ) , window [ "codemirror_" + b . id ] . setCursor ( a ) ) : ( window [ "codemirror_" + b . id ] . focus ( ) , c = OffSetToLineChannel ( window [ "codemirror_" + b . id ] , textRange . endOffset ) , window [ "codemirror_" + b . id ] . setSelection ( a , c ) ) } } ) ; b . on ( "resize" , function ( ) { if ( window [ "editable_" + b . id ] && "source" === b . mode ) { var a = window [ "editable_" + b . id ] . getParent ( ) ; window [ "codemirror_" + b . id ] . setSize ( a . $ . clientWidth + "px" , a . $ . clientHeight + "px" ) } } ) ; b . on ( "readOnly" ,
function ( ) { window [ "editable_" + b . id ] && "source" === b . mode && window [ "codemirror_" + b . id ] . setOption ( "readOnly" , this . readOnly ) } ) ; b . on ( "instanceReady" , function ( a ) { a = b . commands . selectAll ; null != a && ( a . exec = function ( ) { if ( "source" === b . mode ) window [ "codemirror_" + b . id ] . setSelection ( { line : 0 , ch : 0 } , { line : window [ "codemirror_" + b . id ] . lineCount ( ) , ch : 0 } ) ; else { var a = b . editable ( ) ; if ( a . is ( "body" ) ) b . document . $ . execCommand ( "SelectAll" , ! 1 , null ) ; else { var c = b . createRange ( ) ; c . selectNodeContents ( a ) ; c . select ( ) } b . forceNextSelectionCheck ( ) ;
b . selectionChange ( ) } } ) } ) ; if ( "undefined" != typeof jQuery && jQuery ( 'a[data-toggle\x3d"tab"]' ) && window [ "codemirror_" + b . id ] ) jQuery ( 'a[data-toggle\x3d"tab"]' ) . on ( "shown.bs.tab" , function ( ) { window [ "codemirror_" + b . id ] . refresh ( ) } ) ; b . on ( "setData" , function ( a ) { window [ "editable_" + a . editor . id ] && "source" === a . editor . mode && window [ "codemirror_" + a . editor . id ] . setValue ( a . data . dataValue ) } ) } } ) ; var d = CKEDITOR . tools . createClass ( { base : CKEDITOR . editable , proto : { setData : function ( b ) { this . setValue ( b ) ; window [ "editable_" + this . editor . id ] &&
"source" === this . editor . mode && window [ "codemirror_" + this . editor . id ] . setValue ( b ) ; this . editor . fire ( "dataReady" ) } , getData : function ( ) { return this . getValue ( ) } , insertHtml : function ( ) { } , insertElement : function ( ) { } , insertText : function ( ) { } , setReadOnly : function ( b ) { this [ ( b ? "set" : "remove" ) + "Attribute" ] ( "readOnly" , "readonly" ) } , editorID : null , detach : function ( ) { window [ "codemirror_" + this . editorID ] . toTextArea ( ) ; window [ "editable_" + this . editorID ] = null ; window [ "codemirror_" + this . editorID ] = null ; d . baseProto . detach . call ( this ) ;
this . clearCustomData ( ) ; this . remove ( ) } } } ) } ) ( ) ;
CKEDITOR . plugins . sourcearea = { commands : { source : { modes : { wysiwyg : 1 , source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( d ) { "wysiwyg" === d . mode && d . fire ( "saveSnapshot" ) ; d . getCommand ( "source" ) . setState ( CKEDITOR . TRISTATE _DISABLED ) ; d . setMode ( "source" === d . mode ? "wysiwyg" : "source" ) } , canUndo : ! 1 } , searchCode : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( d ) { CodeMirror . commands . find ( window [ "codemirror_" + d . id ] ) } , canUndo : ! 0 } , autoFormat : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 , readOnly : 0 , exec : function ( d ) { var b =
window [ "codemirror_" + d . id ] . getCursor ( ! 0 ) , h = window [ "codemirror_" + d . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + d . id ] . autoFormatRange ( b , h ) } , canUndo : ! 0 } , commentSelectedRange : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 , readOnly : 0 , exec : function ( d ) { var b = window [ "codemirror_" + d . id ] . getCursor ( ! 0 ) , h = window [ "codemirror_" + d . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + d . id ] . commentRange ( ! 0 , b , h ) } , canUndo : ! 0 } , uncommentSelectedRange : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 , readOnly : 0 , exec : function ( d ) { var b = window [ "codemirror_" +
d . id ] . getCursor ( ! 0 ) , h = window [ "codemirror_" + d . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + d . id ] . commentRange ( ! 1 , b , h ) ; window [ "codemirror_" + d . id ] . config . autoFormatOnUncomment && window [ "codemirror_" + d . id ] . autoFormatRange ( b , h ) } , canUndo : ! 0 } , autoCompleteToggle : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( d ) { this . state == CKEDITOR . TRISTATE _ON ? window [ "codemirror_" + d . id ] . setOption ( "autoCloseTags" , ! 1 ) : this . state == CKEDITOR . TRISTATE _OFF && window [ "codemirror_" + d . id ] . setOption ( "autoCloseTags" , ! 0 ) ;
this . toggleState ( ) } , canUndo : ! 0 } } } ; function LineChannelToOffSet ( d , b ) { var h= b . line , p = h + b . ch ; for ( i = 0 ; i < h ; i ++ ) p += d . getLine ( i ) . length ; return p } function OffSetToLineChannel ( d , b ) { var h = 0 , p = 0 , n = 0 ; for ( i = 0 ; i < d . lineCount ( ) ; i ++ ) { len = d . getLine ( i ) . length ; if ( b < n + len ) { h = i ; p = b - n ; break } len ++ ; n += len } return { line : h , ch : p } } function IsStyleSheetAlreadyLoaded ( d ) { return null != CKEDITOR . document . getHead ( ) . findOne ( 'link[href\x3d"' + d + '"]' ) } ; CKEDITOR . plugins . add ( "panelbutton" , { requires : "button" , onLoad : function ( ) { function e ( c ) { var b = this . _ ; b . state != CKEDITOR . TRISTATE _DISABLED && ( this . createPanel ( c ) , b . on ? b . panel . hide ( ) : b . panel . showBlock ( this . _ . id , this . document . getById ( this . _ . id ) , 4 ) ) } CKEDITOR . ui . panelButton = CKEDITOR . tools . createClass ( { base : CKEDITOR . ui . button , $ : function ( c ) { var b = c . panel || { } ; delete c . panel ; this . base ( c ) ; this . document = b . parent && b . parent . getDocument ( ) || CKEDITOR . document ; b . block = { attributes : b . attributes } ; b . toolbarRelated = ! 0 ; this . hasArrow =
window [ "codemirror_" + d . id ] . getCursor ( ! 0 ) , k = window [ "codemirror_" + d . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + d . id ] . autoFormatRange ( b , k ) } , canUndo : ! 0 } , commentSelectedRange : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 , readOnly : 0 , exec : function ( d ) { var b = window [ "codemirror_" + d . id ] . getCursor ( ! 0 ) , k = window [ "codemirror_" + d . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + d . id ] . commentRange ( ! 0 , b , k ) } , canUndo : ! 0 } , uncommentSelectedRange : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 , readOnly : 0 , exec : function ( d ) { var b = window [ "codemirror_" +
d . id ] . getCursor ( ! 0 ) , k = window [ "codemirror_" + d . id ] . getCursor ( ! 1 ) ; window [ "codemirror_" + d . id ] . commentRange ( ! 1 , b , k ) ; window [ "codemirror_" + d . id ] . config . autoFormatOnUncomment && window [ "codemirror_" + d . id ] . autoFormatRange ( b , k ) } , canUndo : ! 0 } , autoCompleteToggle : { modes : { wysiwyg : 0 , source : 1 } , editorFocus : ! 1 , readOnly : 1 , exec : function ( d ) { this . state == CKEDITOR . TRISTATE _ON ? window [ "codemirror_" + d . id ] . setOption ( "autoCloseTags" , ! 1 ) : this . state == CKEDITOR . TRISTATE _OFF && window [ "codemirror_" + d . id ] . setOption ( "autoCloseTags" , ! 0 ) ;
this . toggleState ( ) } , canUndo : ! 0 } } } ; function LineChannelToOffSet ( d , b ) { var k= b . line , p = k + b . ch ; for ( i = 0 ; i < k ; i ++ ) p += d . getLine ( i ) . length ; return p } function OffSetToLineChannel ( d , b ) { var k = 0 , p = 0 , n = 0 ; for ( i = 0 ; i < d . lineCount ( ) ; i ++ ) { len = d . getLine ( i ) . length ; if ( b < n + len ) { k = i ; p = b - n ; break } len ++ ; n += len } return { line : k , ch : p } } function IsStyleSheetAlreadyLoaded ( d ) { return null != CKEDITOR . document . getHead ( ) . findOne ( 'link[href\x3d"' + d + '"]' ) } ; CKEDITOR . plugins . add ( "panelbutton" , { requires : "button" , onLoad : function ( ) { function e ( c ) { var b = this . _ ; b . state != CKEDITOR . TRISTATE _DISABLED && ( this . createPanel ( c ) , b . on ? b . panel . hide ( ) : b . panel . showBlock ( this . _ . id , this . document . getById ( this . _ . id ) , 4 ) ) } CKEDITOR . ui . panelButton = CKEDITOR . tools . createClass ( { base : CKEDITOR . ui . button , $ : function ( c ) { var b = c . panel || { } ; delete c . panel ; this . base ( c ) ; this . document = b . parent && b . parent . getDocument ( ) || CKEDITOR . document ; b . block = { attributes : b . attributes } ; b . toolbarRelated = ! 0 ; this . hasArrow =
"listbox" ; this . click = e ; this . _ = { panelDefinition : b } } , statics : { handler : { create : function ( c ) { return new CKEDITOR . ui . panelButton ( c ) } } } , proto : { createPanel : function ( c ) { var b = this . _ ; if ( ! b . panel ) { var f = this . _ . panelDefinition , e = this . _ . panelDefinition . block , k = f . parent || CKEDITOR . document . getBody ( ) , h = CKEDITOR . document . getById ( this . _ . id ) , d = this . _ . panel = new CKEDITOR . ui . floatPanel ( c , k , f ) , f = d . addBlock ( b . id , e ) , a = this , g = c . getCommand ( this . command ) ; d . onShow = function ( ) { a . className && this . element . addClass ( a . className + "_panel" ) ;
a . setState ( CKEDITOR . TRISTATE _ON ) ; h . setAttribute ( "aria-expanded" , "true" ) ; b . on = 1 ; a . editorFocus && c . focus ( ) ; if ( a . onOpen ) a . onOpen ( ) } ; d . onHide = function ( d ) { a . className && this . element . getFirst ( ) . removeClass ( a . className + "_panel" ) ; ! a . modes && g ? a . setStateFromCommand ( g ) : a . setState ( a . modes && a . modes [ c . mode ] ? CKEDITOR . TRISTATE _OFF : CKEDITOR . TRISTATE _DISABLED ) ; b . on = 0 ; h . setAttribute ( "aria-expanded" , "false" ) ; if ( ! d && a . onClose ) a . onClose ( ) } ; d . onEscape = function ( ) { d . hide ( 1 ) ; a . document . getById ( b . id ) . focus ( ) } ; if ( this . onBlock ) this . onBlock ( d ,
f ) ; f . onHide = function ( ) { b . on = 0 ; ! a . modes && a . command ? a . setStateFromCommand ( g ) : a . setState ( CKEDITOR . TRISTATE _OFF ) } } } , setStateFromCommand : function ( c ) { this . setState ( c . state ) } } } ) } , beforeInit : function ( e ) { e . ui . addHandler ( CKEDITOR . UI _PANELBUTTON , CKEDITOR . ui . panelButton . handler ) } } ) ; CKEDITOR . UI _PANELBUTTON = "panelbutton" ; ( function ( ) { CKEDITOR . plugins . add ( "panel" , { beforeInit : function ( a ) { a . ui . addHandler ( CKEDITOR . UI _PANEL , CKEDITOR . ui . panel . handler ) } } ) ; CKEDITOR . UI _PANEL = "panel" ; CKEDITOR . ui . panel = function ( a , b ) { b && CKEDITOR . tools . extend ( this , b ) ; CKEDITOR . tools . extend ( this , { className : "" , css : [ ] } ) ; this . id = CKEDITOR . tools . getNextId ( ) ; this . document = a ; this . isFramed = this . forceIFrame || this . css . length ; this . _ = { blocks : { } } } ; CKEDITOR . ui . panel . handler = { create : function ( a ) { return new CKEDITOR . ui . panel ( a ) } } ; var g = CKEDITOR . addTemplate ( "panel" ,
@ -787,17 +788,17 @@ l.markFirstDisplayed():l._.markFirstDisplayed()},0):l.markFirstDisplayed?l.markF
this . _ . iframe . getFrameDocument ( ) . getWindow ( ) ) . focus ( ) } , blur : function ( ) { var a = this . _ . iframe . getFrameDocument ( ) . getActive ( ) ; a && a . is ( "a" ) && ( this . _ . lastFocused = a ) } , hide : function ( a ) { if ( this . visible && ( ! this . onHide || ! 0 !== this . onHide . call ( this ) ) ) { this . hideChild ( ) ; CKEDITOR . env . gecko && this . _ . iframe . getFrameDocument ( ) . $ . activeElement . blur ( ) ; this . element . setStyle ( "display" , "none" ) ; this . visible = 0 ; this . element . getFirst ( ) . removeCustomData ( "activePanel" ) ; if ( a = a && this . _ . returnFocus ) CKEDITOR . env . webkit && a . type && a . getWindow ( ) . $ . focus ( ) ,
a . focus ( ) ; delete this . _ . lastFocused ; this . _ . showBlockParams = null ; this . _ . editor . fire ( "panelHide" , this ) } } , allowBlur : function ( a ) { var b = this . _ . panel ; void 0 !== a && ( b . allowBlur = a ) ; return b . allowBlur } , showAsChild : function ( a , b , c , f , h , g ) { if ( this . _ . activeChild != a || a . _ . panel . _ . offsetParentId != c . getId ( ) ) this . hideChild ( ) , a . onHide = CKEDITOR . tools . bind ( function ( ) { CKEDITOR . tools . setTimeout ( function ( ) { this . _ . focused || this . hide ( ) } , 0 , this ) } , this ) , this . _ . activeChild = a , this . _ . focused = ! 1 , a . showBlock ( b , c , f , h , g ) , this . blur ( ) ,
( CKEDITOR . env . ie7Compat || CKEDITOR . env . ie6Compat ) && setTimeout ( function ( ) { a . element . getChild ( 0 ) . $ . style . cssText += "" } , 100 ) } , hideChild : function ( a ) { var b = this . _ . activeChild ; b && ( delete b . onHide , delete this . _ . activeChild , b . hide ( ) , a && this . focus ( ) ) } } } ) ; CKEDITOR . on ( "instanceDestroyed" , function ( ) { var a = CKEDITOR . tools . isEmpty ( CKEDITOR . instances ) , b ; for ( b in f ) { var c = f [ b ] ; a ? c . destroy ( ) : c . element . hide ( ) } a && ( f = { } ) } ) } ) ( ) ; ( function ( ) { var n , k , l ; CKEDITOR . plugins . add ( "colorbutton" , { requires : "panelbutton,floatpanel" , init : function ( a ) { function b ( d ) { function b ( ) { var d = a . config [ "colorButton_" + h + "Style" ] ; d . childRule = "back" == h ? function ( a ) { return f ( a ) } : function ( a ) { return ! ( a . is ( "a" ) || a . getElementsByTag ( "a" ) . count ( ) ) || f ( a ) } ; return d } function z ( d , w , e ) { var c = { } ; d && ( c . color = d ) ; w && ( c . colorName = w ) ; w = ! CKEDITOR . tools . isEmpty ( c ) && new CKEDITOR . style ( b ( ) , c ) ; a . execCommand ( m , { newStyle : w } ) ; if ( d && e ) for ( e . addColor ( d . substr ( 1 ) . toUpperCase ( ) ) ,
d = t . element . find ( "[role\x3doption]" ) . toArray ( ) , e = 0 ; e < d . length ; e ++ ) d [ e ] . setAttributes ( { "aria-posinset" : e + 1 , "aria-setsize" : d . length } ) } var g = d . name , h = d . type , k = d . title , C = d . order , m = d . commandName ; d = d . contentTransformations || { } ; var A = new CKEDITOR . style ( r [ "colorButton_" + h + "Style" ] ) , q = CKEDITOR . tools . getNextId ( ) + "_colorBox" , x = { type : h } , y = new CKEDITOR . style ( r [ "colorButton_" + h + "Style" ] , { color : "inherit" } ) , B = function ( ) { return CKEDITOR . tools . addFunction ( function ( d , b , e ) { a . focus ( ) ; a . fire ( "saveSnapshot" ) ; "?" == d ? a . getColorFromDialog ( function ( a ) { a &&
d = t . element . find ( "[role\x3doption]" ) . toArray ( ) , e = 0 ; e < d . length ; e ++ ) d [ e ] . setAttributes ( { "aria-posinset" : e + 1 , "aria-setsize" : d . length } ) } var g = d . name , h = d . type , k = d . title , C = d . order , m = d . commandName ; d = d . contentTransformations || { } ; var A = new CKEDITOR . style ( q [ "colorButton_" + h + "Style" ] ) , r = CKEDITOR . tools . getNextId ( ) + "_colorBox" , x = { type : h } , y = new CKEDITOR . style ( q [ "colorButton_" + h + "Style" ] , { color : "inherit" } ) , B = function ( ) { return CKEDITOR . tools . addFunction ( function ( d , b , e ) { a . focus ( ) ; a . fire ( "saveSnapshot" ) ; "?" == d ? a . getColorFromDialog ( function ( a ) { a &&
z ( a , b , u ) } , null , x ) : z ( d && "#" + d , b , u ) ; e && ( e . setAttribute ( "cke_colorlast" , ! 0 ) , a . once ( "selectionChange" , function ( ) { e . removeAttribute ( "cke_colorlast" ) } ) ) } ) } ( ) , u = l . getRowLimit ( a ) ? new l ( a , "back" == h ? "background-color" : "color" , B ) : void 0 , t ; a . addCommand ( m , { contextSensitive : ! 0 , exec : function ( a , d ) { if ( ! a . readOnly ) { var b = d . newStyle ; a . removeStyle ( y ) ; a . focus ( ) ; b && a . applyStyle ( b ) ; a . fire ( "saveSnapshot" ) } } , refresh : function ( a , d ) { y . checkApplicable ( d , a , a . activeFilter ) ? y . checkActive ( d , a ) ? this . setState ( CKEDITOR . TRISTATE _ON ) :
this . setState ( CKEDITOR . TRISTATE _OFF ) : this . setState ( CKEDITOR . TRISTATE _DISABLED ) } } ) ; a . ui . add ( g , CKEDITOR . UI _PANELBUTTON , { label : k , title : k , command : m , editorFocus : 0 , toolbar : "colors," + C , allowedContent : A , requiredContent : A , contentTransformations : d , panel : { css : CKEDITOR . skin . getPath ( "editor" ) ,attributes : { role : "listbox" , "aria-label" : p . panelTitle } } , select : function ( a ) { var d = r . colorButton _colors . split ( "," ) ; a = CKEDITOR . tools . array . find ( d , a ) ; a = n . normalizeColor ( a ) ; v ( t , a ) ; t . _ . markFirstDisplayed ( ) } , onBlock : function ( d , b ) { t =
b ; b . autoSize = ! 0 ; b . element . addClass ( "cke_colorblock" ) ; b . element . setHtml ( c ( q , B , u ? u . getLength ( ) : 0 ) ) ; b . element . getDocument ( ) . getBody ( ) . setStyle ( "overflow" , "hidden" ) ; b . element . getAscendant ( { html : 1 } ) . setStyle ( "overflow" , "hidden" ) ; CKEDITOR . ui . fire ( "ready" , this ) ; var e = b . keys , h = "rtl" == a . lang . dir ; e [ h ? 37 : 39 ] = "next" ; e [ 40 ] = "next" ; e [ 9 ] = "next" ; e [ h ? 39 : 37 ] = "prev" ; e [ 38 ] = "prev" ; e [ CKEDITOR . SHIFT + 9 ] = "prev" ; e [ 32 ] = "click" ; u && u . setContainer ( b . element . findOne ( ".cke_colorhistory" ) ) } , onOpen : function ( ) { var d = a . getSelection ( ) ,
b = d && d . getStartElement ( ) , e = a . elementPath ( b ) , c = "back" == h ? "background-color" : "color" ; if ( e ) { b = e . block || e . blockLimit || a . document . getBody ( ) ; do e = b && b . getComputedStyle ( c ) || "transparent" ; while ( "back" == h && "transparent" == e && b && ( b = b . getParent ( ) ) ) ; e && "transparent" != e || ( e = "#ffffff" ) ; r . colorButton _enableAutomatic && t . element . findOne ( "#" + q ) . setStyle ( "background-color" , e ) ; if ( b = d && d . getRanges ( ) [ 0 ] ) { for ( var d = new CKEDITOR . dom . walker ( b ) , g = b . collapsed ? b . startContainer : d . next ( ) , b = "" ; g ; ) { g . type !== CKEDITOR . NODE _ELEMENT &&
( g = g . getParent ( ) ) ; g = n . normalizeColor ( g . getComputedStyle ( c ) ) ; b = b || g ; if ( b !== g ) { b = "" ; break } g = d . next ( ) } "transparent" == b && ( b = "" ) ; "fore" == h && ( x . automaticTextColor = "#" + n . normalizeColor ( e ) ) ; x . selectionColor = b ? "#" + b : "" ; v ( t , b ) } return e } } } ) } function c ( b , c , f ) { var g = [ ] , h = r . colorButton _colors . split ( "," ) , k = a . plugins . colordialog && r . colorButton _enableMore ; f = h . length + f + ( k ? 1 : 0 ) ; var v = 1 ; r . colorButton _enableAutomatic && ( f += 1 , v += 1 , g . push ( '\x3ca class\x3d"cke_colorauto" _cke_focus\x3d1 hidefocus\x3dtrue' , ' title\x3d"' , p . auto ,
this . setState ( CKEDITOR . TRISTATE _OFF ) : this . setState ( CKEDITOR . TRISTATE _DISABLED ) } } ) ; a . ui . add ( g , CKEDITOR . UI _PANELBUTTON , { label : k , title : k , command : m , editorFocus : 0 , toolbar : "colors," + C , allowedContent : A , requiredContent : A , contentTransformations : d , panel : { css : [ CKEDITOR . skin . getPath ( "editor" ) ]. concat ( q . colorButton _contentsCss ) ,attributes : { role : "listbox" , "aria-label" : p . panelTitle } } , select : function ( a ) { var d = q . colorButton _colors . split ( "," ) ; a = CKEDITOR . tools . array . find ( d , a ) ; a = n . normalizeColor ( a ) ; v ( t , a ) ; t . _ . markFirstDisplayed ( ) } ,
onBlock : function ( d , b ) { t = b ; b . autoSize = ! 0 ; b . element . addClass ( "cke_colorblock" ) ; b . element . setHtml ( c ( r , B , u ? u . getLength ( ) : 0 ) ) ; b . element . getDocument ( ) . getBody ( ) . setStyle ( "overflow" , "hidden" ) ; b . element . getAscendant ( { html : 1 } ) . setStyle ( "overflow" , "hidden" ) ; CKEDITOR . ui . fire ( "ready" , this ) ; var e = b . keys , h = "rtl" == a . lang . dir ; e [ h ? 37 : 39 ] = "next" ; e [ 40 ] = "next" ; e [ 9 ] = "next" ; e [ h ? 39 : 37 ] = "prev" ; e [ 38 ] = "prev" ; e [ CKEDITOR . SHIFT + 9 ] = "prev" ; e [ 32 ] = "click" ; u && u . setContainer ( b . element . findOne ( ".cke_colorhistory" ) ) } , onOpen : function ( ) { var d =
a . getSelection ( ) , b = d && d . getStartElement ( ) , e = a . elementPath ( b ) , c = "back" == h ? "background-color" : "color" ; if ( e ) { b = e . block || e . blockLimit || a . document . getBody ( ) ; do e = b && b . getComputedStyle ( c ) || "transparent" ; while ( "back" == h && "transparent" == e && b && ( b = b . getParent ( ) ) ) ; e && "transparent" != e || ( e = "#ffffff" ) ; q . colorButton _enableAutomatic && t . element . findOne ( "#" + r ) . setStyle ( "background-color" , e ) ; if ( b = d && d . getRanges ( ) [ 0 ] ) { for ( var d = new CKEDITOR . dom . walker ( b ) , g = b . collapsed ? b . startContainer : d . next ( ) , b = "" ; g ; ) { g . type !== CKEDITOR . NODE _ELEMENT &&
( g = g . getParent ( ) ) ; g = n . normalizeColor ( g . getComputedStyle ( c ) ) ; b = b || g ; if ( b !== g ) { b = "" ; break } g = d . next ( ) } "transparent" == b && ( b = "" ) ; "fore" == h && ( x . automaticTextColor = "#" + n . normalizeColor ( e ) ) ; x . selectionColor = b ? "#" + b : "" ; v ( t , b ) } return e } } } ) } function c ( b , c , f ) { var g = [ ] , h = q . colorButton _colors . split ( "," ) , k = a . plugins . colordialog && q . colorButton _enableMore ; f = h . length + f + ( k ? 1 : 0 ) ; var v = 1 ; q . colorButton _enableAutomatic && ( f += 1 , v += 1 , g . push ( '\x3ca class\x3d"cke_colorauto" _cke_focus\x3d1 hidefocus\x3dtrue' , ' title\x3d"' , p . auto ,
'"' , ' draggable\x3d"false"' , ' ondragstart\x3d"return false;"' , ' onclick\x3d"CKEDITOR.tools.callFunction(' , c , ',null);return false;"' , " href\x3d\"javascript:void('" , p . auto , "')\"" , ' role\x3d"option" aria-posinset\x3d"1" aria-setsize\x3d"' , f , '"\x3e' , '\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e' , "\x3ctr\x3e" , '\x3ctd colspan\x3d"' , a . config . colorButton _colorsPerRow , '" align\x3d"center"\x3e' , '\x3cspan class\x3d"cke_colorbox" id\x3d"' , b , '"\x3e\x3c/span\x3e' , p . auto ,
"\x3c/td\x3e" , "\x3c/tr\x3e" , "\x3c/table\x3e" , "\x3c/a\x3e" ) ) ; g . push ( '\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e\x3ctbody\x3e' ) ; for ( b = 0 ; b < h . length ; b ++ ) { 0 === b % a . config . colorButton _colorsPerRow && g . push ( "\x3c/tr\x3e\x3ctr\x3e" ) ; var m = h [ b ] . split ( "/" ) , q = m [ 0 ] , m = new n ( a , { color : m [ 1 ] || q, label : m [ 1 ] ? q : void 0 } , c ) ; m . setPositionIndex ( v + b , f ) ; g . push ( m . getHtml ( ) ) } l . getRowLimit ( a ) && l . renderContainer ( g , a ) ; k && g . push ( "\x3c/tr\x3e" , "\x3ctr\x3e" , '\x3ctd colspan\x3d"' , a . config . colorButton _colorsPerRow ,
"\x3c/td\x3e" , "\x3c/tr\x3e" , "\x3c/table\x3e" , "\x3c/a\x3e" ) ) ; g . push ( '\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e\x3ctbody\x3e' ) ; for ( b = 0 ; b < h . length ; b ++ ) { 0 === b % a . config . colorButton _colorsPerRow && g . push ( "\x3c/tr\x3e\x3ctr\x3e" ) ; var m = h [ b ] . split ( "/" ) , r = m [ 0 ] , m = new n ( a , { color : m [ 1 ] || r, label : m [ 1 ] ? r : void 0 } , c ) ; m . setPositionIndex ( v + b , f ) ; g . push ( m . getHtml ( ) ) } l . getRowLimit ( a ) && l . renderContainer ( g , a ) ; k && g . push ( "\x3c/tr\x3e" , "\x3ctr\x3e" , '\x3ctd colspan\x3d"' , a . config . colorButton _colorsPerRow ,
'" align\x3d"center"\x3e' , '\x3ca class\x3d"cke_colormore" _cke_focus\x3d1 hidefocus\x3dtrue' , ' title\x3d"' , p . more , '"' , ' draggable\x3d"false"' , ' ondragstart\x3d"return false;"' , ' onclick\x3d"CKEDITOR.tools.callFunction(' , c , ",'?');return false;\"" , " href\x3d\"javascript:void('" , p . more , "')\"" , ' role\x3d"option" aria-posinset\x3d"' , f , '" aria-setsize\x3d"' , f , '"\x3e' , p . more , "\x3c/a\x3e" , "\x3c/td\x3e" ) ; g . push ( "\x3c/tr\x3e\x3c/tbody\x3e\x3c/table\x3e" ) ; return g . join ( "" ) } function f ( a ) { return "false" == a . getAttribute ( "contentEditable" ) ||
a . getAttribute ( "data-nostyle" ) } function v ( a , b ) { var c = a . _ . getItems ( ) , g = a . element . findOne ( "[aria-selected]" ) , f = a . element . findOne ( "[cke_colorlast]" ) ; g && g . removeAttribute ( "aria-selected" ) ; if ( f ) f . setAttribute ( "aria-selected" , ! 0 ) ; else for ( g = 0 ; g < c . count ( ) ; g ++ ) if ( f = c . getItem ( g ) , b && b == n . normalizeColor ( f . getAttribute ( "data-value" ) ) ) { f . setAttribute ( "aria-selected" , ! 0 ) ; break } } var r = a . config , p = a . lang . colorbutton ; if ( ! CKEDITOR . env . hc ) { b ( { name : "TextColor" , type : "fore" , commandName : "textColor" , title : p . textColorTitle ,
order : 10 , contentTransformations : [ [ { element : "font" , check : "span{color}" , left : function ( a ) { return ! ! a . attributes . color } , right : function ( a ) { a . name = "span" ; a . attributes . color && ( a . styles . color = a . attributes . color ) ; delete a . attributes . color } } ] ] } ) ; var k , q = a . config . colorButton _normalizeBackground ; if ( void 0 === q|| q ) k = [ [ { element : "span" , left : function ( a ) { var b = CKEDITOR . tools ; if ( "span" != a . name || ! a . styles || ! a . styles . background ) return ! 1 ; a = b . style . parse . background ( a . styles . background ) ; return a . color && 1 === b . object . keys ( a ) . length } ,
a . getAttribute ( "data-nostyle" ) } function v ( a , b ) { var c = a . _ . getItems ( ) , g = a . element . findOne ( "[aria-selected]" ) , f = a . element . findOne ( "[cke_colorlast]" ) ; g && g . removeAttribute ( "aria-selected" ) ; if ( f ) f . setAttribute ( "aria-selected" , ! 0 ) ; else for ( g = 0 ; g < c . count ( ) ; g ++ ) if ( f = c . getItem ( g ) , b && b == n . normalizeColor ( f . getAttribute ( "data-value" ) ) ) { f . setAttribute ( "aria-selected" , ! 0 ) ; break } } var q = a . config , p = a . lang . colorbutton ; if ( ! CKEDITOR . env . hc ) { b ( { name : "TextColor" , type : "fore" , commandName : "textColor" , title : p . textColorTitle ,
order : 10 , contentTransformations : [ [ { element : "font" , check : "span{color}" , left : function ( a ) { return ! ! a . attributes . color } , right : function ( a ) { a . name = "span" ; a . attributes . color && ( a . styles . color = a . attributes . color ) ; delete a . attributes . color } } ] ] } ) ; var k , r = a . config . colorButton _normalizeBackground ; if ( void 0 === r|| r ) k = [ [ { element : "span" , left : function ( a ) { var b = CKEDITOR . tools ; if ( "span" != a . name || ! a . styles || ! a . styles . background ) return ! 1 ; a = b . style . parse . background ( a . styles . background ) ; return a . color && 1 === b . object . keys ( a ) . length } ,
right : function ( b ) { var c = ( new CKEDITOR . style ( a . config . colorButton _backStyle , { color : b . styles . background } ) ) . getDefinition ( ) ; b . name = c . element ; b . styles = c . styles ; b . attributes = c . attributes || { } ; return b } } ] ] ; b ( { name : "BGColor" , type : "back" , commandName : "bgColor" , title : p . bgColorTitle , order : 20 , contentTransformations : k } ) } } } ) ; n = CKEDITOR . tools . createClass ( { $ : function ( a , b , c ) { this . $ = new CKEDITOR . dom . element ( "td" ) ; this . color = CKEDITOR . tools . _isValidColorFormat ( b . color ) ? b . color : "" ; this . clickFn = c ; this . label = b . label || n . colorNames ( a ) [ this . color ] ||
this . color ; this . setHtml ( ) } , statics : { colorNames : function ( a ) { return a . lang . colorbutton . colors } , normalizeColor : function ( a ) { var b = /^(rgb|hsl)a\(/g . test ( a ) , c = /^rgba\((\s*0\s*,?){4}\)$/g . test ( a ) ; return b && ! c ? ( a = new CKEDITOR . tools . color ( a ) , CKEDITOR . tools . normalizeHex ( a . getHex ( ) || "" ) . replace ( /#/g , "" ) ) : CKEDITOR . tools . normalizeHex ( "#" + CKEDITOR . tools . convertRgbToHex ( a || "" ) ) . replace ( /#/g , "" ) } } , proto : { getElement : function ( ) { return this . $ } , getHtml : function ( ) { return this . getElement ( ) . getOuterHtml ( ) } , setHtml : function ( ) { this . getElement ( ) . setHtml ( '\x3ca class\x3d"cke_colorbox" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"' +
this . label + '" draggable\x3d"false" ondragstart\x3d"return false;" onclick\x3d"CKEDITOR.tools.callFunction(' + this . clickFn + ",'" + this . color + "','" + this . label + "', this); return false;\" href\x3d\"javascript:void('" + this . color + '\')" data-value\x3d"' + this . color + '" role\x3d"option"\x3e\x3cspan class\x3d"cke_colorbox" style\x3d"background-color:#' + this . color + '"\x3e\x3c/span\x3e\x3c/a\x3e' ) } , setPositionIndex : function ( a , b ) { this . getElement ( ) . getChild ( 0 ) . setAttributes ( { "aria-posinset" : a , "aria-setsize" : b } ) } } } ) ;
@ -810,7 +811,7 @@ this.editor.config.colorButton_colorsPerRow);a++)this.rows[a+1]?this._.moveLastB
a ) ; b += 1 } ) } ) } , countPanelElements : function ( ) { var a = this . editor . config . colorButton _colors . split ( "," ) . length + this . getLength ( ) ; this . editor . plugins . colordialog && this . editor . config . colorButton _enableMore && ( a += 1 ) ; this . editor . config . colorButton _enableAutomatic && ( a += 1 ) ; return a } , calculateFirstPosition : function ( a ) { return this . editor . plugins . colordialog && this . editor . config . colorButton _enableMore ? a - this . getLength ( ) : a - this . getLength ( ) + 1 } , attachRows : function ( ) { CKEDITOR . tools . array . forEach ( this . rows , function ( a ) { this . container . append ( a . getElement ( ) ) } ,
this ) } } , proto : { setContainer : function ( a ) { this . container = a ; this . _ . attachRows ( ) ; this . getLength ( ) && this . show ( ) } , show : function ( ) { this . container && this . container . show ( ) } , renderContentColors : function ( ) { var a = this . _ . countColors ( ) ; CKEDITOR . tools . isEmpty ( a ) || ( a = this . _ . sortByOccurrencesAscending ( a , "colorCode" ) , this . _ . addColors ( a ) , this . _ . refreshPositions ( ) ) } , addColor : function ( a ) { var b = this . _ . extractColorBox ( a ) ; this . container && ! this . container . isVisible ( ) && this . show ( ) ; b ? this . _ . moveToBeginning ( b ) : this . _ . createAtBeginning ( a ) ;
this . _ . alignRows ( ) } , getLength : function ( ) { return CKEDITOR . tools . array . reduce ( this . rows , function ( a , b ) { return a + b . boxes . length } , 0 ) } } } ) } ) ( ) ; CKEDITOR . config . colorButton _enableMore = ! 0 ; CKEDITOR . config . colorButton _colors = "1ABC9C,2ECC71,3498DB,9B59B6,4E5F70,F1C40F,16A085,27AE60,2980B9,8E44AD,2C3E50,F39C12,E67E22,E74C3C,ECF0F1,95A5A6,DDD,FFF,D35400,C0392B,BDC3C7,7F8C8D,999,000" ; CKEDITOR . config . colorButton _foreStyle = { element : "span" , styles : { color : "#(color)" } , overrides : [ { element : "font" , attributes : { color : null } } ] } ;
CKEDITOR . config . colorButton _backStyle = { element : "span" , styles : { "background-color" : "#(color)" } } ; CKEDITOR . config . colorButton _enableAutomatic = ! 0 ; CKEDITOR . config . colorButton _colorsPerRow = 6 ; CKEDITOR . config . colorButton _historyRowLimit = 1 ; CKEDITOR . config . colorButton _renderContentColors = ! 0 ; CKEDITOR . plugins. colordialog = { requires : "dialog" , init : function ( b ) { var d = new CKEDITOR . dialogCommand ( "colordialog" ) ; d . editorFocus = ! 1 ; b . addCommand ( "colordialog" , d ) ; CKEDITOR . dialog . add ( "colordialog" , this . path + "dialogs/colordialog.js" ) ; b . getColorFromDialog = function ( d , k , g ) { var c , e , h , f ; c = function ( a ) { h ( this ) ; ( a = "ok" == a . name ? this . getValueOf ( "picker" , "selectedColor" ) : null ) && ! CKEDITOR . tools . _isValidColorFormat ( a ) && ( a = null ) ; /^[0-9a-f]{3}([0-9a-f]{3})?$/i . test ( a ) && ( a = "#" + a ) ; d . call ( k , a ) } ; e = function ( a ) { g && ( a . data =
CKEDITOR . config . colorButton _backStyle = { element : "span" , styles : { "background-color" : "#(color)" } } ; CKEDITOR . config . colorButton _enableAutomatic = ! 0 ; CKEDITOR . config . colorButton _colorsPerRow = 6 ; CKEDITOR . config . colorButton _historyRowLimit = 1 ; CKEDITOR . config . colorButton _renderContentColors = ! 0 ; CKEDITOR . config. colorButton _contentsCss = [ ] ; CKEDITOR . plugins. colordialog = { requires : "dialog" , init : function ( b ) { var d = new CKEDITOR . dialogCommand ( "colordialog" ) ; d . editorFocus = ! 1 ; b . addCommand ( "colordialog" , d ) ; CKEDITOR . dialog . add ( "colordialog" , this . path + "dialogs/colordialog.js" ) ; b . getColorFromDialog = function ( d , k , g ) { var c , e , h , f ; c = function ( a ) { h ( this ) ; ( a = "ok" == a . name ? this . getValueOf ( "picker" , "selectedColor" ) : null ) && ! CKEDITOR . tools . _isValidColorFormat ( a ) && ( a = null ) ; /^[0-9a-f]{3}([0-9a-f]{3})?$/i . test ( a ) && ( a = "#" + a ) ; d . call ( k , a ) } ; e = function ( a ) { g && ( a . data =
g ) } ; h = function ( a ) { a . removeListener ( "ok" , c ) ; a . removeListener ( "cancel" , c ) ; a . removeListener ( "show" , e ) } ; f = function ( a ) { a . on ( "ok" , c ) ; a . on ( "cancel" , c ) ; a . on ( "show" , e , null , null , 5 ) } ; b . execCommand ( "colordialog" ) ; if ( b . _ . storedDialogs && b . _ . storedDialogs . colordialog ) f ( b . _ . storedDialogs . colordialog ) ; else CKEDITOR . on ( "dialogDefinition" , function ( a ) { if ( "colordialog" == a . data . name ) { var b = a . data . definition ; a . removeListener ( ) ; b . onLoad = CKEDITOR . tools . override ( b . onLoad , function ( a ) { return function ( ) { f ( this ) ; b . onLoad = a ; "function" ==
typeof a && a . call ( this ) } } ) } } ) } } } ; CKEDITOR . plugins . add ( "colordialog" , CKEDITOR . plugins . colordialog ) ; CKEDITOR . plugins . add ( "menu" , { requires : "floatpanel" , beforeInit : function ( m ) { for ( var k = m . config . menu _groups . split ( "," ) , n = m . _ . menuGroups = { } , r = m . _ . menuItems = { } , p = 0 ; p < k . length ; p ++ ) n [ k [ p ] ] = p + 1 ; m . addMenuGroup = function ( c , a ) { n [ c ] = a || 100 } ; m . addMenuItem = function ( c , a ) { n [ a . group ] && ( r [ c ] = new CKEDITOR . menuItem ( this , c , a ) ) } ; m . addMenuItems = function ( c ) { for ( var a in c ) this . addMenuItem ( a , c [ a ] ) } ; m . getMenuItem = function ( c ) { return r [ c ] } ; m . removeMenuItem = function ( c ) { delete r [ c ] } } } ) ;
( function ( ) { function m ( a ) { a . sort ( function ( a , f ) { return a . group < f . group ? - 1 : a . group > f . group ? 1 : a . order < f . order ? - 1 : a . order > f . order ? 1 : 0 } ) } var k = '\x3cspan class\x3d"cke_menuitem"\x3e\x3ca id\x3d"{id}" class\x3d"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href\x3d"{href}" title\x3d"{title}" tabindex\x3d"-1" _cke_focus\x3d1 hidefocus\x3d"true" role\x3d"{role}" aria-label\x3d"{attrLabel}" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasPopup}" aria-disabled\x3d"{disabled}" {ariaChecked} draggable\x3d"false"' ,
@ -855,10 +856,10 @@ CKEDITOR.dtd.$removeEmpty[m.getName()]&&(m=m.clone(),d.moveChildren(m),d.append(
CKEDITOR . dtd . $empty ) ) } , ( h = d . next ( ) ) && h . type == CKEDITOR . NODE _ELEMENT && h . is ( "ul" , "ol" ) && ( CKEDITOR . env . needsBrFiller ? g . createElement ( "br" ) : g . createText ( " " ) ) . insertBefore ( h ) ) , c && b . moveToElementEditStart ( c ) ; b . select ( ) ; b . scrollIntoView ( ) } } } , enterBr : function ( a , e , b , l ) { if ( b = b || y ( a ) ) { var n = b . document , g = b . checkEndOfBlock ( ) , f = new CKEDITOR . dom . elementPath ( a . getSelection ( ) . getStartElement ( ) ) , k = f . block , p = k && f . block . getName ( ) ; l || "li" != p ? ( ! l && g && w . test ( p ) ? ( g = k . getDirection ( ) ) ? ( n = n . createElement ( "div" ) , n . setAttribute ( "dir" ,
g ) , n . insertAfter ( k ) , b . setStart ( n , 0 ) ) : ( n . createElement ( "br" ) . insertAfter ( k ) , CKEDITOR . env . gecko && n . createText ( "" ) . insertAfter ( k ) , b . setStartAt ( k . getNext ( ) , CKEDITOR . env . ie ? CKEDITOR . POSITION _BEFORE _START : CKEDITOR . POSITION _AFTER _START ) ) : ( a = "pre" == p && CKEDITOR . env . ie && 8 > CKEDITOR . env . version ? n . createText ( "\r" ) : n . createElement ( "br" ) , b . deleteContents ( ) , b . insertNode ( a ) , CKEDITOR . env . needsBrFiller ? ( n . createText ( " " ) . insertAfter ( a ) , g && ( k || f . blockLimit ) . appendBogus ( ) , a . getNext ( ) . $ . nodeValue = "" , b . setStartAt ( a . getNext ( ) ,
CKEDITOR . POSITION _AFTER _START ) ) : b . setStartAt ( a , CKEDITOR . POSITION _AFTER _END ) ) , b . collapse ( ! 0 ) , b . select ( ) , b . scrollIntoView ( ) ) : r ( a , e , b , l ) } } } ; v = CKEDITOR . plugins . enterkey ; u = v . enterBr ; r = v . enterBlock ; w = /^h[1-6]$/ } ) ( ) ; ( function ( ) { function k ( a , f ) { var g = { } , c = [ ] , e = { nbsp : " " , shy : " " , gt : "\x3e" , lt : "\x3c" , amp : "\x26" , apos : "'" , quot : '"' } ; a = a . replace ( /\b(nbsp|shy|gt|lt|amp|apos|quot)(?:,|$)/g , function ( a , b ) { var d = f ? "\x26" + b + ";" : e [ b ] ; g [ d ] = f ? e [ b ] : "\x26" + b + ";" ; c . push ( d ) ; return "" } ) ; a = a . replace ( /,$/ , "" ) ; if ( ! f && a ) { a = a . split ( "," ) ; var b = document . createElement ( "div" ) , d ; b . innerHTML = "\x26" + a . join ( ";\x26" ) + ";" ; d = b . innerHTML ; b = null ; for ( b = 0 ; b < d . length ; b ++ ) { var h = d . charAt ( b ) ; g [ h ] = "\x26" + a [ b ] + ";" ; c . push ( h ) } } g . regex = c . join ( f ? "|" : "" ) ; return g }
CKEDITOR . plugins . add ( "entities" , { afterInit : function ( a ) { function f ( b ) { return h [ b ] } function g ( a ) { return "force" != c . entities _processNumerical && b [ a ] ? b [ a ] : "\x26#" + a . charCodeAt ( 0 ) + ";" } var c = a . config ; if ( a = ( a = a . dataProcessor ) && a . htmlFilter ) { var e = [ ] ; ! 1 !== c . basicEntities && e . push ( "nbsp,gt,lt,amp" ) ; c . entities && ( e . length && e . push ( "quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro" ) ,
CKEDITOR . plugins . add ( "entities" , { afterInit : function ( a ) { function f ( b ) { return h [ b ] } function g ( a ) { return "force" != c . entities _processNumerical && b [ a ] ? b [ a ] : "\x26#" + ( CKEDITOR . env . ie ? a . charCodeAt ( 0 ) : a . codePointAt ( 0 ) ) + ";" } var c = a . config ; if ( a = ( a = a . dataProcessor ) && a . htmlFilter ) { var e = [ ] ; ! 1 !== c . basicEntities && e . push ( "nbsp,gt,lt,amp" ) ; c . entities && ( e . length && e . push ( "quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro" ) ,
c . entities _latin && e . push ( "Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml" ) , c . entities _greek && e . push ( "Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv" ) ,
c . entities _additional && e . push ( c . entities _additional ) ) ; var b = k ( e . join ( "," ) ) , d = b . regex ? "[" + b . regex + "]" : "a^" ; delete b . regex ; c . entities && c . entities _processNumerical && ( d = "[^ -~]|" + d ) ; var d = new RegExp ( d , "g ") , h = k ( "nbsp,gt,lt,amp,shy" , ! 0 ) , l = new RegExp ( h . regex , "g" ) ; a . addRules ( { text : function ( a ) { return a . replace ( l , f ) . replace ( d , g ) } } , { applyToAll : ! 0 , excludeNestedEditable : ! 0 } ) } } } ) } ) ( ) ; CKEDITOR . config . basicEntities = ! 0 ; CKEDITOR . config . entities = ! 0 ; CKEDITOR . config . entities _latin = ! 0 ; CKEDITOR . config . entities _greek = ! 0 ;
CKEDITOR . config . entities _additional = "#39" ; ( function ( ) { function f ( b , a ) { var c = k . exec ( b ) , d = k . exec ( a ) ; if ( c ) { if ( ! c [ 2 ] && "px" == d [ 2 ] ) return d [ 1 ] ; if ( "px" == c [ 2 ] && ! d [ 2 ] ) return d [ 1 ] + "px" } return a } function m ( b ) { return { elements : { $ : function ( a ) { var c = a . attributes , c = c && c [ "data-cke-realelement" ] , d = l ( b , decodeURIComponent ( c ) ) ; if ( ( c = ( c = c && new CKEDITOR . htmlParser . fragment . fromHtml ( d ) ) && c . children [ 0 ] ) && a . attributes [ "data-cke-resizable" ] ) { var e = ( new h ( a ) ) . rules ; a = c . attributes ; d = e . width ; e = e . height ; d && ( a . width = f ( a . width , d ) ) ; e && ( a . height = f ( a . height , e ) ) } return c } } } }
c . entities _additional && e . push ( c . entities _additional ) ) ; var b = k ( e . join ( "," ) ) , d = b . regex ? "[" + b . regex + "]" : "a^" ; delete b . regex ; c . entities && c . entities _processNumerical && ( d = "[^ -~]|" + d ) ; var d = new RegExp ( d , CKEDITOR . env . ie ? "g ": "gu ") , h = k ( "nbsp,gt,lt,amp,shy" , ! 0 ) , l = new RegExp ( h . regex , "g" ) ; a . addRules ( { text : function ( a ) { return a . replace ( l , f ) . replace ( d , g ) } } , { applyToAll : ! 0 , excludeNestedEditable : ! 0 } ) } } } ) } ) ( ) ; CKEDITOR . config . basicEntities = ! 0 ; CKEDITOR . config . entities = ! 0 ; CKEDITOR . config . entities _latin = ! 0 ;
CKEDITOR . config . entities _greek = ! 0 ; CKEDITOR . config . entities _additional = "#39" ; ( function ( ) { function f ( b , a ) { var c = k . exec ( b ) , d = k . exec ( a ) ; if ( c ) { if ( ! c [ 2 ] && "px" == d [ 2 ] ) return d [ 1 ] ; if ( "px" == c [ 2 ] && ! d [ 2 ] ) return d [ 1 ] + "px" } return a } function m ( b ) { return { elements : { $ : function ( a ) { var c = a . attributes , c = c && c [ "data-cke-realelement" ] , d = l ( b , decodeURIComponent ( c ) ) ; if ( ( c = ( c = c && new CKEDITOR . htmlParser . fragment . fromHtml ( d ) ) && c . children [ 0 ] ) && a . attributes [ "data-cke-resizable" ] ) { var e = ( new h ( a ) ) . rules ; a = c . attributes ; d = e . width ; e = e . height ; d && ( a . width = f ( a . width , d ) ) ; e && ( a . height = f ( a . height , e ) ) } return c } } } }
function l ( b , a ) { var c = [ ] , d = /^cke:/i , e = new CKEDITOR . htmlParser . filter ( { elements : { "^" : function ( a ) { d . test ( a . name ) && ( a . name = a . name . replace ( d , "" ) , c . push ( a ) ) } , iframe : function ( a ) { a . children = [ ] } } } ) , n = b . activeFilter , f = new CKEDITOR . htmlParser . basicWriter , g = CKEDITOR . htmlParser . fragment . fromHtml ( a ) ; e . applyTo ( g ) ; n . applyTo ( g ) ; CKEDITOR . tools . array . forEach ( c , function ( a ) { a . name = "cke:" + a . name } ) ; g . writeHtml ( f ) ; return f . getHtml ( ) } var h = CKEDITOR . htmlParser . cssStyle , g = CKEDITOR . tools . cssLength , k = /^((?:\d*(?:\.\d+))|(?:\d+))(.*)?$/i ;
CKEDITOR . plugins . add ( "fakeobjects" , { init : function ( b ) { b . filter . allow ( "img[!data-cke-realelement,src,alt,title](*){*}" , "fakeobjects" ) } , afterInit : function ( b ) { var a = b . dataProcessor ; ( a = a && a . htmlFilter ) && a . addRules ( m ( b ) , { applyToAll : ! 0 } ) } } ) ; CKEDITOR . editor . prototype . createFakeElement = function ( b , a , c , d ) { var e = this . lang . fakeobjects , e = e [ c ] || e . unknown ; a = { "class" : a , "data-cke-realelement" : encodeURIComponent ( b . getOuterHtml ( ) ) , "data-cke-real-node-type" : b . type , alt : e , title : e , align : b . getAttribute ( "align" ) || "" } ; CKEDITOR . env . hc ||
( a . src = CKEDITOR . tools . transparentImageData ) ; c && ( a [ "data-cke-real-element-type" ] = c ) ; d && ( a [ "data-cke-resizable" ] = d , c = new h , d = b . getAttribute ( "width" ) , b = b . getAttribute ( "height" ) , d && ( c . rules . width = g ( d ) ) , b && ( c . rules . height = g ( b ) ) , c . populate ( a ) ) ; return this . document . createElement ( "img" , { attributes : a } ) } ; CKEDITOR . editor . prototype . createFakeParserElement = function ( b , a , c , d ) { var e = this . lang . fakeobjects , e = e [ c ] || e . unknown , f ; f = new CKEDITOR . htmlParser . basicWriter ; b . writeHtml ( f ) ; f = f . getHtml ( ) ; a = { "class" : a , "data-cke-realelement" : encodeURIComponent ( f ) ,
@ -928,9 +929,10 @@ b.$block&&!(a in{li:1,dt:1,dd:1})});this.setRules("br",{breakAfterOpen:1});this.
openTagClose : function ( b , a ) { var c = this . _ . rules [ b ] ; a ? ( this . _ . output . push ( this . selfClosingEnd ) , c && c . breakAfterClose && ( this . _ . needsSpace = c . needsSpace ) ) : ( this . _ . output . push ( "\x3e" ) , c && c . indent && ( this . _ . indentation += this . indentationChars ) ) ; c && c . breakAfterOpen && this . lineBreak ( ) ; "pre" == b && ( this . _ . inPre = 1 ) } , attribute : function ( b , a ) { "string" == typeof a && ( a = CKEDITOR . tools . htmlEncodeAttr ( a ) , this . forceSimpleAmpersand && ( a = a . replace ( /&/g , "\x26" ) ) ) ; this . _ . output . push ( " " , b , '\x3d"' , a , '"' ) } , closeTag : function ( b ) { var a =
this . _ . rules [ b ] ; a && a . indent && ( this . _ . indentation = this . _ . indentation . substr ( this . indentationChars . length ) ) ; this . _ . indent ? this . indentation ( ) : a && a . breakBeforeClose && ( this . lineBreak ( ) , this . indentation ( ) ) ; this . _ . output . push ( "\x3c/" , b , "\x3e" ) ; "pre" == b && ( this . _ . inPre = 0 ) ; a && a . breakAfterClose && ( this . lineBreak ( ) , this . _ . needsSpace = a . needsSpace ) ; this . _ . afterCloser = 1 } , text : function ( b ) { this . _ . indent && ( this . indentation ( ) , ! this . _ . inPre && ( b = CKEDITOR . tools . ltrim ( b ) ) ) ; this . _ . output . push ( b ) } , comment : function ( b ) { this . _ . indent &&
this . indentation ( ) ; this . _ . output . push ( "\x3c!--" , b , "--\x3e" ) } , lineBreak : function ( ) { ! this . _ . inPre && 0 < this . _ . output . length && this . _ . output . push ( this . lineBreakChars ) ; this . _ . indent = 1 } , indentation : function ( ) { ! this . _ . inPre && this . _ . indentation && this . _ . output . push ( this . _ . indentation ) ; this . _ . indent = 0 } , reset : function ( ) { this . _ . output = [ ] ; this . _ . indent = 0 ; this . _ . indentation = "" ; this . _ . afterCloser = 0 ; this . _ . inPre = 0 ; this . _ . needsSpace = 0 } , setRules : function ( b , a ) { var c = this . _ . rules [ b ] ; c ? CKEDITOR . tools . extend ( c , a , ! 0 ) : this . _ . rules [ b ] =
a } } } ) ; ( function ( ) { CKEDITOR . plugins . add ( "iframe" , { requires : "dialog,fakeobjects" , onLoad : function ( ) { CKEDITOR . addCss ( "img.cke_iframe{background-image: url(" + CKEDITOR . getUrl ( this . path + "images/placeholder.png" ) + ");background-position: center center;background-repeat: no-repeat;border: 1px solid #a9a9a9;width: 80px;height: 80px;}" ) } , init : function ( a ) { var b = a . lang . iframe , c = "iframe[align,longdesc,tabindex,frameborder,height,name,scrolling,src,title,width]" ; a . plugins . dialogadvtab && ( c += ";iframe" + a . plugins . dialogadvtab . allowedContent ( { id : 1 ,
classes : 1 , styles : 1 } ) ) ; CKEDITOR . dialog . add ( "iframe" , this . path + "dialogs/iframe.js" ) ; a . addCommand ( "iframe" , new CKEDITOR . dialogCommand ( "iframe" , { allowedContent : c , requiredContent : "iframe" } ) ) ; a . ui . addButton && a . ui . addButton ( "Iframe" , { label : b . toolbar , command : "iframe" , toolbar : "insert,80" } ) ; a . on ( "doubleclick" , function ( a ) { var b = a . data . element ; b . is ( "img" ) && "iframe" == b . data ( "cke-real-element-type" ) && ( a . data . dialog = "iframe" ) } ) ; a . addMenuItems && a . addMenuItems ( { iframe : { label : b . title , command : "iframe" , group : "image" } } ) ;
a . contextMenu && a . contextMenu . addListener ( function ( a ) { if ( a && a . is ( "img" ) && "iframe" == a . data ( "cke-real-element-type" ) ) return { iframe : CKEDITOR . TRISTATE _OFF } } ) } , afterInit : function ( a ) { var b = a . dataProcessor ; ( b = b && b . dataFilter ) && b . addRules ( { elements : { iframe : function ( b ) { return a . createFakeParserElement ( b , "cke_iframe" , "iframe" , ! 0 ) } } } ) } } ) } ) ( ) ; ( function ( ) { function e ( b , a ) { a || ( a = b . getSelection ( ) . getSelectedElement ( ) ) ; if ( a && a . is ( "img" ) && ! a . data ( "cke-realelement" ) && ! a . isReadOnly ( ) ) return a } function f ( b ) { var a = b . getStyle ( "float" ) ; if ( "inherit" == a || "none" == a ) a = 0 ; a || ( a = b . getAttribute ( "align" ) ) ; return a } CKEDITOR . plugins . add ( "image" , { requires : "dialog" , init : function ( b ) { if ( ! b . plugins . detectConflict ( "image" , [ "easyimage" , "image2" ] ) ) { CKEDITOR . dialog . add ( "image" , this . path + "dialogs/image.js" ) ; var a = "img[alt,!src]{border-style,border-width,float,height,margin,margin-bottom,margin-left,margin-right,margin-top,width}" ;
a } } } ) ; ( function ( ) { CKEDITOR . plugins . add ( "iframe" , { requires : "dialog,fakeobjects" , onLoad : function ( ) { CKEDITOR . addCss ( "img.cke_iframe{background-image: url(" + CKEDITOR . getUrl ( this . path + "images/placeholder.png" ) + ");background-position: center center;background-repeat: no-repeat;border: 1px solid #a9a9a9;width: 80px;height: 80px;}" ) } , init : function ( a ) { var c = a . lang . iframe , b = "iframe[align,longdesc,tabindex,frameborder,height,name,scrolling,src,title,width,sandbox]" ; a . plugins . dialogadvtab && ( b += ";iframe" + a . plugins . dialogadvtab . allowedContent ( { id : 1 ,
classes : 1 , styles : 1 } ) ) ; CKEDITOR . dialog . add ( "iframe" , this . path + "dialogs/iframe.js" ) ; a . addCommand ( "iframe" , new CKEDITOR . dialogCommand ( "iframe" , { allowedContent : b , requiredContent : "iframe" } ) ) ; a . ui . addButton && a . ui . addButton ( "Iframe" , { label : c . toolbar , command : "iframe" , toolbar : "insert,80" } ) ; a . on ( "doubleclick" , function ( a ) { var b = a . data . element ; b . is ( "img" ) && "iframe" == b . data ( "cke-real-element-type" ) && ( a . data . dialog = "iframe" ) } ) ; a . addMenuItems && a . addMenuItems ( { iframe : { label : c . title , command : "iframe" , group : "image" } } ) ;
a . contextMenu && a . contextMenu . addListener ( function ( a ) { if ( a && a . is ( "img" ) && "iframe" == a . data ( "cke-real-element-type" ) ) return { iframe : CKEDITOR . TRISTATE _OFF } } ) } , afterInit : function ( a ) { var c = a . dataProcessor ; ( c = c && c . dataFilter ) && c . addRules ( { elements : { iframe : function ( b ) { var c = a . plugins . iframe . _ . getIframeAttributes ( a , b ) ; void 0 !== c && ( b . attributes = CKEDITOR . tools . object . merge ( b . attributes , c ) ) ; return a . createFakeParserElement ( b , "cke_iframe" , "iframe" , ! 0 ) } } } ) } , _ : { getIframeAttributes : function ( a , c ) { var b = a . config . iframe _attributes ;
if ( "function" === typeof b ) return b ( c ) ; if ( "object" === typeof b ) return b } } } ) } ) ( ) ; CKEDITOR . config . iframe _attributes = { sandbox : "" } ; ( function ( ) { function e ( b , a ) { a || ( a = b . getSelection ( ) . getSelectedElement ( ) ) ; if ( a && a . is ( "img" ) && ! a . data ( "cke-realelement" ) && ! a . isReadOnly ( ) ) return a } function f ( b ) { var a = b . getStyle ( "float" ) ; if ( "inherit" == a || "none" == a ) a = 0 ; a || ( a = b . getAttribute ( "align" ) ) ; return a } CKEDITOR . plugins . add ( "image" , { requires : "dialog" , init : function ( b ) { if ( ! b . plugins . detectConflict ( "image" , [ "easyimage" , "image2" ] ) ) { CKEDITOR . dialog . add ( "image" , this . path + "dialogs/image.js" ) ; var a = "img[alt,!src]{border-style,border-width,float,height,margin,margin-bottom,margin-left,margin-right,margin-top,width}" ;
CKEDITOR . dialog . isTabEnabled ( b , "image" , "advanced" ) && ( a = "img[alt,dir,id,lang,longdesc,!src,title]{*}(*)" ) ; b . addCommand ( "image" , new CKEDITOR . dialogCommand ( "image" , { allowedContent : a , requiredContent : "img[alt,src]" , contentTransformations : [ [ "img{width}: sizeToStyle" , "img[width]: sizeToAttribute" ] , [ "img{float}: alignmentToStyle" , "img[align]: alignmentToAttribute" ] ] } ) ) ; b . ui . addButton && b . ui . addButton ( "Image" , { label : b . lang . common . image , command : "image" , toolbar : "insert,10" } ) ; b . on ( "doubleclick" , function ( b ) { var a =
b . data . element ; ! a . is ( "img" ) || a . data ( "cke-realelement" ) || a . isReadOnly ( ) || ( b . data . dialog = "image" ) } ) ; b . addMenuItems && b . addMenuItems ( { image : { label : b . lang . image . menu , command : "image" , group : "image" } } ) ; b . contextMenu && b . contextMenu . addListener ( function ( a ) { if ( e ( b , a ) ) return { image : CKEDITOR . TRISTATE _OFF } } ) } } , afterInit : function ( b ) { function a ( a ) { var d = b . getCommand ( "justify" + a ) ; if ( d ) { if ( "left" == a || "right" == a ) d . on ( "exec" , function ( d ) { var c = e ( b ) , g ; c && ( g = f ( c ) , g == a ? ( c . removeStyle ( "float" ) , a == f ( c ) && c . removeAttribute ( "align" ) ) :
c . setStyle ( "float" , a ) , d . cancel ( ) ) } ) ; d . on ( "refresh" , function ( d ) { var c = e ( b ) ; c && ( c = f ( c ) , this . setState ( c == a ? CKEDITOR . TRISTATE _ON : "right" == a || "left" == a ? CKEDITOR . TRISTATE _OFF : CKEDITOR . TRISTATE _DISABLED ) , d . cancel ( ) ) } ) } } b . plugins . image2 || ( a ( "left" ) , a ( "right" ) , a ( "center" ) , a ( "block" ) ) } } ) } ) ( ) ; CKEDITOR . config . image _removeLinkByEmptyURL = ! 0 ; ( function ( ) { function m ( a , b ) { var e , f ; b . on ( "refresh" , function ( a ) { var b = [ k ] , c ; for ( c in a . data . states ) b . push ( a . data . states [ c ] ) ; this . setState ( CKEDITOR . tools . search ( b , p ) ? p : k ) } , b , null , 100 ) ; b . on ( "exec" , function ( b ) { e = a . getSelection ( ) ; f = e . createBookmarks ( 1 ) ; b . data || ( b . data = { } ) ; b . data . done = ! 1 } , b , null , 0 ) ; b . on ( "exec" , function ( ) { a . forceNextSelectionCheck ( ) ; e . selectBookmarks ( f ) } , b , null , 100 ) } var k = CKEDITOR . TRISTATE _DISABLED , p = CKEDITOR . TRISTATE _OFF ; CKEDITOR . plugins . add ( "indent" , { init : function ( a ) { var b = CKEDITOR . plugins . indent . genericDefinition ;
@ -999,15 +1001,15 @@ CKEDITOR.POSITION_BEFORE_END)));if(f)D(a,d,e),l.cancel();else{var p=g.contains(u
CKEDITOR . END ) && ( g = 2 ) , g && c ) { e = e . clone ( ) ; e . moveToElementEditStart ( c ) ; if ( 1 == g && ( d . optimize ( ) , ! d . startContainer . equals ( f ) ) ) { for ( f = d . startContainer ; f . is ( CKEDITOR . dtd . $inline ) ; ) p = f , f = f . getParent ( ) ; p && d . moveToPosition ( p , CKEDITOR . POSITION _AFTER _END ) } 2 == g && ( d . moveToPosition ( d . endPath ( ) . block , CKEDITOR . POSITION _BEFORE _END ) , e . endPath ( ) . block && e . moveToPosition ( e . endPath ( ) . block , CKEDITOR . POSITION _AFTER _START ) ) ; D ( a , d , e ) ; l . cancel ( ) } } else k . range . setEndAt ( h , CKEDITOR . POSITION _BEFORE _END ) , ( c = k . next ( ) ) && c . type == CKEDITOR . NODE _ELEMENT &&
c . is ( u ) && ( c = c . getFirst ( t ) , g . block && e . checkStartOfBlock ( ) && e . checkEndOfBlock ( ) ? ( g . block . remove ( ) , e . moveToElementEditStart ( c ) , e . select ( ) ) : A ( c ) ? ( e . moveToElementEditStart ( c ) , e . select ( ) ) : ( e = e . clone ( ) , e . moveToElementEditStart ( c ) , D ( a , d , e ) ) , l . cancel ( ) ) ; setTimeout ( function ( ) { a . selectionChange ( 1 ) } ) } } } ) ) } } ) } ) ( ) ; ( function ( ) { CKEDITOR . plugins . liststyle = { requires : "dialog,contextmenu" , init : function ( a ) { if ( ! a . blockless ) { var b ; b = new CKEDITOR . dialogCommand ( "numberedListStyle" , { requiredContent : "ol" , allowedContent : "ol{list-style-type}[start]; li{list-style-type}[value]" , contentTransformations : [ [ "ol: listTypeToStyle" ] ] } ) ; b = a . addCommand ( "numberedListStyle" , b ) ; a . addFeature ( b ) ; CKEDITOR . dialog . add ( "numberedListStyle" , this . path + "dialogs/liststyle.js" ) ; b = new CKEDITOR . dialogCommand ( "bulletedListStyle" , { requiredContent : "ul" ,
allowedContent : "ul{list-style-type}" , contentTransformations : [ [ "ul: listTypeToStyle" ] ] } ) ; b = a . addCommand ( "bulletedListStyle" , b ) ; a . addFeature ( b ) ; CKEDITOR . dialog . add ( "bulletedListStyle" , this . path + "dialogs/liststyle.js" ) ; a . addMenuGroup ( "list" , 108 ) ; a . addMenuItems ( { numberedlist : { label : a . lang . liststyle . numberedTitle , group : "list" , command : "numberedListStyle" } , bulletedlist : { label : a . lang . liststyle . bulletedTitle , group : "list" , command : "bulletedListStyle" } } ) ; a . contextMenu . addListener ( function ( a ) { if ( ! a || a . isReadOnly ( ) ) return null ;
for ( ; a ; ) { var b = a . getName ( ) ; if ( "ol" == b ) return { numberedlist : CKEDITOR . TRISTATE _OFF } ; if ( "ul" == b ) return { bulletedlist : CKEDITOR . TRISTATE _OFF } ; a = a . getParent ( ) } return null } ) } } } ; CKEDITOR . plugins . add ( "liststyle" , CKEDITOR . plugins . liststyle ) } ) ( ) ; ( function ( ) { function m ( a ) { if ( ! a || a . type != CKEDITOR . NODE _ELEMENT || "form" != a . getName ( ) ) return [ ] ; for ( var e= [ ] , c = [ "style" , "className" ] , b = 0 ; b < c. length ; b ++ ) { var d = a . $ . elements . namedItem ( c[ b ] ) ; d && ( d = new CKEDITOR . dom . element ( d ) , e . push ( [ d , d . nextSibling ] ) , d . remove ( ) ) } return e } function r ( a , e ) { if ( a && a . type == CKEDITOR . NODE _ELEMENT && "form" == a . getName ( ) && 0 < e. length ) for ( var c = e . length - 1 ; 0 <= c ; c -- ) { var b = e [ c ] [ 0 ] , d = e [ c ] [ 1 ] ; d ? b . insertBefore ( d ) : b . appendTo ( a ) } } function q ( a , e) { var c = m ( a ) , b = { } , d = a . $ ; e || ( b [ "class" ] = d . className ||
"" , d . className = "" ) ; b . inline = d. style . cssText || "" ; e || ( d . style . cssText = "position: static; overflow: visible" ) ; r( c ) ; return b } function t ( a , e ) { var c = m ( a ) , b = a . $ ; "class" in e&& ( b . className = e [ "class" ] ) ; "inline" in e && ( b . style . cssText = e . inline ) ; r ( c ) } function u ( a ) { if ( ! a . editable ( ) . isInline ( ) ) { var e= CKEDITOR . instances , c ; for ( c in e ) { var b = e [ c ] ; "wysiwyg" != b . mode || b . readOnly || ( b = b . document . getBody ( ) , b . setAttribute ( "contentEditable" , ! 1 ) , b . setAttribute ( "contentEditable" , ! 0 ) ) } a . editable ( ) . hasFocus && ( a . toolbox . focus ( ) ,
a . focus ( ) ) } } CKEDITOR . plugins . add ( "maximize" , { init : function ( a ) { function e( ) { var b = d . getViewPaneSize ( ) ; a . resize ( b. width , b . height , null , ! 0 ) } if ( a . elementMode != CKEDITOR . ELEMENT _MODE _INLINE ) { var c= a . lang , b = CKEDITOR . document , d = b . getWindow ( ) , k , l , n , m = CKEDITOR . TRISTATE _OFF ; a . addCommand ( "maximize" , { modes : { wysiwyg : ! CKEDITOR . env . iOS , source : ! CKEDITOR . env . iOS } , readOnly : 1 , editorFocus : ! 1 , exec : function ( ) { var g = a . container . getFirst ( function ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && a . hasClass ( "cke_inner" ) } ) , c = a . ui . space ( "contents" ) ;
if ( "wysiwyg" == a . mode ) { var f = a . getSelection ( ) ; k = f && f . getRanges ( ) ; l= d . getScrollPosition ( ) } else { var h= a . editable ( ) . $ ; k = ! CKEDITOR . env . ie && [ h. selectionStart , h . selectionEnd ] ; l = [ h . scrollLeft , h . scrollTop ] } if ( this . state == CKEDITOR . TRISTATE _OFF ) { d. on ( "resize" , e ) ; n = d . getScrollPosition ( ) ; for ( f = a . container ; f = f . getParent ( ) ; ) f . setCustomData ( "maximize_saved_styles" , q ( f ) ) , f . setStyle ( "z-index" , a . config . baseFloatZIndex - 5 ) ; c. setCustomData ( "maximize_save d_styles", q ( c , ! 0 ) ) ; g . setCustomData ( "maximize_saved_styles" , q ( g , ! 0 ) ) ;
c = { overflow : CKEDITOR . env . webkit ? "" : "hidden" , width : 0 , height : 0 } ; b. getDocumentElement ( ) . setStyles ( c ) ; ! CKEDITOR . env . gecko && b . getDocumentElement ( ) . setStyle ( "position" , "fixed" ) ; CKEDITOR . env . gecko && CKEDITOR . env . quirks || b. getBody ( ) . setStyles ( c ) ; CKEDITOR . env . ie ? setTimeout ( function ( ) { d . $ . scrollTo ( 0 , 0 ) } , 0 ) : d . $ . scrollTo ( 0 , 0 ) ; g . setStyle ( "position" , CKEDITOR . env . gecko && CKEDITOR . env . quirks ? "fixed" : "absolute" ) ; g. $ . offsetLeft ; g . setStyles ( { "z-index" : a . config . baseFloatZIndex - 5 , left : "0px" , top : "0px" } ) ; g . addClass ( "cke_maximized" ) ;
e ( ) ; c = g . getDocumentPosition ( ) ; g . setStyles ( { left : - 1 * c . x + "px" , top : - 1 * c . y + "px" } ) ; CKEDITOR . env . gecko && u ( a ) } else if ( this . state == CKEDITOR . TRISTATE _ON ) { d. removeListener ( "resize" , e ) ; for ( var f = [ c , g ] , p = 0 ; p < f . length ; p ++ ) t ( f [ p ] , f [ p ] . getCustomData ( "maximize_saved_styles" ) ) , f [ p ] . removeCustomData ( "maximize_saved_styles" ) ; for ( f = a . container ; f = f . getParent ( ) ; ) t ( f , f . getCustomData ( "maximize_saved_styles" ) ) , f . removeCustomData ( "maximize_saved_styles" ) ; CKEDITOR . env . ie ? setTimeout ( function ( ) { d . $ . scrollTo ( n . x , n . y ) } , 0 ) : d . $ . scrollTo ( n . x ,
n. y ) ; g . removeClass ( "cke_maximized" ) ; CKEDITOR . env . webkit && ( g . setStyle ( "display" , "inline" ) , setTimeout ( function ( ) { g . setStyle ( "display" , "block" ) } , 0 ) ) ; a . fire ( "resize" , { outerHeight : a . container . $ . offsetHeight , contentsHeight : c . $ . offsetHeight , outerWidth : a . container . $ . offsetWidth } ) } this . toggleState ( ) ; "wysiwyg" == a . mode ? k ? ( CKEDITOR . env . gecko && u ( a ) , a . getSelection ( ) . selectRanges ( k) , ( h = a . getSelection ( ) . getStartElement ( ) ) && h. scrollIntoView ( ! 0 ) ) : d . $ . scrollTo ( l . x , l . y ) : ( k && ( h . selectionStart = k [ 0 ] , h . selectionEnd = k [ 1 ] ) ,
h. scrollLeft = l [ 0 ] , h . scrollTop = l [ 1 ] ) ; k = l = null ; m = this . state ; a . fire ( "maximize" , this . state ) } , canUndo : ! 1 } ) ; a . ui . addButton && a . ui . addButton ( "Maximize" , { isToggle : ! 0 , label : c . maximize . maximize , command : "maximize" , toolbar : "tools,10" } ) ; a . on ( "mode" , function ( ) { var b = a . getCommand ( "maximize" ) ; b . setState ( b . state == CKEDITOR . TRISTATE _DISABLED ? CKEDITOR . TRISTATE _DISABLED : m ) } , null , null , 100 ) ; if ( a . config . maximize _historyIntegration ) d . on ( a . config . maximize _historyIntegration === CKEDITOR . HISTORY _NATIVE ? "popstate" : "hashchange" ,
function ( ) { var b = a . getCommand ( "maximize" ) ; b . state === CKEDITOR . TRISTATE _ON && b . exec ( ) } ) } } } ) ; CKEDITOR . config . maximize _historyIntegration = CKEDITOR . HISTORY _NATIVE } ) ( ) ; CKEDITOR . plugins . add ( "newpage" , { init : function ( a ) { a . addCommand ( "newpage" , { modes : { wysiwyg : 1 , source : 1 } , exec : function ( b ) { var a = this ; b . setData ( b . config . newpage _html || "" , function ( ) { b . focus ( ) ; setTimeout ( function ( ) { b . fire ( "afterCommandExec" , { name : "newpage" , command : a } ) ; b . selectionChange ( ) } , 200 ) } ) } , async : ! 0 } ) ; a . ui . addButton && a . ui . addButton ( "NewPage" , { label : a . lang . newpage . toolbar , command : "newpage" , toolbar : "document,20" } ) } } ) ; ( function ( ) { function e ( a ) { return { "aria-label" : a , "class" : "cke_pagebreak" , contenteditable : "false" , "data-cke-display-name" : "pagebreak" , "data-cke-pagebreak" : 1 , style : "page-break-after: always" , title : a } } CKEDITOR . plugins . add ( "pagebreak" , { requires : "fakeobjects" , onLoad : function ( ) { var a = ( "background:url(" + CKEDITOR . getUrl ( this . path + "images/pagebreak.gif" ) + ") no-repeat center center;clear:both;width:100%;border-top:#999 1px dotted;border-bottom:#999 1px dotted;padding:0;height:7px;cursor:default;" ) . replace ( /;/g ,
for ( ; a ; ) { var b = a . getName ( ) ; if ( "ol" == b ) return { numberedlist : CKEDITOR . TRISTATE _OFF } ; if ( "ul" == b ) return { bulletedlist : CKEDITOR . TRISTATE _OFF } ; a = a . getParent ( ) } return null } ) } } } ; CKEDITOR . plugins . add ( "liststyle" , CKEDITOR . plugins . liststyle ) } ) ( ) ; ( function ( ) { function n ( a ) { if ( ! a || a . type != CKEDITOR . NODE _ELEMENT || "form" != a . getName ( ) ) return [ ] ; for ( var c= [ ] , d = [ "style" , "className" ] , b = 0 ; b < d. length ; b ++ ) { var e = a . $ . elements . namedItem ( d[ b ] ) ; e && ( e = new CKEDITOR . dom . element ( e ) , c . push ( [ e , e . nextSibling ] ) , e . remove ( ) ) } return c } function h ( a , c ) { if ( a && a . type == CKEDITOR . NODE _ELEMENT && "form" == a . getName ( ) && 0 < c. length ) for ( var d = c . length - 1 ; 0 <= d ; d -- ) { var b = c [ d ] [ 0 ] , e = c [ d ] [ 1 ] ; e ? b . insertBefore ( e ) : b . appendTo ( a ) } } function q ( a , c) { var d = n ( a ) , b = { } , e = a . $ ; c || ( b [ "class" ] = e . className ||
"" , e . className = "" ) ; b . inline = e. style . cssText || "" ; c || ( e . style . cssText = "position: static; overflow: visible" ) ; h( d ) ; return b } function r ( a , c ) { var d = n ( a ) , b = a . $ ; "class" in c&& ( b . className = c [ "class" ] ) ; "inline" in c && ( b . style . cssText = c . inline ) ; h ( d ) } function t ( a ) { if ( ! a . editable ( ) . isInline ( ) ) { var c= CKEDITOR . instances , d ; for ( d in c ) { var b = c [ d ] ; "wysiwyg" != b . mode || b . readOnly || ( b = b . document . getBody ( ) , b . setAttribute ( "contentEditable" , ! 1 ) , b . setAttribute ( "contentEditable" , ! 0 ) ) } a . editable ( ) . hasFocus && ( a . toolbox . focus ( ) ,
a . focus ( ) ) } } CKEDITOR . plugins . add ( "maximize" , { init : function ( a ) { function c( ) { var c = g . getViewPaneSize ( ) ; a . resize ( c. width , c . height , null , ! 0 ) } function d ( ) { var c = a . getCommand ( "maximize" ) ; c . state === CKEDITOR . TRISTATE _ON && c . exec ( ) } if ( a . elementMode != CKEDITOR . ELEMENT _MODE _INLINE ) { var b= a . lang , e = CKEDITOR . document , g = e . getWindow ( ) , l , m , p , n = CKEDITOR . TRISTATE _OFF ; a . addCommand ( "maximize" , { modes : { wysiwyg : ! CKEDITOR . env . iOS , source : ! CKEDITOR . env . iOS } , readOnly : 1 , editorFocus : ! 1 , exec : function ( ) { var b = a . container . getFirst ( function ( a ) { return a . type ==
CKEDITOR . NODE _ELEMENT && a . hasClass ( "cke_inner" ) } ) , d = a . ui . space ( "contents" ) ; if ( "wysiwyg" == a . mode ) { var f = a . getSelection ( ) ; l = f && f . getRanges ( ) ; m= g . getScrollPosition ( ) } else { var k= a . editable ( ) . $ ; l = ! CKEDITOR . env . ie && [ k. selectionStart , k . selectionEnd ] ; m = [ k . scrollLeft , k . scrollTop ] } if ( this . state == CKEDITOR . TRISTATE _OFF ) { g. on ( "resize" , c ) ; p = g . getScrollPosition ( ) ; for ( f = a . container ; f = f . getParent ( ) ; ) f . setCustomData ( "maximize_saved_styles" , q ( f ) ) , f . setStyle ( "z-index" , a . config . baseFloatZIndex - 5 ) ; d. setCustomData ( "maximize_saved_styles" ,
q( d , ! 0 ) ) ; b . setCustomData ( "maximize_saved_styles" , q ( b , ! 0 ) ) ; d = { overflow : CKEDITOR . env . webkit ? "" : "hidden" , width : 0 , height : 0 } ; e. getDocumentElement ( ) . setStyles ( d ) ; ! CKEDITOR . env . gecko && e . getDocumentElement ( ) . setStyle ( "position" , "fixed" ) ; CKEDITOR . env . gecko && CKEDITOR . env . quirks || e. getBody ( ) . setStyles ( d ) ; CKEDITOR . env . ie ? setTimeout ( function ( ) { g . $ . scrollTo ( 0 , 0 ) } , 0 ) : g . $ . scrollTo ( 0 , 0 ) ; b . setStyle ( "position" , CKEDITOR . env . gecko && CKEDITOR . env . quirks ? "fixed" : "absolute" ) ; b. $ . offsetLeft ; b . setStyles ( { "z-index" : a . config . baseFloatZIndex -
5 , left : "0px" , top : "0px" } ) ; b . addClass ( "cke_maximized" ) ; c ( ) ; d = b . getDocumentPosition ( ) ; b . setStyles ( { left : - 1 * d . x + "px" , top : - 1 * d . y + "px" } ) ; CKEDITOR . env . gecko && t ( a ) } else if ( this . state == CKEDITOR . TRISTATE _ON ) { g. removeListener ( "resize" , c ) ; for ( var f = [ d , b ] , h = 0 ; h < f . length ; h ++ ) r ( f [ h ] , f [ h ] . getCustomData ( "maximize_saved_styles" ) ) , f [ h ] . removeCustomData ( "maximize_saved_styles" ) ; for ( f = a . container ; f = f . getParent ( ) ; ) r ( f , f . getCustomData ( "maximize_saved_styles" ) ) , f . removeCustomData ( "maximize_saved_styles" ) ; CKEDITOR . env . ie ?
setTimeout( function ( ) { g . $ . scrollTo ( p . x , p . y ) } , 0 ) : g . $ . scrollTo ( p . x , p . y ) ; b . removeClass ( "cke_maximized" ) ; CKEDITOR . env . webkit && ( b . setStyle ( "display" , "inline" ) , setTimeout ( function ( ) { b . setStyle ( "display" , "block" ) } , 0 ) ) ; a . fire ( "resize" , { outerHeight : a . container . $ . offsetHeight , contentsHeight : d . $ . offsetHeight , outerWidth : a . container . $ . offsetWidth } ) } this . toggleState ( ) ; "wysiwyg" == a . mode ? l ? ( CKEDITOR . env . gecko && t ( a ) , a . getSelection ( ) . selectRanges ( l) , ( k = a . getSelection ( ) . getStartElement ( ) ) && k. scrollIntoView ( ! 0 ) ) : g . $ . scrollTo ( m . x ,
m. y ) : ( l && ( k . selectionStart = l [ 0 ] , k . selectionEnd = l [ 1 ] ) , k . scrollLeft = m [ 0 ] , k . scrollTop = m [ 1 ] ) ; l = m = null ; n = this . state ; a . fire ( "maximize" , this . state ) } , canUndo : ! 1 } ) ; a . ui . addButton && a . ui . addButton ( "Maximize" , { isToggle : ! 0 , label : b . maximize . maximize , command : "maximize" , toolbar : "tools,10" } ) ; a . on ( "mode" , function ( ) { var b = a . getCommand ( "maximize" ) ; b . setState ( b . state == CKEDITOR . TRISTATE _DISABLED ? CKEDITOR . TRISTATE _DISABLED : n ) } , null , null , 100 ) ; if ( a . config . maximize _historyIntegration ) { var h = a . config . maximize _historyIntegration ===
CKEDITOR . HISTORY _NATIVE ? "popstate" : "hashchange" ; g . on ( h , d ) ; a . on ( "destroy" , function ( ) { g . removeListener ( h , d ) } ) } } } } ) ; CKEDITOR . config . maximize _historyIntegration = CKEDITOR . HISTORY _NATIVE } ) ( ) ; CKEDITOR . plugins . add ( "newpage" , { init : function ( a ) { a . addCommand ( "newpage" , { modes : { wysiwyg : 1 , source : 1 } , exec : function ( b ) { var a = this ; b . setData ( b . config . newpage _html || "" , function ( ) { b . focus ( ) ; setTimeout ( function ( ) { b . fire ( "afterCommandExec" , { name : "newpage" , command : a } ) ; b . selectionChange ( ) } , 200 ) } ) } , async : ! 0 } ) ; a . ui . addButton && a . ui . addButton ( "NewPage" , { label : a . lang . newpage . toolbar , command : "newpage" , toolbar : "document,20" } ) } } ) ; ( function ( ) { function e ( a ) { return { "aria-label" : a , "class" : "cke_pagebreak" , contenteditable : "false" , "data-cke-display-name" : "pagebreak" , "data-cke-pagebreak" : 1 , style : "page-break-after: always" , title : a } } CKEDITOR . plugins . add ( "pagebreak" , { requires : "fakeobjects" , onLoad : function ( ) { var a = ( "background:url(" + CKEDITOR . getUrl ( this . path + "images/pagebreak.gif" ) + ") no-repeat center center;clear:both;width:100%;border-top:#999 1px dotted;border-bottom:#999 1px dotted;padding:0;height:7px;cursor:default;" ) . replace ( /;/g ,
" !important;" ) ; CKEDITOR . addCss ( "div.cke_pagebreak{" + a + "}" ) } , init : function ( a ) { a . blockless || ( a . addCommand ( "pagebreak" , CKEDITOR . plugins . pagebreakCmd ) , a . ui . addButton && a . ui . addButton ( "PageBreak" , { label : a . lang . pagebreak . toolbar , command : "pagebreak" , toolbar : "insert,70" } ) , CKEDITOR . env . webkit && a . on ( "contentDom" , function ( ) { a . document . on ( "click" , function ( c ) { c = c . data . getTarget ( ) ; c . is ( "div" ) && c . hasClass ( "cke_pagebreak" ) && a . getSelection ( ) . selectElement ( c ) } ) } ) ) } , afterInit : function ( a ) { function c ( f ) { CKEDITOR . tools . extend ( f . attributes ,
e ( a . lang . pagebreak . alt ) , ! 0 ) ; f . children . length = 0 } var b = a . dataProcessor , g = b && b . dataFilter , b = b && b . htmlFilter , h = /page-break-after\s*:\s*always/i , k = /display\s*:\s*none/i ; b && b . addRules ( { attributes : { "class" : function ( a , c ) { var b = a . replace ( "cke_pagebreak" , "" ) ; if ( b != a ) { var d = CKEDITOR . htmlParser . fragment . fromHtml ( '\x3cspan style\x3d"display: none;"\x3e\x26nbsp;\x3c/span\x3e' ) . children [ 0 ] ; c . children . length = 0 ; c . add ( d ) ; d = c . attributes ; delete d [ "aria-label" ] ; delete d . contenteditable ; delete d . title } return b } } } , { applyToAll : ! 0 ,
priority : 5 } ) ; g && g . addRules ( { elements : { div : function ( a ) { if ( a . attributes [ "data-cke-pagebreak" ] ) c ( a ) ; else if ( h . test ( a . attributes . style ) ) { var b = a . children [ 0 ] ; b && "span" == b . name && k . test ( b . attributes . style ) && c ( a ) } } } } ) } } ) ; CKEDITOR . plugins . pagebreakCmd = { exec : function ( a ) { a . insertElement ( CKEDITOR . plugins . pagebreak . createElement ( a ) ) } , context : "div" , allowedContent : { div : { styles : "!page-break-after" } , span : { match : function ( a ) { return ( a = a . parent ) && "div" == a . name && a . styles && a . styles [ "page-break-after" ] } , styles : "display" } } ,
@ -1023,21 +1025,21 @@ b);0>a||(this.notifications.splice(a,1),b.element.remove(),this.element.getChild
a . on ( "change" , this . _changeBuffer . input ) ; a . on ( "floatingSpaceLayout" , this . _layout , this , null , 20 ) ; a . on ( "blur" , this . _layout , this , null , 20 ) } , _removeListeners : function ( ) { var b = CKEDITOR . document . getWindow ( ) , a = this . editor ; b . removeListener ( "scroll" , this . _uiBuffer . input ) ; b . removeListener ( "resize" , this . _uiBuffer . input ) ; a . removeListener ( "change" , this . _changeBuffer . input ) ; a . removeListener ( "floatingSpaceLayout" , this . _layout ) ; a . removeListener ( "blur" , this . _layout ) } , _layout : function ( ) { function b ( ) { a . setStyle ( "left" ,
k ( n + d . width - g - h ) ) } var a = this . element , c = this . editor , d = c . ui . contentsElement . getClientRect ( ) , e = c . ui . contentsElement . getDocumentPosition ( ) , f , l , u = a . getClientRect ( ) , m , g = this . _notificationWidth , h = this . _notificationMargin ; m = CKEDITOR . document . getWindow ( ) ; var p = m . getScrollPosition ( ) , t = m . getViewPaneSize ( ) , q = CKEDITOR . document . getBody ( ) , r = q . getDocumentPosition ( ) , k = CKEDITOR . tools . cssLength ; g && h || ( m = this . element . getChild ( 0 ) , g = this . _notificationWidth = m . getClientRect ( ) . width , h = this . _notificationMargin = parseInt ( m . getComputedStyle ( "margin-left" ) ,
10 ) + parseInt ( m . getComputedStyle ( "margin-right" ) , 10 ) ) ; c . toolbar && ( f = c . ui . space ( c . config . toolbarLocation ) , l = f . getClientRect ( ) ) ; f && f . isVisible ( ) && l . bottom > d . top && l . bottom < d . bottom - u . height ? a . setStyles ( { position : "fixed" , top : k ( l . bottom ) } ) : 0 < d . top ? a . setStyles ( { position : "absolute" , top : k ( e . y ) } ) : e . y + d . height - u . height > p . y ? a . setStyles ( { position : "fixed" , top : 0 } ) : a . setStyles ( { position : "absolute" , top : k ( e . y + d . height - u . height ) } ) ; var n = "fixed" == a . getStyle ( "position" ) ? d . left : "static" != q . getComputedStyle ( "position" ) ?
e . x - r . x : e . x ; d . width < g + h ? e . x + g + h > p . x + t . width ? b ( ) : a . setStyle ( "left" , k ( n ) ) : e . x + g + h > p . x + t . width ? a . setStyle ( "left" , k ( n ) ) : e . x + d . width / 2 + g / 2 + h > p . x + t . width ? a . setStyle ( "left" , k ( n - e . x + p . x + t . width - g - h ) ) : 0 > d . left + d . width - g - h ? b ( ) : 0 > d . left + d . width / 2 - g / 2 ? a . setStyle ( "left" , k ( n - e . x + p . x ) ) : a . setStyle ( "left" , k ( n + d . width / 2 - g / 2 - h / 2 ) ) } } ; CKEDITOR . plugins . notification = q } ) ( ) ; ( function ( ) { function D ( a ) { function d ( ) { for ( var b = f ( ) , e = CKEDITOR . tools . clone ( a. config . toolbarGroups ) || v ( a ) , n = 0 ; n < e . length ; n ++ ) { var g = e [ n ] ; if ( "/" != g ) { "string" == typeof g && ( g = e [ n ] = { name : g } ) ; var l , d = g . groups ; if ( d ) for ( var h = 0 ; h < d . length ; h ++ ) l = d [ h ] , ( l = b [ l ] ) && c ( g , l ) ; ( l = b [ g . name ] ) && c ( g , l ) } } return e } function f ( ) { var b = { } , c , e , g ; for ( c in a. ui . items ) e = a . ui . items [ c ] , g = e . toolbar || "others" , g = g . split ( "," ) , e = g [ 0 ] , g = parseInt ( g [ 1 ] || - 1 , 10 ) , b[ e ] || ( b [ e ] = [ ] ) , b [ e ] . push ( { name : c , order : g } ) ; for ( e in b) b [ e ] = b [ e ] . sort ( function ( b ,
a) { return b . order == a . order ? 0 : 0 > a . order ? - 1 : 0 > b . order ? 1 : b . order < a . order ? - 1 : 1 } ) ; return b } function c ( c , e ) { if ( e . length ) { c . items ? c . items . push ( a . ui . create ( "-" ) ) : c . items = [ ] ; for ( var d ; d = e . shift ( ) ; ) d = "string" == typeof d ? d : d . name , b && - 1 != CKEDITOR . tools . indexOf ( b, d ) || ( d = a . ui . create ( d ) ) && a . addFeature ( d ) && c . items . push ( d ) } } function h ( b) { var a = [ ] , e , d , h ; for ( e = 0 ; e < b. length ; ++ e ) d = b [ e ] , h = { } , "/" == d ? a . push ( d ) : CKEDITOR . tools . isArray ( d ) ? ( c ( h , CKEDITOR . tools . clone ( d ) ) , a . push ( h ) ) : d . items && ( c ( h , CKEDITOR . tools . clone ( d . items ) ) ,
h . name = d . name , a. push ( h ) ) ; return a } var b = a . config . removeButtons , b = b && b . split ( "," ) , e = a . config . toolbar ; "string" == typeof e && ( e = a . config [ "toolbar_" + e ] ) ; return a . toolbar = e ? h ( e ) : d ( ) } function v ( a) { return a . _ . toolbarGroups || ( a . _ . toolbarGroups = [ { name : "document" , groups : [ "mode" , "document" , "doctools" ] } , { name : "clipboard" , groups : [ "clipboard" , "undo" ] } , { name : "editing" , groups : [ "find" , "selection" , "spellchecker" ] } , { name : "forms" } , "/" , { name : "basicstyles" , groups : [ "basicstyles" , "cleanup" ] } , { name : "paragraph" , groups : [ "list" ,
"indent" , "blocks" , "align" , "bidi" ] } , { name : "links" } , { name : "insert" } , "/" , { name : "styles" } , { name : "colors" } , { name : "tools" } , { name : "others" } , { name : "about" } ] ) } var z = function ( ) { this . toolbars = [ ] } ; z . prototype . focus = function ( ) { for ( var a = 0 , d ; d = this . toolbars [ a ++ ] ; ) for ( var f = 0 , c ; c = d . items [ f ++ ] ; ) if ( c . focus ) { c . focus ( ) ; return } } ; var E = { modes : { wysiwyg : 1 , source : 1 } , readOnly : 1 , exec : function ( a) { a . toolbox && ( CKEDITOR . env . ie || CKEDITOR . env . air ? setTimeout ( function ( ) { a . toolbox . focus ( ) } , 100 ) : a . toolbox . focus ( ) ) } } ; CKEDITOR . plugins . add ( "toolbar" ,
{ requires : "button" , init : function ( a ) { var d , f = function ( c , h ) { var b, e = "rtl" == a . lang . dir , k = a . config . toolbarGroupCycling , q = e ? 37 : 39 , e = e ? 39 : 37 , k = void 0 === k || k ; switch ( h ) { case 9 : case CKEDITOR . SHIFT + 9 : for ( ; ! b|| ! b . items . length ; ) if ( b = 9 == h ? ( b ? b . next : c . toolbar . next ) || a . toolbox . toolbars [ 0 ] : ( b? b . previous : c . toolbar . previous ) || a. toolbox . toolbars [ a . toolbox . toolbars . length - 1 ] , b . items . length ) for ( c = b. items [ d ? b . items . length - 1 : 0 ] ; c && ! c . focus ; ) ( c = d ? c . previous : c . next ) || ( b = 0 ) ; c && c . focus ( ) ; return ! 1 ; case q : b = c ; do b = b . next , ! b &&
k && ( b = c . toolbar . items [ 0 ] ) ; while ( b&& ! b . focus ) ; b ? b . focus ( ) : f ( c , 9 ) ; return ! 1 ; case 40 : return c . button && c . button . hasArrow ? c . execute ( ) : f ( c , 40 == h ? q : e ) , ! 1 ; case e : case 38 : b= c ; do b = b . previous , ! b && k && ( b = c . toolbar . items [ c . toolbar . items . length - 1 ] ) ; while ( b&& ! b . focus ) ; b ? b . focus ( ) : ( d = 1 , f ( c , CKEDITOR . SHIFT + 9 ) , d = 0 ) ; return ! 1 ; case 27 : return a . focus ( ) , ! 1 ; case 13 : case 32 : return c . execute ( ) , ! 1 ; case CKEDITOR . ALT + 122 : return a . execCommand ( "elementsPathFocus" ) , ! 1 } return ! 0 } ; a . on ( "uiSpace" , function ( c ) { if ( c . data . space == a . config . toolbarLocation ) { c . removeListener ( ) ;
a. toolbox = new z ; var d = CKEDITOR . tools . getNextId ( ) , b = [ '\x3cspan id\x3d"' , d , '" class\x3d"cke_voice_label"\x3e' , a . lang . toolbar . toolbars , "\x3c/span\x3e" , '\x3cspan id\x3d"' + a . ui . spaceId ( "toolbox" ) + '" class\x3d"cke_toolbox" role\x3d"group" aria-labelledby\x3d"' , d , '" onmousedown\x3d"return false;"\x3e' ] , d = ! 1 !== a . config . toolbarStartupExpanded , e , k ; a. config . toolbarCanCollapse && a . elementMode != CKEDITOR . ELEMENT _MODE _INLINE && b . push ( '\x3cspan class\x3d"cke_toolbox_main"' + ( d ? "\x3e" : ' style\x3d"display:none"\x3e' ) ) ;
for ( var q = a . toolbox . toolbars , n = D ( a ) , g = n . length , l = 0 ; l < g ; l ++ ) { var r , m = 0 , w , p = n [ l ] , v = "/" !== p && ( "/" === n [ l + 1 ] || l == g - 1 ) , x ; if ( p ) if ( e && ( b . push ( "\x3c/span\x3e" ) , k = e = 0 ) , "/" === p ) b . push ( '\x3cspan class\x3d"cke_toolbar_break"\x3e\x3c/span\x3e' ) ; else { x = p . items || p ; for ( var y = 0 ; y < x . length ; y ++ ) { var t = x [ y ] , A ; if ( t ) { var B = function ( c ) { c = c . render ( a, b ) ; u = m . items . push ( c ) - 1 ; 0 < u && ( c . previous = m . items [ u - 1 ] , c . previous . next = c ) ; c . toolbar = m ; c . onkey = f } ; if ( t . type == CKEDITOR . UI _SEPARATOR ) k = e && t ; else { A = ! 1 !== t . canGroup ; if ( ! m ) { r = CKEDITOR . tools . getNextId ( ) ;
m = { id : r , items : [ ] } ; w = p . name && ( a . lang . toolbar . toolbarGroups [ p . name ] || p . name ) ; b . push ( '\x3cspan id\x3d"' , r , '" class\x3d"cke_toolbar' + ( v ? ' cke_toolbar_last"' : '"' ) , w ? ' aria-labelledby\x3d"' + r + '_label"' : "" , ' role\x3d"toolbar"\x3e' ) ; w && b . push ( '\x3cspan id\x3d"' , r , '_label" class\x3d"cke_voice_label"\x3e' , w , "\x3c/span\x3e" ) ; b . push ( '\x3cspan class\x3d"cke_toolbar_start"\x3e\x3c/span\x3e' ) ; var u = q . push ( m ) - 1 ; 0 < u && ( m . previous = q [ u - 1 ] , m . previous . next = m ) } A ? e || ( b . push ( '\x3cspan class\x3d"cke_toolgroup" role\x3d"presentation"\x3e' ) ,
e = 1 ) : e && ( b . push ( "\x3c/span\x3e" ) , e = 0 ) ; k && ( B ( k ) , k = 0 ) ; B ( t ) } } } e && ( b . push ( "\x3c/span\x3e" ) , k = e = 0 ) ; m && b . push ( '\x3cspan class\x3d"cke_toolbar_end"\x3e\x3c/span\x3e\x3c/span\x3e' ) } } a. config . toolbarCanCollapse && b . push ( "\x3c/span\x3e" ) ; if ( a. config . toolbarCanCollapse && a . elementMode != CKEDITOR . ELEMENT _MODE _INLINE ) { var C = CKEDITOR . tools . addFunction ( function ( ) { a . execCommand ( "toolbarCollapse" ) } ) ; a . on ( "destroy" , function ( ) { CKEDITOR . tools . removeFunction ( C ) } ) ; a . addCommand ( "toolbarCollapse" , { readOnly : 1 , exec : function ( b ) { var a =
b . ui. space ( "toolbar_collapser" ) , c = a. getPrevious ( ) , d = b . ui . space ( "contents" ) , e = c . getParent ( ) , h = parseInt ( d . $ . style . height , 10 ) , g = e . $ . offsetHeight , f = a . hasClass ( "cke_toolbox_collapser_min" ) ; f ? ( c . show ( ) , a . removeClass ( "cke_toolbox_collapser_min" ) , a. setAttribute ( "title" , b . lang . toolbar . toolbarCollapse ) ) : ( c . hide ( ) , a . addClass ( "cke_toolbox_collapser_min" ) , a. setAttribute ( "title" , b . lang . toolbar . toolbarExpand ) ) ; a . getFirst ( ) . setText ( f ? "▲" : "◀" ) ; d . setStyle ( "height" , h - ( e . $ . offsetHeight - g ) + "px" ) ; b . fire ( "resize" , { outerHeight : b . container . $ . offsetHeight ,
contentsHeight : d . $ . offsetHeight , outerWidth : b . container . $ . offsetWidth } ) } , modes : { wysiwyg : 1 , source : 1 } } ) ; a . setKeystroke ( CKEDITOR . ALT + ( CKEDITOR . env . ie || CKEDITOR . env . webkit ? 189 : 109 ) , "toolbarCollapse" ) ; b . push ( '\x3ca title\x3d"' + ( d ? a. lang . toolbar . toolbarCollapse : a . lang . toolbar . toolbarExpand ) + '" id\x3d"' + a . ui . spaceId ( "toolbar_collapser" ) + '" tabIndex\x3d"-1" class\x3d"cke_toolbox_collapser' ) ; d || b . push ( " cke_toolbox_collapser_min" ) ; b . push ( '" onclick\x3d"CKEDITOR.tools.callFunction(' + C + ')"\x3e' , '\x3cspan class\x3d"cke_arrow"\x3e\x26#9650;\x3c/span\x3e' ,
"\x3c/a\x3e" ) } b . push ( "\x3c/span\x3e" ) ; c . data . html += b. join ( "" ) } } ) ; a . on ( "destroy" , function ( ) { if ( this . toolbox ) { var a, d = 0 , b , e , f ; for ( a = this . toolbox . toolbars ; d < a . length ; d ++ ) for ( e = a[ d ] . items , b = 0 ; b < e . length ; b ++ ) f = e [ b ] , f . clickFn && CKEDITOR . tools . removeFunction ( f . clickFn ) , f . keyDownFn && CKEDITOR . tools . removeFunction ( f . keyDownFn ) } } ) ; a . on ( "uiReady" , function ( ) { var c = a . ui . space ( "toolbox" ) ; c && a . focusManager . add ( c , 1 ) } ) ; a . addCommand ( "toolbarFocus" , E ) ; a . setKeystroke ( CKEDITOR . ALT + 121 , "toolbarFocus" ) ; a . ui . add ( "-" , CKEDITOR . UI _SEPARATOR ,
{ } ) ; a . ui . addHandler ( CKEDITOR . UI _SEPARATOR , { create : function ( ) { return { render : function ( a , d ) { d . push ( '\x3cspan class\x3d"cke_toolbar_separator" role\x3d"separator"\x3e\x3c/span\x3e' ) ; return { } } } } } ) } } ) ; CKEDITOR . ui . prototype . addToolbarGroup = function ( a , d , f ) { var c = v ( this . editor ) , h = 0 === d , b= { name : a } ; if ( f ) { if ( f = CKEDITOR . tools . search ( c , function ( a ) { return a . name == f } ) ) { ! f . groups && ( f . groups = [ ] ) ; if ( d && ( d = CKEDITOR . tools . indexOf ( f . groups , d ) , 0 <= d ) ) { f . groups . splice ( d + 1 , 0 , a ) ; return } h ? f . groups . splice ( 0 , 0 , a ) : f . groups . push ( a ) ;
return } d = null } d && ( d = CKEDITOR . tools . indexOf ( c , function ( a ) { return a . name == d } ) ) ; h ? c . splice ( 0 , 0 , a ) : "number" == typeof d ? c . splice ( d + 1 , 0 , b) : c . push ( a ) } } ) ( ) ; CKEDITOR . UI _SEPARATOR = "separator" ; CKEDITOR . config . toolbarLocation = "top" ; ( function ( ) { function t ( a , b , c ) { b . type || ( b . type = "auto" ) ; if ( c && ! 1 === a . fire ( "beforePaste" , b ) || ! b . dataValue && b . dataTransfer . isEmpty ( ) ) return ! 1 ; b . dataValue || ( b . dataValue = "" ) ; if ( CKEDITOR . env . gecko && "drop" == b . method && a . toolbox ) a . once ( "afterPaste" , function ( ) { a . toolbox . focus ( ) ; a . focus ( ) } ) ; return a . fire ( "paste" , b ) } function y ( a ) { function b ( ) { var b = a . editable ( ) ; if ( CKEDITOR . plugins . clipboard . isCustomCopyCutSupported ) { var c = function ( b ) { a . getSelection ( ) . isCollapsed ( ) || ( a . readOnly && "cut" == b . name || n . initPasteDataTransfer ( b ,
e . x - r . x : e . x ; d . width < g + h ? e . x + g + h > p . x + t . width ? b ( ) : a . setStyle ( "left" , k ( n ) ) : e . x + g + h > p . x + t . width ? a . setStyle ( "left" , k ( n ) ) : e . x + d . width / 2 + g / 2 + h > p . x + t . width ? a . setStyle ( "left" , k ( n - e . x + p . x + t . width - g - h ) ) : 0 > d . left + d . width - g - h ? b ( ) : 0 > d . left + d . width / 2 - g / 2 ? a . setStyle ( "left" , k ( n - e . x + p . x ) ) : a . setStyle ( "left" , k ( n + d . width / 2 - g / 2 - h / 2 ) ) } } ; CKEDITOR . plugins . notification = q } ) ( ) ; ( function ( ) { function D ( b ) { function d ( ) { for ( var a = f ( ) , e = CKEDITOR . tools . clone ( b. config . toolbarGroups ) || v ( b ) , n = 0 ; n < e . length ; n ++ ) { var g = e [ n ] ; if ( "/" != g ) { "string" == typeof g && ( g = e [ n ] = { name : g } ) ; var l , d = g . groups ; if ( d ) for ( var h = 0 ; h < d . length ; h ++ ) l = d [ h ] , ( l = a [ l ] ) && c ( g , l ) ; ( l = a [ g . name ] ) && c ( g , l ) } } return e } function f ( ) { var a = { } , c , e , g ; for ( c in b. ui . items ) e = b . ui . items [ c ] , g = e . toolbar || "others" , g = g . split ( "," ) , e = g [ 0 ] , g = parseInt ( g [ 1 ] || - 1 , 10 ) , a[ e ] || ( a [ e ] = [ ] ) , a [ e ] . push ( { name : c , order : g } ) ; for ( e in a) a [ e ] = a [ e ] . sort ( function ( a ,
b) { return a . order == b . order ? 0 : 0 > b . order ? - 1 : 0 > a . order ? 1 : a . order < b . order ? - 1 : 1 } ) ; return a } function c ( c , e ) { if ( e . length ) { c . items ? c . items . push ( b . ui . create ( "-" ) ) : c . items = [ ] ; for ( var d ; d = e . shift ( ) ; ) d = "string" == typeof d ? d : d . name , a && - 1 != CKEDITOR . tools . indexOf ( a, d ) || ( d = b . ui . create ( d ) ) && b . addFeature ( d ) && c . items . push ( d ) } } function h ( a) { var b = [ ] , e , d , h ; for ( e = 0 ; e < a. length ; ++ e ) d = a [ e ] , h = { } , "/" == d ? b . push ( d ) : CKEDITOR . tools . isArray ( d ) ? ( c ( h , CKEDITOR . tools . clone ( d ) ) , b . push ( h ) ) : d . items && ( c ( h , CKEDITOR . tools . clone ( d . items ) ) ,
h . name = d . name , b. push ( h ) ) ; return b } var a = function ( a ) { return a && "string" === typeof a ? a . split ( "," ) : a } ( b . config . removeButtons ) , e = b . config . toolbar ; "string" == typeof e && ( e = b . config [ "toolbar_" + e ] ) ; return b . toolbar = e ? h ( e ) : d ( ) } function v ( b) { return b . _ . toolbarGroups || ( b . _ . toolbarGroups = [ { name : "document" , groups : [ "mode" , "document" , "doctools" ] } , { name : "clipboard" , groups : [ "clipboard" , "undo" ] } , { name : "editing" , groups : [ "find" , "selection" , "spellchecker" ] } , { name : "forms" } , "/" , { name : "basicstyles" , groups : [ "basicstyles" , "cleanup" ] } ,
{ name : "paragraph" , groups : [ "list" , "indent" , "blocks" , "align" , "bidi" ] } , { name : "links" } , { name : "insert" } , "/" , { name : "styles" } , { name : "colors" } , { name : "tools" } , { name : "others" } , { name : "about" } ] ) } var z = function ( ) { this . toolbars = [ ] } ; z . prototype . focus = function ( ) { for ( var b = 0 , d ; d = this . toolbars [ b ++ ] ; ) for ( var f = 0 , c ; c = d . items [ f ++ ] ; ) if ( c . focus ) { c . focus ( ) ; return } } ; var E = { modes : { wysiwyg : 1 , source : 1 } , readOnly : 1 , exec : function ( b) { b . toolbox && ( CKEDITOR . env . ie || CKEDITOR . env . air ? setTimeout ( function ( ) { b . toolbox . focus ( ) } , 100 ) : b . toolbox . focus ( ) ) } } ;
CKEDITOR . plugins . add ( "toolbar" , { requires : "button" , init : function ( b ) { var d , f = function ( c , h ) { var a, e = "rtl" == b . lang . dir , k = b . config . toolbarGroupCycling , q = e ? 37 : 39 , e = e ? 39 : 37 , k = void 0 === k || k ; switch ( h ) { case 9 : case CKEDITOR . SHIFT + 9 : for ( ; ! a|| ! a . items . length ; ) if ( a = 9 == h ? ( a ? a . next : c . toolbar . next ) || b . toolbox . toolbars [ 0 ] : ( a? a . previous : c . toolbar . previous ) || b. toolbox . toolbars [ b . toolbox . toolbars . length - 1 ] , a . items . length ) for ( c = a. items [ d ? a . items . length - 1 : 0 ] ; c && ! c . focus ; ) ( c = d ? c . previous : c . next ) || ( a = 0 ) ; c && c . focus ( ) ; return ! 1 ;
case q : a = c ; do a = a . next , ! a && k && ( a = c . toolbar . items [ 0 ] ) ; while ( a&& ! a . focus ) ; a ? a . focus ( ) : f ( c , 9 ) ; return ! 1 ; case 40 : return c . button && c . button . hasArrow ? c . execute ( ) : f ( c , 40 == h ? q : e ) , ! 1 ; case e : case 38 : a= c ; do a = a . previous , ! a && k && ( a = c . toolbar . items [ c . toolbar . items . length - 1 ] ) ; while ( a&& ! a . focus ) ; a ? a . focus ( ) : ( d = 1 , f ( c , CKEDITOR . SHIFT + 9 ) , d = 0 ) ; return ! 1 ; case 27 : return b . focus ( ) , ! 1 ; case 13 : case 32 : return c . execute ( ) , ! 1 ; case CKEDITOR . ALT + 122 : return b . execCommand ( "elementsPathFocus" ) , ! 1 } return ! 0 } ; b . on ( "uiSpace" , function ( c ) { if ( c . data . space ==
b. config . toolb arLocation) { c . removeListener ( ) ; b . toolbox = new z ; var d = CKEDITOR . tools . getNextId ( ) , a = [ '\x3cspan id\x3d"' , d , '" class\x3d"cke_voice_label"\x3e' , b . lang . toolbar . toolbars , "\x3c/span\x3e" , '\x3cspan id\x3d"' + b . ui . spaceId ( "toolbox" ) + '" class\x3d"cke_toolbox" role\x3d"group" aria-labelledby\x3d"' , d , '" onmousedown\x3d"return false;"\x3e' ] , d = ! 1 !== b . config . toolbarStartupExpanded , e , k ; b. config . toolbarCanCollapse && b . elementMode != CKEDITOR . ELEMENT _MODE _INLINE && a . push ( '\x3cspan class\x3d"cke_toolbox_main"' +
( d ? "\x3e" : ' style\x3d"display:none"\x3e' ) ) ; for ( var q = b . toolbox . toolbars , n = D ( b ) , g = n . length , l = 0 ; l < g ; l ++ ) { var r , m = 0 , w , p = n [ l ] , v = "/" !== p && ( "/" === n [ l + 1 ] || l == g - 1 ) , x ; if ( p ) if ( e && ( a . push ( "\x3c/span\x3e" ) , k = e = 0 ) , "/" === p ) a . push ( '\x3cspan class\x3d"cke_toolbar_break"\x3e\x3c/span\x3e' ) ; else { x = p . items || p ; for ( var y = 0 ; y < x . length ; y ++ ) { var t = x [ y ] , A ; if ( t ) { var B = function ( c ) { c = c . render ( b, a ) ; u = m . items . push ( c ) - 1 ; 0 < u && ( c . previous = m . items [ u - 1 ] , c . previous . next = c ) ; c . toolbar = m ; c . onkey = f } ; if ( t . type == CKEDITOR . UI _SEPARATOR ) k = e &&
t ; else { A = ! 1 !== t . canGroup ; if ( ! m ) { r = CKEDITOR . tools . getNextId ( ) ; m = { id : r , items : [ ] } ; w = p . name && ( b . lang . toolbar . toolbarGroups [ p . name ] || p . name ) ; a . push ( '\x3cspan id\x3d"' , r , '" class\x3d"cke_toolbar' + ( v ? ' cke_toolbar_last"' : '"' ) , w ? ' aria-labelledby\x3d"' + r + '_label"' : "" , ' role\x3d"toolbar"\x3e' ) ; w && a . push ( '\x3cspan id\x3d"' , r , '_label" class\x3d"cke_voice_label"\x3e' , w , "\x3c/span\x3e" ) ; a . push ( '\x3cspan class\x3d"cke_toolbar_start"\x3e\x3c/span\x3e' ) ; var u = q . push ( m ) - 1 ; 0 < u && ( m . previous = q [ u - 1 ] , m . previous . next = m ) } A ?
e || ( a . push ( '\x3cspan class\x3d"cke_toolgroup" role\x3d"presentation"\x3e' ) , e = 1 ) : e && ( a . push ( "\x3c/span\x3e" ) , e = 0 ) ; k && ( B ( k ) , k = 0 ) ; B ( t ) } } } e && ( a . push ( "\x3c/span\x3e" ) , k = e = 0 ) ; m && a . push ( '\x3cspan class\x3d"cke_toolbar_end"\x3e\x3c/span\x3e\x3c/span\x3e' ) } } b. config . toolbarCanCollapse && a . push ( "\x3c/span\x3e" ) ; if ( b. config . toolbarCanCollapse && b . elementMode != CKEDITOR . ELEMENT _MODE _INLINE ) { var C = CKEDITOR . tools . addFunction ( function ( ) { b . execCommand ( "toolbarCollapse" ) } ) ; b . on ( "destroy" , function ( ) { CKEDITOR . tools . removeFunction ( C ) } ) ;
b . addCommand( "toolbarCollapse" , { readOnly : 1 , exec : function ( a ) { var b = a . ui. space ( "toolbar_collapser" ) , c = b. getPrevious ( ) , d = a . ui . space ( "contents" ) , e = c . getParent ( ) , h = parseInt ( d . $ . style . height , 10 ) , g = e . $ . offsetHeight , f = b . hasClass ( "cke_toolbox_collapser_min" ) ; f ? ( c . show ( ) , b . removeClass ( "cke_toolbox_collapser_min" ) , b. setAttribute ( "title" , a . lang . toolbar . toolbarCollapse ) ) : ( c . hide ( ) , b . addClass ( "cke_toolbox_collapser_min" ) , b. setAttribute ( "title" , a . lang . toolbar . toolbarExpand ) ) ; b . getFirst ( ) . setText ( f ? "▲" : "◀" ) ; d . setStyle ( "height" ,
h - ( e . $ . offsetHeight - g ) + "px" ) ; a . fire ( "resize" , { outerHeight : a . container . $ . offsetHeight , contentsHeight : d . $ . offsetHeight , outerWidth : a . container . $ . offsetWidth } ) } , modes : { wysiwyg : 1 , source : 1 } } ) ; b . setKeystroke ( CKEDITOR . ALT + ( CKEDITOR . env . ie || CKEDITOR . env . webkit ? 189 : 109 ) , "toolbarCollapse" ) ; a . push ( '\x3ca title\x3d"' + ( d ? b. lang . toolbar . toolbarCollapse : b . lang . toolbar . toolbarExpand ) + '" id\x3d"' + b . ui . spaceId ( "toolbar_collapser" ) + '" tabIndex\x3d"-1" class\x3d"cke_toolbox_collapser' ) ; d || a . push ( " cke_toolbox_collapser_min" ) ;
a . push ( '" onclick\x3d"CKEDITOR.tools.callFunction(' + C + ')"\x3e' , '\x3cspan class\x3d"cke_arrow"\x3e\x26#9650;\x3c/span\x3e' , "\x3c/a\x3e" ) } a . push ( "\x3c/span\x3e" ) ; c . data . html += a. join ( "" ) } } ) ; b . on ( "destroy" , function ( ) { if ( this . toolbox ) { var b, d = 0 , a , e , f ; for ( b = this . toolbox . toolbars ; d < b . length ; d ++ ) for ( e = b[ d ] . items , a = 0 ; a < e . length ; a ++ ) f = e [ a ] , f . clickFn && CKEDITOR . tools . removeFunction ( f . clickFn ) , f . keyDownFn && CKEDITOR . tools . removeFunction ( f . keyDownFn ) } } ) ; b . on ( "uiReady" , function ( ) { var c = b . ui . space ( "toolbox" ) ; c && b . focusManager . add ( c ,
1 ) } ) ; b . addCommand ( "toolbarFocus" , E ) ; b . setKeystroke ( CKEDITOR . ALT + 121 , "toolbarFocus" ) ; b . ui . add ( "-" , CKEDITOR . UI _SEPARATOR , { } ) ; b . ui . addHandler ( CKEDITOR . UI _SEPARATOR , { create : function ( ) { return { render : function ( b , d ) { d . push ( '\x3cspan class\x3d"cke_toolbar_separator" role\x3d"separator"\x3e\x3c/span\x3e' ) ; return { } } } } } ) } } ) ; CKEDITOR . ui . prototype . addToolbarGroup = function ( b , d , f ) { var c = v ( this . editor ) , h = 0 === d , a= { name : b } ; if ( f ) { if ( f = CKEDITOR . tools . search ( c , function ( a ) { return a . name == f } ) ) { ! f . groups && ( f . groups = [ ] ) ; if ( d &&
( d = CKEDITOR . tools . indexOf ( f . groups , d ) , 0 <= d ) ) { f . groups . splice ( d + 1 , 0 , b ) ; return } h ? f . groups . splice ( 0 , 0 , b ) : f . groups . push ( b ) ; return } d = null } d && ( d = CKEDITOR . tools . indexOf ( c , function ( a ) { return a . name == d } ) ) ; h ? c . splice ( 0 , 0 , b ) : "number" == typeof d ? c . splice ( d + 1 , 0 , a) : c . push ( b ) } } ) ( ) ; CKEDITOR . UI _SEPARATOR = "separator" ; CKEDITOR . config . toolbarLocation = "top" ; ( function ( ) { function t ( a , b , c ) { b . type || ( b . type = "auto" ) ; if ( c && ! 1 === a . fire ( "beforePaste" , b ) || ! b . dataValue && b . dataTransfer . isEmpty ( ) ) return ! 1 ; b . dataValue || ( b . dataValue = "" ) ; if ( CKEDITOR . env . gecko && "drop" == b . method && a . toolbox ) a . once ( "afterPaste" , function ( ) { a . toolbox . focus ( ) ; a . focus ( ) } ) ; return a . fire ( "paste" , b ) } function y ( a ) { function b ( ) { var b = a . editable ( ) ; if ( CKEDITOR . plugins . clipboard . isCustomCopyCutSupported ) { var c = function ( b ) { a . getSelection ( ) . isCollapsed ( ) || ( a . readOnly && "cut" == b . name || n . initPasteDataTransfer ( b ,
a ) , b . data . preventDefault ( ) ) } ; b . on ( "copy" , c ) ; b . on ( "cut" , c ) ; b . on ( "cut" , function ( ) { a . readOnly || a . extractSelectedHtml ( ) } , null , null , 999 ) } b . on ( n . mainPasteEvent , function ( a ) { "beforepaste" == n . mainPasteEvent && u || m ( a ) } ) ; "beforepaste" == n . mainPasteEvent && ( b . on ( "paste" , function ( a ) { w || ( g ( ) , a . data . preventDefault ( ) , m ( a ) , e ( "paste" ) ) } ) , b . on ( "contextmenu" , f , null , null , 0 ) , b . on ( "beforepaste" , function ( a ) { ! a . data || a . data . $ . ctrlKey || a . data . $ . shiftKey || f ( ) } , null , null , 0 ) ) ; b . on ( "beforecut" , function ( ) { ! u && l ( a ) } ) ; var h ; b . attachListener ( CKEDITOR . env . ie ?
b : a . document . getDocumentElement ( ) , "mouseup" , function ( ) { h = setTimeout ( p , 0 ) } ) ; a . on ( "destroy" , function ( ) { clearTimeout ( h ) } ) ; b . on ( "keyup" , p ) } function c ( b ) { return { type : b , canUndo : "cut" == b , startDisabled : ! 0 , fakeKeystroke : "cut" == b ? CKEDITOR . CTRL + 88 : CKEDITOR . CTRL + 67 , exec : function ( ) { "cut" == this . type && l ( ) ; var b ; var c = this . type ; if ( CKEDITOR . env . ie ) b = e ( c ) ; else try { b = a . document . $ . execCommand ( c , ! 1 , null ) } catch ( h ) { b = ! 1 } b || a . showNotification ( a . lang . clipboard [ this . type + "Error" ] ) ; return b } } } function d ( ) { return { canUndo : ! 1 ,
async : ! 0 , fakeKeystroke : CKEDITOR . CTRL + 86 , exec : function ( a , b ) { function c ( b , m ) { m = "undefined" !== typeof m ? m : ! 0 ; b ? ( b . method = "paste" , b . dataTransfer || ( b . dataTransfer = n . initPasteDataTransfer ( ) ) , t ( a , b , m ) ) : d && ! a . _ . forcePasteDialog && a . showNotification ( p , "info" , a . config . clipboard _notificationDuration ) ; a . _ . forcePasteDialog = ! 1 ; a . fire ( "afterCommandExec" , { name : "paste" , command : h , returnValue : ! ! b } ) } b = "undefined" !== typeof b && null !== b ? b : { } ; var h = this , d = "undefined" !== typeof b . notification ? b . notification : ! 0 , m = b . type , e = CKEDITOR . tools . keystrokeToString ( a . lang . common . keyboard ,
@ -1061,39 +1063,39 @@ method:"drop"},1);d.sourceEditor.fire("saveSnapshot");d.sourceEditor.editable().
var e = a . editable ( ) , l = CKEDITOR . plugins . clipboard . getDropTarget ( a ) , q = a . ui . space ( "top" ) , v = a . ui . space ( "bottom" ) ; b . preventDefaultDropOnElement ( q ) ; b . preventDefaultDropOnElement ( v ) ; e . attachListener ( l , "dragstart" , g ) ; e . attachListener ( a , "dragstart" , b . resetDragDataTransfer , b , null , 1 ) ; e . attachListener ( a , "dragstart" , function ( c ) { b . initDragDataTransfer ( c , a ) } , null , null , 2 ) ; e . attachListener ( a , "dragstart" , function ( ) { var c = b . dragRange = a . getSelection ( ) . getRanges ( ) [ 0 ] ; CKEDITOR . env . ie && 10 > CKEDITOR . env . version && ( b . dragStartContainerChildCount =
c ? f ( c . startContainer ) : null , b . dragEndContainerChildCount = c ? f ( c . endContainer ) : null ) } , null , null , 100 ) ; e . attachListener ( l , "dragend" , g ) ; e . attachListener ( a , "dragend" , b . initDragDataTransfer , b , null , 1 ) ; e . attachListener ( a , "dragend" , b . resetDragDataTransfer , b , null , 100 ) ; e . attachListener ( l , "dragover" , function ( a ) { if ( CKEDITOR . env . edge ) a . data . preventDefault ( ) ; else { var b = a . data . getTarget ( ) ; b && b . is && b . is ( "html" ) ? a . data . preventDefault ( ) : CKEDITOR . env . ie && CKEDITOR . plugins . clipboard . isFileApiSupported && a . data . $ . dataTransfer . types . contains ( "Files" ) &&
a . data . preventDefault ( ) } } ) ; e . attachListener ( l , "drop" , function ( c ) { if ( ! c . data . $ . defaultPrevented && ( c . data . preventDefault ( ) , ! a . readOnly ) ) { var d = c . data . getTarget ( ) ; if ( ! d . isReadOnly ( ) || d . type == CKEDITOR . NODE _ELEMENT && d . is ( "html" ) ) { var d = b . getRangeAtDropPosition ( c , a ) , e = b . dragRange ; d && g ( c , e , d ) } } } , null , null , 9999 ) ; e . attachListener ( a , "drop" , b . initDragDataTransfer , b , null , 1 ) ; e . attachListener ( a , "drop" , function ( h ) { if ( h = h . data ) { var e = h . dropRange , p = h . dragRange , k = h . dataTransfer ; k . getTransferType ( a ) == CKEDITOR . DATA _TRANSFER _INTERNAL ?
setTimeout ( function ( ) { b . internalDrop ( p , e , k , a ) } , 0 ) : k . getTransferType ( a ) == CKEDITOR . DATA _TRANSFER _CROSS _EDITORS ? c ( p , e , k ) : d ( e , k ) } } , null , null , 9999 ) } ) } var r ; CKEDITOR . plugins . add ( "clipboard" , { requires : "dialog,notification,toolbar" , _supportedFileMatchers : [ ] , init : function ( a ) { function b ( a) { return - 1 !== CKEDITOR . tools . indexOf ( [ "image/png" , "image/jpeg" , "image/gif" ] , a. type ) } function c ( b ) { return CKEDITOR . tools . array . some ( a . plugins . clipboard . _supportedFileMatchers , function ( a ) { return a ( b ) } ) } function d ( b ) { b . length &&
( b = CKEDITOR . tools . array . unique ( b ) , b = CKEDITOR . tools . array . filter ( b , function ( a ) { return ! ! CKEDITOR . tools . trim ( a ) } ) , b = g ( b . join ( ", " ) ) , a . showNotification ( b , "info" , a . config . clipboard _notificationDuration ) ) } function g ( b ) { return b ? a . lang . clipboard . fileFormatNotSupportedNotification . replace ( /\${formats\}/g , "\x3cem\x3e" + b + "\x3c/em\x3e" ) : a . lang . clipboard . fileWithoutFormatNotSupportedNotification } function f ( a , b ) { return CKEDITOR . env . ie && a . data . fileTransferCancel || ! ( CKEDITOR . env . ie || b && v !== b . id ) ? ! 1 : b . isFileTransfer ( ) &&
1 === b . getFilesCount ( ) } var e , l = C ( a ) ; a . config . forcePasteAsPlainText ? e = "plain-text" : a . config . pasteFilter ? e = a . config . pasteFilter : ! CKEDITOR . env . webkit || "pasteFilter" in a . config || ( e = "semantic-content" ) ; a . pasteFilter = l . get ( e ) ; y ( a ) ; E ( a ) ; CKEDITOR . dialog . add ( "paste" , CKEDITOR . getUrl ( this . path + "dialogs/paste.js" ) ) ; var q = CKEDITOR . plugins . clipboard . isCustomDataTypesSupported || CKEDITOR . plugins . clipboard . isFileApiSupported , v ; CKEDITOR . plugins . clipboard . addFileMatcher ( a , b ) ; a . on ( "paste" , function ( a ) { if ( q ) { var b = a . data ;
a = b . dataTransfer ; if ( ! b . dataValue ) { for ( var b = [ ] , e = 0 ; e < a . getFilesCount ( ) ; e ++ ) { var k = a . getFile ( e ) ; c ( k ) || b . push ( k . type ) } d ( b ) } } } , null , null , 1 ) ; a . on ( "paste" , function ( c ) { if ( q && a . config . clipboard _handleImages ) { var d = c . data , e = d . dataTransfer ; if ( ! d . dataValue && f ( c , e ) && ( e = e . getFile ( 0 ) , b ( e ) ) ) { var k = new FileReader ; k . addEventListener ( "load" , function ( ) { c . data . dataValue = '\x3cimg src\x3d"' + k . result + '" /\x3e' ; a . fire ( "paste" , c . data ) } , ! 1 ) ; k . addEventListener ( "abort" , function ( ) { CKEDITOR . env . ie && ( c . data . fileTransferCancel =
! 0 ) ; a . fire ( "paste" , c . data ) } , ! 1 ) ; k . addEventListener ( "error" , function ( ) { CKEDITOR . env . ie && ( c . data . fileTransferCancel = ! 0 ) ; a . fire ( "paste" , c . data ) } , ! 1 ) ; k . readAsDataURL ( e ) ; v = d . dataTransfer . id ; c . stop ( ) } } } , null , null , 1 ) ; a . on ( "paste" , function ( b ) { b . data . dataTransfer || ( b . data . dataTransfer = new CKEDITOR . plugins . clipboard . dataTransfer ) ; if ( ! b . data . dataValue ) { var c = b . data . dataTransfer , d = c . getData ( "text/html" ) ; if ( d ) b . data . dataValue = d , b . data . type = "html" ; else if ( d = c . getData ( "text/plain" ) ) b . data . dataValue = a . editable ( ) . transformPlainTextToHtml ( d ) ,
b . data . type = "text" } } , null , null , 1 ) ; a . on ( "paste" , function ( a ) { var b = a . data . dataValue , c = CKEDITOR . dtd . $block ; - 1 < b . indexOf ( "Apple-" ) && ( b = b . replace ( /<span class="Apple-converted-space"> <\/span>/gi , " " ) , "html" != a . data . type && ( b = b . replace ( /<span class="Apple-tab-span"[^>]*>([^<]*)<\/span>/gi , function ( a , b ) { return b . replace ( /\t/g , "\x26nbsp;\x26nbsp; \x26nbsp;" ) } ) ) , - 1 < b . indexOf ( '\x3cbr class\x3d"Apple-interchange-newline"\x3e' ) && ( a . data . startsWithEOL = 1 , a . data . preSniffing = "html" , b = b . replace ( /<br class="Apple-interchange-newline">/ ,
"" ) ) , b = b . replace ( /(<[^>]+) class="Apple-[^"]*"/gi , "$1" ) ) ; if ( b . match ( /^<[^<]+cke_(editable|contents)/i ) ) { var d , e , f = new CKEDITOR . dom . element ( "div" ) ; for ( f . setHtml ( b ) ; 1 == f . getChildCount ( ) && ( d = f . getFirst ( ) ) && d . type == CKEDITOR . NODE _ELEMENT && ( d . hasClass ( "cke_editable" ) || d . hasClass ( "cke_contents" ) ) ; ) f = e = d ; e && ( b = e . getHtml ( ) . replace ( /<br>$/i , "" ) ) } CKEDITOR . env . ie ? b = b . replace ( /^ (?: |\r\n)?<(\w+)/g , function ( b , d ) { return d . toLowerCase ( ) in c ? ( a . data . preSniffing = "html" , "\x3c" + d ) : b } ) : CKEDITOR . env . webkit ? b = b . replace ( /<\/(\w+)><div><br><\/div>$/ ,
function ( b , d ) { return d in c ? ( a . data . endsWithEOL = 1 , "\x3c/" + d + "\x3e" ) : b } ) : CKEDITOR . env . gecko && ( b = b . replace ( /(\s)<br>$/ , "$1" ) ) ; a . data . dataValue = b } , null , null , 3 ) ; a . on ( "paste" , function ( b ) { b = b . data ; var c = a . _ . nextPasteType || b . type , d = b . dataValue , e , f = a . config . clipboard _defaultContentType || "html" , g = b . dataTransfer . getTransferType ( a ) == CKEDITOR . DATA _TRANSFER _EXTERNAL , q = ! 0 === a . config . forcePasteAsPlainText ; e = "html" == c || "html" == b . preSniffing ? "html" : z ( d ) ; delete a . _ . nextPasteType ; "htmlifiedtext" == e && ( d = A ( a . config , d ) ) ;
if ( "text" == c && "html" == e ) d = x ( a , d , l . get ( "plain-text" ) ) ; else if ( g && a . pasteFilter && ! b . dontFilter || q ) d = x ( a , d , a . pasteFilter ) ; b . startsWithEOL && ( d = '\x3cbr data-cke-eol\x3d"1"\x3e' + d ) ; b . endsWithEOL && ( d += '\x3cbr data-cke-eol\x3d"1"\x3e' ) ; "auto" == c && ( c = "html" == e || "html" == f ? "html" : "text" ) ; b . type = c ; b . dataValue = d ; delete b . preSniffing ; delete b . startsWithEOL ; delete b . endsWithEOL } , null , null , 6 ) ; a . on ( "paste" , function ( b ) { b = b . data ; b . dataValue && ( a . insertHtml ( b . dataValue , b . type , b . range ) , setTimeout ( function ( ) { a . fire ( "afterPaste" ) } ,
0 ) ) } , null , null , 1E3 ) ; a . on ( "pasteDialog" , function ( b ) { setTimeout ( function ( ) { a . openDialog ( "paste" , b . data ) } , 0 ) } ) } } ) ; CKEDITOR . plugins . clipboard = { addFileMatcher : function ( a , b ) { a . plugins . clipboard . _supportedFileMatchers . push ( b ) } , isCustomCopyCutSupported : CKEDITOR . env . ie && 16 > CKEDITOR . env . version || CKEDITOR . env . iOS && 605 > CKEDITOR . env . version ? ! 1 : ! 0 , isCustomDataTypesSupported : ! CKEDITOR . env . ie || 16 <= CKEDITOR . env . version , isFileApiSupported : ! CKEDITOR . env . ie || 9 < CKEDITOR . env . version , mainPasteEvent : CKEDITOR . env . ie && ! CKEDITOR . env . edge ?
"beforepaste" : "paste" , addPasteButton : function ( a , b , c ) { a . ui . addButton && ( a . ui . addButton ( b , c ) , a . _ . pasteButtons || ( a . _ . pasteButtons = [ ] ) , a . _ . pasteButtons . push ( b ) ) } , canClipboardApiBeTrusted : function ( a , b ) { return a . getTransferType ( b ) != CKEDITOR . DATA _TRANSFER _EXTERNAL || CKEDITOR . env . chrome && ! a . isEmpty ( ) || CKEDITOR . env . gecko && ( a . getData ( "text/html" ) || a . getFilesCount ( ) ) || CKEDITOR . env . safari && 603 <= CKEDITOR . env . version && ! CKEDITOR . env . iOS || CKEDITOR . env . iOS && 605 <= CKEDITOR . env . version || CKEDITOR . env . edge && 16 <= CKEDITOR . env . version ?
! 0 : ! 1 } , getDropTarget : function ( a ) { var b = a . editable ( ) ; return CKEDITOR . env . ie && 9 > CKEDITOR . env . version || b . isInline ( ) ? b : a . document } , fixSplitNodesAfterDrop : function ( a , b , c , d ) { function g ( a , c , d ) { var f = a ; f . type == CKEDITOR . NODE _TEXT && ( f = a . getParent ( ) ) ; if ( f . equals ( c ) && d != c . getChildCount ( ) ) return a = b . startContainer . getChild ( b . startOffset - 1 ) , c = b . startContainer . getChild ( b . startOffset ) , a && a . type == CKEDITOR . NODE _TEXT && c && c . type == CKEDITOR . NODE _TEXT && ( d = a . getLength ( ) , a . setText ( a . getText ( ) + c . getText ( ) ) , c . remove ( ) , b . setStart ( a ,
d ) , b . collapse ( ! 0 ) ) , ! 0 } var f = b . startContainer ; "number" == typeof d && "number" == typeof c && f . type == CKEDITOR . NODE _ELEMENT && ( g ( a . startContainer , f , c ) || g ( a . endContainer , f , d ) ) } , isDropRangeAffectedByDragRange : function ( a , b ) { var c = b . startContainer , d = b . endOffset ; return a . endContainer . equals ( c ) && a . endOffset <= d || a . startContainer . getParent ( ) . equals ( c ) && a . startContainer . getIndex ( ) < d || a . endContainer . getParent ( ) . equals ( c ) && a . endContainer . getIndex ( ) < d ? ! 0 : ! 1 } , internalDrop : function ( a , b , c , d ) { var g = CKEDITOR . plugins . clipboard ,
f = d . editable ( ) , e , l ; d . fire ( "saveSnapshot" ) ; d . fire ( "lockSnapshot" , { dontUpdate : 1 } ) ; CKEDITOR . env . ie && 10 > CKEDITOR . env . version && this . fixSplitNodesAfterDrop ( a , b , g . dragStartContainerChildCount , g . dragEndContainerChildCount ) ; ( l = this . isDropRangeAffectedByDragRange ( a , b ) ) || ( e = a . createBookmark ( ! 1 ) ) ; g = b . clone ( ) . createBookmark ( ! 1 ) ; l && ( e = a . createBookmark ( ! 1 ) ) ; a = e . startNode ; b = e . endNode ; l = g . startNode ; b && a . getPosition ( l ) & CKEDITOR . POSITION _PRECEDING && b . getPosition ( l ) & CKEDITOR . POSITION _FOLLOWING && l . insertBefore ( a ) ; a = d . createRange ( ) ;
a . moveToBookmark ( e ) ; f . extractHtmlFromRange ( a , 1 ) ; b = d . createRange ( ) ; g . startNode . getCommonAncestor ( f ) || ( g = d . getSelection ( ) . createBookmarks ( ) [ 0 ] ) ; b . moveToBookmark ( g ) ; t ( d , { dataTransfer : c , method : "drop" , range : b } , 1 ) ; d . fire ( "unlockSnapshot" ) } , getRangeAtDropPosition : function ( a , b ) { var c = a . data . $ , d = c . clientX , g = c . clientY , f = b . getSelection ( ! 0 ) . getRanges ( ) [ 0 ] , e = b . createRange ( ) ; if ( a . data . testRange ) return a . data . testRange ; if ( document . caretRangeFromPoint && b . document . $ . caretRangeFromPoint ( d , g ) ) c = b . document . $ . caretRangeFromPoint ( d ,
g ) , e . setStart ( CKEDITOR . dom . node ( c . startContainer ) , c . startOffset ) , e . collapse ( ! 0 ) ; else if ( c . rangeParent ) e . setStart ( CKEDITOR . dom . node ( c . rangeParent ) , c . rangeOffset ) , e . collapse ( ! 0 ) ; else { if ( CKEDITOR . env . ie && 8 < CKEDITOR . env . version && f && b . editable ( ) . hasFocus ) return f ; if ( document . body . createTextRange ) { b . focus ( ) ; c = b . document . getBody ( ) . $ . createTextRange ( ) ; try { for ( var l = ! 1 , q = 0 ; 20 > q && ! l ; q ++ ) { if ( ! l ) try { c . moveToPoint ( d , g - q ) , l = ! 0 } catch ( r ) { } if ( ! l ) try { c . moveToPoint ( d , g + q ) , l = ! 0 } catch ( h ) { } } if ( l ) { var m = "cke-temp-" + ( new Date ) . getTime ( ) ;
c . pasteHTML ( '\x3cspan id\x3d"' + m + '"\x3e \x3c/span\x3e' ) ; var p = b . document . getById ( m ) ; e . moveToPosition ( p , CKEDITOR . POSITION _BEFORE _START ) ; p . remove ( ) } else { var k = b . document . $ . elementFromPoint ( d , g ) , n = new CKEDITOR . dom . element ( k ) , u ; if ( n . equals ( b . editable ( ) ) || "html" == n . getName ( ) ) return f && f . startContainer && ! f . startContainer . equals ( b . editable ( ) ) ? f : null ; u = n . getClientRect ( ) ; d < u . left ? e . setStartAt ( n , CKEDITOR . POSITION _AFTER _START ) : e . setStartAt ( n , CKEDITOR . POSITION _BEFORE _END ) ; e . collapse ( ! 0 ) } } catch ( t ) { return null } } else return null } return e } ,
initDragDataTransfer : function ( a , b ) { var c = a . data . $ ? a . data . $ . dataTransfer : null , d = new this . dataTransfer ( c , b ) ; "dragstart" === a . name && d . storeId ( ) ; c ? this . dragData && d . id == this . dragData . id ? d = this . dragData : this . dragData = d : this . dragData ? d = this . dragData : this . dragData = d ; a . data . dataTransfer = d } , resetDragDataTransfer : function ( ) { this . dragData = null } , initPasteDataTransfer : function ( a , b ) { if ( this . isCustomCopyCutSupported ) { if ( a && a . data && a . data . $ ) { var c = a . data . $ . clipboardData , d = new this . dataTransfer ( c , b ) ; "copy" !== a . name &&
"cut" !== a . name || d . storeId ( ) ; this . copyCutData && d . id == this . copyCutData . id ? ( d = this . copyCutData , d . $ = c ) : this . copyCutData = d ; return d } return new this . dataTransfer ( null , b ) } return new this . dataTransfer ( CKEDITOR . env . edge && a && a . data . $ && a . data . $ . clipboardData || null , b ) } , preventDefaultDropOnElement : function ( a ) { a && a . on ( "dragover" , D ) } } ; r = CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ? "cke/id" : "Text" ; CKEDITOR . plugins . clipboard . dataTransfer = function ( a , b ) { a && ( this . $ = a ) ; this . _ = { metaRegExp : /^<meta.*?>/i , fragmentRegExp : /\s*\x3c!--StartFragment--\x3e|\x3c!--EndFragment--\x3e\s*/g ,
types : [ ] , data : { } , files : [ ] , nativeHtmlCache : "" , normalizeType : function ( a ) { a = a . toLowerCase ( ) ; return "text" == a || "text/plain" == a ? "Text" : "url" == a ? "URL" : "files" === a ? "Files" : a } } ; this . _ . fallbackDataTransfer = new CKEDITOR . plugins . clipboard . fallbackDataTransfer ( this ) ; this . id = this . getData ( r ) ; this . id || ( this . id = "Text" == r ? "" : "cke-" + CKEDITOR . tools . getUniqueId ( ) ) ; b && ( this . sourceEditor = b , this . setData ( "text/html" , b . getSelectedHtml ( 1 ) ) , "Text" == r || this . getData ( "text/plain" ) || this . setData ( "text/plain" , b . getSelection ( ) . getSelectedText ( ) ) ) } ;
CKEDITOR . DATA _TRANSFER _INTERNAL = 1 ; CKEDITOR . DATA _TRANSFER _CROSS _EDITORS = 2 ; CKEDITOR . DATA _TRANSFER _EXTERNAL = 3 ; CKEDITOR . plugins . clipboard . dataTransfer . prototype = { getData : function ( a , b ) { a = this . _ . normalizeType ( a ) ; var c = "text/html" == a && b ? this . _ . nativeHtmlCache : this . _ . data [ a ] ; if ( void 0 === c || null === c || "" === c ) { if ( this . _ . fallbackDataTransfer . isRequired ( ) ) c = this . _ . fallbackDataTransfer . getData ( a , b ) ; else try { c = this . $ . getData ( a ) || "" } catch ( d ) { c = "" } "text/html" != a || b || ( c = this . _stripHtml ( c ) ) } "Text" == a && CKEDITOR . env . gecko &&
this . getFilesCount ( ) && "file://" == c . substring ( 0 , 7 ) && ( c = "" ) ; if ( "string" === typeof c ) var g = c . indexOf ( "\x3c/html\x3e" ) , c = - 1 !== g ? c . substring ( 0 , g + 7 ) : c ; return c } , setData : function ( a , b ) { a = this . _ . normalizeType ( a ) ; "text/html" == a ? ( this . _ . data [ a ] = this . _stripHtml ( b ) , this . _ . nativeHtmlCache = b ) : this . _ . data [ a ] = b ; if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported || "URL" == a || "Text" == a ) if ( "Text" == r && "Text" == a && ( this . id = b ) , this . _ . fallbackDataTransfer . isRequired ( ) ) this . _ . fallbackDataTransfer . setData ( a , b ) ; else try { this . $ . setData ( a ,
b ) } catch ( c ) { } } , storeId : function ( ) { "Text" !== r && this . setData ( r , this . id ) } , getTransferType : function ( a ) { return this . sourceEditor ? this . sourceEditor == a ? CKEDITOR . DATA _TRANSFER _INTERNAL : CKEDITOR . DATA _TRANSFER _CROSS _EDITORS : CKEDITOR . DATA _TRANSFER _EXTERNAL } , cacheData : function ( ) { function a ( a ) { a = b . _ . normalizeType ( a ) ; var c = b . getData ( a ) ; "text/html" == a && ( b . _ . nativeHtmlCache = b . getData ( a , ! 0 ) , c = b . _stripHtml ( c ) ) ; c && ( b . _ . data [ a ] = c ) ; b . _ . types . push ( a ) } if ( this . $ ) { var b = this , c , d , g ; if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ) { if ( this . $ . types ) for ( c =
0 ; c < this . $ . types . length ; c ++ ) a ( this . $ . types [ c ] ) } else a ( "Text" ) , a ( "URL" ) ; d = this . _getImageFromClipboard ( ) ; if ( ( g = this . $ && this . $ . files || null ) || d ) { this . _ . files = [ ] ; if ( g && g . length ) for ( c = 0 ; c < g . length ; c ++ ) this . _ . files . push ( g [ c ] ) ; 0 === this . _ . files . length && d && this . _ . files . push ( d ) } } } , getFilesCount : function ( ) { if ( this . _ . files . length ) return this . _ . files . length ; var a = this . $ && this . $ . files || null ; return a && a . length ? a . length : this . _getImageFromClipboard ( ) ? 1 : 0 } , getFile : function ( a ) { if ( this . _ . files . length ) return this . _ . files [ a ] ;
var b = this . $ && this . $ . files || null ; return b && b . length ? b [ a ] : 0 === a ? this . _getImageFromClipboard ( ) : void 0 } , isFileTransfer : function ( ) { var a = this . getTypes ( ) , a = CKEDITOR . tools . array . filter ( a , function ( a ) { return "application/x-moz-file" !== a } ) ; return 1 === a . length && "files" === a [ 0 ] . toLowerCase ( ) } , isEmpty : function ( ) { var a = { } , b ; if ( this . getFilesCount ( ) ) return ! 1 ; CKEDITOR . tools . array . forEach ( CKEDITOR . tools . object . keys ( this . _ . data ) , function ( b ) { a [ b ] = 1 } ) ; if ( this . $ ) if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ) { if ( this . $ . types ) for ( var c =
0 ; c < this . $ . types . length ; c ++ ) a [ this . $ . types [ c ] ] = 1 } else a . Text = 1 , a . URL = 1 ; "Text" != r && ( a [ r ] = 0 ) ; for ( b in a ) if ( a [ b ] && "" !== this . getData ( b ) ) return ! 1 ; return ! 0 } , getTypes : function ( ) { return 0 < this . _ . types . length ? this . _ . types : this . $ && this . $ . types ? [ ] . slice . call ( this . $ . types ) : [ ] } , _getImageFromClipboard : function ( ) { var a ; try { if ( this . $ && this . $ . items && this . $ . items [ 0 ] && ( a = this . $ . items [ 0 ] . getAsFile ( ) ) && a . type ) return a } catch ( b ) { } } , _stripHtml : function ( a ) { function b ( a ) { var b = new CKEDITOR . htmlParser , g , f ; b . onTagOpen = function ( a ) { "body" ===
a && ( g = b . _ . htmlPartsRegex . lastIndex ) } ; b . onTagClose = function ( a ) { "body" === a && ( f = b . _ . htmlPartsRegex . lastIndex ) } ; b . parse ( a ) ; return "number" !== typeof g || "number" !== typeof f ? a : a . substring ( g , f ) . replace ( /<\/body\s*>$/gi , "" ) } a && a . length && ( a = b ( a ) , a = a . replace ( this . _ . metaRegExp , "" ) , a = a . replace ( this . _ . fragmentRegExp , "" ) ) ; return a } } ; CKEDITOR . plugins . clipboard . fallbackDataTransfer = function ( a ) { this . _dataTransfer = a ; this . _customDataFallbackType = "text/html" } ; CKEDITOR . plugins . clipboard . fallbackDataTransfer . _isCustomMimeTypeSupported =
null ; CKEDITOR . plugins . clipboard . fallbackDataTransfer . _customTypes = [ ] ; CKEDITOR . plugins . clipboard . fallbackDataTransfer . prototype = { isRequired : function ( ) { var a = CKEDITOR . plugins . clipboard . fallbackDataTransfer , b = this . _dataTransfer . $ ; if ( null === a . _isCustomMimeTypeSupported ) if ( b ) { a . _isCustomMimeTypeSupported = ! 1 ; if ( CKEDITOR . env . edge && 17 <= CKEDITOR . env . version ) return ! 0 ; try { b . setData ( "cke/mimetypetest" , "cke test value" ) , a . _isCustomMimeTypeSupported = "cke test value" === b . getData ( "cke/mimetypetest" ) , b . clearData ( "cke/mimetypetest" ) } catch ( c ) { } } else return ! 1 ;
return ! a . _isCustomMimeTypeSupported } , getData : function ( a , b ) { var c = this . _getData ( this . _customDataFallbackType , ! 0 ) ; if ( b ) return c ; var c = this . _extractDataComment ( c ) , d = null , d = a === this . _customDataFallbackType ? c . content : c . data && c . data [ a ] ? c . data [ a ] : this . _getData ( a , ! 0 ) ; return null !== d ? d : "" } , setData : function ( a , b ) { var c = a === this . _customDataFallbackType ; c && ( b = this . _applyDataComment ( b , this . _getFallbackTypeData ( ) ) ) ; var d = b , g = this . _dataTransfer . $ ; try { g . setData ( a , d ) , c && ( this . _dataTransfer . _ . nativeHtmlCache = d ) } catch ( f ) { if ( this . _isUnsupportedMimeTypeError ( f ) ) { c =
CKEDITOR . plugins . clipboard . fallbackDataTransfer ; - 1 === CKEDITOR . tools . indexOf ( c . _customTypes , a ) && c . _customTypes . push ( a ) ; var c = this . _getFallbackTypeContent ( ) , e = this . _getFallbackTypeData ( ) ; e [ a ] = d ; try { d = this . _applyDataComment ( c , e ) , g . setData ( this . _customDataFallbackType , d ) , this . _dataTransfer . _ . nativeHtmlCache = d } catch ( l ) { d = "" } } } return d } , _getData : function ( a , b ) { var c = this . _dataTransfer . _ . data ; if ( ! b && c [ a ] ) return c [ a ] ; try { return this . _dataTransfer . $ . getData ( a ) } catch ( d ) { return null } } , _getFallbackTypeContent : function ( ) { var a =
this . _dataTransfer . _ . data [ this . _customDataFallbackType ] ; a || ( a = this . _extractDataComment ( this . _getData ( this . _customDataFallbackType , ! 0 ) ) . content ) ; return a } , _getFallbackTypeData : function ( ) { var a = CKEDITOR . plugins . clipboard . fallbackDataTransfer . _customTypes , b = this . _extractDataComment ( this . _getData ( this . _customDataFallbackType , ! 0 ) ) . data || { } , c = this . _dataTransfer . _ . data ; CKEDITOR . tools . array . forEach ( a , function ( a ) { void 0 !== c [ a ] ? b [ a ] = c [ a ] : void 0 !== b [ a ] && ( b [ a ] = b [ a ] ) } , this ) ; return b } , _isUnsupportedMimeTypeError : function ( a ) { return a . message &&
- 1 !== a . message . search ( /element not found/gi ) } , _extractDataComment : function ( a ) { var b = { data : null , content : a || "" } ; if ( a && 16 < a . length ) { var c ; ( c = /\x3c!--cke-data:(.*?)--\x3e/g . exec ( a ) ) && c [ 1 ] && ( b . data = JSON . parse ( decodeURIComponent ( c [ 1 ] ) ) , b . content = a . replace ( c [ 0 ] , "" ) ) } return b } , _applyDataComment : function ( a , b ) { var c = "" ; b && CKEDITOR . tools . object . keys ( b ) . length && ( c = "\x3c!--cke-data:" + encodeURIComponent ( JSON . stringify ( b ) ) + "--\x3e" ) ; return c + ( a && a . length ? a : "" ) } } } ) ( ) ;
CKEDITOR . config . clipboard _notificationDuration = 1E4 ; CKEDITOR . config . clipboard _handleImages = ! 0 ; ( function ( ) { CKEDITOR . plugins . add ( "xml" , { } ) ; CKEDITOR . xml = function ( c ) { var a = null ; if ( "object" == typeof c ) a = c ; else if ( c = ( c || "" ) . replace ( / /g , " " ) , "ActiveXObject" in window ) { try { a = new ActiveXObject ( "MSXML2.DOMDocument" ) } catch ( b ) { try { a = new ActiveXObject ( "Microsoft.XmlDom" ) } catch ( d ) { } } a && ( a . async = ! 1 , a . resolveExternals = ! 1 , a . validateOnParse = ! 1 , a . loadXML ( c ) ) } else window . DOMParser && ( a = ( new DOMParser ) . parseFromString ( c , "text/xml" ) ) ; this . baseXml = a } ; CKEDITOR . xml . prototype = { selectSingleNode : function ( c , a ) { var b =
setTimeout ( function ( ) { b . internalDrop ( p , e , k , a ) } , 0 ) : k . getTransferType ( a ) == CKEDITOR . DATA _TRANSFER _CROSS _EDITORS ? c ( p , e , k ) : d ( e , k ) } } , null , null , 9999 ) } ) } var r ; CKEDITOR . plugins . add ( "clipboard" , { requires : "dialog,notification,toolbar" , _supportedFileMatchers : [ ] , init : function ( a ) { function b ( b) { return a . config . clipboard _handleImages ? - 1 !== CKEDITOR . tools . indexOf ( [ "image/png" , "image/jpeg" , "image/gif" ] , b. type ) : ! 1 } function c ( b ) { return CKEDITOR . tools . array . some ( a . plugins . clipboard . _supportedFileMatchers , function ( a ) { return a ( b ) } ) }
function d ( b ) { b . length && ( b = CKEDITOR . tools . array . unique ( b ) , b = CKEDITOR . tools . array . filter ( b , function ( a ) { return ! ! CKEDITOR . tools . trim ( a ) } ) , b = g ( b . join ( ", " ) ) , a . showNotification ( b , "info" , a . config . clipboard _notificationDuration ) ) } function g ( b ) { return b ? a . lang . clipboard . fileFormatNotSupportedNotification . replace ( /\${formats\}/g , "\x3cem\x3e" + b + "\x3c/em\x3e" ) : a . lang . clipboard . fileWithoutFormatNotSupportedNotification } function f ( a , b ) { return CKEDITOR . env . ie && a . data . fileTransferCancel || ! ( CKEDITOR . env . ie || b && v !==
b . id ) ? ! 1 : b . isFileTransfer ( ) && 1 === b . getFilesCount ( ) } var e , l = C ( a ) ; a . config . forcePasteAsPlainText ? e = "plain-text" : a . config . pasteFilter ? e = a . config . pasteFilter : ! CKEDITOR . env . webkit || "pasteFilter" in a . config || ( e = "semantic-content" ) ; a . pasteFilter = l . get ( e ) ; y ( a ) ; E ( a ) ; CKEDITOR . dialog . add ( "paste" , CKEDITOR . getUrl ( this . path + "dialogs/paste.js" ) ) ; var q = CKEDITOR . plugins . clipboard . isCustomDataTypesSupported || CKEDITOR . plugins . clipboard . isFileApiSupported , v ; CKEDITOR . plugins . clipboard . addFileMatcher ( a , b ) ; a . on ( "paste" ,
function ( a ) { if ( q ) { var b = a . data ; a = b . dataTransfer ; if ( ! b . dataValue ) { for ( var b = [ ] , e = 0 ; e < a . getFilesCount ( ) ; e ++ ) { var k = a . getFile ( e ) ; c ( k ) || b . push ( k . type ) } d ( b ) } } } , null , null , 1 ) ; a . on ( "paste" , function ( c ) { if ( q && a . config . clipboard _handleImages ) { var d = c . data , e = d . dataTransfer ; if ( ! d . dataValue && f ( c , e ) && ( e = e . getFile ( 0 ) , b ( e ) ) ) { var k = new FileReader ; k . addEventListener ( "load" , function ( ) { c . data . dataValue = '\x3cimg src\x3d"' + k . result + '" /\x3e' ; a . fire ( "paste" , c . data ) } , ! 1 ) ; k . addEventListener ( "abort" , function ( ) { CKEDITOR . env . ie &&
( c . data . fileTransferCancel = ! 0 ) ; a . fire ( "paste" , c . data ) } , ! 1 ) ; k . addEventListener ( "error" , function ( ) { CKEDITOR . env . ie && ( c . data . fileTransferCancel = ! 0 ) ; a . fire ( "paste" , c . data ) } , ! 1 ) ; k . readAsDataURL ( e ) ; v = d . dataTransfer . id ; c . stop ( ) } } } , null , null , 1 ) ; a . on ( "paste" , function ( b ) { b . data . dataTransfer || ( b . data . dataTransfer = new CKEDITOR . plugins . clipboard . dataTransfer ) ; if ( ! b . data . dataValue ) { var c = b . data . dataTransfer , d = c . getData ( "text/html" ) ; if ( d ) b . data . dataValue = d , b . data . type = "html" ; else if ( d = c . getData ( "text/plain" ) ) b . data . dataValue =
a . editable ( ) . transformPlainTextToHtml ( d ) , b . data . type = "text" } } , null , null , 1 ) ; a . on ( "paste" , function ( a ) { var b = a . data . dataValue , c = CKEDITOR . dtd . $block ; - 1 < b . indexOf ( "Apple-" ) && ( b = b . replace ( /<span class="Apple-converted-space"> <\/span>/gi , " " ) , "html" != a . data . type && ( b = b . replace ( /<span class="Apple-tab-span"[^>]*>([^<]*)<\/span>/gi , function ( a , b ) { return b . replace ( /\t/g , "\x26nbsp;\x26nbsp; \x26nbsp;" ) } ) ) , - 1 < b . indexOf ( '\x3cbr class\x3d"Apple-interchange-newline"\x3e' ) && ( a . data . startsWithEOL = 1 , a . data . preSniffing =
"html" , b = b . replace ( /<br class="Apple-interchange-newline">/ , "" ) ) , b = b . replace ( /(<[^>]+) class="Apple-[^"]*"/gi , "$1" ) ) ; if ( b . match ( /^<[^<]+cke_(editable|contents)/i ) ) { var d , e , f = new CKEDITOR . dom . element ( "div" ) ; for ( f . setHtml ( b ) ; 1 == f . getChildCount ( ) && ( d = f . getFirst ( ) ) && d . type == CKEDITOR . NODE _ELEMENT && ( d . hasClass ( "cke_editable" ) || d . hasClass ( "cke_contents" ) ) ; ) f = e = d ; e && ( b = e . getHtml ( ) . replace ( /<br>$/i , "" ) ) } CKEDITOR . env . ie ? b = b . replace ( /^ (?: |\r\n)?<(\w+)/g , function ( b , d ) { return d . toLowerCase ( ) in c ? ( a . data . preSniffing =
"html" , "\x3c" + d ) : b } ) : CKEDITOR . env . webkit ? b = b . replace ( /<\/(\w+)><div><br><\/div>$/ , function ( b , d ) { return d in c ? ( a . data . endsWithEOL = 1 , "\x3c/" + d + "\x3e" ) : b } ) : CKEDITOR . env . gecko && ( b = b . replace ( /(\s)<br>$/ , "$1" ) ) ; a . data . dataValue = b } , null , null , 3 ) ; a . on ( "paste" , function ( b ) { b = b . data ; var c = a . _ . nextPasteType || b . type , d = b . dataValue , e , f = a . config . clipboard _defaultContentType || "html" , g = b . dataTransfer . getTransferType ( a ) == CKEDITOR . DATA _TRANSFER _EXTERNAL , q = ! 0 === a . config . forcePasteAsPlainText ; e = "html" == c || "html" == b . preSniffing ?
"html" : z ( d ) ; delete a . _ . nextPasteType ; "htmlifiedtext" == e && ( d = A ( a . config , d ) ) ; if ( "text" == c && "html" == e ) d = x ( a , d , l . get ( "plain-text" ) ) ; else if ( g && a . pasteFilter && ! b . dontFilter || q ) d = x ( a , d , a . pasteFilter ) ; b . startsWithEOL && ( d = '\x3cbr data-cke-eol\x3d"1"\x3e' + d ) ; b . endsWithEOL && ( d += '\x3cbr data-cke-eol\x3d"1"\x3e' ) ; "auto" == c && ( c = "html" == e || "html" == f ? "html" : "text" ) ; b . type = c ; b . dataValue = d ; delete b . preSniffing ; delete b . startsWithEOL ; delete b . endsWithEOL } , null , null , 6 ) ; a . on ( "paste" , function ( b ) { b = b . data ; b . dataValue &&
( a . insertHtml ( b . dataValue , b . type , b . range ) , setTimeout ( function ( ) { a . fire ( "afterPaste" ) } , 0 ) ) } , null , null , 1E3 ) ; a . on ( "pasteDialog" , function ( b ) { setTimeout ( function ( ) { a . openDialog ( "paste" , b . data ) } , 0 ) } ) } } ) ; CKEDITOR . plugins . clipboard = { addFileMatcher : function ( a , b ) { a . plugins . clipboard . _supportedFileMatchers . push ( b ) } , isCustomCopyCutSupported : CKEDITOR . env . ie && 16 > CKEDITOR . env . version || CKEDITOR . env . iOS && 605 > CKEDITOR . env . version ? ! 1 : ! 0 , isCustomDataTypesSupported : ! CKEDITOR . env . ie || 16 <= CKEDITOR . env . version , isFileApiSupported : ! CKEDITOR . env . ie ||
9 < CKEDITOR . env . version , mainPasteEvent : CKEDITOR . env . ie && ! CKEDITOR . env . edge ? "beforepaste" : "paste" , addPasteButton : function ( a , b , c ) { a . ui . addButton && ( a . ui . addButton ( b , c ) , a . _ . pasteButtons || ( a . _ . pasteButtons = [ ] ) , a . _ . pasteButtons . push ( b ) ) } , canClipboardApiBeTrusted : function ( a , b ) { return a . getTransferType ( b ) != CKEDITOR . DATA _TRANSFER _EXTERNAL || CKEDITOR . env . chrome && ! a . isEmpty ( ) || CKEDITOR . env . gecko && ( a . getData ( "text/html" ) || a . getFilesCount ( ) ) || CKEDITOR . env . safari && 603 <= CKEDITOR . env . version && ! CKEDITOR . env . iOS || CKEDITOR . env . iOS &&
605 <= CKEDITOR . env . version || CKEDITOR . env . edge && 16 <= CKEDITOR . env . version ? ! 0 : ! 1 } , getDropTarget : function ( a ) { var b = a . editable ( ) ; return CKEDITOR . env . ie && 9 > CKEDITOR . env . version || b . isInline ( ) ? b : a . document } , fixSplitNodesAfterDrop : function ( a , b , c , d ) { function g ( a , c , d ) { var f = a ; f . type == CKEDITOR . NODE _TEXT && ( f = a . getParent ( ) ) ; if ( f . equals ( c ) && d != c . getChildCount ( ) ) return a = b . startContainer . getChild ( b . startOffset - 1 ) , c = b . startContainer . getChild ( b . startOffset ) , a && a . type == CKEDITOR . NODE _TEXT && c && c . type == CKEDITOR . NODE _TEXT &&
( d = a . getLength ( ) , a . setText ( a . getText ( ) + c . getText ( ) ) , c . remove ( ) , b . setStart ( a , d ) , b . collapse ( ! 0 ) ) , ! 0 } var f = b . startContainer ; "number" == typeof d && "number" == typeof c && f . type == CKEDITOR . NODE _ELEMENT && ( g ( a . startContainer , f , c ) || g ( a . endContainer , f , d ) ) } , isDropRangeAffectedByDragRange : function ( a , b ) { var c = b . startContainer , d = b . endOffset ; return a . endContainer . equals ( c ) && a . endOffset <= d || a . startContainer . getParent ( ) . equals ( c ) && a . startContainer . getIndex ( ) < d || a . endContainer . getParent ( ) . equals ( c ) && a . endContainer . getIndex ( ) <
d ? ! 0 : ! 1 } , internalDrop : function ( a , b , c , d ) { var g = CKEDITOR . plugins . clipboard , f = d . editable ( ) , e , l ; d . fire ( "saveSnapshot" ) ; d . fire ( "lockSnapshot" , { dontUpdate : 1 } ) ; CKEDITOR . env . ie && 10 > CKEDITOR . env . version && this . fixSplitNodesAfterDrop ( a , b , g . dragStartContainerChildCount , g . dragEndContainerChildCount ) ; ( l = this . isDropRangeAffectedByDragRange ( a , b ) ) || ( e = a . createBookmark ( ! 1 ) ) ; g = b . clone ( ) . createBookmark ( ! 1 ) ; l && ( e = a . createBookmark ( ! 1 ) ) ; a = e . startNode ; b = e . endNode ; l = g . startNode ; b && a . getPosition ( l ) & CKEDITOR . POSITION _PRECEDING &&
b . getPosition ( l ) & CKEDITOR . POSITION _FOLLOWING && l . insertBefore ( a ) ; a = d . createRange ( ) ; a . moveToBookmark ( e ) ; f . extractHtmlFromRange ( a , 1 ) ; b = d . createRange ( ) ; g . startNode . getCommonAncestor ( f ) || ( g = d . getSelection ( ) . createBookmarks ( ) [ 0 ] ) ; b . moveToBookmark ( g ) ; t ( d , { dataTransfer : c , method : "drop" , range : b } , 1 ) ; d . fire ( "unlockSnapshot" ) } , getRangeAtDropPosition : function ( a , b ) { var c = a . data . $ , d = c . clientX , g = c . clientY , f = b . getSelection ( ! 0 ) . getRanges ( ) [ 0 ] , e = b . createRange ( ) ; if ( a . data . testRange ) return a . data . testRange ; if ( document . caretRangeFromPoint &&
b . document . $ . caretRangeFromPoint ( d , g ) ) c = b . document . $ . caretRangeFromPoint ( d , g ) , e . setStart ( CKEDITOR . dom . node ( c . startContainer ) , c . startOffset ) , e . collapse ( ! 0 ) ; else if ( c . rangeParent ) e . setStart ( CKEDITOR . dom . node ( c . rangeParent ) , c . rangeOffset ) , e . collapse ( ! 0 ) ; else { if ( CKEDITOR . env . ie && 8 < CKEDITOR . env . version && f && b . editable ( ) . hasFocus ) return f ; if ( document . body . createTextRange ) { b . focus ( ) ; c = b . document . getBody ( ) . $ . createTextRange ( ) ; try { for ( var l = ! 1 , q = 0 ; 20 > q && ! l ; q ++ ) { if ( ! l ) try { c . moveToPoint ( d , g - q ) , l = ! 0 } catch ( r ) { } if ( ! l ) try { c . moveToPoint ( d ,
g + q ) , l = ! 0 } catch ( h ) { } } if ( l ) { var m = "cke-temp-" + ( new Date ) . getTime ( ) ; c . pasteHTML ( '\x3cspan id\x3d"' + m + '"\x3e \x3c/span\x3e' ) ; var p = b . document . getById ( m ) ; e . moveToPosition ( p , CKEDITOR . POSITION _BEFORE _START ) ; p . remove ( ) } else { var k = b . document . $ . elementFromPoint ( d , g ) , n = new CKEDITOR . dom . element ( k ) , u ; if ( n . equals ( b . editable ( ) ) || "html" == n . getName ( ) ) return f && f . startContainer && ! f . startContainer . equals ( b . editable ( ) ) ? f : null ; u = n . getClientRect ( ) ; d < u . left ? e . setStartAt ( n , CKEDITOR . POSITION _AFTER _START ) : e . setStartAt ( n ,
CKEDITOR . POSITION _BEFORE _END ) ; e . collapse ( ! 0 ) } } catch ( t ) { return null } } else return null } return e } , initDragDataTransfer : function ( a , b ) { var c = a . data . $ ? a . data . $ . dataTransfer : null , d = new this . dataTransfer ( c , b ) ; "dragstart" === a . name && d . storeId ( ) ; c ? this . dragData && d . id == this . dragData . id ? d = this . dragData : this . dragData = d : this . dragData ? d = this . dragData : this . dragData = d ; a . data . dataTransfer = d } , resetDragDataTransfer : function ( ) { this . dragData = null } , initPasteDataTransfer : function ( a , b ) { if ( this . isCustomCopyCutSupported ) { if ( a &&
a . data && a . data . $ ) { var c = a . data . $ . clipboardData , d = new this . dataTransfer ( c , b ) ; "copy" !== a . name && "cut" !== a . name || d . storeId ( ) ; this . copyCutData && d . id == this . copyCutData . id ? ( d = this . copyCutData , d . $ = c ) : this . copyCutData = d ; return d } return new this . dataTransfer ( null , b ) } return new this . dataTransfer ( CKEDITOR . env . edge && a && a . data . $ && a . data . $ . clipboardData || null , b ) } , preventDefaultDropOnElement : function ( a ) { a && a . on ( "dragover" , D ) } } ; r = CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ? "cke/id" : "Text" ; CKEDITOR . plugins . clipboard . dataTransfer =
function ( a , b ) { a && ( this . $ = a ) ; this . _ = { metaRegExp : /^<meta.*?>/i , fragmentRegExp : /\s*\x3c!--StartFragment--\x3e|\x3c!--EndFragment--\x3e\s*/g , types : [ ] , data : { } , files : [ ] , nativeHtmlCache : "" , normalizeType : function ( a ) { a = a . toLowerCase ( ) ; return "text" == a || "text/plain" == a ? "Text" : "url" == a ? "URL" : "files" === a ? "Files" : a } } ; this . _ . fallbackDataTransfer = new CKEDITOR . plugins . clipboard . fallbackDataTransfer ( this ) ; this . id = this . getData ( r ) ; this . id || ( this . id = "Text" == r ? "" : "cke-" + CKEDITOR . tools . getUniqueId ( ) ) ; b && ( this . sourceEditor =
b , this . setData ( "text/html" , b . getSelectedHtml ( 1 ) ) , "Text" == r || this . getData ( "text/plain" ) || this . setData ( "text/plain" , b . getSelection ( ) . getSelectedText ( ) ) ) } ; CKEDITOR . DATA _TRANSFER _INTERNAL = 1 ; CKEDITOR . DATA _TRANSFER _CROSS _EDITORS = 2 ; CKEDITOR . DATA _TRANSFER _EXTERNAL = 3 ; CKEDITOR . plugins . clipboard . dataTransfer . prototype = { getData : function ( a , b ) { a = this . _ . normalizeType ( a ) ; var c = "text/html" == a && b ? this . _ . nativeHtmlCache : this . _ . data [ a ] ; if ( void 0 === c || null === c || "" === c ) { if ( this . _ . fallbackDataTransfer . isRequired ( ) ) c = this . _ . fallbackDataTransfer . getData ( a ,
b ) ; else try { c = this . $ . getData ( a ) || "" } catch ( d ) { c = "" } "text/html" != a || b || ( c = this . _stripHtml ( c ) ) } "Text" == a && CKEDITOR . env . gecko && this . getFilesCount ( ) && "file://" == c . substring ( 0 , 7 ) && ( c = "" ) ; if ( "string" === typeof c ) var g = c . indexOf ( "\x3c/html\x3e" ) , c = - 1 !== g ? c . substring ( 0 , g + 7 ) : c ; return c } , setData : function ( a , b ) { a = this . _ . normalizeType ( a ) ; "text/html" == a ? ( this . _ . data [ a ] = this . _stripHtml ( b ) , this . _ . nativeHtmlCache = b ) : this . _ . data [ a ] = b ; if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported || "URL" == a || "Text" == a ) if ( "Text" ==
r && "Text" == a && ( this . id = b ) , this . _ . fallbackDataTransfer . isRequired ( ) ) this . _ . fallbackDataTransfer . setData ( a , b ) ; else try { this . $ . setData ( a , b ) } catch ( c ) { } } , storeId : function ( ) { "Text" !== r && this . setData ( r , this . id ) } , getTransferType : function ( a ) { return this . sourceEditor ? this . sourceEditor == a ? CKEDITOR . DATA _TRANSFER _INTERNAL : CKEDITOR . DATA _TRANSFER _CROSS _EDITORS : CKEDITOR . DATA _TRANSFER _EXTERNAL } , cacheData : function ( ) { function a ( a ) { a = b . _ . normalizeType ( a ) ; var c = b . getData ( a ) ; "text/html" == a && ( b . _ . nativeHtmlCache = b . getData ( a ,
! 0 ) , c = b . _stripHtml ( c ) ) ; c && ( b . _ . data [ a ] = c ) ; b . _ . types . push ( a ) } if ( this . $ ) { var b = this , c , d , g ; if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ) { if ( this . $ . types ) for ( c = 0 ; c < this . $ . types . length ; c ++ ) a ( this . $ . types [ c ] ) } else a ( "Text" ) , a ( "URL" ) ; d = this . _getImageFromClipboard ( ) ; if ( ( g = this . $ && this . $ . files || null ) || d ) { this . _ . files = [ ] ; if ( g && g . length ) for ( c = 0 ; c < g . length ; c ++ ) this . _ . files . push ( g [ c ] ) ; 0 === this . _ . files . length && d && this . _ . files . push ( d ) } } } , getFilesCount : function ( ) { if ( this . _ . files . length ) return this . _ . files . length ;
var a = this . $ && this . $ . files || null ; return a && a . length ? a . length : this . _getImageFromClipboard ( ) ? 1 : 0 } , getFile : function ( a ) { if ( this . _ . files . length ) return this . _ . files [ a ] ; var b = this . $ && this . $ . files || null ; return b && b . length ? b [ a ] : 0 === a ? this . _getImageFromClipboard ( ) : void 0 } , isFileTransfer : function ( ) { var a = this . getTypes ( ) , a = CKEDITOR . tools . array . filter ( a , function ( a ) { return "application/x-moz-file" !== a } ) ; return 1 === a . length && "files" === a [ 0 ] . toLowerCase ( ) } , isEmpty : function ( ) { var a = { } , b ; if ( this . getFilesCount ( ) ) return ! 1 ;
CKEDITOR . tools . array . forEach ( CKEDITOR . tools . object . keys ( this . _ . data ) , function ( b ) { a [ b ] = 1 } ) ; if ( this . $ ) if ( CKEDITOR . plugins . clipboard . isCustomDataTypesSupported ) { if ( this . $ . types ) for ( var c = 0 ; c < this . $ . types . length ; c ++ ) a [ this . $ . types [ c ] ] = 1 } else a . Text = 1 , a . URL = 1 ; "Text" != r && ( a [ r ] = 0 ) ; for ( b in a ) if ( a [ b ] && "" !== this . getData ( b ) ) return ! 1 ; return ! 0 } , getTypes : function ( ) { return 0 < this . _ . types . length ? this . _ . types : this . $ && this . $ . types ? [ ] . slice . call ( this . $ . types ) : [ ] } , _getImageFromClipboard : function ( ) { var a ; try { if ( this . $ &&
this . $ . items && this . $ . items [ 0 ] && ( a = this . $ . items [ 0 ] . getAsFile ( ) ) && a . type ) return a } catch ( b ) { } } , _stripHtml : function ( a ) { function b ( a ) { var b = new CKEDITOR . htmlParser , g , f ; b . onTagOpen = function ( a ) { "body" === a && ( g = b . _ . htmlPartsRegex . lastIndex ) } ; b . onTagClose = function ( a ) { "body" === a && ( f = b . _ . htmlPartsRegex . lastIndex ) } ; b . parse ( a ) ; return "number" !== typeof g || "number" !== typeof f ? a : a . substring ( g , f ) . replace ( /<\/body\s*>$/gi , "" ) } a && a . length && ( a = b ( a ) , a = a . replace ( this . _ . metaRegExp , "" ) , a = a . replace ( this . _ . fragmentRegExp , "" ) ) ;
return a } } ; CKEDITOR . plugins . clipboard . fallbackDataTransfer = function ( a ) { this . _dataTransfer = a ; this . _customDataFallbackType = "text/html" } ; CKEDITOR . plugins . clipboard . fallbackDataTransfer . _isCustomMimeTypeSupported = null ; CKEDITOR . plugins . clipboard . fallbackDataTransfer . _customTypes = [ ] ; CKEDITOR . plugins . clipboard . fallbackDataTransfer . prototype = { isRequired : function ( ) { var a = CKEDITOR . plugins . clipboard . fallbackDataTransfer , b = this . _dataTransfer . $ ; if ( null === a . _isCustomMimeTypeSupported ) if ( b ) { a . _isCustomMimeTypeSupported =
! 1 ; if ( CKEDITOR . env . edge && 17 <= CKEDITOR . env . version ) return ! 0 ; try { b . setData ( "cke/mimetypetest" , "cke test value" ) , a . _isCustomMimeTypeSupported = "cke test value" === b . getData ( "cke/mimetypetest" ) , b . clearData ( "cke/mimetypetest" ) } catch ( c ) { } } else return ! 1 ; return ! a . _isCustomMimeTypeSupported } , getData : function ( a , b ) { var c = this . _getData ( this . _customDataFallbackType , ! 0 ) ; if ( b ) return c ; var c = this . _extractDataComment ( c ) , d = null , d = a === this . _customDataFallbackType ? c . content : c . data && c . data [ a ] ? c . data [ a ] : this . _getData ( a ,
! 0 ) ; return null !== d ? d : "" } , setData : function ( a , b ) { var c = a === this . _customDataFallbackType ; c && ( b = this . _applyDataComment ( b , this . _getFallbackTypeData ( ) ) ) ; var d = b , g = this . _dataTransfer . $ ; try { g . setData ( a , d ) , c && ( this . _dataTransfer . _ . nativeHtmlCache = d ) } catch ( f ) { if ( this . _isUnsupportedMimeTypeError ( f ) ) { c = CKEDITOR . plugins . clipboard . fallbackDataTransfer ; - 1 === CKEDITOR . tools . indexOf ( c . _customTypes , a ) && c . _customTypes . push ( a ) ; var c = this . _getFallbackTypeContent ( ) , e = this . _getFallbackTypeData ( ) ; e [ a ] = d ; try { d = this . _applyDataComment ( c ,
e ) , g . setData ( this . _customDataFallbackType , d ) , this . _dataTransfer . _ . nativeHtmlCache = d } catch ( l ) { d = "" } } } return d } , _getData : function ( a , b ) { var c = this . _dataTransfer . _ . data ; if ( ! b && c [ a ] ) return c [ a ] ; try { return this . _dataTransfer . $ . getData ( a ) } catch ( d ) { return null } } , _getFallbackTypeContent : function ( ) { var a = this . _dataTransfer . _ . data [ this . _customDataFallbackType ] ; a || ( a = this . _extractDataComment ( this . _getData ( this . _customDataFallbackType , ! 0 ) ) . content ) ; return a } , _getFallbackTypeData : function ( ) { var a = CKEDITOR . plugins . clipboard . fallbackDataTransfer . _customTypes ,
b = this . _extractDataComment ( this . _getData ( this . _customDataFallbackType , ! 0 ) ) . data || { } , c = this . _dataTransfer . _ . data ; CKEDITOR . tools . array . forEach ( a , function ( a ) { void 0 !== c [ a ] ? b [ a ] = c [ a ] : void 0 !== b [ a ] && ( b [ a ] = b [ a ] ) } , this ) ; return b } , _isUnsupportedMimeTypeError : function ( a ) { return a . message && - 1 !== a . message . search ( /element not found/gi ) } , _extractDataComment : function ( a ) { var b = { data : null , content : a || "" } ; if ( a && 16 < a . length ) { var c ; ( c = /\x3c!--cke-data:(.*?)--\x3e/g . exec ( a ) ) && c [ 1 ] && ( b . data = JSON . parse ( decodeURIComponent ( c [ 1 ] ) ) ,
b . content = a . replace ( c [ 0 ] , "" ) ) } return b } , _applyDataComment : function ( a , b ) { var c = "" ; b && CKEDITOR . tools . object . keys ( b ) . length && ( c = "\x3c!--cke-data:" + encodeURIComponent ( JSON . stringify ( b ) ) + "--\x3e" ) ; return c + ( a && a . length ? a : "" ) } } } ) ( ) ; CKEDITOR . config . clipboard _notificationDuration = 1E4 ; CKEDITOR . config . clipboard _handleImages = ! 0 ; ( function ( ) { CKEDITOR . plugins . add ( "xml" , { } ) ; CKEDITOR . xml = function ( c ) { var a = null ; if ( "object" == typeof c ) a = c ; else if ( c = ( c || "" ) . replace ( / /g , " " ) , "ActiveXObject" in window ) { try { a = new ActiveXObject ( "MSXML2.DOMDocument" ) } catch ( b ) { try { a = new ActiveXObject ( "Microsoft.XmlDom" ) } catch ( d ) { } } a && ( a . async = ! 1 , a . resolveExternals = ! 1 , a . validateOnParse = ! 1 , a . loadXML ( c ) ) } else window . DOMParser && ( a = ( new DOMParser ) . parseFromString ( c , "text/xml" ) ) ; this . baseXml = a } ; CKEDITOR . xml . prototype = { selectSingleNode : function ( c , a ) { var b =
this . baseXml ; if ( a || ( a = b ) ) { if ( "selectSingleNode" in a ) return a . selectSingleNode ( c ) ; if ( b . evaluate ) return ( b = b . evaluate ( c , a , null , 9 , null ) ) && b . singleNodeValue || null } return null } , selectNodes : function ( c , a ) { var b = this . baseXml , d = [ ] ; if ( a || ( a = b ) ) { if ( "selectNodes" in a ) return a . selectNodes ( c ) ; if ( b . evaluate && ( b = b . evaluate ( c , a , null , 5 , null ) ) ) for ( var e ; e = b . iterateNext ( ) ; ) d . push ( e ) } return d } , getInnerXml : function ( c , a ) { var b = this . selectSingleNode ( c , a ) , d = [ ] ; if ( b ) for ( b = b . firstChild ; b ; ) b . xml ? d . push ( b . xml ) : window . XMLSerializer &&
d . push ( ( new XMLSerializer ) . serializeToString ( b ) ) , b = b . nextSibling ; return d . length ? d . join ( "" ) : null } } } ) ( ) ; ( function ( ) { CKEDITOR . plugins . add ( "ajax" , { requires : "xml" } ) ; CKEDITOR . ajax = function ( ) { function k ( ) { if ( ! CKEDITOR . env . ie || "file:" != location . protocol ) try { return new XMLHttpRequest } catch ( a ) { } try { return new ActiveXObject ( "Msxml2.XMLHTTP" ) } catch ( b ) { } try { return new ActiveXObject ( "Microsoft.XMLHTTP" ) } catch ( c ) { } return null } function h ( a , b ) { if ( 4 != a . readyState || ! ( 200 <= a . status && 300 > a . status || 304 == a . status || 0 === a . status || 1223 == a . status ) ) return null ; switch ( b ) { case "text" : return a . responseText ; case "xml" : var c = a . responseXML ;
return new CKEDITOR . xml ( c && c . firstChild ? c : a . responseText ) ; case "arraybuffer" : return a . response ; default : return null } } function g ( a , b , c ) { var e = ! ! b , d = k ( ) ; if ( ! d ) return null ; e && "text" !== c && "xml" !== c && ( d . responseType = c ) ; d . open ( "GET" , a , e ) ; e && ( d . onreadystatechange = function ( ) { 4 == d . readyState && ( b ( h ( d , c ) ) , d = null ) } ) ; d . send ( null ) ; return e ? "" : h ( d , c ) } function l ( a , b , c , e , d ) { var f = k ( ) ; if ( ! f ) return null ; f . open ( "POST" , a , ! 0 ) ; f . onreadystatechange = function ( ) { 4 == f . readyState && ( e && e ( h ( f , d ) ) , f = null ) } ; f . setRequestHeader ( "Content-type" ,
@ -1132,7 +1134,7 @@ b,c,d,g,e;g=0;for(e=k.length;g<e;g++)a=k[g],b=a._name,d=a._.type,d!=c&&(this.sta
for ( var f = 0 , d = a . length , g ; f < d ; f ++ ) { g = a [ f ] ; for ( var h in e ) if ( e [ h ] . checkElementRemovable ( g , ! 0 , c ) ) { h != b && this . setValue ( h ) ; return } } this . setValue ( "" ) } , this ) } , onOpen : function ( ) { var a = c . getSelection ( ) , a = a . getSelectedElement ( ) || a . getStartElement ( ) || c . editable ( ) , a = c . elementPath ( a ) , b = [ 0 , 0 , 0 , 0 ] ; this . showAll ( ) ; this . unmarkAll ( ) ; for ( var f in e ) { var d = e [ f ] , g = d . _ . type ; d . checkApplicable ( a , c , c . activeFilter ) ? b [ g ] ++ : this . hideItem ( f ) ; d . checkActive ( a , c ) && this . mark ( f ) } b [ CKEDITOR . STYLE _BLOCK ] || this . hideGroup ( h [ "panelTitle" +
String ( CKEDITOR . STYLE _BLOCK ) ] ) ; b [ CKEDITOR . STYLE _INLINE ] || this . hideGroup ( h [ "panelTitle" + String ( CKEDITOR . STYLE _INLINE ) ] ) ; b [ CKEDITOR . STYLE _OBJECT ] || this . hideGroup ( h [ "panelTitle" + String ( CKEDITOR . STYLE _OBJECT ) ] ) } , refresh : function ( ) { var a = c . elementPath ( ) ; if ( a ) { for ( var b in e ) if ( e [ b ] . checkApplicable ( a , c , c . activeFilter ) ) return ; this . setState ( CKEDITOR . TRISTATE _DISABLED ) } } , reset : function ( ) { e = { } ; k = [ ] } } ) } } ) } ) ( ) ; ( function ( ) { function h ( b , e , c ) { var k = [ ] , g = [ ] , a ; for ( a = 0 ; a < b . styleSheets . length ; a ++ ) { var d = b . styleSheets [ a ] ; if ( ! ( ( d . ownerNode || d . owningElement ) . getAttribute ( "data-cke-temp" ) || d . href && "chrome://" == d . href . substr ( 0 , 9 ) ) ) try { for ( var f = d . cssRules || d . rules , d = 0 ; d < f . length ; d ++ ) g . push ( f [ d ] . selectorText ) } catch ( h ) { } } a = g . join ( " " ) ; a = a . replace ( /(,|>|\+|~)/g , " " ) ; a = a . replace ( /\[[^\]]*/g , "" ) ; a = a . replace ( /#[^\s]*/g , "" ) ; a = a . replace ( /\:{1,2}[^\s]*/g , "" ) ; a = a . replace ( /\s+/g , " " ) ; a = a . split ( " " ) ; b = [ ] ; for ( g = 0 ; g < a . length ; g ++ ) f =
a [ g ] , c . test ( f ) && ! e . test ( f ) && - 1 == CKEDITOR . tools . indexOf ( b , f ) && b . push ( f ) ; for ( a = 0 ; a < b . length ; a ++ ) c = b [ a ] . split ( "." ) , e = c [ 0 ] . toLowerCase ( ) , c = c [ 1 ] , k . push ( { name : e + "." + c , element : e , attributes : { "class" : c } } ) ; return k } CKEDITOR . plugins . add ( "stylesheetparser" , { init : function ( b ) { b . filter . disable ( ) ; var e ; b . once ( "stylesSet" , function ( c ) { c . cancel ( ) ; b . once ( "contentDom" , function ( ) { b . getStylesSet ( function ( c ) { e = c . concat ( h ( b . document . $ , b . config . stylesheetParser _skipSelectors || /(^body\.|^\.)/i , b . config . stylesheetParser _validSelectors ||
/\w+\.\w+/ ) ) ; b . getStylesSet = function ( b ) { if ( e ) return b ( e ) } ; b . fire ( "stylesSet" , { styles : e } ) } ) } ) } , null , null , 1 ) } } ) } ) ( ) ; ( function ( ) { function k ( c ) { return { editorFocus : ! 1 , canUndo : ! 1 , modes : { wysiwyg : 1 } , exec : function ( d ) { if ( d . editable ( ) . hasFocus ) { var e = d . getSelection ( ) , b ; if ( b = ( new CKEDITOR . dom . elementPath ( e . getStartElement ( ) , e . root ) ) . contains ( { td : 1 , th : 1 } , 1 ) ) { var e = d . createRange ( ) , a = CKEDITOR . tools . tryThese ( function ( ) { var a = b . getParent ( ) . $ . cells [ b . $ . cellIndex + ( c ? - 1 : 1 ) ] ; a . parentNode . parentNode ; return a } , function ( ) { var a = b . getParent ( ) , a = a . getAscendant ( "table" ) . $ . rows [ a . $ . rowIndex + ( c ? - 1 : 1 ) ] ; return a . cells [ c ? a . cells . length - 1 : 0 ] } ) ;
/\w+\.\w+/ ) ) ; b . getStylesSet = function ( b ) { if ( e ) return b ( e ) } ; b . fire ( "stylesSet" , { styles : e } ) } ) } ) } , null , null , 1 ) } } ) } ) ( ) ; ( function ( ) { function k ( c ) { return { editorFocus : ! 1 , canUndo : ! 0 , modes : { wysiwyg : 1 } , exec : function ( d ) { if ( d . editable ( ) . hasFocus ) { var e = d . getSelection ( ) , b ; if ( b = ( new CKEDITOR . dom . elementPath ( e . getStartElement ( ) , e . root ) ) . contains ( { td : 1 , th : 1 } , 1 ) ) { var e = d . createRange ( ) , a = CKEDITOR . tools . tryThese ( function ( ) { var a = b . getParent ( ) . $ . cells [ b . $ . cellIndex + ( c ? - 1 : 1 ) ] ; a . parentNode . parentNode ; return a } , function ( ) { var a = b . getParent ( ) , a = a . getAscendant ( "table" ) . $ . rows [ a . $ . rowIndex + ( c ? - 1 : 1 ) ] ; return a . cells [ c ? a . cells . length - 1 : 0 ] } ) ;
if ( a || c ) if ( a ) a = new CKEDITOR . dom . element ( a ) , e . moveToElementEditStart ( a ) , e . checkStartOfBlock ( ) && e . checkEndOfBlock ( ) || e . selectNodeContents ( a ) ; else return ! 0 ; else { for ( var f = b . getAscendant ( "table" ) . $ , a = b . getParent ( ) . $ . cells , f = new CKEDITOR . dom . element ( f . insertRow ( - 1 ) , d . document ) , g = 0 , h = a . length ; g < h ; g ++ ) f . append ( ( new CKEDITOR . dom . element ( a [ g ] , d . document ) ) . clone ( ! 1 , ! 1 ) ) . appendBogus ( ) ; e . moveToElementEditStart ( f ) } e . select ( ! 0 ) ; return ! 0 } } return ! 1 } } } var h = { editorFocus : ! 1 , modes : { wysiwyg : 1 , source : 1 } } , g = { exec : function ( c ) { c . container . focusNext ( ! 0 ,
c . tabIndex ) } } , f = { exec : function ( c ) { c . container . focusPrevious ( ! 0 , c . tabIndex ) } } ; CKEDITOR . plugins . add ( "tab" , { init : function ( c ) { for ( var d = ! 1 !== c . config . enableTabKeyTools , e = c . config . tabSpaces || 0 , b = "" ; e -- ; ) b += " " ; if ( b ) c . on ( "key" , function ( a ) { 9 == a . data . keyCode && ( c . insertText ( b ) , a . cancel ( ) ) } ) ; if ( d ) c . on ( "key" , function ( a ) { ( 9 == a . data . keyCode && c . execCommand ( "selectNextCell" ) || a . data . keyCode == CKEDITOR . SHIFT + 9 && c . execCommand ( "selectPreviousCell" ) ) && a . cancel ( ) } ) ; c . addCommand ( "blur" , CKEDITOR . tools . extend ( g , h ) ) ; c . addCommand ( "blurBack" ,
CKEDITOR . tools . extend ( f , h ) ) ; c . addCommand ( "selectNextCell" , k ( ) ) ; c . addCommand ( "selectPreviousCell" , k ( ! 0 ) ) } } ) } ) ( ) ;
@ -1171,15 +1173,17 @@ order:18},tablecell_split_horizontal:{label:c.cell.splitHorizontal,group:"tablec
tablerow _delete : CKEDITOR . TRISTATE _OFF } } } , tablerow _insertBefore : { label : c . row . insertBefore , group : "tablerow" , command : "rowInsertBefore" , order : 5 } , tablerow _insertAfter : { label : c . row . insertAfter , group : "tablerow" , command : "rowInsertAfter" , order : 10 } , tablerow _delete : { label : c . row . deleteRow , group : "tablerow" , command : "rowDelete" , order : 15 } , tablecolumn : { label : c . column . menu , group : "tablecolumn" , order : 1 , getItems : function ( ) { return { tablecolumn _insertBefore : CKEDITOR . TRISTATE _OFF , tablecolumn _insertAfter : CKEDITOR . TRISTATE _OFF ,
tablecolumn _delete : CKEDITOR . TRISTATE _OFF } } } , tablecolumn _insertBefore : { label : c . column . insertBefore , group : "tablecolumn" , command : "columnInsertBefore" , order : 5 } , tablecolumn _insertAfter : { label : c . column . insertAfter , group : "tablecolumn" , command : "columnInsertAfter" , order : 10 } , tablecolumn _delete : { label : c . column . deleteColumn , group : "tablecolumn" , command : "columnDelete" , order : 15 } } ) ; d . contextMenu && d . contextMenu . addListener ( function ( a , b , c ) { return ( a = c . contains ( { td : 1 , th : 1 } , 1 ) ) && ! a . isReadOnly ( ) ? { tablecell : CKEDITOR . TRISTATE _OFF ,
tablerow : CKEDITOR . TRISTATE _OFF , tablecolumn : CKEDITOR . TRISTATE _OFF } : null } ) } , getCellColIndex : v , insertRow : r , insertColumn : u , getSelectedCells : q } ; CKEDITOR . plugins . add ( "tabletools" , CKEDITOR . plugins . tabletools ) } ) ( ) ;
CKEDITOR . tools . buildTableMap = function ( q , r , B , v , w ) { q = q . $ . rows ; B = B || 0 ; v = "number" === typeof v ? v : q . length - 1 ; w = "number" === typeof w ? w : - 1 ; var u = - 1 , y = [ ] ; for ( r = r || 0 ; r <= v ; r ++ ) { u ++ ; ! y [ u ] && ( y [ u ] = [ ] ) ; for ( var t = - 1 , z = B ; z <= ( - 1 === w ? q [ r ] . cells . length - 1 : w ) ; z ++ ) { var p = q [ r ] . cells [ z ] ; if ( ! p ) break ; for ( t ++ ; y [ u ] [ t ] ; ) t ++ ; for ( var A = isNaN ( p . colSpan ) ? 1 : p . colSpan , p = isNaN ( p . rowSpan ) ? 1 : p . rowSpan , x = 0 ; x < p && ! ( r + x > v ) ; x ++ ) { y [ u + x ] || ( y [ u + x ] = [ ] ) ; for ( var C = 0 ; C < A ; C ++ ) y [ u + x ] [ t + C ] = q [ r ] . cells [ z ] } t += A - 1 ; if ( - 1 !== w && t >= w ) break } } return y } ; ( function ( ) { function z ( b ) { return CKEDITOR . env . ie ? b . $ . clientWidth : parseInt ( b . getComputedStyle ( "width" ) , 10 ) } function t ( b , c ) { var a = b . getComputedStyle ( "border-" + c + "-width" ) , l = { thin : "0px" , medium : "1px" , thick : "2px" } ; 0 > a . indexOf ( "px" ) && ( a = a in l && "none" != b . getComputedStyle ( "border-style" ) ? l [ a ] : 0 ) ; return parseFloat ( a ) } function C ( b ) { var c = [ ] , a = { } , l = "rtl" === b . getComputedStyle ( "direction" ) , e = CKEDITOR . tools . array . zip ( ( new CKEDITOR . dom . nodeList ( b . $ . rows ) ) . toArray ( ) , CKEDITOR . tools . buildTableMap ( b ) ) ; CKEDITOR . tools . array . forEach ( e ,
function ( h ) { var f = h [ 0 ] . $ ; h = h [ 1 ] ; var g = - 1 , d = 0 , e = null ; f ? ( d = new CKEDITOR . dom . element ( f ) , e = { height : d . $ . offsetHeight , position : d . getDocumentPosition ( ) } ) : e = void 0 ; for ( var f = CKEDITOR . env . ie && ! CKEDITOR . env . edge , n = "collapse" === b . getComputedStyle ( "border-collapse" ) , d = e . height , e = e . position , m = 0 ; m < h . length ; m ++ ) { var k = new CKEDITOR . dom . element ( h [ m ] ) , u = h [ m + 1 ] && new CKEDITOR . dom . element ( h [ m + 1 ] ) , p , v , q = k . getDocumentPosition ( ) . x , g = g + ( k . $ . colSpan || 1 ) ; l ? v = q + t ( k , "left" ) : p = q + k . $ . offsetWidth - t ( k , "right" ) ; u ? ( q = u . getDocumentPosition ( ) . x ,
l ? p = q + u . $ . offsetWidth - t ( u , "right" ) : v = q + t ( u , "left" ) ) : ( q = b . getDocumentPosition ( ) . x , l ? p = q : v = q + b . $ . offsetWidth ) ; k = Math . max ( v - p , 3 ) ; f && n && ( p -= k , k = Math . max ( v - p , 3 ) ) ; k = { table : b , index : g , x : p , y : e . y , width : k , height : d , rtl : l } ; a [ g ] = a [ g ] || [ ] ; a [ g ] . push ( k ) ; k . alignedPillars = a [ g ] ; c . push ( k ) } } ) ; return c } function B ( b ) { ( b . data || b ) . preventDefault ( ) } function E ( b ) { function c ( ) { y = 0 ; d . setOpacity ( 0 ) ; m && a ( ) ; var b = f . table ; setTimeout ( function ( ) { b . removeCustomData ( "_cke_table_pillars" ) } , 0 ) ; g . removeListener ( "dragstart" , B ) } function a ( ) { for ( var d =
f . rtl , l = d ? p . length : u . length , a = 0 , e = 0 ; e < l ; e ++ ) { var g = u [ e ] , h = p [ e ] , c = f . table ; CKEDITOR . tools . setTimeout ( function ( f , e , g , h , k , m ) { f && f . setStyle ( "width" , n ( Math . max ( e + m , 1 ) ) ) ; g && g . setStyle ( "width" , n ( Math . max ( h - m , 1 ) ) ) ; k && c . setStyle ( "width" , n ( k + m * ( d ? - 1 : 1 ) ) ) ; ++ a == l && b . fire ( "saveSnapshot" ) } , 0 , this , [ g , g && z ( g ) , h , h && z ( h ) , ( ! g || ! h ) && z ( c ) + t ( c , "left" ) + t ( c , "right" ) , m ] ) } } function l ( l ) { B ( l ) ; b . fire ( "saveSnapshot" ) ; l = f . index ; for ( var a = CKEDITOR . tools . buildTableMap ( f . table ) , c = [ ] , k = [ ] , n = Number . MAX _VALUE , t = n , x = f . rtl , D = 0 , C = a . length ; D <
C ; D ++ ) { var r = a [ D ] , w = r [ l + ( x ? 1 : 0 ) ] , r = r [ l + ( x ? 0 : 1 ) ] , w = w && new CKEDITOR . dom . element ( w ) , r = r && new CKEDITOR . dom . element ( r ) ; w && r && w . equals ( r ) || ( w && ( n = Math . min ( n , z ( w ) ) ) , r && ( t = Math . min ( t , z ( r ) ) ) , c . push ( w ) , k . push ( r ) ) } u = c ; p = k ; v = f . x - n ; q = f . x + t ; d . setOpacity ( . 5 ) ; A = parseInt ( d . getStyle ( "left" ) , 10 ) ; m = 0 ; y = 1 ; d . on ( "mousemove" , h ) ; g . on ( "dragstart" , B ) ; g . on ( "mouseup" , e , this ) } function e ( b ) { b . removeListener ( ) ; c ( ) } function h ( b ) { k ( b . data . getPageOffset ( ) . x ) } var f , g , d , y , A , m , k , u , p , v , q ; g = b . document ; d = CKEDITOR . dom . element . createFromHtml ( '\x3cdiv data-cke-temp\x3d1 contenteditable\x3dfalse unselectable\x3don style\x3d"position:absolute;cursor:col-resize;filter:alpha(opacity\x3d0);opacity:0;padding:0;background-color:#004;background-image:none;border:0px none;z-index:10000"\x3e\x3c/div\x3e' ,
g ) ; b . on ( "destroy" , function ( ) { d . remove ( ) } ) ; x || g . getDocumentElement ( ) . append ( d ) ; this . attachTo = function ( b ) { var a , e , c ; y || ( x && ( g . getBody ( ) . append ( d ) , m = 0 ) , f = b , a = f . alignedPillars [ 0 ] , e = f . alignedPillars [ f . alignedPillars . length - 1 ] , c = a . y , a = e . height + e . y - a . y , d . setStyles ( { width : n ( b . width ) , height : n ( a ) , left : n ( b . x ) , top : n ( c ) } ) , x && d . setOpacity ( . 25 ) , d . on ( "mousedown" , l , this ) , g . getBody ( ) . setStyle ( "cursor" , "col-resize" ) , d . show ( ) ) } ; k = this . move = function ( b , a ) { if ( ! f ) return 0 ; if ( ! ( y || b >= f . x && b <= f . x + f . width && a >= f . y && a <= f . y + f . height ) ) return f =
null , y = m = 0 , g . removeListener ( "mouseup" , e ) , d . removeListener ( "mousedown" , l ) , d . removeListener ( "mousemove" , h ) , g . getBody ( ) . setStyle ( "cursor" , "auto" ) , x ? d . remove ( ) : d . hide ( ) , 0 ; var c = b - Math . round ( d . $ . offsetWidth / 2 ) ; if ( y ) { if ( c == v || c == q ) return 1 ; c = Math . max ( c , v ) ; c = Math . min ( c , q ) ; m = c - A } d . setStyle ( "left" , n ( c ) ) ; return 1 } } function A ( b ) { var c = b . data . getTarget ( ) ; if ( "mouseout" == b . name ) { if ( ! c . is ( "table" ) ) return ; for ( var a = new CKEDITOR . dom . element ( b . data . $ . relatedTarget || b . data . $ . toElement ) ; a && a . $ && ! a . equals ( c ) && ! a . is ( "body" ) ; ) a =
a . getParent ( ) ; if ( ! a || a . equals ( c ) ) return } c . getAscendant ( "table" , 1 ) . removeCustomData ( "_cke_table_pillars" ) ; b . removeListener ( ) } var n = CKEDITOR . tools . cssLength , x = CKEDITOR . env . ie && ( CKEDITOR . env . ie7Compat || CKEDITOR . env . quirks ) ; CKEDITOR . plugins . add ( "tableresize" , { requires : "tabletools" , init : function ( b ) { b . on ( "contentDom" , function ( ) { var c , a = b . editable ( ) ; a . attachListener ( a . isInline ( ) ? a : b . document , "mousemove" , function ( a ) { a = a . data ; var e = a . getTarget ( ) ; if ( e . type == CKEDITOR . NODE _ELEMENT ) { var h = a . getPageOffset ( ) . x ,
f = a . getPageOffset ( ) . y ; if ( c && c . move ( h , f ) ) B ( a ) ; else if ( e . is ( "table" ) || e . getAscendant ( { thead : 1 , tbody : 1 , tfoot : 1 } , 1 ) ) if ( a = e . getAscendant ( "table" , 1 ) , b . editable ( ) . contains ( a ) ) { ( e = a . getCustomData ( "_cke_table_pillars" ) ) || ( a . setCustomData ( "_cke_table_pillars" , e = C ( a ) ) , a . on ( "mouseout" , A ) , a . on ( "mousedown" , A ) ) ; a : { a = e ; for ( var e = 0 , g = a . length ; e < g ; e ++ ) { var d = a [ e ] ; if ( h >= d . x && h <= d . x + d . width && f >= d . y && f <= d . y + d . height ) { h = d ; break a } } h = null } h && ( ! c && ( c = new E ( b ) ) , c . attachTo ( h ) ) } } } ) } ) } } ) } ) ( ) ; ( function ( ) { CKEDITOR . plugins . add ( "templates" , { requires : "dialog,ajax" , init : function ( a ) { CKEDITOR . dialog . add ( "templates" , CKEDITOR . getUrl ( this . path + "dialogs/templates.js" ) ) ; a . addCommand ( "templates" , new CKEDITOR . dialogCommand ( "templates" ) ) ; a . ui . addButton && a . ui . addButton ( "Templates" , { label : a . lang . templates . button , command : "templates" , toolbar : "doctools,10" } ) } } ) ; var c = { } , f = { } ; CKEDITOR . addTemplates = function ( a , d ) { c [ a ] = d } ; CKEDITOR . getTemplates = function ( a ) { return c [ a ] } ; CKEDITOR . loadTemplates = function ( a , d ) { for ( var e =
CKEDITOR . tools . buildTableMap = function ( q , r , B , v , w ) { q = q . $ . rows ; B = B || 0 ; v = "number" === typeof v ? v : q . length - 1 ; w = "number" === typeof w ? w : - 1 ; var u = - 1 , y = [ ] ; for ( r = r || 0 ; r <= v ; r ++ ) { u ++ ; ! y [ u ] && ( y [ u ] = [ ] ) ; for ( var t = - 1 , z = B ; z <= ( - 1 === w ? q [ r ] . cells . length - 1 : w ) ; z ++ ) { var p = q [ r ] . cells [ z ] ; if ( ! p ) break ; for ( t ++ ; y [ u ] [ t ] ; ) t ++ ; for ( var A = isNaN ( p . colSpan ) ? 1 : p . colSpan , p = isNaN ( p . rowSpan ) ? 1 : p . rowSpan , x = 0 ; x < p && ! ( r + x > v ) ; x ++ ) { y [ u + x ] || ( y [ u + x ] = [ ] ) ; for ( var C = 0 ; C < A ; C ++ ) y [ u + x ] [ t + C ] = q [ r ] . cells [ z ] } t += A - 1 ; if ( - 1 !== w && t >= w ) break } } return y } ;
CKEDITOR . config . tabletools _scopedHeaders = ! 1 ; ( function ( ) { function z ( b ) { return CKEDITOR . env . ie ? b . $ . clientWidth : parseInt ( b . getComputedStyle ( "width" ) , 10 ) } function u ( b , d ) { var a = b . getComputedStyle ( "border-" + d + "-width" ) , h = { thin : "0px" , medium : "1px" , thick : "2px" } ; 0 > a . indexOf ( "px" ) && ( a = a in h && "none" != b . getComputedStyle ( "border-style" ) ? h [ a ] : 0 ) ; return parseFloat ( a ) } function C ( b ) { var d = [ ] , a = { } , h = "rtl" === b . getComputedStyle ( "direction" ) , l = CKEDITOR . tools . array . zip ( ( new CKEDITOR . dom . nodeList ( b . $ . rows ) ) . toArray ( ) , CKEDITOR . tools . buildTableMap ( b ) ) ; CKEDITOR . tools . array . forEach ( l ,
function ( e ) { var c = e [ 0 ] . $ ; e = e [ 1 ] ; var l = - 1 , g = 0 , f = null ; c ? ( g = new CKEDITOR . dom . element ( c ) , f = { height : g . $ . offsetHeight , position : g . getDocumentPosition ( ) } ) : f = void 0 ; for ( var c = CKEDITOR . env . ie && ! CKEDITOR . env . edge , m = "collapse" === b . getComputedStyle ( "border-collapse" ) , g = f . height , f = f . position , p = 0 ; p < e . length ; p ++ ) { var k = new CKEDITOR . dom . element ( e [ p ] ) , v = e [ p + 1 ] && new CKEDITOR . dom . element ( e [ p + 1 ] ) , q , w , r = k . getDocumentPosition ( ) . x , l = l + ( k . $ . colSpan || 1 ) ; h ? w = r + u ( k , "left" ) : q = r + k . $ . offsetWidth - u ( k , "right" ) ; v ? ( r = v . getDocumentPosition ( ) . x ,
h ? q = r + v . $ . offsetWidth - u ( v , "right" ) : w = r + u ( v , "left" ) ) : ( r = b . getDocumentPosition ( ) . x , h ? q = r : w = r + b . $ . offsetWidth ) ; k = Math . max ( w - q , 3 ) ; c && m && ( q -= k , k = Math . max ( w - q , 3 ) ) ; k = { table : b , index : l , x : q , y : f . y , width : k , height : g , rtl : h } ; a [ l ] = a [ l ] || [ ] ; a [ l ] . push ( k ) ; k . alignedPillars = a [ l ] ; d . push ( k ) } } ) ; return d } function B ( b ) { ( b . data || b ) . preventDefault ( ) } function E ( b ) { function d ( ) { f = 0 ; g . setOpacity ( 0 ) ; p && a ( ) ; var b = c . table ; setTimeout ( function ( ) { b . removeCustomData ( "_cke_table_pillars" ) } , 0 ) ; n . removeListener ( "dragstart" , B ) } function a ( ) { for ( var l =
c . rtl , a = l ? q . length : v . length , g = 0 , e = 0 ; e < a ; e ++ ) { var f = v [ e ] , d = q [ e ] , k = c . table ; CKEDITOR . tools . setTimeout ( function ( c , e , f , d , n , h ) { c && c . setStyle ( "width" , m ( Math . max ( e + h , 1 ) ) ) ; f && f . setStyle ( "width" , m ( Math . max ( d - h , 1 ) ) ) ; n && k . setStyle ( "width" , m ( n + h * ( l ? - 1 : 1 ) ) ) ; ++ g == a && b . fire ( "saveSnapshot" ) } , 0 , this , [ f , f && z ( f ) , d , d && z ( d ) , ( ! f || ! d ) && z ( k ) + u ( k , "left" ) + u ( k , "right" ) , p ] ) } } function h ( a ) { B ( a ) ; b . fire ( "saveSnapshot" ) ; a = c . index ; for ( var d = CKEDITOR . tools . buildTableMap ( c . table ) , k = [ ] , h = [ ] , m = Number . MAX _VALUE , u = m , y = c . rtl , D = 0 , C = d . length ; D <
C ; D ++ ) { var t = d [ D ] , x = t [ a + ( y ? 1 : 0 ) ] , t = t [ a + ( y ? 0 : 1 ) ] , x = x && new CKEDITOR . dom . element ( x ) , t = t && new CKEDITOR . dom . element ( t ) ; x && t && x . equals ( t ) || ( x && ( m = Math . min ( m , z ( x ) ) ) , t && ( u = Math . min ( u , z ( t ) ) ) , k . push ( x ) , h . push ( t ) ) } v = k ; q = h ; w = c . x - m ; r = c . x + u ; g . setOpacity ( . 5 ) ; A = parseInt ( g . getStyle ( "left" ) , 10 ) ; p = 0 ; f = 1 ; g . on ( "mousemove" , e ) ; n . on ( "dragstart" , B ) ; n . on ( "mouseup" , l , this ) } function l ( c ) { c . removeListener ( ) ; d ( ) } function e ( c ) { k ( c . data . getPageOffset ( ) . x ) } var c , n , g , f , A , p , k , v , q , w , r ; n = b . document ; g = CKEDITOR . dom . element . createFromHtml ( '\x3cdiv data-cke-temp\x3d1 contenteditable\x3dfalse unselectable\x3don style\x3d"position:absolute;cursor:col-resize;filter:alpha(opacity\x3d0);opacity:0;padding:0;background-color:#004;background-image:none;border:0px none;z-index:10000"\x3e\x3c/div\x3e' ,
n ) ; b . on ( "destroy" , function ( ) { g . remove ( ) } ) ; y || n . getDocumentElement ( ) . append ( g ) ; this . attachTo = function ( b ) { var a , l , e ; f || ( y && ( n . getBody ( ) . append ( g ) , p = 0 ) , c = b , a = c . alignedPillars [ 0 ] , l = c . alignedPillars [ c . alignedPillars . length - 1 ] , e = a . y , a = l . height + l . y - a . y , g . setStyles ( { width : m ( b . width ) , height : m ( a ) , left : m ( b . x ) , top : m ( e ) } ) , y && g . setOpacity ( . 25 ) , g . on ( "mousedown" , h , this ) , n . getBody ( ) . setStyle ( "cursor" , "col-resize" ) , g . show ( ) ) } ; k = this . move = function ( a , b ) { if ( ! c ) return 0 ; if ( ! ( f || a >= c . x && a <= c . x + c . width && b >= c . y && b <= c . y + c . height ) ) return c =
null , f = p = 0 , n . removeListener ( "mouseup" , l ) , g . removeListener ( "mousedown" , h ) , g . removeListener ( "mousemove" , e ) , n . getBody ( ) . setStyle ( "cursor" , "auto" ) , y ? g . remove ( ) : g . hide ( ) , 0 ; var d = a - Math . round ( g . $ . offsetWidth / 2 ) ; if ( f ) { if ( d == w || d == r ) return 1 ; d = Math . max ( d , w ) ; d = Math . min ( d , r ) ; p = d - A } g . setStyle ( "left" , m ( d ) ) ; return 1 } } function A ( b ) { var d = b . data . getTarget ( ) ; if ( "mouseout" == b . name ) { if ( ! d . is ( "table" ) ) return ; for ( var a = new CKEDITOR . dom . element ( b . data . $ . relatedTarget || b . data . $ . toElement ) ; a && a . $ && ! a . equals ( d ) && ! a . is ( "body" ) ; ) a =
a . getParent ( ) ; if ( ! a || a . equals ( d ) ) return } d . getAscendant ( "table" , 1 ) . removeCustomData ( "_cke_table_pillars" ) ; b . removeListener ( ) } var m = CKEDITOR . tools . cssLength , y = CKEDITOR . env . ie && ( CKEDITOR . env . ie7Compat || CKEDITOR . env . quirks ) ; CKEDITOR . plugins . add ( "tableresize" , { requires : "tabletools" , init : function ( b ) { b . on ( "contentDom" , function ( ) { var d , a = b . editable ( ) , h = a . isInline ( ) ? a : b . document ; a . attachListener ( h , "mousemove" , function ( a ) { a = a . data ; var e = a . getTarget ( ) ; if ( e . type == CKEDITOR . NODE _ELEMENT ) { var c = a . getPageOffset ( ) . x ,
h = a . getPageOffset ( ) . y ; if ( d && d . move ( c , h ) ) B ( a ) ; else if ( e . is ( "table" ) || e . getAscendant ( { thead : 1 , tbody : 1 , tfoot : 1 } , 1 ) ) if ( a = e . getAscendant ( "table" , 1 ) , b . editable ( ) . contains ( a ) ) { ( e = a . getCustomData ( "_cke_table_pillars" ) ) || ( a . setCustomData ( "_cke_table_pillars" , e = C ( a ) ) , a . on ( "mouseout" , A ) , a . on ( "mousedown" , A ) ) ; a : { a = e ; for ( var e = 0 , g = a . length ; e < g ; e ++ ) { var f = a [ e ] ; if ( c >= f . x && c <= f . x + f . width && h >= f . y && h <= f . y + f . height ) { c = f ; break a } } c = null } c && ( ! d && ( d = new E ( b ) ) , d . attachTo ( c ) ) } } } ) ; a . attachListener ( h , "scroll" , function ( ) { var b =
a . find ( "table" ) . toArray ( ) ; CKEDITOR . tools . array . forEach ( b , CKEDITOR . tools . debounce ( function ( a ) { a . removeCustomData ( "_cke_table_pillars" ) } , 200 ) ) } ) } ) } } ) } ) ( ) ; ( function ( ) { CKEDITOR . plugins . add ( "templates" , { requires : "dialog,ajax" , init : function ( a ) { CKEDITOR . dialog . add ( "templates" , CKEDITOR . getUrl ( this . path + "dialogs/templates.js" ) ) ; a . addCommand ( "templates" , new CKEDITOR . dialogCommand ( "templates" ) ) ; a . ui . addButton && a . ui . addButton ( "Templates" , { label : a . lang . templates . button , command : "templates" , toolbar : "doctools,10" } ) } } ) ; var c = { } , f = { } ; CKEDITOR . addTemplates = function ( a , d ) { c [ a ] = d } ; CKEDITOR . getTemplates = function ( a ) { return c [ a ] } ; CKEDITOR . loadTemplates = function ( a , d ) { for ( var e =
[ ] , b = 0 , c = a . length ; b < c ; b ++ ) f [ a [ b ] ] || ( e . push ( a [ b ] ) , f [ a [ b ] ] = 1 ) ; e . length ? CKEDITOR . scriptLoader . load ( e , d ) : setTimeout ( d , 0 ) } } ) ( ) ; CKEDITOR . config . templates _files = [ CKEDITOR . getUrl ( "plugins/templates/templates/default.js" ) ] ; CKEDITOR . config . templates _replaceContent = ! 0 ; ( function ( ) { function n ( a , b ) { return CKEDITOR . tools . array . reduce ( b , function ( a , b ) { return b ( a ) } , a ) } var g = [ CKEDITOR . CTRL + 90 , CKEDITOR . CTRL + 89 , CKEDITOR . CTRL + CKEDITOR . SHIFT + 90 ] , p = { 8 : 1 , 46 : 1 } ; CKEDITOR . plugins . add ( "undo" , { init : function ( a ) { function b ( a ) { d . enabled && ! 1 !== a . data . command . canUndo && d . save ( ) } function c ( ) { d . enabled = a . readOnly ? ! 1 : "wysiwyg" == a . mode ; d . onChange ( ) } var d = a . undoManager = new e ( a ) , l = d . editingHandler = new k ( d ) , f = a . addCommand ( "undo" , { exec : function ( ) { d . undo ( ) && ( a . selectionChange ( ) , this . fire ( "afterUndo" ) ) } ,
startDisabled : ! 0 , canUndo : ! 1 } ) , h = a . addCommand ( "redo" , { exec : function ( ) { d . redo ( ) && ( a . selectionChange ( ) , this . fire ( "afterRedo" ) ) } , startDisabled : ! 0 , canUndo : ! 1 } ) ; a . setKeystroke ( [ [ g [ 0 ] , "undo" ] , [ g [ 1 ] , "redo" ] , [ g [ 2 ] , "redo" ] ] ) ; d . onChange = function ( ) { f . setState ( d . undoable ( ) ? CKEDITOR . TRISTATE _OFF : CKEDITOR . TRISTATE _DISABLED ) ; h . setState ( d . redoable ( ) ? CKEDITOR . TRISTATE _OFF : CKEDITOR . TRISTATE _DISABLED ) } ; a . on ( "beforeCommandExec" , b ) ; a . on ( "afterCommandExec" , b ) ; a . on ( "saveSnapshot" , function ( a ) { d . save ( a . data && a . data . contentOnly ) } ) ;
a . on ( "contentDom" , l . attachListeners , l ) ; a . on ( "instanceReady" , function ( ) { a . fire ( "saveSnapshot" ) } ) ; a . on ( "beforeModeUnload" , function ( ) { "wysiwyg" == a . mode && d . save ( ! 0 ) } ) ; a . on ( "mode" , c ) ; a . on ( "readOnly" , c ) ; a . ui . addButton && ( a . ui . addButton ( "Undo" , { label : a . lang . undo . undo , command : "undo" , toolbar : "undo,10" } ) , a . ui . addButton ( "Redo" , { label : a . lang . undo . redo , command : "redo" , toolbar : "undo,20" } ) ) ; a . resetUndo = function ( ) { d . reset ( ) ; a . fire ( "saveSnapshot" ) } ; a . on ( "updateSnapshot" , function ( ) { d . currentImage && d . update ( ) } ) ; a . on ( "lockSnapshot" ,
@ -1217,4 +1221,99 @@ a=a.replace(/<body/,'\x3cbody role\x3d"textbox" aria-multiline\x3d"true"');b.tit
",window);wasLoaded\x3d1;}" + ( CKEDITOR . env . ie ? "onload();" : 'document.addEventListener("DOMContentLoaded", onload, false );' ) + "\x3c/script\x3e" ; CKEDITOR . env . ie && 9 > CKEDITOR . env . version && ( c += '\x3cscript id\x3d"cke_shimscrpt"\x3ewindow.parent.CKEDITOR.tools.enableHtml5Elements(document)\x3c/script\x3e' ) ; g && CKEDITOR . env . ie && 10 > CKEDITOR . env . version && ( c += '\x3cscript id\x3d"cke_basetagscrpt"\x3evar baseTag \x3d document.querySelector( "base" );baseTag.href \x3d baseTag.href;\x3c/script\x3e' ) ; a = a . replace ( /(?=\s*<\/(:?head)>)/ ,
c ) ; this . clearCustomData ( ) ; this . clearListeners ( ) ; b . fire ( "contentDomUnload" ) ; var l = this . getDocument ( ) ; try { l . write ( a ) } catch ( k ) { setTimeout ( function ( ) { l . write ( a ) } , 0 ) } } } , getData : function ( a ) { if ( a ) return this . getHtml ( ) ; a = this . editor ; var e = a . config , b = e . fullPage , c = b && a . docType , f = b && a . xmlDeclaration , d = this . getDocument ( ) , d = b ? d . getDocumentElement ( ) . getOuterHtml ( ) : d . getBody ( ) . getHtml ( ) ; CKEDITOR . env . gecko && e . enterMode != CKEDITOR . ENTER _BR && ( d = d . replace ( /<br>(?=\s*(:?$|<\/body>))/ , "" ) ) ; b && ( d = d . replace ( /<body(.*?)role="?textbox"?/i ,
"\x3cbody$1" ) . replace ( /<body(.*?)aria-multiline="?true"?/i , "\x3cbody$1" ) . replace ( /<body(.*?)tabindex="?0"?/i , "\x3cbody$1" ) . replace ( /<body(.*?)aria-label="(.+?)"/i , "\x3cbody$1" ) . replace ( /<body(.*?)aria-readonly="?(?:true|false)"?/i , "\x3cbody$1" ) ) ; d = a . dataProcessor . toDataFormat ( d ) ; f && ( d = f + "\n" + d ) ; c && ( d = c + "\n" + d ) ; return d } , focus : function ( ) { this . _ . isLoadingData ? this . _ . isPendingFocus = ! 0 : l . baseProto . focus . call ( this ) } , detach : function ( ) { if ( ! this . preserveIframe ) { var a = this . editor , e = a . document , a = a . container . findOne ( "iframe.cke_wysiwyg_frame" ) ;
l . baseProto . detach . call ( this ) ; this . clearCustomData ( this . _ . expandoNumber ) ; e . getDocumentElement ( ) . clearCustomData ( ) ; CKEDITOR . tools . removeFunction ( this . _ . frameLoadedHandler ) ; a && ( a . clearCustomData ( ) , ( e = a . removeCustomData ( "onResize" ) ) && e . removeListener ( ) , a . isDetached ( ) || a . remove ( ) ) } } } } ) } ) ( ) ; CKEDITOR . config . disableObjectResizing = ! 1 ; CKEDITOR . config . disableNativeTableHandles = ! 0 ; CKEDITOR . config . disableNativeSpellChecker = ! 0 ; CKEDITOR . config . observableParent = CKEDITOR . document . $ ; CKEDITOR . config . plugins = 'dialogui,dialog,a11yhelp,about,basicstyles,bidi,blockquote,button,codemirror,panelbutton,panel,floatpanel,colorbutton,colordialog,menu,contextmenu,dialogadvtab,div,elementspath,enterkey,entities,fakeobjects,popup,filetools,filebrowser,find,flash,listblock,richcombo,font,format,forms,horizontalrule,htmlwriter,iframe,image,indent,indentlist,justify,link,list,liststyle,maximize,newpage,pagebreak,notification,toolbar,clipboard,xml,ajax,pastetools,pastefromword,pastetext,removeformat,resize,save,selectall,sharedspace,showblocks,showborders,smiley,sourcedialog,specialchar,stylescombo,stylesheetparser,tab,table,tabletools,tableresize,templates,undo,wysiwygarea' ; CKEDITOR . config . skin = 'moono-lisa' ; ( function ( ) { var setIcons = function ( icons , strip ) { var path = CKEDITOR . getUrl ( 'plugins/' + strip ) ; icons = icons . split ( ',' ) ; for ( var i = 0 ; i < icons . length ; i ++ ) CKEDITOR . skin . icons [ icons [ i ] ] = { path : path , offset : - icons [ ++ i ] , bgsize : icons [ ++ i ] } ; } ; if ( CKEDITOR . env . hidpi ) setIcons ( 'about,0,,bold,24,,italic,48,,strike,72,,subscript,96,,superscript,120,,underline,144,,bidiltr,168,,bidirtl,192,,blockquote,216,,bgcolor,240,,textcolor,264,,creatediv,288,,find-rtl,312,,find,336,,replace,360,,button,384,,checkbox,408,,form,432,,hiddenfield,456,,imagebutton,480,,radio,504,,select-rtl,528,,select,552,,textarea-rtl,576,,textarea,600,,textfield-rtl,624,,textfield,648,,horizontalrule,672,,iframe,696,,image,720,,indent-rtl,744,,indent,768,,outdent-rtl,792,,outdent,816,,justifyblock,840,,justifycenter,864,,justifyleft,888,,justifyright,912,,anchor-rtl,936,,anchor,960,,link,984,,unlink,1008,,bulletedlist-rtl,1032,,bulletedlist,1056,,numberedlist-rtl,1080,,numberedlist,1104,,maximize,1128,,newpage-rtl,1152,,newpage,1176,,pagebreak-rtl,1200,,pagebreak,1224,,copy-rtl,1248,,copy,1272,,cut-rtl,1296,,cut,1320,,paste-rtl,1344,,paste,1368,,pastefromword-rtl,1392,,pastefromword,1416,,pastetext-rtl,1440,,pastetext,1464,,removeformat,1488,,save,1512,,selectall,1536,,showblocks-rtl,1560,,showblocks,1584,,smiley,1608,,sourcedialog-rtl,1632,,sourcedialog,1656,,specialchar,1680,,table,1704,,templates-rtl,1728,,templates,1752,,redo-rtl,1776,,redo,1800,,undo-rtl,1824,,undo,1848,' , 'icons_hidpi.png' ) ; else setIcons ( 'about,0,auto,bold,24,auto,italic,48,auto,strike,72,auto,subscript,96,auto,superscript,120,auto,underline,144,auto,bidiltr,168,auto,bidirtl,192,auto,blockquote,216,auto,bgcolor,240,auto,textcolor,264,auto,creatediv,288,auto,find-rtl,312,auto,find,336,auto,replace,360,auto,button,384,auto,checkbox,408,auto,form,432,auto,hiddenfield,456,auto,imagebutton,480,auto,radio,504,auto,select-rtl,528,auto,select,552,auto,textarea-rtl,576,auto,textarea,600,auto,textfield-rtl,624,auto,textfield,648,auto,horizontalrule,672,auto,iframe,696,auto,image,720,auto,indent-rtl,744,auto,indent,768,auto,outdent-rtl,792,auto,outdent,816,auto,justifyblock,840,auto,justifycenter,864,auto,justifyleft,888,auto,justifyright,912,auto,anchor-rtl,936,auto,anchor,960,auto,link,984,auto,unlink,1008,auto,bulletedlist-rtl,1032,auto,bulletedlist,1056,auto,numberedlist-rtl,1080,auto,numberedlist,1104,auto,maximize,1128,auto,newpage-rtl,1152,auto,newpage,1176,auto,pagebreak-rtl,1200,auto,pagebreak,1224,auto,copy-rtl,1248,auto,copy,1272,auto,cut-rtl,1296,auto,cut,1320,auto,paste-rtl,1344,auto,paste,1368,auto,pastefromword-rtl,1392,auto,pastefromword,1416,auto,pastetext-rtl,1440,auto,pastetext,1464,auto,removeformat,1488,auto,save,1512,auto,selectall,1536,auto,showblocks-rtl,1560,auto,showblocks,1584,auto,smiley,1608,auto,sourcedialog-rtl,1632,auto,sourcedialog,1656,auto,specialchar,1680,auto,table,1704,auto,templates-rtl,1728,auto,templates,1752,auto,redo-rtl,1776,auto,redo,1800,auto,undo-rtl,1824,auto,undo,1848,auto' , 'icons.png' ) ; } ) ( ) ; CKEDITOR . lang . languages = { "af" : 1 , "ar" : 1 , "bg" : 1 , "ca" : 1 , "cs" : 1 , "da" : 1 , "de" : 1 , "el" : 1 , "en" : 1 , "is" : 1 , "ro" : 1 , "es" : 1 , "et" : 1 , "fi" : 1 , "fo" : 1 , "fr" : 1 , "gl" : 1 , "hr" : 1 , "hu" : 1 , "it" : 1 , "ja" : 1 , "lt" : 1 , "nl" : 1 , "no" : 1 , "pl" : 1 , "pt" : 1 , "pt-br" : 1 , "ru" : 1 , "sk" : 1 , "sl" : 1 , "sv" : 1 , "tr" : 1 , "uk" : 1 , "zh" : 1 } ; } ( ) ) ;
l . baseProto . detach . call ( this ) ; this . clearCustomData ( this . _ . expandoNumber ) ; e . getDocumentElement ( ) . clearCustomData ( ) ; CKEDITOR . tools . removeFunction ( this . _ . frameLoadedHandler ) ; a && ( a . clearCustomData ( ) , ( e = a . removeCustomData ( "onResize" ) ) && e . removeListener ( ) , a . isDetached ( ) || a . remove ( ) ) } } } } ) } ) ( ) ; CKEDITOR . config . disableObjectResizing = ! 1 ; CKEDITOR . config . disableNativeTableHandles = ! 0 ; CKEDITOR . config . disableNativeSpellChecker = ! 0 ; CKEDITOR . config . observableParent = CKEDITOR . document . $ ; ( function ( ) { function m ( a , d ) { CKEDITOR . tools . extend ( this , { editor : a , editable : a . editable ( ) , doc : a . document , win : a . window } , d , ! 0 ) ; this . inline = this . editable . isInline ( ) ; this . inline || ( this . frame = this . win . getFrame ( ) ) ; this . target = this [ this . inline ? "editable" : "doc" ] } function n ( a , d ) { CKEDITOR . tools . extend ( this , d , { editor : a } , ! 0 ) } function p ( a , d ) { var b = a . editable ( ) ; CKEDITOR . tools . extend ( this , { editor : a , editable : b , inline : b . isInline ( ) , doc : a . document , win : a . window , container : CKEDITOR . document . getBody ( ) , winTop : CKEDITOR . document . getWindow ( ) } ,
d , ! 0 ) ; this . hidden = { } ; this . visible = { } ; this . inline || ( this . frame = this . win . getFrame ( ) ) ; this . queryViewport ( ) ; var c = CKEDITOR . tools . bind ( this . queryViewport , this ) , e = CKEDITOR . tools . bind ( this . hideVisible , this ) , g = CKEDITOR . tools . bind ( this . removeAll , this ) ; b . attachListener ( this . winTop , "resize" , c ) ; b . attachListener ( this . winTop , "scroll" , c ) ; b . attachListener ( this . winTop , "resize" , e ) ; b . attachListener ( this . win , "scroll" , e ) ; b . attachListener ( this . inline ? b : this . frame , "mouseout" , function ( a ) { var b = a . data . $ . clientX ; a = a . data . $ . clientY ;
this . queryViewport ( ) ; ( b <= this . rect . left || b >= this . rect . right || a <= this . rect . top || a >= this . rect . bottom ) && this . hideVisible ( ) ; ( 0 >= b || b >= this . winTopPane . width || 0 >= a || a >= this . winTopPane . height ) && this . hideVisible ( ) } , this ) ; b . attachListener ( a , "resize" , c ) ; b . attachListener ( a , "mode" , g ) ; a . on ( "destroy" , g ) ; this . lineTpl = ( new CKEDITOR . template ( '\x3cdiv data-cke-lineutils-line\x3d"1" class\x3d"cke_reset_all" style\x3d"{lineStyle}"\x3e\x3cspan style\x3d"{tipLeftStyle}"\x3e\x26nbsp;\x3c/span\x3e\x3cspan style\x3d"{tipRightStyle}"\x3e\x26nbsp;\x3c/span\x3e\x3c/div\x3e' ) ) . output ( { lineStyle : CKEDITOR . tools . writeCssText ( CKEDITOR . tools . extend ( { } ,
t , this . lineStyle , ! 0 ) ) , tipLeftStyle : CKEDITOR . tools . writeCssText ( CKEDITOR . tools . extend ( { } , q , { left : "0px" , "border-left-color" : "red" , "border-width" : "6px 0 6px 6px" } , this . tipCss , this . tipLeftStyle , ! 0 ) ) , tipRightStyle : CKEDITOR . tools . writeCssText ( CKEDITOR . tools . extend ( { } , q , { right : "0px" , "border-right-color" : "red" , "border-width" : "6px 6px 6px 0" } , this . tipCss , this . tipRightStyle , ! 0 ) ) } ) } function l ( a ) { var d ; if ( d = a && a . type == CKEDITOR . NODE _ELEMENT ) d = ! ( r [ a . getComputedStyle ( "float" ) ] || r [ a . getAttribute ( "align" ) ] ) ; return d &&
! u [ a . getComputedStyle ( "position" ) ] } CKEDITOR . plugins . add ( "lineutils" ) ; CKEDITOR . LINEUTILS _BEFORE = 1 ; CKEDITOR . LINEUTILS _AFTER = 2 ; CKEDITOR . LINEUTILS _INSIDE = 4 ; m . prototype = { start : function ( a ) { var d = this , b = this . editor , c = this . doc , e , g , f , h , k = CKEDITOR . tools . eventsBuffer ( 50 , function ( ) { b . readOnly || "wysiwyg" != b . mode || ( d . relations = { } , ( g = c . $ . elementFromPoint ( f , h ) ) && g . nodeType && ( e = new CKEDITOR . dom . element ( g ) , d . traverseSearch ( e ) , isNaN ( f + h ) || d . pixelSearch ( e , f , h ) , a && a ( d . relations , f , h ) ) ) } ) ; this . listener = this . editable . attachListener ( this . target ,
"mousemove" , function ( a ) { f = a . data . $ . clientX ; h = a . data . $ . clientY ; k . input ( ) } ) ; this . editable . attachListener ( this . inline ? this . editable : this . frame , "mouseout" , function ( ) { k . reset ( ) } ) } , stop : function ( ) { this . listener && this . listener . removeListener ( ) } , getRange : function ( ) { var a = { } ; a [ CKEDITOR . LINEUTILS _BEFORE ] = CKEDITOR . POSITION _BEFORE _START ; a [ CKEDITOR . LINEUTILS _AFTER ] = CKEDITOR . POSITION _AFTER _END ; a [ CKEDITOR . LINEUTILS _INSIDE ] = CKEDITOR . POSITION _AFTER _START ; return function ( d ) { var b = this . editor . createRange ( ) ; b . moveToPosition ( this . relations [ d . uid ] . element ,
a [ d . type ] ) ; return b } } ( ) , store : function ( ) { function a ( a , b , c ) { var e = a . getUniqueId ( ) ; e in c ? c [ e ] . type |= b : c [ e ] = { element : a , type : b } } return function ( d , b ) { var c ; b & CKEDITOR . LINEUTILS _AFTER && l ( c = d . getNext ( ) ) && c . isVisible ( ) && ( a ( c , CKEDITOR . LINEUTILS _BEFORE , this . relations ) , b ^= CKEDITOR . LINEUTILS _AFTER ) ; b & CKEDITOR . LINEUTILS _INSIDE && l ( c = d . getFirst ( ) ) && c . isVisible ( ) && ( a ( c , CKEDITOR . LINEUTILS _BEFORE , this . relations ) , b ^= CKEDITOR . LINEUTILS _INSIDE ) ; a ( d , b , this . relations ) } } ( ) , traverseSearch : function ( a ) { var d , b , c ; do if ( c = a . $ [ "data-cke-expando" ] ,
! ( c && c in this . relations ) ) { if ( a . equals ( this . editable ) ) break ; if ( l ( a ) ) for ( d in this . lookups ) ( b = this . lookups [ d ] ( a ) ) && this . store ( a , b ) } while ( ( ! a || a . type != CKEDITOR . NODE _ELEMENT || "true" != a . getAttribute ( "contenteditable" ) ) && ( a = a . getParent ( ) ) ) } , pixelSearch : function ( ) { function a ( a , c , e , g , f ) { for ( var h = 0 , k ; f ( e ) ; ) { e += g ; if ( 25 == ++ h ) break ; if ( k = this . doc . $ . elementFromPoint ( c , e ) ) if ( k == a ) h = 0 ; else if ( d ( a , k ) && ( h = 0 , l ( k = new CKEDITOR . dom . element ( k ) ) ) ) return k } } var d = CKEDITOR . env . ie || CKEDITOR . env . webkit ? function ( a , c ) { return a . contains ( c ) } :
function ( a , c ) { return ! ! ( a . compareDocumentPosition ( c ) & 16 ) } ; return function ( b , c , d ) { var g = this . win . getViewPaneSize ( ) . height , f = a . call ( this , b . $ , c , d , - 1 , function ( a ) { return 0 < a } ) ; c = a . call ( this , b . $ , c , d , 1 , function ( a ) { return a < g } ) ; if ( f ) for ( this . traverseSearch ( f ) ; ! f . getParent ( ) . equals ( b ) ; ) f = f . getParent ( ) ; if ( c ) for ( this . traverseSearch ( c ) ; ! c . getParent ( ) . equals ( b ) ; ) c = c . getParent ( ) ; for ( ; f || c ; ) { f && ( f = f . getNext ( l ) ) ; if ( ! f || f . equals ( c ) ) break ; this . traverseSearch ( f ) ; c && ( c = c . getPrevious ( l ) ) ; if ( ! c || c . equals ( f ) ) break ; this . traverseSearch ( c ) } } } ( ) ,
greedySearch : function ( ) { this . relations = { } ; for ( var a = this . editable . getElementsByTag ( "*" ) , d = 0 , b , c , e ; b = a . getItem ( d ++ ) ; ) if ( ! b . equals ( this . editable ) && b . type == CKEDITOR . NODE _ELEMENT && ( b . hasAttribute ( "contenteditable" ) || ! b . isReadOnly ( ) ) && l ( b ) && b . isVisible ( ) ) for ( e in this . lookups ) ( c = this . lookups [ e ] ( b ) ) && this . store ( b , c ) ; return this . relations } } ; n . prototype = { locate : function ( ) { function a ( a , b ) { var c = a . element [ b === CKEDITOR . LINEUTILS _BEFORE ? "getPrevious" : "getNext" ] ( ) ; return c && l ( c ) ? ( a . siblingRect = c . getClientRect ( ) ,
b == CKEDITOR . LINEUTILS _BEFORE ? ( a . siblingRect . bottom + a . elementRect . top ) / 2 : ( a . elementRect . bottom + a . siblingRect . top ) / 2 ) : b == CKEDITOR . LINEUTILS _BEFORE ? a . elementRect . top : a . elementRect . bottom } return function ( d ) { var b ; this . locations = { } ; for ( var c in d ) b = d [ c ] , b . elementRect = b . element . getClientRect ( ) , b . type & CKEDITOR . LINEUTILS _BEFORE && this . store ( c , CKEDITOR . LINEUTILS _BEFORE , a ( b , CKEDITOR . LINEUTILS _BEFORE ) ) , b . type & CKEDITOR . LINEUTILS _AFTER && this . store ( c , CKEDITOR . LINEUTILS _AFTER , a ( b , CKEDITOR . LINEUTILS _AFTER ) ) , b . type &
CKEDITOR . LINEUTILS _INSIDE && this . store ( c , CKEDITOR . LINEUTILS _INSIDE , ( b . elementRect . top + b . elementRect . bottom ) / 2 ) ; return this . locations } } ( ) , sort : function ( ) { var a , d , b , c ; return function ( e , g ) { a = this . locations ; d = [ ] ; for ( var f in a ) for ( var h in a [ f ] ) if ( b = Math . abs ( e - a [ f ] [ h ] ) , d . length ) { for ( c = 0 ; c < d . length ; c ++ ) if ( b < d [ c ] . dist ) { d . splice ( c , 0 , { uid : + f , type : h , dist : b } ) ; break } c == d . length && d . push ( { uid : + f , type : h , dist : b } ) } else d . push ( { uid : + f , type : h , dist : b } ) ; return "undefined" != typeof g ? d . slice ( 0 , g ) : d } } ( ) , store : function ( a ,
d , b ) { this . locations [ a ] || ( this . locations [ a ] = { } ) ; this . locations [ a ] [ d ] = b } } ; var q = { display : "block" , width : "0px" , height : "0px" , "border-color" : "transparent" , "border-style" : "solid" , position : "absolute" , top : "-6px" } , t = { height : "0px" , "border-top" : "1px dashed red" , position : "absolute" , "z-index" : 9999 } ; p . prototype = { removeAll : function ( ) { for ( var a in this . hidden ) this . hidden [ a ] . remove ( ) , delete this . hidden [ a ] ; for ( a in this . visible ) this . visible [ a ] . remove ( ) , delete this . visible [ a ] } , hideLine : function ( a ) { var d = a . getUniqueId ( ) ;
a . hide ( ) ; this . hidden [ d ] = a ; delete this . visible [ d ] } , showLine : function ( a ) { var d = a . getUniqueId ( ) ; a . show ( ) ; this . visible [ d ] = a ; delete this . hidden [ d ] } , hideVisible : function ( ) { for ( var a in this . visible ) this . hideLine ( this . visible [ a ] ) } , placeLine : function ( a , d ) { var b , c , e ; if ( b = this . getStyle ( a . uid , a . type ) ) { for ( e in this . visible ) if ( this . visible [ e ] . getCustomData ( "hash" ) !== this . hash ) { c = this . visible [ e ] ; break } if ( ! c ) for ( e in this . hidden ) if ( this . hidden [ e ] . getCustomData ( "hash" ) !== this . hash ) { this . showLine ( c = this . hidden [ e ] ) ;
break } c || this . showLine ( c = this . addLine ( ) ) ; c . setCustomData ( "hash" , this . hash ) ; this . visible [ c . getUniqueId ( ) ] = c ; c . setStyles ( b ) ; d && d ( c ) } } , getStyle : function ( a , d ) { var b = this . relations [ a ] , c = this . locations [ a ] [ d ] , e = { } ; e . width = b . siblingRect ? Math . max ( b . siblingRect . width , b . elementRect . width ) : b . elementRect . width ; e . top = this . inline ? c + this . winTopScroll . y - this . rect . relativeY : this . rect . top + this . winTopScroll . y + c ; if ( e . top - this . winTopScroll . y < this . rect . top || e . top - this . winTopScroll . y > this . rect . bottom ) return ! 1 ; this . inline ?
e . left = b . elementRect . left - this . rect . relativeX : ( 0 < b . elementRect . left ? e . left = this . rect . left + b . elementRect . left : ( e . width += b . elementRect . left , e . left = this . rect . left ) , 0 < ( b = e . left + e . width - ( this . rect . left + this . winPane . width ) ) && ( e . width -= b ) ) ; e . left += this . winTopScroll . x ; for ( var g in e ) e [ g ] = CKEDITOR . tools . cssLength ( e [ g ] ) ; return e } , addLine : function ( ) { var a = CKEDITOR . dom . element . createFromHtml ( this . lineTpl ) ; a . appendTo ( this . container ) ; return a } , prepare : function ( a , d ) { this . relations = a ; this . locations = d ; this . hash = Math . random ( ) } ,
cleanup : function ( ) { var a , d ; for ( d in this . visible ) a = this . visible [ d ] , a . getCustomData ( "hash" ) !== this . hash && this . hideLine ( a ) } , queryViewport : function ( ) { this . winPane = this . win . getViewPaneSize ( ) ; this . winTopScroll = this . winTop . getScrollPosition ( ) ; this . winTopPane = this . winTop . getViewPaneSize ( ) ; this . rect = this . getClientRect ( this . inline ? this . editable : this . frame ) } , getClientRect : function ( a ) { a = a . getClientRect ( ) ; var d = this . container . getDocumentPosition ( ) , b = this . container . getComputedStyle ( "position" ) ; a . relativeX = a . relativeY =
0 ; "static" != b && ( a . relativeY = d . y , a . relativeX = d . x , a . top -= a . relativeY , a . bottom -= a . relativeY , a . left -= a . relativeX , a . right -= a . relativeX ) ; return a } } ; var r = { left : 1 , right : 1 , center : 1 } , u = { absolute : 1 , fixed : 1 } ; CKEDITOR . plugins . lineutils = { finder : m , locator : n , liner : p } } ) ( ) ; ( function ( ) { function e ( a ) { return a . getName && ! a . hasAttribute ( "data-cke-temp" ) } CKEDITOR . plugins . add ( "widgetselection" , { init : function ( a ) { if ( CKEDITOR . env . webkit ) { var b = CKEDITOR . plugins . widgetselection ; a . on ( "contentDom" , function ( a ) { a = a . editor ; var c = a . editable ( ) ; c . attachListener ( c , "keydown" , function ( a ) { a . data . getKeystroke ( ) == CKEDITOR . CTRL + 65 && CKEDITOR . tools . setTimeout ( function ( ) { b . addFillers ( c ) || b . removeFillers ( c ) } , 0 ) } , null , null , - 1 ) ; a . on ( "selectionCheck" , function ( a ) { b . removeFillers ( a . editor . editable ( ) ) } ) ;
a . on ( "paste" , function ( a ) { a . data . dataValue = b . cleanPasteData ( a . data . dataValue ) } ) ; "selectall" in a . plugins && b . addSelectAllIntegration ( a ) } ) } } } ) ; CKEDITOR . plugins . widgetselection = { startFiller : null , endFiller : null , fillerAttribute : "data-cke-filler-webkit" , fillerContent : "\x26nbsp;" , fillerTagName : "div" , addFillers : function ( a ) { var b = a . editor ; if ( ! this . isWholeContentSelected ( a ) && 0 < a . getChildCount ( ) ) { var d = a . getFirst ( e ) , c = a . getLast ( e ) ; d && d . type == CKEDITOR . NODE _ELEMENT && ! d . isEditable ( ) && ( this . startFiller = this . createFiller ( ) ,
a . append ( this . startFiller , 1 ) ) ; c && c . type == CKEDITOR . NODE _ELEMENT && ! c . isEditable ( ) && ( this . endFiller = this . createFiller ( ! 0 ) , a . append ( this . endFiller , 0 ) ) ; if ( this . hasFiller ( a ) ) return b = b . createRange ( ) , b . selectNodeContents ( a ) , b . select ( ) , ! 0 } return ! 1 } , removeFillers : function ( a ) { if ( this . hasFiller ( a ) && ! this . isWholeContentSelected ( a ) ) { var b = a . findOne ( this . fillerTagName + "[" + this . fillerAttribute + "\x3dstart]" ) , d = a . findOne ( this . fillerTagName + "[" + this . fillerAttribute + "\x3dend]" ) ; this . startFiller && b && this . startFiller . equals ( b ) ?
this . removeFiller ( this . startFiller , a ) : this . startFiller = b ; this . endFiller && d && this . endFiller . equals ( d ) ? this . removeFiller ( this . endFiller , a ) : this . endFiller = d } } , cleanPasteData : function ( a ) { a && a . length && ( a = a . replace ( this . createFillerRegex ( ) , "" ) . replace ( this . createFillerRegex ( ! 0 ) , "" ) ) ; return a } , isWholeContentSelected : function ( a ) { var b = a . editor . getSelection ( ) . getRanges ( ) [ 0 ] ; return ! b || b && b . collapsed ? ! 1 : ( b = b . clone ( ) , b . enlarge ( CKEDITOR . ENLARGE _ELEMENT ) , ! ! ( b && a && b . startContainer && b . endContainer && 0 === b . startOffset &&
b . endOffset === a . getChildCount ( ) && b . startContainer . equals ( a ) && b . endContainer . equals ( a ) ) ) } , hasFiller : function ( a ) { return 0 < a . find ( this . fillerTagName + "[" + this . fillerAttribute + "]" ) . count ( ) } , createFiller : function ( a ) { var b = new CKEDITOR . dom . element ( this . fillerTagName ) ; b . setHtml ( this . fillerContent ) ; b . setAttribute ( this . fillerAttribute , a ? "end" : "start" ) ; b . setAttribute ( "data-cke-temp" , 1 ) ; b . setStyles ( { display : "block" , width : 0 , height : 0 , padding : 0 , border : 0 , margin : 0 , position : "absolute" , top : 0 , left : "-9999px" , opacity : 0 ,
overflow : "hidden" } ) ; return b } , removeFiller : function ( a , b ) { if ( a ) { var d = b . editor , c = b . editor . getSelection ( ) . getRanges ( ) [ 0 ] . startPath ( ) , f = d . createRange ( ) , g , e ; c . contains ( a ) && ( g = a . getHtml ( ) , e = ! 0 ) ; c = "start" == a . getAttribute ( this . fillerAttribute ) ; a . remove ( ) ; g && 0 < g . length && g != this . fillerContent ? ( b . insertHtmlIntoRange ( g , d . getSelection ( ) . getRanges ( ) [ 0 ] ) , f . setStartAt ( b . getChild ( b . getChildCount ( ) - 1 ) , CKEDITOR . POSITION _BEFORE _END ) , d . getSelection ( ) . selectRanges ( [ f ] ) ) : e && ( c ? f . setStartAt ( b . getFirst ( ) . getNext ( ) , CKEDITOR . POSITION _AFTER _START ) :
f . setEndAt ( b . getLast ( ) . getPrevious ( ) , CKEDITOR . POSITION _BEFORE _END ) , b . editor . getSelection ( ) . selectRanges ( [ f ] ) ) } } , createFillerRegex : function ( a ) { var b = this . createFiller ( a ) . getOuterHtml ( ) . replace ( /style="[^"]*"/gi , 'style\x3d"[^"]*"' ) . replace ( />[^<]*</gi , "\x3e[^\x3c]*\x3c" ) ; return new RegExp ( ( a ? "" : "^" ) + b + ( a ? "$" : "" ) ) } , addSelectAllIntegration : function ( a ) { var b = this ; a . editable ( ) . attachListener ( a , "beforeCommandExec" , function ( d ) { var c = a . editable ( ) ; "selectAll" == d . data . name && c && b . addFillers ( c ) } , null , null , 9999 ) } } } ) ( ) ; ( function ( ) { function q ( a ) { this . editor = a ; this . registered = { } ; this . instances = { } ; this . selected = [ ] ; this . widgetHoldingFocusedEditable = this . focused = null ; this . _ = { nextId : 0 , upcasts : [ ] , upcastCallbacks : [ ] , filters : { } } ; R ( this ) ; S ( this ) ; this . on ( "checkWidgets" , T ) ; this . editor . on ( "contentDomInvalidated" , this . checkWidgets , this ) ; U ( this ) ; V ( this ) ; W ( this ) ; X ( this ) ; Y ( this ) } function h ( a , b , c , d , e ) { var f = a . editor ; CKEDITOR . tools . extend ( this , d , { editor : f , id : b , inline : "span" == c . getParent ( ) . getName ( ) , element : c , data : CKEDITOR . tools . extend ( { } ,
"function" == typeof d . defaults ? d . defaults ( ) : d . defaults ) , dataReady : ! 1 , inited : ! 1 , ready : ! 1 , edit : h . prototype . edit , focusedEditable : null , definition : d , repository : a , draggable : ! 1 !== d . draggable , _ : { downcastFn : d . downcast && "string" == typeof d . downcast ? d . downcasts [ d . downcast ] : d . downcast } } , ! 0 ) ; a . fire ( "instanceCreated" , this ) ; Z ( this , d ) ; this . init && this . init ( ) ; this . inited = ! 0 ; ( a = this . element . data ( "cke-widget-data" ) ) && this . setData ( JSON . parse ( decodeURIComponent ( a ) ) ) ; e && this . setData ( e ) ; this . data . classes || this . setData ( "classes" ,
this . getClasses ( ) ) ; this . dataReady = ! 0 ; v ( this ) ; this . fire ( "data" , this . data ) ; this . isInited ( ) && f . editable ( ) . contains ( this . wrapper ) && ( this . ready = ! 0 , this . fire ( "ready" ) ) } function t ( a , b , c ) { CKEDITOR . dom . element . call ( this , b . $ ) ; this . editor = a ; this . _ = { } ; b = this . filter = c . filter ; CKEDITOR . dtd [ this . getName ( ) ] . p ? ( this . enterMode = b ? b . getAllowedEnterMode ( a . enterMode ) : a . enterMode , this . shiftEnterMode = b ? b . getAllowedEnterMode ( a . shiftEnterMode , ! 0 ) : a . shiftEnterMode ) : this . enterMode = this . shiftEnterMode = CKEDITOR . ENTER _BR } function aa ( a ,
b ) { a . addCommand ( b . name , { exec : function ( a , d ) { function e ( ) { a . widgets . finalizeCreation ( k ) } var f = a . widgets . focused ; if ( f && f . name == b . name ) f . edit ( ) ; else if ( b . insert ) b . insert ( { editor : a , commandData : d } ) ; else if ( b . template ) { var f = "function" == typeof b . defaults ? b . defaults ( ) : b . defaults , f = CKEDITOR . tools . object . merge ( f || { } , d && d . startupData || { } ) , f = CKEDITOR . dom . element . createFromHtml ( b . template . output ( f ) , a . document ) , g , l = a . widgets . wrapElement ( f , b . name ) , k = new CKEDITOR . dom . documentFragment ( l . getDocument ( ) ) ; k . append ( l ) ;
( g = a . widgets . initOn ( f , b , d && d . startupData ) ) ? ( f = g . once ( "edit" , function ( b ) { if ( b . data . dialog ) g . once ( "dialog" , function ( b ) { b = b . data ; var d , f ; d = b . once ( "ok" , e , null , null , 20 ) ; f = b . once ( "cancel" , function ( b ) { b . data && ! 1 === b . data . hide || a . widgets . destroy ( g , ! 0 ) } ) ; b . once ( "hide" , function ( ) { d . removeListener ( ) ; f . removeListener ( ) } ) } ) ; else e ( ) } , null , null , 999 ) , g . edit ( ) , f . removeListener ( ) ) : e ( ) } } , allowedContent : b . allowedContent , requiredContent : b . requiredContent , contentForms : b . contentForms , contentTransformations : b . contentTransformations } ) }
function ba ( a , b ) { function c ( a , e ) { var c = b . upcast . split ( "," ) , d , f ; for ( f = 0 ; f < c . length ; f ++ ) if ( d = c [ f ] , d === a . name ) return b . upcasts [ d ] . call ( this , a , e ) ; return ! 1 } function d ( b , e , c ) { var d = CKEDITOR . tools . getIndex ( a . _ . upcasts , function ( a ) { return a [ 2 ] > c } ) ; 0 > d && ( d = a . _ . upcasts . length ) ; a . _ . upcasts . splice ( d , 0 , [ CKEDITOR . tools . bind ( b , e ) , e . name , c ] ) } var e = b . upcast , f = b . upcastPriority || 10 ; e && ( "string" == typeof e ? d ( c , b , f ) : d ( e , b , f ) ) } function x ( a , b ) { a . focused = null ; if ( b . isInited ( ) ) { var c = b . editor . checkDirty ( ) ; a . fire ( "widgetBlurred" ,
{ widget : b } ) ; b . setFocused ( ! 1 ) ; ! c && b . editor . resetDirty ( ) } } function T ( a ) { a = a . data ; if ( "wysiwyg" == this . editor . mode ) { var b = this . editor . editable ( ) , c = this . instances , d , e , f , g ; if ( b ) { for ( d in c ) c [ d ] . isReady ( ) && ! b . contains ( c [ d ] . wrapper ) && this . destroy ( c [ d ] , ! 0 ) ; if ( a && a . initOnlyNew ) c = this . initOnAll ( ) ; else { var l = b . find ( ".cke_widget_wrapper" ) , c = [ ] ; d = 0 ; for ( e = l . count ( ) ; d < e ; d ++ ) { f = l . getItem ( d ) ; if ( g = ! this . getByElement ( f , ! 0 ) ) { a : { g = ca ; for ( var k = f ; k = k . getParent ( ) ; ) if ( g ( k ) ) { g = ! 0 ; break a } g = ! 1 } g = ! g } g && b . contains ( f ) && ( f . addClass ( "cke_widget_new" ) ,
c . push ( this . initOn ( f . getFirst ( h . isDomWidgetElement ) ) ) ) } } a && a . focusInited && 1 == c . length && c [ 0 ] . focus ( ) } } } function y ( a ) { if ( "undefined" != typeof a . attributes && a . attributes [ "data-widget" ] ) { var b = z ( a ) , c = A ( a ) , d = ! 1 ; b && b . value && b . value . match ( /^\s/g ) && ( b . parent . attributes [ "data-cke-white-space-first" ] = 1 , b . value = b . value . replace ( /^\s/g , "\x26nbsp;" ) , d = ! 0 ) ; c && c . value && c . value . match ( /\s$/g ) && ( c . parent . attributes [ "data-cke-white-space-last" ] = 1 , c . value = c . value . replace ( /\s$/g , "\x26nbsp;" ) , d = ! 0 ) ; d && ( a . attributes [ "data-cke-widget-white-space" ] =
1 ) } } function z ( a ) { return a . find ( function ( a ) { return 3 === a . type } , ! 0 ) . shift ( ) } function A ( a ) { return a . find ( function ( a ) { return 3 === a . type } , ! 0 ) . pop ( ) } function B ( a , b , c ) { if ( ! c . allowedContent && ! c . disallowedContent ) return null ; var d = this . _ . filters [ a ] ; d || ( this . _ . filters [ a ] = d = { } ) ; a = d [ b ] ; a || ( a = c . allowedContent ? new CKEDITOR . filter ( c . allowedContent ) : this . editor . filter . clone ( ) , d [ b ] = a , c . disallowedContent && a . disallow ( c . disallowedContent ) ) ; return a } function da ( a ) { var b = [ ] , c = a . _ . upcasts , d = a . _ . upcastCallbacks ; return { toBeWrapped : b ,
iterator : function ( a ) { var f , g , l , k , n ; if ( "data-cke-widget-wrapper" in a . attributes ) return ( a = a . getFirst ( h . isParserWidgetElement ) ) && b . push ( [ a ] ) , ! 1 ; if ( "data-widget" in a . attributes ) return b . push ( [ a ] ) , ! 1 ; if ( n = c . length ) { if ( a . attributes [ "data-cke-widget-upcasted" ] ) return ! 1 ; k = 0 ; for ( f = d . length ; k < f ; ++ k ) if ( ! 1 === d [ k ] ( a ) ) return ; for ( k = 0 ; k < n ; ++ k ) if ( f = c [ k ] , l = { } , g = f [ 0 ] ( a , l ) ) return g instanceof CKEDITOR . htmlParser . element && ( a = g ) , a . attributes [ "data-cke-widget-data" ] = encodeURIComponent ( JSON . stringify ( l ) ) , a . attributes [ "data-cke-widget-upcasted" ] =
1 , b . push ( [ a , f [ 1 ] ] ) , ! 1 } } } } function C ( a , b ) { return { tabindex : - 1 , contenteditable : "false" , "data-cke-widget-wrapper" : 1 , "data-cke-filter" : "off" , "class" : "cke_widget_wrapper cke_widget_new cke_widget_" + ( a ? "inline" : "block" ) + ( b ? " cke_widget_" + b : "" ) } } function D ( a , b , c ) { if ( a . type == CKEDITOR . NODE _ELEMENT ) { var d = CKEDITOR . dtd [ a . name ] ; if ( d && ! d [ c . name ] ) { var d = a . split ( b ) , e = a . parent ; b = d . getIndex ( ) ; a . children . length || ( -- b , a . remove ( ) ) ; d . children . length || d . remove ( ) ; return D ( e , b , c ) } } a . add ( c , b ) } function E ( a , b ) { return "boolean" ==
typeof a . inline ? a . inline : ! ! CKEDITOR . dtd . $inline [ b ] } function ca ( a ) { return a . hasAttribute ( "data-cke-temp" ) } function p ( a , b , c , d ) { var e = a . editor ; e . fire ( "lockSnapshot" ) ; c ? ( d = c . data ( "cke-widget-editable" ) , d = b . editables [ d ] , a . widgetHoldingFocusedEditable = b , b . focusedEditable = d , c . addClass ( "cke_widget_editable_focused" ) , d . filter && e . setActiveFilter ( d . filter ) , e . setActiveEnterMode ( d . enterMode , d . shiftEnterMode ) ) : ( d || b . focusedEditable . removeClass ( "cke_widget_editable_focused" ) , b . focusedEditable = null , a . widgetHoldingFocusedEditable =
null , e . setActiveFilter ( null ) , e . setActiveEnterMode ( null , null ) ) ; e . fire ( "unlockSnapshot" ) } function ea ( a ) { a . contextMenu && a . contextMenu . addListener ( function ( b ) { if ( b = a . widgets . getByElement ( b , ! 0 ) ) return b . fire ( "contextMenu" , { } ) } ) } function fa ( a , b ) { return CKEDITOR . tools . trim ( b ) } function X ( a ) { var b = a . editor , c = CKEDITOR . plugins . lineutils ; b . on ( "dragstart" , function ( c ) { var e = c . data . target ; h . isDomDragHandler ( e ) && ( e = a . getByElement ( e ) , c . data . dataTransfer . setData ( "cke/widget-id" , e . id ) , b . focus ( ) , e . focus ( ) ) } ) ; b . on ( "drop" ,
function ( c ) { function e ( a , b ) { return a && b ? a . wrapper . equals ( b . wrapper ) || a . wrapper . contains ( b . wrapper ) : ! 1 } var f = c . data . dataTransfer , g = f . getData ( "cke/widget-id" ) , l = f . getTransferType ( b ) , f = b . createRange ( ) , k = function ( a ) { a = a . getBoundaryNodes ( ) . startNode ; a . type !== CKEDITOR . NODE _ELEMENT && ( a = a . getParent ( ) ) ; return b . widgets . getByElement ( a ) } ( c . data . dropRange ) ; if ( "" !== g && l === CKEDITOR . DATA _TRANSFER _CROSS _EDITORS ) c . cancel ( ) ; else if ( l == CKEDITOR . DATA _TRANSFER _INTERNAL ) if ( "" === g && 0 < b . widgets . selected . length ) c . data . dataTransfer . setData ( "text/html" ,
F ( b ) ) ; else if ( g = a . instances [ g ] ) e ( g , k ) ? c . cancel ( ) : ( f . setStartBefore ( g . wrapper ) , f . setEndAfter ( g . wrapper ) , c . data . dragRange = f , delete CKEDITOR . plugins . clipboard . dragStartContainerChildCount , delete CKEDITOR . plugins . clipboard . dragEndContainerChildCount , c . data . dataTransfer . setData ( "text/html" , g . getClipboardHtml ( ) ) , b . widgets . destroy ( g , ! 0 ) ) } ) ; b . on ( "contentDom" , function ( ) { var d = b . editable ( ) ; CKEDITOR . tools . extend ( a , { finder : new c . finder ( b , { lookups : { "default" : function ( b ) { if ( ! b . is ( CKEDITOR . dtd . $listItem ) && b . is ( CKEDITOR . dtd . $block ) &&
! h . isDomNestedEditable ( b ) && ! a . _ . draggedWidget . wrapper . contains ( b ) ) { var c = h . getNestedEditable ( d , b ) ; if ( c ) { b = a . _ . draggedWidget ; if ( a . getByElement ( c ) == b ) return ; c = CKEDITOR . filter . instances [ c . data ( "cke-filter" ) ] ; b = b . requiredContent ; if ( c && b && ! c . check ( b ) ) return } return CKEDITOR . LINEUTILS _BEFORE | CKEDITOR . LINEUTILS _AFTER } } } } ) , locator : new c . locator ( b ) , liner : new c . liner ( b , { lineStyle : { cursor : "move !important" , "border-top-color" : "#666" } , tipLeftStyle : { "border-left-color" : "#666" } , tipRightStyle : { "border-right-color" : "#666" } } ) } ,
! 0 ) } ) } function V ( a ) { var b = a . editor ; b . on ( "contentDom" , function ( ) { var c = b . editable ( ) , d = c . isInline ( ) ? c : b . document , e , f ; c . attachListener ( d , "mousedown" , function ( c ) { var d = c . data . getTarget ( ) ; e = d instanceof CKEDITOR . dom . element ? a . getByElement ( d ) : null ; f = 0 ; e && ( e . inline && d . type == CKEDITOR . NODE _ELEMENT && d . hasAttribute ( "data-cke-widget-drag-handler" ) ? ( f = 1 , a . focused != e && b . getSelection ( ) . removeAllRanges ( ) ) : h . getNestedEditable ( e . wrapper , d ) ? e = null : ( c . data . preventDefault ( ) , CKEDITOR . env . ie || e . focus ( ) ) ) } ) ; c . attachListener ( d ,
"mouseup" , function ( ) { f && e && e . wrapper && ( f = 0 , e . focus ( ) ) } ) ; CKEDITOR . env . ie && c . attachListener ( d , "mouseup" , function ( ) { setTimeout ( function ( ) { e && e . wrapper && c . contains ( e . wrapper ) && ( e . focus ( ) , e = null ) } ) } ) } ) ; b . on ( "doubleclick" , function ( b ) { var d = a . getByElement ( b . data . element ) ; if ( d && ! h . getNestedEditable ( d . wrapper , b . data . element ) ) return d . fire ( "doubleclick" , { element : b . data . element } ) } , null , null , 1 ) } function W ( a ) { a . editor . on ( "key" , function ( b ) { var c = a . focused , d = a . widgetHoldingFocusedEditable , e ; c ? e = c . fire ( "key" , { keyCode : b . data . keyCode } ) :
d && ( c = b . data . keyCode , b = d . focusedEditable , c == CKEDITOR . CTRL + 65 ? ( c = b . getBogus ( ) , d = d . editor . createRange ( ) , d . selectNodeContents ( b ) , c && d . setEndAt ( c , CKEDITOR . POSITION _BEFORE _START ) , d . select ( ) , e = ! 1 ) : 8 == c || 46 == c ? ( e = d . editor . getSelection ( ) . getRanges ( ) , d = e [ 0 ] , e = ! ( 1 == e . length && d . collapsed && d . checkBoundaryOfElement ( b , CKEDITOR [ 8 == c ? "START" : "END" ] ) ) ) : e = void 0 ) ; return e } , null , null , 1 ) } function Y ( a ) { function b ( b ) { 1 > a . selected . length || G ( c , "cut" === b . name ) } var c = a . editor ; c . on ( "contentDom" , function ( ) { var a = c . editable ( ) ;
a . attachListener ( a , "copy" , b ) ; a . attachListener ( a , "cut" , b ) } ) } function U ( a ) { function b ( ) { var a = e . getSelection ( ) ; if ( a && ( a = a . getRanges ( ) [ 0 ] ) && ! a . collapsed ) { var b = c ( a . startContainer ) , d = c ( a . endContainer ) ; ! b && d ? ( a . setEndBefore ( d . wrapper ) , a . select ( ) ) : b && ! d && ( a . setStartAfter ( b . wrapper ) , a . select ( ) ) } } function c ( a ) { return a ? a . type == CKEDITOR . NODE _TEXT ? c ( a . getParent ( ) ) : e . widgets . getByElement ( a ) : null } function d ( ) { a . fire ( "checkSelection" ) } var e = a . editor ; e . on ( "selectionCheck" , d ) ; e . on ( "contentDom" , function ( ) { e . editable ( ) . attachListener ( e ,
"key" , function ( ) { setTimeout ( d , 10 ) } ) } ) ; if ( ! CKEDITOR . env . ie ) a . on ( "checkSelection" , b ) ; a . on ( "checkSelection" , a . checkSelection , a ) ; e . on ( "selectionChange" , function ( b ) { var c = ( b = h . getNestedEditable ( e . editable ( ) , b . data . selection . getStartElement ( ) ) ) && a . getByElement ( b ) , d = a . widgetHoldingFocusedEditable ; d ? d === c && d . focusedEditable . equals ( b ) || ( p ( a , d , null ) , c && b && p ( a , c , b ) ) : c && b && p ( a , c , b ) } ) ; e . on ( "dataReady" , function ( ) { H ( a ) . commit ( ) } ) ; e . on ( "blur" , function ( ) { var b ; ( b = a . focused ) && x ( a , b ) ; ( b = a . widgetHoldingFocusedEditable ) &&
p ( a , b , null ) } ) } function S ( a ) { var b = a . editor , c = { } ; b . on ( "toDataFormat" , function ( b ) { var e = CKEDITOR . tools . getNextNumber ( ) , f = [ ] ; b . data . downcastingSessionId = e ; c [ e ] = f ; b . data . dataValue . forEach ( function ( b ) { var c = b . attributes , e ; if ( "data-cke-widget-white-space" in c ) { e = z ( b ) ; var d = A ( b ) ; e . parent . attributes [ "data-cke-white-space-first" ] && ( e . value = e . value . replace ( /^ /g , " " ) ) ; d . parent . attributes [ "data-cke-white-space-last" ] && ( d . value = d . value . replace ( / $/g , " " ) ) } if ( "data-cke-widget-id" in c ) { if ( c = a . instances [ c [ "data-cke-widget-id" ] ] ) e =
b . getFirst ( h . isParserWidgetElement ) , f . push ( { wrapper : b , element : e , widget : c , editables : { } } ) , e && "1" != e . attributes [ "data-cke-widget-keep-attr" ] && delete e . attributes [ "data-widget" ] } else if ( "data-cke-widget-editable" in c ) return 0 < f . length && ( f [ f . length - 1 ] . editables [ c [ "data-cke-widget-editable" ] ] = b ) , ! 1 } , CKEDITOR . NODE _ELEMENT , ! 0 ) } , null , null , 8 ) ; b . on ( "toDataFormat" , function ( a ) { if ( a . data . downcastingSessionId ) for ( var b = c [ a . data . downcastingSessionId ] , f , g , l , k , h , m ; f = b . shift ( ) ; ) { g = f . widget ; l = f . element ; k = g . _ . downcastFn &&
g . _ . downcastFn . call ( g , l ) ; a . data . widgetsCopy && g . getClipboardHtml && ( k = CKEDITOR . htmlParser . fragment . fromHtml ( g . getClipboardHtml ( ) ) , k = k . children [ 0 ] ) ; for ( m in f . editables ) h = f . editables [ m ] , delete h . attributes . contenteditable , h . setHtml ( g . editables [ m ] . getData ( ) ) ; k || ( k = l ) ; k ? f . wrapper . replaceWith ( k ) : f . wrapper . remove ( ) } } , null , null , 13 ) ; b . on ( "contentDomUnload" , function ( ) { a . destroyAll ( ! 0 ) } ) } function R ( a ) { var b = a . editor , c , d ; b . on ( "toHtml" , function ( b ) { var d = da ( a ) , g ; for ( b . data . dataValue . forEach ( d . iterator , CKEDITOR . NODE _ELEMENT ,
! 0 ) ; g = d . toBeWrapped . pop ( ) ; ) { var l = g [ 0 ] , k = l . parent ; k . type == CKEDITOR . NODE _ELEMENT && k . attributes [ "data-cke-widget-wrapper" ] && k . replaceWith ( l ) ; a . wrapElement ( g [ 0 ] , g [ 1 ] ) } c = b . data . protectedWhitespaces ? 3 == b . data . dataValue . children . length && h . isParserWidgetWrapper ( b . data . dataValue . children [ 1 ] ) : 1 == b . data . dataValue . children . length && h . isParserWidgetWrapper ( b . data . dataValue . children [ 0 ] ) } , null , null , 8 ) ; b . on ( "dataReady" , function ( ) { if ( d ) for ( var c = b . editable ( ) . find ( ".cke_widget_wrapper" ) , f , g , l = 0 , k = c . count ( ) ; l < k ; ++ l ) f =
c . getItem ( l ) , g = f . getFirst ( h . isDomWidgetElement ) , g . type == CKEDITOR . NODE _ELEMENT && g . data ( "widget" ) ? ( g . replace ( f ) , a . wrapElement ( g ) ) : f . remove ( ) ; d = 0 ; a . destroyAll ( ! 0 ) ; a . initOnAll ( ) } ) ; b . on ( "loadSnapshot" , function ( b ) { /data-cke-widget/ . test ( b . data ) && ( d = 1 ) ; a . destroyAll ( ! 0 ) } , null , null , 9 ) ; b . on ( "paste" , function ( a ) { a = a . data ; a . dataValue = a . dataValue . replace ( ga , fa ) ; a . range && ( a = h . getNestedEditable ( b . editable ( ) , a . range . startContainer ) ) && ( a = CKEDITOR . filter . instances [ a . data ( "cke-filter" ) ] ) && b . setActiveFilter ( a ) } ) ; b . on ( "afterInsertHtml" ,
function ( d ) { d . data . intoRange ? a . checkWidgets ( { initOnlyNew : ! 0 } ) : ( b . fire ( "lockSnapshot" ) , a . checkWidgets ( { initOnlyNew : ! 0 , focusInited : c } ) , b . fire ( "unlockSnapshot" ) ) } ) } function H ( a ) { var b = a . selected , c = [ ] , d = b . slice ( 0 ) , e = null ; return { select : function ( a ) { 0 > CKEDITOR . tools . indexOf ( b , a ) && c . push ( a ) ; a = CKEDITOR . tools . indexOf ( d , a ) ; 0 <= a && d . splice ( a , 1 ) ; return this } , focus : function ( a ) { e = a ; return this } , commit : function ( ) { var f = a . focused !== e , g , l ; a . editor . fire ( "lockSnapshot" ) ; for ( f && ( g = a . focused ) && x ( a , g ) ; g = d . pop ( ) ; ) b . splice ( CKEDITOR . tools . indexOf ( b ,
g ) , 1 ) , g . isInited ( ) && ( l = g . editor . checkDirty ( ) , g . setSelected ( ! 1 ) , ! l && g . editor . resetDirty ( ) ) ; f && e && ( l = a . editor . checkDirty ( ) , a . focused = e , a . fire ( "widgetFocused" , { widget : e } ) , e . setFocused ( ! 0 ) , ! l && a . editor . resetDirty ( ) ) ; for ( ; g = c . pop ( ) ; ) b . push ( g ) , g . setSelected ( ! 0 ) ; a . editor . fire ( "unlockSnapshot" ) } } } function ha ( a ) { a && a . addFilterRule ( function ( a ) { return a . replace ( /\s*cke_widget_selected/g , "" ) . replace ( /\s*cke_widget_focused/g , "" ) } ) } function I ( a , b , c ) { var d = 0 ; b = J ( b ) ; var e = a . data . classes || { } , f ; if ( b ) { for ( e = CKEDITOR . tools . clone ( e ) ; f =
b . pop ( ) ; ) c ? e [ f ] || ( d = e [ f ] = 1 ) : e [ f ] && ( delete e [ f ] , d = 1 ) ; d && a . setData ( "classes" , e ) } } function K ( a ) { a . cancel ( ) } function L ( a , b ) { var c = function ( a ) { return a == CKEDITOR . ENTER _BR ? "br" : a == CKEDITOR . ENTER _DIV ? "div" : "p" } ( a . editor . config . enterMode ) , d = new CKEDITOR . dom . element ( c ) ; "br" !== c && d . appendBogus ( ) ; "after" === b ? d . insertAfter ( a . wrapper ) : d . insertBefore ( a . wrapper ) ; ( function ( b ) { var c = a . editor . createRange ( ) ; c . setStart ( b , 0 ) ; a . editor . getSelection ( ) . selectRanges ( [ c ] ) } ) ( d ) } function G ( a , b ) { var c = a . widgets . focused , d , e , f ;
u . hasCopyBin ( a ) || ( e = new u ( a , { beforeDestroy : function ( ) { ! b && c && c . focus ( ) ; f && a . getSelection ( ) . selectBookmarks ( f ) ; d && CKEDITOR . plugins . widgetselection . addFillers ( a . editable ( ) ) } , afterDestroy : function ( ) { b && ! a . readOnly && ( c ? a . widgets . del ( c ) : a . extractSelectedHtml ( ) , a . fire ( "saveSnapshot" ) ) } } ) , c || ( d = CKEDITOR . env . webkit && CKEDITOR . plugins . widgetselection . isWholeContentSelected ( a . editable ( ) ) , f = a . getSelection ( ) . createBookmarks ( ! 0 ) ) , e . handle ( F ( a ) ) ) } function J ( a ) { return ( a = ( a = a . getDefinition ( ) . attributes ) && a [ "class" ] ) ?
a . split ( /\s+/ ) : null } function M ( ) { var a = CKEDITOR . document . getActive ( ) , b = this . editor , c = b . editable ( ) ; ( c . isInline ( ) ? c : b . document . getWindow ( ) . getFrame ( ) ) . equals ( a ) && b . focusManager . focus ( c ) } function N ( ) { CKEDITOR . env . gecko && this . editor . unlockSelection ( ) ; CKEDITOR . env . webkit || ( this . editor . forceNextSelectionCheck ( ) , this . editor . selectionChange ( 1 ) ) } function F ( a ) { var b = a . getSelectedHtml ( ! 0 ) ; if ( a . widgets . focused ) return a . widgets . focused . getClipboardHtml ( ) ; a . once ( "toDataFormat" , function ( a ) { a . data . widgetsCopy = ! 0 } ,
null , null , - 1 ) ; return a . dataProcessor . toDataFormat ( b ) } function Z ( a , b ) { var c = a . editor . config . widget _keystrokeInsertLineBefore , d = a . editor . config . widget _keystrokeInsertLineAfter ; ia ( a ) ; O ( a ) ; ja ( a ) ; P ( a ) ; ka ( a ) ; la ( a ) ; ma ( a ) ; if ( CKEDITOR . env . ie && 9 > CKEDITOR . env . version ) a . wrapper . on ( "dragstart" , function ( b ) { var c = b . data . getTarget ( ) ; h . getNestedEditable ( a , c ) || a . inline && h . isDomDragHandler ( c ) || b . data . preventDefault ( ) } ) ; a . wrapper . removeClass ( "cke_widget_new" ) ; a . element . addClass ( "cke_widget_element" ) ; a . on ( "key" , function ( b ) { b =
b . data . keyCode ; if ( b == c ) L ( a , "before" ) , a . editor . fire ( "saveSnapshot" ) ; else if ( b == d ) L ( a , "after" ) , a . editor . fire ( "saveSnapshot" ) ; else if ( 13 == b ) a . edit ( ) ; else { if ( b == CKEDITOR . CTRL + 67 || b == CKEDITOR . CTRL + 88 ) { G ( a . editor , b == CKEDITOR . CTRL + 88 ) ; return } if ( b in Q || CKEDITOR . CTRL & b || CKEDITOR . ALT & b ) return } return ! 1 } , null , null , 999 ) ; a . on ( "doubleclick" , function ( b ) { a . edit ( ) && b . cancel ( ) } ) ; if ( b . data ) a . on ( "data" , b . data ) ; if ( b . edit ) a . on ( "edit" , b . edit ) } function ia ( a ) { ( a . wrapper = a . element . getParent ( ) ) . setAttribute ( "data-cke-widget-id" ,
a . id ) } function O ( a , b ) { a . partSelectors || ( a . partSelectors = a . parts ) ; if ( a . parts ) { var c = { } , d , e ; for ( e in a . partSelectors ) b || ! a . parts [ e ] || "string" == typeof a . parts [ e ] ? ( d = a . wrapper . findOne ( a . partSelectors [ e ] ) , c [ e ] = d ) : c [ e ] = a . parts [ e ] ; a . parts = c } } function ja ( a ) { var b = a . editables , c , d ; a . editables = { } ; if ( a . editables ) for ( c in b ) d = b [ c ] , a . initEditable ( c , "string" == typeof d ? { selector : d } : d ) } function P ( a ) { if ( ! 0 === a . mask ) na ( a ) ; else if ( a . mask ) { var b = new CKEDITOR . tools . buffers . throttle ( 250 , oa , a ) , c = CKEDITOR . env . gecko ? 300 : 0 ,
d , e ; a . on ( "focus" , function ( ) { b . input ( ) ; d = a . editor . on ( "change" , b . input ) ; e = a . on ( "blur" , function ( ) { d . removeListener ( ) ; e . removeListener ( ) } ) } ) ; a . editor . on ( "instanceReady" , function ( ) { setTimeout ( function ( ) { b . input ( ) } , c ) } ) ; a . editor . on ( "mode" , function ( ) { setTimeout ( function ( ) { b . input ( ) } , c ) } ) ; if ( CKEDITOR . env . gecko ) { var f = a . element . find ( "img" ) ; CKEDITOR . tools . array . forEach ( f . toArray ( ) , function ( a ) { a . on ( "load" , function ( ) { b . input ( ) } ) } ) } for ( var g in a . editables ) a . editables [ g ] . on ( "focus" , function ( ) { a . editor . on ( "change" ,
b . input ) ; e && e . removeListener ( ) } ) , a . editables [ g ] . on ( "blur" , function ( ) { a . editor . removeListener ( "change" , b . input ) } ) ; b . input ( ) } } function na ( a ) { var b = a . wrapper . findOne ( ".cke_widget_mask" ) ; b || ( b = new CKEDITOR . dom . element ( "img" , a . editor . document ) , b . setAttributes ( { src : CKEDITOR . tools . transparentImageData , "class" : "cke_reset cke_widget_mask" } ) , a . wrapper . append ( b ) ) ; a . mask = b } function oa ( ) { if ( this . wrapper ) { this . maskPart = this . maskPart || this . mask ; var a = this . parts [ this . maskPart ] , b ; if ( a && "string" != typeof a ) { b = this . wrapper . findOne ( ".cke_widget_partial_mask" ) ;
b || ( b = new CKEDITOR . dom . element ( "img" , this . editor . document ) , b . setAttributes ( { src : CKEDITOR . tools . transparentImageData , "class" : "cke_reset cke_widget_partial_mask" } ) , this . wrapper . append ( b ) ) ; this . mask = b ; var c = b . $ , d = a . $ , e = ! ( c . offsetTop == d . offsetTop && c . offsetLeft == d . offsetLeft ) ; if ( c . offsetWidth != d . offsetWidth || c . offsetHeight != d . offsetHeight || e ) c = a . getParent ( ) , d = CKEDITOR . plugins . widget . isDomWidget ( c ) , b . setStyles ( { top : a . $ . offsetTop + ( d ? 0 : c . $ . offsetTop ) + "px" , left : a . $ . offsetLeft + ( d ? 0 : c . $ . offsetLeft ) + "px" , width : a . $ . offsetWidth +
"px" , height : a . $ . offsetHeight + "px" } ) } } } function ka ( a ) { if ( a . draggable ) { var b = a . editor , c = a . wrapper . getLast ( h . isDomDragHandlerContainer ) , d ; c ? d = c . findOne ( "img" ) : ( c = new CKEDITOR . dom . element ( "span" , b . document ) , c . setAttributes ( { "class" : "cke_reset cke_widget_drag_handler_container" , style : "background:rgba(220,220,220,0.5);background-image:url(" + b . plugins . widget . path + "images/handle.png);display:none;" } ) , d = new CKEDITOR . dom . element ( "img" , b . document ) , d . setAttributes ( { "class" : "cke_reset cke_widget_drag_handler" ,
"data-cke-widget-drag-handler" : "1" , src : CKEDITOR . tools . transparentImageData , width : 15 , title : b . lang . widget . move , height : 15 , role : "presentation" } ) , a . inline && d . setAttribute ( "draggable" , "true" ) , c . append ( d ) , a . wrapper . append ( c ) ) ; a . wrapper . on ( "dragover" , function ( a ) { a . data . preventDefault ( ) } ) ; a . wrapper . on ( "mouseenter" , a . updateDragHandlerPosition , a ) ; setTimeout ( function ( ) { a . on ( "data" , a . updateDragHandlerPosition , a ) } , 50 ) ; if ( ! a . inline && ( d . on ( "mousedown" , pa , a ) , CKEDITOR . env . ie && 9 > CKEDITOR . env . version ) ) d . on ( "dragstart" ,
function ( a ) { a . data . preventDefault ( ! 0 ) } ) ; a . dragHandlerContainer = c } } function pa ( a ) { function b ( ) { var b ; for ( r . reset ( ) ; b = l . pop ( ) ; ) b . removeListener ( ) ; var c = k ; b = a . sender ; var d = this . repository . finder , e = this . repository . liner , f = this . editor , g = this . editor . editable ( ) ; CKEDITOR . tools . isEmpty ( e . visible ) || ( c = d . getRange ( c [ 0 ] ) , this . focus ( ) , f . fire ( "drop" , { dropRange : c , target : c . startContainer } ) ) ; g . removeClass ( "cke_widget_dragging" ) ; e . hideVisible ( ) ; f . fire ( "dragend" , { target : b } ) } if ( CKEDITOR . tools . getMouseButton ( a ) === CKEDITOR . MOUSE _BUTTON _LEFT ) { var c =
this . repository . finder , d = this . repository . locator , e = this . repository . liner , f = this . editor , g = f . editable ( ) , l = [ ] , k = [ ] , h , m ; this . repository . _ . draggedWidget = this ; var w = c . greedySearch ( ) , r = CKEDITOR . tools . eventsBuffer ( 50 , function ( ) { h = d . locate ( w ) ; k = d . sort ( m , 1 ) ; k . length && ( e . prepare ( w , h ) , e . placeLine ( k [ 0 ] ) , e . cleanup ( ) ) } ) ; g . addClass ( "cke_widget_dragging" ) ; l . push ( g . on ( "mousemove" , function ( a ) { m = a . data . $ . clientY ; r . input ( ) } ) ) ; f . fire ( "dragstart" , { target : a . sender } ) ; l . push ( f . document . once ( "mouseup" , b , this ) ) ; g . isInline ( ) ||
l . push ( CKEDITOR . document . once ( "mouseup" , b , this ) ) } } function la ( a ) { var b = null ; a . on ( "data" , function ( ) { var a = this . data . classes , d ; if ( b != a ) { for ( d in b ) a && a [ d ] || this . removeClass ( d ) ; for ( d in a ) this . addClass ( d ) ; b = a } } ) } function ma ( a ) { a . on ( "data" , function ( ) { if ( a . wrapper ) { var b = this . getLabel ? this . getLabel ( ) : this . editor . lang . widget . label . replace ( /%1/ , this . pathName || this . element . getName ( ) ) ; a . wrapper . setAttribute ( "role" , "region" ) ; a . wrapper . setAttribute ( "aria-label" , b ) } } , null , null , 9999 ) } function v ( a ) { a . element . data ( "cke-widget-data" ,
encodeURIComponent ( JSON . stringify ( a . data ) ) ) } function qa ( ) { function a ( ) { } function b ( a , b , c ) { return c && this . checkElement ( a ) ? ( a = c . widgets . getByElement ( a , ! 0 ) ) && a . checkStyleActive ( this ) : ! 1 } function c ( a ) { function b ( a , c , d ) { for ( var e = a . length , f = 0 ; f < e ; ) { if ( c . call ( d , a [ f ] , f , a ) ) return a [ f ] ; f ++ } } function c ( a ) { function b ( a , c ) { var d = CKEDITOR . tools . object . keys ( a ) , e = CKEDITOR . tools . object . keys ( c ) ; if ( d . length !== e . length ) return ! 1 ; for ( var f in a ) if ( ( "object" !== typeof a [ f ] || "object" !== typeof c [ f ] || ! b ( a [ f ] , c [ f ] ) ) && a [ f ] !==
c [ f ] ) return ! 1 ; return ! 0 } return function ( c ) { return b ( a . getDefinition ( ) , c . getDefinition ( ) ) } } var h = a . widget , k ; d [ h ] || ( d [ h ] = { } ) ; for ( var n = 0 , m = a . group . length ; n < m ; n ++ ) k = a . group [ n ] , d [ h ] [ k ] || ( d [ h ] [ k ] = [ ] ) , k = d [ h ] [ k ] , b ( k , c ( a ) ) || k . push ( a ) } var d = { } ; CKEDITOR . style . addCustomHandler ( { type : "widget" , setup : function ( a ) { this . widget = a . widget ; ( this . group = "string" == typeof a . group ? [ a . group ] : a . group ) && c ( this ) } , apply : function ( a ) { var b ; a instanceof CKEDITOR . editor && this . checkApplicable ( a . elementPath ( ) , a ) && ( b = a . widgets . focused ,
this . group && this . removeStylesFromSameGroup ( a ) , b . applyStyle ( this ) ) } , remove : function ( a ) { a instanceof CKEDITOR . editor && this . checkApplicable ( a . elementPath ( ) , a ) && a . widgets . focused . removeStyle ( this ) } , removeStylesFromSameGroup : function ( a ) { var b = ! 1 , c , h ; if ( ! ( a instanceof CKEDITOR . editor ) ) return ! 1 ; h = a . elementPath ( ) ; if ( this . checkApplicable ( h , a ) ) for ( var k = 0 , n = this . group . length ; k < n ; k ++ ) { c = d [ this . widget ] [ this . group [ k ] ] ; for ( var m = 0 ; m < c . length ; m ++ ) c [ m ] !== this && c [ m ] . checkActive ( h , a ) && ( a . widgets . focused . removeStyle ( c [ m ] ) ,
b = ! 0 ) } return b } , checkActive : function ( a , b ) { return this . checkElementMatch ( a . lastElement , 0 , b ) } , checkApplicable : function ( a , b ) { return b instanceof CKEDITOR . editor ? this . checkElement ( a . lastElement ) : ! 1 } , checkElementMatch : b , checkElementRemovable : b , checkElement : function ( a ) { return h . isDomWidgetWrapper ( a ) ? ( a = a . getFirst ( h . isDomWidgetElement ) ) && a . data ( "widget" ) == this . widget : ! 1 } , buildPreview : function ( a ) { return a || this . _ . definition . name } , toAllowedContentRules : function ( a ) { if ( ! a ) return null ; a = a . widgets . registered [ this . widget ] ;
var b , c = { } ; if ( ! a ) return null ; if ( a . styleableElements ) { b = this . getClassesArray ( ) ; if ( ! b ) return null ; c [ a . styleableElements ] = { classes : b , propertiesOnly : ! 0 } ; return c } return a . styleToAllowedContentRules ? a . styleToAllowedContentRules ( this ) : null } , getClassesArray : function ( ) { var a = this . _ . definition . attributes && this . _ . definition . attributes [ "class" ] ; return a ? CKEDITOR . tools . trim ( a ) . split ( /\s+/ ) : null } , applyToRange : a , removeFromRange : a , applyToObject : a } ) } CKEDITOR . plugins . add ( "widget" , { requires : "lineutils,clipboard,widgetselection" ,
onLoad : function ( ) { void 0 !== CKEDITOR . document . $ . querySelectorAll && ( CKEDITOR . addCss ( '.cke_widget_wrapper{position:relative;outline:none}.cke_widget_inline{display:inline-block}.cke_widget_wrapper:hover\x3e.cke_widget_element{outline:2px solid #ffd25c;cursor:default}.cke_widget_wrapper:hover .cke_widget_editable{outline:2px solid #ffd25c}.cke_widget_wrapper.cke_widget_focused\x3e.cke_widget_element,.cke_widget_wrapper .cke_widget_editable.cke_widget_editable_focused{outline:2px solid #47a4f5}.cke_widget_editable{cursor:text}.cke_widget_drag_handler_container{position:absolute;width:15px;height:0;display:block;opacity:0.75;transition:height 0s 0.2s;line-height:0}.cke_widget_wrapper:hover\x3e.cke_widget_drag_handler_container{height:15px;transition:none}.cke_widget_drag_handler_container:hover{opacity:1}.cke_editable[contenteditable\x3d"false"] .cke_widget_drag_handler_container{display:none;}img.cke_widget_drag_handler{cursor:move;width:15px;height:15px;display:inline-block}.cke_widget_mask{position:absolute;top:0;left:0;width:100%;height:100%;display:block}.cke_widget_partial_mask{position:absolute;display:block}.cke_editable.cke_widget_dragging, .cke_editable.cke_widget_dragging *{cursor:move !important}' ) ,
qa ( ) ) } , beforeInit : function ( a ) { void 0 !== CKEDITOR . document . $ . querySelectorAll && ( a . widgets = new q ( a ) ) } , afterInit : function ( a ) { if ( void 0 !== CKEDITOR . document . $ . querySelectorAll ) { var b = a . widgets . registered , c , d , e ; for ( d in b ) c = b [ d ] , ( e = c . button ) && a . ui . addButton && a . ui . addButton ( CKEDITOR . tools . capitalize ( c . name , ! 0 ) , { label : e , command : c . name , toolbar : "insert,10" } ) ; ea ( a ) ; ha ( a . undoManager ) } } } ) ; q . prototype = { MIN _SELECTION _CHECK _INTERVAL : 500 , add : function ( a , b ) { var c = this . editor ; b = CKEDITOR . tools . prototypedCopy ( b ) ; b . name =
a ; b . _ = b . _ || { } ; c . fire ( "widgetDefinition" , b ) ; b . template && ( b . template = new CKEDITOR . template ( b . template ) ) ; aa ( c , b ) ; ba ( this , b ) ; this . registered [ a ] = b ; if ( b . dialog && c . plugins . dialog ) var d = CKEDITOR . on ( "dialogDefinition" , function ( a ) { a = a . data . definition ; var f = a . dialog ; a . getMode || f . getName ( ) !== b . dialog || ( a . getMode = function ( ) { var a = f . getModel ( c ) ; return a && a instanceof CKEDITOR . plugins . widget && a . ready ? CKEDITOR . dialog . EDITING _MODE : CKEDITOR . dialog . CREATION _MODE } ) ; d . removeListener ( ) } ) ; return b } , addUpcastCallback : function ( a ) { this . _ . upcastCallbacks . push ( a ) } ,
checkSelection : function ( ) { if ( this . editor . getSelection ( ) ) { var a = this . editor . getSelection ( ) , b = a . getSelectedElement ( ) , c = H ( this ) , d ; if ( b && ( d = this . getByElement ( b , ! 0 ) ) ) return c . focus ( d ) . select ( d ) . commit ( ) ; a = a . getRanges ( ) [ 0 ] ; if ( ! a || a . collapsed ) return c . commit ( ) ; a = new CKEDITOR . dom . walker ( a ) ; for ( a . evaluator = h . isDomWidgetWrapper ; b = a . next ( ) ; ) c . select ( this . getByElement ( b ) ) ; c . commit ( ) } } , checkWidgets : function ( a ) { this . fire ( "checkWidgets" , CKEDITOR . tools . copy ( a || { } ) ) } , del : function ( a ) { if ( this . focused === a ) { var b = a . editor ,
c = b . createRange ( ) , d ; ( d = c . moveToClosestEditablePosition ( a . wrapper , ! 0 ) ) || ( d = c . moveToClosestEditablePosition ( a . wrapper , ! 1 ) ) ; d && b . getSelection ( ) . selectRanges ( [ c ] ) } a . wrapper . remove ( ) ; this . destroy ( a , ! 0 ) } , destroy : function ( a , b ) { this . widgetHoldingFocusedEditable === a && p ( this , a , null , b ) ; a . destroy ( b ) ; delete this . instances [ a . id ] ; this . fire ( "instanceDestroyed" , a ) } , destroyAll : function ( a , b ) { var c , d , e = this . instances ; if ( b && ! a ) { d = b . find ( ".cke_widget_wrapper" ) ; for ( var e = d . count ( ) , f = 0 ; f < e ; ++ f ) ( c = this . getByElement ( d . getItem ( f ) ,
! 0 ) ) && this . destroy ( c ) } else for ( d in e ) c = e [ d ] , this . destroy ( c , a ) } , finalizeCreation : function ( a ) { ( a = a . getFirst ( ) ) && h . isDomWidgetWrapper ( a ) && ( this . editor . insertElement ( a ) , a = this . getByElement ( a ) , a . ready = ! 0 , a . fire ( "ready" ) , a . focus ( ) ) } , getByElement : function ( ) { function a ( a ) { return a . is ( b ) && a . data ( "cke-widget-id" ) } var b = { div : 1 , span : 1 } ; return function ( b , d ) { if ( ! b ) return null ; var e = a ( b ) ; if ( ! d && ! e ) { var f = this . editor . editable ( ) ; do b = b . getParent ( ) ; while ( b && ! b . equals ( f ) && ! ( e = a ( b ) ) ) } return this . instances [ e ] || null } } ( ) ,
initOn : function ( a , b , c ) { b ? "string" == typeof b && ( b = this . registered [ b ] ) : b = this . registered [ a . data ( "widget" ) ] ; if ( ! b ) return null ; var d = this . wrapElement ( a , b . name ) ; return d ? d . hasClass ( "cke_widget_new" ) ? ( a = new h ( this , this . _ . nextId ++ , a , b , c ) , a . isInited ( ) ? this . instances [ a . id ] = a : null ) : this . getByElement ( a ) : null } , initOnAll : function ( a ) { a = ( a || this . editor . editable ( ) ) . find ( ".cke_widget_new" ) ; for ( var b = [ ] , c , d = a . count ( ) ; d -- ; ) ( c = this . initOn ( a . getItem ( d ) . getFirst ( h . isDomWidgetElement ) ) ) && b . push ( c ) ; return b } , onWidget : function ( a ) { var b =
Array . prototype . slice . call ( arguments ) ; b . shift ( ) ; for ( var c in this . instances ) { var d = this . instances [ c ] ; d . name == a && d . on . apply ( d , b ) } this . on ( "instanceCreated" , function ( c ) { c = c . data ; c . name == a && c . on . apply ( c , b ) } ) } , parseElementClasses : function ( a ) { if ( ! a ) return null ; a = CKEDITOR . tools . trim ( a ) . split ( /\s+/ ) ; for ( var b , c = { } , d = 0 ; b = a . pop ( ) ; ) - 1 == b . indexOf ( "cke_" ) && ( c [ b ] = d = 1 ) ; return d ? c : null } , wrapElement : function ( a , b ) { var c = null , d , e ; if ( a instanceof CKEDITOR . dom . element ) { b = b || a . data ( "widget" ) ; d = this . registered [ b ] ; if ( ! d ) return null ;
if ( ( c = a . getParent ( ) ) && c . type == CKEDITOR . NODE _ELEMENT && c . data ( "cke-widget-wrapper" ) ) return c ; a . hasAttribute ( "data-cke-widget-keep-attr" ) || a . data ( "cke-widget-keep-attr" , a . data ( "widget" ) ? 1 : 0 ) ; a . data ( "widget" , b ) ; ( e = E ( d , a . getName ( ) ) ) && y ( a ) ; c = new CKEDITOR . dom . element ( e ? "span" : "div" , a . getDocument ( ) ) ; c . setAttributes ( C ( e , b ) ) ; c . data ( "cke-display-name" , d . pathName ? d . pathName : a . getName ( ) ) ; a . getParent ( ! 0 ) && c . replace ( a ) ; a . appendTo ( c ) } else if ( a instanceof CKEDITOR . htmlParser . element ) { b = b || a . attributes [ "data-widget" ] ;
d = this . registered [ b ] ; if ( ! d ) return null ; if ( ( c = a . parent ) && c . type == CKEDITOR . NODE _ELEMENT && c . attributes [ "data-cke-widget-wrapper" ] ) return c ; "data-cke-widget-keep-attr" in a . attributes || ( a . attributes [ "data-cke-widget-keep-attr" ] = a . attributes [ "data-widget" ] ? 1 : 0 ) ; b && ( a . attributes [ "data-widget" ] = b ) ; ( e = E ( d , a . name ) ) && y ( a ) ; c = new CKEDITOR . htmlParser . element ( e ? "span" : "div" , C ( e , b ) ) ; c . attributes [ "data-cke-display-name" ] = d . pathName ? d . pathName : a . name ; d = a . parent ; var f ; d && ( f = a . getIndex ( ) , a . remove ( ) ) ; c . add ( a ) ; d && D ( d ,
f , c ) } return c } , _tests _createEditableFilter : B } ; CKEDITOR . event . implementOn ( q . prototype ) ; h . prototype = { addClass : function ( a ) { this . element . addClass ( a ) ; this . wrapper . addClass ( h . WRAPPER _CLASS _PREFIX + a ) } , applyStyle : function ( a ) { I ( this , a , 1 ) } , checkStyleActive : function ( a ) { a = J ( a ) ; var b ; if ( ! a ) return ! 1 ; for ( ; b = a . pop ( ) ; ) if ( ! this . hasClass ( b ) ) return ! 1 ; return ! 0 } , destroy : function ( a ) { this . fire ( "destroy" ) ; if ( this . editables ) for ( var b in this . editables ) this . destroyEditable ( b , a ) ; a || ( "0" == this . element . data ( "cke-widget-keep-attr" ) &&
this . element . removeAttribute ( "data-widget" ) , this . element . removeAttributes ( [ "data-cke-widget-data" , "data-cke-widget-keep-attr" ] ) , this . element . removeClass ( "cke_widget_element" ) , this . element . replace ( this . wrapper ) ) ; this . wrapper = null } , destroyEditable : function ( a , b ) { var c = this . editables [ a ] , d = ! 0 ; c . removeListener ( "focus" , N ) ; c . removeListener ( "blur" , M ) ; this . editor . focusManager . remove ( c ) ; if ( c . filter ) { for ( var e in this . repository . instances ) { var f = this . repository . instances [ e ] ; f . editables && ( f = f . editables [ a ] ) && f !==
c && c . filter === f . filter && ( d = ! 1 ) } d && ( c . filter . destroy ( ) , ( d = this . repository . _ . filters [ this . name ] ) && delete d [ a ] ) } b || ( this . repository . destroyAll ( ! 1 , c ) , c . removeClass ( "cke_widget_editable" ) , c . removeClass ( "cke_widget_editable_focused" ) , c . removeAttributes ( [ "contenteditable" , "data-cke-widget-editable" , "data-cke-enter-mode" ] ) ) ; delete this . editables [ a ] } , edit : function ( ) { var a = { dialog : this . dialog } , b = this ; if ( ! 1 === this . fire ( "edit" , a ) || ! a . dialog ) return ! 1 ; this . editor . openDialog ( a . dialog , function ( a ) { var d , e ; ! 1 !== b . fire ( "dialog" ,
a ) && ( d = a . on ( "show" , function ( ) { a . setupContent ( b ) } ) , e = a . on ( "ok" , function ( ) { var d , e = b . on ( "data" , function ( a ) { d = 1 ; a . cancel ( ) } , null , null , 0 ) ; b . editor . fire ( "saveSnapshot" ) ; a . commitContent ( b ) ; e . removeListener ( ) ; d && ( b . fire ( "data" , b . data ) , b . editor . fire ( "saveSnapshot" ) ) } ) , a . once ( "hide" , function ( ) { d . removeListener ( ) ; e . removeListener ( ) } ) ) } , b ) ; return ! 0 } , getClasses : function ( ) { return this . repository . parseElementClasses ( this . element . getAttribute ( "class" ) ) } , getClipboardHtml : function ( ) { var a = this . editor . createRange ( ) ;
a . setStartBefore ( this . wrapper ) ; a . setEndAfter ( this . wrapper ) ; return this . editor . editable ( ) . getHtmlFromRange ( a ) . getHtml ( ) } , hasClass : function ( a ) { return this . element . hasClass ( a ) } , initEditable : function ( a , b ) { var c = this . _findOneNotNested ( b . selector ) ; return c && c . is ( CKEDITOR . dtd . $editable ) ? ( c = new t ( this . editor , c , { filter : B . call ( this . repository , this . name , a , b ) } ) , this . editables [ a ] = c , c . setAttributes ( { contenteditable : "true" , "data-cke-widget-editable" : a , "data-cke-enter-mode" : c . enterMode } ) , c . filter && c . data ( "cke-filter" ,
c . filter . id ) , c . addClass ( "cke_widget_editable" ) , c . removeClass ( "cke_widget_editable_focused" ) , b . pathName && c . data ( "cke-display-name" , b . pathName ) , this . editor . focusManager . add ( c ) , c . on ( "focus" , N , this ) , CKEDITOR . env . ie && c . on ( "blur" , M , this ) , c . _ . initialSetData = ! 0 , c . setData ( c . getHtml ( ) ) , ! 0 ) : ! 1 } , _findOneNotNested : function ( a ) { a = this . wrapper . find ( a ) ; for ( var b , c , d = 0 ; d < a . count ( ) ; d ++ ) if ( b = a . getItem ( d ) , c = b . getAscendant ( h . isDomWidgetWrapper ) , this . wrapper . equals ( c ) ) return b ; return null } , isInited : function ( ) { return ! ( ! this . wrapper ||
! this . inited ) } , isReady : function ( ) { return this . isInited ( ) && this . ready } , focus : function ( ) { var a = this . editor . getSelection ( ) ; if ( a ) { var b = this . editor . checkDirty ( ) ; a . fake ( this . wrapper ) ; ! b && this . editor . resetDirty ( ) } this . editor . focus ( ) } , refreshMask : function ( ) { P ( this ) } , refreshParts : function ( a ) { O ( this , "undefined" !== typeof a ? a : ! 0 ) } , removeClass : function ( a ) { this . element . removeClass ( a ) ; this . wrapper . removeClass ( h . WRAPPER _CLASS _PREFIX + a ) } , removeStyle : function ( a ) { I ( this , a , 0 ) } , setData : function ( a , b ) { var c = this . data ,
d = 0 ; if ( "string" == typeof a ) c [ a ] !== b && ( c [ a ] = b , d = 1 ) ; else { var e = a ; for ( a in e ) c [ a ] !== e [ a ] && ( d = 1 , c [ a ] = e [ a ] ) } d && this . dataReady && ( v ( this ) , this . fire ( "data" , c ) ) ; return this } , setFocused : function ( a ) { this . wrapper [ a ? "addClass" : "removeClass" ] ( "cke_widget_focused" ) ; this . fire ( a ? "focus" : "blur" ) ; return this } , setSelected : function ( a ) { this . wrapper [ a ? "addClass" : "removeClass" ] ( "cke_widget_selected" ) ; this . fire ( a ? "select" : "deselect" ) ; return this } , updateDragHandlerPosition : function ( ) { var a = this . editor , b = this . element . $ , c = this . _ . dragHandlerOffset ,
b = { x : b . offsetLeft , y : b . offsetTop - 15 } ; c && b . x == c . x && b . y == c . y || ( c = a . checkDirty ( ) , a . fire ( "lockSnapshot" ) , this . dragHandlerContainer . setStyles ( { top : b . y + "px" , left : b . x + "px" } ) , this . dragHandlerContainer . removeStyle ( "display" ) , a . fire ( "unlockSnapshot" ) , ! c && a . resetDirty ( ) , this . _ . dragHandlerOffset = b ) } } ; CKEDITOR . event . implementOn ( h . prototype ) ; h . getNestedEditable = function ( a , b ) { return ! b || b . equals ( a ) ? null : h . isDomNestedEditable ( b ) ? b : h . getNestedEditable ( a , b . getParent ( ) ) } ; h . isDomDragHandler = function ( a ) { return a . type ==
CKEDITOR . NODE _ELEMENT && a . hasAttribute ( "data-cke-widget-drag-handler" ) } ; h . isDomDragHandlerContainer = function ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && a . hasClass ( "cke_widget_drag_handler_container" ) } ; h . isDomNestedEditable = function ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && a . hasAttribute ( "data-cke-widget-editable" ) } ; h . isDomWidgetElement = function ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && a . hasAttribute ( "data-widget" ) } ; h . isDomWidgetWrapper = function ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && a . hasAttribute ( "data-cke-widget-wrapper" ) } ;
h . isDomWidget = function ( a ) { return a ? this . isDomWidgetWrapper ( a ) || this . isDomWidgetElement ( a ) : ! 1 } ; h . isParserWidgetElement = function ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && ! ! a . attributes [ "data-widget" ] } ; h . isParserWidgetWrapper = function ( a ) { return a . type == CKEDITOR . NODE _ELEMENT && ! ! a . attributes [ "data-cke-widget-wrapper" ] } ; h . WRAPPER _CLASS _PREFIX = "cke_widget_wrapper_" ; t . prototype = CKEDITOR . tools . extend ( CKEDITOR . tools . prototypedCopy ( CKEDITOR . dom . element . prototype ) , { setData : function ( a ) { this . _ . initialSetData ||
this . editor . widgets . destroyAll ( ! 1 , this ) ; this . _ . initialSetData = ! 1 ; a = this . editor . dataProcessor . unprotectRealComments ( a ) ; a = this . editor . dataProcessor . unprotectSource ( a ) ; a = this . editor . dataProcessor . toHtml ( a , { context : this . getName ( ) , filter : this . filter , enterMode : this . enterMode } ) ; this . setHtml ( a ) ; this . editor . widgets . initOnAll ( this ) } , getData : function ( ) { return this . editor . dataProcessor . toDataFormat ( this . getHtml ( ) , { context : this . getName ( ) , filter : this . filter , enterMode : this . enterMode } ) } } ) ; var ga = /^(?:<(?:div|span)(?: data-cke-temp="1")?(?: id="cke_copybin")?(?: data-cke-temp="1")?>)?(?:<(?:div|span)(?: style="[^"]+")?>)?<span [^>]*data-cke-copybin-start="1"[^>]*>.?<\/span>([\s\S]+)<span [^>]*data-cke-copybin-end="1"[^>]*>.?<\/span>(?:<\/(?:div|span)>)?(?:<\/(?:div|span)>)?$/i ,
Q = { 37 : 1 , 38 : 1 , 39 : 1 , 40 : 1 , 8 : 1 , 46 : 1 } ; Q [ CKEDITOR . SHIFT + 121 ] = 1 ; var u = CKEDITOR . tools . createClass ( { $ : function ( a , b ) { this . _ . createCopyBin ( a , b ) ; this . _ . createListeners ( b ) } , _ : { createCopyBin : function ( a ) { var b = a . document , c = CKEDITOR . env . edge && 16 <= CKEDITOR . env . version , d = ! a . blockless && ! CKEDITOR . env . ie || c ? "div" : "span" , c = b . createElement ( d ) , b = b . createElement ( d ) ; b . setAttributes ( { id : "cke_copybin" , "data-cke-temp" : "1" } ) ; c . setStyles ( { position : "absolute" , width : "1px" , height : "1px" , overflow : "hidden" } ) ; c . setStyle ( "ltr" == a . config . contentsLangDirection ?
"left" : "right" , "-5000px" ) ; this . editor = a ; this . copyBin = c ; this . container = b } , createListeners : function ( a ) { a && ( a . beforeDestroy && ( this . beforeDestroy = a . beforeDestroy ) , a . afterDestroy && ( this . afterDestroy = a . afterDestroy ) ) } } , proto : { handle : function ( a ) { var b = this . copyBin , c = this . editor , d = this . container , e = CKEDITOR . env . ie && 9 > CKEDITOR . env . version , f = c . document . getDocumentElement ( ) . $ , g = c . createRange ( ) , h = this , k = CKEDITOR . env . mac && CKEDITOR . env . webkit , n = k ? 100 : 0 , m = window . requestAnimationFrame && ! k ? requestAnimationFrame : setTimeout ,
p , r , q ; b . setHtml ( '\x3cspan data-cke-copybin-start\x3d"1"\x3e \x3c/span\x3e' + a + '\x3cspan data-cke-copybin-end\x3d"1"\x3e \x3c/span\x3e' ) ; c . fire ( "lockSnapshot" ) ; d . append ( b ) ; c . editable ( ) . append ( d ) ; p = c . on ( "selectionChange" , K , null , null , 0 ) ; r = c . widgets . on ( "checkSelection" , K , null , null , 0 ) ; e && ( q = f . scrollTop ) ; g . selectNodeContents ( b ) ; g . select ( ) ; e && ( f . scrollTop = q ) ; return new CKEDITOR . tools . promise ( function ( a ) { m ( function ( ) { h . beforeDestroy && h . beforeDestroy ( ) ; d . remove ( ) ; p . removeListener ( ) ; r . removeListener ( ) ; c . fire ( "unlockSnapshot" ) ;
h . afterDestroy && h . afterDestroy ( ) ; a ( ) } , n ) } ) } } , statics : { hasCopyBin : function ( a ) { return ! ! u . getCopyBin ( a ) } , getCopyBin : function ( a ) { return a . document . getById ( "cke_copybin" ) } } } ) ; CKEDITOR . plugins . widget = h ; h . repository = q ; h . nestedEditable = t } ) ( ) ; CKEDITOR . config . widget _keystrokeInsertLineBefore = CKEDITOR . SHIFT + CKEDITOR . ALT + 13 ; CKEDITOR . config . widget _keystrokeInsertLineAfter = CKEDITOR . SHIFT + 13 ; CKEDITOR . config . plugins = 'dialogui,dialog,a11yhelp,about,basicstyles,bidi,blockquote,button,codemirror,panelbutton,panel,floatpanel,colorbutton,colordialog,menu,contextmenu,dialogadvtab,div,elementspath,enterkey,entities,fakeobjects,popup,filetools,filebrowser,find,flash,listblock,richcombo,font,format,forms,horizontalrule,htmlwriter,iframe,image,indent,indentlist,justify,link,list,liststyle,maximize,newpage,pagebreak,notification,toolbar,clipboard,xml,ajax,pastetools,pastefromword,pastetext,removeformat,resize,save,selectall,sharedspace,showblocks,showborders,smiley,sourcedialog,specialchar,stylescombo,stylesheetparser,tab,table,tabletools,tableresize,templates,undo,wysiwygarea,lineutils,widgetselection,widget' ; CKEDITOR . config . skin = 'moono-lisa' ; ( function ( ) { var setIcons = function ( icons , strip ) { var path = CKEDITOR . getUrl ( 'plugins/' + strip ) ; icons = icons . split ( ',' ) ; for ( var i = 0 ; i < icons . length ; i ++ ) CKEDITOR . skin . icons [ icons [ i ] ] = { path : path , offset : - icons [ ++ i ] , bgsize : icons [ ++ i ] } ; } ; if ( CKEDITOR . env . hidpi ) setIcons ( 'about,0,,bold,24,,italic,48,,strike,72,,subscript,96,,superscript,120,,underline,144,,bidiltr,168,,bidirtl,192,,blockquote,216,,bgcolor,240,,textcolor,264,,creatediv,288,,find-rtl,312,,find,336,,replace,360,,button,384,,checkbox,408,,form,432,,hiddenfield,456,,imagebutton,480,,radio,504,,select-rtl,528,,select,552,,textarea-rtl,576,,textarea,600,,textfield-rtl,624,,textfield,648,,horizontalrule,672,,iframe,696,,image,720,,indent-rtl,744,,indent,768,,outdent-rtl,792,,outdent,816,,justifyblock,840,,justifycenter,864,,justifyleft,888,,justifyright,912,,anchor-rtl,936,,anchor,960,,link,984,,unlink,1008,,bulletedlist-rtl,1032,,bulletedlist,1056,,numberedlist-rtl,1080,,numberedlist,1104,,maximize,1128,,newpage-rtl,1152,,newpage,1176,,pagebreak-rtl,1200,,pagebreak,1224,,copy-rtl,1248,,copy,1272,,cut-rtl,1296,,cut,1320,,paste-rtl,1344,,paste,1368,,pastefromword-rtl,1392,,pastefromword,1416,,pastetext-rtl,1440,,pastetext,1464,,removeformat,1488,,save,1512,,selectall,1536,,showblocks-rtl,1560,,showblocks,1584,,smiley,1608,,sourcedialog-rtl,1632,,sourcedialog,1656,,specialchar,1680,,table,1704,,templates-rtl,1728,,templates,1752,,redo-rtl,1776,,redo,1800,,undo-rtl,1824,,undo,1848,' , 'icons_hidpi.png' ) ; else setIcons ( 'about,0,auto,bold,24,auto,italic,48,auto,strike,72,auto,subscript,96,auto,superscript,120,auto,underline,144,auto,bidiltr,168,auto,bidirtl,192,auto,blockquote,216,auto,bgcolor,240,auto,textcolor,264,auto,creatediv,288,auto,find-rtl,312,auto,find,336,auto,replace,360,auto,button,384,auto,checkbox,408,auto,form,432,auto,hiddenfield,456,auto,imagebutton,480,auto,radio,504,auto,select-rtl,528,auto,select,552,auto,textarea-rtl,576,auto,textarea,600,auto,textfield-rtl,624,auto,textfield,648,auto,horizontalrule,672,auto,iframe,696,auto,image,720,auto,indent-rtl,744,auto,indent,768,auto,outdent-rtl,792,auto,outdent,816,auto,justifyblock,840,auto,justifycenter,864,auto,justifyleft,888,auto,justifyright,912,auto,anchor-rtl,936,auto,anchor,960,auto,link,984,auto,unlink,1008,auto,bulletedlist-rtl,1032,auto,bulletedlist,1056,auto,numberedlist-rtl,1080,auto,numberedlist,1104,auto,maximize,1128,auto,newpage-rtl,1152,auto,newpage,1176,auto,pagebreak-rtl,1200,auto,pagebreak,1224,auto,copy-rtl,1248,auto,copy,1272,auto,cut-rtl,1296,auto,cut,1320,auto,paste-rtl,1344,auto,paste,1368,auto,pastefromword-rtl,1392,auto,pastefromword,1416,auto,pastetext-rtl,1440,auto,pastetext,1464,auto,removeformat,1488,auto,save,1512,auto,selectall,1536,auto,showblocks-rtl,1560,auto,showblocks,1584,auto,smiley,1608,auto,sourcedialog-rtl,1632,auto,sourcedialog,1656,auto,specialchar,1680,auto,table,1704,auto,templates-rtl,1728,auto,templates,1752,auto,redo-rtl,1776,auto,redo,1800,auto,undo-rtl,1824,auto,undo,1848,auto' , 'icons.png' ) ; } ) ( ) ; CKEDITOR . lang . languages = { "af" : 1 , "ar" : 1 , "bg" : 1 , "ca" : 1 , "cs" : 1 , "da" : 1 , "de" : 1 , "el" : 1 , "en" : 1 , "es" : 1 , "et" : 1 , "fi" : 1 , "fo" : 1 , "fr" : 1 , "gl" : 1 , "hr" : 1 , "hu" : 1 , "is" : 1 , "it" : 1 , "ja" : 1 , "lt" : 1 , "nl" : 1 , "no" : 1 , "pl" : 1 , "pt" : 1 , "pt-br" : 1 , "ro" : 1 , "ru" : 1 , "sk" : 1 , "sl" : 1 , "sv" : 1 , "tr" : 1 , "uk" : 1 , "zh" : 1 } ; } ( ) ) ;