Roo/UndoManager.js
authorAlan <alan@roojs.com>
Tue, 22 Feb 2022 07:14:39 +0000 (15:14 +0800)
committerAlan <alan@roojs.com>
Tue, 22 Feb 2022 07:14:39 +0000 (15:14 +0800)
Roo/bootstrap/dash/namespace.js
Roo/htmleditor
Roo/rtf
Roo/bootstrap/namespace.js
Roo/htmleditor/Block.js
Roo/htmleditor/BlockFigure.js
Roo/htmleditor/BlockTable.js
Roo/htmleditor/BlockTd.js
Roo/htmleditor/Filter.js
Roo/htmleditor/FilterAttributes.js
Roo/htmleditor/FilterBlack.js
Roo/htmleditor/FilterBlock.js
Roo/htmleditor/FilterComment.js
Roo/htmleditor/FilterEmpty.js
Roo/htmleditor/FilterKeepChildren.js
Roo/htmleditor/FilterLongBr.js
Roo/htmleditor/FilterParagraph.js
Roo/htmleditor/FilterSpan.js
Roo/htmleditor/FilterStyleToTag.js
Roo/htmleditor/FilterTableWidth.js
Roo/htmleditor/FilterWord.js
Roo/htmleditor/KeyEnter.js
Roo/htmleditor/TidyEntities.js
Roo/htmleditor/TidySerializer.js
Roo/htmleditor/TidyWriter.js
Roo/htmleditor/namespace.js
Roo/rtf/Ctrl.js
Roo/rtf/Document.js
Roo/rtf/Group.js
Roo/rtf/Hex.js
Roo/rtf/Paragraph.js
Roo/rtf/Parser.js
Roo/rtf/Span.js
Roo/rtf/namespace.js
Roo/form/HtmlEditor/Td.js
Roo/lib/Range.js
Roo/lib/Selection.js
Roo/lib/UndoManager.js
docs/src/Roo_bootstrap_dash_namespace.js.html
docs/src/Roo_bootstrap_namespace.js.html
docs/src/Roo_htmleditor_Block.js.html
docs/src/Roo_htmleditor_BlockFigure.js.html
docs/src/Roo_htmleditor_BlockTable.js.html
docs/src/Roo_htmleditor_BlockTd.js.html
docs/src/Roo_htmleditor_Filter.js.html
docs/src/Roo_htmleditor_FilterAttributes.js.html
docs/src/Roo_htmleditor_FilterBlack.js.html
docs/src/Roo_htmleditor_FilterBlock.js.html
docs/src/Roo_htmleditor_FilterComment.js.html
docs/src/Roo_htmleditor_FilterKeepChildren.js.html
docs/src/Roo_htmleditor_FilterLongBr.js.html
docs/src/Roo_htmleditor_FilterParagraph.js.html
docs/src/Roo_htmleditor_FilterSpan.js.html
docs/src/Roo_htmleditor_FilterStyleToTag.js.html
docs/src/Roo_htmleditor_FilterTableWidth.js.html
docs/src/Roo_htmleditor_FilterWord.js.html
docs/src/Roo_htmleditor_KeyEnter.js.html
docs/src/Roo_htmleditor_Tidy.js.html
docs/src/Roo_htmleditor_TidyEntities.js.html
docs/src/Roo_htmleditor_TidySerializer.js.html
docs/src/Roo_htmleditor_TidyWriter.js.html
docs/src/Roo_htmleditor_namespace.js.html
docs/src/Roo_lib_Range.js.html
docs/src/Roo_lib_Selection.js.html
docs/src/Roo_lib_UndoManager.js.html
docs/src/Roo_rtf_Ctrl.js.html
docs/src/Roo_rtf_Document.js.html
docs/src/Roo_rtf_Group.js.html
docs/src/Roo_rtf_Hex.js.html
docs/src/Roo_rtf_Paragraph.js.html
docs/src/Roo_rtf_Parser.js.html
docs/src/Roo_rtf_Span.js.html
docs/src/Roo_rtf_namespace.js.html
Array.js
Date.js
Roo.js
Roo/BasicDialog.js
Roo/ContentPanel.js
Roo/DomHelper.js
Roo/HtmlEditorCore.js
docs/symbols/Roo.MessageBox.json
docs/symbols/Roo.htmleditor.Block.json
docs/symbols/Roo.htmleditor.BlockFigure.json
docs/symbols/Roo.htmleditor.BlockTable.json
docs/symbols/Roo.htmleditor.BlockTd.json
docs/symbols/Roo.htmleditor.Filter.json
docs/symbols/Roo.htmleditor.FilterAttributes.json
docs/symbols/Roo.htmleditor.FilterBlack.json
docs/symbols/Roo.htmleditor.FilterBlock.json
docs/symbols/Roo.htmleditor.FilterComment.json
docs/symbols/Roo.htmleditor.FilterKeepChildren.json
docs/symbols/Roo.htmleditor.FilterLongBr.json
docs/symbols/Roo.htmleditor.FilterParagraph.json
docs/symbols/Roo.htmleditor.FilterSpan.json
docs/symbols/Roo.htmleditor.FilterStyleToTag.json
docs/symbols/Roo.htmleditor.FilterTableWidth.json
docs/symbols/Roo.htmleditor.FilterWord.json
docs/symbols/Roo.htmleditor.KeyEnter.json
docs/symbols/Roo.htmleditor.Tidy.json
docs/symbols/Roo.htmleditor.TidyEntities.json
docs/symbols/Roo.htmleditor.TidySerializer.json
docs/symbols/Roo.htmleditor.TidyWriter.json
docs/symbols/Roo.htmleditor.json
docs/symbols/Roo.lib.Range.json
docs/symbols/Roo.lib.Selection.json
docs/symbols/Roo.lib.UndoManager.json
docs/symbols/Roo.rtf.json
Roo/MessageBox.js
Roo/PagingToolbar.js
Roo/Toolbar.js
Roo/bootstrap/form/SecurePass.js
Roo/data/Store.js
String.js
Roo/form/BasicForm.js
Roo/form/DateField.js
Roo/form/HtmlEditor.js
Roo/form/Layout.js
Roo/form/HtmlEditor/ToolbarContext.js
Roo/form/HtmlEditor/ToolbarStandard.js
Roo/grid/Grid.js
Roo/grid/GridView.js
Roo/menu/Item.js
Roo/menu/Menu.js
buildSDK/bundle_build.sh
buildSDK/dependancy_bootstrap.txt
buildSDK/dependancy_core.txt
buildSDK/dependancy_ui.txt
css/inline-editor.css
css/toolbar.css
css/undoreset.css
css-bootstrap4/bootstrap.css.map
css-bootstrap4/bootstrap.min.css.map
css-bootstrap4/roojs-bootstrap-debug.css.map
css-bootstrap4/roojs-bootstrap.css.map
css-bootstrap4/sb-admin-2.css
css-bootstrap4/sb-admin-2.css.map
css-bootstrap4/sb-admin-2.min.css
css-bootstrap4/sb-admin-2.min.css.map
docs/json/roodata.json
docs/src/Array.js.html
docs/src/Date.js.html
docs/src/Roo.js.html
docs/src/Roo_BasicDialog.js.html
docs/src/Roo_ContentPanel.js.html
docs/src/Roo_DomHelper.js.html
docs/src/Roo_HtmlEditorCore.js.html
docs/src/Roo_MessageBox.js.html
docs/src/Roo_PagingToolbar.js.html
docs/src/Roo_Toolbar.js.html
docs/src/Roo_bootstrap_form_SecurePass.js.html
docs/src/Roo_data_Store.js.html
docs/src/Roo_form_BasicForm.js.html
docs/src/Roo_form_DateField.js.html
docs/src/Roo_form_HtmlEditor.js.html
docs/src/Roo_form_HtmlEditor_ToolbarContext.js.html
docs/src/Roo_form_HtmlEditor_ToolbarStandard.js.html
docs/src/Roo_form_Layout.js.html
docs/src/Roo_grid_Grid.js.html
docs/src/Roo_grid_GridView.js.html
docs/src/Roo_menu_Item.js.html
docs/src/Roo_menu_Menu.js.html
docs/src/String.js.html
roojs-all.js
roojs-bootstrap-debug.js
roojs-bootstrap.js
roojs-core-debug.js
roojs-core.js
roojs-debug.js
examples/form/htmledit.html
examples/form/htmledit.js
docs/tree.json
docs/symbols/Array.json
docs/symbols/Roo.BasicDialog.json
docs/symbols/Roo.ContentPanel.json
docs/symbols/Roo.DomHelper.json
docs/symbols/Roo.GridPanel.json
docs/symbols/Roo.HtmlEditorCore.json
docs/symbols/Roo.NestedLayoutPanel.json
docs/symbols/Roo.PagingToolbar.json
docs/symbols/Roo.Toolbar.TextItem.json
docs/symbols/Roo.Toolbar.json
docs/symbols/Roo.TreePanel.json
docs/symbols/Roo.data.JsonStore.json
docs/symbols/Roo.data.SimpleStore.json
docs/symbols/Roo.data.Store.json
docs/symbols/Roo.form.BasicForm.json
docs/symbols/Roo.form.Column.json
docs/symbols/Roo.form.DateField.json
docs/symbols/Roo.form.Form.json
docs/symbols/Roo.form.HtmlEditor.json
docs/symbols/Roo.form.Layout.json
docs/symbols/Roo.form.Row.json
docs/symbols/Roo.grid.Calendar.json
docs/symbols/Roo.grid.EditorGrid.json
docs/symbols/Roo.grid.Grid.json
docs/symbols/Roo.grid.PropertyGrid.json
docs/symbols/Roo.json
docs/symbols/Roo.menu.CheckItem.json
docs/symbols/Roo.menu.Item.json
docs/symbols/Roo.menu.Menu.json
docs/symbols/String.json
roojs-ui-debug.js
roojs-ui.js

103 files changed:
Array.js
Date.js
Roo.js
Roo/BasicDialog.js
Roo/ContentPanel.js
Roo/DomHelper.js
Roo/HtmlEditorCore.js
Roo/MessageBox.js
Roo/PagingToolbar.js
Roo/Toolbar.js
Roo/bootstrap/form/SecurePass.js
Roo/data/Store.js
Roo/form/BasicForm.js
Roo/form/DateField.js
Roo/form/HtmlEditor.js
Roo/form/HtmlEditor/ToolbarContext.js
Roo/form/HtmlEditor/ToolbarStandard.js
Roo/form/Layout.js
Roo/grid/Grid.js
Roo/grid/GridView.js
Roo/menu/Item.js
Roo/menu/Menu.js
String.js
buildSDK/bundle_build.sh
buildSDK/dependancy_bootstrap.txt
buildSDK/dependancy_core.txt
buildSDK/dependancy_ui.txt
css-bootstrap4/bootstrap.css.map
css-bootstrap4/bootstrap.min.css.map
css-bootstrap4/roojs-bootstrap-debug.css.map
css-bootstrap4/roojs-bootstrap.css.map
css-bootstrap4/sb-admin-2.css
css-bootstrap4/sb-admin-2.css.map
css-bootstrap4/sb-admin-2.min.css
css-bootstrap4/sb-admin-2.min.css.map
css/inline-editor.css
css/toolbar.css
css/undoreset.css
docs/json/roodata.json
docs/src/Array.js.html
docs/src/Date.js.html
docs/src/Roo.js.html
docs/src/Roo_BasicDialog.js.html
docs/src/Roo_ContentPanel.js.html
docs/src/Roo_DomHelper.js.html
docs/src/Roo_HtmlEditorCore.js.html
docs/src/Roo_MessageBox.js.html
docs/src/Roo_PagingToolbar.js.html
docs/src/Roo_Toolbar.js.html
docs/src/Roo_bootstrap_form_SecurePass.js.html
docs/src/Roo_data_Store.js.html
docs/src/Roo_form_BasicForm.js.html
docs/src/Roo_form_DateField.js.html
docs/src/Roo_form_HtmlEditor.js.html
docs/src/Roo_form_HtmlEditor_ToolbarContext.js.html
docs/src/Roo_form_HtmlEditor_ToolbarStandard.js.html
docs/src/Roo_form_Layout.js.html
docs/src/Roo_grid_Grid.js.html
docs/src/Roo_grid_GridView.js.html
docs/src/Roo_menu_Item.js.html
docs/src/Roo_menu_Menu.js.html
docs/src/String.js.html
docs/symbols/Array.json
docs/symbols/Roo.BasicDialog.json
docs/symbols/Roo.ContentPanel.json
docs/symbols/Roo.DomHelper.json
docs/symbols/Roo.GridPanel.json
docs/symbols/Roo.HtmlEditorCore.json
docs/symbols/Roo.NestedLayoutPanel.json
docs/symbols/Roo.PagingToolbar.json
docs/symbols/Roo.Toolbar.TextItem.json
docs/symbols/Roo.Toolbar.json
docs/symbols/Roo.TreePanel.json
docs/symbols/Roo.data.JsonStore.json
docs/symbols/Roo.data.SimpleStore.json
docs/symbols/Roo.data.Store.json
docs/symbols/Roo.form.BasicForm.json
docs/symbols/Roo.form.Column.json
docs/symbols/Roo.form.DateField.json
docs/symbols/Roo.form.Form.json
docs/symbols/Roo.form.HtmlEditor.json
docs/symbols/Roo.form.Layout.json
docs/symbols/Roo.form.Row.json
docs/symbols/Roo.grid.Calendar.json
docs/symbols/Roo.grid.EditorGrid.json
docs/symbols/Roo.grid.Grid.json
docs/symbols/Roo.grid.PropertyGrid.json
docs/symbols/Roo.json
docs/symbols/Roo.menu.CheckItem.json
docs/symbols/Roo.menu.Item.json
docs/symbols/Roo.menu.Menu.json
docs/symbols/String.json
docs/tree.json
examples/form/htmledit.html
examples/form/htmledit.js
roojs-all.js
roojs-bootstrap-debug.js
roojs-bootstrap.js
roojs-core-debug.js
roojs-core.js
roojs-debug.js
roojs-ui-debug.js
roojs-ui.js

index a3b684d..4ede928 100644 (file)
--- a/Array.js
+++ b/Array.js
@@ -63,27 +63,47 @@ Roo.applyIf(Array.prototype, {
      */
     equals : function(b)
     {
-        // https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
-       if (this === b) {
-           return true;
-        }
-       if (b == null) {
-           return false;
-       }
-       if (this.length !== b.length) {
-           return false;
-       }
-      
-       // sort?? a.sort().equals(b.sort());
+            // https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
+        if (this === b) {
+            return true;
+        }
+        if (b == null) {
+            return false;
+        }
+        if (this.length !== b.length) {
+            return false;
+        }
+          
+        // sort?? a.sort().equals(b.sort());
+          
+        for (var i = 0; i < this.length; ++i) {
+            if (this[i] !== b[i]) {
+            return false;
+            }
+        }
+        return true;
+    } 
+    
+    
+    
+    
+});
+
+Roo.applyIf(Array, {
+ /**
+     * from
+     * @static
+     * @param {Array} o Or Array like object (eg. nodelist)
+     * @returns {Array} 
+     */
+    from : function(o)
+    {
+        var ret= [];
+    
+        for (var i =0; i < o.length; i++) { 
+            ret[i] = o[i];
+        }
+        return ret;
       
-       for (var i = 0; i < this.length; ++i) {
-           if (this[i] !== b[i]) {
-               return false;
-           }
-       }
-       return true;
     }
 });
-
-
diff --git a/Date.js b/Date.js
index 6f217a5..fffb3b7 100644 (file)
--- a/Date.js
+++ b/Date.js
@@ -301,17 +301,17 @@ Date.createParser = function(format) {
     }
 
     code += "if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"
-        + "{v = new Date(y, m, d, h, i, s);}\n"
+        + "{v = new Date(y, m, d, h, i, s); v.setFullYear(y);}\n"
         + "else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"
-        + "{v = new Date(y, m, d, h, i);}\n"
+        + "{v = new Date(y, m, d, h, i); v.setFullYear(y);}\n"
         + "else if (y >= 0 && m >= 0 && d > 0 && h >= 0)\n"
-        + "{v = new Date(y, m, d, h);}\n"
+        + "{v = new Date(y, m, d, h); v.setFullYear(y);}\n"
         + "else if (y >= 0 && m >= 0 && d > 0)\n"
-        + "{v = new Date(y, m, d);}\n"
+        + "{v = new Date(y, m, d); v.setFullYear(y);}\n"
         + "else if (y >= 0 && m >= 0)\n"
-        + "{v = new Date(y, m);}\n"
+        + "{v = new Date(y, m); v.setFullYear(y);}\n"
         + "else if (y >= 0)\n"
-        + "{v = new Date(y);}\n"
+        + "{v = new Date(y); v.setFullYear(y);}\n"
         + "}return (v && (z || o))?\n" // favour UTC offset over GMT offset
         + "    ((z)? v.add(Date.SECOND, (v.getTimezoneOffset() * 60) + (z*1)) :\n" // reset to UTC, then add offset
         + "        v.add(Date.HOUR, (v.getGMTOffset() / 100) + (o / -100))) : v\n" // reset to GMT, then add offset
@@ -371,7 +371,7 @@ Date.formatCodeToRegex = function(character, currentGroup) {
             s:"(\\d{1,2})"}; // Numeric representation of a month, without leading zeros
     case "m":
         return {g:1,
-            c:"m = parseInt(results[" + currentGroup + "], 10) - 1;\n",
+            c:"m = Math.max(0,parseInt(results[" + currentGroup + "], 10) - 1);\n",
             s:"(\\d{2})"}; // Numeric representation of a month, with leading zeros
     case "t":
         return {g:0,
diff --git a/Roo.js b/Roo.js
index 08881e1..612a227 100644 (file)
--- a/Roo.js
+++ b/Roo.js
@@ -691,7 +691,7 @@ Roo.factory(conf, Roo.data);
                                        return 'xs'
                        }
                        
-               }
+               } 
         
     });
 
@@ -700,6 +700,5 @@ Roo.factory(conf, Roo.data);
 
 Roo.namespace("Roo", "Roo.util", "Roo.grid", "Roo.dd", "Roo.tree", "Roo.data",
                 "Roo.form", "Roo.menu", "Roo.state", "Roo.lib", "Roo.layout",
-                "Roo.app", "Roo.ux",
-                "Roo.bootstrap",
-                "Roo.bootstrap.dash");
+                "Roo.app", "Roo.ux" 
+               );
index 0070805..d8034fd 100644 (file)
@@ -12,6 +12,7 @@
 /**
  * @class Roo.BasicDialog
  * @extends Roo.util.Observable
+ * @parent none builder
  * Lightweight Dialog Class.  The code below shows the creation of a typical dialog using existing HTML markup:
  * <pre><code>
 var dlg = new Roo.BasicDialog("my-dlg", {
index 3d14399..0984532 100644 (file)
@@ -12,7 +12,7 @@
  * @class Roo.ContentPanel
  * @extends Roo.util.Observable
  * @children Roo.form.Form Roo.JsonView Roo.View
- * @parent Roo.BorderLayout Roo.LayoutDialog builder-top
+ * @parent Roo.BorderLayout Roo.LayoutDialog builder
  * A basic ContentPanel element.
  * @cfg {Boolean}   fitToFrame    True for this panel to adjust its size to fit when the region resizes  (defaults to false)
  * @cfg {Boolean}   fitContainer   When using {@link #fitToFrame} and {@link #resizeEl}, you can also fit the parent container  (defaults to false)
@@ -25,7 +25,7 @@
  * @cfg {String} title          The title for this panel
  * @cfg {Array} adjustments     Values to <b>add</b> to the width/height when doing a {@link #fitToFrame} (default is [0, 0])
  * @cfg {String} url            Calls {@link #setUrl} with this value
- * @cfg {String} region [required]   (center|north|south|east|west) which region to put this panel on (when used with xtype constructors)
+ * @cfg {String} region (center|north|south|east|west) [required] which region to put this panel on (when used with xtype constructors)
  * @cfg {String|Object} params  When used with {@link #url}, calls {@link #setUrl} with this value
  * @cfg {Boolean} loadOnce      When used with {@link #url}, calls {@link #setUrl} with this value
  * @cfg {String}    content        Raw content to fill content panel with (uses setContent on construction.)
@@ -460,327 +460,6 @@ layout.addxtype({
     }
 });
 
-/**
- * @class Roo.GridPanel
- * @extends Roo.ContentPanel
- * @constructor
- * Create a new GridPanel.
- * @param {Roo.grid.Grid} grid The grid for this panel
- * @param {String/Object} config A string to set only the panel's title, or a config object
- */
-Roo.GridPanel = function(grid, config){
-    
-  
-    this.wrapper = Roo.DomHelper.append(document.body, // wrapper for IE7 strict & safari scroll issue
-        {tag: "div", cls: "x-layout-grid-wrapper x-layout-inactive-content"}, true);
-        
-    this.wrapper.dom.appendChild(grid.getGridEl().dom);
-    
-    Roo.GridPanel.superclass.constructor.call(this, this.wrapper, config);
-    
-    if(this.toolbar){
-        this.toolbar.el.insertBefore(this.wrapper.dom.firstChild);
-    }
-    // xtype created footer. - not sure if will work as we normally have to render first..
-    if (this.footer && !this.footer.el && this.footer.xtype) {
-        
-        this.footer.container = this.grid.getView().getFooterPanel(true);
-        this.footer.dataSource = this.grid.dataSource;
-        this.footer = Roo.factory(this.footer, Roo);
-        
-    }
-    
-    grid.monitorWindowResize = false; // turn off autosizing
-    grid.autoHeight = false;
-    grid.autoWidth = false;
-    this.grid = grid;
-    this.grid.getGridEl().replaceClass("x-layout-inactive-content", "x-layout-component-panel");
-};
-
-Roo.extend(Roo.GridPanel, Roo.ContentPanel, {
-    getId : function(){
-        return this.grid.id;
-    },
-    
-    /**
-     * Returns the grid for this panel
-     * @return {Roo.grid.Grid} 
-     */
-    getGrid : function(){
-        return this.grid;    
-    },
-    
-    setSize : function(width, height){
-        if(!this.ignoreResize(width, height)){
-            var grid = this.grid;
-            var size = this.adjustForComponents(width, height);
-            grid.getGridEl().setSize(size.width, size.height);
-            grid.autoSize();
-        }
-    },
-    
-    beforeSlide : function(){
-        this.grid.getView().scroller.clip();
-    },
-    
-    afterSlide : function(){
-        this.grid.getView().scroller.unclip();
-    },
-    
-    destroy : function(){
-        this.grid.destroy();
-        delete this.grid;
-        Roo.GridPanel.superclass.destroy.call(this); 
-    }
-});
-
-
-/**
- * @class Roo.NestedLayoutPanel
- * @extends Roo.ContentPanel
- * @constructor
- * Create a new NestedLayoutPanel.
- * 
- * 
- * @param {Roo.BorderLayout} layout [required] The layout for this panel
- * @param {String/Object} config A string to set only the title or a config object
- */
-Roo.NestedLayoutPanel = function(layout, config)
-{
-    // construct with only one argument..
-    /* FIXME - implement nicer consturctors
-    if (layout.layout) {
-        config = layout;
-        layout = config.layout;
-        delete config.layout;
-    }
-    if (layout.xtype && !layout.getEl) {
-        // then layout needs constructing..
-        layout = Roo.factory(layout, Roo);
-    }
-    */
-    
-    
-    Roo.NestedLayoutPanel.superclass.constructor.call(this, layout.getEl(), config);
-    
-    layout.monitorWindowResize = false; // turn off autosizing
-    this.layout = layout;
-    this.layout.getEl().addClass("x-layout-nested-layout");
-    
-    
-    
-    
-};
-
-Roo.extend(Roo.NestedLayoutPanel, Roo.ContentPanel, {
-
-    setSize : function(width, height){
-        if(!this.ignoreResize(width, height)){
-            var size = this.adjustForComponents(width, height);
-            var el = this.layout.getEl();
-            el.setSize(size.width, size.height);
-            var touch = el.dom.offsetWidth;
-            this.layout.layout();
-            // ie requires a double layout on the first pass
-            if(Roo.isIE && !this.initialized){
-                this.initialized = true;
-                this.layout.layout();
-            }
-        }
-    },
-    
-    // activate all subpanels if not currently active..
-    
-    setActiveState : function(active){
-        this.active = active;
-        if(!active){
-            this.fireEvent("deactivate", this);
-            return;
-        }
-        
-        this.fireEvent("activate", this);
-        // not sure if this should happen before or after..
-        if (!this.layout) {
-            return; // should not happen..
-        }
-        var reg = false;
-        for (var r in this.layout.regions) {
-            reg = this.layout.getRegion(r);
-            if (reg.getActivePanel()) {
-                //reg.showPanel(reg.getActivePanel()); // force it to activate.. 
-                reg.setActivePanel(reg.getActivePanel());
-                continue;
-            }
-            if (!reg.panels.length) {
-                continue;
-            }
-            reg.showPanel(reg.getPanel(0));
-        }
-        
-        
-        
-        
-    },
-    
-    /**
-     * Returns the nested BorderLayout for this panel
-     * @return {Roo.BorderLayout} 
-     */
-    getLayout : function(){
-        return this.layout;
-    },
-    
-     /**
-     * Adds a xtype elements to the layout of the nested panel
-     * <pre><code>
-
-panel.addxtype({
-       xtype : 'ContentPanel',
-       region: 'west',
-       items: [ .... ]
-   }
-);
-
-panel.addxtype({
-        xtype : 'NestedLayoutPanel',
-        region: 'west',
-        layout: {
-           center: { },
-           west: { }   
-        },
-        items : [ ... list of content panels or nested layout panels.. ]
-   }
-);
-</code></pre>
-     * @param {Object} cfg Xtype definition of item to add.
-     */
-    addxtype : function(cfg) {
-        return this.layout.addxtype(cfg);
-    
-    }
-});
-
-Roo.ScrollPanel = function(el, config, content){
-    config = config || {};
-    config.fitToFrame = true;
-    Roo.ScrollPanel.superclass.constructor.call(this, el, config, content);
-    
-    this.el.dom.style.overflow = "hidden";
-    var wrap = this.el.wrap({cls: "x-scroller x-layout-inactive-content"});
-    this.el.removeClass("x-layout-inactive-content");
-    this.el.on("mousewheel", this.onWheel, this);
-
-    var up = wrap.createChild({cls: "x-scroller-up", html: "&#160;"}, this.el.dom);
-    var down = wrap.createChild({cls: "x-scroller-down", html: "&#160;"});
-    up.unselectable(); down.unselectable();
-    up.on("click", this.scrollUp, this);
-    down.on("click", this.scrollDown, this);
-    up.addClassOnOver("x-scroller-btn-over");
-    down.addClassOnOver("x-scroller-btn-over");
-    up.addClassOnClick("x-scroller-btn-click");
-    down.addClassOnClick("x-scroller-btn-click");
-    this.adjustments = [0, -(up.getHeight() + down.getHeight())];
-
-    this.resizeEl = this.el;
-    this.el = wrap; this.up = up; this.down = down;
-};
-
-Roo.extend(Roo.ScrollPanel, Roo.ContentPanel, {
-    increment : 100,
-    wheelIncrement : 5,
-    scrollUp : function(){
-        this.resizeEl.scroll("up", this.increment, {callback: this.afterScroll, scope: this});
-    },
-
-    scrollDown : function(){
-        this.resizeEl.scroll("down", this.increment, {callback: this.afterScroll, scope: this});
-    },
-
-    afterScroll : function(){
-        var el = this.resizeEl;
-        var t = el.dom.scrollTop, h = el.dom.scrollHeight, ch = el.dom.clientHeight;
-        this.up[t == 0 ? "addClass" : "removeClass"]("x-scroller-btn-disabled");
-        this.down[h - t <= ch ? "addClass" : "removeClass"]("x-scroller-btn-disabled");
-    },
-
-    setSize : function(){
-        Roo.ScrollPanel.superclass.setSize.apply(this, arguments);
-        this.afterScroll();
-    },
-
-    onWheel : function(e){
-        var d = e.getWheelDelta();
-        this.resizeEl.dom.scrollTop -= (d*this.wheelIncrement);
-        this.afterScroll();
-        e.stopEvent();
-    },
-
-    setContent : function(content, loadScripts){
-        this.resizeEl.update(content, loadScripts);
-    }
-
-});
-
-
-
-/**
- * @class Roo.TreePanel
- * @extends Roo.ContentPanel
- * Treepanel component
- * 
- * @constructor
- * Create a new TreePanel. - defaults to fit/scoll contents.
- * @param {String/Object} config A string to set only the panel's title, or a config object
- */
-Roo.TreePanel = function(config){
-    var el = config.el;
-    var tree = config.tree;
-    delete config.tree; 
-    delete config.el; // hopefull!
-    
-    // wrapper for IE7 strict & safari scroll issue
-    
-    var treeEl = el.createChild();
-    config.resizeEl = treeEl;
-    
-    
-    
-    Roo.TreePanel.superclass.constructor.call(this, el, config);
-    this.tree = new Roo.tree.TreePanel(treeEl , tree);
-    //console.log(tree);
-    this.on('activate', function()
-    {
-        if (this.tree.rendered) {
-            return;
-        }
-        //console.log('render tree');
-        this.tree.render();
-    });
-    // this should not be needed.. - it's actually the 'el' that resizes?
-    // actuall it breaks the containerScroll - dragging nodes auto scroll at top
-    
-    //this.on('resize',  function (cp, w, h) {
-    //        this.tree.innerCt.setWidth(w);
-    //        this.tree.innerCt.setHeight(h);
-    //        //this.tree.innerCt.setStyle('overflow-y', 'auto');
-    //});
-
-        
-    
-};
-
-Roo.extend(Roo.TreePanel, Roo.ContentPanel, {   
-    fitToFrame : true,
-    autoScroll : true,
-    /*
-     * @cfg {Roo.tree.TreePanel} tree [required] The tree TreePanel, with config etc.
-     */
-    tree : false
-
-});
-
 
 
 
index f12b888..a896788 100644 (file)
@@ -245,211 +245,319 @@ Roo.DomHelper = function(){
         el.insertBefore(node, before);
         return node;
     };
+    
+    // this is a bit like the react update code...
+    // 
+    
+    var updateNode = function(from, to)
+    {
+        // should we handle non-standard elements?
+        Roo.log(["UpdateNode" , from, to]);
+        if (from.nodeType != to.nodeType) {
+            Roo.log(["ReplaceChild - mismatch notType" , to, from ]);
+            from.parentNode.replaceChild(to, from);
+        }
+        
+        if (from.nodeType == 3) {
+            // assume it's text?!
+            if (from.data == to.data) {
+                return;
+            }
+            from.data = to.data;
+            return;
+        }
+        if (!from.parentNode) {
+            // not sure why this is happening?
+            return;
+        }
+        // assume 'to' doesnt have '1/3 nodetypes!
+        // not sure why, by from, parent node might not exist?
+        if (from.nodeType !=1 || from.tagName != to.tagName) {
+            Roo.log(["ReplaceChild" , from, to ]);
+            
+            from.parentNode.replaceChild(to, from);
+            return;
+        }
+        // compare attributes
+        var ar = Array.from(from.attributes);
+        for(var i = 0; i< ar.length;i++) {
+            if (to.hasAttribute(ar[i].name)) {
+                continue;
+            }
+            if (ar[i].name == 'id') { // always keep ids?
+               continue;
+            }
+            //if (ar[i].name == 'style') {
+            //   throw "style removed?";
+            //}
+            Roo.log("removeAttribute" + ar[i].name);
+            from.removeAttribute(ar[i].name);
+        }
+        ar = to.attributes;
+        for(var i = 0; i< ar.length;i++) {
+            if (from.getAttribute(ar[i].name) == to.getAttribute(ar[i].name)) {
+                Roo.log("skipAttribute " + ar[i].name  + '=' + to.getAttribute(ar[i].name));
+                continue;
+            }
+            Roo.log("updateAttribute " + ar[i].name + '=>' + to.getAttribute(ar[i].name));
+            from.setAttribute(ar[i].name, to.getAttribute(ar[i].name));
+        }
+        // children
+        var far = Array.from(from.childNodes);
+        var tar = Array.from(to.childNodes);
+        // if the lengths are different.. then it's probably a editable content change, rather than
+        // a change of the block definition..
+        
+        // this did notwork , as our rebuilt nodes did not include ID's so did not match at all.
+         /*if (from.innerHTML == to.innerHTML) {
+            return;
+        }
+        if (far.length != tar.length) {
+            from.innerHTML = to.innerHTML;
+            return;
+        }
+        */
+        
+        for(var i = 0; i < Math.max(tar.length, far.length); i++) {
+            if (i >= far.length) {
+                from.appendChild(tar[i]);
+                Roo.log(["add", tar[i]]);
+                
+            } else if ( i  >= tar.length) {
+                from.removeChild(far[i]);
+                Roo.log(["remove", far[i]]);
+            } else {
+                
+                updateNode(far[i], tar[i]);
+            }    
+        }
+        
+        
+        
+        
+    };
+    
+    
 
     return {
-    /** True to force the use of DOM instead of html fragments @type Boolean */
-    useDom : false,
-
-    /**
-     * Returns the markup for the passed Element(s) config
-     * @param {Object} o The Dom object spec (and children)
-     * @return {String}
-     */
-    markup : function(o){
-        return createHtml(o);
-    },
-
-    /**
-     * Applies a style specification to an element
-     * @param {String/HTMLElement} el The element to apply styles to
-     * @param {String/Object/Function} styles A style specification string eg "width:100px", or object in the form {width:"100px"}, or
-     * a function which returns such a specification.
-     */
-    applyStyles : function(el, styles){
-        if(styles){
-           el = Roo.fly(el);
-           if(typeof styles == "string"){
-               var re = /\s?([a-z\-]*)\:\s?([^;]*);?/gi;
-               var matches;
-               while ((matches = re.exec(styles)) != null){
-                   el.setStyle(matches[1], matches[2]);
-               }
-           }else if (typeof styles == "object"){
-               for (var style in styles){
-                  el.setStyle(style, styles[style]);
+        /** True to force the use of DOM instead of html fragments @type Boolean */
+        useDom : false,
+    
+        /**
+         * Returns the markup for the passed Element(s) config
+         * @param {Object} o The Dom object spec (and children)
+         * @return {String}
+         */
+        markup : function(o){
+            return createHtml(o);
+        },
+    
+        /**
+         * Applies a style specification to an element
+         * @param {String/HTMLElement} el The element to apply styles to
+         * @param {String/Object/Function} styles A style specification string eg "width:100px", or object in the form {width:"100px"}, or
+         * a function which returns such a specification.
+         */
+        applyStyles : function(el, styles){
+            if(styles){
+               el = Roo.fly(el);
+               if(typeof styles == "string"){
+                   var re = /\s?([a-z\-]*)\:\s?([^;]*);?/gi;
+                   var matches;
+                   while ((matches = re.exec(styles)) != null){
+                       el.setStyle(matches[1], matches[2]);
+                   }
+               }else if (typeof styles == "object"){
+                   for (var style in styles){
+                      el.setStyle(style, styles[style]);
+                   }
+               }else if (typeof styles == "function"){
+                    Roo.DomHelper.applyStyles(el, styles.call());
                }
-           }else if (typeof styles == "function"){
-                Roo.DomHelper.applyStyles(el, styles.call());
-           }
-        }
-    },
-
-    /**
-     * Inserts an HTML fragment into the Dom
-     * @param {String} where Where to insert the html in relation to el - beforeBegin, afterBegin, beforeEnd, afterEnd.
-     * @param {HTMLElement} el The context element
-     * @param {String} html The HTML fragmenet
-     * @return {HTMLElement} The new node
-     */
-    insertHtml : function(where, el, html){
-        where = where.toLowerCase();
-        if(el.insertAdjacentHTML){
-            if(tableRe.test(el.tagName)){
-                var rs;
-                if(rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html)){
-                    return rs;
+            }
+        },
+    
+        /**
+         * Inserts an HTML fragment into the Dom
+         * @param {String} where Where to insert the html in relation to el - beforeBegin, afterBegin, beforeEnd, afterEnd.
+         * @param {HTMLElement} el The context element
+         * @param {String} html The HTML fragmenet
+         * @return {HTMLElement} The new node
+         */
+        insertHtml : function(where, el, html){
+            where = where.toLowerCase();
+            if(el.insertAdjacentHTML){
+                if(tableRe.test(el.tagName)){
+                    var rs;
+                    if(rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html)){
+                        return rs;
+                    }
+                }
+                switch(where){
+                    case "beforebegin":
+                        el.insertAdjacentHTML('BeforeBegin', html);
+                        return el.previousSibling;
+                    case "afterbegin":
+                        el.insertAdjacentHTML('AfterBegin', html);
+                        return el.firstChild;
+                    case "beforeend":
+                        el.insertAdjacentHTML('BeforeEnd', html);
+                        return el.lastChild;
+                    case "afterend":
+                        el.insertAdjacentHTML('AfterEnd', html);
+                        return el.nextSibling;
                 }
+                throw 'Illegal insertion point -> "' + where + '"';
             }
+            var range = el.ownerDocument.createRange();
+            var frag;
             switch(where){
-                case "beforebegin":
-                    el.insertAdjacentHTML('BeforeBegin', html);
+                 case "beforebegin":
+                    range.setStartBefore(el);
+                    frag = range.createContextualFragment(html);
+                    el.parentNode.insertBefore(frag, el);
                     return el.previousSibling;
-                case "afterbegin":
-                    el.insertAdjacentHTML('AfterBegin', html);
-                    return el.firstChild;
+                 case "afterbegin":
+                    if(el.firstChild){
+                        range.setStartBefore(el.firstChild);
+                        frag = range.createContextualFragment(html);
+                        el.insertBefore(frag, el.firstChild);
+                        return el.firstChild;
+                    }else{
+                        el.innerHTML = html;
+                        return el.firstChild;
+                    }
                 case "beforeend":
-                    el.insertAdjacentHTML('BeforeEnd', html);
-                    return el.lastChild;
+                    if(el.lastChild){
+                        range.setStartAfter(el.lastChild);
+                        frag = range.createContextualFragment(html);
+                        el.appendChild(frag);
+                        return el.lastChild;
+                    }else{
+                        el.innerHTML = html;
+                        return el.lastChild;
+                    }
                 case "afterend":
-                    el.insertAdjacentHTML('AfterEnd', html);
-                    return el.nextSibling;
-            }
-            throw 'Illegal insertion point -> "' + where + '"';
-        }
-        var range = el.ownerDocument.createRange();
-        var frag;
-        switch(where){
-             case "beforebegin":
-                range.setStartBefore(el);
-                frag = range.createContextualFragment(html);
-                el.parentNode.insertBefore(frag, el);
-                return el.previousSibling;
-             case "afterbegin":
-                if(el.firstChild){
-                    range.setStartBefore(el.firstChild);
+                    range.setStartAfter(el);
                     frag = range.createContextualFragment(html);
-                    el.insertBefore(frag, el.firstChild);
-                    return el.firstChild;
-                }else{
-                    el.innerHTML = html;
-                    return el.firstChild;
+                    el.parentNode.insertBefore(frag, el.nextSibling);
+                    return el.nextSibling;
                 }
-            case "beforeend":
-                if(el.lastChild){
-                    range.setStartAfter(el.lastChild);
-                    frag = range.createContextualFragment(html);
-                    el.appendChild(frag);
-                    return el.lastChild;
-                }else{
-                    el.innerHTML = html;
-                    return el.lastChild;
+                throw 'Illegal insertion point -> "' + where + '"';
+        },
+    
+        /**
+         * Creates new Dom element(s) and inserts them before el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        insertBefore : function(el, o, returnElement){
+            return this.doInsert(el, o, returnElement, "beforeBegin");
+        },
+    
+        /**
+         * Creates new Dom element(s) and inserts them after el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object} o The Dom object spec (and children)
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        insertAfter : function(el, o, returnElement){
+            return this.doInsert(el, o, returnElement, "afterEnd", "nextSibling");
+        },
+    
+        /**
+         * Creates new Dom element(s) and inserts them as the first child of el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        insertFirst : function(el, o, returnElement){
+            return this.doInsert(el, o, returnElement, "afterBegin");
+        },
+    
+        // private
+        doInsert : function(el, o, returnElement, pos, sibling){
+            el = Roo.getDom(el);
+            var newNode;
+            if(this.useDom || o.ns){
+                newNode = createDom(o, null);
+                el.parentNode.insertBefore(newNode, sibling ? el[sibling] : el);
+            }else{
+                var html = createHtml(o);
+                newNode = this.insertHtml(pos, el, html);
+            }
+            return returnElement ? Roo.get(newNode, true) : newNode;
+        },
+    
+        /**
+         * Creates new Dom element(s) and appends them to el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        append : function(el, o, returnElement){
+            el = Roo.getDom(el);
+            var newNode;
+            if(this.useDom || o.ns){
+                newNode = createDom(o, null);
+                el.appendChild(newNode);
+            }else{
+                var html = createHtml(o);
+                newNode = this.insertHtml("beforeEnd", el, html);
+            }
+            return returnElement ? Roo.get(newNode, true) : newNode;
+        },
+    
+        /**
+         * Creates new Dom element(s) and overwrites the contents of el with them
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        overwrite : function(el, o, returnElement)
+        {
+            el = Roo.getDom(el);
+            if (o.ns) {
+              
+                while (el.childNodes.length) {
+                    el.removeChild(el.firstChild);
                 }
-            case "afterend":
-                range.setStartAfter(el);
-                frag = range.createContextualFragment(html);
-                el.parentNode.insertBefore(frag, el.nextSibling);
-                return el.nextSibling;
+                createDom(o, el);
+            } else {
+                el.innerHTML = createHtml(o);   
             }
-            throw 'Illegal insertion point -> "' + where + '"';
-    },
-
-    /**
-     * Creates new Dom element(s) and inserts them before el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    insertBefore : function(el, o, returnElement){
-        return this.doInsert(el, o, returnElement, "beforeBegin");
-    },
-
-    /**
-     * Creates new Dom element(s) and inserts them after el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object} o The Dom object spec (and children)
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    insertAfter : function(el, o, returnElement){
-        return this.doInsert(el, o, returnElement, "afterEnd", "nextSibling");
-    },
-
-    /**
-     * Creates new Dom element(s) and inserts them as the first child of el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    insertFirst : function(el, o, returnElement){
-        return this.doInsert(el, o, returnElement, "afterBegin");
-    },
-
-    // private
-    doInsert : function(el, o, returnElement, pos, sibling){
-        el = Roo.getDom(el);
-        var newNode;
-        if(this.useDom || o.ns){
-            newNode = createDom(o, null);
-            el.parentNode.insertBefore(newNode, sibling ? el[sibling] : el);
-        }else{
-            var html = createHtml(o);
-            newNode = this.insertHtml(pos, el, html);
-        }
-        return returnElement ? Roo.get(newNode, true) : newNode;
-    },
-
-    /**
-     * Creates new Dom element(s) and appends them to el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    append : function(el, o, returnElement){
-        el = Roo.getDom(el);
-        var newNode;
-        if(this.useDom || o.ns){
-            newNode = createDom(o, null);
-            el.appendChild(newNode);
-        }else{
+            
+            return returnElement ? Roo.get(el.firstChild, true) : el.firstChild;
+        },
+    
+        /**
+         * Creates a new Roo.DomHelper.Template from the Dom object spec
+         * @param {Object} o The Dom object spec (and children)
+         * @return {Roo.DomHelper.Template} The new template
+         */
+        createTemplate : function(o){
             var html = createHtml(o);
-            newNode = this.insertHtml("beforeEnd", el, html);
-        }
-        return returnElement ? Roo.get(newNode, true) : newNode;
-    },
-
-    /**
-     * Creates new Dom element(s) and overwrites the contents of el with them
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    overwrite : function(el, o, returnElement){
-        el = Roo.getDom(el);
-        if (o.ns) {
-          
-            while (el.childNodes.length) {
-                el.removeChild(el.firstChild);
-            }
-            createDom(o, el);
-        } else {
-            el.innerHTML = createHtml(o);   
+            return new Roo.Template(html);
+        },
+         /**
+         * Updates the first element with the spec from the o (replacing if necessary)
+         * This iterates through the children, and updates attributes / children etc..
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         */
+        
+        update : function(el, o)
+        {
+            updateNode(Roo.getDom(el), createDom(o));
+            
         }
         
-        return returnElement ? Roo.get(el.firstChild, true) : el.firstChild;
-    },
-
-    /**
-     * Creates a new Roo.DomHelper.Template from the Dom object spec
-     * @param {Object} o The Dom object spec (and children)
-     * @return {Roo.DomHelper.Template} The new template
-     */
-    createTemplate : function(o){
-        var html = createHtml(o);
-        return new Roo.Template(html);
-    }
+        
     };
 }();
index e17b998..e682312 100644 (file)
@@ -71,7 +71,8 @@ Roo.HtmlEditorCore = function(config){
          * Fires when on any editor (mouse up/down cursor movement etc.) - used for toolbar hooks.
          * @param {Roo.HtmlEditorCore} this
          */
-        editorevent: true
+        editorevent: true 
+         
         
     });
     
@@ -107,15 +108,30 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
      * @cfg {Number} width (in pixels)
      */   
     width: 500,
+     /**
+     * @cfg {boolean} autoClean - default true - loading and saving will remove quite a bit of formating,
+     *         if you are doing an email editor, this probably needs disabling, it's designed
+     */
+    autoClean: true,
     
+    /**
+     * @cfg {boolean} enableBlocks - default true - if the block editor (table and figure should be enabled)
+     */
+    enableBlocks : true,
     /**
      * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets.
      * 
      */
     stylesheets: false,
+     /**
+     * @cfg {String} language default en - language of text (usefull for rtl languages)
+     * 
+     */
+    language: 'en',
     
     /**
-     * @cfg {boolean} allowComments - default false - allow comments in HTML source - by default they are stripped - if you are editing email you may need this.
+     * @cfg {boolean} allowComments - default false - allow comments in HTML source
+     *          - by default they are stripped - if you are editing email you may need this.
      */
     allowComments: false,
     // id of frame..
@@ -139,6 +155,8 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
      
     bodyCls : '',
 
+    
+    undoManager : false,
     /**
      * Protected method that will not generally be called directly. It
      * is called when the editor initializes the iframe with HTML contents. Override this method if you
@@ -165,7 +183,10 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                     'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
                    '</style>';
         } else {
-            for (var i in this.stylesheets) { 
+            for (var i in this.stylesheets) {
+                if (typeof(this.stylesheets[i]) != 'string') {
+                    continue;
+                }
                 st += '<link rel="stylesheet" href="' + this.stylesheets[i] +'" type="text/css">';
             }
             
@@ -174,14 +195,16 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         st +=  '<style type="text/css">' +
             'IMG { cursor: pointer } ' +
         '</style>';
-
-        var cls = 'roo-htmleditor-body';
+        
+        st += '<meta name="google" content="notranslate">';
+        
+        var cls = 'notranslate roo-htmleditor-body';
         
         if(this.bodyCls.length){
             cls += ' ' + this.bodyCls;
         }
         
-        return '<html><head>' + st  +
+        return '<html  class="notranslate" translate="no"><head>' + st  +
             //<style type="text/css">' +
             //'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
             //'</style>' +
@@ -224,7 +247,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         
         this.iframe = iframe.dom;
 
-         this.assignDocWin();
+        this.assignDocWin();
         
         this.doc.designMode = 'on';
        
@@ -240,6 +263,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                 if(this.doc.body || this.doc.readyState == 'complete'){
                     try {
                         this.doc.designMode="on";
+                        
                     } catch (e) {
                         return;
                     }
@@ -287,10 +311,10 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         
         if(this.sourceEditMode){
  
-            Roo.get(this.iframe).addClass(['x-hidden','hide']);     //FIXME - what's the BS styles for these
+            Roo.get(this.iframe).addClass(['x-hidden','hide', 'd-none']);     //FIXME - what's the BS styles for these
             
         }else{
-            Roo.get(this.iframe).removeClass(['x-hidden','hide']);
+            Roo.get(this.iframe).removeClass(['x-hidden','hide', 'd-none']);
             //this.iframe.className = '';
             this.deferFocus();
         }
@@ -307,7 +331,8 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
      * @param {String} html The HTML to be cleaned
      * return {String} The cleaned HTML
      */
-    cleanHtml : function(html){
+    cleanHtml : function(html)
+    {
         html = String(html);
         if(html.length > 5){
             if(Roo.isSafari){ // strip safari nonsense
@@ -325,11 +350,38 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
      * Protected method that will not generally be called directly. Syncs the contents
      * of the editor iframe with the textarea.
      */
-    syncValue : function(){
+    syncValue : function()
+    {
+        //Roo.log("HtmlEditorCore:syncValue (EDITOR->TEXT)");
         if(this.initialized){
+            
+            this.undoManager.addEvent();
+
+            
             var bd = (this.doc.body || this.doc.documentElement);
-            //this.cleanUpPaste(); -- this is done else where and causes havoc..
-            var html = bd.innerHTML;
+           
+            
+            var sel = this.win.getSelection();
+            
+            var div = document.createElement('div');
+            div.innerHTML = bd.innerHTML;
+            var gtx = div.getElementsByClassName('gtx-trans-icon'); // google translate - really annoying and difficult to get rid of.
+            if (gtx.length > 0) {
+                var rm = gtx.item(0).parentNode;
+                rm.parentNode.removeChild(rm);
+            }
+            
+           
+            if (this.enableBlocks) {
+                new Roo.htmleditor.FilterBlock({ node : div });
+            }
+            //?? tidy?
+            var tidy = new Roo.htmleditor.TidySerializer({
+                inner:  true
+            });
+            var html  = tidy.serialize(div);
+            
+            
             if(Roo.isSafari){
                 var bs = bd.getAttribute('style'); // Safari puts text-align styles on the body element!
                 var m = bs ? bs.match(/text-align:(.*?);/i) : false;
@@ -374,24 +426,41 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
     },
 
     /**
+     * TEXTAREA -> EDITABLE
      * Protected method that will not generally be called directly. Pushes the value of the textarea
      * into the iframe editor.
      */
-    pushValue : function(){
+    pushValue : function()
+    {
+        //Roo.log("HtmlEditorCore:pushValue (TEXT->EDITOR)");
         if(this.initialized){
             var v = this.el.dom.value.trim();
             
-//            if(v.length < 1){
-//                v = '&#160;';
-//            }
             
             if(this.owner.fireEvent('beforepush', this, v) !== false){
                 var d = (this.doc.body || this.doc.documentElement);
                 d.innerHTML = v;
-                this.cleanUpPaste();
+                 
                 this.el.dom.value = d.innerHTML;
                 this.owner.fireEvent('push', this, v);
             }
+            if (this.autoClean) {
+                new Roo.htmleditor.FilterParagraph({node : this.doc.body}); // paragraphs
+                new Roo.htmleditor.FilterSpan({node : this.doc.body}); // empty spans
+            }
+            if (this.enableBlocks) {
+                Roo.htmleditor.Block.initAll(this.doc.body);
+            }
+            
+            this.updateLanguage();
+            
+            var lc = this.doc.body.lastChild;
+            if (lc && lc.nodeType == 1 && lc.getAttribute("contenteditable") == "false") {
+                // add an extra line at the end.
+                this.doc.body.appendChild(this.doc.createElement('br'));
+            }
+            
+            
         }
     },
 
@@ -453,28 +522,136 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         //var ss = this.el.getStyles( 'background-image', 'background-repeat');
         //ss['background-attachment'] = 'fixed'; // w3c
         dbody.bgProperties = 'fixed'; // ie
+        dbody.setAttribute("translate", "no");
+        
         //Roo.DomHelper.applyStyles(dbody, ss);
         Roo.EventManager.on(this.doc, {
-            //'mousedown': this.onEditorEvent,
+             
             'mouseup': this.onEditorEvent,
             'dblclick': this.onEditorEvent,
             'click': this.onEditorEvent,
             'keyup': this.onEditorEvent,
+            
             buffer:100,
             scope: this
         });
+        Roo.EventManager.on(this.doc, {
+            'paste': this.onPasteEvent,
+            scope : this
+        });
         if(Roo.isGecko){
             Roo.EventManager.on(this.doc, 'keypress', this.mozKeyPress, this);
         }
+        //??? needed???
         if(Roo.isIE || Roo.isSafari || Roo.isOpera){
             Roo.EventManager.on(this.doc, 'keydown', this.fixKeys, this);
         }
         this.initialized = true;
 
+        
+        // initialize special key events - enter
+        new Roo.htmleditor.KeyEnter({core : this});
+        
+         
+        
         this.owner.fireEvent('initialize', this);
         this.pushValue();
     },
-
+    // this is to prevent a href clicks resulting in a redirect?
+   
+    onPasteEvent : function(e,v)
+    {
+        // I think we better assume paste is going to be a dirty load of rubish from word..
+        
+        // even pasting into a 'email version' of this widget will have to clean up that mess.
+        var cd = (e.browserEvent.clipboardData || window.clipboardData);
+        
+        // check what type of paste - if it's an image, then handle it differently.
+        if (cd.files.length > 0) {
+            // pasting images?
+            var urlAPI = (window.createObjectURL && window) || 
+                (window.URL && URL.revokeObjectURL && URL) || 
+                (window.webkitURL && webkitURL);
+    
+            var url = urlAPI.createObjectURL( cd.files[0]);
+            this.insertAtCursor('<img src=" + url + ">');
+            return false;
+        }
+        
+        var html = cd.getData('text/html'); // clipboard event
+        var parser = new Roo.rtf.Parser(cd.getData('text/rtf'));
+        var images = parser.doc ? parser.doc.getElementsByType('pict') : [];
+        Roo.log(images);
+        //Roo.log(imgs);
+        // fixme..
+        images = images.filter(function(g) { return !g.path.match(/^rtf\/(head|pgdsctbl|listtable)/); }) // ignore headers
+                       .map(function(g) { return g.toDataURL(); })
+                       .filter(function(g) { return g != 'about:blank'; });
+        
+        
+        html = this.cleanWordChars(html);
+        
+        var d = (new DOMParser().parseFromString(html, 'text/html')).body;
+        
+        
+        var sn = this.getParentElement();
+        // check if d contains a table, and prevent nesting??
+        //Roo.log(d.getElementsByTagName('table'));
+        //Roo.log(sn);
+        //Roo.log(sn.closest('table'));
+        if (d.getElementsByTagName('table').length && sn && sn.closest('table')) {
+            e.preventDefault();
+            this.insertAtCursor("You can not nest tables");
+            //Roo.log("prevent?"); // fixme - 
+            return false;
+        }
+        
+        if (images.length > 0) {
+            Roo.each(d.getElementsByTagName('img'), function(img, i) {
+                img.setAttribute('src', images[i]);
+            });
+        }
+        if (this.autoClean) {
+            new Roo.htmleditor.FilterStyleToTag({ node : d });
+            new Roo.htmleditor.FilterAttributes({
+                node : d,
+                attrib_white : ['href', 'src', 'name', 'align'],
+                attrib_clean : ['href', 'src' ] 
+            });
+            new Roo.htmleditor.FilterBlack({ node : d, tag : this.black});
+            // should be fonts..
+            new Roo.htmleditor.FilterKeepChildren({node : d, tag : [ 'FONT', 'O:P' ]} );
+            new Roo.htmleditor.FilterParagraph({ node : d });
+            new Roo.htmleditor.FilterSpan({ node : d });
+            new Roo.htmleditor.FilterLongBr({ node : d });
+        }
+        if (this.enableBlocks) {
+                
+            Array.from(d.getElementsByTagName('img')).forEach(function(img) {
+                if (img.closest('figure')) { // assume!! that it's aready
+                    return;
+                }
+                var fig  = new Roo.htmleditor.BlockFigure({
+                    image_src  : img.src
+                });
+                fig.updateElement(img); // replace it..
+                
+            });
+        }
+        
+        
+        this.insertAtCursor(d.innerHTML.replace(/&nbsp;/g,' '));
+        if (this.enableBlocks) {
+            Roo.htmleditor.Block.initAll(this.doc.body);
+        }
+        
+        
+        e.preventDefault();
+        return false;
+        // default behaveiour should be our local cleanup paste? (optional?)
+        // for simple editor - we want to hammer the paste and get rid of everything... - so over-rideable..
+        //this.owner.fireEvent('paste', e, v);
+    },
     // private
     onDestroy : function(){
         
@@ -496,7 +673,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
     onFirstFocus : function(){
         
         this.assignDocWin();
-        
+        this.undoManager = new Roo.lib.UndoManager(100,(this.doc.body || this.doc.documentElement));
         
         this.activated = true;
          
@@ -541,10 +718,48 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
 
     onEditorEvent : function(e)
     {
-        this.owner.fireEvent('editorevent', this, e);
+         
+        
+        if (e && (e.ctrlKey || e.metaKey) && e.keyCode === 90) {
+            return; // we do not handle this.. (undo manager does..)
+        }
+        // in theory this detects if the last element is not a br, then we try and do that.
+        // its so clicking in space at bottom triggers adding a br and moving the cursor.
+        if (e &&
+            e.target.nodeName == 'BODY' &&
+            e.type == "mouseup" &&
+            this.doc.body.lastChild
+           ) {
+            var lc = this.doc.body.lastChild;
+            // gtx-trans is google translate plugin adding crap.
+            while ((lc.nodeType == 3 && lc.nodeValue == '') || lc.id == 'gtx-trans') {
+                lc = lc.previousSibling;
+            }
+            if (lc.nodeType == 1 && lc.nodeName != 'BR') {
+            // if last element is <BR> - then dont do anything.
+            
+                var ns = this.doc.createElement('br');
+                this.doc.body.appendChild(ns);
+                range = this.doc.createRange();
+                range.setStartAfter(ns);
+                range.collapse(true);
+                var sel = this.win.getSelection();
+                sel.removeAllRanges();
+                sel.addRange(range);
+            }
+        }
+        
+        
+        
+        this.fireEditorEvent(e);
       //  this.updateToolbar();
         this.syncValue(); //we can not sync so often.. sync cleans, so this breaks stuff
     },
+    
+    fireEditorEvent: function(e)
+    {
+        this.owner.fireEvent('editorevent', this, e);
+    },
 
     insertTag : function(tg)
     {
@@ -566,7 +781,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
             
         }
         this.execCmd("formatblock",   tg);
-        
+        this.undoManager.addEvent(); 
     },
     
     insertText : function(txt)
@@ -578,6 +793,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                //alert(Sender.getAttribute('label'));
                
         range.insertNode(this.doc.createTextNode(txt));
+        this.undoManager.addEvent();
     } ,
     
      
@@ -588,7 +804,37 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
      * @param {String} cmd The Midas command
      * @param {String/Boolean} value (optional) The value to pass to the command (defaults to null)
      */
-    relayCmd : function(cmd, value){
+    relayCmd : function(cmd, value)
+    {
+        
+        switch (cmd) {
+            case 'justifyleft':
+            case 'justifyright':
+            case 'justifycenter':
+                // if we are in a cell, then we will adjust the
+                var n = this.getParentElement();
+                var td = n.closest('td');
+                if (td) {
+                    var bl = Roo.htmleditor.Block.factory(td);
+                    bl.textAlign = cmd.replace('justify','');
+                    bl.updateElement();
+                    this.owner.fireEvent('editorevent', this);
+                    return;
+                }
+                this.execCmd('styleWithCSS', true); // 
+                break;
+            case 'bold':
+            case 'italic':
+                // if there is no selection, then we insert, and set the curson inside it..
+                this.execCmd('styleWithCSS', false); 
+                break;
+                
+        
+            default:
+                break;
+        }
+        
+        
         this.win.focus();
         this.execCmd(cmd, value);
         this.owner.fireEvent('editorevent', this);
@@ -621,20 +867,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         if(!this.activated){
             return;
         }
-        /*
-        if(Roo.isIE){
-            this.win.focus();
-            var r = this.doc.selection.createRange();
-            if(r){
-                r.collapse(true);
-                r.pasteHTML(text);
-                this.syncValue();
-                this.deferFocus();
-            
-            }
-            return;
-        }
-        */
+         
         if(Roo.isGecko || Roo.isOpera || Roo.isSafari){
             this.win.focus();
             
@@ -644,19 +877,31 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
             var win = this.win;
             
             if (win.getSelection && win.getSelection().getRangeAt) {
+                
+                // delete the existing?
+                
+                this.createRange(this.getSelection()).deleteContents();
                 range = win.getSelection().getRangeAt(0);
                 node = typeof(text) == 'string' ? range.createContextualFragment(text) : text;
                 range.insertNode(node);
+                range = range.cloneRange();
+                range.collapse(false);
+                 
+                win.getSelection().removeAllRanges();
+                win.getSelection().addRange(range);
+                
+                
+                
             } else if (win.document.selection && win.document.selection.createRange) {
                 // no firefox support
                 var txt = typeof(text) == 'string' ? text : text.outerHTML;
                 win.document.selection.createRange().pasteHTML(txt);
+            
             } else {
                 // no firefox support
                 var txt = typeof(text) == 'string' ? text : text.outerHTML;
                 this.execCmd('InsertHTML', txt);
             } 
-            
             this.syncValue();
             
             this.deferFocus();
@@ -681,15 +926,17 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                         cmd = 'underline';
                         break;
                     
-                    case 'v':
-                        this.cleanUpPaste.defer(100, this);
-                        return;
+                    //case 'v':
+                      //  this.cleanUpPaste.defer(100, this);
+                      //  return;
                         
                 }
                 if(cmd){
-                    this.win.focus();
-                    this.execCmd(cmd);
-                    this.deferFocus();
+                    
+                    this.relayCmd(cmd);
+                    //this.win.focus();
+                    //this.execCmd(cmd);
+                    //this.deferFocus();
                     e.preventDefault();
                 }
                 
@@ -699,6 +946,8 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
 
     // private
     fixKeys : function(){ // load time branching for fastest keydown performance
+        
+        
         if(Roo.isIE){
             return function(e){
                 var k = e.getKey(), r;
@@ -712,23 +961,25 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                     }
                     return;
                 }
-                
+                /// this is handled by Roo.htmleditor.KeyEnter
+                 /*
                 if(k == e.ENTER){
                     r = this.doc.selection.createRange();
                     if(r){
                         var target = r.parentElement();
                         if(!target || target.tagName.toLowerCase() != 'li'){
                             e.stopEvent();
-                            r.pasteHTML('<br />');
+                            r.pasteHTML('<br/>');
                             r.collapse(false);
                             r.select();
                         }
                     }
                 }
-                if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
-                    this.cleanUpPaste.defer(100, this);
-                    return;
-                }
+                */
+                //if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
+                //    this.cleanUpPaste.defer(100, this);
+                //    return;
+                //}
                 
                 
             };
@@ -741,10 +992,11 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                     this.execCmd('InsertHTML','&#160;&#160;&#160;&#160;');
                     this.deferFocus();
                 }
-                if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
-                    this.cleanUpPaste.defer(100, this);
-                    return;
-                }
+               
+                //if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
+                //    this.cleanUpPaste.defer(100, this);
+                 //   return;
+                //}
                 
             };
         }else if(Roo.isSafari){
@@ -757,10 +1009,12 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                     this.deferFocus();
                     return;
                 }
-               if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
-                    this.cleanUpPaste.defer(100, this);
-                    return;
-                }
+                 this.mozKeyPress(e);
+                
+               //if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
+                 //   this.cleanUpPaste.defer(100, this);
+                 //   return;
+               // }
                 
              };
         }
@@ -790,7 +1044,27 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
     getSelection : function() 
     {
         this.assignDocWin();
-        return Roo.isIE ? this.doc.selection : this.win.getSelection();
+        return Roo.lib.Selection.wrap(Roo.isIE ? this.doc.selection : this.win.getSelection(), this.doc);
+    },
+    /**
+     * Select a dom node
+     * @param {DomElement} node the node to select
+     */
+    selectNode : function(node, collapse)
+    {
+        var nodeRange = node.ownerDocument.createRange();
+        try {
+            nodeRange.selectNode(node);
+        } catch (e) {
+            nodeRange.selectNodeContents(node);
+        }
+        if (collapse === true) {
+            nodeRange.collapse(true);
+        }
+        //
+        var s = this.win.getSelection();
+        s.removeAllRanges();
+        s.addRange(nodeRange);
     },
     
     getSelectedNode: function() 
@@ -799,8 +1073,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         
         // should we cache this!!!!
         
-        
-        
+         
          
         var range = this.createRange(this.getSelection()).cloneRange();
         
@@ -864,6 +1137,8 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         
         return nodes[0];
     },
+    
+    
     createRange: function(sel)
     {
         // this has strange effects when using with 
@@ -981,26 +1256,21 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         // fully contined.
         return 3;
     },
-
-    // private? - in a new class?
-    cleanUpPaste :  function()
-    {
-        // cleans up the whole document..
-        Roo.log('cleanuppaste');
-        
-        this.cleanUpChildren(this.doc.body);
-        var clean = this.cleanWordChars(this.doc.body.innerHTML);
-        if (clean != this.doc.body.innerHTML) {
-            this.doc.body.innerHTML = clean;
-        }
-        
-    },
-    
     cleanWordChars : function(input) {// change the chars to hex code
-        var he = Roo.HtmlEditorCore;
         
+       var swapCodes  = [ 
+            [    8211, "&#8211;" ], 
+            [    8212, "&#8212;" ], 
+            [    8216,  "'" ],  
+            [    8217, "'" ],  
+            [    8220, '"' ],  
+            [    8221, '"' ],  
+            [    8226, "*" ],  
+            [    8230, "..." ]
+        ]; 
         var output = input;
-        Roo.each(he.swapCodes, function(sw) { 
+        Roo.each(swapCodes, function(sw) { 
             var swapper = new RegExp("\\u" + sw[0].toString(16), "g"); // hex codes
             
             output = output.replace(swapper, sw[1]);
@@ -1009,487 +1279,60 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         return output;
     },
     
-    
-    cleanUpChildren : function (n)
-    {
-        if (!n.childNodes.length) {
-            return;
-        }
-        for (var i = n.childNodes.length-1; i > -1 ; i--) {
-           this.cleanUpChild(n.childNodes[i]);
-        }
-    },
-    
+     
     
         
     
     cleanUpChild : function (node)
     {
-        var ed = this;
-        //console.log(node);
-        if (node.nodeName == "#text") {
-            // clean up silly Windows -- stuff?
-            return; 
-        }
-        if (node.nodeName == "#comment") {
-            if (!this.allowComments) {
-                node.parentNode.removeChild(node);
-            }
-            // clean up silly Windows -- stuff?
-            return; 
-        }
-        var lcname = node.tagName.toLowerCase();
-        // we ignore whitelists... ?? = not really the way to go, but we probably have not got a full
-        // whitelist of tags..
-        
-        if (this.black.indexOf(lcname) > -1 && this.clearUp ) {
-            // remove node.
-            node.parentNode.removeChild(node);
-            return;
-            
-        }
-        
-        var remove_keep_children= Roo.HtmlEditorCore.remove.indexOf(node.tagName.toLowerCase()) > -1;
-        
-        // spans with no attributes - just remove them..
-        if ((!node.attributes || !node.attributes.length) && lcname == 'span') { 
-            remove_keep_children = true;
-        }
-        
-        // remove <a name=....> as rendering on yahoo mailer is borked with this.
-        // this will have to be flaged elsewhere - perhaps ablack=name... on the mailer..
-        
-        //if (node.tagName.toLowerCase() == 'a' && !node.hasAttribute('href')) {
-        //    remove_keep_children = true;
-        //}
-        
-        if (remove_keep_children) {
-            this.cleanUpChildren(node);
-            // inserts everything just before this node...
-            while (node.childNodes.length) {
-                var cn = node.childNodes[0];
-                node.removeChild(cn);
-                node.parentNode.insertBefore(cn, node);
-            }
-            node.parentNode.removeChild(node);
-            return;
-        }
-        
-        if (!node.attributes || !node.attributes.length) {
-            
-          
-            
-            
-            this.cleanUpChildren(node);
-            return;
-        }
-        
-        function cleanAttr(n,v)
-        {
-            
-            if (v.match(/^\./) || v.match(/^\//)) {
-                return;
-            }
-            if (v.match(/^(http|https):\/\//) || v.match(/^mailto:/) || v.match(/^ftp:/)) {
-                return;
-            }
-            if (v.match(/^#/)) {
-                return;
-            }
-            if (v.match(/^\{/)) { // allow template editing.
-                return;
-            }
-//            Roo.log("(REMOVE TAG)"+ node.tagName +'.' + n + '=' + v);
-            node.removeAttribute(n);
-            
-        }
-        
-        var cwhite = this.cwhite;
-        var cblack = this.cblack;
-            
-        function cleanStyle(n,v)
-        {
-            if (v.match(/expression/)) { //XSS?? should we even bother..
-                node.removeAttribute(n);
-                return;
-            }
-            
-            var parts = v.split(/;/);
-            var clean = [];
-            
-            Roo.each(parts, function(p) {
-                p = p.replace(/^\s+/g,'').replace(/\s+$/g,'');
-                if (!p.length) {
-                    return true;
-                }
-                var l = p.split(':').shift().replace(/\s+/g,'');
-                l = l.replace(/^\s+/g,'').replace(/\s+$/g,'');
-                
-                if ( cwhite.length && cblack.indexOf(l) > -1) {
-//                    Roo.log('(REMOVE CSS)' + node.tagName +'.' + n + ':'+l + '=' + v);
-                    //node.removeAttribute(n);
-                    return true;
-                }
-                //Roo.log()
-                // only allow 'c whitelisted system attributes'
-                if ( cwhite.length &&  cwhite.indexOf(l) < 0 && cwhite.indexOf(l.toLowerCase()) < 0 ) {
-//                    Roo.log('(REMOVE CSS)' + node.tagName +'.' + n + ':'+l + '=' + v);
-                    //node.removeAttribute(n);
-                    return true;
-                }
-                
-                
-                 
-                
-                clean.push(p);
-                return true;
-            });
-            if (clean.length) { 
-                node.setAttribute(n, clean.join(';'));
-            } else {
-                node.removeAttribute(n);
-            }
-            
-        }
-        
-        
-        for (var i = node.attributes.length-1; i > -1 ; i--) {
-            var a = node.attributes[i];
-            //console.log(a);
-            
-            if (a.name.toLowerCase().substr(0,2)=='on')  {
-                node.removeAttribute(a.name);
-                continue;
-            }
-            if (Roo.HtmlEditorCore.ablack.indexOf(a.name.toLowerCase()) > -1) {
-                node.removeAttribute(a.name);
-                continue;
-            }
-            if (Roo.HtmlEditorCore.aclean.indexOf(a.name.toLowerCase()) > -1) {
-                cleanAttr(a.name,a.value); // fixme..
-                continue;
-            }
-            if (a.name == 'style') {
-                cleanStyle(a.name,a.value);
-                continue;
-            }
-            /// clean up MS crap..
-            // tecnically this should be a list of valid class'es..
-            
-            
-            if (a.name == 'class') {
-                if (a.value.match(/^Mso/)) {
-                    node.removeAttribute('class');
-                }
-                
-                if (a.value.match(/^body$/)) {
-                    node.removeAttribute('class');
-                }
-                continue;
-            }
-            
-            // style cleanup!?
-            // class cleanup?
-            
-        }
-        
-        
-        this.cleanUpChildren(node);
         
+        new Roo.htmleditor.FilterComment({node : node});
+        new Roo.htmleditor.FilterAttributes({
+                node : node,
+                attrib_black : this.ablack,
+                attrib_clean : this.aclean,
+                style_white : this.cwhite,
+                style_black : this.cblack
+        });
+        new Roo.htmleditor.FilterBlack({ node : node, tag : this.black});
+        new Roo.htmleditor.FilterKeepChildren({node : node, tag : this.tag_remove} );
+         
         
     },
     
     /**
      * Clean up MS wordisms...
+     * @deprecated - use filter directly
      */
     cleanWord : function(node)
     {
-        if (!node) {
-            this.cleanWord(this.doc.body);
-            return;
-        }
-        
-        if(
-                node.nodeName == 'SPAN' &&
-                !node.hasAttributes() &&
-                node.childNodes.length == 1 &&
-                node.firstChild.nodeName == "#text"  
-        ) {
-            var textNode = node.firstChild;
-            node.removeChild(textNode);
-            if (node.getAttribute('lang') != 'zh-CN') {   // do not space pad on chinese characters..
-                node.parentNode.insertBefore(node.ownerDocument.createTextNode(" "), node);
-            }
-            node.parentNode.insertBefore(textNode, node);
-            if (node.getAttribute('lang') != 'zh-CN') {   // do not space pad on chinese characters..
-                node.parentNode.insertBefore(node.ownerDocument.createTextNode(" ") , node);
-            }
-            node.parentNode.removeChild(node);
-        }
-        
-        if (node.nodeName == "#text") {
-            // clean up silly Windows -- stuff?
-            return; 
-        }
-        if (node.nodeName == "#comment") {
-            node.parentNode.removeChild(node);
-            // clean up silly Windows -- stuff?
-            return; 
-        }
-        
-        if (node.tagName.toLowerCase().match(/^(style|script|applet|embed|noframes|noscript)$/)) {
-            node.parentNode.removeChild(node);
-            return;
-        }
-        //Roo.log(node.tagName);
-        // remove - but keep children..
-        if (node.tagName.toLowerCase().match(/^(meta|link|\\?xml:|st1:|o:|v:|font)/)) {
-            //Roo.log('-- removed');
-            while (node.childNodes.length) {
-                var cn = node.childNodes[0];
-                node.removeChild(cn);
-                node.parentNode.insertBefore(cn, node);
-                // move node to parent - and clean it..
-                this.cleanWord(cn);
-            }
-            node.parentNode.removeChild(node);
-            /// no need to iterate chidlren = it's got none..
-            //this.iterateChildren(node, this.cleanWord);
-            return;
-        }
-        // clean styles
-        if (node.className.length) {
-            
-            var cn = node.className.split(/\W+/);
-            var cna = [];
-            Roo.each(cn, function(cls) {
-                if (cls.match(/Mso[a-zA-Z]+/)) {
-                    return;
-                }
-                cna.push(cls);
-            });
-            node.className = cna.length ? cna.join(' ') : '';
-            if (!cna.length) {
-                node.removeAttribute("class");
-            }
-        }
-        
-        if (node.hasAttribute("lang")) {
-            node.removeAttribute("lang");
-        }
-        
-        if (node.hasAttribute("style")) {
-            
-            var styles = node.getAttribute("style").split(";");
-            var nstyle = [];
-            Roo.each(styles, function(s) {
-                if (!s.match(/:/)) {
-                    return;
-                }
-                var kv = s.split(":");
-                if (kv[0].match(/^(mso-|line|font|background|margin|padding|color)/)) {
-                    return;
-                }
-                // what ever is left... we allow.
-                nstyle.push(s);
-            });
-            node.setAttribute("style", nstyle.length ? nstyle.join(';') : '');
-            if (!nstyle.length) {
-                node.removeAttribute('style');
-            }
-        }
-        this.iterateChildren(node, this.cleanWord);
+        new Roo.htmleditor.FilterWord({ node : node ? node : this.doc.body });
         
-        
-        
-    },
-    /**
-     * iterateChildren of a Node, calling fn each time, using this as the scole..
-     * @param {DomNode} node node to iterate children of.
-     * @param {Function} fn method of this class to call on each item.
-     */
-    iterateChildren : function(node, fn)
-    {
-        if (!node.childNodes.length) {
-                return;
-        }
-        for (var i = node.childNodes.length-1; i > -1 ; i--) {
-           fn.call(this, node.childNodes[i])
-        }
     },
-    
+   
     
     /**
-     * cleanTableWidths.
-     *
-     * Quite often pasting from word etc.. results in tables with column and widths.
-     * This does not work well on fluid HTML layouts - like emails. - so this code should hunt an destroy them..
-     *
+
+     * @deprecated - use filters
      */
     cleanTableWidths : function(node)
     {
-         
-         
-        if (!node) {
-            this.cleanTableWidths(this.doc.body);
-            return;
-        }
-        
-        // ignore list...
-        if (node.nodeName == "#text" || node.nodeName == "#comment") {
-            return; 
-        }
-        Roo.log(node.tagName);
-        if (!node.tagName.toLowerCase().match(/^(table|td|tr)$/)) {
-            this.iterateChildren(node, this.cleanTableWidths);
-            return;
-        }
-        if (node.hasAttribute('width')) {
-            node.removeAttribute('width');
-        }
-        
-         
-        if (node.hasAttribute("style")) {
-            // pretty basic...
-            
-            var styles = node.getAttribute("style").split(";");
-            var nstyle = [];
-            Roo.each(styles, function(s) {
-                if (!s.match(/:/)) {
-                    return;
-                }
-                var kv = s.split(":");
-                if (kv[0].match(/^\s*(width|min-width)\s*$/)) {
-                    return;
-                }
-                // what ever is left... we allow.
-                nstyle.push(s);
-            });
-            node.setAttribute("style", nstyle.length ? nstyle.join(';') : '');
-            if (!nstyle.length) {
-                node.removeAttribute('style');
-            }
-        }
-        
-        this.iterateChildren(node, this.cleanTableWidths);
-        
+        new Roo.htmleditor.FilterTableWidth({ node : node ? node : this.doc.body});
         
     },
     
-    
-    
-    
-    domToHTML : function(currentElement, depth, nopadtext) {
-        
-        depth = depth || 0;
-        nopadtext = nopadtext || false;
-    
-        if (!currentElement) {
-            return this.domToHTML(this.doc.body);
-        }
-        
-        //Roo.log(currentElement);
-        var j;
-        var allText = false;
-        var nodeName = currentElement.nodeName;
-        var tagName = Roo.util.Format.htmlEncode(currentElement.tagName);
-        
-        if  (nodeName == '#text') {
-            
-            return nopadtext ? currentElement.nodeValue : currentElement.nodeValue.trim();
-        }
-        
-        
-        var ret = '';
-        if (nodeName != 'BODY') {
-             
-            var i = 0;
-            // Prints the node tagName, such as <A>, <IMG>, etc
-            if (tagName) {
-                var attr = [];
-                for(i = 0; i < currentElement.attributes.length;i++) {
-                    // quoting?
-                    var aname = currentElement.attributes.item(i).name;
-                    if (!currentElement.attributes.item(i).value.length) {
-                        continue;
-                    }
-                    attr.push(aname + '="' + Roo.util.Format.htmlEncode(currentElement.attributes.item(i).value) + '"' );
-                }
-                
-                ret = "<"+currentElement.tagName+ ( attr.length ? (' ' + attr.join(' ') ) : '') + ">";
-            } 
-            else {
-                
-                // eack
-            }
-        } else {
-            tagName = false;
-        }
-        if (['IMG', 'BR', 'HR', 'INPUT'].indexOf(tagName) > -1) {
-            return ret;
-        }
-        if (['PRE', 'TEXTAREA', 'TD', 'A', 'SPAN'].indexOf(tagName) > -1) { // or code?
-            nopadtext = true;
-        }
-        
-        
-        // Traverse the tree
-        i = 0;
-        var currentElementChild = currentElement.childNodes.item(i);
-        var allText = true;
-        var innerHTML  = '';
-        lastnode = '';
-        while (currentElementChild) {
-            // Formatting code (indent the tree so it looks nice on the screen)
-            var nopad = nopadtext;
-            if (lastnode == 'SPAN') {
-                nopad  = true;
-            }
-            // text
-            if  (currentElementChild.nodeName == '#text') {
-                var toadd = Roo.util.Format.htmlEncode(currentElementChild.nodeValue);
-                toadd = nopadtext ? toadd : toadd.trim();
-                if (!nopad && toadd.length > 80) {
-                    innerHTML  += "\n" + (new Array( depth + 1 )).join( "  "  );
-                }
-                innerHTML  += toadd;
-                
-                i++;
-                currentElementChild = currentElement.childNodes.item(i);
-                lastNode = '';
-                continue;
-            }
-            allText = false;
-            
-            innerHTML  += nopad ? '' : "\n" + (new Array( depth + 1 )).join( "  "  );
-                
-            // Recursively traverse the tree structure of the child node
-            innerHTML   += this.domToHTML(currentElementChild, depth+1, nopadtext);
-            lastnode = currentElementChild.nodeName;
-            i++;
-            currentElementChild=currentElement.childNodes.item(i);
-        }
-        
-        ret += innerHTML;
-        
-        if (!allText) {
-                // The remaining code is mostly for formatting the tree
-            ret+= nopadtext ? '' : "\n" + (new Array( depth  )).join( "  "  );
-        }
-        
-        
-        if (tagName) {
-            ret+= "</"+tagName+">";
-        }
-        return ret;
-        
-    },
+     
         
     applyBlacklists : function()
     {
         var w = typeof(this.owner.white) != 'undefined' && this.owner.white ? this.owner.white  : [];
         var b = typeof(this.owner.black) != 'undefined' && this.owner.black ? this.owner.black :  [];
         
+        this.aclean = typeof(this.owner.aclean) != 'undefined' && this.owner.aclean ? this.owner.aclean :  Roo.HtmlEditorCore.aclean;
+        this.ablack = typeof(this.owner.ablack) != 'undefined' && this.owner.ablack ? this.owner.ablack :  Roo.HtmlEditorCore.ablack;
+        this.tag_remove = typeof(this.owner.tag_remove) != 'undefined' && this.owner.tag_remove ? this.owner.tag_remove :  Roo.HtmlEditorCore.tag_remove;
+        
         this.white = [];
         this.black = [];
         Roo.each(Roo.HtmlEditorCore.white, function(tag) {
@@ -1607,6 +1450,16 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         
     },
     
+    
+    updateLanguage : function()
+    {
+        if (!this.iframe || !this.iframe.contentDocument) {
+            return;
+        }
+        Roo.get(this.iframe.contentDocument.body).attr("lang", this.language);
+    },
+    
+    
     removeStylesheets : function()
     {
         var _this = this;
@@ -1671,36 +1524,40 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
 });
 
 Roo.HtmlEditorCore.white = [
-        'area', 'br', 'img', 'input', 'hr', 'wbr',
+        'AREA', 'BR', 'IMG', 'INPUT', 'HR', 'WBR',
         
-       'address', 'blockquote', 'center', 'dd',      'dir',       'div', 
-       'dl',      'dt',         'h1',     'h2',      'h3',        'h4', 
-       'h5',      'h6',         'hr',     'isindex', 'listing',   'marquee', 
-       'menu',    'multicol',   'ol',     'p',       'plaintext', 'pre', 
-       'table',   'ul',         'xmp', 
+       'ADDRESS', 'BLOCKQUOTE', 'CENTER', 'DD',      'DIR',       'DIV', 
+       'DL',      'DT',         'H1',     'H2',      'H3',        'H4', 
+       'H5',      'H6',         'HR',     'ISINDEX', 'LISTING',   'MARQUEE', 
+       'MENU',    'MULTICOL',   'OL',     'P',       'PLAINTEXT', 'PRE', 
+       'TABLE',   'UL',         'XMP', 
        
-       'caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', 
-      'thead',   'tr', 
+       'CAPTION', 'COL', 'COLGROUP', 'TBODY', 'TD', 'TFOOT', 'TH', 
+      'THEAD',   'TR', 
      
-      'dir', 'menu', 'ol', 'ul', 'dl',
+      'DIR', 'MENU', 'OL', 'UL', 'DL',
        
-      'embed',  'object'
+      'EMBED',  'OBJECT'
 ];
 
 
 Roo.HtmlEditorCore.black = [
     //    'embed',  'object', // enable - backend responsiblity to clean thiese
-        'applet', // 
-        'base',   'basefont', 'bgsound', 'blink',  'body', 
-        'frame',  'frameset', 'head',    'html',   'ilayer', 
-        'iframe', 'layer',  'link',     'meta',    'object',   
-        'script', 'style' ,'title',  'xml' // clean later..
+        'APPLET', // 
+        'BASE',   'BASEFONT', 'BGSOUND', 'BLINK',  'BODY', 
+        'FRAME',  'FRAMESET', 'HEAD',    'HTML',   'ILAYER', 
+        'IFRAME', 'LAYER',  'LINK',     'META',    'OBJECT',   
+        'SCRIPT', 'STYLE' ,'TITLE',  'XML',
+        //'FONT' // CLEAN LATER..
+        'COLGROUP', 'COL'   // messy tables.
+        
+        
 ];
-Roo.HtmlEditorCore.clean = [
-    'script', 'style', 'title', 'xml'
+Roo.HtmlEditorCore.clean = [ // ?? needed???
+     'SCRIPT', 'STYLE', 'TITLE', 'XML'
 ];
-Roo.HtmlEditorCore.remove = [
-    'font'
+Roo.HtmlEditorCore.tag_remove = [
+    'FONT', 'TBODY'  
 ];
 // attributes..
 
@@ -1731,15 +1588,6 @@ Roo.HtmlEditorCore.cblack= [
 ];
 
 
-Roo.HtmlEditorCore.swapCodes   =[ 
-    [    8211, "&#8211;" ], 
-    [    8212, "&#8212;" ], 
-    [    8216,  "'" ],  
-    [    8217, "'" ],  
-    [    8220, '"' ],  
-    [    8221, '"' ],  
-    [    8226, "*" ],  
-    [    8230, "..." ]
-]; 
+
 
     
\ No newline at end of file
index a43dd34..5f640f0 100644 (file)
@@ -11,6 +11,7 @@
  
 /**
  * @class Roo.MessageBox
+ * @static
  * Utility class for generating different styles of message boxes.  The alias Roo.Msg can also be used.
  * Example usage:
  *<pre><code>
@@ -120,6 +121,7 @@ Roo.MessageBox = function(){
                         }
                     }
                 });
+              
                 dlg.on("hide", handleHide);
                 mask = dlg.mask;
                 dlg.addKeyListener(27, handleEsc);
@@ -363,6 +365,7 @@ Roo.Msg.show({
                 d.animateTarget = null;
                 d.show(options.animEl);
             }
+            dlg.toFront();
             return this;
         },
 
index 9b0d7ec..22f35d3 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @class Roo.PagingToolbar
  * @extends Roo.Toolbar
- * @children   Roo.Toolbar.Item Roo.form.Field
+ * @children   Roo.Toolbar.Item Roo.Toolbar.Button Roo.Toolbar.SplitButton Roo.form.Field
  * A specialized toolbar that is bound to a {@link Roo.data.Store} and provides automatic paging controls.
  * @constructor
  * Create a new PagingToolbar
@@ -255,7 +255,11 @@ Roo.extend(Roo.PagingToolbar, Roo.Toolbar, {
             this.loading.disable();
         }
     },
-
+    /**
+     * event that occurs when you click on the navigation buttons - can be used to trigger load of a grid.
+     * @param {String} which (first|prev|next|last|refresh)  which button to press.
+     *
+     */
     // private
     onClick : function(which){
         var ds = this.ds;
index 05edb01..cee6171 100644 (file)
@@ -11,7 +11,7 @@
 
 /**
  * @class Roo.Toolbar
- * @children   Roo.Toolbar.Item Roo.form.Field
+ * @children   Roo.Toolbar.Item Roo.Toolbar.Button Roo.Toolbar.SplitButton Roo.form.Field 
  * Basic Toolbar class.
  * @constructor
  * Creates a new Toolbar
@@ -547,7 +547,23 @@ Roo.extend(Roo.Toolbar.TextItem, Roo.Toolbar.Item, {
      
     enable:Roo.emptyFn,
     disable:Roo.emptyFn,
-    focus:Roo.emptyFn
+    focus:Roo.emptyFn,
+     /**
+     * Shows this button
+     */
+    show: function(){
+        this.hidden = false;
+        this.el.style.display = "";
+    },
+    
+    /**
+     * Hides this button
+     */
+    hide: function(){
+        this.hidden = true;
+        this.el.style.display = "none";
+    }
+    
 });
 
 /**
index e921d79..b75bc8d 100644 (file)
@@ -351,4 +351,4 @@ Roo.extend(Roo.bootstrap.form.SecurePass, Roo.bootstrap.form.Input, {
         return this.IsLongEnough(pwd, 6) || !this.IsLongEnough(pwd, 0);
     }
           
-})
\ No newline at end of file
+});
\ No newline at end of file
index 4d891f9..d75d308 100644 (file)
@@ -332,6 +332,16 @@ Roo.extend(Roo.data.Store, Roo.util.Observable, {
      * <p>
      * @param {Object} options An object containing properties which control loading options:<ul>
      * <li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>
+     * <li>params.data {Object} if you are using a MemoryProxy / JsonReader, use this as the data to load stuff..
+     * <pre>
+                {
+                    data : data,  // array of key=>value data like JsonReader
+                    total : data.length,
+                    success : true
+                    
+                }
+        </pre>
+            }.</li>
      * <li>callback {Function} A function to be called after the Records have been loaded. The callback is
      * passed the following arguments:<ul>
      * <li>r : Roo.data.Record[]</li>
index 2a6bb59..45f315f 100644 (file)
@@ -549,11 +549,12 @@ clientValidation  Boolean          Applies to submit only.  Pass true to call fo
      * @param {Boolean} asString
      * @return {Object}
      */
-    getValues : function(asString){
+    getValues : function(asString)
+    {
         if (this.childForms) {
             // copy values from the child forms
             Roo.each(this.childForms, function (f) {
-                this.setValues(f.getValues());
+                this.setValues(f.getFieldValues()); // get the full set of data, as we might be copying comboboxes from external into this one.
             }, this);
         }
         
@@ -586,21 +587,31 @@ clientValidation  Boolean          Applies to submit only.  Pass true to call fo
     /**
      * Returns the fields in this form as an object with key/value pairs. 
      * This differs from getValues as it calls getValue on each child item, rather than using dom data.
+     * Normally this will not return readOnly data 
+     * @param {Boolean} with_readonly return readonly field data.
      * @return {Object}
      */
-    getFieldValues : function(with_hidden)
+    getFieldValues : function(with_readonly)
     {
         if (this.childForms) {
             // copy values from the child forms
             // should this call getFieldValues - probably not as we do not currently copy
             // hidden fields when we generate..
             Roo.each(this.childForms, function (f) {
-                this.setValues(f.getValues());
+                this.setValues(f.getFieldValues());
             }, this);
         }
         
         var ret = {};
         this.items.each(function(f){
+            
+            if (f.readOnly && with_readonly !== true) {
+                return; // skip read only values. - this is in theory to stop 'old' values being copied over new ones
+                        // if a subform contains a copy of them.
+                        // if you have subforms with the same editable data, you will need to copy the data back
+                        // and forth.
+            }
+            
             if (!f.getName()) {
                 return;
             }
index 34ec579..030f671 100644 (file)
@@ -97,6 +97,16 @@ Roo.extend(Roo.form.DateField, Roo.form.TriggerField,  {
      * The tooltip text to display when the date falls on a disabled date (defaults to 'Disabled')
      */
     disabledDatesText : "Disabled",
+       
+       
+       /**
+     * @cfg {Date/String} zeroValue
+     * if the date is less that this number, then the field is rendered as empty
+     * default is 1800
+     */
+       zeroValue : '1800-01-01',
+       
+       
     /**
      * @cfg {Date/String} minValue
      * The minimum allowed date. Can be either a Javascript date object or a string date in a
@@ -273,6 +283,15 @@ dateField.setValue('2006-5-4');
 
     // private
     parseDate : function(value){
+               
+               if (value instanceof Date) {
+                       if (value < Date.parseDate(this.zeroValue, 'Y-m-d') ) {
+                               return  '';
+                       }
+                       return value;
+               }
+               
+               
         if(!value || value instanceof Date){
             return value;
         }
@@ -288,6 +307,9 @@ dateField.setValue('2006-5-4');
                 v = Date.parseDate(value, this.altFormatsArray[i]);
             }
         }
+               if (v < Date.parseDate(this.zeroValue, 'Y-m-d') ) {
+                       v = '';
+               }
         return v;
     },
 
index 3e973cd..a6baf6f 100644 (file)
@@ -59,7 +59,7 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
     width: 500,
     
     /**
-     * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets.
+     * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets - this is usally a good idea  rootURL + '/roojs1/css/undoreset.css',   .
      * 
      */
     stylesheets: false,
@@ -90,7 +90,27 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
      * @cfg {boolean} allowComments - default false - allow comments in HTML source - by default they are stripped - if you are editing email you may need this.
      */
     allowComments: false,
+    /**
+     * @cfg {boolean} enableBlocks - default true - if the block editor (table and figure should be enabled)
+     */
+    enableBlocks : true,
+    
+    /**
+     * @cfg {boolean} autoClean - default true - loading and saving will remove quite a bit of formating,
+     *         if you are doing an email editor, this probably needs disabling, it's designed
+     */
+    autoClean: true,
+    /**
+     * @cfg {string} bodyCls default '' default classes to add to body of editable area - usually undoreset is a good start..
+     */
+    bodyCls : '',
+    /**
+     * @cfg {String} language default en - language of text (usefull for rtl languages)
+     * 
+     */
+    language: 'en',
     
+     
     // id of frame..
     frameId: false,
     
@@ -195,7 +215,13 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
             * Fires when press the Sytlesheets button
             * @param {Roo.HtmlEditorCore} this
             */
-            stylesheetsclick: true
+            stylesheetsclick: true,
+            /**
+            * @event paste
+            * Fires when press user pastes into the editor
+            * @param {Roo.HtmlEditorCore} this
+            */
+            paste: true 
         });
         this.defaultAutoCreate =  {
             tag: "textarea",
@@ -226,8 +252,19 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
          
         
     },
-
-     
+    /**
+     * get the Context selected node
+     * @returns {DomElement|boolean} selected node if active or false if none
+     * 
+     */
+    getSelectedNode : function()
+    {
+        if (this.toolbars.length < 2 || !this.toolbars[1].tb) {
+            return false;
+        }
+        return this.toolbars[1].tb.selectedNode;
+    
+    },
     // private
     onRender : function(ct, position)
     {
@@ -448,6 +485,8 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
             this.el.removeClass('x-hidden');
             this.el.dom.removeAttribute('tabIndex');
             this.el.focus();
+            this.el.dom.scrollTop = 0;
+            
             
             for (var i = 0; i < this.toolbars.length; i++) {
                 if(this.toolbars[i] instanceof Roo.form.HtmlEditor.ToolbarContext){
@@ -515,7 +554,17 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
         this.editorcore.pushValue();
     },
 
+    /**
+     * update the language in the body - really done by core
+     * @param {String} language - eg. en / ar / zh-CN etc..
+     */
+    updateLanguage : function(lang)
+    {
+        this.language = lang;
+        this.editorcore.language = lang;
+        this.editorcore.updateLanguage();
      
+    },
     // private
     deferFocus : function(){
         this.focus.defer(10, this);
index 2684c3b..e2413dc 100644 (file)
@@ -41,189 +41,138 @@ Roo.form.HtmlEditor.ToolbarContext = function(config)
  
 
 Roo.form.HtmlEditor.ToolbarContext.types = {
-    'IMG' : {
-        width : {
+    'IMG' : [
+        {
+            name : 'width',
             title: "Width",
             width: 40
         },
-        height:  {
+        {
+            name : 'height',
             title: "Height",
             width: 40
         },
-        align: {
+        {
+            name : 'align',
             title: "Align",
             opts : [ [""],[ "left"],[ "right"],[ "center"],[ "top"]],
             width : 80
             
         },
-        border: {
+        {
+            name : 'border',
             title: "Border",
             width: 40
         },
-        alt: {
+        {
+            name : 'alt',
             title: "Alt",
             width: 120
         },
-        src : {
+        {
+            name : 'src',
             title: "Src",
             width: 220
         }
         
-    },
-    'A' : {
-        name : {
+    ],
+    
+    'FIGURE' : [
+        {
+            name : 'align',
+            title: "Align",
+            opts : [ [""],[ "left"],[ "right"],[ "center"],[ "top"]],
+            width : 80  
+        }
+    ],
+    'A' : [
+        {
+            name : 'name',
             title: "Name",
             width: 50
         },
-        target:  {
+        {
+            name : 'target',
             title: "Target",
             width: 120
         },
-        href:  {
+        {
+            name : 'href',
             title: "Href",
             width: 220
         } // border?
         
-    },
-    'TABLE' : {
-        rows : {
-            title: "Rows",
-            width: 20
-        },
-        cols : {
-            title: "Cols",
-            width: 20
-        },
-        width : {
-            title: "Width",
-            width: 40
-        },
-        height : {
-            title: "Height",
-            width: 40
-        },
-        border : {
-            title: "Border",
-            width: 20
-        }
-    },
-    'TD' : {
-        width : {
-            title: "Width",
-            width: 40
-        },
-        height : {
-            title: "Height",
-            width: 40
-        },   
-        align: {
-            title: "Align",
-            opts : [[""],[ "left"],[ "center"],[ "right"],[ "justify"],[ "char"]],
-            width: 80
-        },
-        valign: {
-            title: "Valign",
-            opts : [[""],[ "top"],[ "middle"],[ "bottom"],[ "baseline"]],
-            width: 80
-        },
-        colspan: {
-            title: "Colspan",
-            width: 20
-            
-        },
-         'font-family'  : {
-            title : "Font",
-            style : 'fontFamily',
-            displayField: 'display',
-            optname : 'font-family',
-            width: 140
-        }
-    },
-    'INPUT' : {
-        name : {
+    ],
+    
+    'INPUT' : [
+        {
+            name : 'name',
             title: "name",
             width: 120
         },
-        value : {
+        {
+            name : 'value',
             title: "Value",
             width: 120
         },
-        width : {
+        {
+            name : 'width',
             title: "Width",
             width: 40
         }
-    },
-    'LABEL' : {
-        'for' : {
+    ],
+    'LABEL' : [
+         {
+            name : 'for',
             title: "For",
             width: 120
         }
-    },
-    'TEXTAREA' : {
-          name : {
+    ],
+    'TEXTAREA' : [
+        {
+            name : 'name',
             title: "name",
             width: 120
         },
-        rows : {
+        {
+            name : 'rows',
             title: "Rows",
             width: 20
         },
-        cols : {
+        {
+            name : 'cols',
             title: "Cols",
             width: 20
         }
-    },
-    'SELECT' : {
-        name : {
+    ],
+    'SELECT' : [
+        {
+            name : 'name',
             title: "name",
             width: 120
         },
-        selectoptions : {
+        {
+            name : 'selectoptions',
             title: "Options",
             width: 200
         }
-    },
+    ],
     
     // should we really allow this??
     // should this just be 
-    'BODY' : {
-        title : {
+    'BODY' : [
+        
+        {
+            name : 'title',
             title: "Title",
             width: 200,
             disabled : true
         }
-    },
-    'SPAN' : {
-        'font-family'  : {
-            title : "Font",
-            style : 'fontFamily',
-            displayField: 'display',
-            optname : 'font-family',
-            width: 140
-        }
-    },
-    'DIV' : {
-        'font-family'  : {
-            title : "Font",
-            style : 'fontFamily',
-            displayField: 'display',
-            optname : 'font-family',
-            width: 140
-        }
-    },
-     'P' : {
-        'font-family'  : {
-            title : "Font",
-            style : 'fontFamily',
-            displayField: 'display',
-            optname : 'font-family',
-            width: 140
-        }
-    },
-    
-    '*' : {
-        // empty..
-    }
+    ],
+    '*' : [
+        // empty.
+    ]
 
 };
 
@@ -309,9 +258,9 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         // disable everything...
         var ty= Roo.form.HtmlEditor.ToolbarContext.types;
         this.toolbars = {};
-           
+        // block toolbars are built in updateToolbar when needed.
         for (var i in  ty) {
-          
+            
             this.toolbars[i] = this.buildToolbar(ty[i],i);
         }
         this.tb = this.toolbars.BODY;
@@ -338,8 +287,13 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
      *
      * Note you can force an update by calling on('editorevent', scope, false)
      */
-    updateToolbar: function(editor,ev,sel){
-
+    updateToolbar: function(editor ,ev, sel)
+    {
+        
+        if (ev) {
+            ev.stopEvent(); // se if we can stop this looping with mutiple events.
+        }
+        
         //Roo.log(ev);
         // capture mouse up - this is handy for selecting images..
         // perhaps should go somewhere else...
@@ -347,38 +301,40 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
              this.editor.onFirstFocus();
             return;
         }
-        
+        //Roo.log(ev ? ev.target : 'NOTARGET');
         
         
         // http://developer.yahoo.com/yui/docs/simple-editor.js.html
         // selectNode - might want to handle IE?
+        
+        
+        
         if (ev &&
             (ev.type == 'mouseup' || ev.type == 'click' ) &&
-            ev.target && ev.target.tagName == 'IMG') {
+            ev.target && ev.target.tagName != 'BODY' ) { // && ev.target.tagName == 'IMG') {
             // they have click on an image...
             // let's see if we can change the selection...
             sel = ev.target;
-         
-              var nodeRange = sel.ownerDocument.createRange();
-            try {
-                nodeRange.selectNode(sel);
-            } catch (e) {
-                nodeRange.selectNodeContents(sel);
-            }
-            //nodeRange.collapse(true);
-            var s = this.editorcore.win.getSelection();
-            s.removeAllRanges();
-            s.addRange(nodeRange);
-        }  
+            
+            // this triggers looping?
+            //this.editorcore.selectNode(sel);
+             
+        }
         
+        // this forces an id..
+        Array.from(this.editorcore.doc.body.querySelectorAll('.roo-ed-selection')).forEach(function(e) {
+             e.classList.remove('roo-ed-selection');
+        });
+        //Roo.select('.roo-ed-selection', false, this.editorcore.doc).removeClass('roo-ed-selection');
+        //Roo.get(node).addClass('roo-ed-selection');
       
-        var updateFooter = sel ? false : true;
+        //var updateFooter = sel ? false : true; 
         
         
         var ans = this.editorcore.getAllAncestors();
         
         // pick
-        var ty= Roo.form.HtmlEditor.ToolbarContext.types;
+        var ty = Roo.form.HtmlEditor.ToolbarContext.types;
         
         if (!sel) { 
             sel = ans.length ? (ans[0] ?  ans[0]  : ans[1]) : this.editorcore.doc.body;
@@ -386,86 +342,145 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
             sel = sel.tagName.length ? sel : this.editorcore.doc.body;
             
         }
-        // pick a menu that exists..
-        var tn = sel.tagName.toUpperCase();
-        //sel = typeof(ty[tn]) != 'undefined' ? sel : this.editor.doc.body;
-        
-        tn = sel.tagName.toUpperCase();
         
+        var tn = sel.tagName.toUpperCase();
         var lastSel = this.tb.selectedNode;
-        
         this.tb.selectedNode = sel;
+        var left_label = tn;
         
-        // if current menu does not match..
+        // ok see if we are editing a block?
         
-        if ((this.tb.name != tn) || (lastSel != this.tb.selectedNode) || ev === false) {
-                
-            this.tb.el.hide();
-            ///console.log("show: " + tn);
-            this.tb =  typeof(ty[tn]) != 'undefined' ? this.toolbars[tn] : this.toolbars['*'];
-            this.tb.el.show();
-            // update name
-            this.tb.items.first().el.innerHTML = tn + ':&nbsp;';
-            
+        var db = false;
+        // you are not actually selecting the block.
+        if (sel && sel.hasAttribute('data-block')) {
+            db = sel;
+        } else if (sel && sel.closest('[data-block]')) {
             
-            // update attributes
-            if (this.tb.fields) {
-                this.tb.fields.each(function(e) {
-                    if (e.stylename) {
-                        e.setValue(sel.style[e.stylename]);
-                        return;
-                    } 
-                   e.setValue(sel.getAttribute(e.attrname));
-                });
-            }
+            db = sel.closest('[data-block]');
+            //var cepar = sel.closest('[contenteditable=true]');
+            //if (db && cepar && cepar.tagName != 'BODY') {
+            //   db = false; // we are inside an editable block.. = not sure how we are going to handle nested blocks!?
+            //}   
+        }
+        
+        
+        var block = false;
+        //if (db && !sel.hasAttribute('contenteditable') && sel.getAttribute('contenteditable') != 'true' ) {
+        if (db && this.editorcore.enableBlocks) {
+            block = Roo.htmleditor.Block.factory(db);
             
-            var hasStyles = false;
-            for(var i in this.styles) {
-                hasStyles = true;
-                break;
-            }
             
-            // update styles
-            if (hasStyles) { 
-                var st = this.tb.fields.item(0);
-                
-                st.store.removeAll();
-               
-                
-                var cn = sel.className.split(/\s+/);
+            if (block) {
+                 db.className = (
+                        db.classList.length > 0  ? db.className + ' ' : ''
+                    )  + 'roo-ed-selection';
+                 
+                 // since we removed it earlier... its not there..
+                tn = 'BLOCK.' + db.getAttribute('data-block');
                 
-                var avs = [];
-                if (this.styles['*']) {
-                    
-                    Roo.each(this.styles['*'], function(v) {
-                        avs.push( [ v , cn.indexOf(v) > -1 ? 1 : 0 ] );         
-                    });
+                //this.editorcore.selectNode(db);
+                if (typeof(this.toolbars[tn]) == 'undefined') {
+                   this.toolbars[tn] = this.buildToolbar( false  ,tn ,block.friendly_name, block);
                 }
-                if (this.styles[tn]) { 
-                    Roo.each(this.styles[tn], function(v) {
-                        avs.push( [ v , cn.indexOf(v) > -1 ? 1 : 0 ] );         
-                    });
-                }
-                
-                st.store.loadData(avs);
-                st.collapse();
-                st.setValue(cn);
+                this.toolbars[tn].selectedNode = db;
+                left_label = block.friendly_name;
+                ans = this.editorcore.getAllAncestors();
             }
-            // flag our selected Node.
-            this.tb.selectedNode = sel;
-           
-           
-            Roo.menu.MenuMgr.hideAll();
-
+            
+                
+            
         }
         
-        if (!updateFooter) {
-            //this.footDisp.dom.innerHTML = ''; 
-            return;
+        
+        if (this.tb.name == tn && lastSel == this.tb.selectedNode && ev !== false) {
+            return; // no change?
         }
+        
+        
+          
+        this.tb.el.hide();
+        ///console.log("show: " + tn);
+        this.tb =  typeof(this.toolbars[tn]) != 'undefined' ? this.toolbars[tn] : this.toolbars['*'];
+        
+        this.tb.el.show();
+        // update name
+        this.tb.items.first().el.innerHTML = left_label + ':&nbsp;';
+        
+        
+        // update attributes
+        if (block && this.tb.fields) {
+             
+            this.tb.fields.each(function(e) {
+                e.setValue(block[e.name]);
+            });
+            
+            
+        } else  if (this.tb.fields && this.tb.selectedNode) {
+            this.tb.fields.each( function(e) {
+                if (e.stylename) {
+                    e.setValue(this.tb.selectedNode.style[e.stylename]);
+                    return;
+                } 
+                e.setValue(this.tb.selectedNode.getAttribute(e.attrname));
+            }, this);
+            this.updateToolbarStyles(this.tb.selectedNode);  
+        }
+        
+        
+       
+        Roo.menu.MenuMgr.hideAll();
+
+        
+        
+    
         // update the footer
         //
+        this.updateFooter(ans);
+             
+    },
+    
+    updateToolbarStyles : function(sel)
+    {
+        var hasStyles = false;
+        for(var i in this.styles) {
+            hasStyles = true;
+            break;
+        }
+        
+        // update styles
+        if (hasStyles && this.tb.hasStyles) { 
+            var st = this.tb.fields.item(0);
+            
+            st.store.removeAll();
+            var cn = sel.className.split(/\s+/);
+            
+            var avs = [];
+            if (this.styles['*']) {
+                
+                Roo.each(this.styles['*'], function(v) {
+                    avs.push( [ v , cn.indexOf(v) > -1 ? 1 : 0 ] );         
+                });
+            }
+            if (this.styles[tn]) { 
+                Roo.each(this.styles[tn], function(v) {
+                    avs.push( [ v , cn.indexOf(v) > -1 ? 1 : 0 ] );         
+                });
+            }
+            
+            st.store.loadData(avs);
+            st.collapse();
+            st.setValue(cn);
+        }
+    },
+    
+     
+    updateFooter : function(ans)
+    {
         var html = '';
+        if (ans === false) {
+            this.footDisp.dom.innerHTML = '';
+            return;
+        }
         
         this.footerEls = ans.reverse();
         Roo.each(this.footerEls, function(a,i) {
@@ -485,10 +500,8 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         
         this.footDisp.dom.innerHTML = html;
             
-        //this.editorsyncValue();
+        
     },
-     
-    
    
        
     // private
@@ -513,7 +526,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
            item.enable();
         });
     },
-    buildToolbar: function(tlist, nm)
+    buildToolbar: function(tlist, nm, friendly_name, block)
     {
         var editor = this.editor;
         var editorcore = this.editorcore;
@@ -524,18 +537,22 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         
        
         var tb = new Roo.Toolbar(wdiv);
-        // add the name..
+        ///this.tb = tb; // << this sets the active toolbar..
+        if (tlist === false && block) {
+            tlist = block.contextMenu(this);
+        }
         
-        tb.add(nm+ ":&nbsp;");
+        tb.hasStyles = false;
+        tb.name = nm;
+        
+        tb.add((typeof(friendly_name) == 'undefined' ? nm : friendly_name) + ":&nbsp;");
+        
+        var styles = Array.from(this.styles);
         
-        var styles = [];
-        for(var i in this.styles) {
-            styles.push(i);
-        }
         
         // styles...
         if (styles && styles.length) {
-            
+            tb.hasStyles = true;
             // this needs a multi-select checkbox...
             tb.addField( new Roo.form.ComboBox({
                 store: new Roo.data.SimpleStore({
@@ -565,9 +582,18 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         }
         
         var tbc = Roo.form.HtmlEditor.ToolbarContext;
-        var tbops = tbc.options;
         
-        for (var i in tlist) {
+        
+        for (var i = 0; i < tlist.length; i++) {
+            
+            // newer versions will use xtype cfg to create menus.
+            if (typeof(tlist[i].xtype) != 'undefined') {
+                
+                tb[typeof(tlist[i].name)== 'undefined' ? 'add' : 'addField'](Roo.factory(tlist[i]));
+                
+                
+                continue;
+            }
             
             var item = tlist[i];
             tb.add(item.title + ":&nbsp;");
@@ -575,8 +601,8 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
             
             //optname == used so you can configure the options available..
             var opts = item.opts ? item.opts : false;
-            if (item.optname) {
-                opts = tbops[item.optname];
+            if (item.optname) { // use the b
+                opts = Roo.form.HtmlEditor.ToolbarContext.options[item.optname];
            
             }
             
@@ -588,13 +614,15 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
                         fields: ['val', 'display'],
                         data : opts  
                     }),
-                    name : '-roo-edit-' + i,
-                    attrname : i,
+                    name : '-roo-edit-' + tlist[i].name,
+                    
+                    attrname : tlist[i].name,
                     stylename : item.style ? item.style : false,
+                    
                     displayField: item.displayField ? item.displayField : 'val',
                     valueField :  'val',
                     typeAhead: false,
-                    mode: typeof(tbc.stores[i]) != 'undefined'  ? 'remote' : 'local',
+                    mode: typeof(tbc.stores[tlist[i].name]) != 'undefined'  ? 'remote' : 'local',
                     editable : false,
                     triggerAction: 'all',
                     emptyText:'Select',
@@ -602,11 +630,20 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
                     width: item.width ? item.width  : 130,
                     listeners : {
                         'select': function(c, r, i) {
+                             
+                            
                             if (c.stylename) {
                                 tb.selectedNode.style[c.stylename] =  r.get('val');
+                                editorcore.syncValue();
+                                return;
+                            }
+                            if (r === false) {
+                                tb.selectedNode.removeAttribute(c.attrname);
+                                editorcore.syncValue();
                                 return;
                             }
                             tb.selectedNode.setAttribute(c.attrname, r.get('val'));
+                            editorcore.syncValue();
                         }
                     }
 
@@ -614,7 +651,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
                 continue;
                     
                  
-                
+                /*
                 tb.addField( new Roo.form.TextField({
                     name: i,
                     width: 100,
@@ -622,16 +659,19 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
                     value: ''
                 }));
                 continue;
+                */
             }
             tb.addField( new Roo.form.TextField({
-                name: '-roo-edit-' + i,
-                attrname : i,
+                name: '-roo-edit-' + tlist[i].name,
+                attrname : tlist[i].name,
                 
                 width: item.width,
                 //allowBlank:true,
                 value: '',
                 listeners: {
                     'change' : function(f, nv, ov) {
+                        
+                         
                         tb.selectedNode.setAttribute(f.attrname, nv);
                         editorcore.syncValue();
                     }
@@ -641,8 +681,9 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         }
         
         var _this = this;
-        
+        var show_delete = !block || block.deleteTitle !== false;
         if(nm == 'BODY'){
+            show_delete = false;
             tb.addSeparator();
         
             tb.addButton( {
@@ -658,60 +699,61 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         }
         
         tb.addFill();
-        tb.addButton( {
-            text: 'Remove Tag',
-    
-            listeners : {
-                click : function ()
-                {
-                    // remove
-                    // undo does not work.
-                     
-                    var sn = tb.selectedNode;
-                    
-                    var pn = sn.parentNode;
-                    
-                    var stn =  sn.childNodes[0];
-                    var en = sn.childNodes[sn.childNodes.length - 1 ];
-                    while (sn.childNodes.length) {
-                        var node = sn.childNodes[0];
-                        sn.removeChild(node);
-                        //Roo.log(node);
-                        pn.insertBefore(node, sn);
+        if (show_delete) {
+            tb.addButton({
+                text: block && block.deleteTitle ? block.deleteTitle  : 'Remove Block or Formating', // remove the tag, and puts the children outside...
+        
+                listeners : {
+                    click : function ()
+                    {
+                        var sn = tb.selectedNode;
+                        if (block) {
+                            sn = Roo.htmleditor.Block.factory(tb.selectedNode).removeNode();
+                            
+                        }
+                        if (!sn) {
+                            return;
+                        }
+                        var stn =  sn.childNodes[0] || sn.nextSibling || sn.previousSibling || sn.parentNode;
+                        if (sn.hasAttribute('data-block')) {
+                            stn =  sn.nextSibling || sn.previousSibling || sn.parentNode;
+                            sn.parentNode.removeChild(sn);
+                            
+                        } else if (sn && sn.tagName != 'BODY') {
+                            // remove and keep parents.
+                            a = new Roo.htmleditor.FilterKeepChildren({tag : false});
+                            a.replaceTag(sn);
+                        }
+                        
+                        
+                        var range = editorcore.createRange();
+            
+                        range.setStart(stn,0);
+                        range.setEnd(stn,0); 
+                        var selection = editorcore.getSelection();
+                        selection.removeAllRanges();
+                        selection.addRange(range);
+                        
+                        
+                        //_this.updateToolbar(null, null, pn);
+                        _this.updateToolbar(null, null, null);
+                        _this.updateFooter(false);
                         
                     }
-                    pn.removeChild(sn);
-                    var range = editorcore.createRange();
-        
-                    range.setStart(stn,0);
-                    range.setEnd(en,0); //????
-                    //range.selectNode(sel);
-                    
-                    
-                    var selection = editorcore.getSelection();
-                    selection.removeAllRanges();
-                    selection.addRange(range);
-                    
-                    
-                    
-                    //_this.updateToolbar(null, null, pn);
-                    _this.updateToolbar(null, null, null);
-                    _this.footDisp.dom.innerHTML = ''; 
                 }
-            }
-            
+                
+                        
                     
                 
-            
-        });
-        
+            });
+        }    
         
         tb.el.on('click', function(e){
             e.preventDefault(); // what does this do?
         });
         tb.el.setVisibilityMode( Roo.Element.DISPLAY);
         tb.el.hide();
-        tb.name = nm;
+        
         // dont need to disable them... as they will get hidden
         return tb;
          
@@ -755,6 +797,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         
         
     },
+    // when the footer contect changes
     onContextClick : function (ev,dom)
     {
         ev.preventDefault();
@@ -767,17 +810,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         var ans = this.footerEls;
         var sel = ans[n];
         
-         // pick
-        var range = this.editorcore.createRange();
-        
-        range.selectNodeContents(sel);
-        //range.selectNode(sel);
-        
-        
-        var selection = this.editorcore.getSelection();
-        selection.removeAllRanges();
-        selection.addRange(range);
-        
+        this.editorcore.selectNode(sel);
         
         
         this.updateToolbar(null, null, sel);
index 00d2faa..b58a4cf 100644 (file)
@@ -1,4 +1,3 @@
-// <script type="text/javascript">
 /*
  * Based on
  * Ext JS Library 1.1.1
@@ -8,9 +7,9 @@
  */
 
 /**
- * @class Roo.form.HtmlEditorToolbar1
+ * @class Roo.form.HtmlEditor.ToolbarStandard
  * Basic Toolbar
- * 
+
  * Usage:
  *
  new Roo.form.HtmlEditor({
@@ -24,7 +23,7 @@
      
  * 
  * @cfg {Object} disable List of elements to disable..
- * @cfg {Array} btns List of additional buttons.
+ * @cfg {Roo.Toolbar.Item|Roo.Toolbar.Button|Roo.Toolbar.SplitButton|Roo.form.Field} btns[] List of additional buttons.
  * 
  * 
  * NEEDS Extra CSS? 
@@ -49,7 +48,7 @@ Roo.form.HtmlEditor.ToolbarStandard = function(config)
     // dont call parent... till later.
 }
 
-Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
+Roo.form.HtmlEditor.ToolbarStandard.prototype = {
     
     tb: false,
     
@@ -395,7 +394,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
                     tabIndex:-1
                 });
             }
-             cmenu.menu.items.push({
+            cmenu.menu.items.push({
                 actiontype : 'tablewidths',
                 html: 'Remove Table Widths',
                 handler: function(a,b) {
@@ -447,7 +446,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
                 actiontype : 'tidy',
                 html: 'Tidy HTML Source',
                 handler: function(a,b) {
-                    editorcore.doc.body.innerHTML = editorcore.domToHTML();
+                    new Roo.htmleditor.Tidy(editorcore.doc.body);
                     editorcore.syncValue();
                 },
                 tabIndex:-1
@@ -484,7 +483,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
         
         if (this.btns) {
             for(var i =0; i< this.btns.length;i++) {
-                var b = Roo.factory(this.btns[i],Roo.form);
+                var b = Roo.factory(this.btns[i],this.btns[i].xns || Roo.form);
                 b.cls =  'x-edit-none';
                 
                 if(typeof(this.btns[i].cls) != 'undefined' && this.btns[i].cls.indexOf('x-init-enable') !== -1){
@@ -525,11 +524,45 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
     },
     // private used internally
     createLink : function(){
-        Roo.log("create link?");
-        var url = prompt(this.createLinkText, this.defaultLinkValue);
-        if(url && url != 'http:/'+'/'){
-            this.editorcore.relayCmd('createlink', url);
+        //Roo.log("create link?");
+        var ec = this.editorcore;
+        var ar = ec.getAllAncestors();
+        var n = false;
+        for(var i = 0;i< ar.length;i++) {
+            if (ar[i] && ar[i].nodeName == 'A') {
+                n = ar[i];
+                break;
+            }
         }
+        
+        (function() {
+            
+            Roo.MessageBox.show({
+                title : "Add / Edit Link URL",
+                msg : "Enter the url for the link",
+                buttons: Roo.MessageBox.OKCANCEL,
+                fn: function(btn, url){
+                    if (btn != 'ok') {
+                        return;
+                    }
+                    if(url && url != 'http:/'+'/'){
+                        if (n) {
+                            n.setAttribute('href', url);
+                        } else {
+                            ec.relayCmd('createlink', url);
+                        }
+                    }
+                },
+                minWidth:250,
+                prompt:true,
+                //multiline: multiline,
+                modal : true,
+                value :  n  ? n.getAttribute('href') : '' 
+            });
+            
+             
+        }).defer(100, this); // we have to defer this , otherwise the mouse click gives focus to the main window.
+        
     },
 
     
@@ -642,6 +675,11 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
                 this.tb.items.each(function(item){
                     item.enable();
                 });
+                // initialize 'blocks'
+                Roo.each(Roo.get(this.editorcore.doc.body).query('*[data-block]'), function(e) {
+                    Roo.htmleditor.Block.factory(e).updateElement(e);
+                },this);
+            
             }
             
         }
@@ -768,7 +806,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
            item.enable();
         });
     }
-});
+};
 
 
 
index a917b7e..bea1524 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @class Roo.form.Layout
  * @extends Roo.Component
- * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem
+ * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem Roo.form.FieldSet
  * Creates a container for layout and rendering of fields in an {@link Roo.form.Form}.
  * @constructor
  * @param {Object} config Configuration options
@@ -163,6 +163,7 @@ Roo.extend(Roo.form.Layout, Roo.Component, {
 /**
  * @class Roo.form.Column
  * @extends Roo.form.Layout
+ * @children Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem Roo.form.FieldSet
  * Creates a column container for layout and rendering of fields in an {@link Roo.form.Form}.
  * @constructor
  * @param {Object} config Configuration options
@@ -197,7 +198,7 @@ Roo.extend(Roo.form.Column, Roo.form.Layout, {
 /**
  * @class Roo.form.Row
  * @extends Roo.form.Layout
- * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem
+ * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem Roo.form.FieldSet
  * Creates a row container for layout and rendering of fields in an {@link Roo.form.Form}.
  * @constructor
  * @param {Object} config Configuration options
index a4e9fc1..b7488a6 100644 (file)
@@ -438,8 +438,10 @@ Roo.extend(Roo.grid.Grid, Roo.util.Observable, {
     * @cfg {Roo.dd.DropTarget} dropTarget An {@link Roo.dd.DropTarget} config
     */
     dropTarget: false,
-    
-   
+     /**
+    * @cfg {boolean} sortColMenu Sort the column order menu when it shows (usefull for long lists..) default false
+    */ 
+    sortColMenu : false,
     
     // private
     rendered : false,
index 20e4d3a..dd5c895 100644 (file)
@@ -1390,13 +1390,28 @@ Roo.extend(Roo.grid.GridView, Roo.grid.AbstractGridView, {
     beforeColMenuShow : function(){
         var cm = this.cm,  colCount = cm.getColumnCount();
         this.colMenu.removeAll();
+        
+        var items = [];
         for(var i = 0; i < colCount; i++){
-            this.colMenu.add(new Roo.menu.CheckItem({
+            items.push({
                 id: "col-"+cm.getColumnId(i),
                 text: cm.getColumnHeader(i),
                 checked: !cm.isHidden(i),
                 hideOnClick:false
-            }));
+            });
+        }
+        
+        if (this.grid.sortColMenu) {
+            items.sort(function(a,b) {
+                if (a.text == b.text) {
+                    return 0;
+                }
+                return a.text.toUpperCase() > b.text.toUpperCase() ? 1 : -1;
+            });
+        }
+        
+        for(var i = 0; i < colCount; i++){
+            this.colMenu.add(new Roo.menu.CheckItem(items[i]));
         }
     },
 
index df93aa9..623eda2 100644 (file)
@@ -35,7 +35,7 @@ Roo.extend(Roo.menu.Item, Roo.menu.BaseItem, {
      */
     text: '',
      /**
-     * @cfg {String} HTML to render in menu
+     * @cfg {String} html to render in menu
      * The text to show on the menu item (HTML version).
      */
     html: '',
index e2f2bab..0888ad2 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @class Roo.menu.Menu
  * @extends Roo.util.Observable
- * @children Roo.menu.BaseItem
+ * @children Roo.menu.Item Roo.menu.Separator Roo.menu.TextItem
  * A menu object.  This is the container to which you add all other menu items.  Menu can also serve a as a base class
  * when you want a specialzed menu based off of another component (like {@link Roo.menu.DateMenu} for example).
  * @constructor
index f5a603e..5096998 100644 (file)
--- a/String.js
+++ b/String.js
@@ -114,3 +114,13 @@ String.prototype.unicodeClean = function () {
     );
 };
   
+
+/**
+  * Make the first letter of a string uppercase
+  *
+  * @return {String} The new string.
+  */
+String.prototype.toUpperCaseFirst = function () {
+    return this.charAt(0).toUpperCase() + this.slice(1);
+};  
+  
index df1de5c..b35527b 100644 (file)
@@ -32,5 +32,9 @@ roojspacker -i buildSDK/dependancy_core.txt  -i buildSDK/dependancy_ui.txt  \
     -i buildSDK/dependancy_svg.txt \
    --doc-target=docs -D
 
+#build old ROOJS css 
+seed buildSDK/cssmini.js 
+
+
 # SCSS (really uses the C scss)
 php buildSDK/scss-bootstrap.php
\ No newline at end of file
index f3bb951..4966679 100644 (file)
@@ -1,5 +1,6 @@
 
 
+Roo.bootstrap.namespace
 
 Roo.bootstrap.version
 Roo.bootstrap.menu.namespace
@@ -126,6 +127,26 @@ Roo.bootstrap.form.CheckBox
 Roo.bootstrap.form.Radio
 Roo.bootstrap.form.SecurePass
 
+Roo.htmleditor.namespace
+Roo.htmleditor.Filter
+Roo.htmleditor.FilterAttributes
+Roo.htmleditor.FilterBlack
+Roo.htmleditor.FilterComment
+Roo.htmleditor.FilterKeepChildren
+Roo.htmleditor.FilterParagraph
+Roo.htmleditor.FilterSpan
+Roo.htmleditor.FilterTableWidth
+Roo.htmleditor.FilterWord
+Roo.htmleditor.FilterStyleToTag
+Roo.htmleditor.FilterLongBr
+Roo.htmleditor.FilterBlock
+Roo.htmleditor.KeyEnter
+
+Roo.htmleditor.Block
+Roo.htmleditor.BlockFigure
+Roo.htmleditor.BlockTable
+Roo.htmleditor.BlockTd
+
 Roo.HtmlEditorCore
 Roo.bootstrap.form.HtmlEditor
 Roo.bootstrap.form.HtmlEditorToolbarStandard
@@ -139,6 +160,8 @@ Roo.bootstrap.PagingToolbar
 Roo.bootstrap.MessageBar
 
 Roo.bootstrap.Graph
+Roo.bootstrap.dash.namespace
+
 Roo.bootstrap.dash.NumberBox
 Roo.bootstrap.dash.TabBox
 Roo.bootstrap.dash.TabPane
index 3ec724a..1f805bc 100644 (file)
@@ -28,7 +28,9 @@ Roo.lib.ColorAnim
 Roo.lib.Easing
 Roo.lib.Motion
 Roo.lib.Scroll
-
+Roo.lib.UndoManager
+Roo.lib.Range
+Roo.lib.Selection
 // --- end if base ---
 
 
index 55305d0..1a1846f 100644 (file)
@@ -94,6 +94,39 @@ Roo.form.ComboBoxArray
 Roo.form.ComboNested
 Roo.form.Checkbox
 Roo.form.Radio
+
+Roo.rtf.namespace
+Roo.rtf.Hex
+Roo.rtf.Paragraph
+Roo.rtf.Span
+Roo.rtf.Group
+Roo.rtf.Document
+Roo.rtf.Ctrl
+Roo.rtf.Parser
+
+Roo.htmleditor.namespace
+Roo.htmleditor.Filter
+Roo.htmleditor.FilterAttributes
+Roo.htmleditor.FilterBlack
+Roo.htmleditor.FilterComment
+Roo.htmleditor.FilterKeepChildren
+Roo.htmleditor.FilterParagraph
+Roo.htmleditor.FilterSpan
+Roo.htmleditor.FilterTableWidth
+Roo.htmleditor.FilterWord
+Roo.htmleditor.FilterStyleToTag
+Roo.htmleditor.FilterLongBr
+Roo.htmleditor.FilterBlock
+Roo.htmleditor.TidySerializer
+Roo.htmleditor.TidyWriter
+Roo.htmleditor.TidyEntities
+Roo.htmleditor.KeyEnter
+
+Roo.htmleditor.Block
+Roo.htmleditor.BlockFigure
+Roo.htmleditor.BlockTable
+Roo.htmleditor.BlockTd
+
 Roo.HtmlEditorCore
 Roo.form.HtmlEditor
 Roo.form.HtmlEditor.ToolbarStandard
@@ -123,6 +156,11 @@ Roo.SplitLayoutRegion
 Roo.CenterLayoutRegion
 Roo.LayoutStateManager
 Roo.ContentPanel
+Roo.GridPanel
+Roo.NestedLayoutPanel
+Roo.ScrollPanel
+Roo.TreePanel
+
 //             *** Can be Optional *** - only if you use it..
 Roo.ReaderLayout
 
index b110e78..7209e42 100644 (file)
@@ -2,7 +2,7 @@
        "version": 3,
        "file": "bootstrap.css",
        "sources": [
-               "../../../../../tmp/scss61Ld1C",
+               "../../../../../tmp/scssAkR73n",
                "../scss/bootstrap/bootstrap.scss",
                "../scss/bootstrap/_functions.scss",
                "../scss/bootstrap/_variables.scss",
index 68871b6..92410c7 100644 (file)
@@ -2,7 +2,7 @@
        "version": 3,
        "file": "bootstrap.min.css",
        "sources": [
-               "../../../../../tmp/scss61Ld1C",
+               "../../../../../tmp/scssAkR73n",
                "../scss/bootstrap/bootstrap.scss",
                "../scss/bootstrap/_functions.scss",
                "../scss/bootstrap/_variables.scss",
index 7ec94b4..3272e4e 100644 (file)
@@ -2,7 +2,7 @@
        "version": 3,
        "file": "roojs-bootstrap-debug.css",
        "sources": [
-               "../../../../../tmp/scssm9WH5F",
+               "../../../../../tmp/scss8LzQ5T",
                "../scss/bootstrap/_functions.scss",
                "../scss/bootstrap/_variables.scss",
                "../scss/roojs-bootstrap/roojs-bootstrap.scss",
index 6e18ebd..b196af4 100644 (file)
@@ -2,7 +2,7 @@
        "version": 3,
        "file": "roojs-bootstrap.css",
        "sources": [
-               "../../../../../tmp/scssm9WH5F",
+               "../../../../../tmp/scss8LzQ5T",
                "../scss/bootstrap/_functions.scss",
                "../scss/bootstrap/_variables.scss",
                "../scss/roojs-bootstrap/roojs-bootstrap.scss",
index 2860f8b..072db07 100644 (file)
@@ -7995,47 +7995,47 @@ form.user .btn-user {
 
 @keyframes noise-anim {
   0% {
-    clip: rect(86px, 9999px, 67px, 0); }
+    clip: rect(81px, 9999px, 57px, 0); }
   5% {
-    clip: rect(53px, 9999px, 12px, 0); }
+    clip: rect(44px, 9999px, 23px, 0); }
   10% {
-    clip: rect(97px, 9999px, 12px, 0); }
+    clip: rect(36px, 9999px, 5px, 0); }
   15% {
-    clip: rect(16px, 9999px, 22px, 0); }
+    clip: rect(57px, 9999px, 20px, 0); }
   20% {
-    clip: rect(62px, 9999px, 48px, 0); }
+    clip: rect(28px, 9999px, 77px, 0); }
   25% {
-    clip: rect(28px, 9999px, 37px, 0); }
+    clip: rect(17px, 9999px, 24px, 0); }
   30% {
-    clip: rect(78px, 9999px, 96px, 0); }
+    clip: rect(92px, 9999px, 10px, 0); }
   35% {
-    clip: rect(50px, 9999px, 47px, 0); }
+    clip: rect(100px, 9999px, 74px, 0); }
   40% {
-    clip: rect(53px, 9999px, 79px, 0); }
+    clip: rect(63px, 9999px, 69px, 0); }
   45% {
-    clip: rect(92px, 9999px, 20px, 0); }
+    clip: rect(96px, 9999px, 47px, 0); }
   50% {
-    clip: rect(99px, 9999px, 20px, 0); }
+    clip: rect(78px, 9999px, 94px, 0); }
   55% {
-    clip: rect(49px, 9999px, 23px, 0); }
+    clip: rect(88px, 9999px, 92px, 0); }
   60% {
-    clip: rect(98px, 9999px, 20px, 0); }
+    clip: rect(80px, 9999px, 36px, 0); }
   65% {
-    clip: rect(78px, 9999px, 22px, 0); }
+    clip: rect(47px, 9999px, 15px, 0); }
   70% {
-    clip: rect(36px, 9999px, 45px, 0); }
+    clip: rect(59px, 9999px, 44px, 0); }
   75% {
-    clip: rect(99px, 9999px, 3px, 0); }
+    clip: rect(13px, 9999px, 56px, 0); }
   80% {
-    clip: rect(67px, 9999px, 100px, 0); }
+    clip: rect(28px, 9999px, 44px, 0); }
   85% {
-    clip: rect(3px, 9999px, 80px, 0); }
+    clip: rect(91px, 9999px, 14px, 0); }
   90% {
-    clip: rect(24px, 9999px, 82px, 0); }
+    clip: rect(48px, 9999px, 68px, 0); }
   95% {
-    clip: rect(22px, 9999px, 1px, 0); }
+    clip: rect(9px, 9999px, 94px, 0); }
   100% {
-    clip: rect(82px, 9999px, 29px, 0); } }
+    clip: rect(66px, 9999px, 61px, 0); } }
 
 .error:after {
   content: attr(data-text);
@@ -8051,47 +8051,47 @@ form.user .btn-user {
 
 @keyframes noise-anim-2 {
   0% {
-    clip: rect(28px, 9999px, 21px, 0); }
+    clip: rect(80px, 9999px, 17px, 0); }
   5% {
-    clip: rect(11px, 9999px, 1px, 0); }
+    clip: rect(2px, 9999px, 72px, 0); }
   10% {
-    clip: rect(75px, 9999px, 31px, 0); }
+    clip: rect(25px, 9999px, 80px, 0); }
   15% {
-    clip: rect(49px, 9999px, 67px, 0); }
+    clip: rect(52px, 9999px, 90px, 0); }
   20% {
-    clip: rect(72px, 9999px, 67px, 0); }
+    clip: rect(34px, 9999px, 91px, 0); }
   25% {
-    clip: rect(98px, 9999px, 9px, 0); }
+    clip: rect(7px, 9999px, 31px, 0); }
   30% {
-    clip: rect(63px, 9999px, 39px, 0); }
+    clip: rect(50px, 9999px, 58px, 0); }
   35% {
-    clip: rect(24px, 9999px, 96px, 0); }
+    clip: rect(79px, 9999px, 93px, 0); }
   40% {
-    clip: rect(35px, 9999px, 21px, 0); }
+    clip: rect(97px, 9999px, 70px, 0); }
   45% {
-    clip: rect(86px, 9999px, 65px, 0); }
+    clip: rect(45px, 9999px, 33px, 0); }
   50% {
-    clip: rect(58px, 9999px, 95px, 0); }
+    clip: rect(64px, 9999px, 46px, 0); }
   55% {
-    clip: rect(51px, 9999px, 78px, 0); }
+    clip: rect(96px, 9999px, 46px, 0); }
   60% {
-    clip: rect(30px, 9999px, 89px, 0); }
+    clip: rect(66px, 9999px, 1px, 0); }
   65% {
-    clip: rect(2px, 9999px, 8px, 0); }
+    clip: rect(8px, 9999px, 1px, 0); }
   70% {
-    clip: rect(69px, 9999px, 36px, 0); }
+    clip: rect(94px, 9999px, 16px, 0); }
   75% {
-    clip: rect(80px, 9999px, 46px, 0); }
+    clip: rect(72px, 9999px, 21px, 0); }
   80% {
-    clip: rect(93px, 9999px, 66px, 0); }
+    clip: rect(28px, 9999px, 29px, 0); }
   85% {
-    clip: rect(88px, 9999px, 77px, 0); }
+    clip: rect(51px, 9999px, 43px, 0); }
   90% {
-    clip: rect(61px, 9999px, 18px, 0); }
+    clip: rect(98px, 9999px, 90px, 0); }
   95% {
-    clip: rect(92px, 9999px, 40px, 0); }
+    clip: rect(25px, 9999px, 48px, 0); }
   100% {
-    clip: rect(65px, 9999px, 76px, 0); } }
+    clip: rect(50px, 9999px, 46px, 0); } }
 
 .error:before {
   content: attr(data-text);
index e715caa..b3ff45f 100644 (file)
@@ -2,7 +2,7 @@
        "version": 3,
        "file": "sb-admin-2.css",
        "sources": [
-               "../../../../../tmp/scsseOYB1j",
+               "../../../../../tmp/scssFxSFMc",
                "../scss/startbootstrap-sb-admin-2/sb-admin-2.scss",
                "../scss/startbootstrap-sb-admin-2/_variables.scss",
                "../scss/bootstrap/bootstrap.scss",
                "../scss/startbootstrap-sb-admin-2/_footer.scss"
        ],
        "names": [],
-       "mappings": "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"
+       "mappings": "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"
 }
\ No newline at end of file
index 6c7cd20..93c3066 100644 (file)
@@ -3,6 +3,6 @@
  * Copyright 2011-2020 The Bootstrap Authors
  * Copyright 2011-2020 Twitter, Inc.
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- */:root{--blue: #4e73df;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #e74a3b;--orange: #fd7e14;--yellow: #f6c23e;--green: #1cc88a;--teal: #20c9a6;--cyan: #36b9cc;--white: #fff;--gray: #858796;--gray-dark: #5a5c69;--primary: #4e73df;--secondary: #858796;--success: #1cc88a;--info: #36b9cc;--warning: #f6c23e;--danger: #e74a3b;--light: #f8f9fc;--dark: #5a5c69;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#858796;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#4e73df;text-decoration:none;background-color:transparent}a:hover{color:#224abe;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#858796;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:dotted 1px;outline:-webkit-focus-ring-color auto 5px}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role="button"]{cursor:pointer}select{word-wrap:normal}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button:not(:disabled),[type="button"]:not(:disabled),[type="reset"]:not(:disabled),[type="submit"]:not(:disabled){cursor:pointer}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-weight:400;line-height:1.2}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#858796}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dddfeb;border-radius:.35rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#858796}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#3a3b45;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#3a3b45}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-xl,.container-lg,.container-md,.container-sm{width:100%;padding-right:.75rem;padding-left:.75rem;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}.row{display:flex;flex-wrap:wrap;margin-right:-.75rem;margin-left:-.75rem}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-xl,.col-xl-auto,.col-xl-12,.col-xl-11,.col-xl-10,.col-xl-9,.col-xl-8,.col-xl-7,.col-xl-6,.col-xl-5,.col-xl-4,.col-xl-3,.col-xl-2,.col-xl-1,.col-lg,.col-lg-auto,.col-lg-12,.col-lg-11,.col-lg-10,.col-lg-9,.col-lg-8,.col-lg-7,.col-lg-6,.col-lg-5,.col-lg-4,.col-lg-3,.col-lg-2,.col-lg-1,.col-md,.col-md-auto,.col-md-12,.col-md-11,.col-md-10,.col-md-9,.col-md-8,.col-md-7,.col-md-6,.col-md-5,.col-md-4,.col-md-3,.col-md-2,.col-md-1,.col-sm,.col-sm-auto,.col-sm-12,.col-sm-11,.col-sm-10,.col-sm-9,.col-sm-8,.col-sm-7,.col-sm-6,.col-sm-5,.col-sm-4,.col-sm-3,.col-sm-2,.col-sm-1,.col,.col-auto,.col-12,.col-11,.col-10,.col-9,.col-8,.col-7,.col-6,.col-5,.col-4,.col-3,.col-2,.col-1{position:relative;width:100%;padding-right:.75rem;padding-left:.75rem}.col{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-lg-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;margin-bottom:1rem;color:#858796}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #e3e6f0}.table thead th{vertical-align:bottom;border-bottom:2px solid #e3e6f0}.table tbody+tbody{border-top:2px solid #e3e6f0}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #e3e6f0}.table-bordered th,.table-bordered td{border:1px solid #e3e6f0}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{color:#858796;background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#cdd8f6}.table-primary th,.table-primary td,.table-primary thead th,.table-primary tbody+tbody{border-color:#a3b6ee}.table-hover .table-primary:hover{background-color:#b7c7f2}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#b7c7f2}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#dddde2}.table-secondary th,.table-secondary td,.table-secondary thead th,.table-secondary tbody+tbody{border-color:#c0c1c8}.table-hover .table-secondary:hover{background-color:#cfcfd6}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#cfcfd6}.table-success,.table-success>th,.table-success>td{background-color:#bff0de}.table-success th,.table-success td,.table-success thead th,.table-success tbody+tbody{border-color:#89e2c2}.table-hover .table-success:hover{background-color:#aaebd3}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#aaebd3}.table-info,.table-info>th,.table-info>td{background-color:#c7ebf1}.table-info th,.table-info td,.table-info thead th,.table-info tbody+tbody{border-color:#96dbe4}.table-hover .table-info:hover{background-color:#b3e4ec}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#b3e4ec}.table-warning,.table-warning>th,.table-warning>td{background-color:#fceec9}.table-warning th,.table-warning td,.table-warning thead th,.table-warning tbody+tbody{border-color:#fadf9b}.table-hover .table-warning:hover{background-color:#fbe6b1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#fbe6b1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f8ccc8}.table-danger th,.table-danger td,.table-danger thead th,.table-danger tbody+tbody{border-color:#f3a199}.table-hover .table-danger:hover{background-color:#f5b7b1}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f5b7b1}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-light th,.table-light td,.table-light thead th,.table-light tbody+tbody{border-color:#fbfcfd}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#d1d1d5}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:#a9aab1}.table-hover .table-dark:hover{background-color:#c4c4c9}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#c4c4c9}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#5a5c69;border-color:#6c6e7e}.table .thead-light th{color:#6e707e;background-color:#eaecf4;border-color:#e3e6f0}.table-dark{color:#fff;background-color:#5a5c69}.table-dark th,.table-dark td,.table-dark thead th{border-color:#6c6e7e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#6e707e;background-color:#fff;background-clip:padding-box;border:1px solid #d1d3e2;border-radius:.35rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #6e707e}.form-control:focus{color:#6e707e;background-color:#fff;border-color:#bac8f3;outline:0;box-shadow:0 0 0 .2rem rgba(78,115,223,0.25)}.form-control::placeholder{color:#858796;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eaecf4;opacity:1}input.form-control[type="date"],input.form-control[type="time"],input.form-control[type="datetime-local"],input.form-control[type="month"]{appearance:none}select.form-control:focus::-ms-value{color:#6e707e;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#858796;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[size],select.form-control[multiple]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{color:#858796}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#1cc88a}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(28,200,138,0.9);border-radius:.35rem}.form-row>.col>.valid-tooltip,.form-row>[class*="col-"]>.valid-tooltip{left:5px}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#1cc88a;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%231cc88a' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#1cc88a;box-shadow:0 0 0 .2rem rgba(28,200,138,0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#1cc88a;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%231cc88a' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#1cc88a;box-shadow:0 0 0 .2rem rgba(28,200,138,0.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#1cc88a}.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip,.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip{display:block}.was-validated .custom-control-input:valid~.custom-control-label,.custom-control-input.is-valid~.custom-control-label{color:#1cc88a}.was-validated .custom-control-input:valid~.custom-control-label::before,.custom-control-input.is-valid~.custom-control-label::before{border-color:#1cc88a}.was-validated .custom-control-input:valid:checked~.custom-control-label::before,.custom-control-input.is-valid:checked~.custom-control-label::before{border-color:#34e3a4;background-color:#34e3a4}.was-validated .custom-control-input:valid:focus~.custom-control-label::before,.custom-control-input.is-valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(28,200,138,0.25)}.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before,.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before{border-color:#1cc88a}.was-validated .custom-file-input:valid~.custom-file-label,.custom-file-input.is-valid~.custom-file-label{border-color:#1cc88a}.was-validated .custom-file-input:valid:focus~.custom-file-label,.custom-file-input.is-valid:focus~.custom-file-label{border-color:#1cc88a;box-shadow:0 0 0 .2rem rgba(28,200,138,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#e74a3b}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(231,74,59,0.9);border-radius:.35rem}.form-row>.col>.invalid-tooltip,.form-row>[class*="col-"]>.invalid-tooltip{left:5px}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#e74a3b;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23e74a3b' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74a3b' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#e74a3b;box-shadow:0 0 0 .2rem rgba(231,74,59,0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#e74a3b;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23e74a3b' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74a3b' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#e74a3b;box-shadow:0 0 0 .2rem rgba(231,74,59,0.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#e74a3b}.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip,.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip{display:block}.was-validated .custom-control-input:invalid~.custom-control-label,.custom-control-input.is-invalid~.custom-control-label{color:#e74a3b}.was-validated .custom-control-input:invalid~.custom-control-label::before,.custom-control-input.is-invalid~.custom-control-label::before{border-color:#e74a3b}.was-validated .custom-control-input:invalid:checked~.custom-control-label::before,.custom-control-input.is-invalid:checked~.custom-control-label::before{border-color:#ed7468;background-color:#ed7468}.was-validated .custom-control-input:invalid:focus~.custom-control-label::before,.custom-control-input.is-invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(231,74,59,0.25)}.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before,.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before{border-color:#e74a3b}.was-validated .custom-file-input:invalid~.custom-file-label,.custom-file-input.is-invalid~.custom-file-label{border-color:#e74a3b}.was-validated .custom-file-input:invalid:focus~.custom-file-label,.custom-file-input.is-invalid:focus~.custom-file-label{border-color:#e74a3b;box-shadow:0 0 0 .2rem rgba(231,74,59,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#858796;text-align:center;vertical-align:middle;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.35rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#858796;text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(78,115,223,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#4e73df;border-color:#4e73df}.btn-primary:hover{color:#fff;background-color:#2e59d9;border-color:#2653d4}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#2e59d9;border-color:#2653d4;box-shadow:0 0 0 .2rem rgba(105,136,228,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#4e73df;border-color:#4e73df}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary.active:not(:disabled):not(.disabled),.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#2653d4;border-color:#244ec9}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary.active:not(:disabled):not(.disabled):focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(105,136,228,0.5)}.btn-secondary{color:#fff;background-color:#858796;border-color:#858796}.btn-secondary:hover{color:#fff;background-color:#717384;border-color:#6b6d7d}.btn-secondary:focus,.btn-secondary.focus{color:#fff;background-color:#717384;border-color:#6b6d7d;box-shadow:0 0 0 .2rem rgba(151,153,166,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#858796;border-color:#858796}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary.active:not(:disabled):not(.disabled),.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#6b6d7d;border-color:#656776}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary.active:not(:disabled):not(.disabled):focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(151,153,166,0.5)}.btn-success{color:#fff;background-color:#1cc88a;border-color:#1cc88a}.btn-success:hover{color:#fff;background-color:#17a673;border-color:#169b6b}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#17a673;border-color:#169b6b;box-shadow:0 0 0 .2rem rgba(62,208,156,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#1cc88a;border-color:#1cc88a}.btn-success:not(:disabled):not(.disabled):active,.btn-success.active:not(:disabled):not(.disabled),.show>.btn-success.dropdown-toggle{color:#fff;background-color:#169b6b;border-color:#149063}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success.active:not(:disabled):not(.disabled):focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(62,208,156,0.5)}.btn-info{color:#fff;background-color:#36b9cc;border-color:#36b9cc}.btn-info:hover{color:#fff;background-color:#2c9faf;border-color:#2a96a5}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#2c9faf;border-color:#2a96a5;box-shadow:0 0 0 .2rem rgba(84,196,212,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#36b9cc;border-color:#36b9cc}.btn-info:not(:disabled):not(.disabled):active,.btn-info.active:not(:disabled):not(.disabled),.show>.btn-info.dropdown-toggle{color:#fff;background-color:#2a96a5;border-color:#278c9b}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info.active:not(:disabled):not(.disabled):focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(84,196,212,0.5)}.btn-warning{color:#fff;background-color:#f6c23e;border-color:#f6c23e}.btn-warning:hover{color:#fff;background-color:#f4b619;border-color:#f4b30d}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#f4b619;border-color:#f4b30d;box-shadow:0 0 0 .2rem rgba(247,203,91,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#fff;background-color:#f6c23e;border-color:#f6c23e}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning.active:not(:disabled):not(.disabled),.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#f4b30d;border-color:#e9aa0b}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning.active:not(:disabled):not(.disabled):focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(247,203,91,0.5)}.btn-danger{color:#fff;background-color:#e74a3b;border-color:#e74a3b}.btn-danger:hover{color:#fff;background-color:#e02d1b;border-color:#d52a1a}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#e02d1b;border-color:#d52a1a;box-shadow:0 0 0 .2rem rgba(235,101,88,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#e74a3b;border-color:#e74a3b}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger.active:not(:disabled):not(.disabled),.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#d52a1a;border-color:#ca2819}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger.active:not(:disabled):not(.disabled):focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(235,101,88,0.5)}.btn-light{color:#3a3b45;background-color:#f8f9fc;border-color:#f8f9fc}.btn-light:hover{color:#3a3b45;background-color:#dde2f1;border-color:#d4daed}.btn-light:focus,.btn-light.focus{color:#3a3b45;background-color:#dde2f1;border-color:#d4daed;box-shadow:0 0 0 .2rem rgba(220,221,225,0.5)}.btn-light.disabled,.btn-light:disabled{color:#3a3b45;background-color:#f8f9fc;border-color:#f8f9fc}.btn-light:not(:disabled):not(.disabled):active,.btn-light.active:not(:disabled):not(.disabled),.show>.btn-light.dropdown-toggle{color:#3a3b45;background-color:#d4daed;border-color:#cbd3e9}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light.active:not(:disabled):not(.disabled):focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,221,225,0.5)}.btn-dark{color:#fff;background-color:#5a5c69;border-color:#5a5c69}.btn-dark:hover{color:#fff;background-color:#484a54;border-color:#42444e}.btn-dark:focus,.btn-dark.focus{color:#fff;background-color:#484a54;border-color:#42444e;box-shadow:0 0 0 .2rem rgba(115,116,128,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#5a5c69;border-color:#5a5c69}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark.active:not(:disabled):not(.disabled),.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#42444e;border-color:#3d3e47}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark.active:not(:disabled):not(.disabled):focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(115,116,128,0.5)}.btn-outline-primary{color:#4e73df;border-color:#4e73df}.btn-outline-primary:hover{color:#fff;background-color:#4e73df;border-color:#4e73df}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(78,115,223,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#4e73df;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary.active:not(:disabled):not(.disabled),.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#4e73df;border-color:#4e73df}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(78,115,223,0.5)}.btn-outline-secondary{color:#858796;border-color:#858796}.btn-outline-secondary:hover{color:#fff;background-color:#858796;border-color:#858796}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(133,135,150,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#858796;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary.active:not(:disabled):not(.disabled),.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#858796;border-color:#858796}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(133,135,150,0.5)}.btn-outline-success{color:#1cc88a;border-color:#1cc88a}.btn-outline-success:hover{color:#fff;background-color:#1cc88a;border-color:#1cc88a}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(28,200,138,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#1cc88a;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success.active:not(:disabled):not(.disabled),.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#1cc88a;border-color:#1cc88a}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(28,200,138,0.5)}.btn-outline-info{color:#36b9cc;border-color:#36b9cc}.btn-outline-info:hover{color:#fff;background-color:#36b9cc;border-color:#36b9cc}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(54,185,204,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#36b9cc;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info.active:not(:disabled):not(.disabled),.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#36b9cc;border-color:#36b9cc}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(54,185,204,0.5)}.btn-outline-warning{color:#f6c23e;border-color:#f6c23e}.btn-outline-warning:hover{color:#fff;background-color:#f6c23e;border-color:#f6c23e}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(246,194,62,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#f6c23e;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning.active:not(:disabled):not(.disabled),.show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f6c23e;border-color:#f6c23e}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(246,194,62,0.5)}.btn-outline-danger{color:#e74a3b;border-color:#e74a3b}.btn-outline-danger:hover{color:#fff;background-color:#e74a3b;border-color:#e74a3b}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(231,74,59,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#e74a3b;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger.active:not(:disabled):not(.disabled),.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#e74a3b;border-color:#e74a3b}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(231,74,59,0.5)}.btn-outline-light{color:#f8f9fc;border-color:#f8f9fc}.btn-outline-light:hover{color:#3a3b45;background-color:#f8f9fc;border-color:#f8f9fc}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,252,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fc;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light.active:not(:disabled):not(.disabled),.show>.btn-outline-light.dropdown-toggle{color:#3a3b45;background-color:#f8f9fc;border-color:#f8f9fc}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,252,0.5)}.btn-outline-dark{color:#5a5c69;border-color:#5a5c69}.btn-outline-dark:hover{color:#fff;background-color:#5a5c69;border-color:#5a5c69}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(90,92,105,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#5a5c69;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark.active:not(:disabled):not(.disabled),.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#5a5c69;border-color:#5a5c69}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(90,92,105,0.5)}.btn-link{font-weight:400;color:#4e73df;text-decoration:none}.btn-link:hover{color:#224abe;text-decoration:underline}.btn-link:focus,.btn-link.focus{text-decoration:underline}.btn-link:disabled,.btn-link.disabled{color:#858796;pointer-events:none}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input.btn-block[type="submit"],input.btn-block[type="reset"],input.btn-block[type="button"]{width:100%}.fade{transition:opacity 0.15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.15s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.dropup,.dropright,.dropdown,.dropleft{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:.85rem;color:#858796;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #e3e6f0;border-radius:.35rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^="top"],.dropdown-menu[x-placement^="right"],.dropdown-menu[x-placement^="bottom"],.dropdown-menu[x-placement^="left"]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #eaecf4}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#3a3b45;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#2e2f37;text-decoration:none;background-color:#f8f9fc}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#4e73df}.dropdown-item.disabled,.dropdown-item:disabled{color:#858796;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#858796;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#3a3b45}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-control-plaintext,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.form-control-plaintext+.form-control,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file .custom-file-input:focus~.custom-file-label{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.form-control:not(:last-child),.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.form-control:nth-last-child(n + 3),.input-group.has-validation>.custom-select:nth-last-child(n + 3),.input-group.has-validation>.custom-file:nth-last-child(n + 3) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn:focus,.input-group-append .btn:focus{z-index:3}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#6e707e;text-align:center;white-space:nowrap;background-color:#eaecf4;border:1px solid #d1d3e2;border-radius:.35rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group-lg>.form-control:not(textarea),.input-group-lg>.custom-select{height:calc(1.5em + 1rem + 2px)}.input-group-lg>.form-control,.input-group-lg>.custom-select,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.form-control:not(textarea),.input-group-sm>.custom-select{height:calc(1.5em + .5rem + 2px)}.input-group-sm>.form-control,.input-group-sm>.custom-select,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group.has-validation>.input-group-append:nth-last-child(n + 3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n + 3)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;color-adjust:exact}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#4e73df;background-color:#4e73df}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(78,115,223,0.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#bac8f3}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#e5ebfa;border-color:#e5ebfa}.custom-control-input[disabled]~.custom-control-label,.custom-control-input:disabled~.custom-control-label{color:#858796}.custom-control-input[disabled]~.custom-control-label::before,.custom-control-input:disabled~.custom-control-label::before{background-color:#eaecf4}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#b7b9cc solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50% / 50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.35rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#4e73df;background-color:#4e73df}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(78,115,223,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(78,115,223,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(78,115,223,0.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#b7b9cc;border-radius:.5rem;transition:transform 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(78,115,223,0.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#6e707e;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #d1d3e2;border-radius:.35rem;appearance:none}.custom-select:focus{border-color:#bac8f3;outline:0;box-shadow:0 0 0 .2rem rgba(78,115,223,0.25)}.custom-select:focus::-ms-value{color:#6e707e;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#858796;background-color:#eaecf4}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #6e707e}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#bac8f3;box-shadow:0 0 0 .2rem rgba(78,115,223,0.25)}.custom-file-input[disabled]~.custom-file-label,.custom-file-input:disabled~.custom-file-label{background-color:#eaecf4}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#6e707e;background-color:#fff;border:1px solid #d1d3e2;border-radius:.35rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#6e707e;content:"Browse";background-color:#eaecf4;border-left:inherit;border-radius:0 .35rem .35rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(78,115,223,0.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(78,115,223,0.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(78,115,223,0.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#4e73df;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#e5ebfa}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dddfeb;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#4e73df;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#e5ebfa}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dddfeb;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#4e73df;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#e5ebfa}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dddfeb;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dddfeb;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#b7b9cc}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#b7b9cc}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#b7b9cc}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#858796;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dddfeb}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#eaecf4 #eaecf4 #dddfeb}.nav-tabs .nav-link.disabled{color:#858796;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#6e707e;background-color:#fff;border-color:#dddfeb #dddfeb #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.35rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#4e73df}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-sm,.navbar .container-md,.navbar .container-lg,.navbar .container-xl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.35rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50% / 100% 100% no-repeat}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-xl{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-md,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-md,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-xl{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-xl{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-xl{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-sm,.navbar-expand>.container-md,.navbar-expand>.container-lg,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-sm,.navbar-expand>.container-md,.navbar-expand>.container-lg,.navbar-expand>.container-xl{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280,0,0,0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid #e3e6f0;border-radius:.35rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.35rem - 1px);border-top-right-radius:calc(.35rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.35rem - 1px);border-bottom-left-radius:calc(.35rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid #e3e6f0}.card-header:first-child{border-radius:calc(.35rem - 1px) calc(.35rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid #e3e6f0}.card-footer:last-child{border-radius:0 0 calc(.35rem - 1px) calc(.35rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.35rem - 1px)}.card-img,.card-img-top,.card-img-bottom{flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.35rem - 1px);border-top-right-radius:calc(.35rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.35rem - 1px);border-bottom-left-radius:calc(.35rem - 1px)}.card-deck .card{margin-bottom:.75rem}@media (min-width: 576px){.card-deck{display:flex;flex-flow:row wrap;margin-right:-.75rem;margin-left:-.75rem}.card-deck .card{flex:1 0 0%;margin-right:.75rem;margin-bottom:0;margin-left:.75rem}}.card-group>.card{margin-bottom:.75rem}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#eaecf4;border-radius:.35rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#858796;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#858796}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.35rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#4e73df;background-color:#fff;border:1px solid #dddfeb}.page-link:hover{z-index:2;color:#224abe;text-decoration:none;background-color:#eaecf4;border-color:#dddfeb}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(78,115,223,0.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.35rem;border-bottom-left-radius:.35rem}.page-item:last-child .page-link{border-top-right-radius:.35rem;border-bottom-right-radius:.35rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#4e73df;border-color:#4e73df}.page-item.disabled .page-link{color:#858796;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dddfeb}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.35rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.badge{transition:none}}a.badge:hover,a.badge:focus{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#4e73df}a.badge-primary:hover,a.badge-primary:focus{color:#fff;background-color:#2653d4}a.badge-primary:focus,a.badge-primary.focus{outline:0;box-shadow:0 0 0 .2rem rgba(78,115,223,0.5)}.badge-secondary{color:#fff;background-color:#858796}a.badge-secondary:hover,a.badge-secondary:focus{color:#fff;background-color:#6b6d7d}a.badge-secondary:focus,a.badge-secondary.focus{outline:0;box-shadow:0 0 0 .2rem rgba(133,135,150,0.5)}.badge-success{color:#fff;background-color:#1cc88a}a.badge-success:hover,a.badge-success:focus{color:#fff;background-color:#169b6b}a.badge-success:focus,a.badge-success.focus{outline:0;box-shadow:0 0 0 .2rem rgba(28,200,138,0.5)}.badge-info{color:#fff;background-color:#36b9cc}a.badge-info:hover,a.badge-info:focus{color:#fff;background-color:#2a96a5}a.badge-info:focus,a.badge-info.focus{outline:0;box-shadow:0 0 0 .2rem rgba(54,185,204,0.5)}.badge-warning{color:#fff;background-color:#f6c23e}a.badge-warning:hover,a.badge-warning:focus{color:#fff;background-color:#f4b30d}a.badge-warning:focus,a.badge-warning.focus{outline:0;box-shadow:0 0 0 .2rem rgba(246,194,62,0.5)}.badge-danger{color:#fff;background-color:#e74a3b}a.badge-danger:hover,a.badge-danger:focus{color:#fff;background-color:#d52a1a}a.badge-danger:focus,a.badge-danger.focus{outline:0;box-shadow:0 0 0 .2rem rgba(231,74,59,0.5)}.badge-light{color:#3a3b45;background-color:#f8f9fc}a.badge-light:hover,a.badge-light:focus{color:#3a3b45;background-color:#d4daed}a.badge-light:focus,a.badge-light.focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,252,0.5)}.badge-dark{color:#fff;background-color:#5a5c69}a.badge-dark:hover,a.badge-dark:focus{color:#fff;background-color:#42444e}a.badge-dark:focus,a.badge-dark.focus{outline:0;box-shadow:0 0 0 .2rem rgba(90,92,105,0.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eaecf4;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.35rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#293c74;background-color:#dce3f9;border-color:#cdd8f6}.alert-primary hr{border-top-color:#b7c7f2}.alert-primary .alert-link{color:#1c294e}.alert-secondary{color:#45464e;background-color:#e7e7ea;border-color:#dddde2}.alert-secondary hr{border-top-color:#cfcfd6}.alert-secondary .alert-link{color:#2d2e33}.alert-success{color:#0f6848;background-color:#d2f4e8;border-color:#bff0de}.alert-success hr{border-top-color:#aaebd3}.alert-success .alert-link{color:#093b29}.alert-info{color:#1c606a;background-color:#d7f1f5;border-color:#c7ebf1}.alert-info hr{border-top-color:#b3e4ec}.alert-info .alert-link{color:#113b42}.alert-warning{color:#806520;background-color:#fdf3d8;border-color:#fceec9}.alert-warning hr{border-top-color:#fbe6b1}.alert-warning .alert-link{color:#574516}.alert-danger{color:#78261f;background-color:#fadbd8;border-color:#f8ccc8}.alert-danger hr{border-top-color:#f5b7b1}.alert-danger .alert-link{color:#4f1915}.alert-light{color:#818183;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686869}.alert-dark{color:#2f3037;background-color:#dedee1;border-color:#d1d1d5}.alert-dark hr{border-top-color:#c4c4c9}.alert-dark .alert-link{color:#18181c}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#eaecf4;border-radius:.35rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#4e73df;transition:width 0.6s ease}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.35rem}.list-group-item-action{width:100%;color:#6e707e;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#6e707e;text-decoration:none;background-color:#f8f9fc}.list-group-item-action:active{color:#858796;background-color:#eaecf4}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#858796;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#4e73df;border-color:#4e73df}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.35rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.35rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.35rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.35rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.35rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.35rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.35rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.35rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.35rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.35rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#293c74;background-color:#cdd8f6}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#293c74;background-color:#b7c7f2}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#293c74;border-color:#293c74}.list-group-item-secondary{color:#45464e;background-color:#dddde2}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#45464e;background-color:#cfcfd6}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#45464e;border-color:#45464e}.list-group-item-success{color:#0f6848;background-color:#bff0de}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#0f6848;background-color:#aaebd3}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f6848;border-color:#0f6848}.list-group-item-info{color:#1c606a;background-color:#c7ebf1}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#1c606a;background-color:#b3e4ec}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#1c606a;border-color:#1c606a}.list-group-item-warning{color:#806520;background-color:#fceec9}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#806520;background-color:#fbe6b1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#806520;border-color:#806520}.list-group-item-danger{color:#78261f;background-color:#f8ccc8}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#78261f;background-color:#f5b7b1}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#78261f;border-color:#78261f}.list-group-item-light{color:#818183;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818183;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818183;border-color:#818183}.list-group-item-dark{color:#2f3037;background-color:#d1d1d5}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#2f3037;background-color:#c4c4c9}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#2f3037;border-color:#2f3037}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):hover,.close:not(:disabled):not(.disabled):focus{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border:1px solid rgba(0,0,0,0.1);box-shadow:0 0.25rem 0.75rem rgba(0,0,0,0.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#858796;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,0.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-header,.modal-dialog-scrollable .modal-footer{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #e3e6f0;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #e3e6f0;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:min-content}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width: 1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.35rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top>.arrow,.bs-popover-auto[x-placement^="top"]>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-top>.arrow::before,.bs-popover-auto[x-placement^="top"]>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top>.arrow::after,.bs-popover-auto[x-placement^="top"]>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right>.arrow,.bs-popover-auto[x-placement^="right"]>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right>.arrow::before,.bs-popover-auto[x-placement^="right"]>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right>.arrow::after,.bs-popover-auto[x-placement^="right"]>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom>.arrow,.bs-popover-auto[x-placement^="bottom"]>.arrow{top:calc(-.5rem - 1px)}.bs-popover-bottom>.arrow::before,.bs-popover-auto[x-placement^="bottom"]>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom>.arrow::after,.bs-popover-auto[x-placement^="bottom"]>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left>.arrow,.bs-popover-auto[x-placement^="left"]>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left>.arrow::before,.bs-popover-auto[x-placement^="left"]>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left>.arrow::after,.bs-popover-auto[x-placement^="left"]>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#858796}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-left),.active.carousel-item-right{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-right),.active.carousel-item-left{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity 0.15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:50% / 100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity 0.6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#4e73df !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#2653d4 !important}.bg-secondary{background-color:#858796 !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#6b6d7d !important}.bg-success{background-color:#1cc88a !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#169b6b !important}.bg-info{background-color:#36b9cc !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#2a96a5 !important}.bg-warning{background-color:#f6c23e !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#f4b30d !important}.bg-danger{background-color:#e74a3b !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#d52a1a !important}.bg-light{background-color:#f8f9fc !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#d4daed !important}.bg-dark{background-color:#5a5c69 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#42444e !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #e3e6f0 !important}.border-top{border-top:1px solid #e3e6f0 !important}.border-right{border-right:1px solid #e3e6f0 !important}.border-bottom{border-bottom:1px solid #e3e6f0 !important}.border-left{border-left:1px solid #e3e6f0 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#4e73df !important}.border-secondary{border-color:#858796 !important}.border-success{border-color:#1cc88a !important}.border-info{border-color:#36b9cc !important}.border-warning{border-color:#f6c23e !important}.border-danger{border-color:#e74a3b !important}.border-light{border-color:#f8f9fc !important}.border-dark{border-color:#5a5c69 !important}.border-white{border-color:#fff !important}.rounded-sm{border-radius:.2rem !important}.rounded{border-radius:.35rem !important}.rounded-top{border-top-left-radius:.35rem !important;border-top-right-radius:.35rem !important}.rounded-right{border-top-right-radius:.35rem !important;border-bottom-right-radius:.35rem !important}.rounded-bottom{border-bottom-right-radius:.35rem !important;border-bottom-left-radius:.35rem !important}.rounded-left{border-top-left-radius:.35rem !important;border-bottom-left-radius:.35rem !important}.rounded-lg{border-radius:.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.8571428571%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 0.125rem 0.25rem 0 rgba(58,59,69,0.2) !important}.shadow{box-shadow:0 0.15rem 1.75rem 0 rgba(58,59,69,0.15) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,0.175) !important}.shadow-none{box-shadow:none !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.min-vw-100{min-width:100vw !important}.min-vh-100{min-height:100vh !important}.vw-100{width:100vw !important}.vh-100{height:100vh !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-n1{margin:-.25rem !important}.mt-n1,.my-n1{margin-top:-.25rem !important}.mr-n1,.mx-n1{margin-right:-.25rem !important}.mb-n1,.my-n1{margin-bottom:-.25rem !important}.ml-n1,.mx-n1{margin-left:-.25rem !important}.m-n2{margin:-.5rem !important}.mt-n2,.my-n2{margin-top:-.5rem !important}.mr-n2,.mx-n2{margin-right:-.5rem !important}.mb-n2,.my-n2{margin-bottom:-.5rem !important}.ml-n2,.mx-n2{margin-left:-.5rem !important}.m-n3{margin:-1rem !important}.mt-n3,.my-n3{margin-top:-1rem !important}.mr-n3,.mx-n3{margin-right:-1rem !important}.mb-n3,.my-n3{margin-bottom:-1rem !important}.ml-n3,.mx-n3{margin-left:-1rem !important}.m-n4{margin:-1.5rem !important}.mt-n4,.my-n4{margin-top:-1.5rem !important}.mr-n4,.mx-n4{margin-right:-1.5rem !important}.mb-n4,.my-n4{margin-bottom:-1.5rem !important}.ml-n4,.mx-n4{margin-left:-1.5rem !important}.m-n5{margin:-3rem !important}.mt-n5,.my-n5{margin-top:-3rem !important}.mr-n5,.mx-n5{margin-right:-3rem !important}.mb-n5,.my-n5{margin-bottom:-3rem !important}.ml-n5,.mx-n5{margin-left:-3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-n1{margin:-.25rem !important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem !important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem !important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem !important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem !important}.m-sm-n2{margin:-.5rem !important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem !important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem !important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem !important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem !important}.m-sm-n3{margin:-1rem !important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem !important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem !important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem !important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem !important}.m-sm-n4{margin:-1.5rem !important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem !important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem !important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem !important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem !important}.m-sm-n5{margin:-3rem !important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem !important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem !important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem !important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-n1{margin:-.25rem !important}.mt-md-n1,.my-md-n1{margin-top:-.25rem !important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem !important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem !important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem !important}.m-md-n2{margin:-.5rem !important}.mt-md-n2,.my-md-n2{margin-top:-.5rem !important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem !important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem !important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem !important}.m-md-n3{margin:-1rem !important}.mt-md-n3,.my-md-n3{margin-top:-1rem !important}.mr-md-n3,.mx-md-n3{margin-right:-1rem !important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem !important}.ml-md-n3,.mx-md-n3{margin-left:-1rem !important}.m-md-n4{margin:-1.5rem !important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem !important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem !important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem !important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem !important}.m-md-n5{margin:-3rem !important}.mt-md-n5,.my-md-n5{margin-top:-3rem !important}.mr-md-n5,.mx-md-n5{margin-right:-3rem !important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem !important}.ml-md-n5,.mx-md-n5{margin-left:-3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-n1{margin:-.25rem !important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem !important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem !important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem !important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem !important}.m-lg-n2{margin:-.5rem !important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem !important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem !important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem !important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem !important}.m-lg-n3{margin:-1rem !important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem !important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem !important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem !important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem !important}.m-lg-n4{margin:-1.5rem !important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem !important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem !important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem !important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem !important}.m-lg-n5{margin:-3rem !important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem !important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem !important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem !important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-n1{margin:-.25rem !important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem !important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem !important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem !important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem !important}.m-xl-n2{margin:-.5rem !important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem !important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem !important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem !important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem !important}.m-xl-n3{margin:-1rem !important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem !important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem !important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem !important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem !important}.m-xl-n4{margin:-1.5rem !important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem !important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem !important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem !important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem !important}.m-xl-n5{margin:-3rem !important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem !important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem !important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem !important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace !important}.text-justify{text-align:justify !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase,.sidebar .sidebar-heading,.dropdown .dropdown-menu .dropdown-header{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-lighter{font-weight:lighter !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-weight-bolder{font-weight:bolder !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#4e73df !important}a.text-primary:hover,a.text-primary:focus{color:#224abe !important}.text-secondary{color:#858796 !important}a.text-secondary:hover,a.text-secondary:focus{color:#60616f !important}.text-success{color:#1cc88a !important}a.text-success:hover,a.text-success:focus{color:#13855c !important}.text-info{color:#36b9cc !important}a.text-info:hover,a.text-info:focus{color:#258391 !important}.text-warning{color:#f6c23e !important}a.text-warning:hover,a.text-warning:focus{color:#dda20a !important}.text-danger{color:#e74a3b !important}a.text-danger:hover,a.text-danger:focus{color:#be2617 !important}.text-light{color:#f8f9fc !important}a.text-light:hover,a.text-light:focus{color:#c2cbe5 !important}.text-dark{color:#5a5c69 !important}a.text-dark:hover,a.text-dark:focus{color:#373840 !important}.text-body{color:#858796 !important}.text-muted{color:#858796 !important}.text-black-50{color:rgba(0,0,0,0.5) !important}.text-white-50{color:rgba(255,255,255,0.5) !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none !important}.text-break{word-break:break-word !important;word-wrap:break-word !important}.text-reset{color:inherit !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #b7b9cc;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #dddfeb !important}.table-dark{color:inherit}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:#e3e6f0}.table .thead-dark th{color:inherit;border-color:#e3e6f0}}html{position:relative;min-height:100%}body{height:100%}a:focus{outline:none}#wrapper{display:flex}#wrapper #content-wrapper{background-color:#f8f9fc;width:100%;overflow-x:hidden}#wrapper #content-wrapper #content{flex:1 0 auto}.container,.container-fluid,.container-sm,.container-md,.container-lg,.container-xl{padding-left:1.5rem;padding-right:1.5rem}.scroll-to-top{position:fixed;right:1rem;bottom:1rem;display:none;width:2.75rem;height:2.75rem;text-align:center;color:#fff;background:rgba(90,92,105,0.5);line-height:46px}.scroll-to-top:focus,.scroll-to-top:hover{color:white}.scroll-to-top:hover{background:#5a5c69}.scroll-to-top i{font-weight:800}@keyframes growIn{0%{transform:scale(0.9);opacity:0}100%{transform:scale(1);opacity:1}}.animated--grow-in,.sidebar .nav-item .collapse{animation-name:growIn;animation-duration:200ms;animation-timing-function:transform cubic-bezier(0.18, 1.25, 0.4, 1),opacity cubic-bezier(0, 1, 0.4, 1)}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.animated--fade-in{animation-name:fadeIn;animation-duration:200ms;animation-timing-function:opacity cubic-bezier(0, 1, 0.4, 1)}.bg-gradient-primary{background-color:#4e73df;background-image:linear-gradient(180deg, #4e73df 10%, #224abe 100%);background-size:cover}.bg-gradient-secondary{background-color:#858796;background-image:linear-gradient(180deg, #858796 10%, #60616f 100%);background-size:cover}.bg-gradient-success{background-color:#1cc88a;background-image:linear-gradient(180deg, #1cc88a 10%, #13855c 100%);background-size:cover}.bg-gradient-info{background-color:#36b9cc;background-image:linear-gradient(180deg, #36b9cc 10%, #258391 100%);background-size:cover}.bg-gradient-warning{background-color:#f6c23e;background-image:linear-gradient(180deg, #f6c23e 10%, #dda20a 100%);background-size:cover}.bg-gradient-danger{background-color:#e74a3b;background-image:linear-gradient(180deg, #e74a3b 10%, #be2617 100%);background-size:cover}.bg-gradient-light{background-color:#f8f9fc;background-image:linear-gradient(180deg, #f8f9fc 10%, #c2cbe5 100%);background-size:cover}.bg-gradient-dark{background-color:#5a5c69;background-image:linear-gradient(180deg, #5a5c69 10%, #373840 100%);background-size:cover}.bg-gray-100{background-color:#f8f9fc !important}.bg-gray-200{background-color:#eaecf4 !important}.bg-gray-300{background-color:#dddfeb !important}.bg-gray-400{background-color:#d1d3e2 !important}.bg-gray-500{background-color:#b7b9cc !important}.bg-gray-600{background-color:#858796 !important}.bg-gray-700{background-color:#6e707e !important}.bg-gray-800{background-color:#5a5c69 !important}.bg-gray-900{background-color:#3a3b45 !important}.o-hidden{overflow:hidden !important}.text-xs{font-size:.7rem}.text-lg{font-size:1.2rem}.text-gray-100{color:#f8f9fc !important}.text-gray-200{color:#eaecf4 !important}.text-gray-300{color:#dddfeb !important}.text-gray-400{color:#d1d3e2 !important}.text-gray-500{color:#b7b9cc !important}.text-gray-600{color:#858796 !important}.text-gray-700{color:#6e707e !important}.text-gray-800{color:#5a5c69 !important}.text-gray-900{color:#3a3b45 !important}.icon-circle{height:2.5rem;width:2.5rem;border-radius:100%;display:flex;align-items:center;justify-content:center}.border-left-primary{border-left:0.25rem solid #4e73df !important}.border-bottom-primary{border-bottom:0.25rem solid #4e73df !important}.border-left-secondary{border-left:0.25rem solid #858796 !important}.border-bottom-secondary{border-bottom:0.25rem solid #858796 !important}.border-left-success{border-left:0.25rem solid #1cc88a !important}.border-bottom-success{border-bottom:0.25rem solid #1cc88a !important}.border-left-info{border-left:0.25rem solid #36b9cc !important}.border-bottom-info{border-bottom:0.25rem solid #36b9cc !important}.border-left-warning{border-left:0.25rem solid #f6c23e !important}.border-bottom-warning{border-bottom:0.25rem solid #f6c23e !important}.border-left-danger{border-left:0.25rem solid #e74a3b !important}.border-bottom-danger{border-bottom:0.25rem solid #e74a3b !important}.border-left-light{border-left:0.25rem solid #f8f9fc !important}.border-bottom-light{border-bottom:0.25rem solid #f8f9fc !important}.border-left-dark{border-left:0.25rem solid #5a5c69 !important}.border-bottom-dark{border-bottom:0.25rem solid #5a5c69 !important}.progress-sm{height:.5rem}.rotate-15{transform:rotate(15deg)}.rotate-n-15{transform:rotate(-15deg)}.dropdown .dropdown-menu{font-size:.85rem}.dropdown .dropdown-menu .dropdown-header{font-weight:800;font-size:0.65rem;color:#b7b9cc}.dropdown.no-arrow .dropdown-toggle::after{display:none}.sidebar .nav-item.dropdown .dropdown-toggle::after,.topbar .nav-item.dropdown .dropdown-toggle::after{width:1rem;text-align:center;float:right;vertical-align:0;border:0;font-weight:900;content:'\f105';font-family:'Font Awesome 5 Free'}.sidebar .nav-item.dropdown.show .dropdown-toggle::after,.topbar .nav-item.dropdown.show .dropdown-toggle::after{content:'\f107'}.sidebar .nav-item .nav-link,.topbar .nav-item .nav-link{position:relative}.sidebar .nav-item .nav-link .badge-counter,.topbar .nav-item .nav-link .badge-counter{position:absolute;transform:scale(0.7);transform-origin:top right;right:.25rem;margin-top:-.25rem}.sidebar .nav-item .nav-link .img-profile,.topbar .nav-item .nav-link .img-profile{height:2rem;width:2rem}.topbar{height:4.375rem}.topbar #sidebarToggleTop{height:2.5rem;width:2.5rem}.topbar #sidebarToggleTop:hover{background-color:#eaecf4}.topbar #sidebarToggleTop:active{background-color:#dddfeb}.topbar .navbar-search{width:25rem}.topbar .navbar-search input{font-size:0.85rem;height:auto}.topbar .topbar-divider{width:0;border-right:1px solid #e3e6f0;height:calc(4.375rem - 2rem);margin:auto 1rem}.topbar .nav-item .nav-link{height:4.375rem;display:flex;align-items:center;padding:0 0.75rem}.topbar .nav-item .nav-link:focus{outline:none}.topbar .nav-item:focus{outline:none}.topbar .dropdown{position:static}.topbar .dropdown .dropdown-menu{width:calc(100% - 1.5rem);right:.75rem}.topbar .dropdown-list{padding:0;border:none;overflow:hidden}.topbar .dropdown-list .dropdown-header{background-color:#4e73df;border:1px solid #4e73df;padding-top:0.75rem;padding-bottom:0.75rem;color:#fff}.topbar .dropdown-list .dropdown-item{white-space:normal;padding-top:0.5rem;padding-bottom:0.5rem;border-left:1px solid #e3e6f0;border-right:1px solid #e3e6f0;border-bottom:1px solid #e3e6f0;line-height:1.3rem}.topbar .dropdown-list .dropdown-item .dropdown-list-image{position:relative;height:2.5rem;width:2.5rem}.topbar .dropdown-list .dropdown-item .dropdown-list-image img{height:2.5rem;width:2.5rem}.topbar .dropdown-list .dropdown-item .dropdown-list-image .status-indicator{background-color:#eaecf4;height:0.75rem;width:0.75rem;border-radius:100%;position:absolute;bottom:0;right:0;border:0.125rem solid #fff}.topbar .dropdown-list .dropdown-item .text-truncate{max-width:10rem}.topbar .dropdown-list .dropdown-item:active{background-color:#eaecf4;color:#3a3b45}@media (min-width: 576px){.topbar .dropdown{position:relative}.topbar .dropdown .dropdown-menu{width:auto;right:0}.topbar .dropdown-list{width:20rem !important}.topbar .dropdown-list .dropdown-item .text-truncate{max-width:13.375rem}}.topbar.navbar-dark .navbar-nav .nav-item .nav-link{color:rgba(255,255,255,0.8)}.topbar.navbar-dark .navbar-nav .nav-item .nav-link:hover{color:#fff}.topbar.navbar-dark .navbar-nav .nav-item .nav-link:active{color:#fff}.topbar.navbar-light .navbar-nav .nav-item .nav-link{color:#d1d3e2}.topbar.navbar-light .navbar-nav .nav-item .nav-link:hover{color:#b7b9cc}.topbar.navbar-light .navbar-nav .nav-item .nav-link:active{color:#858796}.sidebar{width:6.5rem;min-height:100vh}.sidebar .nav-item{position:relative}.sidebar .nav-item:last-child{margin-bottom:1rem}.sidebar .nav-item .nav-link{text-align:center;padding:0.75rem 1rem;width:6.5rem}.sidebar .nav-item .nav-link span{font-size:0.65rem;display:block}.sidebar .nav-item.active .nav-link{font-weight:700}.sidebar .nav-item .collapse{position:absolute;left:calc(6.5rem + 1.5rem / 2);z-index:1;top:2px}.sidebar .nav-item .collapse .collapse-inner{border-radius:.35rem;box-shadow:0 0.15rem 1.75rem 0 rgba(58,59,69,0.15)}.sidebar .nav-item .collapsing{display:none;transition:none}.sidebar .nav-item .collapse .collapse-inner,.sidebar .nav-item .collapsing .collapse-inner{padding:.5rem 0;min-width:10rem;font-size:.85rem;margin:0 0 1rem 0}.sidebar .nav-item .collapse .collapse-inner .collapse-header,.sidebar .nav-item .collapsing .collapse-inner .collapse-header{margin:0;white-space:nowrap;padding:.5rem 1.5rem;text-transform:uppercase;font-weight:800;font-size:0.65rem;color:#b7b9cc}.sidebar .nav-item .collapse .collapse-inner .collapse-item,.sidebar .nav-item .collapsing .collapse-inner .collapse-item{padding:0.5rem 1rem;margin:0 0.5rem;display:block;color:#3a3b45;text-decoration:none;border-radius:.35rem;white-space:nowrap}.sidebar .nav-item .collapse .collapse-inner .collapse-item:hover,.sidebar .nav-item .collapsing .collapse-inner .collapse-item:hover{background-color:#eaecf4}.sidebar .nav-item .collapse .collapse-inner .collapse-item:active,.sidebar .nav-item .collapsing .collapse-inner .collapse-item:active{background-color:#dddfeb}.sidebar .nav-item .collapse .collapse-inner .collapse-item.active,.sidebar .nav-item .collapsing .collapse-inner .collapse-item.active{color:#4e73df;font-weight:700}.sidebar #sidebarToggle{width:2.5rem;height:2.5rem;text-align:center;margin-bottom:1rem;cursor:pointer}.sidebar #sidebarToggle::after{font-weight:900;content:'\f104';font-family:'Font Awesome 5 Free';margin-right:0.1rem}.sidebar #sidebarToggle:hover{text-decoration:none}.sidebar #sidebarToggle:focus{outline:none}.sidebar.toggled{width:0 !important;overflow:hidden}.sidebar.toggled #sidebarToggle::after{content:'\f105';font-family:'Font Awesome 5 Free';margin-left:0.25rem}.sidebar.toggled .sidebar-card{display:none}.sidebar .sidebar-brand{height:4.375rem;text-decoration:none;font-size:1rem;font-weight:800;padding:1.5rem 1rem;text-align:center;text-transform:uppercase;letter-spacing:0.05rem;z-index:1}.sidebar .sidebar-brand .sidebar-brand-icon i{font-size:2rem}.sidebar .sidebar-brand .sidebar-brand-text{display:none}.sidebar hr.sidebar-divider{margin:0 1rem 1rem}.sidebar .sidebar-heading{text-align:center;padding:0 1rem;font-weight:800;font-size:0.65rem}.sidebar .sidebar-card{display:flex;flex-direction:column;align-items:center;font-size:.875rem;border-radius:.35rem;color:rgba(255,255,255,0.8);margin-left:1rem;margin-right:1rem;margin-bottom:1rem;padding:1rem;background-color:rgba(0,0,0,0.1)}.sidebar .sidebar-card .sidebar-card-illustration{height:3rem;display:block}.sidebar .sidebar-card .sidebar-card-title{font-weight:bold}.sidebar .sidebar-card p{font-size:0.75rem;color:rgba(255,255,255,0.5)}@media (min-width: 768px){.sidebar{width:14rem !important}.sidebar .nav-item .collapse{position:relative;left:0;z-index:1;top:0;animation:none}.sidebar .nav-item .collapse .collapse-inner{border-radius:0;box-shadow:none}.sidebar .nav-item .collapsing{display:block;transition:height 0.15s ease}.sidebar .nav-item .collapse,.sidebar .nav-item .collapsing{margin:0 1rem}.sidebar .nav-item .nav-link{display:block;width:100%;text-align:left;padding:1rem;width:14rem}.sidebar .nav-item .nav-link i{font-size:0.85rem;margin-right:0.25rem}.sidebar .nav-item .nav-link span{font-size:0.85rem;display:inline}.sidebar .nav-item .nav-link[data-toggle="collapse"]::after{width:1rem;text-align:center;float:right;vertical-align:0;border:0;font-weight:900;content:'\f107';font-family:'Font Awesome 5 Free'}.sidebar .nav-item .nav-link.collapsed[data-toggle="collapse"]::after{content:'\f105'}.sidebar .sidebar-brand .sidebar-brand-icon i{font-size:2rem}.sidebar .sidebar-brand .sidebar-brand-text{display:inline}.sidebar .sidebar-heading{text-align:left}.sidebar.toggled{overflow:visible;width:6.5rem !important}.sidebar.toggled .nav-item .collapse{position:absolute;left:calc(6.5rem + 1.5rem / 2);z-index:1;top:2px;animation-name:growIn;animation-duration:200ms;animation-timing-function:transform cubic-bezier(0.18, 1.25, 0.4, 1), opacity cubic-bezier(0, 1, 0.4, 1)}.sidebar.toggled .nav-item .collapse .collapse-inner{box-shadow:0 0.15rem 1.75rem 0 rgba(58,59,69,0.15);border-radius:.35rem}.sidebar.toggled .nav-item .collapsing{display:none;transition:none}.sidebar.toggled .nav-item .collapse,.sidebar.toggled .nav-item .collapsing{margin:0}.sidebar.toggled .nav-item:last-child{margin-bottom:1rem}.sidebar.toggled .nav-item .nav-link{text-align:center;padding:0.75rem 1rem;width:6.5rem}.sidebar.toggled .nav-item .nav-link span{font-size:0.65rem;display:block}.sidebar.toggled .nav-item .nav-link i{margin-right:0}.sidebar.toggled .nav-item .nav-link[data-toggle="collapse"]::after{display:none}.sidebar.toggled .sidebar-brand .sidebar-brand-icon i{font-size:2rem}.sidebar.toggled .sidebar-brand .sidebar-brand-text{display:none}.sidebar.toggled .sidebar-heading{text-align:center}}.sidebar-light .sidebar-brand{color:#6e707e}.sidebar-light hr.sidebar-divider{border-top:1px solid #eaecf4}.sidebar-light .sidebar-heading{color:#b7b9cc}.sidebar-light .nav-item .nav-link{color:#858796}.sidebar-light .nav-item .nav-link i{color:#d1d3e2}.sidebar-light .nav-item .nav-link:active,.sidebar-light .nav-item .nav-link:focus,.sidebar-light .nav-item .nav-link:hover{color:#6e707e}.sidebar-light .nav-item .nav-link:active i,.sidebar-light .nav-item .nav-link:focus i,.sidebar-light .nav-item .nav-link:hover i{color:#6e707e}.sidebar-light .nav-item .nav-link[data-toggle="collapse"]::after{color:#b7b9cc}.sidebar-light .nav-item.active .nav-link{color:#6e707e}.sidebar-light .nav-item.active .nav-link i{color:#6e707e}.sidebar-light #sidebarToggle{background-color:#eaecf4}.sidebar-light #sidebarToggle::after{color:#b7b9cc}.sidebar-light #sidebarToggle:hover{background-color:#dddfeb}.sidebar-dark .sidebar-brand{color:#fff}.sidebar-dark hr.sidebar-divider{border-top:1px solid rgba(255,255,255,0.15)}.sidebar-dark .sidebar-heading{color:rgba(255,255,255,0.4)}.sidebar-dark .nav-item .nav-link{color:rgba(255,255,255,0.8)}.sidebar-dark .nav-item .nav-link i{color:rgba(255,255,255,0.3)}.sidebar-dark .nav-item .nav-link:active,.sidebar-dark .nav-item .nav-link:focus,.sidebar-dark .nav-item .nav-link:hover{color:#fff}.sidebar-dark .nav-item .nav-link:active i,.sidebar-dark .nav-item .nav-link:focus i,.sidebar-dark .nav-item .nav-link:hover i{color:#fff}.sidebar-dark .nav-item .nav-link[data-toggle="collapse"]::after{color:rgba(255,255,255,0.5)}.sidebar-dark .nav-item.active .nav-link{color:#fff}.sidebar-dark .nav-item.active .nav-link i{color:#fff}.sidebar-dark #sidebarToggle{background-color:rgba(255,255,255,0.2)}.sidebar-dark #sidebarToggle::after{color:rgba(255,255,255,0.5)}.sidebar-dark #sidebarToggle:hover{background-color:rgba(255,255,255,0.25)}.sidebar-dark.toggled #sidebarToggle::after{color:rgba(255,255,255,0.5)}.btn-circle{border-radius:100%;height:2.5rem;width:2.5rem;font-size:1rem;display:inline-flex;align-items:center;justify-content:center}.btn-circle.btn-sm,.btn-group-sm>.btn-circle.btn{height:1.8rem;width:1.8rem;font-size:0.75rem}.btn-circle.btn-lg,.btn-group-lg>.btn-circle.btn{height:3.5rem;width:3.5rem;font-size:1.35rem}.btn-icon-split{padding:0;overflow:hidden;display:inline-flex;align-items:stretch;justify-content:center}.btn-icon-split .icon{background:rgba(0,0,0,0.15);display:inline-block;padding:.375rem .75rem}.btn-icon-split .text{display:inline-block;padding:.375rem .75rem}.btn-icon-split.btn-sm .icon,.btn-group-sm>.btn-icon-split.btn .icon{padding:.25rem .5rem}.btn-icon-split.btn-sm .text,.btn-group-sm>.btn-icon-split.btn .text{padding:.25rem .5rem}.btn-icon-split.btn-lg .icon,.btn-group-lg>.btn-icon-split.btn .icon{padding:.5rem 1rem}.btn-icon-split.btn-lg .text,.btn-group-lg>.btn-icon-split.btn .text{padding:.5rem 1rem}.card .card-header .dropdown{line-height:1}.card .card-header .dropdown .dropdown-menu{line-height:1.5}.card .card-header[data-toggle="collapse"]{text-decoration:none;position:relative;padding:0.75rem 3.25rem 0.75rem 1.25rem}.card .card-header[data-toggle="collapse"]::after{position:absolute;right:0;top:0;padding-right:1.725rem;line-height:51px;font-weight:900;content:'\f107';font-family:'Font Awesome 5 Free';color:#d1d3e2}.card .card-header.collapsed[data-toggle="collapse"]{border-radius:.35rem}.card .card-header.collapsed[data-toggle="collapse"]::after{content:'\f105'}.chart-area{position:relative;height:10rem;width:100%}@media (min-width: 768px){.chart-area{height:20rem}}.chart-bar{position:relative;height:10rem;width:100%}@media (min-width: 768px){.chart-bar{height:20rem}}.chart-pie{position:relative;height:15rem;width:100%}@media (min-width: 768px){.chart-pie{height:calc(20rem - 43px) !important}}.bg-login-image{background:url("https://source.unsplash.com/K4mSJ7kc0As/600x800");background-position:center;background-size:cover}.bg-register-image{background:url("https://source.unsplash.com/Mv9hjnEUHR4/600x800");background-position:center;background-size:cover}.bg-password-image{background:url("https://source.unsplash.com/oWTW-jNGl9I/600x800");background-position:center;background-size:cover}form.user .custom-checkbox.small label{line-height:1.5rem}form.user .form-control-user{font-size:0.8rem;border-radius:10rem;padding:1.5rem 1rem}form.user .btn-user{font-size:0.8rem;border-radius:10rem;padding:0.75rem 1rem}.btn-google{color:#fff;background-color:#ea4335;border-color:#fff}.btn-google:hover{color:#fff;background-color:#e12717;border-color:#e6e6e6}.btn-google:focus,.btn-google.focus{color:#fff;background-color:#e12717;border-color:#e6e6e6;box-shadow:0 0 0 .2rem rgba(255,255,255,0.5)}.btn-google.disabled,.btn-google:disabled{color:#fff;background-color:#ea4335;border-color:#fff}.btn-google:not(:disabled):not(.disabled):active,.btn-google.active:not(:disabled):not(.disabled),.show>.btn-google.dropdown-toggle{color:#fff;background-color:#d62516;border-color:#dfdfdf}.btn-google:not(:disabled):not(.disabled):active:focus,.btn-google.active:not(:disabled):not(.disabled):focus,.show>.btn-google.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,255,255,0.5)}.btn-facebook{color:#fff;background-color:#3b5998;border-color:#fff}.btn-facebook:hover{color:#fff;background-color:#30497c;border-color:#e6e6e6}.btn-facebook:focus,.btn-facebook.focus{color:#fff;background-color:#30497c;border-color:#e6e6e6;box-shadow:0 0 0 .2rem rgba(255,255,255,0.5)}.btn-facebook.disabled,.btn-facebook:disabled{color:#fff;background-color:#3b5998;border-color:#fff}.btn-facebook:not(:disabled):not(.disabled):active,.btn-facebook.active:not(:disabled):not(.disabled),.show>.btn-facebook.dropdown-toggle{color:#fff;background-color:#2d4373;border-color:#dfdfdf}.btn-facebook:not(:disabled):not(.disabled):active:focus,.btn-facebook.active:not(:disabled):not(.disabled):focus,.show>.btn-facebook.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,255,255,0.5)}.error{color:#5a5c69;font-size:7rem;position:relative;line-height:1;width:12.5rem}@keyframes noise-anim{0%{clip:rect(98px, 9999px, 89px, 0)}5%{clip:rect(7px, 9999px, 18px, 0)}10%{clip:rect(41px, 9999px, 46px, 0)}15%{clip:rect(62px, 9999px, 14px, 0)}20%{clip:rect(64px, 9999px, 26px, 0)}25%{clip:rect(94px, 9999px, 15px, 0)}30%{clip:rect(29px, 9999px, 73px, 0)}35%{clip:rect(48px, 9999px, 77px, 0)}40%{clip:rect(83px, 9999px, 3px, 0)}45%{clip:rect(34px, 9999px, 24px, 0)}50%{clip:rect(96px, 9999px, 28px, 0)}55%{clip:rect(74px, 9999px, 55px, 0)}60%{clip:rect(55px, 9999px, 18px, 0)}65%{clip:rect(20px, 9999px, 65px, 0)}70%{clip:rect(8px, 9999px, 34px, 0)}75%{clip:rect(14px, 9999px, 47px, 0)}80%{clip:rect(99px, 9999px, 79px, 0)}85%{clip:rect(18px, 9999px, 6px, 0)}90%{clip:rect(83px, 9999px, 48px, 0)}95%{clip:rect(69px, 9999px, 18px, 0)}100%{clip:rect(99px, 9999px, 45px, 0)}}.error:after{content:attr(data-text);position:absolute;left:2px;text-shadow:-1px 0 #e74a3b;top:0;color:#5a5c69;background:#f8f9fc;overflow:hidden;clip:rect(0, 900px, 0, 0);animation:noise-anim 2s infinite linear alternate-reverse}@keyframes noise-anim-2{0%{clip:rect(66px, 9999px, 11px, 0)}5%{clip:rect(15px, 9999px, 10px, 0)}10%{clip:rect(9px, 9999px, 7px, 0)}15%{clip:rect(89px, 9999px, 84px, 0)}20%{clip:rect(4px, 9999px, 32px, 0)}25%{clip:rect(65px, 9999px, 99px, 0)}30%{clip:rect(35px, 9999px, 46px, 0)}35%{clip:rect(67px, 9999px, 46px, 0)}40%{clip:rect(53px, 9999px, 10px, 0)}45%{clip:rect(5px, 9999px, 93px, 0)}50%{clip:rect(3px, 9999px, 25px, 0)}55%{clip:rect(9px, 9999px, 100px, 0)}60%{clip:rect(84px, 9999px, 95px, 0)}65%{clip:rect(42px, 9999px, 29px, 0)}70%{clip:rect(12px, 9999px, 37px, 0)}75%{clip:rect(53px, 9999px, 76px, 0)}80%{clip:rect(63px, 9999px, 16px, 0)}85%{clip:rect(6px, 9999px, 76px, 0)}90%{clip:rect(7px, 9999px, 32px, 0)}95%{clip:rect(77px, 9999px, 39px, 0)}100%{clip:rect(18px, 9999px, 59px, 0)}}.error:before{content:attr(data-text);position:absolute;left:-2px;text-shadow:1px 0 #4e73df;top:0;color:#5a5c69;background:#f8f9fc;overflow:hidden;clip:rect(0, 900px, 0, 0);animation:noise-anim-2 3s infinite linear alternate-reverse}footer.sticky-footer{padding:2rem 0;flex-shrink:0}footer.sticky-footer .copyright{line-height:1;font-size:0.8rem}body.sidebar-toggled footer.sticky-footer{width:100%}
+ */:root{--blue: #4e73df;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #e74a3b;--orange: #fd7e14;--yellow: #f6c23e;--green: #1cc88a;--teal: #20c9a6;--cyan: #36b9cc;--white: #fff;--gray: #858796;--gray-dark: #5a5c69;--primary: #4e73df;--secondary: #858796;--success: #1cc88a;--info: #36b9cc;--warning: #f6c23e;--danger: #e74a3b;--light: #f8f9fc;--dark: #5a5c69;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#858796;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#4e73df;text-decoration:none;background-color:transparent}a:hover{color:#224abe;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#858796;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:dotted 1px;outline:-webkit-focus-ring-color auto 5px}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role="button"]{cursor:pointer}select{word-wrap:normal}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button:not(:disabled),[type="button"]:not(:disabled),[type="reset"]:not(:disabled),[type="submit"]:not(:disabled){cursor:pointer}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-weight:400;line-height:1.2}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#858796}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dddfeb;border-radius:.35rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#858796}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#3a3b45;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#3a3b45}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-xl,.container-lg,.container-md,.container-sm{width:100%;padding-right:.75rem;padding-left:.75rem;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}.row{display:flex;flex-wrap:wrap;margin-right:-.75rem;margin-left:-.75rem}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-xl,.col-xl-auto,.col-xl-12,.col-xl-11,.col-xl-10,.col-xl-9,.col-xl-8,.col-xl-7,.col-xl-6,.col-xl-5,.col-xl-4,.col-xl-3,.col-xl-2,.col-xl-1,.col-lg,.col-lg-auto,.col-lg-12,.col-lg-11,.col-lg-10,.col-lg-9,.col-lg-8,.col-lg-7,.col-lg-6,.col-lg-5,.col-lg-4,.col-lg-3,.col-lg-2,.col-lg-1,.col-md,.col-md-auto,.col-md-12,.col-md-11,.col-md-10,.col-md-9,.col-md-8,.col-md-7,.col-md-6,.col-md-5,.col-md-4,.col-md-3,.col-md-2,.col-md-1,.col-sm,.col-sm-auto,.col-sm-12,.col-sm-11,.col-sm-10,.col-sm-9,.col-sm-8,.col-sm-7,.col-sm-6,.col-sm-5,.col-sm-4,.col-sm-3,.col-sm-2,.col-sm-1,.col,.col-auto,.col-12,.col-11,.col-10,.col-9,.col-8,.col-7,.col-6,.col-5,.col-4,.col-3,.col-2,.col-1{position:relative;width:100%;padding-right:.75rem;padding-left:.75rem}.col{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-lg-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;margin-bottom:1rem;color:#858796}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #e3e6f0}.table thead th{vertical-align:bottom;border-bottom:2px solid #e3e6f0}.table tbody+tbody{border-top:2px solid #e3e6f0}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #e3e6f0}.table-bordered th,.table-bordered td{border:1px solid #e3e6f0}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{color:#858796;background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#cdd8f6}.table-primary th,.table-primary td,.table-primary thead th,.table-primary tbody+tbody{border-color:#a3b6ee}.table-hover .table-primary:hover{background-color:#b7c7f2}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#b7c7f2}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#dddde2}.table-secondary th,.table-secondary td,.table-secondary thead th,.table-secondary tbody+tbody{border-color:#c0c1c8}.table-hover .table-secondary:hover{background-color:#cfcfd6}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#cfcfd6}.table-success,.table-success>th,.table-success>td{background-color:#bff0de}.table-success th,.table-success td,.table-success thead th,.table-success tbody+tbody{border-color:#89e2c2}.table-hover .table-success:hover{background-color:#aaebd3}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#aaebd3}.table-info,.table-info>th,.table-info>td{background-color:#c7ebf1}.table-info th,.table-info td,.table-info thead th,.table-info tbody+tbody{border-color:#96dbe4}.table-hover .table-info:hover{background-color:#b3e4ec}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#b3e4ec}.table-warning,.table-warning>th,.table-warning>td{background-color:#fceec9}.table-warning th,.table-warning td,.table-warning thead th,.table-warning tbody+tbody{border-color:#fadf9b}.table-hover .table-warning:hover{background-color:#fbe6b1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#fbe6b1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f8ccc8}.table-danger th,.table-danger td,.table-danger thead th,.table-danger tbody+tbody{border-color:#f3a199}.table-hover .table-danger:hover{background-color:#f5b7b1}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f5b7b1}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-light th,.table-light td,.table-light thead th,.table-light tbody+tbody{border-color:#fbfcfd}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#d1d1d5}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:#a9aab1}.table-hover .table-dark:hover{background-color:#c4c4c9}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#c4c4c9}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#5a5c69;border-color:#6c6e7e}.table .thead-light th{color:#6e707e;background-color:#eaecf4;border-color:#e3e6f0}.table-dark{color:#fff;background-color:#5a5c69}.table-dark th,.table-dark td,.table-dark thead th{border-color:#6c6e7e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#6e707e;background-color:#fff;background-clip:padding-box;border:1px solid #d1d3e2;border-radius:.35rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #6e707e}.form-control:focus{color:#6e707e;background-color:#fff;border-color:#bac8f3;outline:0;box-shadow:0 0 0 .2rem rgba(78,115,223,0.25)}.form-control::placeholder{color:#858796;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eaecf4;opacity:1}input.form-control[type="date"],input.form-control[type="time"],input.form-control[type="datetime-local"],input.form-control[type="month"]{appearance:none}select.form-control:focus::-ms-value{color:#6e707e;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#858796;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[size],select.form-control[multiple]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{color:#858796}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#1cc88a}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(28,200,138,0.9);border-radius:.35rem}.form-row>.col>.valid-tooltip,.form-row>[class*="col-"]>.valid-tooltip{left:5px}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#1cc88a;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%231cc88a' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#1cc88a;box-shadow:0 0 0 .2rem rgba(28,200,138,0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#1cc88a;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%231cc88a' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#1cc88a;box-shadow:0 0 0 .2rem rgba(28,200,138,0.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#1cc88a}.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip,.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip{display:block}.was-validated .custom-control-input:valid~.custom-control-label,.custom-control-input.is-valid~.custom-control-label{color:#1cc88a}.was-validated .custom-control-input:valid~.custom-control-label::before,.custom-control-input.is-valid~.custom-control-label::before{border-color:#1cc88a}.was-validated .custom-control-input:valid:checked~.custom-control-label::before,.custom-control-input.is-valid:checked~.custom-control-label::before{border-color:#34e3a4;background-color:#34e3a4}.was-validated .custom-control-input:valid:focus~.custom-control-label::before,.custom-control-input.is-valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(28,200,138,0.25)}.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before,.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before{border-color:#1cc88a}.was-validated .custom-file-input:valid~.custom-file-label,.custom-file-input.is-valid~.custom-file-label{border-color:#1cc88a}.was-validated .custom-file-input:valid:focus~.custom-file-label,.custom-file-input.is-valid:focus~.custom-file-label{border-color:#1cc88a;box-shadow:0 0 0 .2rem rgba(28,200,138,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#e74a3b}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(231,74,59,0.9);border-radius:.35rem}.form-row>.col>.invalid-tooltip,.form-row>[class*="col-"]>.invalid-tooltip{left:5px}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#e74a3b;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23e74a3b' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74a3b' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#e74a3b;box-shadow:0 0 0 .2rem rgba(231,74,59,0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#e74a3b;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23e74a3b' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74a3b' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#e74a3b;box-shadow:0 0 0 .2rem rgba(231,74,59,0.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#e74a3b}.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip,.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip{display:block}.was-validated .custom-control-input:invalid~.custom-control-label,.custom-control-input.is-invalid~.custom-control-label{color:#e74a3b}.was-validated .custom-control-input:invalid~.custom-control-label::before,.custom-control-input.is-invalid~.custom-control-label::before{border-color:#e74a3b}.was-validated .custom-control-input:invalid:checked~.custom-control-label::before,.custom-control-input.is-invalid:checked~.custom-control-label::before{border-color:#ed7468;background-color:#ed7468}.was-validated .custom-control-input:invalid:focus~.custom-control-label::before,.custom-control-input.is-invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(231,74,59,0.25)}.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before,.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before{border-color:#e74a3b}.was-validated .custom-file-input:invalid~.custom-file-label,.custom-file-input.is-invalid~.custom-file-label{border-color:#e74a3b}.was-validated .custom-file-input:invalid:focus~.custom-file-label,.custom-file-input.is-invalid:focus~.custom-file-label{border-color:#e74a3b;box-shadow:0 0 0 .2rem rgba(231,74,59,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#858796;text-align:center;vertical-align:middle;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.35rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#858796;text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(78,115,223,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#4e73df;border-color:#4e73df}.btn-primary:hover{color:#fff;background-color:#2e59d9;border-color:#2653d4}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#2e59d9;border-color:#2653d4;box-shadow:0 0 0 .2rem rgba(105,136,228,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#4e73df;border-color:#4e73df}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary.active:not(:disabled):not(.disabled),.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#2653d4;border-color:#244ec9}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary.active:not(:disabled):not(.disabled):focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(105,136,228,0.5)}.btn-secondary{color:#fff;background-color:#858796;border-color:#858796}.btn-secondary:hover{color:#fff;background-color:#717384;border-color:#6b6d7d}.btn-secondary:focus,.btn-secondary.focus{color:#fff;background-color:#717384;border-color:#6b6d7d;box-shadow:0 0 0 .2rem rgba(151,153,166,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#858796;border-color:#858796}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary.active:not(:disabled):not(.disabled),.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#6b6d7d;border-color:#656776}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary.active:not(:disabled):not(.disabled):focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(151,153,166,0.5)}.btn-success{color:#fff;background-color:#1cc88a;border-color:#1cc88a}.btn-success:hover{color:#fff;background-color:#17a673;border-color:#169b6b}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#17a673;border-color:#169b6b;box-shadow:0 0 0 .2rem rgba(62,208,156,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#1cc88a;border-color:#1cc88a}.btn-success:not(:disabled):not(.disabled):active,.btn-success.active:not(:disabled):not(.disabled),.show>.btn-success.dropdown-toggle{color:#fff;background-color:#169b6b;border-color:#149063}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success.active:not(:disabled):not(.disabled):focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(62,208,156,0.5)}.btn-info{color:#fff;background-color:#36b9cc;border-color:#36b9cc}.btn-info:hover{color:#fff;background-color:#2c9faf;border-color:#2a96a5}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#2c9faf;border-color:#2a96a5;box-shadow:0 0 0 .2rem rgba(84,196,212,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#36b9cc;border-color:#36b9cc}.btn-info:not(:disabled):not(.disabled):active,.btn-info.active:not(:disabled):not(.disabled),.show>.btn-info.dropdown-toggle{color:#fff;background-color:#2a96a5;border-color:#278c9b}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info.active:not(:disabled):not(.disabled):focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(84,196,212,0.5)}.btn-warning{color:#fff;background-color:#f6c23e;border-color:#f6c23e}.btn-warning:hover{color:#fff;background-color:#f4b619;border-color:#f4b30d}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#f4b619;border-color:#f4b30d;box-shadow:0 0 0 .2rem rgba(247,203,91,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#fff;background-color:#f6c23e;border-color:#f6c23e}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning.active:not(:disabled):not(.disabled),.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#f4b30d;border-color:#e9aa0b}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning.active:not(:disabled):not(.disabled):focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(247,203,91,0.5)}.btn-danger{color:#fff;background-color:#e74a3b;border-color:#e74a3b}.btn-danger:hover{color:#fff;background-color:#e02d1b;border-color:#d52a1a}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#e02d1b;border-color:#d52a1a;box-shadow:0 0 0 .2rem rgba(235,101,88,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#e74a3b;border-color:#e74a3b}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger.active:not(:disabled):not(.disabled),.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#d52a1a;border-color:#ca2819}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger.active:not(:disabled):not(.disabled):focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(235,101,88,0.5)}.btn-light{color:#3a3b45;background-color:#f8f9fc;border-color:#f8f9fc}.btn-light:hover{color:#3a3b45;background-color:#dde2f1;border-color:#d4daed}.btn-light:focus,.btn-light.focus{color:#3a3b45;background-color:#dde2f1;border-color:#d4daed;box-shadow:0 0 0 .2rem rgba(220,221,225,0.5)}.btn-light.disabled,.btn-light:disabled{color:#3a3b45;background-color:#f8f9fc;border-color:#f8f9fc}.btn-light:not(:disabled):not(.disabled):active,.btn-light.active:not(:disabled):not(.disabled),.show>.btn-light.dropdown-toggle{color:#3a3b45;background-color:#d4daed;border-color:#cbd3e9}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light.active:not(:disabled):not(.disabled):focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,221,225,0.5)}.btn-dark{color:#fff;background-color:#5a5c69;border-color:#5a5c69}.btn-dark:hover{color:#fff;background-color:#484a54;border-color:#42444e}.btn-dark:focus,.btn-dark.focus{color:#fff;background-color:#484a54;border-color:#42444e;box-shadow:0 0 0 .2rem rgba(115,116,128,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#5a5c69;border-color:#5a5c69}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark.active:not(:disabled):not(.disabled),.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#42444e;border-color:#3d3e47}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark.active:not(:disabled):not(.disabled):focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(115,116,128,0.5)}.btn-outline-primary{color:#4e73df;border-color:#4e73df}.btn-outline-primary:hover{color:#fff;background-color:#4e73df;border-color:#4e73df}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(78,115,223,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#4e73df;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary.active:not(:disabled):not(.disabled),.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#4e73df;border-color:#4e73df}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(78,115,223,0.5)}.btn-outline-secondary{color:#858796;border-color:#858796}.btn-outline-secondary:hover{color:#fff;background-color:#858796;border-color:#858796}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(133,135,150,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#858796;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary.active:not(:disabled):not(.disabled),.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#858796;border-color:#858796}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(133,135,150,0.5)}.btn-outline-success{color:#1cc88a;border-color:#1cc88a}.btn-outline-success:hover{color:#fff;background-color:#1cc88a;border-color:#1cc88a}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(28,200,138,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#1cc88a;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success.active:not(:disabled):not(.disabled),.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#1cc88a;border-color:#1cc88a}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(28,200,138,0.5)}.btn-outline-info{color:#36b9cc;border-color:#36b9cc}.btn-outline-info:hover{color:#fff;background-color:#36b9cc;border-color:#36b9cc}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(54,185,204,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#36b9cc;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info.active:not(:disabled):not(.disabled),.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#36b9cc;border-color:#36b9cc}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(54,185,204,0.5)}.btn-outline-warning{color:#f6c23e;border-color:#f6c23e}.btn-outline-warning:hover{color:#fff;background-color:#f6c23e;border-color:#f6c23e}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(246,194,62,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#f6c23e;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning.active:not(:disabled):not(.disabled),.show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f6c23e;border-color:#f6c23e}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(246,194,62,0.5)}.btn-outline-danger{color:#e74a3b;border-color:#e74a3b}.btn-outline-danger:hover{color:#fff;background-color:#e74a3b;border-color:#e74a3b}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(231,74,59,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#e74a3b;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger.active:not(:disabled):not(.disabled),.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#e74a3b;border-color:#e74a3b}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(231,74,59,0.5)}.btn-outline-light{color:#f8f9fc;border-color:#f8f9fc}.btn-outline-light:hover{color:#3a3b45;background-color:#f8f9fc;border-color:#f8f9fc}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,252,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fc;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light.active:not(:disabled):not(.disabled),.show>.btn-outline-light.dropdown-toggle{color:#3a3b45;background-color:#f8f9fc;border-color:#f8f9fc}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,252,0.5)}.btn-outline-dark{color:#5a5c69;border-color:#5a5c69}.btn-outline-dark:hover{color:#fff;background-color:#5a5c69;border-color:#5a5c69}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(90,92,105,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#5a5c69;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark.active:not(:disabled):not(.disabled),.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#5a5c69;border-color:#5a5c69}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark.active:not(:disabled):not(.disabled):focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(90,92,105,0.5)}.btn-link{font-weight:400;color:#4e73df;text-decoration:none}.btn-link:hover{color:#224abe;text-decoration:underline}.btn-link:focus,.btn-link.focus{text-decoration:underline}.btn-link:disabled,.btn-link.disabled{color:#858796;pointer-events:none}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input.btn-block[type="submit"],input.btn-block[type="reset"],input.btn-block[type="button"]{width:100%}.fade{transition:opacity 0.15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.15s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.dropup,.dropright,.dropdown,.dropleft{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:.85rem;color:#858796;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #e3e6f0;border-radius:.35rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^="top"],.dropdown-menu[x-placement^="right"],.dropdown-menu[x-placement^="bottom"],.dropdown-menu[x-placement^="left"]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #eaecf4}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#3a3b45;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#2e2f37;text-decoration:none;background-color:#f8f9fc}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#4e73df}.dropdown-item.disabled,.dropdown-item:disabled{color:#858796;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#858796;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#3a3b45}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-control-plaintext,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.form-control-plaintext+.form-control,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file .custom-file-input:focus~.custom-file-label{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.form-control:not(:last-child),.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.form-control:nth-last-child(n + 3),.input-group.has-validation>.custom-select:nth-last-child(n + 3),.input-group.has-validation>.custom-file:nth-last-child(n + 3) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn:focus,.input-group-append .btn:focus{z-index:3}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#6e707e;text-align:center;white-space:nowrap;background-color:#eaecf4;border:1px solid #d1d3e2;border-radius:.35rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group-lg>.form-control:not(textarea),.input-group-lg>.custom-select{height:calc(1.5em + 1rem + 2px)}.input-group-lg>.form-control,.input-group-lg>.custom-select,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.form-control:not(textarea),.input-group-sm>.custom-select{height:calc(1.5em + .5rem + 2px)}.input-group-sm>.form-control,.input-group-sm>.custom-select,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group.has-validation>.input-group-append:nth-last-child(n + 3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n + 3)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;color-adjust:exact}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#4e73df;background-color:#4e73df}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(78,115,223,0.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#bac8f3}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#e5ebfa;border-color:#e5ebfa}.custom-control-input[disabled]~.custom-control-label,.custom-control-input:disabled~.custom-control-label{color:#858796}.custom-control-input[disabled]~.custom-control-label::before,.custom-control-input:disabled~.custom-control-label::before{background-color:#eaecf4}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#b7b9cc solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50% / 50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.35rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#4e73df;background-color:#4e73df}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(78,115,223,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(78,115,223,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(78,115,223,0.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#b7b9cc;border-radius:.5rem;transition:transform 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(78,115,223,0.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#6e707e;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #d1d3e2;border-radius:.35rem;appearance:none}.custom-select:focus{border-color:#bac8f3;outline:0;box-shadow:0 0 0 .2rem rgba(78,115,223,0.25)}.custom-select:focus::-ms-value{color:#6e707e;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#858796;background-color:#eaecf4}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #6e707e}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#bac8f3;box-shadow:0 0 0 .2rem rgba(78,115,223,0.25)}.custom-file-input[disabled]~.custom-file-label,.custom-file-input:disabled~.custom-file-label{background-color:#eaecf4}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#6e707e;background-color:#fff;border:1px solid #d1d3e2;border-radius:.35rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#6e707e;content:"Browse";background-color:#eaecf4;border-left:inherit;border-radius:0 .35rem .35rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(78,115,223,0.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(78,115,223,0.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(78,115,223,0.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#4e73df;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#e5ebfa}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dddfeb;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#4e73df;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#e5ebfa}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dddfeb;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#4e73df;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#e5ebfa}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dddfeb;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dddfeb;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#b7b9cc}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#b7b9cc}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#b7b9cc}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#858796;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dddfeb}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#eaecf4 #eaecf4 #dddfeb}.nav-tabs .nav-link.disabled{color:#858796;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#6e707e;background-color:#fff;border-color:#dddfeb #dddfeb #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.35rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#4e73df}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-sm,.navbar .container-md,.navbar .container-lg,.navbar .container-xl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.35rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50% / 100% 100% no-repeat}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-xl{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-md,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-md,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-xl{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-xl{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-xl{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-sm,.navbar-expand>.container-md,.navbar-expand>.container-lg,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-sm,.navbar-expand>.container-md,.navbar-expand>.container-lg,.navbar-expand>.container-xl{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280,0,0,0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid #e3e6f0;border-radius:.35rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.35rem - 1px);border-top-right-radius:calc(.35rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.35rem - 1px);border-bottom-left-radius:calc(.35rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid #e3e6f0}.card-header:first-child{border-radius:calc(.35rem - 1px) calc(.35rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid #e3e6f0}.card-footer:last-child{border-radius:0 0 calc(.35rem - 1px) calc(.35rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.35rem - 1px)}.card-img,.card-img-top,.card-img-bottom{flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.35rem - 1px);border-top-right-radius:calc(.35rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.35rem - 1px);border-bottom-left-radius:calc(.35rem - 1px)}.card-deck .card{margin-bottom:.75rem}@media (min-width: 576px){.card-deck{display:flex;flex-flow:row wrap;margin-right:-.75rem;margin-left:-.75rem}.card-deck .card{flex:1 0 0%;margin-right:.75rem;margin-bottom:0;margin-left:.75rem}}.card-group>.card{margin-bottom:.75rem}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#eaecf4;border-radius:.35rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#858796;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#858796}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.35rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#4e73df;background-color:#fff;border:1px solid #dddfeb}.page-link:hover{z-index:2;color:#224abe;text-decoration:none;background-color:#eaecf4;border-color:#dddfeb}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(78,115,223,0.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.35rem;border-bottom-left-radius:.35rem}.page-item:last-child .page-link{border-top-right-radius:.35rem;border-bottom-right-radius:.35rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#4e73df;border-color:#4e73df}.page-item.disabled .page-link{color:#858796;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dddfeb}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.35rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.badge{transition:none}}a.badge:hover,a.badge:focus{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#4e73df}a.badge-primary:hover,a.badge-primary:focus{color:#fff;background-color:#2653d4}a.badge-primary:focus,a.badge-primary.focus{outline:0;box-shadow:0 0 0 .2rem rgba(78,115,223,0.5)}.badge-secondary{color:#fff;background-color:#858796}a.badge-secondary:hover,a.badge-secondary:focus{color:#fff;background-color:#6b6d7d}a.badge-secondary:focus,a.badge-secondary.focus{outline:0;box-shadow:0 0 0 .2rem rgba(133,135,150,0.5)}.badge-success{color:#fff;background-color:#1cc88a}a.badge-success:hover,a.badge-success:focus{color:#fff;background-color:#169b6b}a.badge-success:focus,a.badge-success.focus{outline:0;box-shadow:0 0 0 .2rem rgba(28,200,138,0.5)}.badge-info{color:#fff;background-color:#36b9cc}a.badge-info:hover,a.badge-info:focus{color:#fff;background-color:#2a96a5}a.badge-info:focus,a.badge-info.focus{outline:0;box-shadow:0 0 0 .2rem rgba(54,185,204,0.5)}.badge-warning{color:#fff;background-color:#f6c23e}a.badge-warning:hover,a.badge-warning:focus{color:#fff;background-color:#f4b30d}a.badge-warning:focus,a.badge-warning.focus{outline:0;box-shadow:0 0 0 .2rem rgba(246,194,62,0.5)}.badge-danger{color:#fff;background-color:#e74a3b}a.badge-danger:hover,a.badge-danger:focus{color:#fff;background-color:#d52a1a}a.badge-danger:focus,a.badge-danger.focus{outline:0;box-shadow:0 0 0 .2rem rgba(231,74,59,0.5)}.badge-light{color:#3a3b45;background-color:#f8f9fc}a.badge-light:hover,a.badge-light:focus{color:#3a3b45;background-color:#d4daed}a.badge-light:focus,a.badge-light.focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,252,0.5)}.badge-dark{color:#fff;background-color:#5a5c69}a.badge-dark:hover,a.badge-dark:focus{color:#fff;background-color:#42444e}a.badge-dark:focus,a.badge-dark.focus{outline:0;box-shadow:0 0 0 .2rem rgba(90,92,105,0.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eaecf4;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.35rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#293c74;background-color:#dce3f9;border-color:#cdd8f6}.alert-primary hr{border-top-color:#b7c7f2}.alert-primary .alert-link{color:#1c294e}.alert-secondary{color:#45464e;background-color:#e7e7ea;border-color:#dddde2}.alert-secondary hr{border-top-color:#cfcfd6}.alert-secondary .alert-link{color:#2d2e33}.alert-success{color:#0f6848;background-color:#d2f4e8;border-color:#bff0de}.alert-success hr{border-top-color:#aaebd3}.alert-success .alert-link{color:#093b29}.alert-info{color:#1c606a;background-color:#d7f1f5;border-color:#c7ebf1}.alert-info hr{border-top-color:#b3e4ec}.alert-info .alert-link{color:#113b42}.alert-warning{color:#806520;background-color:#fdf3d8;border-color:#fceec9}.alert-warning hr{border-top-color:#fbe6b1}.alert-warning .alert-link{color:#574516}.alert-danger{color:#78261f;background-color:#fadbd8;border-color:#f8ccc8}.alert-danger hr{border-top-color:#f5b7b1}.alert-danger .alert-link{color:#4f1915}.alert-light{color:#818183;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686869}.alert-dark{color:#2f3037;background-color:#dedee1;border-color:#d1d1d5}.alert-dark hr{border-top-color:#c4c4c9}.alert-dark .alert-link{color:#18181c}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#eaecf4;border-radius:.35rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#4e73df;transition:width 0.6s ease}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.35rem}.list-group-item-action{width:100%;color:#6e707e;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#6e707e;text-decoration:none;background-color:#f8f9fc}.list-group-item-action:active{color:#858796;background-color:#eaecf4}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#858796;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#4e73df;border-color:#4e73df}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.35rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.35rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.35rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.35rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.35rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.35rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.35rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.35rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.35rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.35rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#293c74;background-color:#cdd8f6}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#293c74;background-color:#b7c7f2}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#293c74;border-color:#293c74}.list-group-item-secondary{color:#45464e;background-color:#dddde2}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#45464e;background-color:#cfcfd6}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#45464e;border-color:#45464e}.list-group-item-success{color:#0f6848;background-color:#bff0de}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#0f6848;background-color:#aaebd3}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f6848;border-color:#0f6848}.list-group-item-info{color:#1c606a;background-color:#c7ebf1}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#1c606a;background-color:#b3e4ec}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#1c606a;border-color:#1c606a}.list-group-item-warning{color:#806520;background-color:#fceec9}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#806520;background-color:#fbe6b1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#806520;border-color:#806520}.list-group-item-danger{color:#78261f;background-color:#f8ccc8}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#78261f;background-color:#f5b7b1}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#78261f;border-color:#78261f}.list-group-item-light{color:#818183;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818183;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818183;border-color:#818183}.list-group-item-dark{color:#2f3037;background-color:#d1d1d5}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#2f3037;background-color:#c4c4c9}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#2f3037;border-color:#2f3037}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):hover,.close:not(:disabled):not(.disabled):focus{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border:1px solid rgba(0,0,0,0.1);box-shadow:0 0.25rem 0.75rem rgba(0,0,0,0.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#858796;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,0.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-header,.modal-dialog-scrollable .modal-footer{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #e3e6f0;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #e3e6f0;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:min-content}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width: 1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.35rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top>.arrow,.bs-popover-auto[x-placement^="top"]>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-top>.arrow::before,.bs-popover-auto[x-placement^="top"]>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top>.arrow::after,.bs-popover-auto[x-placement^="top"]>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right>.arrow,.bs-popover-auto[x-placement^="right"]>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right>.arrow::before,.bs-popover-auto[x-placement^="right"]>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right>.arrow::after,.bs-popover-auto[x-placement^="right"]>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom>.arrow,.bs-popover-auto[x-placement^="bottom"]>.arrow{top:calc(-.5rem - 1px)}.bs-popover-bottom>.arrow::before,.bs-popover-auto[x-placement^="bottom"]>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom>.arrow::after,.bs-popover-auto[x-placement^="bottom"]>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left>.arrow,.bs-popover-auto[x-placement^="left"]>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left>.arrow::before,.bs-popover-auto[x-placement^="left"]>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left>.arrow::after,.bs-popover-auto[x-placement^="left"]>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#858796}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-left),.active.carousel-item-right{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-right),.active.carousel-item-left{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity 0.15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:50% / 100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity 0.6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#4e73df !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#2653d4 !important}.bg-secondary{background-color:#858796 !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#6b6d7d !important}.bg-success{background-color:#1cc88a !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#169b6b !important}.bg-info{background-color:#36b9cc !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#2a96a5 !important}.bg-warning{background-color:#f6c23e !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#f4b30d !important}.bg-danger{background-color:#e74a3b !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#d52a1a !important}.bg-light{background-color:#f8f9fc !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#d4daed !important}.bg-dark{background-color:#5a5c69 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#42444e !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #e3e6f0 !important}.border-top{border-top:1px solid #e3e6f0 !important}.border-right{border-right:1px solid #e3e6f0 !important}.border-bottom{border-bottom:1px solid #e3e6f0 !important}.border-left{border-left:1px solid #e3e6f0 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#4e73df !important}.border-secondary{border-color:#858796 !important}.border-success{border-color:#1cc88a !important}.border-info{border-color:#36b9cc !important}.border-warning{border-color:#f6c23e !important}.border-danger{border-color:#e74a3b !important}.border-light{border-color:#f8f9fc !important}.border-dark{border-color:#5a5c69 !important}.border-white{border-color:#fff !important}.rounded-sm{border-radius:.2rem !important}.rounded{border-radius:.35rem !important}.rounded-top{border-top-left-radius:.35rem !important;border-top-right-radius:.35rem !important}.rounded-right{border-top-right-radius:.35rem !important;border-bottom-right-radius:.35rem !important}.rounded-bottom{border-bottom-right-radius:.35rem !important;border-bottom-left-radius:.35rem !important}.rounded-left{border-top-left-radius:.35rem !important;border-bottom-left-radius:.35rem !important}.rounded-lg{border-radius:.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.8571428571%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 0.125rem 0.25rem 0 rgba(58,59,69,0.2) !important}.shadow{box-shadow:0 0.15rem 1.75rem 0 rgba(58,59,69,0.15) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,0.175) !important}.shadow-none{box-shadow:none !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.min-vw-100{min-width:100vw !important}.min-vh-100{min-height:100vh !important}.vw-100{width:100vw !important}.vh-100{height:100vh !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-n1{margin:-.25rem !important}.mt-n1,.my-n1{margin-top:-.25rem !important}.mr-n1,.mx-n1{margin-right:-.25rem !important}.mb-n1,.my-n1{margin-bottom:-.25rem !important}.ml-n1,.mx-n1{margin-left:-.25rem !important}.m-n2{margin:-.5rem !important}.mt-n2,.my-n2{margin-top:-.5rem !important}.mr-n2,.mx-n2{margin-right:-.5rem !important}.mb-n2,.my-n2{margin-bottom:-.5rem !important}.ml-n2,.mx-n2{margin-left:-.5rem !important}.m-n3{margin:-1rem !important}.mt-n3,.my-n3{margin-top:-1rem !important}.mr-n3,.mx-n3{margin-right:-1rem !important}.mb-n3,.my-n3{margin-bottom:-1rem !important}.ml-n3,.mx-n3{margin-left:-1rem !important}.m-n4{margin:-1.5rem !important}.mt-n4,.my-n4{margin-top:-1.5rem !important}.mr-n4,.mx-n4{margin-right:-1.5rem !important}.mb-n4,.my-n4{margin-bottom:-1.5rem !important}.ml-n4,.mx-n4{margin-left:-1.5rem !important}.m-n5{margin:-3rem !important}.mt-n5,.my-n5{margin-top:-3rem !important}.mr-n5,.mx-n5{margin-right:-3rem !important}.mb-n5,.my-n5{margin-bottom:-3rem !important}.ml-n5,.mx-n5{margin-left:-3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-n1{margin:-.25rem !important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem !important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem !important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem !important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem !important}.m-sm-n2{margin:-.5rem !important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem !important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem !important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem !important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem !important}.m-sm-n3{margin:-1rem !important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem !important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem !important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem !important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem !important}.m-sm-n4{margin:-1.5rem !important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem !important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem !important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem !important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem !important}.m-sm-n5{margin:-3rem !important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem !important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem !important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem !important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-n1{margin:-.25rem !important}.mt-md-n1,.my-md-n1{margin-top:-.25rem !important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem !important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem !important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem !important}.m-md-n2{margin:-.5rem !important}.mt-md-n2,.my-md-n2{margin-top:-.5rem !important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem !important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem !important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem !important}.m-md-n3{margin:-1rem !important}.mt-md-n3,.my-md-n3{margin-top:-1rem !important}.mr-md-n3,.mx-md-n3{margin-right:-1rem !important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem !important}.ml-md-n3,.mx-md-n3{margin-left:-1rem !important}.m-md-n4{margin:-1.5rem !important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem !important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem !important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem !important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem !important}.m-md-n5{margin:-3rem !important}.mt-md-n5,.my-md-n5{margin-top:-3rem !important}.mr-md-n5,.mx-md-n5{margin-right:-3rem !important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem !important}.ml-md-n5,.mx-md-n5{margin-left:-3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-n1{margin:-.25rem !important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem !important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem !important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem !important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem !important}.m-lg-n2{margin:-.5rem !important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem !important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem !important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem !important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem !important}.m-lg-n3{margin:-1rem !important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem !important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem !important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem !important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem !important}.m-lg-n4{margin:-1.5rem !important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem !important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem !important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem !important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem !important}.m-lg-n5{margin:-3rem !important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem !important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem !important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem !important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-n1{margin:-.25rem !important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem !important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem !important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem !important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem !important}.m-xl-n2{margin:-.5rem !important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem !important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem !important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem !important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem !important}.m-xl-n3{margin:-1rem !important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem !important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem !important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem !important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem !important}.m-xl-n4{margin:-1.5rem !important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem !important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem !important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem !important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem !important}.m-xl-n5{margin:-3rem !important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem !important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem !important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem !important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace !important}.text-justify{text-align:justify !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase,.sidebar .sidebar-heading,.dropdown .dropdown-menu .dropdown-header{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-lighter{font-weight:lighter !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-weight-bolder{font-weight:bolder !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#4e73df !important}a.text-primary:hover,a.text-primary:focus{color:#224abe !important}.text-secondary{color:#858796 !important}a.text-secondary:hover,a.text-secondary:focus{color:#60616f !important}.text-success{color:#1cc88a !important}a.text-success:hover,a.text-success:focus{color:#13855c !important}.text-info{color:#36b9cc !important}a.text-info:hover,a.text-info:focus{color:#258391 !important}.text-warning{color:#f6c23e !important}a.text-warning:hover,a.text-warning:focus{color:#dda20a !important}.text-danger{color:#e74a3b !important}a.text-danger:hover,a.text-danger:focus{color:#be2617 !important}.text-light{color:#f8f9fc !important}a.text-light:hover,a.text-light:focus{color:#c2cbe5 !important}.text-dark{color:#5a5c69 !important}a.text-dark:hover,a.text-dark:focus{color:#373840 !important}.text-body{color:#858796 !important}.text-muted{color:#858796 !important}.text-black-50{color:rgba(0,0,0,0.5) !important}.text-white-50{color:rgba(255,255,255,0.5) !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none !important}.text-break{word-break:break-word !important;word-wrap:break-word !important}.text-reset{color:inherit !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #b7b9cc;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #dddfeb !important}.table-dark{color:inherit}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:#e3e6f0}.table .thead-dark th{color:inherit;border-color:#e3e6f0}}html{position:relative;min-height:100%}body{height:100%}a:focus{outline:none}#wrapper{display:flex}#wrapper #content-wrapper{background-color:#f8f9fc;width:100%;overflow-x:hidden}#wrapper #content-wrapper #content{flex:1 0 auto}.container,.container-fluid,.container-sm,.container-md,.container-lg,.container-xl{padding-left:1.5rem;padding-right:1.5rem}.scroll-to-top{position:fixed;right:1rem;bottom:1rem;display:none;width:2.75rem;height:2.75rem;text-align:center;color:#fff;background:rgba(90,92,105,0.5);line-height:46px}.scroll-to-top:focus,.scroll-to-top:hover{color:white}.scroll-to-top:hover{background:#5a5c69}.scroll-to-top i{font-weight:800}@keyframes growIn{0%{transform:scale(0.9);opacity:0}100%{transform:scale(1);opacity:1}}.animated--grow-in,.sidebar .nav-item .collapse{animation-name:growIn;animation-duration:200ms;animation-timing-function:transform cubic-bezier(0.18, 1.25, 0.4, 1),opacity cubic-bezier(0, 1, 0.4, 1)}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.animated--fade-in{animation-name:fadeIn;animation-duration:200ms;animation-timing-function:opacity cubic-bezier(0, 1, 0.4, 1)}.bg-gradient-primary{background-color:#4e73df;background-image:linear-gradient(180deg, #4e73df 10%, #224abe 100%);background-size:cover}.bg-gradient-secondary{background-color:#858796;background-image:linear-gradient(180deg, #858796 10%, #60616f 100%);background-size:cover}.bg-gradient-success{background-color:#1cc88a;background-image:linear-gradient(180deg, #1cc88a 10%, #13855c 100%);background-size:cover}.bg-gradient-info{background-color:#36b9cc;background-image:linear-gradient(180deg, #36b9cc 10%, #258391 100%);background-size:cover}.bg-gradient-warning{background-color:#f6c23e;background-image:linear-gradient(180deg, #f6c23e 10%, #dda20a 100%);background-size:cover}.bg-gradient-danger{background-color:#e74a3b;background-image:linear-gradient(180deg, #e74a3b 10%, #be2617 100%);background-size:cover}.bg-gradient-light{background-color:#f8f9fc;background-image:linear-gradient(180deg, #f8f9fc 10%, #c2cbe5 100%);background-size:cover}.bg-gradient-dark{background-color:#5a5c69;background-image:linear-gradient(180deg, #5a5c69 10%, #373840 100%);background-size:cover}.bg-gray-100{background-color:#f8f9fc !important}.bg-gray-200{background-color:#eaecf4 !important}.bg-gray-300{background-color:#dddfeb !important}.bg-gray-400{background-color:#d1d3e2 !important}.bg-gray-500{background-color:#b7b9cc !important}.bg-gray-600{background-color:#858796 !important}.bg-gray-700{background-color:#6e707e !important}.bg-gray-800{background-color:#5a5c69 !important}.bg-gray-900{background-color:#3a3b45 !important}.o-hidden{overflow:hidden !important}.text-xs{font-size:.7rem}.text-lg{font-size:1.2rem}.text-gray-100{color:#f8f9fc !important}.text-gray-200{color:#eaecf4 !important}.text-gray-300{color:#dddfeb !important}.text-gray-400{color:#d1d3e2 !important}.text-gray-500{color:#b7b9cc !important}.text-gray-600{color:#858796 !important}.text-gray-700{color:#6e707e !important}.text-gray-800{color:#5a5c69 !important}.text-gray-900{color:#3a3b45 !important}.icon-circle{height:2.5rem;width:2.5rem;border-radius:100%;display:flex;align-items:center;justify-content:center}.border-left-primary{border-left:0.25rem solid #4e73df !important}.border-bottom-primary{border-bottom:0.25rem solid #4e73df !important}.border-left-secondary{border-left:0.25rem solid #858796 !important}.border-bottom-secondary{border-bottom:0.25rem solid #858796 !important}.border-left-success{border-left:0.25rem solid #1cc88a !important}.border-bottom-success{border-bottom:0.25rem solid #1cc88a !important}.border-left-info{border-left:0.25rem solid #36b9cc !important}.border-bottom-info{border-bottom:0.25rem solid #36b9cc !important}.border-left-warning{border-left:0.25rem solid #f6c23e !important}.border-bottom-warning{border-bottom:0.25rem solid #f6c23e !important}.border-left-danger{border-left:0.25rem solid #e74a3b !important}.border-bottom-danger{border-bottom:0.25rem solid #e74a3b !important}.border-left-light{border-left:0.25rem solid #f8f9fc !important}.border-bottom-light{border-bottom:0.25rem solid #f8f9fc !important}.border-left-dark{border-left:0.25rem solid #5a5c69 !important}.border-bottom-dark{border-bottom:0.25rem solid #5a5c69 !important}.progress-sm{height:.5rem}.rotate-15{transform:rotate(15deg)}.rotate-n-15{transform:rotate(-15deg)}.dropdown .dropdown-menu{font-size:.85rem}.dropdown .dropdown-menu .dropdown-header{font-weight:800;font-size:0.65rem;color:#b7b9cc}.dropdown.no-arrow .dropdown-toggle::after{display:none}.sidebar .nav-item.dropdown .dropdown-toggle::after,.topbar .nav-item.dropdown .dropdown-toggle::after{width:1rem;text-align:center;float:right;vertical-align:0;border:0;font-weight:900;content:'\f105';font-family:'Font Awesome 5 Free'}.sidebar .nav-item.dropdown.show .dropdown-toggle::after,.topbar .nav-item.dropdown.show .dropdown-toggle::after{content:'\f107'}.sidebar .nav-item .nav-link,.topbar .nav-item .nav-link{position:relative}.sidebar .nav-item .nav-link .badge-counter,.topbar .nav-item .nav-link .badge-counter{position:absolute;transform:scale(0.7);transform-origin:top right;right:.25rem;margin-top:-.25rem}.sidebar .nav-item .nav-link .img-profile,.topbar .nav-item .nav-link .img-profile{height:2rem;width:2rem}.topbar{height:4.375rem}.topbar #sidebarToggleTop{height:2.5rem;width:2.5rem}.topbar #sidebarToggleTop:hover{background-color:#eaecf4}.topbar #sidebarToggleTop:active{background-color:#dddfeb}.topbar .navbar-search{width:25rem}.topbar .navbar-search input{font-size:0.85rem;height:auto}.topbar .topbar-divider{width:0;border-right:1px solid #e3e6f0;height:calc(4.375rem - 2rem);margin:auto 1rem}.topbar .nav-item .nav-link{height:4.375rem;display:flex;align-items:center;padding:0 0.75rem}.topbar .nav-item .nav-link:focus{outline:none}.topbar .nav-item:focus{outline:none}.topbar .dropdown{position:static}.topbar .dropdown .dropdown-menu{width:calc(100% - 1.5rem);right:.75rem}.topbar .dropdown-list{padding:0;border:none;overflow:hidden}.topbar .dropdown-list .dropdown-header{background-color:#4e73df;border:1px solid #4e73df;padding-top:0.75rem;padding-bottom:0.75rem;color:#fff}.topbar .dropdown-list .dropdown-item{white-space:normal;padding-top:0.5rem;padding-bottom:0.5rem;border-left:1px solid #e3e6f0;border-right:1px solid #e3e6f0;border-bottom:1px solid #e3e6f0;line-height:1.3rem}.topbar .dropdown-list .dropdown-item .dropdown-list-image{position:relative;height:2.5rem;width:2.5rem}.topbar .dropdown-list .dropdown-item .dropdown-list-image img{height:2.5rem;width:2.5rem}.topbar .dropdown-list .dropdown-item .dropdown-list-image .status-indicator{background-color:#eaecf4;height:0.75rem;width:0.75rem;border-radius:100%;position:absolute;bottom:0;right:0;border:0.125rem solid #fff}.topbar .dropdown-list .dropdown-item .text-truncate{max-width:10rem}.topbar .dropdown-list .dropdown-item:active{background-color:#eaecf4;color:#3a3b45}@media (min-width: 576px){.topbar .dropdown{position:relative}.topbar .dropdown .dropdown-menu{width:auto;right:0}.topbar .dropdown-list{width:20rem !important}.topbar .dropdown-list .dropdown-item .text-truncate{max-width:13.375rem}}.topbar.navbar-dark .navbar-nav .nav-item .nav-link{color:rgba(255,255,255,0.8)}.topbar.navbar-dark .navbar-nav .nav-item .nav-link:hover{color:#fff}.topbar.navbar-dark .navbar-nav .nav-item .nav-link:active{color:#fff}.topbar.navbar-light .navbar-nav .nav-item .nav-link{color:#d1d3e2}.topbar.navbar-light .navbar-nav .nav-item .nav-link:hover{color:#b7b9cc}.topbar.navbar-light .navbar-nav .nav-item .nav-link:active{color:#858796}.sidebar{width:6.5rem;min-height:100vh}.sidebar .nav-item{position:relative}.sidebar .nav-item:last-child{margin-bottom:1rem}.sidebar .nav-item .nav-link{text-align:center;padding:0.75rem 1rem;width:6.5rem}.sidebar .nav-item .nav-link span{font-size:0.65rem;display:block}.sidebar .nav-item.active .nav-link{font-weight:700}.sidebar .nav-item .collapse{position:absolute;left:calc(6.5rem + 1.5rem / 2);z-index:1;top:2px}.sidebar .nav-item .collapse .collapse-inner{border-radius:.35rem;box-shadow:0 0.15rem 1.75rem 0 rgba(58,59,69,0.15)}.sidebar .nav-item .collapsing{display:none;transition:none}.sidebar .nav-item .collapse .collapse-inner,.sidebar .nav-item .collapsing .collapse-inner{padding:.5rem 0;min-width:10rem;font-size:.85rem;margin:0 0 1rem 0}.sidebar .nav-item .collapse .collapse-inner .collapse-header,.sidebar .nav-item .collapsing .collapse-inner .collapse-header{margin:0;white-space:nowrap;padding:.5rem 1.5rem;text-transform:uppercase;font-weight:800;font-size:0.65rem;color:#b7b9cc}.sidebar .nav-item .collapse .collapse-inner .collapse-item,.sidebar .nav-item .collapsing .collapse-inner .collapse-item{padding:0.5rem 1rem;margin:0 0.5rem;display:block;color:#3a3b45;text-decoration:none;border-radius:.35rem;white-space:nowrap}.sidebar .nav-item .collapse .collapse-inner .collapse-item:hover,.sidebar .nav-item .collapsing .collapse-inner .collapse-item:hover{background-color:#eaecf4}.sidebar .nav-item .collapse .collapse-inner .collapse-item:active,.sidebar .nav-item .collapsing .collapse-inner .collapse-item:active{background-color:#dddfeb}.sidebar .nav-item .collapse .collapse-inner .collapse-item.active,.sidebar .nav-item .collapsing .collapse-inner .collapse-item.active{color:#4e73df;font-weight:700}.sidebar #sidebarToggle{width:2.5rem;height:2.5rem;text-align:center;margin-bottom:1rem;cursor:pointer}.sidebar #sidebarToggle::after{font-weight:900;content:'\f104';font-family:'Font Awesome 5 Free';margin-right:0.1rem}.sidebar #sidebarToggle:hover{text-decoration:none}.sidebar #sidebarToggle:focus{outline:none}.sidebar.toggled{width:0 !important;overflow:hidden}.sidebar.toggled #sidebarToggle::after{content:'\f105';font-family:'Font Awesome 5 Free';margin-left:0.25rem}.sidebar.toggled .sidebar-card{display:none}.sidebar .sidebar-brand{height:4.375rem;text-decoration:none;font-size:1rem;font-weight:800;padding:1.5rem 1rem;text-align:center;text-transform:uppercase;letter-spacing:0.05rem;z-index:1}.sidebar .sidebar-brand .sidebar-brand-icon i{font-size:2rem}.sidebar .sidebar-brand .sidebar-brand-text{display:none}.sidebar hr.sidebar-divider{margin:0 1rem 1rem}.sidebar .sidebar-heading{text-align:center;padding:0 1rem;font-weight:800;font-size:0.65rem}.sidebar .sidebar-card{display:flex;flex-direction:column;align-items:center;font-size:.875rem;border-radius:.35rem;color:rgba(255,255,255,0.8);margin-left:1rem;margin-right:1rem;margin-bottom:1rem;padding:1rem;background-color:rgba(0,0,0,0.1)}.sidebar .sidebar-card .sidebar-card-illustration{height:3rem;display:block}.sidebar .sidebar-card .sidebar-card-title{font-weight:bold}.sidebar .sidebar-card p{font-size:0.75rem;color:rgba(255,255,255,0.5)}@media (min-width: 768px){.sidebar{width:14rem !important}.sidebar .nav-item .collapse{position:relative;left:0;z-index:1;top:0;animation:none}.sidebar .nav-item .collapse .collapse-inner{border-radius:0;box-shadow:none}.sidebar .nav-item .collapsing{display:block;transition:height 0.15s ease}.sidebar .nav-item .collapse,.sidebar .nav-item .collapsing{margin:0 1rem}.sidebar .nav-item .nav-link{display:block;width:100%;text-align:left;padding:1rem;width:14rem}.sidebar .nav-item .nav-link i{font-size:0.85rem;margin-right:0.25rem}.sidebar .nav-item .nav-link span{font-size:0.85rem;display:inline}.sidebar .nav-item .nav-link[data-toggle="collapse"]::after{width:1rem;text-align:center;float:right;vertical-align:0;border:0;font-weight:900;content:'\f107';font-family:'Font Awesome 5 Free'}.sidebar .nav-item .nav-link.collapsed[data-toggle="collapse"]::after{content:'\f105'}.sidebar .sidebar-brand .sidebar-brand-icon i{font-size:2rem}.sidebar .sidebar-brand .sidebar-brand-text{display:inline}.sidebar .sidebar-heading{text-align:left}.sidebar.toggled{overflow:visible;width:6.5rem !important}.sidebar.toggled .nav-item .collapse{position:absolute;left:calc(6.5rem + 1.5rem / 2);z-index:1;top:2px;animation-name:growIn;animation-duration:200ms;animation-timing-function:transform cubic-bezier(0.18, 1.25, 0.4, 1), opacity cubic-bezier(0, 1, 0.4, 1)}.sidebar.toggled .nav-item .collapse .collapse-inner{box-shadow:0 0.15rem 1.75rem 0 rgba(58,59,69,0.15);border-radius:.35rem}.sidebar.toggled .nav-item .collapsing{display:none;transition:none}.sidebar.toggled .nav-item .collapse,.sidebar.toggled .nav-item .collapsing{margin:0}.sidebar.toggled .nav-item:last-child{margin-bottom:1rem}.sidebar.toggled .nav-item .nav-link{text-align:center;padding:0.75rem 1rem;width:6.5rem}.sidebar.toggled .nav-item .nav-link span{font-size:0.65rem;display:block}.sidebar.toggled .nav-item .nav-link i{margin-right:0}.sidebar.toggled .nav-item .nav-link[data-toggle="collapse"]::after{display:none}.sidebar.toggled .sidebar-brand .sidebar-brand-icon i{font-size:2rem}.sidebar.toggled .sidebar-brand .sidebar-brand-text{display:none}.sidebar.toggled .sidebar-heading{text-align:center}}.sidebar-light .sidebar-brand{color:#6e707e}.sidebar-light hr.sidebar-divider{border-top:1px solid #eaecf4}.sidebar-light .sidebar-heading{color:#b7b9cc}.sidebar-light .nav-item .nav-link{color:#858796}.sidebar-light .nav-item .nav-link i{color:#d1d3e2}.sidebar-light .nav-item .nav-link:active,.sidebar-light .nav-item .nav-link:focus,.sidebar-light .nav-item .nav-link:hover{color:#6e707e}.sidebar-light .nav-item .nav-link:active i,.sidebar-light .nav-item .nav-link:focus i,.sidebar-light .nav-item .nav-link:hover i{color:#6e707e}.sidebar-light .nav-item .nav-link[data-toggle="collapse"]::after{color:#b7b9cc}.sidebar-light .nav-item.active .nav-link{color:#6e707e}.sidebar-light .nav-item.active .nav-link i{color:#6e707e}.sidebar-light #sidebarToggle{background-color:#eaecf4}.sidebar-light #sidebarToggle::after{color:#b7b9cc}.sidebar-light #sidebarToggle:hover{background-color:#dddfeb}.sidebar-dark .sidebar-brand{color:#fff}.sidebar-dark hr.sidebar-divider{border-top:1px solid rgba(255,255,255,0.15)}.sidebar-dark .sidebar-heading{color:rgba(255,255,255,0.4)}.sidebar-dark .nav-item .nav-link{color:rgba(255,255,255,0.8)}.sidebar-dark .nav-item .nav-link i{color:rgba(255,255,255,0.3)}.sidebar-dark .nav-item .nav-link:active,.sidebar-dark .nav-item .nav-link:focus,.sidebar-dark .nav-item .nav-link:hover{color:#fff}.sidebar-dark .nav-item .nav-link:active i,.sidebar-dark .nav-item .nav-link:focus i,.sidebar-dark .nav-item .nav-link:hover i{color:#fff}.sidebar-dark .nav-item .nav-link[data-toggle="collapse"]::after{color:rgba(255,255,255,0.5)}.sidebar-dark .nav-item.active .nav-link{color:#fff}.sidebar-dark .nav-item.active .nav-link i{color:#fff}.sidebar-dark #sidebarToggle{background-color:rgba(255,255,255,0.2)}.sidebar-dark #sidebarToggle::after{color:rgba(255,255,255,0.5)}.sidebar-dark #sidebarToggle:hover{background-color:rgba(255,255,255,0.25)}.sidebar-dark.toggled #sidebarToggle::after{color:rgba(255,255,255,0.5)}.btn-circle{border-radius:100%;height:2.5rem;width:2.5rem;font-size:1rem;display:inline-flex;align-items:center;justify-content:center}.btn-circle.btn-sm,.btn-group-sm>.btn-circle.btn{height:1.8rem;width:1.8rem;font-size:0.75rem}.btn-circle.btn-lg,.btn-group-lg>.btn-circle.btn{height:3.5rem;width:3.5rem;font-size:1.35rem}.btn-icon-split{padding:0;overflow:hidden;display:inline-flex;align-items:stretch;justify-content:center}.btn-icon-split .icon{background:rgba(0,0,0,0.15);display:inline-block;padding:.375rem .75rem}.btn-icon-split .text{display:inline-block;padding:.375rem .75rem}.btn-icon-split.btn-sm .icon,.btn-group-sm>.btn-icon-split.btn .icon{padding:.25rem .5rem}.btn-icon-split.btn-sm .text,.btn-group-sm>.btn-icon-split.btn .text{padding:.25rem .5rem}.btn-icon-split.btn-lg .icon,.btn-group-lg>.btn-icon-split.btn .icon{padding:.5rem 1rem}.btn-icon-split.btn-lg .text,.btn-group-lg>.btn-icon-split.btn .text{padding:.5rem 1rem}.card .card-header .dropdown{line-height:1}.card .card-header .dropdown .dropdown-menu{line-height:1.5}.card .card-header[data-toggle="collapse"]{text-decoration:none;position:relative;padding:0.75rem 3.25rem 0.75rem 1.25rem}.card .card-header[data-toggle="collapse"]::after{position:absolute;right:0;top:0;padding-right:1.725rem;line-height:51px;font-weight:900;content:'\f107';font-family:'Font Awesome 5 Free';color:#d1d3e2}.card .card-header.collapsed[data-toggle="collapse"]{border-radius:.35rem}.card .card-header.collapsed[data-toggle="collapse"]::after{content:'\f105'}.chart-area{position:relative;height:10rem;width:100%}@media (min-width: 768px){.chart-area{height:20rem}}.chart-bar{position:relative;height:10rem;width:100%}@media (min-width: 768px){.chart-bar{height:20rem}}.chart-pie{position:relative;height:15rem;width:100%}@media (min-width: 768px){.chart-pie{height:calc(20rem - 43px) !important}}.bg-login-image{background:url("https://source.unsplash.com/K4mSJ7kc0As/600x800");background-position:center;background-size:cover}.bg-register-image{background:url("https://source.unsplash.com/Mv9hjnEUHR4/600x800");background-position:center;background-size:cover}.bg-password-image{background:url("https://source.unsplash.com/oWTW-jNGl9I/600x800");background-position:center;background-size:cover}form.user .custom-checkbox.small label{line-height:1.5rem}form.user .form-control-user{font-size:0.8rem;border-radius:10rem;padding:1.5rem 1rem}form.user .btn-user{font-size:0.8rem;border-radius:10rem;padding:0.75rem 1rem}.btn-google{color:#fff;background-color:#ea4335;border-color:#fff}.btn-google:hover{color:#fff;background-color:#e12717;border-color:#e6e6e6}.btn-google:focus,.btn-google.focus{color:#fff;background-color:#e12717;border-color:#e6e6e6;box-shadow:0 0 0 .2rem rgba(255,255,255,0.5)}.btn-google.disabled,.btn-google:disabled{color:#fff;background-color:#ea4335;border-color:#fff}.btn-google:not(:disabled):not(.disabled):active,.btn-google.active:not(:disabled):not(.disabled),.show>.btn-google.dropdown-toggle{color:#fff;background-color:#d62516;border-color:#dfdfdf}.btn-google:not(:disabled):not(.disabled):active:focus,.btn-google.active:not(:disabled):not(.disabled):focus,.show>.btn-google.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,255,255,0.5)}.btn-facebook{color:#fff;background-color:#3b5998;border-color:#fff}.btn-facebook:hover{color:#fff;background-color:#30497c;border-color:#e6e6e6}.btn-facebook:focus,.btn-facebook.focus{color:#fff;background-color:#30497c;border-color:#e6e6e6;box-shadow:0 0 0 .2rem rgba(255,255,255,0.5)}.btn-facebook.disabled,.btn-facebook:disabled{color:#fff;background-color:#3b5998;border-color:#fff}.btn-facebook:not(:disabled):not(.disabled):active,.btn-facebook.active:not(:disabled):not(.disabled),.show>.btn-facebook.dropdown-toggle{color:#fff;background-color:#2d4373;border-color:#dfdfdf}.btn-facebook:not(:disabled):not(.disabled):active:focus,.btn-facebook.active:not(:disabled):not(.disabled):focus,.show>.btn-facebook.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,255,255,0.5)}.error{color:#5a5c69;font-size:7rem;position:relative;line-height:1;width:12.5rem}@keyframes noise-anim{0%{clip:rect(4px, 9999px, 12px, 0)}5%{clip:rect(42px, 9999px, 32px, 0)}10%{clip:rect(18px, 9999px, 87px, 0)}15%{clip:rect(31px, 9999px, 38px, 0)}20%{clip:rect(31px, 9999px, 11px, 0)}25%{clip:rect(44px, 9999px, 48px, 0)}30%{clip:rect(62px, 9999px, 32px, 0)}35%{clip:rect(17px, 9999px, 67px, 0)}40%{clip:rect(12px, 9999px, 40px, 0)}45%{clip:rect(32px, 9999px, 87px, 0)}50%{clip:rect(56px, 9999px, 75px, 0)}55%{clip:rect(31px, 9999px, 80px, 0)}60%{clip:rect(62px, 9999px, 44px, 0)}65%{clip:rect(93px, 9999px, 40px, 0)}70%{clip:rect(81px, 9999px, 47px, 0)}75%{clip:rect(97px, 9999px, 16px, 0)}80%{clip:rect(38px, 9999px, 90px, 0)}85%{clip:rect(41px, 9999px, 6px, 0)}90%{clip:rect(63px, 9999px, 97px, 0)}95%{clip:rect(9px, 9999px, 26px, 0)}100%{clip:rect(17px, 9999px, 47px, 0)}}.error:after{content:attr(data-text);position:absolute;left:2px;text-shadow:-1px 0 #e74a3b;top:0;color:#5a5c69;background:#f8f9fc;overflow:hidden;clip:rect(0, 900px, 0, 0);animation:noise-anim 2s infinite linear alternate-reverse}@keyframes noise-anim-2{0%{clip:rect(7px, 9999px, 9px, 0)}5%{clip:rect(8px, 9999px, 13px, 0)}10%{clip:rect(58px, 9999px, 6px, 0)}15%{clip:rect(81px, 9999px, 4px, 0)}20%{clip:rect(40px, 9999px, 84px, 0)}25%{clip:rect(97px, 9999px, 26px, 0)}30%{clip:rect(99px, 9999px, 64px, 0)}35%{clip:rect(52px, 9999px, 76px, 0)}40%{clip:rect(16px, 9999px, 38px, 0)}45%{clip:rect(12px, 9999px, 10px, 0)}50%{clip:rect(25px, 9999px, 89px, 0)}55%{clip:rect(77px, 9999px, 95px, 0)}60%{clip:rect(31px, 9999px, 73px, 0)}65%{clip:rect(80px, 9999px, 85px, 0)}70%{clip:rect(94px, 9999px, 26px, 0)}75%{clip:rect(21px, 9999px, 3px, 0)}80%{clip:rect(90px, 9999px, 77px, 0)}85%{clip:rect(24px, 9999px, 50px, 0)}90%{clip:rect(33px, 9999px, 72px, 0)}95%{clip:rect(76px, 9999px, 72px, 0)}100%{clip:rect(42px, 9999px, 44px, 0)}}.error:before{content:attr(data-text);position:absolute;left:-2px;text-shadow:1px 0 #4e73df;top:0;color:#5a5c69;background:#f8f9fc;overflow:hidden;clip:rect(0, 900px, 0, 0);animation:noise-anim-2 3s infinite linear alternate-reverse}footer.sticky-footer{padding:2rem 0;flex-shrink:0}footer.sticky-footer .copyright{line-height:1;font-size:0.8rem}body.sidebar-toggled footer.sticky-footer{width:100%}
 
 /*# sourceMappingURL=sb-admin-2.min.css.map */
\ No newline at end of file
index 6c7519f..7179752 100644 (file)
@@ -2,7 +2,7 @@
        "version": 3,
        "file": "sb-admin-2.min.css",
        "sources": [
-               "../../../../../tmp/scsseOYB1j",
+               "../../../../../tmp/scssFxSFMc",
                "../scss/startbootstrap-sb-admin-2/sb-admin-2.scss",
                "../scss/startbootstrap-sb-admin-2/_variables.scss",
                "../scss/bootstrap/bootstrap.scss",
                "../scss/startbootstrap-sb-admin-2/_footer.scss"
        ],
        "names": [],
-       "mappings": "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"
+       "mappings": "AGAA;;;;;GAKG,CoCLF,AAAD,IAAK,AAAC,CAGF,MAAW,CAAQ,QAAC,CAApB,QAAW,CAAQ,QAAC,CAApB,QAAW,CAAQ,QAAC,CAApB,MAAW,CAAQ,QAAC,CAApB,KAAW,CAAQ,QAAC,CAApB,QAAW,CAAQ,QAAC,CAApB,QAAW,CAAQ,QAAC,CAApB,OAAW,CAAQ,QAAC,CAApB,MAAW,CAAQ,QAAC,CAApB,MAAW,CAAQ,QAAC,CAApB,OAAW,CAAQ,KAAC,CAApB,MAAW,CAAQ,QAAC,CAApB,WAAW,CAAQ,QAAC,CAIpB,SAAW,CAAQ,QAAC,CAApB,WAAW,CAAQ,QAAC,CAApB,SAAW,CAAQ,QAAC,CAApB,MAAW,CAAQ,QAAC,CAApB,SAAW,CAAQ,QAAC,CAApB,QAAW,CAAQ,QAAC,CAApB,OAAW,CAAQ,QAAC,CAApB,MAAW,CAAQ,QAAC,CAIpB,eAAmB,CAAgB,EAAC,CAApC,eAAmB,CAAgB,MAAC,CAApC,eAAmB,CAAgB,MAAC,CAApC,eAAmB,CAAgB,MAAC,CAApC,eAAmB,CAAgB,OAAC,CAKtC,wBAAwB,CAAA,mLAAC,CACzB,uBAAuB,CAAA,qFAAC,CACzB,ACAD,AAAA,CAAC,CACD,CAAC,EAAE,MAAM,CACT,CAAC,EAAE,KAAK,AAAC,CACP,UAAU,CAAE,UAAU,CACvB,AAED,AAAA,IAAI,AAAC,CACH,WAAW,CAAE,UAAU,CACvB,WAAW,CAAE,IAAI,CACjB,wBAAwB,CAAE,IAAI,CAC9B,2BAA2B,CtCZrB,aAAI,CsCaX,AAKD,AAAA,OAAO,CAAE,KAAK,CAAE,UAAU,CAAE,MAAM,CAAE,MAAM,CAAE,MAAM,CAAE,MAAM,CAAE,IAAI,CAAE,GAAG,CAAE,OAAO,AAAC,CAC7E,OAAO,CAAE,KAAK,CACf,AASD,AAAA,IAAI,AAAC,CACH,MAAM,CAAE,CAAC,CACT,WAAW,CtCRY,QAAQ,CAAE,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,gBAAgB,CAAE,KAAK,CAAE,UAAU,CAAE,mBAAmB,CAAE,gBAAgB,CAAE,iBAAiB,CAAE,kBAAkB,CKwFrM,SAAS,CAtCE,IAAC,CiCxChB,WAAW,CnC8OiB,GAAG,CmC7O/B,WAAW,CnCkPiB,GAAG,CmCjP/B,KAAK,CtCvCI,OAAO,CsCwChB,UAAU,CAAE,IAAI,CAChB,gBAAgB,CtC/CV,IAAI,CsCgDX,CAWD,AAAA,AAAA,QAAC,CAAS,IAAI,AAAb,EAAe,KAAK,CAAA,GAAK,EAAC,aAAa,CAAE,CACxC,OAAO,CAAE,YAAY,CACtB,AAQD,AAAA,EAAE,AAAC,CACD,UAAU,CAAE,WAAW,CACvB,MAAM,CAAE,CAAC,CACT,QAAQ,CAAE,OAAO,CAClB,AAYD,AAAA,EAAE,CAAE,EAAE,CAAE,EAAE,CAAE,EAAE,CAAE,EAAE,CAAE,EAAE,AAAC,CACrB,UAAU,CAAE,CAAC,CACb,aAAa,CnCgNe,KAAW,CmC/MxC,AAMD,AAAA,CAAC,AAAC,CACA,UAAU,CAAE,CAAC,CACb,aAAa,CnCoFa,IAAI,CmCnF/B,AAUD,AAAA,IAAI,CAAA,AAAA,KAAC,AAAA,EACL,IAAI,CAAA,AAAA,mBAAC,AAAA,CAAqB,CACxB,eAAe,CAAE,SAAS,CAC1B,eAAe,CAAE,gBAAgB,CACjC,MAAM,CAAE,IAAI,CACZ,aAAa,CAAE,CAAC,CAChB,wBAAwB,CAAE,IAAI,CAC/B,AAED,AAAA,OAAO,AAAC,CACN,aAAa,CAAE,IAAI,CACnB,UAAU,CAAE,MAAM,CAClB,WAAW,CAAE,OAAO,CACrB,AAED,AAAA,EAAE,CACF,EAAE,CACF,EAAE,AAAC,CACD,UAAU,CAAE,CAAC,CACb,aAAa,CAAE,IAAI,CACpB,AAED,AAAA,EAAE,CAAC,EAAE,CACL,EAAE,CAAC,EAAE,CACL,EAAE,CAAC,EAAE,CACL,EAAE,CAAC,EAAE,AAAC,CACJ,aAAa,CAAE,CAAC,CACjB,AAED,AAAA,EAAE,AAAC,CACD,WAAW,CnCiJiB,GAAG,CmChJhC,AAED,AAAA,EAAE,AAAC,CACD,aAAa,CAAE,KAAK,CACpB,WAAW,CAAE,CAAC,CACf,AAED,AAAA,UAAU,AAAC,CACT,MAAM,CAAE,QAAQ,CACjB,AAED,AAAA,CAAC,CACD,MAAM,AAAC,CACL,WAAW,CnCoIiB,MAAM,CmCnInC,AAED,AAAA,KAAK,AAAC,CjCxFF,SAAS,CAAC,GAAC,CiC0Fd,AAOD,AAAA,GAAG,CACH,GAAG,AAAC,CACF,QAAQ,CAAE,QAAQ,CjCnGhB,SAAS,CAAC,GAAC,CiCqGb,WAAW,CAAE,CAAC,CACd,cAAc,CAAE,QAAQ,CACzB,AAED,AAAA,GAAG,AAAC,CAAE,MAAM,CAAE,MAAM,CAAI,AACxB,AAAA,GAAG,AAAC,CAAE,GAAG,CAAE,KAAK,CAAI,AAOpB,AAAA,CAAC,AAAC,CACA,KAAK,CtCxKA,OAAO,CsCyKZ,eAAe,CnCXyB,IAAI,CmCY5C,gBAAgB,CAAE,WAAW,CAM9B,AATD,A9B7KE,C8B6KD,C9B7KG,KAAK,AAAC,C8BmLN,KAAK,CtC7KF,OAAO,CsC8KV,eAAe,CnCduB,SAAS,CKtK3B,A8B6LxB,AAAA,CAAC,CAAA,GAAK,EAAA,AAAA,IAAC,AAAA,GAAM,GAAK,EAAA,AAAA,KAAC,AAAA,EAAQ,CACzB,KAAK,CAAE,OAAO,CACd,eAAe,CAAE,IAAI,CAMtB,AARD,A9B7LE,C8B6LD,CAAA,GAAK,EAAA,AAAA,IAAC,AAAA,GAAM,GAAK,EAAA,AAAA,KAAC,AAAA,G9B7Lf,KAAK,AAAC,C8BkMN,KAAK,CAAE,OAAO,CACd,eAAe,CAAE,IAAI,C9BnMD,A8B4MxB,AAAA,GAAG,CACH,IAAI,CACJ,GAAG,CACH,IAAI,AAAC,CACH,WAAW,CnCyDiB,cAAc,CAAE,KAAK,CAAE,MAAM,CAAE,QAAQ,CAAE,iBAAiB,CAAE,aAAa,CAAE,SAAS,CE7M9G,SAAS,CAAC,GAAC,CiCsJd,AAED,AAAA,GAAG,AAAC,CAEF,UAAU,CAAE,CAAC,CAEb,aAAa,CAAE,IAAI,CAEnB,QAAQ,CAAE,IAAI,CAGd,kBAAkB,CAAE,SAAS,CAC9B,AAOD,AAAA,MAAM,AAAC,CAEL,MAAM,CAAE,QAAQ,CACjB,AAOD,AAAA,GAAG,AAAC,CACF,cAAc,CAAE,MAAM,CACtB,YAAY,CAAE,IAAI,CACnB,AAED,AAAA,GAAG,AAAC,CAGF,QAAQ,CAAE,MAAM,CAChB,cAAc,CAAE,MAAM,CACvB,AAOD,AAAA,KAAK,AAAC,CACJ,eAAe,CAAE,QAAQ,CAC1B,AAED,AAAA,OAAO,AAAC,CACN,WAAW,CnC6EiB,MAAM,CmC5ElC,cAAc,CnC4Ec,MAAM,CmC3ElC,KAAK,CtCvQI,OAAO,CsCwQhB,UAAU,CAAE,IAAI,CAChB,YAAY,CAAE,MAAM,CACrB,AAMD,AAAA,EAAE,AAAC,CAED,UAAU,CAAE,OAAO,CACnB,UAAU,CAAE,oBAAoB,CACjC,AAOD,AAAA,KAAK,AAAC,CAEJ,OAAO,CAAE,YAAY,CACrB,aAAa,CnC2JyB,KAAK,CmC1J5C,AAKD,AAAA,MAAM,AAAC,CAEL,aAAa,CAAE,CAAC,CACjB,AAMD,AAAA,MAAM,CAAC,KAAK,AAAC,CACX,OAAO,CAAE,UAAU,CACnB,OAAO,CAAE,iCAAiC,CAC3C,AAED,AAAA,KAAK,CACL,MAAM,CACN,MAAM,CACN,QAAQ,CACR,QAAQ,AAAC,CACP,MAAM,CAAE,CAAC,CACT,WAAW,CAAE,OAAO,CjC5PlB,SAAS,CAAC,OAAC,CiC8Pb,WAAW,CAAE,OAAO,CACrB,AAED,AAAA,MAAM,CACN,KAAK,AAAC,CACJ,QAAQ,CAAE,OAAO,CAClB,AAED,AAAA,MAAM,CACN,MAAM,AAAC,CACL,cAAc,CAAE,IAAI,CACrB,CAKD,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAe,CACd,MAAM,CAAE,OAAO,CAChB,AAKD,AAAA,MAAM,AAAC,CACL,SAAS,CAAE,MAAM,CAClB,AAMD,AAAA,MAAM,EACN,AAAA,IAAC,CAAK,QAAQ,AAAb,GACD,AAAA,IAAC,CAAK,OAAO,AAAZ,GACD,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAe,CACd,kBAAkB,CAAE,MAAM,CAC3B,AAIC,AAIE,MAJI,CAIH,GAAK,EAAC,QAAQ,GAHjB,AAAA,IAAC,CAAK,QAAQ,AAAb,EAGE,GAAK,EAAC,QAAQ,GAFjB,AAAA,IAAC,CAAK,OAAO,AAAZ,EAEE,GAAK,EAAC,QAAQ,GADjB,AAAA,IAAC,CAAK,QAAQ,AAAb,EACE,GAAK,EAAC,QAAQ,CAAE,CACf,MAAM,CAAE,OAAO,CAChB,AAKL,AAAA,MAAM,EAAE,gBAAgB,EACxB,AAAA,IAAC,CAAK,QAAQ,AAAb,GAAgB,gBAAgB,EACjC,AAAA,IAAC,CAAK,OAAO,AAAZ,GAAe,gBAAgB,EAChC,AAAA,IAAC,CAAK,QAAQ,AAAb,GAAgB,gBAAgB,AAAC,CAChC,OAAO,CAAE,CAAC,CACV,YAAY,CAAE,IAAI,CACnB,AAED,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EACN,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CACrB,UAAU,CAAE,UAAU,CACtB,OAAO,CAAE,CAAC,CACX,AAGD,AAAA,QAAQ,AAAC,CACP,QAAQ,CAAE,IAAI,CAEd,MAAM,CAAE,QAAQ,CACjB,AAED,AAAA,QAAQ,AAAC,CAMP,SAAS,CAAE,CAAC,CAEZ,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,CAAC,CACT,MAAM,CAAE,CAAC,CACV,AAID,AAAA,MAAM,AAAC,CACL,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,SAAS,CAAE,IAAI,CACf,OAAO,CAAE,CAAC,CACV,aAAa,CAAE,KAAK,CjCnShB,SAAS,CAtCE,MAAC,CiC2UhB,WAAW,CAAE,OAAO,CACpB,KAAK,CAAE,OAAO,CACd,WAAW,CAAE,MAAM,CACpB,AAED,AAAA,QAAQ,AAAC,CACP,cAAc,CAAE,QAAQ,CACzB,CAGD,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,GAAgB,yBAAyB,EAC1C,AAAA,IAAC,CAAK,QAAQ,AAAb,GAAgB,yBAAyB,AAAC,CACzC,MAAM,CAAE,IAAI,CACb,CAED,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAe,CAKd,cAAc,CAAE,IAAI,CACpB,kBAAkB,CAAE,IAAI,CACzB,CAMD,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,GAAgB,yBAAyB,AAAC,CACzC,kBAAkB,CAAE,IAAI,CACzB,EAOC,AAAF,0BAA4B,AAAC,CAC3B,IAAI,CAAE,OAAO,CACb,kBAAkB,CAAE,MAAM,CAC3B,AAMD,AAAA,MAAM,AAAC,CACL,OAAO,CAAE,YAAY,CACtB,AAED,AAAA,OAAO,AAAC,CACN,OAAO,CAAE,SAAS,CAClB,MAAM,CAAE,OAAO,CAChB,AAED,AAAA,QAAQ,AAAC,CACP,OAAO,CAAE,IAAI,CACd,CAID,AAAA,AAAA,MAAC,AAAA,CAAQ,CACP,OAAO,CAAE,eAAe,CACzB,AC7dD,AAAA,EAAE,CAAE,EAAE,CAAE,EAAE,CAAE,EAAE,CAAE,EAAE,CAAE,EAAE,CACtB,GAAG,CAAE,GAAG,CAAE,GAAG,CAAE,GAAG,CAAE,GAAG,CAAE,GAAG,AAAC,CAC3B,aAAa,CpCqSe,KAAW,CoCnSvC,WAAW,CvCiCU,GAAG,CuChCxB,WAAW,CpCqSiB,GAAG,CoCnShC,AAED,AAAA,EAAE,CAAE,GAAG,AAAC,ClCgHF,SAAS,CAtCE,MAAC,CkC1E6B,AAC/C,AAAA,EAAE,CAAE,GAAG,AAAC,ClC+GF,SAAS,CAtCE,IAAC,CkCzE6B,AAC/C,AAAA,EAAE,CAAE,GAAG,AAAC,ClC8GF,SAAS,CAtCE,OAAC,CkCxE6B,AAC/C,AAAA,EAAE,CAAE,GAAG,AAAC,ClC6GF,SAAS,CAtCE,MAAC,CkCvE6B,AAC/C,AAAA,EAAE,CAAE,GAAG,AAAC,ClC4GF,SAAS,CAtCE,OAAC,CkCtE6B,AAC/C,AAAA,EAAE,CAAE,GAAG,AAAC,ClC2GF,SAAS,CAtCE,IAAC,CkCrE6B,AAE/C,AAAA,KAAK,AAAC,ClCyGA,SAAS,CAtCE,OAAC,CkCjEhB,WAAW,CpCuSiB,GAAG,CoCtShC,AAGD,AAAA,UAAU,AAAC,ClCmGL,SAAS,CAtCE,IAAC,CkC3DhB,WAAW,CpC0RiB,GAAG,CoCzR/B,WAAW,CpCiRiB,GAAG,CoChRhC,AACD,AAAA,UAAU,AAAC,ClC8FL,SAAS,CAtCE,MAAC,CkCtDhB,WAAW,CpCsRiB,GAAG,CoCrR/B,WAAW,CpC4QiB,GAAG,CoC3QhC,AACD,AAAA,UAAU,AAAC,ClCyFL,SAAS,CAtCE,MAAC,CkCjDhB,WAAW,CpCkRiB,GAAG,CoCjR/B,WAAW,CpCuQiB,GAAG,CoCtQhC,AACD,AAAA,UAAU,AAAC,ClCoFL,SAAS,CAtCE,MAAC,CkC5ChB,WAAW,CpC8QiB,GAAG,CoC7Q/B,WAAW,CpCkQiB,GAAG,CoCjQhC,AAOD,AAAA,EAAE,AAAC,CACD,UAAU,CvCYH,IAAI,CuCXX,aAAa,CvCWN,IAAI,CuCVX,MAAM,CAAE,CAAC,CACT,UAAU,CpCkLkB,GAAG,CoClLF,KAAK,CvC1C5B,eAAI,CuC2CX,AAOD,AAAA,KAAK,CACL,MAAM,AAAC,ClCKH,SAAS,CAAC,GAAC,CkCHb,WAAW,CpC0NiB,GAAG,CoCzNhC,AAED,AAAA,IAAI,CACJ,KAAK,AAAC,CACJ,OAAO,CpCkQqB,IAAI,CoCjQhC,gBAAgB,CpC0QY,OAAO,CoCzQpC,AAOD,AAAA,cAAc,AAAC,ChB/Eb,YAAY,CAAE,CAAC,CACf,UAAU,CAAE,IAAI,CgBgFjB,AAGD,AAAA,YAAY,AAAC,ChBpFX,YAAY,CAAE,CAAC,CACf,UAAU,CAAE,IAAI,CgBqFjB,AACD,AAAA,iBAAiB,AAAC,CAChB,OAAO,CAAE,YAAY,CAKtB,AAND,AAGE,iBAHe,CAGd,GAAK,EAAC,UAAU,CAAE,CACjB,YAAY,CpCoPc,KAAK,CoCnPhC,AASH,AAAA,WAAW,AAAC,ClCjCR,SAAS,CAAC,GAAC,CkCmCb,cAAc,CAAE,SAAS,CAC1B,AAGD,AAAA,WAAW,AAAC,CACV,aAAa,CvC7CN,IAAI,CK4DP,SAAS,CAtCE,OAAC,CkCyBjB,AAED,AAAA,kBAAkB,AAAC,CACjB,OAAO,CAAE,KAAK,ClC7CZ,SAAS,CAAC,GAAC,CkC+Cb,KAAK,CvC3GI,OAAO,CuCgHjB,AARD,AAKE,kBALgB,EAKb,MAAM,AAAC,CACR,OAAO,CAAE,YAAY,CACtB,ACpHH,AAAA,UAAU,AAAC,C/BIT,SAAS,CAAE,IAAI,CAGf,MAAM,CAAE,IAAI,C+BLb,AAID,AAAA,cAAc,AAAC,CACb,OAAO,CrC+/B2B,MAAM,CqC9/BxC,gBAAgB,CxCTV,IAAI,CwCUV,MAAM,CrC4NsB,GAAG,CqC5NC,KAAK,CxCP5B,OAAO,C6BSd,aAAa,C7BiCD,MAAO,CSxCrB,SAAS,CAAE,IAAI,CAGf,MAAM,CAAE,IAAI,C+BQb,AAMD,AAAA,OAAO,AAAC,CAEN,OAAO,CAAE,YAAY,CACtB,AAED,AAAA,WAAW,AAAC,CACV,aAAa,CAAE,KAAW,CAC1B,WAAW,CAAE,CAAC,CACf,AAED,AAAA,eAAe,AAAC,CnCkCZ,SAAS,CAAC,GAAC,CmChCb,KAAK,CxC5BI,OAAO,CwC6BjB,ACxCD,AAAA,IAAI,AAAC,CpCuED,SAAS,CAAC,KAAC,CoCrEb,KAAK,CzCkBA,OAAO,CyCjBZ,SAAS,CAAE,UAAU,CAMtB,AAHC,AAAA,CAAC,CANH,IAAI,AAMI,CACJ,KAAK,CAAE,OAAO,CACf,AAIH,AAAA,GAAG,AAAC,CACF,OAAO,CtCklC2B,KAAK,CACL,KAAK,CEzhCrC,SAAS,CAAC,KAAC,CoCxDb,KAAK,CzCVC,IAAI,CyCWV,gBAAgB,CzCFP,OAAO,C6BGd,aAAa,C1B+Na,KAAK,CsCtNlC,AAdD,AAQE,GARC,CAQD,GAAG,AAAC,CACF,OAAO,CAAE,CAAC,CpCkDV,SAAS,CAAC,IAAC,CoChDX,WAAW,CtCwQe,GAAG,CsCtQ9B,AAIH,AAAA,GAAG,AAAC,CACF,OAAO,CAAE,KAAK,CpCyCZ,SAAS,CAAC,KAAC,CoCvCb,KAAK,CzClBI,OAAO,CyC0BjB,AAXD,AAME,GANC,CAMD,IAAI,AAAC,CpCoCH,SAAS,CAAC,OAAC,CoClCX,KAAK,CAAE,OAAO,CACd,UAAU,CAAE,MAAM,CACnB,AAIH,AAAA,eAAe,AAAC,CACd,UAAU,CtC0jCwB,KAAK,CsCzjCvC,UAAU,CAAE,MAAM,CACnB,ACzCC,AAAA,UAAU,CAEV,gBAAgB,CARlB,aAAa,CAAb,aAAa,CAAb,aAAa,CAAb,aAAa,AAQM,CPHjB,KAAK,CAAE,IAAI,CACX,aAAa,CAAE,MAAW,CAC1B,YAAY,CAAE,MAAW,CACzB,YAAY,CAAE,IAAI,CAClB,WAAW,CAAE,IAAI,COChB,AnCkDC,MAAM,mBmCzCJ,CAnBN,AAmBM,aAnBO,CAAb,UAAU,AAmBS,CACX,SAAS,CvC+LX,KAAK,CuC9LJ,CAAA,AnCuCH,MAAM,mBmCzCJ,CAnBN,AAmBM,aAnBO,CAAb,aAAa,CAAb,UAAU,AAmBS,CACX,SAAS,CvCgMX,KAAK,CuC/LJ,CAAA,AnCuCH,MAAM,mBmCzCJ,CAnBN,AAmBM,aAnBO,CAAb,aAAa,CAAb,aAAa,CAAb,UAAU,AAmBS,CACX,SAAS,CvCiMX,KAAK,CuChMJ,CAAA,AnCuCH,MAAM,oBmCzCJ,CAnBN,AAmBM,aAnBO,CAAb,aAAa,CAAb,aAAa,CAAb,aAAa,CAAb,UAAU,AAmBS,CACX,SAAS,CvCkMX,MAAM,CuCjML,CAAA,AA2BL,AAAA,IAAI,AAAC,CPnCL,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,IAAI,CACf,YAAY,CAAE,OAAY,CAC1B,WAAW,CAAE,OAAY,COkCxB,AAID,AAAA,WAAW,AAAC,CACV,YAAY,CAAE,CAAC,CACf,WAAW,CAAE,CAAC,CAOf,AATD,AAIE,WAJS,CAIP,IAAI,CAJR,WAAW,EAKP,AAAA,KAAC,EAAO,MAAM,AAAb,CAAe,CAChB,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,CAAC,CAChB,AR9DL,AAOE,OAPK,CACH,YAAY,CADhB,UAAU,CAAV,UAAU,CAAV,UAAU,CAAV,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,OAAO,CACH,YAAY,CADhB,UAAU,CAAV,UAAU,CAAV,UAAU,CAAV,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,OAAO,CACH,YAAY,CADhB,UAAU,CAAV,UAAU,CAAV,UAAU,CAAV,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,OAAO,CACH,YAAY,CADhB,UAAU,CAAV,UAAU,CAAV,UAAU,CAAV,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,SAAS,CAAT,IAAI,CACA,SAAS,CADb,OAAO,CAAP,OAAO,CAAP,OAAO,CAAP,MAAM,CAAN,MAAM,CAAN,MAAM,CAAN,MAAM,CAAN,MAAM,CAAN,MAAM,CAAN,MAAM,CAAN,MAAM,CAAN,MAAM,AAOS,CACX,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,IAAI,CACX,aAAa,CAAE,MAAW,CAC1B,YAAY,CAAE,MAAW,CAC1B,AAZH,AAgCM,IAhCF,AAgCU,CACN,UAAU,CAAE,CAAC,CACb,SAAS,CAAE,CAAC,CACZ,SAAS,CAAE,IAAI,CAChB,AApCP,ACgEE,WDhES,CCgEP,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,IAAa,CACvB,SAAS,CAAE,IAAa,CACzB,ADnEH,ACgEE,WDhES,CCgEP,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAa,CACvB,SAAS,CAAE,GAAa,CACzB,ADnEH,ACgEE,WDhES,CCgEP,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAa,CACvB,SAAS,CAAE,cAAa,CACzB,ADnEH,ACgEE,WDhES,CCgEP,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAa,CACvB,SAAS,CAAE,GAAa,CACzB,ADnEH,ACgEE,WDhES,CCgEP,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAa,CACvB,SAAS,CAAE,GAAa,CACzB,ADnEH,ACgEE,WDhES,CCgEP,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAa,CACvB,SAAS,CAAE,cAAa,CACzB,ADnEH,AA8CM,SA9CG,AA8CU,CCEjB,IAAI,CAAE,QAAQ,CACd,KAAK,CAAE,IAAI,CACX,SAAS,CAAE,IAAI,CDFV,AAhDP,AAoDU,MApDJ,AAoDc,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,aAA4B,CAItC,SAAS,CAAE,aAA4B,CDU9B,AAtDX,AAoDU,MApDJ,AAoDc,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,MApDJ,AAoDc,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAA4B,CAItC,SAAS,CAAE,GAA4B,CDU9B,AAtDX,AAoDU,MApDJ,AAoDc,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,MApDJ,AAoDc,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,MApDJ,AAoDc,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAA4B,CAItC,SAAS,CAAE,GAA4B,CDU9B,AAtDX,AAoDU,MApDJ,AAoDc,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,MApDJ,AAoDc,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,MApDJ,AAoDc,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAA4B,CAItC,SAAS,CAAE,GAA4B,CDU9B,AAtDX,AAoDU,OApDH,AAoDa,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,OApDH,AAoDa,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,OApDH,AAoDa,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,IAA4B,CAItC,SAAS,CAAE,IAA4B,CDU9B,AAtDX,AA0DM,YA1DM,AA0DQ,CAAE,KAAK,CAAE,EAAE,CAAI,AA1DnC,AA4DM,WA5DK,AA4DQ,CAAE,KAAK,C/BoKI,EAAE,C+BpKY,AA5D5C,AA+DQ,QA/DA,AA+DU,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,QA/DA,AA+DU,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,QA/DA,AA+DU,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,QA/DA,AA+DU,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,QA/DA,AA+DU,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,QA/DA,AA+DU,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,QA/DA,AA+DU,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,QA/DA,AA+DU,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,QA/DA,AA+DU,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,QA/DA,AA+DU,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,SA/DC,AA+DS,CAAE,KAAK,CADN,EAAC,CACa,AA/DjC,AA+DQ,SA/DC,AA+DS,CAAE,KAAK,CADN,EAAC,CACa,AA/DjC,AA+DQ,SA/DC,AA+DS,CAAE,KAAK,CADN,EAAC,CACa,AA/DjC,AAsEY,SAtEH,AAsEa,CCfpB,WAAW,CAAmB,aAAgB,CDiBnC,AAxEb,AAsEY,SAtEH,AAsEa,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,SAtEH,AAsEa,CCfpB,WAAW,CAAmB,GAAgB,CDiBnC,AAxEb,AAsEY,SAtEH,AAsEa,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,SAtEH,AAsEa,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,SAtEH,AAsEa,CCfpB,WAAW,CAAmB,GAAgB,CDiBnC,AAxEb,AAsEY,SAtEH,AAsEa,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,SAtEH,AAsEa,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,SAtEH,AAsEa,CCfpB,WAAW,CAAmB,GAAgB,CDiBnC,AAxEb,AAsEY,UAtEF,AAsEY,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,UAtEF,AAsEY,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,A3BZT,MAAM,mB2B5BJ,CAhCN,AAgCM,OAhCC,AAgCO,CACN,UAAU,CAAE,CAAC,CACb,SAAS,CAAE,CAAC,CACZ,SAAS,CAAE,IAAI,CAChB,AApCP,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,IAAa,CACvB,SAAS,CAAE,IAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAa,CACvB,SAAS,CAAE,GAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAa,CACvB,SAAS,CAAE,cAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAa,CACvB,SAAS,CAAE,GAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAa,CACvB,SAAS,CAAE,GAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAa,CACvB,SAAS,CAAE,cAAa,CACzB,ADnEH,AA8CM,YA9CM,AA8CO,CCEjB,IAAI,CAAE,QAAQ,CACd,KAAK,CAAE,IAAI,CACX,SAAS,CAAE,IAAI,CDFV,AAhDP,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,aAA4B,CAItC,SAAS,CAAE,aAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAA4B,CAItC,SAAS,CAAE,GAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAA4B,CAItC,SAAS,CAAE,GAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAA4B,CAItC,SAAS,CAAE,GAA4B,CDU9B,AAtDX,AAoDU,UApDA,AAoDU,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,UApDA,AAoDU,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,UApDA,AAoDU,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,IAA4B,CAItC,SAAS,CAAE,IAA4B,CDU9B,AAtDX,AA0DM,eA1DS,AA0DK,CAAE,KAAK,CAAE,EAAE,CAAI,AA1DnC,AA4DM,cA5DQ,AA4DK,CAAE,KAAK,C/BoKI,EAAE,C+BpKY,AA5D5C,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,YA/DI,AA+DM,CAAE,KAAK,CADN,EAAC,CACa,AA/DjC,AA+DQ,YA/DI,AA+DM,CAAE,KAAK,CADN,EAAC,CACa,AA/DjC,AA+DQ,YA/DI,AA+DM,CAAE,KAAK,CADN,EAAC,CACa,AA/DjC,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAgB,CAAC,CDiBjB,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,aAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,GAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,GAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,GAAgB,CDiBnC,AAxEb,AAsEY,aAtEC,AAsES,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,aAtEC,AAsES,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,CApCN,A3BwBH,MAAM,mB2B5BJ,CAhCN,AAgCM,OAhCC,AAgCO,CACN,UAAU,CAAE,CAAC,CACb,SAAS,CAAE,CAAC,CACZ,SAAS,CAAE,IAAI,CAChB,AApCP,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,IAAa,CACvB,SAAS,CAAE,IAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAa,CACvB,SAAS,CAAE,GAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAa,CACvB,SAAS,CAAE,cAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAa,CACvB,SAAS,CAAE,GAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAa,CACvB,SAAS,CAAE,GAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAa,CACvB,SAAS,CAAE,cAAa,CACzB,ADnEH,AA8CM,YA9CM,AA8CO,CCEjB,IAAI,CAAE,QAAQ,CACd,KAAK,CAAE,IAAI,CACX,SAAS,CAAE,IAAI,CDFV,AAhDP,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,aAA4B,CAItC,SAAS,CAAE,aAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAA4B,CAItC,SAAS,CAAE,GAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAA4B,CAItC,SAAS,CAAE,GAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAA4B,CAItC,SAAS,CAAE,GAA4B,CDU9B,AAtDX,AAoDU,UApDA,AAoDU,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,UApDA,AAoDU,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,UApDA,AAoDU,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,IAA4B,CAItC,SAAS,CAAE,IAA4B,CDU9B,AAtDX,AA0DM,eA1DS,AA0DK,CAAE,KAAK,CAAE,EAAE,CAAI,AA1DnC,AA4DM,cA5DQ,AA4DK,CAAE,KAAK,C/BoKI,EAAE,C+BpKY,AA5D5C,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,YA/DI,AA+DM,CAAE,KAAK,CADN,EAAC,CACa,AA/DjC,AA+DQ,YA/DI,AA+DM,CAAE,KAAK,CADN,EAAC,CACa,AA/DjC,AA+DQ,YA/DI,AA+DM,CAAE,KAAK,CADN,EAAC,CACa,AA/DjC,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAgB,CAAC,CDiBjB,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,aAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,GAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,GAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,GAAgB,CDiBnC,AAxEb,AAsEY,aAtEC,AAsES,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,aAtEC,AAsES,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,CApCN,A3BwBH,MAAM,mB2B5BJ,CAhCN,AAgCM,OAhCC,AAgCO,CACN,UAAU,CAAE,CAAC,CACb,SAAS,CAAE,CAAC,CACZ,SAAS,CAAE,IAAI,CAChB,AApCP,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,IAAa,CACvB,SAAS,CAAE,IAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAa,CACvB,SAAS,CAAE,GAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAa,CACvB,SAAS,CAAE,cAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAa,CACvB,SAAS,CAAE,GAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAa,CACvB,SAAS,CAAE,GAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAa,CACvB,SAAS,CAAE,cAAa,CACzB,ADnEH,AA8CM,YA9CM,AA8CO,CCEjB,IAAI,CAAE,QAAQ,CACd,KAAK,CAAE,IAAI,CACX,SAAS,CAAE,IAAI,CDFV,AAhDP,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,aAA4B,CAItC,SAAS,CAAE,aAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAA4B,CAItC,SAAS,CAAE,GAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAA4B,CAItC,SAAS,CAAE,GAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAA4B,CAItC,SAAS,CAAE,GAA4B,CDU9B,AAtDX,AAoDU,UApDA,AAoDU,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,UApDA,AAoDU,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,UApDA,AAoDU,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,IAA4B,CAItC,SAAS,CAAE,IAA4B,CDU9B,AAtDX,AA0DM,eA1DS,AA0DK,CAAE,KAAK,CAAE,EAAE,CAAI,AA1DnC,AA4DM,cA5DQ,AA4DK,CAAE,KAAK,C/BoKI,EAAE,C+BpKY,AA5D5C,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,YA/DI,AA+DM,CAAE,KAAK,CADN,EAAC,CACa,AA/DjC,AA+DQ,YA/DI,AA+DM,CAAE,KAAK,CADN,EAAC,CACa,AA/DjC,AA+DQ,YA/DI,AA+DM,CAAE,KAAK,CADN,EAAC,CACa,AA/DjC,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAgB,CAAC,CDiBjB,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,aAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,GAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,GAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,GAAgB,CDiBnC,AAxEb,AAsEY,aAtEC,AAsES,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,aAtEC,AAsES,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,CApCN,A3BwBH,MAAM,oB2B5BJ,CAhCN,AAgCM,OAhCC,AAgCO,CACN,UAAU,CAAE,CAAC,CACb,SAAS,CAAE,CAAC,CACZ,SAAS,CAAE,IAAI,CAChB,AApCP,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,IAAa,CACvB,SAAS,CAAE,IAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAa,CACvB,SAAS,CAAE,GAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAa,CACvB,SAAS,CAAE,cAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAa,CACvB,SAAS,CAAE,GAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAa,CACvB,SAAS,CAAE,GAAa,CACzB,ADnEH,ACgEE,cDhEY,CCgEV,CAAC,AAAC,CACF,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAa,CACvB,SAAS,CAAE,cAAa,CACzB,ADnEH,AA8CM,YA9CM,AA8CO,CCEjB,IAAI,CAAE,QAAQ,CACd,KAAK,CAAE,IAAI,CACX,SAAS,CAAE,IAAI,CDFV,AAhDP,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,aAA4B,CAItC,SAAS,CAAE,aAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAA4B,CAItC,SAAS,CAAE,GAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAA4B,CAItC,SAAS,CAAE,GAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,SApDD,AAoDW,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAA4B,CAItC,SAAS,CAAE,GAA4B,CDU9B,AAtDX,AAoDU,UApDA,AAoDU,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,UApDA,AAoDU,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAA4B,CAItC,SAAS,CAAE,cAA4B,CDU9B,AAtDX,AAoDU,UApDA,AAoDU,CCZlB,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,IAA4B,CAItC,SAAS,CAAE,IAA4B,CDU9B,AAtDX,AA0DM,eA1DS,AA0DK,CAAE,KAAK,CAAE,EAAE,CAAI,AA1DnC,AA4DM,cA5DQ,AA4DK,CAAE,KAAK,C/BoKI,EAAE,C+BpKY,AA5D5C,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,WA/DG,AA+DO,CAAE,KAAK,CADN,CAAC,CACa,AA/DjC,AA+DQ,YA/DI,AA+DM,CAAE,KAAK,CADN,EAAC,CACa,AA/DjC,AA+DQ,YA/DI,AA+DM,CAAE,KAAK,CADN,EAAC,CACa,AA/DjC,AA+DQ,YA/DI,AA+DM,CAAE,KAAK,CADN,EAAC,CACa,AA/DjC,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAgB,CAAC,CDiBjB,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,aAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,GAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,GAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,YAtEA,AAsEU,CCfpB,WAAW,CAAmB,GAAgB,CDiBnC,AAxEb,AAsEY,aAtEC,AAsES,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,AAxEb,AAsEY,aAtEC,AAsES,CCfpB,WAAW,CAAmB,cAAgB,CDiBnC,CApCN,AShCP,AAAA,MAAM,AAAC,CACL,KAAK,CAAE,IAAI,CACX,aAAa,C3C6DN,IAAI,C2C5DX,KAAK,C3CKI,OAAO,C2CajB,AArBD,AAME,MANI,CAMJ,EAAE,CANJ,MAAM,CAOJ,EAAE,AAAC,CACD,OAAO,CxCkVmB,MAAM,CwCjVhC,cAAc,CAAE,GAAG,CACnB,UAAU,CxC8NgB,GAAG,CwC9NG,KAAK,C3CN9B,OAAO,C2COf,AAXH,AAaE,MAbI,CAaJ,KAAK,CAAC,EAAE,AAAC,CACP,cAAc,CAAE,MAAM,CACtB,aAAa,CAAE,GAAyB,CAAC,KAAK,C3CXvC,OAAO,C2CYf,AAhBH,AAkBE,MAlBI,CAkBJ,KAAK,CAAG,KAAK,AAAC,CACZ,UAAU,CAAE,GAAyB,CAAC,KAAK,C3CfpC,OAAO,C2CgBf,AAQH,AACE,SADO,CACP,EAAE,CADJ,SAAS,CAEP,EAAE,AAAC,CACD,OAAO,CxC4TmB,KAAK,CwC3ThC,AAQH,AAAA,eAAe,AAAC,CACd,MAAM,CxC+LsB,GAAG,CwC/LH,KAAK,C3CrCxB,OAAO,C2CkDjB,AAdD,AAGE,eAHa,CAGb,EAAE,CAHJ,eAAe,CAIb,EAAE,AAAC,CACD,MAAM,CxC2LoB,GAAG,CwC3LD,KAAK,C3CzC1B,OAAO,C2C0Cf,AANH,AASI,eATW,CAQb,KAAK,CACH,EAAE,CATN,eAAe,CAQb,KAAK,CAEH,EAAE,AAAC,CACD,mBAAmB,CAAE,GAAuB,CAC7C,AAIL,AACE,iBADe,CACf,EAAE,CADJ,iBAAiB,CAEf,EAAE,CAFJ,iBAAiB,CAGf,KAAK,CAAC,EAAE,CAHV,iBAAiB,CAIf,KAAK,CAAG,KAAK,AAAC,CACZ,MAAM,CAAE,CAAC,CACV,AAOH,AACE,cADY,CAzEd,KAAK,CAAC,EAAE,CAAC,WAAY,CAAA,GAAG,CA0EC,CACrB,gBAAgB,C3C3DZ,gBAAI,C2C4DT,AAQH,AnCxEE,YmCwEU,CACV,KAAK,CAAC,EAAE,CnCzEN,KAAK,AAAC,CmC2EJ,KAAK,C3C3EA,OAAO,C2C4EZ,gBAAgB,C3CxEd,iBAAI,CQJY,AmBZxB,AAMI,cANU,CAAd,cAAc,CAOR,EAAE,CAPR,cAAc,CAQR,EAAE,AAAC,CACH,gBAAgB,CzBgGZ,OAAwD,CyB/F7D,AAVL,AAaM,cAbQ,CAaR,EAAE,CAbR,cAAc,CAcR,EAAE,CAdR,cAAc,CAeR,KAAK,CAAC,EAAE,CAfd,cAAc,CAgBR,KAAK,CAAG,KAAK,AAAC,CACZ,YAAY,CzBwFV,OAAwD,CyBvF3D,AAML,AnBZA,YmBYY,CAxBd,cAAc,CnBYV,KAAK,AAAC,CmBiBF,gBAAgB,CzB4Ed,OAAwD,CM7F1C,AmBYtB,AAOM,YAPM,CAxBd,cAAc,CnBYV,KAAK,CmBmBC,EAAE,CAPV,YAAY,CAxBd,cAAc,CnBYV,KAAK,CmBoBC,EAAE,AAAC,CACH,gBAAgB,CzBwEhB,OAAwD,CyBvEzD,AAlCT,AAMI,gBANY,CAAhB,gBAAgB,CAOV,EAAE,CAPR,gBAAgB,CAQV,EAAE,AAAC,CACH,gBAAgB,CzBgGZ,OAAwD,CyB/F7D,AAVL,AAaM,gBAbU,CAaV,EAAE,CAbR,gBAAgB,CAcV,EAAE,CAdR,gBAAgB,CAeV,KAAK,CAAC,EAAE,CAfd,gBAAgB,CAgBV,KAAK,CAAG,KAAK,AAAC,CACZ,YAAY,CzBwFV,OAAwD,CyBvF3D,AAML,AnBZA,YmBYY,CAxBd,gBAAgB,CnBYZ,KAAK,AAAC,CmBiBF,gBAAgB,CzB4Ed,OAAwD,CM7F1C,AmBYtB,AAOM,YAPM,CAxBd,gBAAgB,CnBYZ,KAAK,CmBmBC,EAAE,CAPV,YAAY,CAxBd,gBAAgB,CnBYZ,KAAK,CmBoBC,EAAE,AAAC,CACH,gBAAgB,CzBwEhB,OAAwD,CyBvEzD,AAlCT,AAMI,cANU,CAAd,cAAc,CAOR,EAAE,CAPR,cAAc,CAQR,EAAE,AAAC,CACH,gBAAgB,CzBgGZ,OAAwD,CyB/F7D,AAVL,AAaM,cAbQ,CAaR,EAAE,CAbR,cAAc,CAcR,EAAE,CAdR,cAAc,CAeR,KAAK,CAAC,EAAE,CAfd,cAAc,CAgBR,KAAK,CAAG,KAAK,AAAC,CACZ,YAAY,CzBwFV,OAAwD,CyBvF3D,AAML,AnBZA,YmBYY,CAxBd,cAAc,CnBYV,KAAK,AAAC,CmBiBF,gBAAgB,CzB4Ed,OAAwD,CM7F1C,AmBYtB,AAOM,YAPM,CAxBd,cAAc,CnBYV,KAAK,CmBmBC,EAAE,CAPV,YAAY,CAxBd,cAAc,CnBYV,KAAK,CmBoBC,EAAE,AAAC,CACH,gBAAgB,CzBwEhB,OAAwD,CyBvEzD,AAlCT,AAMI,WANO,CAAX,WAAW,CAOL,EAAE,CAPR,WAAW,CAQL,EAAE,AAAC,CACH,gBAAgB,CzBgGZ,OAAwD,CyB/F7D,AAVL,AAaM,WAbK,CAaL,EAAE,CAbR,WAAW,CAcL,EAAE,CAdR,WAAW,CAeL,KAAK,CAAC,EAAE,CAfd,WAAW,CAgBL,KAAK,CAAG,KAAK,AAAC,CACZ,YAAY,CzBwFV,OAAwD,CyBvF3D,AAML,AnBZA,YmBYY,CAxBd,WAAW,CnBYP,KAAK,AAAC,CmBiBF,gBAAgB,CzB4Ed,OAAwD,CM7F1C,AmBYtB,AAOM,YAPM,CAxBd,WAAW,CnBYP,KAAK,CmBmBC,EAAE,CAPV,YAAY,CAxBd,WAAW,CnBYP,KAAK,CmBoBC,EAAE,AAAC,CACH,gBAAgB,CzBwEhB,OAAwD,CyBvEzD,AAlCT,AAMI,cANU,CAAd,cAAc,CAOR,EAAE,CAPR,cAAc,CAQR,EAAE,AAAC,CACH,gBAAgB,CzBgGZ,OAAwD,CyB/F7D,AAVL,AAaM,cAbQ,CAaR,EAAE,CAbR,cAAc,CAcR,EAAE,CAdR,cAAc,CAeR,KAAK,CAAC,EAAE,CAfd,cAAc,CAgBR,KAAK,CAAG,KAAK,AAAC,CACZ,YAAY,CzBwFV,OAAwD,CyBvF3D,AAML,AnBZA,YmBYY,CAxBd,cAAc,CnBYV,KAAK,AAAC,CmBiBF,gBAAgB,CzB4Ed,OAAwD,CM7F1C,AmBYtB,AAOM,YAPM,CAxBd,cAAc,CnBYV,KAAK,CmBmBC,EAAE,CAPV,YAAY,CAxBd,cAAc,CnBYV,KAAK,CmBoBC,EAAE,AAAC,CACH,gBAAgB,CzBwEhB,OAAwD,CyBvEzD,AAlCT,AAMI,aANS,CAAb,aAAa,CAOP,EAAE,CAPR,aAAa,CAQP,EAAE,AAAC,CACH,gBAAgB,CzBgGZ,OAAwD,CyB/F7D,AAVL,AAaM,aAbO,CAaP,EAAE,CAbR,aAAa,CAcP,EAAE,CAdR,aAAa,CAeP,KAAK,CAAC,EAAE,CAfd,aAAa,CAgBP,KAAK,CAAG,KAAK,AAAC,CACZ,YAAY,CzBwFV,OAAwD,CyBvF3D,AAML,AnBZA,YmBYY,CAxBd,aAAa,CnBYT,KAAK,AAAC,CmBiBF,gBAAgB,CzB4Ed,OAAwD,CM7F1C,AmBYtB,AAOM,YAPM,CAxBd,aAAa,CnBYT,KAAK,CmBmBC,EAAE,CAPV,YAAY,CAxBd,aAAa,CnBYT,KAAK,CmBoBC,EAAE,AAAC,CACH,gBAAgB,CzBwEhB,OAAwD,CyBvEzD,AAlCT,AAMI,YANQ,CAAZ,YAAY,CAON,EAAE,CAPR,YAAY,CAQN,EAAE,AAAC,CACH,gBAAgB,CzBgGZ,OAAwD,CyB/F7D,AAVL,AAaM,YAbM,CAaN,EAAE,CAbR,YAAY,CAcN,EAAE,CAdR,YAAY,CAeN,KAAK,CAAC,EAAE,CAfd,YAAY,CAgBN,KAAK,CAAG,KAAK,AAAC,CACZ,YAAY,CzBwFV,OAAwD,CyBvF3D,AAML,AnBZA,YmBYY,CAxBd,YAAY,CnBYR,KAAK,AAAC,CmBiBF,gBAAgB,CzB4Ed,OAAwD,CM7F1C,AmBYtB,AAOM,YAPM,CAxBd,YAAY,CnBYR,KAAK,CmBmBC,EAAE,CAPV,YAAY,CAxBd,YAAY,CnBYR,KAAK,CmBoBC,EAAE,AAAC,CACH,gBAAgB,CzBwEhB,OAAwD,CyBvEzD,AAlCT,AAMI,WANO,CAAX,WAAW,CAOL,EAAE,CAPR,WAAW,CAQL,EAAE,AAAC,CACH,gBAAgB,CzBgGZ,OAAwD,CyB/F7D,AAVL,AAaM,WAbK,CAaL,EAAE,CAbR,WAAW,CAcL,EAAE,CAdR,WAAW,CAeL,KAAK,CAAC,EAAE,CAfd,WAAW,CAgBL,KAAK,CAAG,KAAK,AAAC,CACZ,YAAY,CzBwFV,OAAwD,CyBvF3D,AAML,AnBZA,YmBYY,CAxBd,WAAW,CnBYP,KAAK,AAAC,CmBiBF,gBAAgB,CzB4Ed,OAAwD,CM7F1C,AmBYtB,AAOM,YAPM,CAxBd,WAAW,CnBYP,KAAK,CmBmBC,EAAE,CAPV,YAAY,CAxBd,WAAW,CnBYP,KAAK,CmBoBC,EAAE,AAAC,CACH,gBAAgB,CzBwEhB,OAAwD,CyBvEzD,AAlCT,AAMI,aANS,CAAb,aAAa,CAOP,EAAE,CAPR,aAAa,CAQP,EAAE,AAAC,CACH,gBAAgB,C3BOd,iBAAI,C2BNP,AAcH,AnBZA,YmBYY,CAxBd,aAAa,CnBYT,KAAK,AAAC,CmBiBF,gBAAgB,C3BbhB,iBAAI,CQJY,AmBYtB,AAOM,YAPM,CAxBd,aAAa,CnBYT,KAAK,CmBmBC,EAAE,CAPV,YAAY,CAxBd,aAAa,CnBYT,KAAK,CmBoBC,EAAE,AAAC,CACH,gBAAgB,C3BjBlB,iBAAI,C2BkBH,AgB6ET,AAEI,MAFE,CACJ,WAAW,CACT,EAAE,AAAC,CACD,KAAK,C3C5GH,IAAI,C2C6GN,gBAAgB,C3CrGX,OAAO,C2CsGZ,YAAY,C3CtGP,OAAO,C2CuGb,AANL,AAUI,MAVE,CASJ,YAAY,CACV,EAAE,AAAC,CACD,KAAK,C3C7GA,OAAO,C2C8GZ,gBAAgB,C3CnHX,OAAO,C2CoHZ,YAAY,C3CpHP,OAAO,C2CqHb,AAIL,AAAA,WAAW,AAAC,CACV,KAAK,C3C5HC,IAAI,C2C6HV,gBAAgB,C3CrHP,OAAO,C2C+IjB,AA5BD,AAIE,WAJS,CAIT,EAAE,CAJJ,WAAW,CAKT,EAAE,CALJ,WAAW,CAMT,KAAK,CAAC,EAAE,AAAC,CACP,YAAY,C3C1HL,OAAO,C2C2Hf,AARH,AAUE,WAVS,AAUR,eAAe,AAAC,CACf,MAAM,CAAE,CAAC,CACV,AAZH,AAeI,WAfO,AAcR,cAAc,CA/IjB,KAAK,CAAC,EAAE,CAAC,WAAY,CAAA,GAAG,CAgJG,CACrB,gBAAgB,C3C3Id,sBAAI,C2C4IP,AAjBL,AnCrHE,WmCqHS,AAoBR,YAAY,CACX,KAAK,CAAC,EAAE,CnC1IR,KAAK,AAAC,CmC4IF,KAAK,C3ClJL,IAAI,C2CmJJ,gBAAgB,C3CnJhB,uBAAI,CQMY,AD6DpB,MAAM,sBoCiGN,CALJ,AAKI,oBALa,AAKL,CAEJ,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,IAAI,CAChB,0BAA0B,CAAE,KAAK,CAOpC,AAjBL,AAaQ,oBAbS,CAaP,eAAe,AAAC,CAChB,MAAM,CAAE,CAAC,CACV,CAEJ,ApC7GD,MAAM,sBoCiGN,CALJ,AAKI,oBALa,AAKL,CAEJ,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,IAAI,CAChB,0BAA0B,CAAE,KAAK,CAOpC,AAjBL,AAaQ,oBAbS,CAaP,eAAe,AAAC,CAChB,MAAM,CAAE,CAAC,CACV,CAEJ,ApC7GD,MAAM,sBoCiGN,CALJ,AAKI,oBALa,AAKL,CAEJ,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,IAAI,CAChB,0BAA0B,CAAE,KAAK,CAOpC,AAjBL,AAaQ,oBAbS,CAaP,eAAe,AAAC,CAChB,MAAM,CAAE,CAAC,CACV,CAEJ,ApC7GD,MAAM,uBoCiGN,CALJ,AAKI,oBALa,AAKL,CAEJ,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,IAAI,CAChB,0BAA0B,CAAE,KAAK,CAOpC,AAjBL,AAaQ,oBAbS,CAaP,eAAe,AAAC,CAChB,MAAM,CAAE,CAAC,CACV,CAEJ,AAjBL,AAKI,iBALa,AAKL,CAEJ,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,IAAI,CAChB,0BAA0B,CAAE,KAAK,CAOpC,AAjBL,AAaQ,iBAbS,CAaP,eAAe,AAAC,CAChB,MAAM,CAAE,CAAC,CACV,AC9KT,AAAA,aAAa,AAAC,CACZ,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,MAAM,C1CiH2B,0BAAyD,C0ChH1F,OAAO,CzCwXqB,OAAO,CACP,MAAM,CEpQ9B,SAAS,CAtCE,IAAC,CuC5EhB,WAAW,CzCkRiB,GAAG,CyCjR/B,WAAW,CzCsRiB,GAAG,CyCrR/B,KAAK,C5CFI,OAAO,C4CGhB,gBAAgB,C5CVV,IAAI,C4CWV,eAAe,CAAE,WAAW,CAC5B,MAAM,CzC0NsB,GAAG,CyC1NH,KAAK,C5CRxB,OAAO,C6BQd,aAAa,C7BiCD,MAAO,CgCnCjB,UAAU,C7BuewB,YAAY,CAAC,KAAI,CAAC,WAAW,CAAE,UAAU,CAAC,KAAI,CAAC,WAAW,CyC5bjG,AZvCK,MAAM,iCYdZ,CAAA,AAAA,aAAa,AAAC,CZeN,UAAU,CAAE,IAAI,CYsCvB,CAAA,AArDD,AAqBE,aArBW,EAqBR,UAAU,AAAC,CACZ,gBAAgB,CAAE,WAAW,CAC7B,MAAM,CAAE,CAAC,CACV,AAxBH,AA2BE,aA3BW,CA2BT,cAAc,AAAC,CACf,KAAK,CAAE,WAAW,CAClB,WAAW,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,C5CtBX,OAAO,C4CuBf,AA9BH,AlBOE,akBPW,ClBOT,KAAK,AAAC,CACN,KAAK,C1BDE,OAAO,C0BEd,gBAAgB,C1BTZ,IAAI,C0BUR,YAAY,C1BET,OAAO,C0BDV,OAAO,CAAE,CAAC,CAKR,UAAU,CvBoXc,CAAC,CAAC,CAAC,CAAC,CAAC,CAFL,KAAK,CHtX5B,qBAAO,C0BMX,AkBlBH,AAoCE,aApCW,EAoCR,WAAW,AAAC,CACb,KAAK,C5C/BE,OAAO,C4CiCd,OAAO,CAAE,CAAC,CACX,AAxCH,AA+CE,aA/CW,CA+CT,QAAQ,CA/CZ,aAAa,CAgDV,AAAA,QAAC,AAAA,CAAU,CACV,gBAAgB,C5C/CT,OAAO,C4CiDd,OAAO,CAAE,CAAC,CACX,AAGH,AAIE,KAJG,AAIF,aAAa,CAJX,AAAA,IAAC,CAAK,MAAM,AAAX,EACN,KAAK,AAGF,aAAa,CAHX,AAAA,IAAC,CAAK,MAAM,AAAX,EACN,KAAK,AAEF,aAAa,CAFX,AAAA,IAAC,CAAK,gBAAgB,AAArB,EACN,KAAK,AACF,aAAa,CADX,AAAA,IAAC,CAAK,OAAO,AAAZ,CACW,CACb,UAAU,CAAE,IAAI,CACjB,AAGH,AACE,MADI,AAAA,aAAa,CACf,KAAK,EAAE,SAAS,AAAC,CAMjB,KAAK,C5ChEE,OAAO,C4CiEd,gBAAgB,C5CxEZ,IAAI,C4CyET,AAIH,AAAA,kBAAkB,CAClB,mBAAmB,AAAC,CAClB,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACZ,AASD,AAAA,eAAe,AAAC,CACd,WAAW,C1CyBsB,mBAAyD,C0CxB1F,cAAc,C1CwBmB,mBAAyD,C0CvB1F,aAAa,CAAE,CAAC,CvC3Bd,SAAS,CAAC,OAAC,CuC6Bb,WAAW,CzC+LiB,GAAG,CyC9LhC,AAED,AAAA,kBAAkB,AAAC,CACjB,WAAW,C1CiBsB,iBAAyD,C0ChB1F,cAAc,C1CgBmB,iBAAyD,CGKtF,SAAS,CAtCE,OAAC,CuCmBhB,WAAW,CzC6HiB,GAAG,CyC5HhC,AAED,AAAA,kBAAkB,AAAC,CACjB,WAAW,C1CUsB,kBAAyD,C0CT1F,cAAc,C1CSmB,kBAAyD,CGKtF,SAAS,CAtCE,OAAC,CuC0BhB,WAAW,CzCuHiB,GAAG,CyCtHhC,AAQD,AAAA,uBAAuB,AAAC,CACtB,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,OAAO,CzCmQqB,OAAO,CyCnQT,CAAC,CAC3B,aAAa,CAAE,CAAC,CvCDZ,SAAS,CAtCE,IAAC,CuCyChB,WAAW,CzCkKiB,GAAG,CyCjK/B,KAAK,C5CvHI,OAAO,C4CwHhB,gBAAgB,CAAE,WAAW,CAC7B,MAAM,CAAE,iBAAiB,CACzB,YAAY,CzCsGgB,GAAG,CyCtGG,CAAC,CAOpC,AAjBD,AAYE,uBAZqB,AAYpB,gBAAgB,CAZnB,uBAAuB,AAapB,gBAAgB,AAAC,CAChB,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,CAAC,CAChB,AAWH,AAAA,gBAAgB,AAAC,CACf,MAAM,C1C9B2B,yBAAyD,C0C+B1F,OAAO,CzCmPqB,MAAM,CACN,KAAK,CE9Q7B,SAAS,CAtCE,OAAC,CuCkEhB,WAAW,CzC+EiB,GAAG,C0BxN7B,aAAa,C1B+Na,KAAK,CyCpFlC,AAED,AAAA,gBAAgB,AAAC,CACf,MAAM,C1CtC2B,wBAAyD,C0CuC1F,OAAO,CzCgPqB,KAAK,CACL,IAAI,CEnR5B,SAAS,CAtCE,OAAC,CuC0EhB,WAAW,CzCsEiB,GAAG,C0BvN7B,aAAa,C1B8Na,KAAK,CyC3ElC,AAGD,AACE,MADI,AAAA,aAAa,CAChB,AAAA,IAAC,AAAA,EADJ,MAAM,AAAA,aAAa,CAEhB,AAAA,QAAC,AAAA,CAAU,CACV,MAAM,CAAE,IAAI,CACb,AAGH,AAAA,QAAQ,AAAA,aAAa,AAAC,CACpB,MAAM,CAAE,IAAI,CACb,AAOD,AAAA,WAAW,AAAC,CACV,aAAa,CzC0UyB,IAAI,CyCzU3C,AAED,AAAA,UAAU,AAAC,CACT,OAAO,CAAE,KAAK,CACd,UAAU,CzC2T4B,MAAM,CyC1T7C,AAOD,AAAA,SAAS,AAAC,CACR,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,IAAI,CACf,YAAY,CAAE,IAA4B,CAC1C,WAAW,CAAE,IAA4B,CAO1C,AAXD,AAME,SANO,CAML,IAAI,CANR,SAAS,EAOL,AAAA,KAAC,EAAO,MAAM,AAAb,CAAe,CAChB,aAAa,CAAE,GAA2B,CAC1C,YAAY,CAAE,GAA2B,CAC1C,AAQH,AAAA,WAAW,AAAC,CACV,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,YAAY,CzCgS0B,OAAO,CyC/R9C,AAED,AAAA,iBAAiB,AAAC,CAChB,QAAQ,CAAE,QAAQ,CAClB,UAAU,CzC4R4B,KAAK,CyC3R3C,WAAW,CzC0R2B,QAAO,CyCnR9C,AAVD,AAME,iBANe,CAMd,AAAA,QAAC,AAAA,EAAY,iBAAiB,CANjC,iBAAiB,CAOb,QAAQ,CAAG,iBAAiB,AAAC,CAC7B,KAAK,C5C1NE,OAAO,C4C2Nf,AAGH,AAAA,iBAAiB,AAAC,CAChB,aAAa,CAAE,CAAC,CACjB,AAED,AAAA,kBAAkB,AAAC,CACjB,OAAO,CAAE,WAAW,CACpB,WAAW,CAAE,MAAM,CACnB,YAAY,CAAE,CAAC,CACf,YAAY,CzC6Q0B,MAAM,CyCpQ7C,AAbD,AAOE,kBAPgB,CAOhB,iBAAiB,AAAC,CAChB,QAAQ,CAAE,MAAM,CAChB,UAAU,CAAE,CAAC,CACb,YAAY,CzCwQwB,QAAQ,CyCvQ5C,WAAW,CAAE,CAAC,CACf,AlB1PH,AA2CE,eA3Ca,AA2CI,CACf,OAAO,CAAE,IAAI,CACb,KAAK,CAAE,IAAI,CACX,UAAU,CvB2c0B,MAAM,CEjb1C,SAAS,CAAC,GAAC,CqBxBX,KAAK,C1BvBD,OAAO,C0BwBZ,AAjDH,AAmDE,cAnDY,AAmDI,CACd,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,IAAI,CACT,IAAI,CAAE,CAAC,CACP,OAAO,CAAE,CAAC,CACV,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,IAAI,CACf,OAAO,CvBgyByB,MAAM,CACN,KAAK,CuBhyBrC,UAAU,CAAE,KAAK,CrBoEf,SAAS,CAtCE,OAAC,CqB5Bd,WAAW,CvBuOe,GAAG,CuBtO7B,KAAK,C1BxDD,IAAI,C0ByDR,gBAAgB,C1BtCZ,oBAAO,C6BPX,aAAa,C7BiCD,MAAO,C0BqBpB,AAJC,AAAA,SAAS,CAAG,IAAI,CApEpB,cAAc,CAqEV,SAAS,EAAG,AAAA,KAAC,EAAO,MAAM,AAAb,EArEjB,cAAc,AAqEsB,CAC9B,IAAI,CAAE,GAA2B,CAClC,AAvEL,AA2EI,cA3EU,EAAE,KAAK,CAAnB,eAAe,CAAjB,cAAc,EAAE,KAAK,CACf,cAAc,CAAhB,SAAS,CADX,eAAe,CACb,SAAS,CAAP,cAAc,AA0EM,CACpB,OAAO,CAAE,KAAK,CACf,AA7EL,AAgCI,cAhCU,CAgFZ,aAAa,CAhFE,KAAK,CAgFpB,aAAa,AA/EV,SAAS,AA+BgC,CAkDxC,YAAY,C1BzDV,OAAO,C0B4DP,aAAa,CxBqCc,oBAAyD,CwBpCpF,gBAAgB,CxBzBP,+PAAwH,CwB0BjI,iBAAiB,CAAE,SAAS,CAC5B,mBAAmB,CAAE,KAAK,CxBkCC,uBAAyD,CwBlC7B,MAAM,CAC7D,eAAe,CxBiCY,qBAAyD,CAAzD,qBAAyD,CwBxFvF,AAlCL,AA4FM,cA5FQ,CAgFZ,aAAa,CAhFE,KAAK,CA4Fd,KAAK,CAZX,aAAa,AA/EV,SAAS,CA2FN,KAAK,AAAC,CACN,YAAY,C1BpEZ,OAAO,C0BqEP,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CvB0SK,KAAK,CH/W3B,qBAAO,C0BsER,AA/FP,AAgCI,cAhCU,CAoGZ,QAAQ,AAAA,aAAa,CApGN,KAAK,CAoGpB,QAAQ,AAAA,aAAa,AAnGlB,SAAS,AA+BgC,CAuEtC,aAAa,CxBmBc,oBAAyD,CwBlBpF,mBAAmB,CAAE,GAAG,CxBkBG,uBAAyD,CwBlB/B,KAAK,CxBkB/B,uBAAyD,CwBxFvF,AAlCL,AAgCI,cAhCU,CA6GZ,cAAc,CA7GC,KAAK,CA6GpB,cAAc,AA5GX,SAAS,AA+BgC,CA+ExC,YAAY,C1BtFV,OAAO,C0ByFP,aAAa,CxBQc,uBAAyD,CwBPpF,UAAU,CxBtDD,8KAAwH,CC4gBhE,KAAK,CAtMhD,MAAM,CAsMoE,eAA+B,CAAC,SAAS,CHnkBzI,IAAI,CEuDK,+PAAwH,CwBsDtD,gEAAyE,CAAC,SAAS,CAjFjK,AAlCL,AAsHM,cAtHQ,CA6GZ,cAAc,CA7GC,KAAK,CAsHd,KAAK,CATX,cAAc,AA5GX,SAAS,CAqHN,KAAK,AAAC,CACN,YAAY,C1B9FZ,OAAO,C0B+FP,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CvBgRK,KAAK,CH/W3B,qBAAO,C0BgGR,AAzHP,AA+HM,cA/HQ,CA6HZ,iBAAiB,CA7HF,KAAK,CA+Hd,iBAAiB,CAFvB,iBAAiB,AA5Hd,SAAS,CA8HN,iBAAiB,AAAC,CAClB,KAAK,C1BvGL,OAAO,C0BwGR,AAjIP,AAmIM,cAnIQ,CA6HZ,iBAAiB,CA7HF,KAAK,CAApB,eAAe,CAAjB,cAAc,CA6HZ,iBAAiB,CA7HF,KAAK,CACd,cAAc,CA4HpB,iBAAiB,AA5Hd,SAAS,CADZ,eAAe,CA6Hf,iBAAiB,AA5Hd,SAAS,CAAN,cAAc,AAkIM,CACpB,OAAO,CAAE,KAAK,CACf,AArIP,AA2IM,cA3IQ,CAyIZ,qBAAqB,CAzIN,KAAK,CA2Id,qBAAqB,CAF3B,qBAAqB,AAxIlB,SAAS,CA0IN,qBAAqB,AAAC,CACtB,KAAK,C1BnHL,OAAO,C0BwHR,AAjJP,AA8IQ,cA9IM,CAyIZ,qBAAqB,CAzIN,KAAK,CA2Id,qBAAqB,EAGlB,MAAM,CALf,qBAAqB,AAxIlB,SAAS,CA0IN,qBAAqB,EAGlB,MAAM,AAAC,CACR,YAAY,C1BtHd,OAAO,C0BuHN,AAhJT,AAoJQ,cApJM,CAyIZ,qBAAqB,CAzIN,KAAK,CAmJd,OAAO,CACL,qBAAqB,EAAE,MAAM,CAXrC,qBAAqB,AAxIlB,SAAS,CAkJN,OAAO,CACL,qBAAqB,EAAE,MAAM,AAAC,CAC9B,YAAY,C1B5Hd,OAAO,C+BnBX,gBAAgB,C/BmBZ,OAAO,C0B8HN,AAvJT,AA2JQ,cA3JM,CAyIZ,qBAAqB,CAzIN,KAAK,CA0Jd,KAAK,CACH,qBAAqB,EAAE,MAAM,CAlBrC,qBAAqB,AAxIlB,SAAS,CAyJN,KAAK,CACH,qBAAqB,EAAE,MAAM,AAAC,CAC9B,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CvB4OG,KAAK,CH/W3B,qBAAO,C0BoIN,AA7JT,AA+JQ,cA/JM,CAyIZ,qBAAqB,CAzIN,KAAK,CA0Jd,KAAK,CAKJ,GAAK,EAAC,OAAO,EAAI,qBAAqB,EAAE,MAAM,CAtBrD,qBAAqB,AAxIlB,SAAS,CAyJN,KAAK,CAKJ,GAAK,EAAC,OAAO,EAAI,qBAAqB,EAAE,MAAM,AAAC,CAC9C,YAAY,C1BvId,OAAO,C0BwIN,AAjKT,AAyKM,cAzKQ,CAuKZ,kBAAkB,CAvKH,KAAK,CAyKd,kBAAkB,CAFxB,kBAAkB,AAtKf,SAAS,CAwKN,kBAAkB,AAAC,CACnB,YAAY,C1BjJZ,OAAO,C0BkJR,AA3KP,AA8KQ,cA9KM,CAuKZ,kBAAkB,CAvKH,KAAK,CA6Kd,KAAK,CACH,kBAAkB,CAP1B,kBAAkB,AAtKf,SAAS,CA4KN,KAAK,CACH,kBAAkB,AAAC,CACnB,YAAY,C1BtJd,OAAO,C0BuJL,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CvBwNG,KAAK,CH/W3B,qBAAO,C0BwJN,AAjLT,AA2CE,iBA3Ce,AA2CE,CACf,OAAO,CAAE,IAAI,CACb,KAAK,CAAE,IAAI,CACX,UAAU,CvB2c0B,MAAM,CEjb1C,SAAS,CAAC,GAAC,CqBxBX,KAAK,C1B1BH,OAAO,C0B2BV,AAjDH,AAmDE,gBAnDc,AAmDE,CACd,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,IAAI,CACT,IAAI,CAAE,CAAC,CACP,OAAO,CAAE,CAAC,CACV,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,IAAI,CACf,OAAO,CvBgyByB,MAAM,CACN,KAAK,CuBhyBrC,UAAU,CAAE,KAAK,CrBoEf,SAAS,CAtCE,OAAC,CqB5Bd,WAAW,CvBuOe,GAAG,CuBtO7B,KAAK,C1BxDD,IAAI,C0ByDR,gBAAgB,C1BzCd,mBAAO,C6BJT,aAAa,C7BiCD,MAAO,C0BqBpB,AAJC,AAAA,SAAS,CAAG,IAAI,CApEpB,gBAAgB,CAqEZ,SAAS,EAAG,AAAA,KAAC,EAAO,MAAM,AAAb,EArEjB,gBAAgB,AAqEoB,CAC9B,IAAI,CAAE,GAA2B,CAClC,AAvEL,AA2EI,cA3EU,EAAE,OAAO,CAArB,iBAAiB,CAAnB,cAAc,EAAE,OAAO,CACjB,gBAAgB,CAAlB,WAAW,CADb,iBAAiB,CACf,WAAW,CAAT,gBAAgB,AA0EI,CACpB,OAAO,CAAE,KAAK,CACf,AA7EL,AAgCI,cAhCU,CAgFZ,aAAa,CAhFE,OAAO,CAgFtB,aAAa,AA/EV,WAAW,AA+B8B,CAkDxC,YAAY,C1B5DZ,OAAO,C0B+DL,aAAa,CxBqCc,oBAAyD,CwBpCpF,gBAAgB,CxBzBP,0TAAwH,CwB0BjI,iBAAiB,CAAE,SAAS,CAC5B,mBAAmB,CAAE,KAAK,CxBkCC,uBAAyD,CwBlC7B,MAAM,CAC7D,eAAe,CxBiCY,qBAAyD,CAAzD,qBAAyD,CwBxFvF,AAlCL,AA4FM,cA5FQ,CAgFZ,aAAa,CAhFE,OAAO,CA4FhB,KAAK,CAZX,aAAa,AA/EV,WAAW,CA2FR,KAAK,AAAC,CACN,YAAY,C1BvEd,OAAO,C0BwEL,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CvB0SK,KAAK,CHlX7B,oBAAO,C0ByEN,AA/FP,AAgCI,cAhCU,CAoGZ,QAAQ,AAAA,aAAa,CApGN,OAAO,CAoGtB,QAAQ,AAAA,aAAa,AAnGlB,WAAW,AA+B8B,CAuEtC,aAAa,CxBmBc,oBAAyD,CwBlBpF,mBAAmB,CAAE,GAAG,CxBkBG,uBAAyD,CwBlB/B,KAAK,CxBkB/B,uBAAyD,CwBxFvF,AAlCL,AAgCI,cAhCU,CA6GZ,cAAc,CA7GC,OAAO,CA6GtB,cAAc,AA5GX,WAAW,AA+B8B,CA+ExC,YAAY,C1BzFZ,OAAO,C0B4FL,aAAa,CxBQc,uBAAyD,CwBPpF,UAAU,CxBtDD,8KAAwH,CC4gBhE,KAAK,CAtMhD,MAAM,CAsMoE,eAA+B,CAAC,SAAS,CHnkBzI,IAAI,CEuDK,0TAAwH,CwBsDtD,gEAAyE,CAAC,SAAS,CAjFjK,AAlCL,AAsHM,cAtHQ,CA6GZ,cAAc,CA7GC,OAAO,CAsHhB,KAAK,CATX,cAAc,AA5GX,WAAW,CAqHR,KAAK,AAAC,CACN,YAAY,C1BjGd,OAAO,C0BkGL,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CvBgRK,KAAK,CHlX7B,oBAAO,C0BmGN,AAzHP,AA+HM,cA/HQ,CA6HZ,iBAAiB,CA7HF,OAAO,CA+HhB,iBAAiB,CAFvB,iBAAiB,AA5Hd,WAAW,CA8HR,iBAAiB,AAAC,CAClB,KAAK,C1B1GP,OAAO,C0B2GN,AAjIP,AAmIM,cAnIQ,CA6HZ,iBAAiB,CA7HF,OAAO,CAAtB,iBAAiB,CAAnB,cAAc,CA6HZ,iBAAiB,CA7HF,OAAO,CAChB,gBAAgB,CA4HtB,iBAAiB,AA5Hd,WAAW,CADd,iBAAiB,CA6HjB,iBAAiB,AA5Hd,WAAW,CAAR,gBAAgB,AAkII,CACpB,OAAO,CAAE,KAAK,CACf,AArIP,AA2IM,cA3IQ,CAyIZ,qBAAqB,CAzIN,OAAO,CA2IhB,qBAAqB,CAF3B,qBAAqB,AAxIlB,WAAW,CA0IR,qBAAqB,AAAC,CACtB,KAAK,C1BtHP,OAAO,C0B2HN,AAjJP,AA8IQ,cA9IM,CAyIZ,qBAAqB,CAzIN,OAAO,CA2IhB,qBAAqB,EAGlB,MAAM,CALf,qBAAqB,AAxIlB,WAAW,CA0IR,qBAAqB,EAGlB,MAAM,AAAC,CACR,YAAY,C1BzHhB,OAAO,C0B0HJ,AAhJT,AAoJQ,cApJM,CAyIZ,qBAAqB,CAzIN,OAAO,CAmJhB,OAAO,CACL,qBAAqB,EAAE,MAAM,CAXrC,qBAAqB,AAxIlB,WAAW,CAkJR,OAAO,CACL,qBAAqB,EAAE,MAAM,AAAC,CAC9B,YAAY,C1B/HhB,OAAO,C+BhBT,gBAAgB,C/BgBd,OAAO,C0BiIJ,AAvJT,AA2JQ,cA3JM,CAyIZ,qBAAqB,CAzIN,OAAO,CA0JhB,KAAK,CACH,qBAAqB,EAAE,MAAM,CAlBrC,qBAAqB,AAxIlB,WAAW,CAyJR,KAAK,CACH,qBAAqB,EAAE,MAAM,AAAC,CAC9B,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CvB4OG,KAAK,CHlX7B,oBAAO,C0BuIJ,AA7JT,AA+JQ,cA/JM,CAyIZ,qBAAqB,CAzIN,OAAO,CA0JhB,KAAK,CAKJ,GAAK,EAAC,OAAO,EAAI,qBAAqB,EAAE,MAAM,CAtBrD,qBAAqB,AAxIlB,WAAW,CAyJR,KAAK,CAKJ,GAAK,EAAC,OAAO,EAAI,qBAAqB,EAAE,MAAM,AAAC,CAC9C,YAAY,C1B1IhB,OAAO,C0B2IJ,AAjKT,AAyKM,cAzKQ,CAuKZ,kBAAkB,CAvKH,OAAO,CAyKhB,kBAAkB,CAFxB,kBAAkB,AAtKf,WAAW,CAwKR,kBAAkB,AAAC,CACnB,YAAY,C1BpJd,OAAO,C0BqJN,AA3KP,AA8KQ,cA9KM,CAuKZ,kBAAkB,CAvKH,OAAO,CA6KhB,KAAK,CACH,kBAAkB,CAP1B,kBAAkB,AAtKf,WAAW,CA4KR,KAAK,CACH,kBAAkB,AAAC,CACnB,YAAY,C1BzJhB,OAAO,C0B0JH,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CvBwNG,KAAK,CHlX7B,oBAAO,C0B2JJ,AkBiGT,AAAA,YAAY,AAAC,CACX,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,QAAQ,CACnB,WAAW,CAAE,MAAM,CAqEpB,AAxED,AAQE,YARU,CAQV,WAAW,AAAC,CACV,KAAK,CAAE,IAAI,CACZ,ArChOC,MAAM,mBqCoON,CAdJ,AAcI,YAdQ,CAcR,KAAK,AAAC,CACJ,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,eAAe,CAAE,MAAM,CACvB,aAAa,CAAE,CAAC,CACjB,AAnBL,AAsBI,YAtBQ,CAsBR,WAAW,AAAC,CACV,OAAO,CAAE,IAAI,CACb,IAAI,CAAE,QAAQ,CACd,SAAS,CAAE,QAAQ,CACnB,WAAW,CAAE,MAAM,CACnB,aAAa,CAAE,CAAC,CACjB,AA5BL,AA+BI,YA/BQ,CA+BR,aAAa,AAAC,CACZ,OAAO,CAAE,YAAY,CACrB,KAAK,CAAE,IAAI,CACX,cAAc,CAAE,MAAM,CACvB,AAnCL,AAsCI,YAtCQ,CAsCR,uBAAuB,AAAC,CACtB,OAAO,CAAE,YAAY,CACtB,AAxCL,AA0CI,YA1CQ,CA0CR,YAAY,CA1ChB,YAAY,CA2CR,cAAc,AAAC,CACb,KAAK,CAAE,IAAI,CACZ,AA7CL,AAiDI,YAjDQ,CAiDR,WAAW,AAAC,CACV,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,eAAe,CAAE,MAAM,CACvB,KAAK,CAAE,IAAI,CACX,YAAY,CAAE,CAAC,CAChB,AAvDL,AAwDI,YAxDQ,CAwDR,iBAAiB,AAAC,CAChB,QAAQ,CAAE,QAAQ,CAClB,WAAW,CAAE,CAAC,CACd,UAAU,CAAE,CAAC,CACb,YAAY,CzC+KsB,MAAM,CyC9KxC,WAAW,CAAE,CAAC,CACf,AA9DL,AAgEI,YAhEQ,CAgER,eAAe,AAAC,CACd,WAAW,CAAE,MAAM,CACnB,eAAe,CAAE,MAAM,CACxB,AAnEL,AAoEI,YApEQ,CAoER,qBAAqB,AAAC,CACpB,aAAa,CAAE,CAAC,CACjB,CAnDA,AC/RL,AAAA,IAAI,AAAC,CACH,OAAO,CAAE,YAAY,CAErB,WAAW,C1CsRiB,GAAG,C0CrR/B,KAAK,C7CEI,OAAO,C6CDhB,UAAU,CAAE,MAAM,CAGlB,cAAc,CAAE,MAAM,CACtB,WAAW,CAAE,IAAI,CACjB,gBAAgB,CAAE,WAAW,CAC7B,MAAM,C1C2NsB,GAAG,C0C3NL,KAAK,CAAC,WAAW,CzBuF3C,OAAO,CjB0RqB,OAAO,CACP,MAAM,CEpQ9B,SAAS,CAtCE,IAAC,CeiBhB,WAAW,CjB0LiB,GAAG,C0BlR7B,aAAa,C7BiCD,MAAO,CgCnCjB,UAAU,C7Bgbc,KAAK,CAAC,KAAI,CAAC,WAAW,CAAE,gBAAgB,CAAC,KAAI,CAAC,WAAW,CAAE,YAAY,CAAC,KAAI,CAAC,WAAW,CAAE,UAAU,CAAC,KAAI,CAAC,WAAW,C0C7YlJ,Ab/BK,MAAM,iCadZ,CAAA,AAAA,IAAI,AAAC,CbeG,UAAU,CAAE,IAAI,Ca8BvB,CAAA,AA7CD,ArCME,IqCNE,CrCMA,KAAK,AAAC,CqCUN,KAAK,C7CVE,OAAO,C6CWd,eAAe,CAAE,IAAI,CrCXD,AqCNxB,AAoBE,IApBE,CAoBA,KAAK,CApBT,IAAI,AAqBD,MAAM,AAAC,CACN,OAAO,CAAE,CAAC,CACV,UAAU,C1C6WgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAFL,KAAK,CHtX5B,qBAAO,C6CYX,AAxBH,AA2BE,IA3BE,AA2BD,SAAS,CA3BZ,IAAI,CA4BA,QAAQ,AAAC,CACT,OAAO,C1CiZmB,GAAG,C0C/Y9B,AA/BH,AAiCE,IAjCE,CAiCD,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,CAAE,CAC9B,MAAM,CAAyC,OAAO,CAUvD,AAIH,AAAA,CAAC,AAAA,IAAI,AAAA,SAAS,CACd,QAAQ,CAAC,QAAQ,CAAC,CAAC,AAAA,IAAI,AAAC,CACtB,cAAc,CAAE,IAAI,CACrB,AAzDD,AAiEE,YAjEU,AAiEF,CzB3DR,KAAK,CpBAC,IAAI,C+BAR,gBAAgB,C/BYb,OAAO,CoBVZ,YAAY,CpBUP,OAAO,C6CiDX,AAnEH,ArCYE,YqCZU,CrCYR,KAAK,AAAC,CYAN,KAAK,CpBND,IAAI,C+BAR,gBAAgB,C/BYb,OAAO,CoBJV,YAAY,CpBIT,OAAO,CQNU,AqCZxB,AzBiBE,YyBjBU,CzBiBR,KAAK,CyBjBT,YAAY,AzBkBT,MAAM,AAAC,CACN,KAAK,CpBbD,IAAI,C+BAR,gBAAgB,C/BYb,OAAO,CoBGV,YAAY,CpBHT,OAAO,CoBQR,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB8WO,KAAK,CiB9WW,qBAAyC,CAEpF,AyB5BH,AzB+BE,YyB/BU,AzB+BT,SAAS,CyB/BZ,YAAY,CzBgCR,QAAQ,AAAC,CACT,KAAK,CpB3BD,IAAI,CoB4BR,gBAAgB,CpBhBb,OAAO,CoBiBV,YAAY,CpBjBT,OAAO,CoBsBX,AyBxCH,AzB0CE,YyB1CU,CzB0CT,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyB1CxC,YAAY,AzB2CqB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyB5CP,YAAY,AzB4CD,gBAAgB,AAAC,CACxB,KAAK,CpBvCD,IAAI,CoBwCR,gBAAgB,CpB5Bb,OAAO,CoBgCV,YAAY,CpBhCT,OAAO,CoB0CX,AyB5DH,AzBoDI,YyBpDQ,CzB0CT,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAUlC,KAAK,CyBpDX,YAAY,AzB2CqB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAS1B,KAAK,CART,KAAK,CyB5CP,YAAY,AzB4CD,gBAAgB,CAQrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB+UK,KAAK,CiB/Ua,qBAAyC,CAEpF,AyB3DL,AAiEE,cAjEY,AAiEJ,CzB3DR,KAAK,CpBAC,IAAI,C+BAR,gBAAgB,C/BMT,OAAO,CoBJhB,YAAY,CpBIH,OAAO,C6CuDf,AAnEH,ArCYE,cqCZY,CrCYV,KAAK,AAAC,CYAN,KAAK,CpBND,IAAI,C+BAR,gBAAgB,C/BMT,OAAO,CoBEd,YAAY,CpBFL,OAAO,CQAM,AqCZxB,AzBiBE,cyBjBY,CzBiBV,KAAK,CyBjBT,cAAc,AzBkBX,MAAM,AAAC,CACN,KAAK,CpBbD,IAAI,C+BAR,gBAAgB,C/BMT,OAAO,CoBSd,YAAY,CpBTL,OAAO,CoBcZ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB8WO,KAAK,CiB9WW,qBAAyC,CAEpF,AyB5BH,AzB+BE,cyB/BY,AzB+BX,SAAS,CyB/BZ,cAAc,CzBgCV,QAAQ,AAAC,CACT,KAAK,CpB3BD,IAAI,CoB4BR,gBAAgB,CpBtBT,OAAO,CoBuBd,YAAY,CpBvBL,OAAO,CoB4Bf,AyBxCH,AzB0CE,cyB1CY,CzB0CX,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyB1CxC,cAAc,AzB2CmB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyB5CP,cAAc,AzB4CH,gBAAgB,AAAC,CACxB,KAAK,CpBvCD,IAAI,CoBwCR,gBAAgB,CpBlCT,OAAO,CoBsCd,YAAY,CpBtCL,OAAO,CoBgDf,AyB5DH,AzBoDI,cyBpDU,CzB0CX,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAUlC,KAAK,CyBpDX,cAAc,AzB2CmB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAS1B,KAAK,CART,KAAK,CyB5CP,cAAc,AzB4CH,gBAAgB,CAQrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB+UK,KAAK,CiB/Ua,qBAAyC,CAEpF,AyB3DL,AAiEE,YAjEU,AAiEF,CzB3DR,KAAK,CpBAC,IAAI,C+BAR,gBAAgB,C/BmBZ,OAAO,CoBjBb,YAAY,CpBiBN,OAAO,C6C0CZ,AAnEH,ArCYE,YqCZU,CrCYR,KAAK,AAAC,CYAN,KAAK,CpBND,IAAI,C+BAR,gBAAgB,C/BmBZ,OAAO,CoBXX,YAAY,CpBWR,OAAO,CQbS,AqCZxB,AzBiBE,YyBjBU,CzBiBR,KAAK,CyBjBT,YAAY,AzBkBT,MAAM,AAAC,CACN,KAAK,CpBbD,IAAI,C+BAR,gBAAgB,C/BmBZ,OAAO,CoBJX,YAAY,CpBIR,OAAO,CoBCT,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB8WO,KAAK,CiB9WW,oBAAyC,CAEpF,AyB5BH,AzB+BE,YyB/BU,AzB+BT,SAAS,CyB/BZ,YAAY,CzBgCR,QAAQ,AAAC,CACT,KAAK,CpB3BD,IAAI,CoB4BR,gBAAgB,CpBTZ,OAAO,CoBUX,YAAY,CpBVR,OAAO,CoBeZ,AyBxCH,AzB0CE,YyB1CU,CzB0CT,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyB1CxC,YAAY,AzB2CqB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyB5CP,YAAY,AzB4CD,gBAAgB,AAAC,CACxB,KAAK,CpBvCD,IAAI,CoBwCR,gBAAgB,CpBrBZ,OAAO,CoByBX,YAAY,CpBzBR,OAAO,CoBmCZ,AyB5DH,AzBoDI,YyBpDQ,CzB0CT,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAUlC,KAAK,CyBpDX,YAAY,AzB2CqB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAS1B,KAAK,CART,KAAK,CyB5CP,YAAY,AzB4CD,gBAAgB,CAQrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB+UK,KAAK,CiB/Ua,oBAAyC,CAEpF,AyB3DL,AAiEE,SAjEO,AAiEC,CzB3DR,KAAK,CpBAC,IAAI,C+BAR,gBAAgB,C/BqBb,OAAO,CoBnBZ,YAAY,CpBmBP,OAAO,C6CwCX,AAnEH,ArCYE,SqCZO,CrCYL,KAAK,AAAC,CYAN,KAAK,CpBND,IAAI,C+BAR,gBAAgB,C/BqBb,OAAO,CoBbV,YAAY,CpBaT,OAAO,CQfU,AqCZxB,AzBiBE,SyBjBO,CzBiBL,KAAK,CyBjBT,SAAS,AzBkBN,MAAM,AAAC,CACN,KAAK,CpBbD,IAAI,C+BAR,gBAAgB,C/BqBb,OAAO,CoBNV,YAAY,CpBMT,OAAO,CoBDR,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB8WO,KAAK,CiB9WW,oBAAyC,CAEpF,AyB5BH,AzB+BE,SyB/BO,AzB+BN,SAAS,CyB/BZ,SAAS,CzBgCL,QAAQ,AAAC,CACT,KAAK,CpB3BD,IAAI,CoB4BR,gBAAgB,CpBPb,OAAO,CoBQV,YAAY,CpBRT,OAAO,CoBaX,AyBxCH,AzB0CE,SyB1CO,CzB0CN,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyB1CxC,SAAS,AzB2CwB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyB5CP,SAAS,AzB4CE,gBAAgB,AAAC,CACxB,KAAK,CpBvCD,IAAI,CoBwCR,gBAAgB,CpBnBb,OAAO,CoBuBV,YAAY,CpBvBT,OAAO,CoBiCX,AyB5DH,AzBoDI,SyBpDK,CzB0CN,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAUlC,KAAK,CyBpDX,SAAS,AzB2CwB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAS1B,KAAK,CART,KAAK,CyB5CP,SAAS,AzB4CE,gBAAgB,CAQrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB+UK,KAAK,CiB/Ua,oBAAyC,CAEpF,AyB3DL,AAiEE,YAjEU,AAiEF,CzB3DR,KAAK,CpBAC,IAAI,C+BAR,gBAAgB,C/BkBX,OAAO,CoBhBd,YAAY,CpBgBL,OAAO,C6C2Cb,AAnEH,ArCYE,YqCZU,CrCYR,KAAK,AAAC,CYAN,KAAK,CpBND,IAAI,C+BAR,gBAAgB,C/BkBX,OAAO,CoBVZ,YAAY,CpBUP,OAAO,CQZQ,AqCZxB,AzBiBE,YyBjBU,CzBiBR,KAAK,CyBjBT,YAAY,AzBkBT,MAAM,AAAC,CACN,KAAK,CpBbD,IAAI,C+BAR,gBAAgB,C/BkBX,OAAO,CoBHZ,YAAY,CpBGP,OAAO,CoBEV,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB8WO,KAAK,CiB9WW,oBAAyC,CAEpF,AyB5BH,AzB+BE,YyB/BU,AzB+BT,SAAS,CyB/BZ,YAAY,CzBgCR,QAAQ,AAAC,CACT,KAAK,CpB3BD,IAAI,CoB4BR,gBAAgB,CpBVX,OAAO,CoBWZ,YAAY,CpBXP,OAAO,CoBgBb,AyBxCH,AzB0CE,YyB1CU,CzB0CT,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyB1CxC,YAAY,AzB2CqB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyB5CP,YAAY,AzB4CD,gBAAgB,AAAC,CACxB,KAAK,CpBvCD,IAAI,CoBwCR,gBAAgB,CpBtBX,OAAO,CoB0BZ,YAAY,CpB1BP,OAAO,CoBoCb,AyB5DH,AzBoDI,YyBpDQ,CzB0CT,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAUlC,KAAK,CyBpDX,YAAY,AzB2CqB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAS1B,KAAK,CART,KAAK,CyB5CP,YAAY,AzB4CD,gBAAgB,CAQrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB+UK,KAAK,CiB/Ua,oBAAyC,CAEpF,AyB3DL,AAiEE,WAjES,AAiED,CzB3DR,KAAK,CpBAC,IAAI,C+BAR,gBAAgB,C/BgBd,OAAO,CoBdX,YAAY,CpBcR,OAAO,C6C6CV,AAnEH,ArCYE,WqCZS,CrCYP,KAAK,AAAC,CYAN,KAAK,CpBND,IAAI,C+BAR,gBAAgB,C/BgBd,OAAO,CoBRT,YAAY,CpBQV,OAAO,CQVW,AqCZxB,AzBiBE,WyBjBS,CzBiBP,KAAK,CyBjBT,WAAW,AzBkBR,MAAM,AAAC,CACN,KAAK,CpBbD,IAAI,C+BAR,gBAAgB,C/BgBd,OAAO,CoBDT,YAAY,CpBCV,OAAO,CoBIP,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB8WO,KAAK,CiB9WW,oBAAyC,CAEpF,AyB5BH,AzB+BE,WyB/BS,AzB+BR,SAAS,CyB/BZ,WAAW,CzBgCP,QAAQ,AAAC,CACT,KAAK,CpB3BD,IAAI,CoB4BR,gBAAgB,CpBZd,OAAO,CoBaT,YAAY,CpBbV,OAAO,CoBkBV,AyBxCH,AzB0CE,WyB1CS,CzB0CR,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyB1CxC,WAAW,AzB2CsB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyB5CP,WAAW,AzB4CA,gBAAgB,AAAC,CACxB,KAAK,CpBvCD,IAAI,CoBwCR,gBAAgB,CpBxBd,OAAO,CoB4BT,YAAY,CpB5BV,OAAO,CoBsCV,AyB5DH,AzBoDI,WyBpDO,CzB0CR,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAUlC,KAAK,CyBpDX,WAAW,AzB2CsB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAS1B,KAAK,CART,KAAK,CyB5CP,WAAW,AzB4CA,gBAAgB,CAQrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB+UK,KAAK,CiB/Ua,oBAAyC,CAEpF,AyB3DL,AAiEE,UAjEQ,AAiEA,CzB3DR,KAAK,CpBSI,OAAO,C+BTd,gBAAgB,C/BCT,OAAO,CoBChB,YAAY,CpBDH,OAAO,C6C4Df,AAnEH,ArCYE,UqCZQ,CrCYN,KAAK,AAAC,CYAN,KAAK,CpBGE,OAAO,C+BTd,gBAAgB,C/BCT,OAAO,CoBOd,YAAY,CpBPL,OAAO,CQKM,AqCZxB,AzBiBE,UyBjBQ,CzBiBN,KAAK,CyBjBT,UAAU,AzBkBP,MAAM,AAAC,CACN,KAAK,CpBJE,OAAO,C+BTd,gBAAgB,C/BCT,OAAO,CoBcd,YAAY,CpBdL,OAAO,CoBmBZ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB8WO,KAAK,CiB9WW,qBAAyC,CAEpF,AyB5BH,AzB+BE,UyB/BQ,AzB+BP,SAAS,CyB/BZ,UAAU,CzBgCN,QAAQ,AAAC,CACT,KAAK,CpBlBE,OAAO,CoBmBd,gBAAgB,CpB3BT,OAAO,CoB4Bd,YAAY,CpB5BL,OAAO,CoBiCf,AyBxCH,AzB0CE,UyB1CQ,CzB0CP,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyB1CxC,UAAU,AzB2CuB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyB5CP,UAAU,AzB4CC,gBAAgB,AAAC,CACxB,KAAK,CpB9BE,OAAO,CoB+Bd,gBAAgB,CpBvCT,OAAO,CoB2Cd,YAAY,CpB3CL,OAAO,CoBqDf,AyB5DH,AzBoDI,UyBpDM,CzB0CP,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAUlC,KAAK,CyBpDX,UAAU,AzB2CuB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAS1B,KAAK,CART,KAAK,CyB5CP,UAAU,AzB4CC,gBAAgB,CAQrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB+UK,KAAK,CiB/Ua,qBAAyC,CAEpF,AyB3DL,AAiEE,SAjEO,AAiEC,CzB3DR,KAAK,CpBAC,IAAI,C+BAR,gBAAgB,C/BQT,OAAO,CoBNhB,YAAY,CpBMH,OAAO,C6CqDf,AAnEH,ArCYE,SqCZO,CrCYL,KAAK,AAAC,CYAN,KAAK,CpBND,IAAI,C+BAR,gBAAgB,C/BQT,OAAO,CoBAd,YAAY,CpBAL,OAAO,CQFM,AqCZxB,AzBiBE,SyBjBO,CzBiBL,KAAK,CyBjBT,SAAS,AzBkBN,MAAM,AAAC,CACN,KAAK,CpBbD,IAAI,C+BAR,gBAAgB,C/BQT,OAAO,CoBOd,YAAY,CpBPL,OAAO,CoBYZ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB8WO,KAAK,CiB9WW,qBAAyC,CAEpF,AyB5BH,AzB+BE,SyB/BO,AzB+BN,SAAS,CyB/BZ,SAAS,CzBgCL,QAAQ,AAAC,CACT,KAAK,CpB3BD,IAAI,CoB4BR,gBAAgB,CpBpBT,OAAO,CoBqBd,YAAY,CpBrBL,OAAO,CoB0Bf,AyBxCH,AzB0CE,SyB1CO,CzB0CN,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyB1CxC,SAAS,AzB2CwB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyB5CP,SAAS,AzB4CE,gBAAgB,AAAC,CACxB,KAAK,CpBvCD,IAAI,CoBwCR,gBAAgB,CpBhCT,OAAO,CoBoCd,YAAY,CpBpCL,OAAO,CoB8Cf,AyB5DH,AzBoDI,SyBpDK,CzB0CN,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAUlC,KAAK,CyBpDX,SAAS,AzB2CwB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAS1B,KAAK,CART,KAAK,CyB5CP,SAAS,AzB4CE,gBAAgB,CAQrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB+UK,KAAK,CiB/Ua,qBAAyC,CAEpF,AyB3DL,AAuEE,oBAvEkB,AAuEV,CzBPR,KAAK,CpB9CA,OAAO,CoB+CZ,YAAY,CpB/CP,OAAO,C6CuDX,AAzEH,ArCYE,oBqCZkB,CrCYhB,KAAK,AAAC,CYwDN,KAAK,CpB9DD,IAAI,CoB+DR,gBAAgB,CpBnDb,OAAO,CoBoDV,YAAY,CpBpDT,OAAO,CQNU,AqCZxB,AzByEE,oByBzEkB,CzByEhB,KAAK,CyBzET,oBAAoB,AzB0EjB,MAAM,AAAC,CACN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB6TS,KAAK,CHtX5B,oBAAO,CoB0DX,AyB5EH,AzB8EE,oByB9EkB,AzB8EjB,SAAS,CyB9EZ,oBAAoB,CzB+EhB,QAAQ,AAAC,CACT,KAAK,CpB9DF,OAAO,CoB+DV,gBAAgB,CAAE,WAAW,CAC9B,AyBlFH,AzBoFE,oByBpFkB,CzBoFjB,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyBpFxC,oBAAoB,AzBqFa,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyBtFP,oBAAoB,AzBsFT,gBAAgB,AAAC,CACxB,KAAK,CpBjFD,IAAI,CoBkFR,gBAAgB,CpBtEb,OAAO,CoBuEV,YAAY,CpBvET,OAAO,CoBiFX,AyBnGH,AzB2FI,oByB3FgB,CzBoFjB,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAOlC,KAAK,CyB3FX,oBAAoB,AzBqFa,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAM1B,KAAK,CALT,KAAK,CyBtFP,oBAAoB,AzBsFT,gBAAgB,CAKrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjBwSK,KAAK,CHtX5B,oBAAO,CoBgFT,AyBlGL,AAuEE,sBAvEoB,AAuEZ,CzBPR,KAAK,CpBpDI,OAAO,CoBqDhB,YAAY,CpBrDH,OAAO,C6C6Df,AAzEH,ArCYE,sBqCZoB,CrCYlB,KAAK,AAAC,CYwDN,KAAK,CpB9DD,IAAI,CoB+DR,gBAAgB,CpBzDT,OAAO,CoB0Dd,YAAY,CpB1DL,OAAO,CQAM,AqCZxB,AzByEE,sByBzEoB,CzByElB,KAAK,CyBzET,sBAAsB,AzB0EnB,MAAM,AAAC,CACN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB6TS,KAAK,CH5XxB,qBAAO,CoBgEf,AyB5EH,AzB8EE,sByB9EoB,AzB8EnB,SAAS,CyB9EZ,sBAAsB,CzB+ElB,QAAQ,AAAC,CACT,KAAK,CpBpEE,OAAO,CoBqEd,gBAAgB,CAAE,WAAW,CAC9B,AyBlFH,AzBoFE,sByBpFoB,CzBoFnB,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyBpFxC,sBAAsB,AzBqFW,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyBtFP,sBAAsB,AzBsFX,gBAAgB,AAAC,CACxB,KAAK,CpBjFD,IAAI,CoBkFR,gBAAgB,CpB5ET,OAAO,CoB6Ed,YAAY,CpB7EL,OAAO,CoBuFf,AyBnGH,AzB2FI,sByB3FkB,CzBoFnB,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAOlC,KAAK,CyB3FX,sBAAsB,AzBqFW,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAM1B,KAAK,CALT,KAAK,CyBtFP,sBAAsB,AzBsFX,gBAAgB,CAKrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjBwSK,KAAK,CH5XxB,qBAAO,CoBsFb,AyBlGL,AAuEE,oBAvEkB,AAuEV,CzBPR,KAAK,CpBvCC,OAAO,CoBwCb,YAAY,CpBxCN,OAAO,C6CgDZ,AAzEH,ArCYE,oBqCZkB,CrCYhB,KAAK,AAAC,CYwDN,KAAK,CpB9DD,IAAI,CoB+DR,gBAAgB,CpB5CZ,OAAO,CoB6CX,YAAY,CpB7CR,OAAO,CQbS,AqCZxB,AzByEE,oByBzEkB,CzByEhB,KAAK,CyBzET,oBAAoB,AzB0EjB,MAAM,AAAC,CACN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB6TS,KAAK,CH/W3B,oBAAO,CoBmDZ,AyB5EH,AzB8EE,oByB9EkB,AzB8EjB,SAAS,CyB9EZ,oBAAoB,CzB+EhB,QAAQ,AAAC,CACT,KAAK,CpBvDD,OAAO,CoBwDX,gBAAgB,CAAE,WAAW,CAC9B,AyBlFH,AzBoFE,oByBpFkB,CzBoFjB,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyBpFxC,oBAAoB,AzBqFa,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyBtFP,oBAAoB,AzBsFT,gBAAgB,AAAC,CACxB,KAAK,CpBjFD,IAAI,CoBkFR,gBAAgB,CpB/DZ,OAAO,CoBgEX,YAAY,CpBhER,OAAO,CoB0EZ,AyBnGH,AzB2FI,oByB3FgB,CzBoFjB,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAOlC,KAAK,CyB3FX,oBAAoB,AzBqFa,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAM1B,KAAK,CALT,KAAK,CyBtFP,oBAAoB,AzBsFT,gBAAgB,CAKrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjBwSK,KAAK,CH/W3B,oBAAO,CoByEV,AyBlGL,AAuEE,iBAvEe,AAuEP,CzBPR,KAAK,CpBrCA,OAAO,CoBsCZ,YAAY,CpBtCP,OAAO,C6C8CX,AAzEH,ArCYE,iBqCZe,CrCYb,KAAK,AAAC,CYwDN,KAAK,CpB9DD,IAAI,CoB+DR,gBAAgB,CpB1Cb,OAAO,CoB2CV,YAAY,CpB3CT,OAAO,CQfU,AqCZxB,AzByEE,iByBzEe,CzByEb,KAAK,CyBzET,iBAAiB,AzB0Ed,MAAM,AAAC,CACN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB6TS,KAAK,CH7W5B,oBAAO,CoBiDX,AyB5EH,AzB8EE,iByB9Ee,AzB8Ed,SAAS,CyB9EZ,iBAAiB,CzB+Eb,QAAQ,AAAC,CACT,KAAK,CpBrDF,OAAO,CoBsDV,gBAAgB,CAAE,WAAW,CAC9B,AyBlFH,AzBoFE,iByBpFe,CzBoFd,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyBpFxC,iBAAiB,AzBqFgB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyBtFP,iBAAiB,AzBsFN,gBAAgB,AAAC,CACxB,KAAK,CpBjFD,IAAI,CoBkFR,gBAAgB,CpB7Db,OAAO,CoB8DV,YAAY,CpB9DT,OAAO,CoBwEX,AyBnGH,AzB2FI,iByB3Fa,CzBoFd,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAOlC,KAAK,CyB3FX,iBAAiB,AzBqFgB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAM1B,KAAK,CALT,KAAK,CyBtFP,iBAAiB,AzBsFN,gBAAgB,CAKrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjBwSK,KAAK,CH7W5B,oBAAO,CoBuET,AyBlGL,AAuEE,oBAvEkB,AAuEV,CzBPR,KAAK,CpBxCE,OAAO,CoByCd,YAAY,CpBzCL,OAAO,C6CiDb,AAzEH,ArCYE,oBqCZkB,CrCYhB,KAAK,AAAC,CYwDN,KAAK,CpB9DD,IAAI,CoB+DR,gBAAgB,CpB7CX,OAAO,CoB8CZ,YAAY,CpB9CP,OAAO,CQZQ,AqCZxB,AzByEE,oByBzEkB,CzByEhB,KAAK,CyBzET,oBAAoB,AzB0EjB,MAAM,AAAC,CACN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB6TS,KAAK,CHhX1B,oBAAO,CoBoDb,AyB5EH,AzB8EE,oByB9EkB,AzB8EjB,SAAS,CyB9EZ,oBAAoB,CzB+EhB,QAAQ,AAAC,CACT,KAAK,CpBxDA,OAAO,CoByDZ,gBAAgB,CAAE,WAAW,CAC9B,AyBlFH,AzBoFE,oByBpFkB,CzBoFjB,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyBpFxC,oBAAoB,AzBqFa,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyBtFP,oBAAoB,AzBsFT,gBAAgB,AAAC,CACxB,KAAK,CpBjFD,IAAI,CoBkFR,gBAAgB,CpBhEX,OAAO,CoBiEZ,YAAY,CpBjEP,OAAO,CoB2Eb,AyBnGH,AzB2FI,oByB3FgB,CzBoFjB,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAOlC,KAAK,CyB3FX,oBAAoB,AzBqFa,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAM1B,KAAK,CALT,KAAK,CyBtFP,oBAAoB,AzBsFT,gBAAgB,CAKrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjBwSK,KAAK,CHhX1B,oBAAO,CoB0EX,AyBlGL,AAuEE,mBAvEiB,AAuET,CzBPR,KAAK,CpB1CD,OAAO,CoB2CX,YAAY,CpB3CR,OAAO,C6CmDV,AAzEH,ArCYE,mBqCZiB,CrCYf,KAAK,AAAC,CYwDN,KAAK,CpB9DD,IAAI,CoB+DR,gBAAgB,CpB/Cd,OAAO,CoBgDT,YAAY,CpBhDV,OAAO,CQVW,AqCZxB,AzByEE,mByBzEiB,CzByEf,KAAK,CyBzET,mBAAmB,AzB0EhB,MAAM,AAAC,CACN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB6TS,KAAK,CHlX7B,mBAAO,CoBsDV,AyB5EH,AzB8EE,mByB9EiB,AzB8EhB,SAAS,CyB9EZ,mBAAmB,CzB+Ef,QAAQ,AAAC,CACT,KAAK,CpB1DH,OAAO,CoB2DT,gBAAgB,CAAE,WAAW,CAC9B,AyBlFH,AzBoFE,mByBpFiB,CzBoFhB,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyBpFxC,mBAAmB,AzBqFc,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyBtFP,mBAAmB,AzBsFR,gBAAgB,AAAC,CACxB,KAAK,CpBjFD,IAAI,CoBkFR,gBAAgB,CpBlEd,OAAO,CoBmET,YAAY,CpBnEV,OAAO,CoB6EV,AyBnGH,AzB2FI,mByB3Fe,CzBoFhB,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAOlC,KAAK,CyB3FX,mBAAmB,AzBqFc,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAM1B,KAAK,CALT,KAAK,CyBtFP,mBAAmB,AzBsFR,gBAAgB,CAKrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjBwSK,KAAK,CHlX7B,mBAAO,CoB4ER,AyBlGL,AAuEE,kBAvEgB,AAuER,CzBPR,KAAK,CpBzDI,OAAO,CoB0DhB,YAAY,CpB1DH,OAAO,C6CkEf,AAzEH,ArCYE,kBqCZgB,CrCYd,KAAK,AAAC,CYwDN,KAAK,CpBrDE,OAAO,CoBsDd,gBAAgB,CpB9DT,OAAO,CoB+Dd,YAAY,CpB/DL,OAAO,CQKM,AqCZxB,AzByEE,kByBzEgB,CzByEd,KAAK,CyBzET,kBAAkB,AzB0Ef,MAAM,AAAC,CACN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB6TS,KAAK,CHjYxB,qBAAO,CoBqEf,AyB5EH,AzB8EE,kByB9EgB,AzB8Ef,SAAS,CyB9EZ,kBAAkB,CzB+Ed,QAAQ,AAAC,CACT,KAAK,CpBzEE,OAAO,CoB0Ed,gBAAgB,CAAE,WAAW,CAC9B,AyBlFH,AzBoFE,kByBpFgB,CzBoFf,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyBpFxC,kBAAkB,AzBqFe,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyBtFP,kBAAkB,AzBsFP,gBAAgB,AAAC,CACxB,KAAK,CpBxEE,OAAO,CoByEd,gBAAgB,CpBjFT,OAAO,CoBkFd,YAAY,CpBlFL,OAAO,CoB4Ff,AyBnGH,AzB2FI,kByB3Fc,CzBoFf,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAOlC,KAAK,CyB3FX,kBAAkB,AzBqFe,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAM1B,KAAK,CALT,KAAK,CyBtFP,kBAAkB,AzBsFP,gBAAgB,CAKrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjBwSK,KAAK,CHjYxB,qBAAO,CoB2Fb,AyBlGL,AAuEE,iBAvEe,AAuEP,CzBPR,KAAK,CpBlDI,OAAO,CoBmDhB,YAAY,CpBnDH,OAAO,C6C2Df,AAzEH,ArCYE,iBqCZe,CrCYb,KAAK,AAAC,CYwDN,KAAK,CpB9DD,IAAI,CoB+DR,gBAAgB,CpBvDT,OAAO,CoBwDd,YAAY,CpBxDL,OAAO,CQFM,AqCZxB,AzByEE,iByBzEe,CzByEb,KAAK,CyBzET,iBAAiB,AzB0Ed,MAAM,AAAC,CACN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB6TS,KAAK,CH1XxB,mBAAO,CoB8Df,AyB5EH,AzB8EE,iByB9Ee,AzB8Ed,SAAS,CyB9EZ,iBAAiB,CzB+Eb,QAAQ,AAAC,CACT,KAAK,CpBlEE,OAAO,CoBmEd,gBAAgB,CAAE,WAAW,CAC9B,AyBlFH,AzBoFE,iByBpFe,CzBoFd,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CyBpFxC,iBAAiB,AzBqFgB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CyBtFP,iBAAiB,AzBsFN,gBAAgB,AAAC,CACxB,KAAK,CpBjFD,IAAI,CoBkFR,gBAAgB,CpB1ET,OAAO,CoB2Ed,YAAY,CpB3EL,OAAO,CoBqFf,AyBnGH,AzB2FI,iByB3Fa,CzBoFd,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAOlC,KAAK,CyB3FX,iBAAiB,AzBqFgB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAM1B,KAAK,CALT,KAAK,CyBtFP,iBAAiB,AzBsFN,gBAAgB,CAKrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjBwSK,KAAK,CH1XxB,mBAAO,CoBoFb,AyBhBL,AAAA,SAAS,AAAC,CACR,WAAW,C1C4MiB,GAAG,C0C3M/B,KAAK,C7ClEA,OAAO,C6CmEZ,eAAe,C1C2FyB,IAAI,C0CxE7C,AAtBD,ArCtEE,SqCsEO,CrCtEL,KAAK,AAAC,CqC4EN,KAAK,C7CtEF,OAAO,C6CuEV,eAAe,C1CyFuB,SAAS,CKtK3B,AqCsExB,AAUE,SAVO,CAUL,KAAK,CAVT,SAAS,AAWN,MAAM,AAAC,CACN,eAAe,C1CoFuB,SAAS,C0CnFhD,AAbH,AAeE,SAfO,CAeL,QAAQ,CAfZ,SAAS,AAgBN,SAAS,AAAC,CACT,KAAK,C7CvFE,OAAO,C6CwFd,cAAc,CAAE,IAAI,CACrB,AAUH,AAAA,OAAO,CGlDP,aAAa,CAAG,IAAI,AHkDZ,CzBPN,OAAO,CjBySqB,KAAK,CACL,IAAI,CEnR5B,SAAS,CAtCE,OAAC,CeiBhB,WAAW,CjB+HiB,GAAG,C0BvN7B,aAAa,C1B8Na,KAAK,C0C/HlC,AAED,AAAA,OAAO,CGvDP,aAAa,CAAG,IAAI,AHuDZ,CzBXN,OAAO,CjBoSqB,MAAM,CACN,KAAK,CE9Q7B,SAAS,CAtCE,OAAC,CeiBhB,WAAW,CjBgIiB,GAAG,C0BxN7B,aAAa,C1B+Na,KAAK,C0C5HlC,AAOD,AAAA,UAAU,AAAC,CACT,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CAMZ,AARD,AAKE,UALQ,CAKN,UAAU,AAAC,CACX,UAAU,C1CuTgB,KAAK,C0CtThC,AAIH,AAGE,KAHG,AAGF,UAAU,CAHR,AAAA,IAAC,CAAK,QAAQ,AAAb,EACN,KAAK,AAEF,UAAU,CAFR,AAAA,IAAC,CAAK,OAAO,AAAZ,EACN,KAAK,AACF,UAAU,CADR,AAAA,IAAC,CAAK,QAAQ,AAAb,CACQ,CACV,KAAK,CAAE,IAAI,CACZ,AC5IH,AAAA,KAAK,AAAC,CdgBA,UAAU,C7BiPc,OAAO,CAAC,KAAI,CAAC,MAAM,C2C3PhD,AdcK,MAAM,iCcpBZ,CAAA,AAAA,KAAK,AAAC,CdqBE,UAAU,CAAE,IAAI,CcfvB,CAAA,AAND,AAGE,KAHG,CAGF,GAAK,CAAA,KAAK,CAAE,CACX,OAAO,CAAE,CAAC,CACX,AAGH,AACE,SADO,CACN,GAAK,CAAA,KAAK,CAAE,CACX,OAAO,CAAE,IAAI,CACd,AAGH,AAAA,WAAW,AAAC,CACV,QAAQ,CAAE,QAAQ,CAClB,MAAM,CAAE,CAAC,CACT,QAAQ,CAAE,MAAM,CdDZ,UAAU,ChCuDM,MAAM,CAAC,KAAI,CAAC,IAAI,C8CpDrC,AdCK,MAAM,iCcNZ,CAAA,AAAA,WAAW,AAAC,CdOJ,UAAU,CAAE,IAAI,CcFvB,CAAA,AClBD,AAAA,OAAO,CACP,UAAU,CACV,SAAS,CACT,SAAS,AAAC,CACR,QAAQ,CAAE,QAAQ,CACnB,AAED,AAAA,gBAAgB,AAAC,CACf,WAAW,CAAE,MAAM,CAIpB,AALD,A1BqBI,gB0BrBY,E1BqBT,KAAK,AAAC,CACP,OAAO,CAAE,YAAY,CACrB,WAAW,ClB+Na,MAAkB,CkB9N1C,cAAc,ClB6NU,MAAkB,CkB5N1C,OAAO,CAAE,EAAE,CAhCf,UAAU,ClB2PkB,IAAI,CkB3PP,KAAK,CAC9B,YAAY,ClB0PgB,IAAI,CkB1PL,KAAK,CAAC,WAAW,CAC5C,aAAa,CAAE,CAAC,CAChB,WAAW,ClBwPiB,IAAI,CkBxPN,KAAK,CAAC,WAAW,CAqCxC,A0BjCL,A1BiDI,gB0BjDY,C1BiDV,KAAK,EAAE,KAAK,AAAC,CACb,WAAW,CAAE,CAAC,CACf,A0B3CL,AAAA,cAAc,AAAC,CACb,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,IAAI,CACT,IAAI,CAAE,CAAC,CACP,OAAO,C5CwpB2B,IAAI,C4CvpBtC,OAAO,CAAE,IAAI,CACb,KAAK,CAAE,IAAI,CACX,SAAS,C5C8tByB,KAAK,C4C7tBvC,OAAO,C5C+tB2B,KAAK,CADL,CAAC,C4C7tBnC,MAAM,C5C+tB4B,OAAO,C4C/tBhB,CAAC,CAAC,CAAC,C1CsGxB,SAAS,CAtCE,MAAC,C0C9DhB,KAAK,C/CfI,OAAO,C+CgBhB,UAAU,CAAE,IAAI,CAChB,UAAU,CAAE,IAAI,CAChB,gBAAgB,C/CxBV,IAAI,C+CyBV,eAAe,CAAE,WAAW,CAC5B,MAAM,C5C4MsB,GAAG,C4C5MA,KAAK,C/CxB3B,OAAO,C6BUd,aAAa,C7BiCD,MAAO,C+ChBtB,AAnCD,AAyCI,mBAzCe,AAyCF,CACX,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACR,AA5CL,AA8CI,oBA9CgB,AA8CF,CACZ,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,IAAI,CACX,AxCWD,MAAM,mBwCnBN,CAzCJ,AAyCI,sBAzCkB,AAyCL,CACX,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACR,AA5CL,AA8CI,uBA9CmB,AA8CL,CACZ,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,IAAI,CACX,CALA,AxCgBD,MAAM,mBwCnBN,CAzCJ,AAyCI,sBAzCkB,AAyCL,CACX,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACR,AA5CL,AA8CI,uBA9CmB,AA8CL,CACZ,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,IAAI,CACX,CALA,AxCgBD,MAAM,mBwCnBN,CAzCJ,AAyCI,sBAzCkB,AAyCL,CACX,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACR,AA5CL,AA8CI,uBA9CmB,AA8CL,CACZ,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,IAAI,CACX,CALA,AxCgBD,MAAM,oBwCnBN,CAzCJ,AAyCI,sBAzCkB,AAyCL,CACX,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,CAAC,CACR,AA5CL,AA8CI,uBA9CmB,AA8CL,CACZ,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,IAAI,CACX,CALA,AAWL,AACE,OADK,CACL,cAAc,AAAC,CACb,GAAG,CAAE,IAAI,CACT,MAAM,CAAE,IAAI,CACZ,UAAU,CAAE,CAAC,CACb,aAAa,C5C4rBmB,OAAO,C4C3rBxC,AANH,A1B1BI,O0B0BG,CAQL,gBAAgB,E1BlCX,KAAK,AAAC,CACP,OAAO,CAAE,YAAY,CACrB,WAAW,ClB+Na,MAAkB,CkB9N1C,cAAc,ClB6NU,MAAkB,CkB5N1C,OAAO,CAAE,EAAE,CAzBf,UAAU,CAAE,CAAC,CACb,YAAY,ClBmPgB,IAAI,CkBnPL,KAAK,CAAC,WAAW,CAC5C,aAAa,ClBkPe,IAAI,CkBlPJ,KAAK,CACjC,WAAW,ClBiPiB,IAAI,CkBjPN,KAAK,CAAC,WAAW,CA8BxC,A0BcL,A1BEI,O0BFG,CAQL,gBAAgB,C1BNZ,KAAK,EAAE,KAAK,AAAC,CACb,WAAW,CAAE,CAAC,CACf,A0BSL,AACE,UADQ,CACR,cAAc,AAAC,CACb,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,IAAI,CACV,UAAU,CAAE,CAAC,CACb,WAAW,C5C8qBqB,OAAO,C4C7qBxC,AAPH,A1BvCI,U0BuCM,CASR,gBAAgB,E1BhDX,KAAK,AAAC,CACP,OAAO,CAAE,YAAY,CACrB,WAAW,ClB+Na,MAAkB,CkB9N1C,cAAc,ClB6NU,MAAkB,CkB5N1C,OAAO,CAAE,EAAE,CAlBf,UAAU,ClB6OkB,IAAI,CkB7OP,KAAK,CAAC,WAAW,CAC1C,YAAY,CAAE,CAAC,CACf,aAAa,ClB2Oe,IAAI,CkB3OJ,KAAK,CAAC,WAAW,CAC7C,WAAW,ClB0OiB,IAAI,CkB1ON,KAAK,CAuB5B,A0B2BL,A1BXI,U0BWM,CASR,gBAAgB,C1BpBZ,KAAK,EAAE,KAAK,AAAC,CACb,WAAW,CAAE,CAAC,CACf,A0BSL,AAWI,UAXM,CASR,gBAAgB,EAEX,KAAK,AAAC,CACP,cAAc,CAAE,CAAC,CAClB,AAIL,AACE,SADO,CACP,cAAc,AAAC,CACb,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,IAAI,CACX,IAAI,CAAE,IAAI,CACV,UAAU,CAAE,CAAC,CACb,YAAY,C5C6pBoB,OAAO,C4C5pBxC,AAPH,A1BxDI,S0BwDK,CASP,gBAAgB,E1BjEX,KAAK,AAAC,CACP,OAAO,CAAE,YAAY,CACrB,WAAW,ClB+Na,MAAkB,CkB9N1C,cAAc,ClB6NU,MAAkB,CkB5N1C,OAAO,CAAE,EAAE,CAQZ,A0B4CL,A1BzCM,S0ByCG,CASP,gBAAgB,E1BlDT,KAAK,AAAC,CACP,OAAO,CAAE,IAAI,CACd,A0BuCP,A1BrCM,S0BqCG,CASP,gBAAgB,E1B9CT,MAAM,AAAC,CACR,OAAO,CAAE,YAAY,CACrB,YAAY,ClB4MU,MAAkB,CkB3MxC,cAAc,ClB0MQ,MAAkB,CkBzMxC,OAAO,CAAE,EAAE,CA9BjB,UAAU,ClBsOkB,IAAI,CkBtOP,KAAK,CAAC,WAAW,CAC1C,YAAY,ClBqOgB,IAAI,CkBrOL,KAAK,CAChC,aAAa,ClBoOe,IAAI,CkBpOJ,KAAK,CAAC,WAAW,CA8BxC,A0B+BP,A1B5BI,S0B4BK,CASP,gBAAgB,C1BrCZ,KAAK,EAAE,KAAK,AAAC,CACb,WAAW,CAAE,CAAC,CACf,A0B0BL,AAWI,SAXK,CASP,gBAAgB,EAEX,MAAM,AAAC,CACR,cAAc,CAAE,CAAC,CAClB,AAML,AACE,cADY,CACX,AAAA,WAAC,EAAa,KAAK,AAAlB,EADJ,cAAc,CAEX,AAAA,WAAC,EAAa,OAAO,AAApB,EAFJ,cAAc,CAGX,AAAA,WAAC,EAAa,QAAQ,AAArB,EAHJ,cAAc,CAIX,AAAA,WAAC,EAAa,MAAM,AAAnB,CAAqB,CACrB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACb,AAIH,AAAA,iBAAiB,AAAC,CtB9GhB,MAAM,CAAE,CAAC,CACT,MAAM,CtBksB4B,KAAW,CsBlsB3B,CAAC,CACnB,QAAQ,CAAE,MAAM,CAChB,UAAU,CAAE,GAAG,CAAC,KAAK,CzBAZ,OAAO,C+C6GjB,AAKD,AAAA,cAAc,AAAC,CACb,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,OAAO,C5CgpB2B,MAAM,CACN,MAAM,C4ChpBxC,KAAK,CAAE,IAAI,CACX,WAAW,C5CgKiB,GAAG,C4C/J/B,KAAK,C/CjHI,OAAO,C+CkHhB,UAAU,CAAE,OAAO,CAEnB,WAAW,CAAE,MAAM,CACnB,gBAAgB,CAAE,WAAW,CAC7B,MAAM,CAAE,CAAC,CAqCV,AAhDD,AvC1GE,cuC0GY,CvC1GV,KAAK,CuC0GT,cAAc,CvCzGV,KAAK,AAAC,CuCmIN,KAAK,C/CrIE,OAAO,C+CsId,eAAe,CAAE,IAAI,ChB/IrB,gBAAgB,C/BCT,OAAO,CQYf,AuCuGH,AA+BE,cA/BY,AA+BX,OAAO,CA/BV,cAAc,CAgCV,MAAM,AAAC,CACP,KAAK,C/CrJD,IAAI,C+CsJR,eAAe,CAAE,IAAI,ChBtJrB,gBAAgB,C/BYb,OAAO,C+C4IX,AApCH,AAsCE,cAtCY,AAsCX,SAAS,CAtCZ,cAAc,CAuCV,QAAQ,AAAC,CACT,KAAK,C/CtJE,OAAO,C+CuJd,cAAc,CAAE,IAAI,CACpB,gBAAgB,CAAE,WAAW,CAK9B,AAGH,AAAA,cAAc,AAAA,KAAK,AAAC,CAClB,OAAO,CAAE,KAAK,CACf,AAGD,AAAA,gBAAgB,AAAC,CACf,OAAO,CAAE,KAAK,CACd,OAAO,C5CokB2B,KAAK,CAuBL,MAAM,C4C1lBxC,aAAa,CAAE,CAAC,C1CrDZ,SAAS,CAtCE,OAAC,C0C6FhB,KAAK,C/C1KI,OAAO,C+C2KhB,WAAW,CAAE,MAAM,CACpB,AAGD,AAAA,mBAAmB,AAAC,CAClB,OAAO,CAAE,KAAK,CACd,OAAO,C5CglB2B,MAAM,CACN,MAAM,C4ChlBxC,KAAK,C/C/KI,OAAO,C+CgLjB,AC5LD,AAAA,UAAU,CACV,mBAAmB,AAAC,CAClB,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,WAAW,CACpB,cAAc,CAAE,MAAM,CAiBvB,AArBD,AAME,UANQ,CAMN,IAAI,CALR,mBAAmB,CAKf,IAAI,AAAC,CACL,QAAQ,CAAE,QAAQ,CAClB,IAAI,CAAE,QAAQ,CAYf,AApBH,AxCSE,UwCTQ,CAMN,IAAI,CxCGJ,KAAK,CwCRT,mBAAmB,CAKf,IAAI,CxCGJ,KAAK,AAAC,CwCIJ,OAAO,CAAE,CAAC,CxCJQ,AwCTxB,AAeI,UAfM,CAMN,IAAI,CASF,KAAK,CAfX,UAAU,CAMN,IAAI,CAUF,MAAM,CAhBZ,UAAU,CAMN,IAAI,AAWH,OAAO,CAhBZ,mBAAmB,CAKf,IAAI,CASF,KAAK,CAdX,mBAAmB,CAKf,IAAI,CAUF,MAAM,CAfZ,mBAAmB,CAKf,IAAI,AAWH,OAAO,AAAC,CACP,OAAO,CAAE,CAAC,CACX,AAKL,AAAA,YAAY,AAAC,CACX,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,IAAI,CACf,eAAe,CAAE,UAAU,CAK5B,AARD,AAKE,YALU,CAKV,YAAY,AAAC,CACX,KAAK,CAAE,IAAI,CACZ,AAGH,AAEE,UAFQ,CAEN,IAAI,CAAA,GAAK,EAAC,WAAW,EAFzB,UAAU,CAGN,UAAU,CAAA,GAAK,EAAC,WAAW,CAAE,CAC7B,WAAW,C7CmMe,IAAG,C6ClM9B,AALH,AAQE,UARQ,CAQN,IAAI,CAAA,GAAK,EAAC,UAAU,EAAC,GAAK,CAAA,gBAAgB,EAR9C,UAAU,CASN,UAAU,CAAA,GAAK,EAAC,UAAU,EAAI,IAAI,AAAC,CnBZnC,uBAAuB,CmBaM,CAAC,CnBZ9B,0BAA0B,CmBYG,CAAC,CAC/B,AAXH,AAaE,UAbQ,CAaN,IAAI,CAAA,GAAK,EAAC,WAAW,EAbzB,UAAU,CAcN,UAAU,CAAA,GAAK,EAAC,WAAW,EAAI,IAAI,AAAC,CnBHpC,sBAAsB,CmBIM,CAAC,CnBH7B,yBAAyB,CmBGG,CAAC,CAC9B,AAeH,AAAA,sBAAsB,AAAC,CACrB,aAAa,CAAE,QAAoB,CACnC,YAAY,CAAE,QAAoB,CAWnC,AAbD,AAIE,sBAJoB,EAIjB,KAAK,CACR,OAAO,CALT,sBAAsB,EAKT,KAAK,CAChB,UAAU,CANZ,sBAAsB,EAMN,KAAK,AAAC,CAClB,WAAW,CAAE,CAAC,CACf,AAED,AAAA,SAAS,CAVX,sBAAsB,EAUP,MAAM,AAAC,CAClB,YAAY,CAAE,CAAC,CAChB,AAGH,AAAA,OAAO,CAAG,sBAAsB,CAvBhC,aAAa,CAAG,IAAI,CAuBV,sBAAsB,AAAC,CAC/B,aAAa,CAAE,OAAuB,CACtC,YAAY,CAAE,OAAuB,CACtC,AAED,AAAA,OAAO,CAAG,sBAAsB,CA3BhC,aAAa,CAAG,IAAI,CA2BV,sBAAsB,AAAC,CAC/B,aAAa,CAAE,MAAuB,CACtC,YAAY,CAAE,MAAuB,CACtC,AAmBD,AAAA,mBAAmB,AAAC,CAClB,cAAc,CAAE,MAAM,CACtB,WAAW,CAAE,UAAU,CACvB,eAAe,CAAE,MAAM,CAsBxB,AAzBD,AAKE,mBALiB,CAKf,IAAI,CALR,mBAAmB,CAMf,UAAU,AAAC,CACX,KAAK,CAAE,IAAI,CACZ,AARH,AAUE,mBAViB,CAUf,IAAI,CAAA,GAAK,EAAC,WAAW,EAVzB,mBAAmB,CAWf,UAAU,CAAA,GAAK,EAAC,WAAW,CAAE,CAC7B,UAAU,C7CkHgB,IAAG,C6CjH9B,AAbH,AAgBE,mBAhBiB,CAgBf,IAAI,CAAA,GAAK,EAAC,UAAU,EAAC,GAAK,CAAA,gBAAgB,EAhB9C,mBAAmB,CAiBf,UAAU,CAAA,GAAK,EAAC,UAAU,EAAI,IAAI,AAAC,CnBtFnC,0BAA0B,CmBuFI,CAAC,CnBtF/B,yBAAyB,CmBsFK,CAAC,CAChC,AAnBH,AAqBE,mBArBiB,CAqBf,IAAI,CAAA,GAAK,EAAC,WAAW,EArBzB,mBAAmB,CAsBf,UAAU,CAAA,GAAK,EAAC,WAAW,EAAI,IAAI,AAAC,CnBzGpC,sBAAsB,CmB0GK,CAAC,CnBzG5B,uBAAuB,CmByGI,CAAC,CAC7B,AAgBH,AACE,iBADe,CACb,IAAI,CADR,iBAAiB,CAEb,UAAU,CAAG,IAAI,AAAC,CAClB,aAAa,CAAE,CAAC,CAQjB,AAXH,AAKI,iBALa,CACb,IAAI,CAIJ,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EALV,iBAAiB,CACb,IAAI,CAKJ,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EANV,iBAAiB,CAEb,UAAU,CAAG,IAAI,CAGjB,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EALV,iBAAiB,CAEb,UAAU,CAAG,IAAI,CAIjB,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CACrB,QAAQ,CAAE,QAAQ,CAClB,IAAI,CAAE,gBAAgB,CACtB,cAAc,CAAE,IAAI,CACrB,AC1JL,AAAA,YAAY,AAAC,CACX,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,OAAO,CACpB,KAAK,CAAE,IAAI,CA6DZ,AAlED,AAOE,YAPU,CAOR,aAAa,CAPjB,YAAY,CAQR,uBAAuB,CAR3B,YAAY,CASR,cAAc,CATlB,YAAY,CAUR,YAAY,AAAC,CACb,QAAQ,CAAE,QAAQ,CAClB,IAAI,CAAE,QAAQ,CACd,KAAK,CAAE,EAAE,CACT,SAAS,CAAE,CAAC,CACZ,aAAa,CAAE,CAAC,CAOjB,AAtBH,AAiBI,YAjBQ,CAOR,aAAa,CAUX,aAAa,CAjBnB,YAAY,CAOR,aAAa,CAWX,cAAc,CAlBpB,YAAY,CAOR,aAAa,CAYX,YAAY,CAnBlB,YAAY,CAQR,uBAAuB,CASrB,aAAa,CAjBnB,YAAY,CAQR,uBAAuB,CAUrB,cAAc,CAlBpB,YAAY,CAQR,uBAAuB,CAWrB,YAAY,CAnBlB,YAAY,CASR,cAAc,CAQZ,aAAa,CAjBnB,YAAY,CASR,cAAc,CASZ,cAAc,CAlBpB,YAAY,CASR,cAAc,CAUZ,YAAY,CAnBlB,YAAY,CAUR,YAAY,CAOV,aAAa,CAjBnB,YAAY,CAUR,YAAY,CAQV,cAAc,CAlBpB,YAAY,CAUR,YAAY,CASV,YAAY,AAAC,CACb,WAAW,C9CkNa,IAAG,C8CjN5B,AArBL,AAyBE,YAzBU,CAyBR,aAAa,CAAC,KAAK,CAzBvB,YAAY,CA0BR,cAAc,CAAC,KAAK,CA1BxB,YAAY,CA2BR,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAG,kBAAkB,AAAC,CAC3D,OAAO,CAAE,CAAC,CACX,AA7BH,AAgCE,YAhCU,CAgCR,YAAY,CAAC,kBAAkB,CAAC,KAAK,AAAC,CACtC,OAAO,CAAE,CAAC,CACX,AAlCH,AAsCI,YAtCQ,CAoCR,aAAa,CAEZ,GAAK,EAAC,WAAW,EAtCtB,YAAY,CAqCR,cAAc,CACb,GAAK,EAAC,WAAW,CAAE,CpBIpB,sBAAsB,CoBJ4B,CAAC,CpBKnD,yBAAyB,CoBLyB,CAAC,CAAK,AAtC5D,AA2CE,YA3CU,CA2CR,YAAY,AAAC,CACb,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CAIpB,AAjDH,AA+CI,YA/CQ,CA2CR,YAAY,CAIX,GAAK,EAAC,UAAU,EAAE,kBAAkB,CA/CzC,YAAY,CA2CR,YAAY,CAKX,GAAK,EAAC,WAAW,EAAE,kBAAkB,AAAC,CpBNvC,sBAAsB,CoBM+C,CAAC,CpBLtE,yBAAyB,CoBK4C,CAAC,CAAK,AAhD/E,AAoDI,YApDQ,CAmDT,GAAK,CAAA,eAAe,EACjB,aAAa,CAAA,GAAK,EAAC,UAAU,EApDnC,YAAY,CAmDT,GAAK,CAAA,eAAe,EAEjB,cAAc,CAAA,GAAK,EAAC,UAAU,EArDpC,YAAY,CAmDT,GAAK,CAAA,eAAe,EAGjB,YAAY,CAAA,GAAK,EAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,AAAC,CpB1B1D,uBAAuB,CoB2BQ,CAAC,CpB1BhC,0BAA0B,CoB0BK,CAAC,CAC/B,AAxDL,AA4DI,YA5DQ,AA2DT,eAAe,CACZ,aAAa,CAAC,cAAe,CAAA,KAAK,EA5DxC,YAAY,AA2DT,eAAe,CAEZ,cAAc,CAAC,cAAe,CAAA,KAAK,EA7DzC,YAAY,AA2DT,eAAe,CAGZ,YAAY,CAAC,cAAe,CAAA,KAAK,EAAE,kBAAkB,EAAE,KAAK,AAAC,CpBlC/D,uBAAuB,CoBmCQ,CAAC,CpBlChC,0BAA0B,CoBkCK,CAAC,CAC/B,AAWL,AAAA,oBAAoB,CACpB,mBAAmB,AAAC,CAClB,OAAO,CAAE,IAAI,CAoBd,AAtBD,AAOE,oBAPkB,CAOlB,IAAI,CANN,mBAAmB,CAMjB,IAAI,AAAC,CACH,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,CAAC,CAKX,AAdH,AAWI,oBAXgB,CAOlB,IAAI,CAIA,KAAK,CAVX,mBAAmB,CAMjB,IAAI,CAIA,KAAK,AAAC,CACN,OAAO,CAAE,CAAC,CACX,AAbL,AAgBE,oBAhBkB,CAgBlB,IAAI,CAAG,IAAI,CAhBb,oBAAoB,CAiBlB,IAAI,CAAG,iBAAiB,CAjB1B,oBAAoB,CAkBlB,iBAAiB,CAAG,iBAAiB,CAlBvC,oBAAoB,CAmBlB,iBAAiB,CAAG,IAAI,CAlB1B,mBAAmB,CAejB,IAAI,CAAG,IAAI,CAfb,mBAAmB,CAgBjB,IAAI,CAAG,iBAAiB,CAhB1B,mBAAmB,CAiBjB,iBAAiB,CAAG,iBAAiB,CAjBvC,mBAAmB,CAkBjB,iBAAiB,CAAG,IAAI,AAAC,CACvB,WAAW,C9CuIe,IAAG,C8CtI9B,AAGH,AAAA,oBAAoB,AAAC,CAAE,YAAY,C9CmIL,IAAG,C8CnI4B,AAC7D,AAAA,mBAAmB,AAAC,CAAE,WAAW,C9CkIH,IAAG,C8ClI0B,AAQ3D,AAAA,iBAAiB,AAAC,CAChB,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,OAAO,C9C6QqB,OAAO,CACP,MAAM,C8C7QlC,aAAa,CAAE,CAAC,C5CSZ,SAAS,CAtCE,IAAC,C4C+BhB,WAAW,C9CuKiB,GAAG,C8CtK/B,WAAW,C9C2KiB,GAAG,C8C1K/B,KAAK,CjD7GI,OAAO,CiD8GhB,UAAU,CAAE,MAAM,CAClB,WAAW,CAAE,MAAM,CACnB,gBAAgB,CjDrHP,OAAO,CiDsHhB,MAAM,C9C8GsB,GAAG,C8C9GH,KAAK,CjDpHxB,OAAO,C6BQd,aAAa,C7BiCD,MAAO,CiDmFtB,AApBD,AAgBE,iBAhBe,CAgBf,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EAhBR,iBAAiB,CAiBf,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CACrB,UAAU,CAAE,CAAC,CACd,AASH,AAAA,eAAe,CAAG,aAAa,CAAC,GAAI,CAAA,QAAQ,EAC5C,eAAe,CAAG,cAAc,AAAC,CAC/B,MAAM,C/CtB2B,wBAAyD,C+CuB3F,AAED,AAAA,eAAe,CAAG,aAAa,CAC/B,eAAe,CAAG,cAAc,CAChC,eAAe,CAAG,oBAAoB,CAAG,iBAAiB,CAC1D,eAAe,CAAG,mBAAmB,CAAG,iBAAiB,CACzD,eAAe,CAAG,oBAAoB,CAAG,IAAI,CAC7C,eAAe,CAAG,mBAAmB,CAAG,IAAI,AAAC,CAC3C,OAAO,C9CwPqB,KAAK,CACL,IAAI,CEnR5B,SAAS,CAtCE,OAAC,C4CkEhB,WAAW,C9C8EiB,GAAG,C0BvN7B,aAAa,C1B8Na,KAAK,C8CnFlC,AAED,AAAA,eAAe,CAAG,aAAa,CAAC,GAAI,CAAA,QAAQ,EAC5C,eAAe,CAAG,cAAc,AAAC,CAC/B,MAAM,C/CvC2B,yBAAyD,C+CwC3F,AAED,AAAA,eAAe,CAAG,aAAa,CAC/B,eAAe,CAAG,cAAc,CAChC,eAAe,CAAG,oBAAoB,CAAG,iBAAiB,CAC1D,eAAe,CAAG,mBAAmB,CAAG,iBAAiB,CACzD,eAAe,CAAG,oBAAoB,CAAG,IAAI,CAC7C,eAAe,CAAG,mBAAmB,CAAG,IAAI,AAAC,CAC3C,OAAO,C9CkOqB,MAAM,CACN,KAAK,CE9Q7B,SAAS,CAtCE,OAAC,C4CmFhB,WAAW,C9C8DiB,GAAG,C0BxN7B,aAAa,C1B+Na,KAAK,C8CnElC,AAED,AAAA,eAAe,CAAG,cAAc,CAChC,eAAe,CAAG,cAAc,AAAC,CAC/B,aAAa,CAAE,OAA2D,CAC3E,AAUD,AAAA,YAAY,CAAG,oBAAoB,CAAG,IAAI,CAC1C,YAAY,CAAG,oBAAoB,CAAG,iBAAiB,CACvD,YAAY,CAAA,GAAK,CAAA,eAAe,EAAI,mBAAmB,CAAA,GAAK,EAAC,UAAU,EAAI,IAAI,CAC/E,YAAY,CAAA,GAAK,CAAA,eAAe,EAAI,mBAAmB,CAAA,GAAK,EAAC,UAAU,EAAI,iBAAiB,CAC5F,YAAY,AAAA,eAAe,CAAG,mBAAmB,CAAC,cAAe,CAAA,KAAK,EAAI,IAAI,CAC9E,YAAY,AAAA,eAAe,CAAG,mBAAmB,CAAC,cAAe,CAAA,KAAK,EAAI,iBAAiB,CAC3F,YAAY,CAAG,mBAAmB,CAAC,UAAU,CAAG,IAAI,CAAA,GAAK,EAAC,UAAU,EAAC,GAAK,CAAA,gBAAgB,EAC1F,YAAY,CAAG,mBAAmB,CAAC,UAAU,CAAG,iBAAiB,CAAA,GAAK,EAAC,UAAU,CAAE,CpBlK/E,uBAAuB,CoBmKI,CAAC,CpBlK5B,0BAA0B,CoBkKC,CAAC,CAC/B,AAED,AAAA,YAAY,CAAG,mBAAmB,CAAG,IAAI,CACzC,YAAY,CAAG,mBAAmB,CAAG,iBAAiB,CACtD,YAAY,CAAG,oBAAoB,CAAA,GAAK,EAAC,WAAW,EAAI,IAAI,CAC5D,YAAY,CAAG,oBAAoB,CAAA,GAAK,EAAC,WAAW,EAAI,iBAAiB,CACzE,YAAY,CAAG,oBAAoB,CAAC,WAAW,CAAG,IAAI,CAAA,GAAK,EAAC,WAAW,EACvE,YAAY,CAAG,oBAAoB,CAAC,WAAW,CAAG,iBAAiB,CAAA,GAAK,EAAC,WAAW,CAAE,CpB7JlF,sBAAsB,CoB8JI,CAAC,CpB7J3B,yBAAyB,CoB6JC,CAAC,CAC9B,ACtMD,AAAA,eAAe,AAAC,CACd,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,CAAC,CACV,OAAO,CAAE,KAAK,CACd,UAAU,CAAE,MAAmC,CAC/C,YAAY,CAAE,MAAuD,CACrE,YAAY,CAAE,KAAK,CACpB,AAED,AAAA,sBAAsB,AAAC,CACrB,OAAO,CAAE,WAAW,CACpB,YAAY,C/Cwf0B,IAAI,C+Cvf3C,AAED,AAAA,qBAAqB,AAAC,CACpB,QAAQ,CAAE,QAAQ,CAClB,IAAI,CAAE,CAAC,CACP,OAAO,CAAE,EAAE,CACX,KAAK,C/CofiC,IAAI,C+Cnf1C,MAAM,CAAE,OAA0E,CAClF,OAAO,CAAE,CAAC,CAwCX,AA9CD,AAQE,qBARmB,CAQjB,OAAO,CAAG,qBAAqB,EAAE,MAAM,AAAC,CACxC,KAAK,ClD1BD,IAAI,CkD2BR,YAAY,ClDfT,OAAO,C+BZV,gBAAgB,C/BYb,OAAO,CkDkBX,AAbH,AAeE,qBAfmB,CAejB,KAAK,CAAG,qBAAqB,EAAE,MAAM,AAAC,CAKpC,UAAU,C/C+Vc,CAAC,CAAC,CAAC,CAAC,CAAC,CAFL,KAAK,CHtX5B,qBAAO,CkD2BX,AAtBH,AAwBE,qBAxBmB,CAwBjB,KAAK,CAAA,GAAK,EAAC,OAAO,EAAI,qBAAqB,EAAE,MAAM,AAAC,CACpD,YAAY,ClD9BT,OAAO,CkD+BX,AA1BH,AA4BE,qBA5BmB,CA4BlB,GAAK,EAAC,QAAQ,EAAE,MAAM,CAAG,qBAAqB,EAAE,MAAM,AAAC,CACtD,KAAK,ClD9CD,IAAI,CkD+CR,gBAAgB,ClDnCb,OAAO,CkDoCV,YAAY,ClDpCT,OAAO,CkDsCX,AAjCH,AAsCI,qBAtCiB,CAoClB,AAAA,QAAC,AAAA,EAEE,qBAAqB,CAtC3B,qBAAqB,CAqCjB,QAAQ,CACN,qBAAqB,AAAC,CACtB,KAAK,ClDlDA,OAAO,CkDuDb,AA5CL,AAyCM,qBAzCe,CAoClB,AAAA,QAAC,AAAA,EAEE,qBAAqB,EAGlB,MAAM,CAzCf,qBAAqB,CAqCjB,QAAQ,CACN,qBAAqB,EAGlB,MAAM,AAAC,CACR,gBAAgB,ClDzDb,OAAO,CkD0DX,AASP,AAAA,qBAAqB,AAAC,CACpB,QAAQ,CAAE,QAAQ,CAClB,aAAa,CAAE,CAAC,CAEhB,cAAc,CAAE,GAAG,CA6BpB,AAjCD,AAQE,qBARmB,EAQhB,MAAM,AAAC,CACR,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,MAA0E,CAC/E,IAAI,CAAI,OAAuD,CAC/D,OAAO,CAAE,KAAK,CACd,KAAK,C/Cub+B,IAAI,C+CtbxC,MAAM,C/Csb8B,IAAI,C+CrbxC,cAAc,CAAE,IAAI,CACpB,OAAO,CAAE,EAAE,CACX,gBAAgB,ClDtFZ,IAAI,CkDuFR,MAAM,ClDlFC,OAAO,CkDkFiC,KAAK,C/C+I1B,GAAG,C+C7I9B,AApBH,AAuBE,qBAvBmB,EAuBhB,KAAK,AAAC,CACP,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,MAA0E,CAC/E,IAAI,CAAI,OAAuD,CAC/D,OAAO,CAAE,KAAK,CACd,KAAK,C/Cwa+B,IAAI,C+CvaxC,MAAM,C/Cua8B,IAAI,C+CtaxC,OAAO,CAAE,EAAE,CACX,UAAU,CAAE,aAA2E,CAAC,SAAS,CAClG,AAQH,AACE,gBADc,CACd,qBAAqB,EAAE,MAAM,AAAC,CrBlG5B,aAAa,C7BiCD,MAAO,CkDmEpB,AAHH,AAMI,gBANY,CAKd,qBAAqB,CAAC,OAAO,CAAG,qBAAqB,EAChD,KAAK,AAAC,CACP,gBAAgB,ChD7DL,gNAAwH,CgD8DpI,AARL,AAYI,gBAZY,CAWd,qBAAqB,CAAC,aAAa,CAAG,qBAAqB,EACtD,MAAM,AAAC,CACR,YAAY,ClD9GX,OAAO,C+BZV,gBAAgB,C/BYb,OAAO,CkDiHT,AAhBL,AAiBI,gBAjBY,CAWd,qBAAqB,CAAC,aAAa,CAAG,qBAAqB,EAMtD,KAAK,AAAC,CACP,gBAAgB,ChDxEL,6JAAwH,CgDyEpI,AAnBL,AAuBI,gBAvBY,CAsBd,qBAAqB,CAAC,QAAQ,CAC1B,OAAO,CAAG,qBAAqB,EAAE,MAAM,AAAC,CnBpI1C,gBAAgB,C/BYb,oBAAO,CkD0HT,AAzBL,AA0BI,gBA1BY,CAsBd,qBAAqB,CAAC,QAAQ,CAI1B,aAAa,CAAG,qBAAqB,EAAE,MAAM,AAAC,CnBvIhD,gBAAgB,C/BYb,oBAAO,CkD6HT,AAQL,AACE,aADW,CACX,qBAAqB,EAAE,MAAM,AAAC,CAE5B,aAAa,C/CyZ+B,GAAG,C+CxZhD,AAJH,AAOI,aAPS,CAMX,qBAAqB,CAAC,OAAO,CAAG,qBAAqB,EAChD,KAAK,AAAC,CACP,gBAAgB,ChDlGL,4JAAwH,CgDmGpI,AATL,AAaI,aAbS,CAYX,qBAAqB,CAAC,QAAQ,CAC1B,OAAO,CAAG,qBAAqB,EAAE,MAAM,AAAC,CnB9J1C,gBAAgB,C/BYb,oBAAO,CkDoJT,AASL,AAAA,cAAc,AAAC,CACb,YAAY,CAAE,OAA6C,CAmC5D,AApCD,AAII,cAJU,CAGZ,qBAAqB,EAChB,MAAM,AAAC,CACR,IAAI,CAAI,QAA6C,CACrD,KAAK,C/CiYqC,OAAqC,C+ChY/E,cAAc,CAAE,GAAG,CAEnB,aAAa,C/C+X6B,KAAkC,C+C9X7E,AAVL,AAYI,cAZU,CAGZ,qBAAqB,EAShB,KAAK,AAAC,CACP,GAAG,ChDlE0B,kBAAyD,CgDmEtF,IAAI,ChDnEyB,oBAAyD,CgDoEtF,KAAK,ChDhDwB,gBAAyD,CgDiDtF,MAAM,ChDjDuB,gBAAyD,CgDkDtF,gBAAgB,ClDrLX,OAAO,CkDuLZ,aAAa,C/CqX6B,KAAkC,C6BviB5E,UAAU,CkBmLU,SAAS,CAAC,KAAI,CAAC,WAAW,C/CsUZ,gBAAgB,CAAC,KAAI,CAAC,WAAW,CAAE,YAAY,CAAC,KAAI,CAAC,WAAW,CAAE,UAAU,CAAC,KAAI,CAAC,WAAW,C+CrUhI,AlBhLC,MAAM,iCkBuKR,CAZJ,AAYI,cAZU,CAGZ,qBAAqB,EAShB,KAAK,AAAC,ClBtKL,UAAU,CAAE,IAAI,CkB+KnB,CAAA,AArBL,AAyBI,cAzBU,CAwBZ,qBAAqB,CAAC,OAAO,CAAG,qBAAqB,EAChD,KAAK,AAAC,CACP,gBAAgB,ClDnMd,IAAI,CkDoMN,SAAS,CAAE,kBAAiE,CAC7E,AA5BL,AAgCI,cAhCU,CA+BZ,qBAAqB,CAAC,QAAQ,CAC1B,OAAO,CAAG,qBAAqB,EAAE,MAAM,AAAC,CnBzM1C,gBAAgB,C/BYb,oBAAO,CkD+LT,AAWL,AAAA,cAAc,AAAC,CACb,OAAO,CAAE,YAAY,CACrB,KAAK,CAAE,IAAI,CACX,MAAM,ChDrG2B,0BAAyD,CgDsG1F,OAAO,C/CkKqB,OAAO,C+ClKD,OAA6D,C/CkKnE,OAAO,CACP,MAAM,CEpQ9B,SAAS,CAtCE,IAAC,C6C0IhB,WAAW,C/C4DiB,GAAG,C+C3D/B,WAAW,C/CgEiB,GAAG,C+C/D/B,KAAK,ClDxNI,OAAO,CkDyNhB,cAAc,CAAE,MAAM,CACtB,UAAU,ClDjOJ,IAAI,CEuDK,8KAAwH,CC4gBhE,KAAK,CAtMhD,MAAM,CAsMoE,eAA+B,CAAC,SAAS,C+CjW/I,MAAM,C/CIsB,GAAG,C+CJK,KAAK,ClD9NhC,OAAO,C6BQd,aAAa,C7BiCD,MAAO,CkDwLrB,UAAU,CAAE,IAAI,CA6CjB,AA5DD,AAiBE,cAjBY,CAiBV,KAAK,AAAC,CACN,YAAY,ClD5NT,OAAO,CkD6NV,OAAO,CAAE,CAAC,CAKR,UAAU,C/CkWoB,CAAC,CAAC,CAAC,CAAC,CAAC,CA9MX,KAAK,CHtX5B,qBAAO,CkD8OX,AApCH,AA2BI,cA3BU,CAiBV,KAAK,EAUF,SAAS,AAAC,CAMX,KAAK,ClDhPA,OAAO,CkDiPZ,gBAAgB,ClDxPd,IAAI,CkDyPP,AAnCL,AAsCE,cAtCY,CAsCX,AAAA,QAAC,AAAA,EAtCJ,cAAc,CAuCX,AAAA,IAAC,AAAA,EAAK,GAAK,EAAA,AAAA,IAAC,CAAK,GAAG,AAAR,EAAW,CACtB,MAAM,CAAE,IAAI,CACZ,aAAa,C/C8Ha,MAAM,C+C7HhC,gBAAgB,CAAE,IAAI,CACvB,AA3CH,AA6CE,cA7CY,CA6CV,QAAQ,AAAC,CACT,KAAK,ClD9PE,OAAO,CkD+Pd,gBAAgB,ClDnQT,OAAO,CkDoQf,AAhDH,AAmDE,cAnDY,EAmDT,UAAU,AAAC,CACZ,OAAO,CAAE,IAAI,CACd,AArDH,AAwDE,cAxDY,CAwDV,cAAc,AAAC,CACf,KAAK,CAAE,WAAW,CAClB,WAAW,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,ClDzQX,OAAO,CkD0Qf,AAGH,AAAA,iBAAiB,AAAC,CAChB,MAAM,ChDjK2B,yBAAyD,CgDkK1F,WAAW,C/CgHiB,MAAM,C+C/GlC,cAAc,C/C+Gc,MAAM,C+C9GlC,YAAY,C/C+GgB,KAAK,CE9Q7B,SAAS,CAtCE,OAAC,C6CuMjB,AAED,AAAA,iBAAiB,AAAC,CAChB,MAAM,ChDzK2B,wBAAyD,CgD0K1F,WAAW,C/C6GiB,KAAK,C+C5GjC,cAAc,C/C4Gc,KAAK,C+C3GjC,YAAY,C/C4GgB,IAAI,CEnR5B,SAAS,CAtCE,OAAC,C6C+MjB,AAOD,AAAA,YAAY,AAAC,CACX,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,YAAY,CACrB,KAAK,CAAE,IAAI,CACX,MAAM,ChDzL2B,0BAAyD,CgD0L1F,aAAa,CAAE,CAAC,CACjB,AAED,AAAA,kBAAkB,AAAC,CACjB,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,CAAC,CACV,KAAK,CAAE,IAAI,CACX,MAAM,ChDjM2B,0BAAyD,CgDkM1F,MAAM,CAAE,CAAC,CACT,QAAQ,CAAE,MAAM,CAChB,OAAO,CAAE,CAAC,CAsBX,AA7BD,AASE,kBATgB,CASd,KAAK,CAAG,kBAAkB,AAAC,CAC3B,YAAY,ClD/ST,OAAO,CkDgTV,UAAU,C/CwEgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAFL,KAAK,CHtX5B,qBAAO,CkDiTX,AAZH,AAeE,kBAfgB,CAef,AAAA,QAAC,AAAA,EAAY,kBAAkB,CAflC,kBAAkB,CAgBd,QAAQ,CAAG,kBAAkB,AAAC,CAC9B,gBAAgB,ClDhUT,OAAO,CkDiUf,AAlBH,AAqBI,kBArBc,CAvThB,IAAK,CAAA,EAAE,EAAI,kBAAkB,EAAE,KAAK,AA4UE,CAClC,OAAO,C/C2TP,QAAQ,C+C1TT,AAvBL,AA0BE,kBA1BgB,CA0Bd,kBAAkB,CAAA,AAAA,WAAC,AAAA,GAAc,KAAK,AAAC,CACvC,OAAO,CAAE,iBAAiB,CAC3B,AAGH,AAAA,kBAAkB,AAAC,CACjB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,CAAC,CACP,OAAO,CAAE,CAAC,CACV,MAAM,ChDlO2B,0BAAyD,CgDmO1F,OAAO,C/CqCqB,OAAO,CACP,MAAM,C+CrClC,QAAQ,CAAE,MAAM,CAEhB,WAAW,C/CjEiB,GAAG,C+CkE/B,WAAW,C/C7DiB,GAAG,C+C8D/B,KAAK,ClDrVI,OAAO,CkDsVhB,gBAAgB,ClD7VV,IAAI,CkD8VV,MAAM,C/CxHsB,GAAG,C+CwHG,KAAK,ClD1V9B,OAAO,C6BQd,aAAa,C7BiCD,MAAO,CkDqUtB,AAlCD,AAkBE,kBAlBgB,EAkBb,KAAK,AAAC,CACP,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,CAAC,CACT,OAAO,CAAE,CAAC,CACV,OAAO,CAAE,KAAK,CACd,MAAM,ChDrPyB,oBAAyD,CgDsPxF,OAAO,C/CkBmB,OAAO,CACP,MAAM,C+ClBhC,WAAW,C/C7Ee,GAAG,C+C8E7B,KAAK,ClDrWE,OAAO,CkDsWd,OAAO,CAAE,QAAQ,CnB7WjB,gBAAgB,C/BET,OAAO,CkD6Wd,WAAW,CAAE,OAAO,CrBnWpB,aAAa,CqBoWU,CAAC,ClDnUZ,MAAO,CAAP,MAAO,CkDmU4D,CAAC,CACjF,AASH,AAAA,aAAa,AAAC,CACZ,KAAK,CAAE,IAAI,CACX,MAAM,ChD3QI,MAAiB,CgD4Q3B,OAAO,CAAE,CAAC,CACV,gBAAgB,CAAE,WAAW,CAC7B,UAAU,CAAE,IAAI,CAkIjB,AAvID,AAOE,aAPW,CAOT,KAAK,AAAC,CACN,OAAO,CAAE,IAAI,CAOd,AAfH,AAYI,aAZS,CAOT,KAAK,EAKF,oBAAoB,AAAC,CAAE,UAAU,C/CmOK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CHzmB9C,IAAI,CGoYkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAFL,KAAK,CHtX5B,qBAAO,CkD0XoE,AAZlF,AAaI,aAbS,CAOT,KAAK,EAMF,gBAAgB,AAAK,CAAE,UAAU,C/CkOK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CHzmB9C,IAAI,CGoYkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAFL,KAAK,CHtX5B,qBAAO,CkD2XoE,AAblF,AAcI,aAdS,CAOT,KAAK,EAOF,SAAS,AAAY,CAAE,UAAU,C/CiOK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CHzmB9C,IAAI,CGoYkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAFL,KAAK,CHtX5B,qBAAO,CkD4XoE,AAdlF,AAiBE,aAjBW,EAiBR,gBAAgB,AAAC,CAClB,MAAM,CAAE,CAAC,CACV,AAnBH,AAqBE,aArBW,EAqBR,oBAAoB,AAAC,CACtB,KAAK,C/CmNoC,IAAI,C+ClN7C,MAAM,C/CkNmC,IAAI,C+CjN7C,UAAU,CAAE,OAA6D,CnBlZzE,gBAAgB,C/BYb,OAAO,CkDwYV,MAAM,C/CkNmC,CAAC,C0B1lB1C,aAAa,C1B2lB4B,IAAI,C6B7lB3C,UAAU,C7ByfwB,gBAAgB,CAAC,KAAI,CAAC,WAAW,CAAE,YAAY,CAAC,KAAI,CAAC,WAAW,CAAE,UAAU,CAAC,KAAI,CAAC,WAAW,C+C3GjI,UAAU,CAAE,IAAI,CAKjB,AlB/YG,MAAM,iCkBiYV,CArBF,AAqBE,aArBW,EAqBR,oBAAoB,AAAC,ClBhYlB,UAAU,CAAE,IAAI,CkB8YrB,CAAA,AAnCH,AAgCI,aAhCS,EAqBR,oBAAoB,CAWnB,MAAM,AAAC,CnB1ZT,gBAAgB,C/BYb,OAAO,CkDgZT,AAlCL,AAqCE,aArCW,EAqCR,6BAA6B,AAAC,CAC/B,KAAK,C/C4L2B,IAAI,C+C3LpC,MAAM,C/C4L0B,KAAK,C+C3LrC,KAAK,CAAE,WAAW,CAClB,MAAM,C/C2L0B,OAAO,C+C1LvC,gBAAgB,ClDjaT,OAAO,CkDkad,YAAY,CAAE,WAAW,CrBzZzB,aAAa,C1BolBmB,IAAI,C+CxLrC,AA9CH,AAgDE,aAhDW,EAgDR,gBAAgB,AAAC,CAClB,KAAK,C/CwLoC,IAAI,C+CvL7C,MAAM,C/CuLmC,IAAI,C4BnmB7C,gBAAgB,C/BYb,OAAO,CkDkaV,MAAM,C/CwLmC,CAAC,C0B1lB1C,aAAa,C1B2lB4B,IAAI,C6B7lB3C,UAAU,C7ByfwB,gBAAgB,CAAC,KAAI,CAAC,WAAW,CAAE,YAAY,CAAC,KAAI,CAAC,WAAW,CAAE,UAAU,CAAC,KAAI,CAAC,WAAW,C+CjFjI,UAAU,CAAE,IAAI,CAKjB,AlBzaG,MAAM,iCkB4ZV,CAhDF,AAgDE,aAhDW,EAgDR,gBAAgB,AAAC,ClB3Zd,UAAU,CAAE,IAAI,CkBwarB,CAAA,AA7DH,AA0DI,aA1DS,EAgDR,gBAAgB,CAUf,MAAM,AAAC,CnBpbT,gBAAgB,C/BYb,OAAO,CkD0aT,AA5DL,AA+DE,aA/DW,EA+DR,gBAAgB,AAAC,CAClB,KAAK,C/CkK2B,IAAI,C+CjKpC,MAAM,C/CkK0B,KAAK,C+CjKrC,KAAK,CAAE,WAAW,CAClB,MAAM,C/CiK0B,OAAO,C+ChKvC,gBAAgB,ClD3bT,OAAO,CkD4bd,YAAY,CAAE,WAAW,CrBnbzB,aAAa,C1BolBmB,IAAI,C+C9JrC,AAxEH,AA0EE,aA1EW,EA0ER,SAAS,AAAC,CACX,KAAK,C/C8JoC,IAAI,C+C7J7C,MAAM,C/C6JmC,IAAI,C+C5J7C,UAAU,CAAE,CAAC,CACb,YAAY,C/CtEc,KAAK,C+CuE/B,WAAW,C/CvEe,KAAK,C4BlY/B,gBAAgB,C/BYb,OAAO,CkD+bV,MAAM,C/C2JmC,CAAC,C0B1lB1C,aAAa,C1B2lB4B,IAAI,C6B7lB3C,UAAU,C7ByfwB,gBAAgB,CAAC,KAAI,CAAC,WAAW,CAAE,YAAY,CAAC,KAAI,CAAC,WAAW,CAAE,UAAU,CAAC,KAAI,CAAC,WAAW,C+CpDjI,UAAU,CAAE,IAAI,CAKjB,AlBtcG,MAAM,iCkBsbV,CA1EF,AA0EE,aA1EW,EA0ER,SAAS,AAAC,ClBrbP,UAAU,CAAE,IAAI,CkBqcrB,CAAA,AA1FH,AAuFI,aAvFS,EA0ER,SAAS,CAaR,MAAM,AAAC,CnBjdT,gBAAgB,C/BYb,OAAO,CkDucT,AAzFL,AA4FE,aA5FW,EA4FR,SAAS,AAAC,CACX,KAAK,C/CqI2B,IAAI,C+CpIpC,MAAM,C/CqI0B,KAAK,C+CpIrC,KAAK,CAAE,WAAW,CAClB,MAAM,C/CoI0B,OAAO,C+CnIvC,gBAAgB,CAAE,WAAW,CAC7B,YAAY,CAAE,WAAW,CACzB,YAAY,CAAE,KAA8B,CAE7C,AArGH,AAuGE,aAvGW,EAuGR,cAAc,AAAC,CAChB,gBAAgB,ClD/dT,OAAO,C6BSd,aAAa,C1BolBmB,IAAI,C+C5HrC,AA1GH,AA4GE,aA5GW,EA4GR,cAAc,AAAC,CAChB,YAAY,CAAE,IAAI,CAClB,gBAAgB,ClDreT,OAAO,C6BSd,aAAa,C1BolBmB,IAAI,C+CtHrC,AAhHH,AAmHI,aAnHS,CAkHT,QAAQ,EACL,oBAAoB,AAAC,CACtB,gBAAgB,ClDzeX,OAAO,CkD0eb,AArHL,AAuHI,aAvHS,CAkHT,QAAQ,EAKL,6BAA6B,AAAC,CAC/B,MAAM,CAAE,OAAO,CAChB,AAzHL,AA2HI,aA3HS,CAkHT,QAAQ,EASL,gBAAgB,AAAC,CAClB,gBAAgB,ClDjfX,OAAO,CkDkfb,AA7HL,AA+HI,aA/HS,CAkHT,QAAQ,EAaL,gBAAgB,AAAC,CAClB,MAAM,CAAE,OAAO,CAChB,AAjIL,AAmII,aAnIS,CAkHT,QAAQ,EAiBL,SAAS,AAAC,CACX,gBAAgB,ClDzfX,OAAO,CkD0fb,AAIL,AAAA,qBAAqB,EAAE,MAAM,CAC7B,kBAAkB,CAClB,cAAc,AAAC,ClB3fT,UAAU,C7ByfwB,gBAAgB,CAAC,KAAI,CAAC,WAAW,CAAE,YAAY,CAAC,KAAI,CAAC,WAAW,CAAE,UAAU,CAAC,KAAI,CAAC,WAAW,C+CIpI,AlBzfK,MAAM,iCkBqfZ,CAAA,AAAA,qBAAqB,EAAE,MAAM,CAC7B,kBAAkB,CAClB,cAAc,AAAC,ClBtfP,UAAU,CAAE,IAAI,CkBwfvB,CAAA,ACxgBD,AAAA,IAAI,AAAC,CACH,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,IAAI,CACf,YAAY,CAAE,CAAC,CACf,aAAa,CAAE,CAAC,CAChB,UAAU,CAAE,IAAI,CACjB,AAED,AAAA,SAAS,AAAC,CACR,OAAO,CAAE,KAAK,CACd,OAAO,ChDwqB2B,KAAK,CACL,IAAI,CgD5pBvC,AAfD,A3CGE,S2CHO,C3CGL,KAAK,C2CHT,SAAS,C3CIL,KAAK,AAAC,C2CEN,eAAe,CAAE,IAAI,C3CAtB,A2CNH,AAUE,SAVO,AAUN,SAAS,AAAC,CACT,KAAK,CnDZE,OAAO,CmDad,cAAc,CAAE,IAAI,CACpB,MAAM,CAAE,OAAO,CAChB,AAOH,AAAA,SAAS,AAAC,CACR,aAAa,ChDyMe,GAAG,CgDzMO,KAAK,CnD1BlC,OAAO,CmD4DjB,AAnCD,AAGE,SAHO,CAGP,SAAS,AAAC,CACR,aAAa,ChDsMa,IAAG,CgDrM9B,AALH,AAOE,SAPO,CAOP,SAAS,AAAC,CACR,MAAM,ChDkMoB,GAAG,CgDlME,KAAK,CAAC,WAAW,CtBfhD,sBAAsB,C7BwBV,MAAO,C6BvBnB,uBAAuB,C7BuBX,MAAO,CmDGpB,AApBH,A3ClBE,S2CkBO,CAOP,SAAS,C3CzBP,KAAK,C2CkBT,SAAS,CAOP,SAAS,C3CxBP,KAAK,AAAC,C2C6BJ,YAAY,CnDtCP,OAAO,CAAP,OAAO,CACP,OAAO,CQUf,A2CeH,AAeI,SAfK,CAOP,SAAS,AAQN,SAAS,AAAC,CACT,KAAK,CnDtCA,OAAO,CmDuCZ,gBAAgB,CAAE,WAAW,CAC7B,YAAY,CAAE,WAAW,CAC1B,AAnBL,AAsBE,SAtBO,CAsBP,SAAS,AAAA,OAAO,CAtBlB,SAAS,CAuBP,SAAS,AAAA,KAAK,CAAC,SAAS,AAAC,CACvB,KAAK,CnD7CE,OAAO,CmD8Cd,gBAAgB,CnDrDZ,IAAI,CmDsDR,YAAY,CnDnDL,OAAO,CAAP,OAAO,CAHV,IAAI,CmDuDT,AA3BH,AA6BE,SA7BO,CA6BP,cAAc,AAAC,CAEb,UAAU,ChD2KgB,IAAG,C0BjN7B,sBAAsB,CsBwCK,CAAC,CtBvC5B,uBAAuB,CsBuCI,CAAC,CAC7B,AAQH,AACE,UADQ,CACR,SAAS,AAAC,CtB3DR,aAAa,C7BiCD,MAAO,CmD4BpB,AAHH,AAKE,UALQ,CAKR,SAAS,AAAA,OAAO,CALlB,UAAU,CAMR,KAAK,CAAG,SAAS,AAAC,CAChB,KAAK,CnD7ED,IAAI,CmD8ER,gBAAgB,CnDlEb,OAAO,CmDmEX,AAQH,AACE,SADO,CACL,SAAS,CADb,SAAS,CAEP,SAAS,AAAC,CACR,IAAI,CAAE,QAAQ,CACd,UAAU,CAAE,MAAM,CACnB,AAGH,AACE,cADY,CACV,SAAS,CADb,cAAc,CAEZ,SAAS,AAAC,CACR,UAAU,CAAE,CAAC,CACb,SAAS,CAAE,CAAC,CACZ,UAAU,CAAE,MAAM,CACnB,AAQH,AACE,YADU,CACR,SAAS,AAAC,CACV,OAAO,CAAE,IAAI,CACd,AAHH,AAIE,YAJU,CAIR,OAAO,AAAC,CACR,OAAO,CAAE,KAAK,CACf,ACxGH,AAAA,OAAO,AAAC,CACN,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,MAAM,CACnB,eAAe,CAAE,aAAa,CAC9B,OAAO,CjDsrB2B,KAAW,CH1oBtC,IAAI,CoDvBZ,AA3BD,AAUE,OAVK,CAiBL,UAAU,CAjBZ,OAAO,CAkBL,gBAAgB,CAlBlB,OAAO,CVjBP,aAAa,CUiBb,OAAO,CVjBP,aAAa,CUiBb,OAAO,CVjBP,aAAa,CUiBb,OAAO,CVjBP,aAAa,AU2BgB,CACzB,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,MAAM,CACnB,eAAe,CAAE,aAAa,CAC/B,AAmBH,AAAA,aAAa,AAAC,CACZ,OAAO,CAAE,YAAY,CACrB,WAAW,CjDiqBuB,QAA6C,CiDhqB/E,cAAc,CjDgqBoB,QAA6C,CiD/pB/E,YAAY,CpDYL,IAAI,CK4DP,SAAS,CAtCE,OAAC,C+ChChB,WAAW,CAAE,OAAO,CACpB,WAAW,CAAE,MAAM,CAKpB,AAZD,A5CnCE,a4CmCW,C5CnCT,KAAK,C4CmCT,aAAa,C5ClCT,KAAK,AAAC,C4C4CN,eAAe,CAAE,IAAI,C5C1CtB,A4CmDH,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,MAAM,CACtB,YAAY,CAAE,CAAC,CACf,aAAa,CAAE,CAAC,CAChB,UAAU,CAAE,IAAI,CAWjB,AAhBD,AAOE,WAPS,CAOT,SAAS,AAAC,CACR,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,CAAC,CAChB,AAVH,AAYE,WAZS,CAYT,cAAc,AAAC,CACb,QAAQ,CAAE,MAAM,CAChB,KAAK,CAAE,IAAI,CACZ,AAQH,AAAA,YAAY,AAAC,CACX,OAAO,CAAE,YAAY,CACrB,WAAW,CjDwlBuB,KAAK,CiDvlBvC,cAAc,CjDulBoB,KAAK,CiDtlBxC,AAWD,AAAA,gBAAgB,AAAC,CACf,UAAU,CAAE,IAAI,CAChB,SAAS,CAAE,CAAC,CAGZ,WAAW,CAAE,MAAM,CACpB,AAGD,AAAA,eAAe,AAAC,CACd,OAAO,CjDkmB2B,MAAM,CACN,MAAM,CE1lBpC,SAAS,CAtCE,OAAC,C+C+BhB,WAAW,CAAE,CAAC,CACd,gBAAgB,CAAE,WAAW,CAC7B,MAAM,CjDkHsB,GAAG,CiDlHT,KAAK,CAAC,WAAW,CvBxGrC,aAAa,C7BiCD,MAAO,CoD6EtB,AAXD,A5CrGE,e4CqGa,C5CrGX,KAAK,C4CqGT,eAAe,C5CpGX,KAAK,AAAC,C4C6GN,eAAe,CAAE,IAAI,C5C3GtB,A4CiHH,AAAA,oBAAoB,AAAC,CACnB,OAAO,CAAE,YAAY,CACrB,KAAK,CAAE,KAAK,CACZ,MAAM,CAAE,KAAK,CACb,cAAc,CAAE,MAAM,CACtB,OAAO,CAAE,EAAE,CACX,UAAU,CAAE,yBAAyB,CACtC,A7ClEG,MAAM,sB6C6EF,CAPR,AAOQ,iBAPM,CAYJ,UAAU,CAZpB,iBAAc,CAaJ,gBAAgB,CAb1B,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,AUsJQ,CACX,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,CAAC,CAChB,CAAA,A7C7FL,MAAM,mB6CwFN,CALJ,AAKI,iBALU,AAKF,CAoBJ,SAAS,CAAE,UAAU,CACrB,eAAe,CAAE,UAAU,CA0C9B,AApEL,AA4BQ,iBA5BM,CA4BN,WAAW,AAAC,CACV,cAAc,CAAE,GAAG,CAUpB,AAvCT,AA+BU,iBA/BI,CA4BN,WAAW,CAGT,cAAc,AAAC,CACb,QAAQ,CAAE,QAAQ,CACnB,AAjCX,AAmCU,iBAnCI,CA4BN,WAAW,CAOT,SAAS,AAAC,CACR,aAAa,CjD6hBW,KAAK,CiD5hB7B,YAAY,CjD4hBY,KAAK,CiD3hB9B,AAtCX,AA0CQ,iBA1CM,CA8CJ,UAAU,CA9CpB,iBAAc,CA+CJ,gBAAgB,CA/C1B,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,AUyLQ,CACX,SAAS,CAAE,MAAM,CAClB,AA5CT,AAyDQ,iBAzDM,CAyDN,gBAAgB,AAAC,CACf,OAAO,CAAE,eAAe,CAGxB,UAAU,CAAE,IAAI,CACjB,AA9DT,AAgEQ,iBAhEM,CAgEN,eAAe,AAAC,CACd,OAAO,CAAE,IAAI,CACd,CAEJ,A7C1ID,MAAM,sB6C6EF,CAPR,AAOQ,iBAPM,CAYJ,UAAU,CAZpB,iBAAc,CAaJ,gBAAgB,CAb1B,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,AUsJQ,CACX,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,CAAC,CAChB,CAAA,A7C7FL,MAAM,mB6CwFN,CALJ,AAKI,iBALU,AAKF,CAoBJ,SAAS,CAAE,UAAU,CACrB,eAAe,CAAE,UAAU,CA0C9B,AApEL,AA4BQ,iBA5BM,CA4BN,WAAW,AAAC,CACV,cAAc,CAAE,GAAG,CAUpB,AAvCT,AA+BU,iBA/BI,CA4BN,WAAW,CAGT,cAAc,AAAC,CACb,QAAQ,CAAE,QAAQ,CACnB,AAjCX,AAmCU,iBAnCI,CA4BN,WAAW,CAOT,SAAS,AAAC,CACR,aAAa,CjD6hBW,KAAK,CiD5hB7B,YAAY,CjD4hBY,KAAK,CiD3hB9B,AAtCX,AA0CQ,iBA1CM,CA8CJ,UAAU,CA9CpB,iBAAc,CA+CJ,gBAAgB,CA/C1B,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,AUyLQ,CACX,SAAS,CAAE,MAAM,CAClB,AA5CT,AAyDQ,iBAzDM,CAyDN,gBAAgB,AAAC,CACf,OAAO,CAAE,eAAe,CAGxB,UAAU,CAAE,IAAI,CACjB,AA9DT,AAgEQ,iBAhEM,CAgEN,eAAe,AAAC,CACd,OAAO,CAAE,IAAI,CACd,CAEJ,A7C1ID,MAAM,sB6C6EF,CAPR,AAOQ,iBAPM,CAYJ,UAAU,CAZpB,iBAAc,CAaJ,gBAAgB,CAb1B,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,AUsJQ,CACX,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,CAAC,CAChB,CAAA,A7C7FL,MAAM,mB6CwFN,CALJ,AAKI,iBALU,AAKF,CAoBJ,SAAS,CAAE,UAAU,CACrB,eAAe,CAAE,UAAU,CA0C9B,AApEL,AA4BQ,iBA5BM,CA4BN,WAAW,AAAC,CACV,cAAc,CAAE,GAAG,CAUpB,AAvCT,AA+BU,iBA/BI,CA4BN,WAAW,CAGT,cAAc,AAAC,CACb,QAAQ,CAAE,QAAQ,CACnB,AAjCX,AAmCU,iBAnCI,CA4BN,WAAW,CAOT,SAAS,AAAC,CACR,aAAa,CjD6hBW,KAAK,CiD5hB7B,YAAY,CjD4hBY,KAAK,CiD3hB9B,AAtCX,AA0CQ,iBA1CM,CA8CJ,UAAU,CA9CpB,iBAAc,CA+CJ,gBAAgB,CA/C1B,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,AUyLQ,CACX,SAAS,CAAE,MAAM,CAClB,AA5CT,AAyDQ,iBAzDM,CAyDN,gBAAgB,AAAC,CACf,OAAO,CAAE,eAAe,CAGxB,UAAU,CAAE,IAAI,CACjB,AA9DT,AAgEQ,iBAhEM,CAgEN,eAAe,AAAC,CACd,OAAO,CAAE,IAAI,CACd,CAEJ,A7C1ID,MAAM,uB6C6EF,CAPR,AAOQ,iBAPM,CAYJ,UAAU,CAZpB,iBAAc,CAaJ,gBAAgB,CAb1B,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,AUsJQ,CACX,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,CAAC,CAChB,CAAA,A7C7FL,MAAM,oB6CwFN,CALJ,AAKI,iBALU,AAKF,CAoBJ,SAAS,CAAE,UAAU,CACrB,eAAe,CAAE,UAAU,CA0C9B,AApEL,AA4BQ,iBA5BM,CA4BN,WAAW,AAAC,CACV,cAAc,CAAE,GAAG,CAUpB,AAvCT,AA+BU,iBA/BI,CA4BN,WAAW,CAGT,cAAc,AAAC,CACb,QAAQ,CAAE,QAAQ,CACnB,AAjCX,AAmCU,iBAnCI,CA4BN,WAAW,CAOT,SAAS,AAAC,CACR,aAAa,CjD6hBW,KAAK,CiD5hB7B,YAAY,CjD4hBY,KAAK,CiD3hB9B,AAtCX,AA0CQ,iBA1CM,CA8CJ,UAAU,CA9CpB,iBAAc,CA+CJ,gBAAgB,CA/C1B,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,CU+Ib,iBAAc,CV/Id,aAAa,AUyLQ,CACX,SAAS,CAAE,MAAM,CAClB,AA5CT,AAyDQ,iBAzDM,CAyDN,gBAAgB,AAAC,CACf,OAAO,CAAE,eAAe,CAGxB,UAAU,CAAE,IAAI,CACjB,AA9DT,AAgEQ,iBAhEM,CAgEN,eAAe,AAAC,CACd,OAAO,CAAE,IAAI,CACd,CAEJ,AApEL,AAKI,cALU,AAKF,CAoBJ,SAAS,CAAE,UAAU,CACrB,eAAe,CAAE,UAAU,CA0C9B,AApEL,AAOQ,cAPM,CAYJ,UAAU,CAZpB,cAAc,CAaJ,gBAAgB,CAb1B,cAAc,CV/Id,aAAa,CU+Ib,cAAc,CV/Id,aAAa,CU+Ib,cAAc,CV/Id,aAAa,CU+Ib,cAAc,CV/Id,aAAa,AUsJQ,CACX,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,CAAC,CAChB,AAVT,AA4BQ,cA5BM,CA4BN,WAAW,AAAC,CACV,cAAc,CAAE,GAAG,CAUpB,AAvCT,AA+BU,cA/BI,CA4BN,WAAW,CAGT,cAAc,AAAC,CACb,QAAQ,CAAE,QAAQ,CACnB,AAjCX,AAmCU,cAnCI,CA4BN,WAAW,CAOT,SAAS,AAAC,CACR,aAAa,CjD6hBW,KAAK,CiD5hB7B,YAAY,CjD4hBY,KAAK,CiD3hB9B,AAtCX,AA0CQ,cA1CM,CA8CJ,UAAU,CA9CpB,cAAc,CA+CJ,gBAAgB,CA/C1B,cAAc,CV/Id,aAAa,CU+Ib,cAAc,CV/Id,aAAa,CU+Ib,cAAc,CV/Id,aAAa,CU+Ib,cAAc,CV/Id,aAAa,AUyLQ,CACX,SAAS,CAAE,MAAM,CAClB,AA5CT,AAyDQ,cAzDM,CAyDN,gBAAgB,AAAC,CACf,OAAO,CAAE,eAAe,CAGxB,UAAU,CAAE,IAAI,CACjB,AA9DT,AAgEQ,cAhEM,CAgEN,eAAe,AAAC,CACd,OAAO,CAAE,IAAI,CACd,AAYT,AACE,aADW,CACX,aAAa,AAAC,CACZ,KAAK,CpD/MD,eAAI,CoDoNT,AAPH,A5C7ME,a4C6MW,CACX,aAAa,C5C9MX,KAAK,C4C6MT,aAAa,CACX,aAAa,C5C7MX,KAAK,AAAC,C4CiNJ,KAAK,CpDlNH,eAAI,CQGT,A4C0MH,AAUI,aAVS,CASX,WAAW,CACT,SAAS,AAAC,CACR,KAAK,CpDxNH,eAAI,CoDiOP,AApBL,A5C7ME,a4C6MW,CASX,WAAW,CACT,SAAS,C5CvNT,KAAK,C4C6MT,aAAa,CASX,WAAW,CACT,SAAS,C5CtNT,KAAK,AAAC,C4C0NF,KAAK,CpD3NL,eAAI,CQGT,A4C0MH,AAiBM,aAjBO,CASX,WAAW,CACT,SAAS,AAON,SAAS,AAAC,CACT,KAAK,CpD/NL,eAAI,CoDgOL,AAnBP,AAsBI,aAtBS,CASX,WAAW,CAaT,KAAK,CAAG,SAAS,CAtBrB,aAAa,CASX,WAAW,CAcT,OAAO,CAAG,SAAS,CAvBvB,aAAa,CASX,WAAW,CAeT,SAAS,AAAA,KAAK,CAxBlB,aAAa,CASX,WAAW,CAgBT,SAAS,AAAA,OAAO,AAAC,CACf,KAAK,CpDvOH,eAAI,CoDwOP,AA3BL,AA8BE,aA9BW,CA8BX,eAAe,AAAC,CACd,KAAK,CpD5OD,eAAI,CoD6OR,YAAY,CpD7OR,eAAI,CoD8OT,AAjCH,AAmCE,aAnCW,CAmCX,oBAAoB,AAAC,CACnB,gBAAgB,ClDpMH,8PAAwH,CkDqMtI,AArCH,AAuCE,aAvCW,CAuCX,YAAY,AAAC,CACX,KAAK,CpDrPD,eAAI,CoD6PT,AAhDH,AAyCI,aAzCS,CAuCX,YAAY,CAEV,CAAC,AAAC,CACA,KAAK,CpDvPH,eAAI,CoD4PP,AA/CL,A5C7ME,a4C6MW,CAuCX,YAAY,CAEV,CAAC,C5CtPD,KAAK,C4C6MT,aAAa,CAuCX,YAAY,CAEV,CAAC,C5CrPD,KAAK,AAAC,C4CyPF,KAAK,CpD1PL,eAAI,CQGT,A4C8PH,AACE,YADU,CACV,aAAa,AAAC,CACZ,KAAK,CpD7QD,IAAI,CoDkRT,AAPH,A5CjQE,Y4CiQU,CACV,aAAa,C5ClQX,KAAK,C4CiQT,YAAY,CACV,aAAa,C5CjQX,KAAK,AAAC,C4CqQJ,KAAK,CpDhRH,IAAI,CQaT,A4C8PH,AAUI,YAVQ,CASV,WAAW,CACT,SAAS,AAAC,CACR,KAAK,CpDtRH,qBAAI,CoD+RP,AApBL,A5CjQE,Y4CiQU,CASV,WAAW,CACT,SAAS,C5C3QT,KAAK,C4CiQT,YAAY,CASV,WAAW,CACT,SAAS,C5C1QT,KAAK,AAAC,C4C8QF,KAAK,CpDzRL,sBAAI,CQaT,A4C8PH,AAiBM,YAjBM,CASV,WAAW,CACT,SAAS,AAON,SAAS,AAAC,CACT,KAAK,CpD7RL,sBAAI,CoD8RL,AAnBP,AAsBI,YAtBQ,CASV,WAAW,CAaT,KAAK,CAAG,SAAS,CAtBrB,YAAY,CASV,WAAW,CAcT,OAAO,CAAG,SAAS,CAvBvB,YAAY,CASV,WAAW,CAeT,SAAS,AAAA,KAAK,CAxBlB,YAAY,CASV,WAAW,CAgBT,SAAS,AAAA,OAAO,AAAC,CACf,KAAK,CpDrSH,IAAI,CoDsSP,AA3BL,AA8BE,YA9BU,CA8BV,eAAe,AAAC,CACd,KAAK,CpD1SD,qBAAI,CoD2SR,YAAY,CpD3SR,qBAAI,CoD4ST,AAjCH,AAmCE,YAnCU,CAmCV,oBAAoB,AAAC,CACnB,gBAAgB,ClDxPH,oQAAwH,CkDyPtI,AArCH,AAuCE,YAvCU,CAuCV,YAAY,AAAC,CACX,KAAK,CpDnTD,qBAAI,CoD2TT,AAhDH,AAyCI,YAzCQ,CAuCV,YAAY,CAEV,CAAC,AAAC,CACA,KAAK,CpDrTH,IAAI,CoD0TP,AA/CL,A5CjQE,Y4CiQU,CAuCV,YAAY,CAEV,CAAC,C5C1SD,KAAK,C4CiQT,YAAY,CAuCV,YAAY,CAEV,CAAC,C5CzSD,KAAK,AAAC,C4C6SF,KAAK,CpDxTL,IAAI,CQaT,A6CfH,AAAA,KAAK,AAAC,CACJ,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,MAAM,CACtB,SAAS,CAAE,CAAC,CAEZ,SAAS,CAAE,UAAU,CACrB,gBAAgB,CrDLV,IAAI,CqDMV,eAAe,CAAE,UAAU,CAC3B,MAAM,ClD+NsB,GAAG,CkD/NJ,KAAK,CrDLvB,OAAO,C6BUd,aAAa,C7BiCD,MAAO,CqDTtB,AAtCD,AAYE,KAZG,CAYD,EAAE,AAAC,CACH,YAAY,CAAE,CAAC,CACf,WAAW,CAAE,CAAC,CACf,AAfH,AAiBE,KAjBG,CAiBD,WAAW,AAAC,CACZ,UAAU,CAAE,OAAO,CACnB,aAAa,CAAE,OAAO,CAWvB,AA9BH,AAqBI,KArBC,CAiBD,WAAW,CAIT,WAAW,AAAC,CACZ,gBAAgB,CAAE,CAAC,CxBCrB,sBAAsB,C3BmHS,kBAAyD,C2BlHxF,uBAAuB,C3BkHQ,kBAAyD,CmDlHvF,AAxBL,AA0BI,KA1BC,CAiBD,WAAW,CAST,UAAU,AAAE,CACZ,mBAAmB,CAAE,CAAC,CxBUxB,0BAA0B,C3BqGK,kBAAyD,C2BpGxF,yBAAyB,C3BoGM,kBAAyD,CmD7GvF,AA7BL,AAkCE,KAlCG,CAkCD,YAAY,CAAG,WAAW,CAlC9B,KAAK,CAmCD,WAAW,CAAG,YAAY,AAAC,CAC3B,UAAU,CAAE,CAAC,CACd,AAGH,AAAA,UAAU,AAAC,CAGT,IAAI,CAAE,QAAQ,CAGd,UAAU,CAAE,GAAG,CACf,OAAO,ClD0wB2B,OAAO,CkDxwB1C,AAED,AAAA,WAAW,AAAC,CACV,aAAa,ClDowBqB,MAAM,CkDnwBzC,AAED,AAAA,cAAc,AAAC,CACb,UAAU,CAAE,QAAmB,CAC/B,aAAa,CAAE,CAAC,CACjB,AAED,AAAA,UAAU,CAAC,UAAU,AAAC,CACpB,aAAa,CAAE,CAAC,CACjB,AAED,A7CxDE,U6CwDQ,C7CxDN,KAAK,AAAC,C6C0DN,eAAe,CAAE,IAAI,C7C1DD,A6CwDxB,AAKE,UALQ,CAKN,UAAU,AAAC,CACX,WAAW,ClDmvBqB,OAAO,CkDlvBxC,AAOH,AAAA,YAAY,AAAC,CACX,OAAO,ClDyuB2B,MAAM,CACN,OAAO,CkDzuBzC,aAAa,CAAE,CAAC,CAEhB,gBAAgB,CrDtEV,gBAAI,CqDuEV,aAAa,ClDqJe,GAAG,CkDrJG,KAAK,CrD/E9B,OAAO,CqDoFjB,AAVD,AAOE,YAPU,CAOR,WAAW,AAAC,CxBvEZ,aAAa,C3B4HkB,kBAAyD,CAAzD,kBAAyD,CmDpDb,CAAC,CAAC,CAAC,CAC/E,AAGH,AAAA,YAAY,AAAC,CACX,OAAO,ClD6tB2B,MAAM,CACN,OAAO,CkD5tBzC,gBAAgB,CrDjFV,gBAAI,CqDkFV,UAAU,ClD0IkB,GAAG,CkD1IA,KAAK,CrD1F3B,OAAO,CqD+FjB,AATD,AAME,YANU,CAMR,UAAU,AAAC,CxBlFX,aAAa,CwBmFU,CAAC,CAAC,CAAC,CnDyCK,kBAAyD,CAAzD,kBAAyD,CmDxCzF,AAQH,AAAA,iBAAiB,AAAC,CAChB,YAAY,CAAE,QAAmB,CACjC,aAAa,ClD4sBqB,OAAM,CkD3sBxC,WAAW,CAAE,QAAmB,CAChC,aAAa,CAAE,CAAC,CACjB,AAED,AAAA,kBAAkB,AAAC,CACjB,YAAY,CAAE,QAAmB,CACjC,WAAW,CAAE,QAAmB,CACjC,AAGD,AAAA,iBAAiB,AAAC,CAChB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,CAAC,CACT,IAAI,CAAE,CAAC,CACP,OAAO,ClDusB2B,OAAO,C0BtzBvC,aAAa,C3B4HkB,kBAAyD,CmDX3F,AAED,AAAA,SAAS,CACT,aAAa,CACb,gBAAgB,AAAC,CACf,WAAW,CAAE,CAAC,CACd,KAAK,CAAE,IAAI,CACZ,AAED,AAAA,SAAS,CACT,aAAa,AAAC,CxBlHV,sBAAsB,C3BmHS,kBAAyD,C2BlHxF,uBAAuB,C3BkHQ,kBAAyD,CmDC3F,AAED,AAAA,SAAS,CACT,gBAAgB,AAAC,CxBzGb,0BAA0B,C3BqGK,kBAAyD,C2BpGxF,yBAAyB,C3BoGM,kBAAyD,CmDM3F,AAKD,AACE,UADQ,CACR,KAAK,AAAC,CACJ,aAAa,ClD+qBmB,MAAsB,CkD9qBvD,A9ChGC,MAAM,mB8C6FV,CAAA,AAAA,UAAU,AAAC,CAMP,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,QAAQ,CACnB,YAAY,ClDyqBoB,OAAsB,CkDxqBtD,WAAW,ClDwqBqB,OAAsB,CkD9pBzD,AAnBD,AAWI,UAXM,CAWN,KAAK,AAAC,CAEJ,IAAI,CAAE,MAAM,CACZ,YAAY,ClDmqBkB,MAAsB,CkDlqBpD,aAAa,CAAE,CAAC,CAChB,WAAW,ClDiqBmB,MAAsB,CkDhqBrD,CAEJ,AAOD,AAGE,WAHS,CAGP,KAAK,AAAC,CACN,aAAa,ClDmpBmB,MAAsB,CkDlpBvD,A9C5HC,MAAM,mB8CuHV,CAAA,AAAA,WAAW,AAAC,CAQR,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,QAAQ,CA+CtB,AAxDD,AAYI,WAZO,CAYL,KAAK,AAAC,CAEN,IAAI,CAAE,MAAM,CACZ,aAAa,CAAE,CAAC,CAuCjB,AAtDL,AAiBM,WAjBK,CAYL,KAAK,CAKH,KAAK,AAAC,CACN,WAAW,CAAE,CAAC,CACd,WAAW,CAAE,CAAC,CACf,AApBP,AAwBQ,WAxBG,CAYL,KAAK,CAYF,GAAK,EAAC,UAAU,CAAE,CxBzKvB,uBAAuB,CwB0KY,CAAC,CxBzKpC,0BAA0B,CwByKS,CAAC,CAY/B,AArCT,AA2BU,WA3BC,CAYL,KAAK,CAYF,GAAK,EAAC,UAAU,EAGf,aAAa,CA3BvB,WAAW,CAYL,KAAK,CAYF,GAAK,EAAC,UAAU,EAIf,YAAY,AAAC,CAEX,uBAAuB,CAAE,CAAC,CAC3B,AA/BX,AAgCU,WAhCC,CAYL,KAAK,CAYF,GAAK,EAAC,UAAU,EAQf,gBAAgB,CAhC1B,WAAW,CAYL,KAAK,CAYF,GAAK,EAAC,UAAU,EASf,YAAY,AAAC,CAEX,0BAA0B,CAAE,CAAC,CAC9B,AApCX,AAuCQ,WAvCG,CAYL,KAAK,CA2BF,GAAK,EAAC,WAAW,CAAE,CxB1KxB,sBAAsB,CwB2KY,CAAC,CxB1KnC,yBAAyB,CwB0KS,CAAC,CAY9B,AApDT,AA0CU,WA1CC,CAYL,KAAK,CA2BF,GAAK,EAAC,WAAW,EAGhB,aAAa,CA1CvB,WAAW,CAYL,KAAK,CA2BF,GAAK,EAAC,WAAW,EAIhB,YAAY,AAAC,CAEX,sBAAsB,CAAE,CAAC,CAC1B,AA9CX,AA+CU,WA/CC,CAYL,KAAK,CA2BF,GAAK,EAAC,WAAW,EAQhB,gBAAgB,CA/C1B,WAAW,CAYL,KAAK,CA2BF,GAAK,EAAC,WAAW,EAShB,YAAY,AAAC,CAEX,yBAAyB,CAAE,CAAC,CAC7B,CAKV,AAOD,AACE,aADW,CACX,KAAK,AAAC,CACJ,aAAa,ClDwkBmB,MAAM,CkDvkBvC,A9CzLC,MAAM,mB8CsLV,CAAA,AAAA,aAAa,AAAC,CAMV,YAAY,ClDqlBoB,CAAC,CkDplBjC,UAAU,ClDqlBsB,OAAO,CkDplBvC,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,CAAC,CAOZ,AAhBD,AAWI,aAXS,CAWT,KAAK,AAAC,CACJ,OAAO,CAAE,YAAY,CACrB,KAAK,CAAE,IAAI,CACZ,CAEJ,AAOD,AAAA,UAAU,AAAC,CACT,eAAe,CAAE,IAAI,CAmBtB,AApBD,AAGE,UAHQ,CAGN,KAAK,AAAC,CACN,QAAQ,CAAE,MAAM,CAejB,AAnBH,AAMI,UANM,CAGN,KAAK,CAGJ,GAAK,EAAC,YAAY,CAAE,CACnB,aAAa,CAAE,CAAC,CxBvOlB,0BAA0B,CwBwOM,CAAC,CxBvOjC,yBAAyB,CwBuOO,CAAC,CAChC,AATL,AAWI,UAXM,CAGN,KAAK,CAQJ,GAAK,EAAC,aAAa,CAAE,CxBzPtB,sBAAsB,CwB0PO,CAAC,CxBzP9B,uBAAuB,CwByPM,CAAC,CAC7B,AAbL,AAeI,UAfM,CAGN,KAAK,CAYH,YAAY,AAAC,CxBtQf,aAAa,CwBuQY,CAAC,CACxB,aAAa,ClD9CW,IAAG,CkD+C5B,AC3RL,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,IAAI,CACf,OAAO,CnD4hC2B,MAAM,CACN,IAAI,CmD5hCtC,aAAa,CnD+hCqB,IAAI,CmD7hCtC,UAAU,CAAE,IAAI,CAChB,gBAAgB,CtDCP,OAAO,C6BUd,aAAa,C7BiCD,MAAO,CsD1CtB,AAED,AAEE,gBAFc,CAEZ,gBAAgB,AAAC,CACjB,YAAY,CnDmhCoB,KAAK,CmD3gCtC,AAXH,AAKI,gBALY,CAEZ,gBAAgB,EAGb,MAAM,AAAC,CACR,KAAK,CAAE,IAAI,CACX,aAAa,CnD+gCiB,KAAK,CmD9gCnC,KAAK,CtDPA,OAAO,CsDQZ,OAAO,CnDohCuB,GAAU,CmDnhCzC,AAVL,AAmBE,gBAnBc,CAmBZ,gBAAgB,CAAC,KAAK,EAAE,MAAM,AAAC,CAC/B,eAAe,CAAE,SAAS,CAC3B,AArBH,AAuBE,gBAvBc,CAuBZ,gBAAgB,CAAC,KAAK,EAAE,MAAM,AAAC,CAC/B,eAAe,CAAE,IAAI,CACtB,AAzBH,AA2BE,gBA3Bc,AA2Bb,OAAO,AAAC,CACP,KAAK,CtD3BE,OAAO,CsD4Bf,ACxCH,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,IAAI,ChCGb,YAAY,CAAE,CAAC,CACf,UAAU,CAAE,IAAI,CMad,aAAa,C7BiCD,MAAO,CuD/CtB,AAED,AAAA,UAAU,AAAC,CACT,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,OAAO,CpD6wB2B,KAAK,CACL,MAAM,CoD7wBxC,WAAW,CpDkOiB,IAAG,CoDjO/B,WAAW,CpDixBuB,IAAI,CoDhxBtC,KAAK,CvDMA,OAAO,CuDJZ,gBAAgB,CvDRV,IAAI,CuDSV,MAAM,CpD6NsB,GAAG,CoD7NE,KAAK,CvDN7B,OAAO,CuDqBjB,AAxBD,AAWE,UAXQ,CAWN,KAAK,AAAC,CACN,OAAO,CAAE,CAAC,CACV,KAAK,CvDDF,OAAO,CuDEV,eAAe,CAAE,IAAI,CACrB,gBAAgB,CvDbT,OAAO,CuDcd,YAAY,CvDbL,OAAO,CuDcf,AAjBH,AAmBE,UAnBQ,CAmBN,KAAK,AAAC,CACN,OAAO,CAAE,CAAC,CACV,OAAO,CpDywByB,CAAC,CoDxwBjC,UAAU,CpD8WgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAFL,KAAK,CHtX5B,qBAAO,CuDWX,AAGH,AAEI,UAFM,CACN,WAAW,CACX,UAAU,AAAC,CACT,WAAW,CAAE,CAAC,C1BahB,sBAAsB,C7BGV,MAAO,C6BFnB,yBAAyB,C7BEb,MAAO,CuDdlB,AALL,AAQI,UARM,CAON,UAAU,CACV,UAAU,AAAC,C1BNX,uBAAuB,C7BiBX,MAAO,C6BhBnB,0BAA0B,C7BgBd,MAAO,CuDTlB,AAVL,AAaE,UAbQ,AAaP,OAAO,CAAC,UAAU,AAAC,CAClB,OAAO,CAAE,CAAC,CACV,KAAK,CvDzCD,IAAI,CuD0CR,gBAAgB,CvD9Bb,OAAO,CuD+BV,YAAY,CvD/BT,OAAO,CuDgCX,AAlBH,AAoBE,UApBQ,AAoBP,SAAS,CAAC,UAAU,AAAC,CACpB,KAAK,CvDzCE,OAAO,CuD0Cd,cAAc,CAAE,IAAI,CAEpB,MAAM,CAAE,IAAI,CACZ,gBAAgB,CvDnDZ,IAAI,CuDoDR,YAAY,CvDjDL,OAAO,CuDkDf,AAQH,AjChEE,ciCgEY,CjChEZ,UAAU,AAAC,CACT,OAAO,CnBsxByB,MAAM,CACN,MAAM,CE5pBpC,SAAS,CAtCE,OAAC,CiBnFd,WAAW,CnBmOe,GAAG,CmBlO9B,AiC4DH,AjCxDM,ciCwDQ,CjC1DZ,UAAU,CACN,WAAW,CACX,UAAU,AAAC,COqCb,sBAAsB,C1BgMI,KAAK,C0B/L/B,yBAAyB,C1B+LC,KAAK,CmBnO5B,AiCsDP,AjCnDM,ciCmDQ,CjC1DZ,UAAU,CAMN,UAAU,CACV,UAAU,AAAC,COkBb,uBAAuB,C1B8MG,KAAK,C0B7M/B,0BAA0B,C1B6MA,KAAK,CmB9N5B,AiCqDP,AjCpEE,ciCoEY,CjCpEZ,UAAU,AAAC,CACT,OAAO,CnBoxByB,MAAM,CACN,KAAK,CE1pBnC,SAAS,CAtCE,OAAC,CiBnFd,WAAW,CnBoOe,GAAG,CmBnO9B,AiCgEH,AjC5DM,ciC4DQ,CjC9DZ,UAAU,CACN,WAAW,CACX,UAAU,AAAC,COqCb,sBAAsB,C1BiMI,KAAK,C0BhM/B,yBAAyB,C1BgMC,KAAK,CmBpO5B,AiC0DP,AjCvDM,ciCuDQ,CjC9DZ,UAAU,CAMN,UAAU,CACV,UAAU,AAAC,COkBb,uBAAuB,C1B+MG,KAAK,C0B9M/B,0BAA0B,C1B8MA,KAAK,CmB/N5B,AkCbP,AAAA,MAAM,AAAC,CACL,OAAO,CAAE,YAAY,CACrB,OAAO,CrDq5B2B,KAAK,CACL,IAAI,CEr1BpC,SAAS,CAAC,GAAC,CmD/Db,WAAW,CrDuRiB,GAAG,CqDtR/B,WAAW,CAAE,CAAC,CACd,UAAU,CAAE,MAAM,CAClB,WAAW,CAAE,MAAM,CACnB,cAAc,CAAE,QAAQ,C3BKtB,aAAa,C7BiCD,MAAO,CgCnCjB,UAAU,C7Bgbc,KAAK,CAAC,KAAI,CAAC,WAAW,CAAE,gBAAgB,CAAC,KAAI,CAAC,WAAW,CAAE,YAAY,CAAC,KAAI,CAAC,WAAW,CAAE,UAAU,CAAC,KAAI,CAAC,WAAW,CqDralJ,AxBPK,MAAM,iCwBfZ,CAAA,AAAA,MAAM,AAAC,CxBgBC,UAAU,CAAE,IAAI,CwBMvB,CAAA,AA3BD,AhDgBE,CgDhBD,AAAA,MAAM,ChDgBH,KAAK,CgDhBT,CAAC,AAAA,MAAM,ChDiBH,KAAK,AAAC,CgDEJ,eAAe,CAAE,IAAI,ChDAxB,AgDdH,AAmBE,MAnBI,CAmBF,KAAK,AAAC,CACN,OAAO,CAAE,IAAI,CACd,AAIH,AAAA,IAAI,CAAC,MAAM,AAAC,CACV,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,IAAI,CACV,AAMD,AAAA,WAAW,AAAC,CACV,aAAa,CrD23BqB,IAAI,CqD13BtC,YAAY,CrD03BsB,IAAI,C0Bj5BpC,aAAa,C1Bo5BmB,KAAK,CqD33BxC,AA3CD,AAkDE,cAlDY,AAkDJ,C9CjDR,KAAK,CVKC,IAAI,CUJV,gBAAgB,CVgBX,OAAO,CwDkCX,A9CpDH,AFgBE,CEhBD,AAAA,cAAc,CFgBX,KAAK,CEhBT,CAAC,AAAA,cAAc,CFiBX,KAAK,AAAC,CEXJ,KAAK,CVAH,IAAI,CUCN,gBAAgB,CVWf,OAAO,CQCX,AEnBH,AAUI,CAVH,AAAA,cAAc,CAUT,KAAK,CAVX,CAAC,AAAA,cAAc,AAWV,MAAM,AAAC,CACN,OAAO,CAAE,CAAC,CACV,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CP2XO,KAAK,CHtX5B,oBAAO,CUJT,A8CdL,AAkDE,gBAlDc,AAkDN,C9CjDR,KAAK,CVKC,IAAI,CUJV,gBAAgB,CVUP,OAAO,CwDwCf,A9CpDH,AFgBE,CEhBD,AAAA,gBAAgB,CFgBb,KAAK,CEhBT,CAAC,AAAA,gBAAgB,CFiBb,KAAK,AAAC,CEXJ,KAAK,CVAH,IAAI,CUCN,gBAAgB,CVKX,OAAO,CQOf,AEnBH,AAUI,CAVH,AAAA,gBAAgB,CAUX,KAAK,CAVX,CAAC,AAAA,gBAAgB,AAWZ,MAAM,AAAC,CACN,OAAO,CAAE,CAAC,CACV,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CP2XO,KAAK,CH5XxB,qBAAO,CUEb,A8CdL,AAkDE,cAlDY,AAkDJ,C9CjDR,KAAK,CVKC,IAAI,CUJV,gBAAgB,CVuBV,OAAO,CwD2BZ,A9CpDH,AFgBE,CEhBD,AAAA,cAAc,CFgBX,KAAK,CEhBT,CAAC,AAAA,cAAc,CFiBX,KAAK,AAAC,CEXJ,KAAK,CVAH,IAAI,CUCN,gBAAgB,CVkBd,OAAO,CQNZ,AEnBH,AAUI,CAVH,AAAA,cAAc,CAUT,KAAK,CAVX,CAAC,AAAA,cAAc,AAWV,MAAM,AAAC,CACN,OAAO,CAAE,CAAC,CACV,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CP2XO,KAAK,CH/W3B,oBAAO,CUXV,A8CdL,AAkDE,WAlDS,AAkDD,C9CjDR,KAAK,CVKC,IAAI,CUJV,gBAAgB,CVyBX,OAAO,CwDyBX,A9CpDH,AFgBE,CEhBD,AAAA,WAAW,CFgBR,KAAK,CEhBT,CAAC,AAAA,WAAW,CFiBR,KAAK,AAAC,CEXJ,KAAK,CVAH,IAAI,CUCN,gBAAgB,CVoBf,OAAO,CQRX,AEnBH,AAUI,CAVH,AAAA,WAAW,CAUN,KAAK,CAVX,CAAC,AAAA,WAAW,AAWP,MAAM,AAAC,CACN,OAAO,CAAE,CAAC,CACV,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CP2XO,KAAK,CH7W5B,oBAAO,CUbT,A8CdL,AAkDE,cAlDY,AAkDJ,C9CjDR,KAAK,CVKC,IAAI,CUJV,gBAAgB,CVsBT,OAAO,CwD4Bb,A9CpDH,AFgBE,CEhBD,AAAA,cAAc,CFgBX,KAAK,CEhBT,CAAC,AAAA,cAAc,CFiBX,KAAK,AAAC,CEXJ,KAAK,CVAH,IAAI,CUCN,gBAAgB,CViBb,OAAO,CQLb,AEnBH,AAUI,CAVH,AAAA,cAAc,CAUT,KAAK,CAVX,CAAC,AAAA,cAAc,AAWV,MAAM,AAAC,CACN,OAAO,CAAE,CAAC,CACV,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CP2XO,KAAK,CHhX1B,oBAAO,CUVX,A8CdL,AAkDE,aAlDW,AAkDH,C9CjDR,KAAK,CVKC,IAAI,CUJV,gBAAgB,CVoBZ,OAAO,CwD8BV,A9CpDH,AFgBE,CEhBD,AAAA,aAAa,CFgBV,KAAK,CEhBT,CAAC,AAAA,aAAa,CFiBV,KAAK,AAAC,CEXJ,KAAK,CVAH,IAAI,CUCN,gBAAgB,CVehB,OAAO,CQHV,AEnBH,AAUI,CAVH,AAAA,aAAa,CAUR,KAAK,CAVX,CAAC,AAAA,aAAa,AAWT,MAAM,AAAC,CACN,OAAO,CAAE,CAAC,CACV,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CP2XO,KAAK,CHlX7B,mBAAO,CURR,A8CdL,AAkDE,YAlDU,AAkDF,C9CjDR,KAAK,CVcI,OAAO,CUbhB,gBAAgB,CVKP,OAAO,CwD6Cf,A9CpDH,AFgBE,CEhBD,AAAA,YAAY,CFgBT,KAAK,CEhBT,CAAC,AAAA,YAAY,CFiBT,KAAK,AAAC,CEXJ,KAAK,CVSA,OAAO,CURZ,gBAAgB,CVAX,OAAO,CQYf,AEnBH,AAUI,CAVH,AAAA,YAAY,CAUP,KAAK,CAVX,CAAC,AAAA,YAAY,AAWR,MAAM,AAAC,CACN,OAAO,CAAE,CAAC,CACV,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CP2XO,KAAK,CHjYxB,qBAAO,CUOb,A8CdL,AAkDE,WAlDS,AAkDD,C9CjDR,KAAK,CVKC,IAAI,CUJV,gBAAgB,CVYP,OAAO,CwDsCf,A9CpDH,AFgBE,CEhBD,AAAA,WAAW,CFgBR,KAAK,CEhBT,CAAC,AAAA,WAAW,CFiBR,KAAK,AAAC,CEXJ,KAAK,CVAH,IAAI,CUCN,gBAAgB,CVOX,OAAO,CQKf,AEnBH,AAUI,CAVH,AAAA,WAAW,CAUN,KAAK,CAVX,CAAC,AAAA,WAAW,AAWP,MAAM,AAAC,CACN,OAAO,CAAE,CAAC,CACV,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CP2XO,KAAK,CH1XxB,mBAAO,CUAb,A+CdL,AAAA,UAAU,AAAC,CACT,OAAO,CtDozB2B,IAAI,CsDpzBV,IAAwB,CACpD,aAAa,CtDmzBqB,IAAI,CsDjzBtC,gBAAgB,CzDIP,OAAO,C6BUd,aAAa,C1B8Na,KAAK,CsDtOlC,AlDkDG,MAAM,mBkD5DV,CAAA,AAAA,UAAU,AAAC,CAQP,OAAO,CAAE,IAAwB,CtD6yBD,IAAI,CsD3yBvC,CAAA,AAED,AAAA,gBAAgB,AAAC,CACf,aAAa,CAAE,CAAC,CAChB,YAAY,CAAE,CAAC,C5BIb,aAAa,C4BHQ,CAAC,CACzB,ACZD,AAAA,MAAM,AAAC,CACL,QAAQ,CAAE,QAAQ,CAClB,OAAO,CvDk9B2B,MAAM,CACN,OAAO,CuDl9BzC,aAAa,CvDm9BqB,IAAI,CuDl9BtC,MAAM,CvDoOsB,GAAG,CuDpOH,KAAK,CAAC,WAAW,C7BU3C,aAAa,C7BiCD,MAAO,C0DzCtB,AAGD,AAAA,cAAc,AAAC,CAEb,KAAK,CAAE,OAAO,CACf,AAGD,AAAA,WAAW,AAAC,CACV,WAAW,CvD4QiB,GAAG,CuD3QhC,AAOD,AAAA,kBAAkB,AAAC,CACjB,aAAa,CAAE,IAAuC,CAWvD,AAZD,AAIE,kBAJgB,CAIhB,MAAM,AAAC,CACL,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,CAAC,CACR,OAAO,CAAE,CAAC,CACV,OAAO,CvDm7ByB,MAAM,CACN,OAAO,CuDn7BvC,KAAK,CAAE,OAAO,CACf,AAvCH,AAgDE,cAhDY,AAgDJ,CvC/CR,KAAK,CjBwGG,OAAwD,C6BnG9D,gBAAgB,C7BmGV,OAAwD,CiBtGhE,YAAY,CjBsGJ,OAAwD,CwDvD/D,AAlDH,AvCKE,cuCLY,CvCKZ,EAAE,AAAC,CACD,gBAAgB,CjBmGV,OAAwD,CiBlG/D,AuCPH,AvCSE,cuCTY,CvCSZ,WAAW,AAAC,CACV,KAAK,CjB+FC,OAAwD,CiB9F/D,AuCXH,AAgDE,gBAhDc,AAgDN,CvC/CR,KAAK,CjBwGG,OAAwD,C6BnG9D,gBAAgB,C7BmGV,OAAwD,CiBtGhE,YAAY,CjBsGJ,OAAwD,CwDvD/D,AAlDH,AvCKE,gBuCLc,CvCKd,EAAE,AAAC,CACD,gBAAgB,CjBmGV,OAAwD,CiBlG/D,AuCPH,AvCSE,gBuCTc,CvCSd,WAAW,AAAC,CACV,KAAK,CjB+FC,OAAwD,CiB9F/D,AuCXH,AAgDE,cAhDY,AAgDJ,CvC/CR,KAAK,CjBwGG,OAAwD,C6BnG9D,gBAAgB,C7BmGV,OAAwD,CiBtGhE,YAAY,CjBsGJ,OAAwD,CwDvD/D,AAlDH,AvCKE,cuCLY,CvCKZ,EAAE,AAAC,CACD,gBAAgB,CjBmGV,OAAwD,CiBlG/D,AuCPH,AvCSE,cuCTY,CvCSZ,WAAW,AAAC,CACV,KAAK,CjB+FC,OAAwD,CiB9F/D,AuCXH,AAgDE,WAhDS,AAgDD,CvC/CR,KAAK,CjBwGG,OAAwD,C6BnG9D,gBAAgB,C7BmGV,OAAwD,CiBtGhE,YAAY,CjBsGJ,OAAwD,CwDvD/D,AAlDH,AvCKE,WuCLS,CvCKT,EAAE,AAAC,CACD,gBAAgB,CjBmGV,OAAwD,CiBlG/D,AuCPH,AvCSE,WuCTS,CvCST,WAAW,AAAC,CACV,KAAK,CjB+FC,OAAwD,CiB9F/D,AuCXH,AAgDE,cAhDY,AAgDJ,CvC/CR,KAAK,CjBwGG,OAAwD,C6BnG9D,gBAAgB,C7BmGV,OAAwD,CiBtGhE,YAAY,CjBsGJ,OAAwD,CwDvD/D,AAlDH,AvCKE,cuCLY,CvCKZ,EAAE,AAAC,CACD,gBAAgB,CjBmGV,OAAwD,CiBlG/D,AuCPH,AvCSE,cuCTY,CvCSZ,WAAW,AAAC,CACV,KAAK,CjB+FC,OAAwD,CiB9F/D,AuCXH,AAgDE,aAhDW,AAgDH,CvC/CR,KAAK,CjBwGG,OAAwD,C6BnG9D,gBAAgB,C7BmGV,OAAwD,CiBtGhE,YAAY,CjBsGJ,OAAwD,CwDvD/D,AAlDH,AvCKE,auCLW,CvCKX,EAAE,AAAC,CACD,gBAAgB,CjBmGV,OAAwD,CiBlG/D,AuCPH,AvCSE,auCTW,CvCSX,WAAW,AAAC,CACV,KAAK,CjB+FC,OAAwD,CiB9F/D,AuCXH,AAgDE,YAhDU,AAgDF,CvC/CR,KAAK,CjBwGG,OAAwD,C6BnG9D,gBAAgB,C7BmGV,OAAwD,CiBtGhE,YAAY,CjBsGJ,OAAwD,CwDvD/D,AAlDH,AvCKE,YuCLU,CvCKV,EAAE,AAAC,CACD,gBAAgB,CjBmGV,OAAwD,CiBlG/D,AuCPH,AvCSE,YuCTU,CvCSV,WAAW,AAAC,CACV,KAAK,CjB+FC,OAAwD,CiB9F/D,AuCXH,AAgDE,WAhDS,AAgDD,CvC/CR,KAAK,CjBwGG,OAAwD,C6BnG9D,gBAAgB,C7BmGV,OAAwD,CiBtGhE,YAAY,CjBsGJ,OAAwD,CwDvD/D,AAlDH,AvCKE,WuCLS,CvCKT,EAAE,AAAC,CACD,gBAAgB,CjBmGV,OAAwD,CiBlG/D,AuCPH,AvCSE,WuCTS,CvCST,WAAW,AAAC,CACV,KAAK,CjB+FC,OAAwD,CiB9F/D,AwCTD,UAAU,CAAV,oBAAU,CACR,IAAI,CAAG,mBAAmB,CxDm+BM,IAAI,CwDn+BS,CAAC,CAC9C,EAAE,CAAG,mBAAmB,CAAE,GAAG,EAIjC,AAAA,SAAS,AAAC,CACR,OAAO,CAAE,IAAI,CACb,MAAM,CxD49B4B,IAAI,CwD39BtC,QAAQ,CAAE,MAAM,CAChB,WAAW,CAAE,CAAC,CtDmHV,SAAS,CAtCE,MAAC,CsD3EhB,gBAAgB,C3DNP,OAAO,C6BUd,aAAa,C7BiCD,MAAO,C2DlCtB,AAED,AAAA,aAAa,AAAC,CACZ,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,MAAM,CACtB,eAAe,CAAE,MAAM,CACvB,QAAQ,CAAE,MAAM,CAChB,KAAK,C3DlBC,IAAI,C2DmBV,UAAU,CAAE,MAAM,CAClB,WAAW,CAAE,MAAM,CACnB,gBAAgB,C3DTX,OAAO,CgCFR,UAAU,C7B89BoB,KAAK,CAAC,IAAG,CAAC,IAAI,CwDj9BjD,A3BTK,MAAM,iC2BDZ,CAAA,AAAA,aAAa,AAAC,C3BEN,UAAU,CAAE,IAAI,C2BQvB,CAAA,AAED,AAAA,qBAAqB,AAAC,C5BYpB,gBAAgB,CAAE,0KAA2H,C4BV7I,eAAe,CxDq8BmB,IAAI,CAAJ,IAAI,CwDp8BvC,AAGC,AAAA,sBAAsB,AAAC,CACrB,SAAS,CxDu8BuB,EAAE,CAAC,MAAM,CAAC,QAAQ,CwDv8BR,oBAAoB,CAO/D,AAJG,MAAM,iCAJV,CAAA,AAAA,sBAAsB,AAAC,CAKjB,SAAS,CAAE,IAAI,CAGpB,CAAA,AC7CH,AAAA,MAAM,AAAC,CACL,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,UAAU,CACxB,AAED,AAAA,WAAW,AAAC,CACV,IAAI,CAAE,CAAC,CACR,ACHD,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,MAAM,CAGtB,YAAY,CAAE,CAAC,CACf,aAAa,CAAE,CAAC,ChCQd,aAAa,C7BiCD,MAAO,C6DvCtB,AAQD,AAAA,uBAAuB,AAAC,CACtB,KAAK,CAAE,IAAI,CACX,KAAK,C7DTI,OAAO,C6DUhB,UAAU,CAAE,OAAO,CAcpB,AAjBD,ArDJE,uBqDIqB,CrDJnB,KAAK,CqDIT,uBAAuB,CrDHnB,KAAK,AAAC,CqDUN,OAAO,CAAE,CAAC,CACV,KAAK,C7DfE,OAAO,C6DgBd,eAAe,CAAE,IAAI,CACrB,gBAAgB,C7DvBT,OAAO,CQYf,AqDCH,AAaE,uBAbqB,CAanB,MAAM,AAAC,CACP,KAAK,C7DtBE,OAAO,C6DuBd,gBAAgB,C7D3BT,OAAO,C6D4Bf,AAQH,AAAA,gBAAgB,AAAC,CACf,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,OAAO,C1D08B2B,MAAM,CACN,OAAO,C0Dx8BzC,gBAAgB,C7D5CV,IAAI,C6D6CV,MAAM,C1DyLsB,GAAG,C0DzLE,KAAK,C7DnChC,iBAAI,C6DoEX,AAxCD,AASE,gBATc,CASZ,WAAW,AAAC,ChC1BZ,sBAAsB,CgC2BK,OAAO,ChC1BlC,uBAAuB,CgC0BI,OAAO,CACnC,AAXH,AAaE,gBAbc,CAaZ,UAAU,AAAC,ChChBX,0BAA0B,CgCiBI,OAAO,ChChBrC,yBAAyB,CgCgBK,OAAO,CACtC,AAfH,AAiBE,gBAjBc,AAiBb,SAAS,CAjBZ,gBAAgB,CAkBZ,QAAQ,AAAC,CACT,KAAK,C7DnDE,OAAO,C6DoDd,cAAc,CAAE,IAAI,CACpB,gBAAgB,C7D3DZ,IAAI,C6D4DT,AAtBH,AAyBE,gBAzBc,AAyBb,OAAO,AAAC,CACP,OAAO,CAAE,CAAC,CACV,KAAK,C7DjED,IAAI,C6DkER,gBAAgB,C7DtDb,OAAO,C6DuDV,YAAY,C7DvDT,OAAO,C6DwDX,AA9BH,AAgCE,gBAhCc,CAAhB,gBAAgB,AAgCR,CACJ,gBAAgB,CAAE,CAAC,CAMpB,AAvCH,AAmCI,gBAnCY,CAAhB,gBAAgB,AAmCX,OAAO,AAAC,CACP,UAAU,C1D4Jc,IAAG,C0D3J3B,gBAAgB,C1D2JQ,GAAG,C0D1J5B,AAlFL,AA+FI,sBA/FkB,AA+FV,CACN,cAAc,CAAE,GAAG,CA2BpB,AA3HL,AAmGQ,sBAnGc,CAkGd,gBAAgB,CACd,WAAW,AAAC,ChC1BlB,yBAAyB,C7BtBb,MAAO,C6BUnB,uBAAuB,CgCwCgB,CAAC,CACnC,AAtGT,AAwGQ,sBAxGc,CAkGd,gBAAgB,CAMd,UAAU,AAAC,ChC3CjB,uBAAuB,C7BVX,MAAO,C6BsBnB,yBAAyB,CgCiCgB,CAAC,CACrC,AA3GT,AA6GQ,sBA7Gc,CAkGd,gBAAgB,AAWf,OAAO,AAAC,CACP,UAAU,CAAE,CAAC,CACd,AA/GT,AAiHQ,sBAjHc,CAkGd,gBAAgB,CAed,gBAAgB,AAAC,CACjB,gBAAgB,C1D0HI,GAAG,C0DzHvB,iBAAiB,CAAE,CAAC,CAMrB,AAzHT,AAqHU,sBArHY,CAkGd,gBAAgB,CAed,gBAAgB,AAIf,OAAO,AAAC,CACP,WAAW,C1DsHO,IAAG,C0DrHrB,iBAAiB,C1DqHC,GAAG,C0DpHtB,AtD5DP,MAAM,mBsDmCN,CA/FJ,AA+FI,yBA/FqB,AA+Fb,CACN,cAAc,CAAE,GAAG,CA2BpB,AA3HL,AAmGQ,yBAnGiB,CAkGjB,gBAAgB,CACd,WAAW,AAAC,ChC1BlB,yBAAyB,C7BtBb,MAAO,C6BUnB,uBAAuB,CgCwCgB,CAAC,CACnC,AAtGT,AAwGQ,yBAxGiB,CAkGjB,gBAAgB,CAMd,UAAU,AAAC,ChC3CjB,uBAAuB,C7BVX,MAAO,C6BsBnB,yBAAyB,CgCiCgB,CAAC,CACrC,AA3GT,AA6GQ,yBA7GiB,CAkGjB,gBAAgB,AAWf,OAAO,AAAC,CACP,UAAU,CAAE,CAAC,CACd,AA/GT,AAiHQ,yBAjHiB,CAkGjB,gBAAgB,CAed,gBAAgB,AAAC,CACjB,gBAAgB,C1D0HI,GAAG,C0DzHvB,iBAAiB,CAAE,CAAC,CAMrB,AAzHT,AAqHU,yBArHe,CAkGjB,gBAAgB,CAed,gBAAgB,AAIf,OAAO,AAAC,CACP,WAAW,C1DsHO,IAAG,C0DrHrB,iBAAiB,C1DqHC,GAAG,C0DpHtB,CAGN,AtD/DD,MAAM,mBsDmCN,CA/FJ,AA+FI,yBA/FqB,AA+Fb,CACN,cAAc,CAAE,GAAG,CA2BpB,AA3HL,AAmGQ,yBAnGiB,CAkGjB,gBAAgB,CACd,WAAW,AAAC,ChC1BlB,yBAAyB,C7BtBb,MAAO,C6BUnB,uBAAuB,CgCwCgB,CAAC,CACnC,AAtGT,AAwGQ,yBAxGiB,CAkGjB,gBAAgB,CAMd,UAAU,AAAC,ChC3CjB,uBAAuB,C7BVX,MAAO,C6BsBnB,yBAAyB,CgCiCgB,CAAC,CACrC,AA3GT,AA6GQ,yBA7GiB,CAkGjB,gBAAgB,AAWf,OAAO,AAAC,CACP,UAAU,CAAE,CAAC,CACd,AA/GT,AAiHQ,yBAjHiB,CAkGjB,gBAAgB,CAed,gBAAgB,AAAC,CACjB,gBAAgB,C1D0HI,GAAG,C0DzHvB,iBAAiB,CAAE,CAAC,CAMrB,AAzHT,AAqHU,yBArHe,CAkGjB,gBAAgB,CAed,gBAAgB,AAIf,OAAO,AAAC,CACP,WAAW,C1DsHO,IAAG,C0DrHrB,iBAAiB,C1DqHC,GAAG,C0DpHtB,CAGN,AtD/DD,MAAM,mBsDmCN,CA/FJ,AA+FI,yBA/FqB,AA+Fb,CACN,cAAc,CAAE,GAAG,CA2BpB,AA3HL,AAmGQ,yBAnGiB,CAkGjB,gBAAgB,CACd,WAAW,AAAC,ChC1BlB,yBAAyB,C7BtBb,MAAO,C6BUnB,uBAAuB,CgCwCgB,CAAC,CACnC,AAtGT,AAwGQ,yBAxGiB,CAkGjB,gBAAgB,CAMd,UAAU,AAAC,ChC3CjB,uBAAuB,C7BVX,MAAO,C6BsBnB,yBAAyB,CgCiCgB,CAAC,CACrC,AA3GT,AA6GQ,yBA7GiB,CAkGjB,gBAAgB,AAWf,OAAO,AAAC,CACP,UAAU,CAAE,CAAC,CACd,AA/GT,AAiHQ,yBAjHiB,CAkGjB,gBAAgB,CAed,gBAAgB,AAAC,CACjB,gBAAgB,C1D0HI,GAAG,C0DzHvB,iBAAiB,CAAE,CAAC,CAMrB,AAzHT,AAqHU,yBArHe,CAkGjB,gBAAgB,CAed,gBAAgB,AAIf,OAAO,AAAC,CACP,WAAW,C1DsHO,IAAG,C0DrHrB,iBAAiB,C1DqHC,GAAG,C0DpHtB,CAGN,AtD/DD,MAAM,oBsDmCN,CA/FJ,AA+FI,yBA/FqB,AA+Fb,CACN,cAAc,CAAE,GAAG,CA2BpB,AA3HL,AAmGQ,yBAnGiB,CAkGjB,gBAAgB,CACd,WAAW,AAAC,ChC1BlB,yBAAyB,C7BtBb,MAAO,C6BUnB,uBAAuB,CgCwCgB,CAAC,CACnC,AAtGT,AAwGQ,yBAxGiB,CAkGjB,gBAAgB,CAMd,UAAU,AAAC,ChC3CjB,uBAAuB,C7BVX,MAAO,C6BsBnB,yBAAyB,CgCiCgB,CAAC,CACrC,AA3GT,AA6GQ,yBA7GiB,CAkGjB,gBAAgB,AAWf,OAAO,AAAC,CACP,UAAU,CAAE,CAAC,CACd,AA/GT,AAiHQ,yBAjHiB,CAkGjB,gBAAgB,CAed,gBAAgB,AAAC,CACjB,gBAAgB,C1D0HI,GAAG,C0DzHvB,iBAAiB,CAAE,CAAC,CAMrB,AAzHT,AAqHU,yBArHe,CAkGjB,gBAAgB,CAed,gBAAgB,AAIf,OAAO,AAAC,CACP,WAAW,C1DsHO,IAAG,C0DrHrB,iBAAiB,C1DqHC,GAAG,C0DpHtB,CAGN,AAUL,AAAA,iBAAiB,AAAC,ChCnHd,aAAa,CgCoHQ,CAAC,CASzB,AAVD,AAGE,iBAHe,CAGb,gBAAgB,AAAC,CACjB,YAAY,CAAE,CAAC,CAAC,CAAC,C1DmGS,GAAG,C0D9F9B,AATH,AAMI,iBANa,CAGb,gBAAgB,CAGd,UAAU,AAAC,CACX,mBAAmB,CAAE,CAAC,CACvB,ArC7IL,AAGE,wBAHsB,AAGd,CACN,KAAK,CtBqGC,OAAwD,CsBpG9D,gBAAgB,CtBoGV,OAAwD,CsBtF/D,AAnBH,AhBgBE,wBgBhBsB,AAOnB,uBAAuB,ChBSxB,KAAK,CgBhBT,wBAAwB,AAOnB,uBAAuB,ChBUxB,KAAK,AAAC,CgBRF,KAAK,CtBgGH,OAAwD,CsB/F1D,gBAAgB,CtB+Fd,OAAwD,CMtF/D,AgBnBH,AAaM,wBAbkB,AAOnB,uBAAuB,AAMrB,OAAO,AAAC,CACP,KAAK,CxBRL,IAAI,CwBSJ,gBAAgB,CtB0Fd,OAAwD,CsBzF1D,YAAY,CtByFV,OAAwD,CsBxF3D,AAjBP,AAGE,0BAHwB,AAGhB,CACN,KAAK,CtBqGC,OAAwD,CsBpG9D,gBAAgB,CtBoGV,OAAwD,CsBtF/D,AAnBH,AhBgBE,0BgBhBwB,AAOrB,uBAAuB,ChBSxB,KAAK,CgBhBT,0BAA0B,AAOrB,uBAAuB,ChBUxB,KAAK,AAAC,CgBRF,KAAK,CtBgGH,OAAwD,CsB/F1D,gBAAgB,CtB+Fd,OAAwD,CMtF/D,AgBnBH,AAaM,0BAboB,AAOrB,uBAAuB,AAMrB,OAAO,AAAC,CACP,KAAK,CxBRL,IAAI,CwBSJ,gBAAgB,CtB0Fd,OAAwD,CsBzF1D,YAAY,CtByFV,OAAwD,CsBxF3D,AAjBP,AAGE,wBAHsB,AAGd,CACN,KAAK,CtBqGC,OAAwD,CsBpG9D,gBAAgB,CtBoGV,OAAwD,CsBtF/D,AAnBH,AhBgBE,wBgBhBsB,AAOnB,uBAAuB,ChBSxB,KAAK,CgBhBT,wBAAwB,AAOnB,uBAAuB,ChBUxB,KAAK,AAAC,CgBRF,KAAK,CtBgGH,OAAwD,CsB/F1D,gBAAgB,CtB+Fd,OAAwD,CMtF/D,AgBnBH,AAaM,wBAbkB,AAOnB,uBAAuB,AAMrB,OAAO,AAAC,CACP,KAAK,CxBRL,IAAI,CwBSJ,gBAAgB,CtB0Fd,OAAwD,CsBzF1D,YAAY,CtByFV,OAAwD,CsBxF3D,AAjBP,AAGE,qBAHmB,AAGX,CACN,KAAK,CtBqGC,OAAwD,CsBpG9D,gBAAgB,CtBoGV,OAAwD,CsBtF/D,AAnBH,AhBgBE,qBgBhBmB,AAOhB,uBAAuB,ChBSxB,KAAK,CgBhBT,qBAAqB,AAOhB,uBAAuB,ChBUxB,KAAK,AAAC,CgBRF,KAAK,CtBgGH,OAAwD,CsB/F1D,gBAAgB,CtB+Fd,OAAwD,CMtF/D,AgBnBH,AAaM,qBAbe,AAOhB,uBAAuB,AAMrB,OAAO,AAAC,CACP,KAAK,CxBRL,IAAI,CwBSJ,gBAAgB,CtB0Fd,OAAwD,CsBzF1D,YAAY,CtByFV,OAAwD,CsBxF3D,AAjBP,AAGE,wBAHsB,AAGd,CACN,KAAK,CtBqGC,OAAwD,CsBpG9D,gBAAgB,CtBoGV,OAAwD,CsBtF/D,AAnBH,AhBgBE,wBgBhBsB,AAOnB,uBAAuB,ChBSxB,KAAK,CgBhBT,wBAAwB,AAOnB,uBAAuB,ChBUxB,KAAK,AAAC,CgBRF,KAAK,CtBgGH,OAAwD,CsB/F1D,gBAAgB,CtB+Fd,OAAwD,CMtF/D,AgBnBH,AAaM,wBAbkB,AAOnB,uBAAuB,AAMrB,OAAO,AAAC,CACP,KAAK,CxBRL,IAAI,CwBSJ,gBAAgB,CtB0Fd,OAAwD,CsBzF1D,YAAY,CtByFV,OAAwD,CsBxF3D,AAjBP,AAGE,uBAHqB,AAGb,CACN,KAAK,CtBqGC,OAAwD,CsBpG9D,gBAAgB,CtBoGV,OAAwD,CsBtF/D,AAnBH,AhBgBE,uBgBhBqB,AAOlB,uBAAuB,ChBSxB,KAAK,CgBhBT,uBAAuB,AAOlB,uBAAuB,ChBUxB,KAAK,AAAC,CgBRF,KAAK,CtBgGH,OAAwD,CsB/F1D,gBAAgB,CtB+Fd,OAAwD,CMtF/D,AgBnBH,AAaM,uBAbiB,AAOlB,uBAAuB,AAMrB,OAAO,AAAC,CACP,KAAK,CxBRL,IAAI,CwBSJ,gBAAgB,CtB0Fd,OAAwD,CsBzF1D,YAAY,CtByFV,OAAwD,CsBxF3D,AAjBP,AAGE,sBAHoB,AAGZ,CACN,KAAK,CtBqGC,OAAwD,CsBpG9D,gBAAgB,CtBoGV,OAAwD,CsBtF/D,AAnBH,AhBgBE,sBgBhBoB,AAOjB,uBAAuB,ChBSxB,KAAK,CgBhBT,sBAAsB,AAOjB,uBAAuB,ChBUxB,KAAK,AAAC,CgBRF,KAAK,CtBgGH,OAAwD,CsB/F1D,gBAAgB,CtB+Fd,OAAwD,CMtF/D,AgBnBH,AAaM,sBAbgB,AAOjB,uBAAuB,AAMrB,OAAO,AAAC,CACP,KAAK,CxBRL,IAAI,CwBSJ,gBAAgB,CtB0Fd,OAAwD,CsBzF1D,YAAY,CtByFV,OAAwD,CsBxF3D,AAjBP,AAGE,qBAHmB,AAGX,CACN,KAAK,CtBqGC,OAAwD,CsBpG9D,gBAAgB,CtBoGV,OAAwD,CsBtF/D,AAnBH,AhBgBE,qBgBhBmB,AAOhB,uBAAuB,ChBSxB,KAAK,CgBhBT,qBAAqB,AAOhB,uBAAuB,ChBUxB,KAAK,AAAC,CgBRF,KAAK,CtBgGH,OAAwD,CsB/F1D,gBAAgB,CtB+Fd,OAAwD,CMtF/D,AgBnBH,AAaM,qBAbe,AAOhB,uBAAuB,AAMrB,OAAO,AAAC,CACP,KAAK,CxBRL,IAAI,CwBSJ,gBAAgB,CtB0Fd,OAAwD,CsBzF1D,YAAY,CtByFV,OAAwD,CsBxF3D,AsCjBP,AAAA,MAAM,AAAC,CACL,KAAK,CAAE,KAAK,CzD8HR,SAAS,CAtCE,MAAC,CyDtFhB,WAAW,C3D6RiB,GAAG,C2D5R/B,WAAW,CAAE,CAAC,CACd,KAAK,C9DWC,IAAI,C8DVV,WAAW,C3DklCuB,CAAC,CAAC,GAAG,CAAC,CAAC,CHllCnC,IAAI,C8DCV,OAAO,CAAE,EAAE,CAaZ,AApBD,AtDYE,MsDZI,CtDYF,KAAK,AAAC,CsDDN,KAAK,C9DKD,IAAI,C8DJR,eAAe,CAAE,IAAI,CtDAD,AsDZxB,AtDgBE,MsDhBI,CAeH,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EtDC5B,KAAK,CsDhBT,MAAM,CAeH,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EtDE5B,KAAK,AAAC,CsDAJ,OAAO,CAAE,GAAG,CtDEf,AsDSH,AAAA,MAAM,AAAA,MAAM,AAAC,CACX,OAAO,CAAE,CAAC,CACV,gBAAgB,CAAE,WAAW,CAC7B,MAAM,CAAE,CAAC,CACV,AAKD,AAAA,CAAC,AAAA,MAAM,AAAA,SAAS,AAAC,CACf,cAAc,CAAE,IAAI,CACrB,ACvCD,AAAA,MAAM,AAAC,CAGL,UAAU,C5Dq4BwB,KAAK,C4Dp4BvC,SAAS,C5Do4ByB,KAAK,CEzwBnC,SAAS,CAtCE,OAAC,C0DlFhB,gBAAgB,C/DDV,sBAAI,C+DEV,eAAe,CAAE,WAAW,CAC5B,MAAM,C5Dq4B4B,GAAG,C4Dr4BT,KAAK,C5Ds4BC,eAAiB,C4Dr4BnD,UAAU,C5Du4BwB,CAAC,CAAC,OAAM,CAAC,OAAM,CHj4B3C,eAAI,C+DLV,OAAO,CAAE,CAAC,ClCOR,aAAa,C1B83BmB,MAAM,C4Dl3BzC,AA9BD,AAcE,MAdI,CAcH,GAAK,EAAC,UAAU,CAAE,CACjB,aAAa,C5D03BmB,MAAM,C4Dz3BvC,AAhBH,AAkBE,MAlBI,AAkBH,QAAQ,AAAC,CACR,OAAO,CAAE,CAAC,CACX,AApBH,AAsBE,MAtBI,AAsBH,KAAK,AAAC,CACL,OAAO,CAAE,KAAK,CACd,OAAO,CAAE,CAAC,CACX,AAzBH,AA2BE,MA3BI,AA2BH,KAAK,AAAC,CACL,OAAO,CAAE,IAAI,CACd,AAGH,AAAA,aAAa,AAAC,CACZ,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,OAAO,C5Du2B2B,MAAM,CADN,MAAM,C4Dr2BxC,KAAK,C/DxBI,OAAO,C+DyBhB,gBAAgB,C/D/BV,sBAAI,C+DgCV,eAAe,CAAE,WAAW,CAC5B,aAAa,C5Du2BqB,GAAG,C4Dv2BF,KAAK,C5D82BN,gBAAkB,C0B13BlD,sBAAsB,C3BmHS,kBAAyD,C2BlHxF,uBAAuB,C3BkHQ,kBAAyD,C6DrG3F,AAED,AAAA,WAAW,AAAC,CACV,OAAO,C5D61B2B,MAAM,C4D51BzC,ACvCD,AAAA,WAAW,AAAC,CAEV,QAAQ,CAAE,MAAM,CAMjB,AARD,AAIE,WAJS,CAIT,MAAM,AAAC,CACL,UAAU,CAAE,MAAM,CAClB,UAAU,CAAE,IAAI,CACjB,AAIH,AAAA,MAAM,AAAC,CACL,QAAQ,CAAE,KAAK,CACf,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,CAAC,CACP,OAAO,C7D2pB2B,IAAI,C6D1pBtC,OAAO,CAAE,IAAI,CACb,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,QAAQ,CAAE,MAAM,CAGhB,OAAO,CAAE,CAAC,CAIX,AAGD,AAAA,aAAa,AAAC,CACZ,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,IAAI,CACX,MAAM,C7D24B4B,KAAK,C6Dz4BvC,cAAc,CAAE,IAAI,CAerB,AAZC,AAAA,MAAM,AAAA,KAAK,CARb,aAAa,AAQG,ChC3BV,UAAU,C7Bg8BoB,SAAS,CAAC,IAAG,CAAC,QAAQ,C6Dn6BtD,SAAS,C7Di6BuB,mBAAmB,C6Dh6BpD,AhC1BG,MAAM,iCgCuBV,CAAA,AAAA,MAAM,AAAA,KAAK,CARb,aAAa,AAQG,ChCtBR,UAAU,CAAE,IAAI,CgCyBrB,CAAA,AACD,AAAA,MAAM,AAAA,KAAK,CAZb,aAAa,AAYG,CACZ,SAAS,C7D+5BuB,IAAI,C6D95BrC,AAGD,AAAA,MAAM,AAAA,aAAa,CAjBrB,aAAa,AAiBW,CACpB,SAAS,C7D45BuB,WAAW,C6D35B5C,AAGH,AAAA,wBAAwB,AAAC,CACvB,OAAO,CAAE,IAAI,CACb,UAAU,C9DmFuB,iBAAyD,C8DpE3F,AAjBD,AAIE,wBAJsB,CAItB,cAAc,AAAC,CACb,UAAU,C9DgFqB,kBAAyD,C8D/ExF,QAAQ,CAAE,MAAM,CACjB,AAPH,AASE,wBATsB,CAStB,aAAa,CATf,wBAAwB,CAUtB,aAAa,AAAC,CACZ,WAAW,CAAE,CAAC,CACf,AAZH,AAcE,wBAdsB,CActB,WAAW,AAAC,CACV,UAAU,CAAE,IAAI,CACjB,AAGH,AAAA,sBAAsB,AAAC,CACrB,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,UAAU,C9D+DuB,iBAAyD,C8DvC3F,AA3BD,AAME,sBANoB,EAMjB,MAAM,AAAC,CACR,OAAO,CAAE,KAAK,CACd,MAAM,C9D0DyB,kBAAyD,C8DzDxF,MAAM,CAAE,WAAW,CACnB,OAAO,CAAE,EAAE,CACZ,AAXH,AAcE,sBAdoB,AAcnB,wBAAwB,AAAC,CACxB,cAAc,CAAE,MAAM,CACtB,eAAe,CAAE,MAAM,CACvB,MAAM,CAAE,IAAI,CASb,AA1BH,AAmBI,sBAnBkB,AAcnB,wBAAwB,CAKvB,cAAc,AAAC,CACb,UAAU,CAAE,IAAI,CACjB,AArBL,AAuBI,sBAvBkB,AAcnB,wBAAwB,EASpB,MAAM,AAAC,CACR,OAAO,CAAE,IAAI,CACd,AAKL,AAAA,cAAc,AAAC,CACb,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,MAAM,CACtB,KAAK,CAAE,IAAI,CAGX,cAAc,CAAE,IAAI,CACpB,gBAAgB,ChE5GV,IAAI,CgE6GV,eAAe,CAAE,WAAW,CAC5B,MAAM,C7DwHsB,GAAG,C6DxHK,KAAK,ChEpGnC,eAAI,C6BER,aAAa,C1B8Na,KAAK,C6DxHjC,OAAO,CAAE,CAAC,CACX,AAGD,AAAA,eAAe,AAAC,CACd,QAAQ,CAAE,KAAK,CACf,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,CAAC,CACP,OAAO,C7D+iB2B,IAAI,C6D9iBtC,KAAK,CAAE,KAAK,CACZ,MAAM,CAAE,KAAK,CACb,gBAAgB,ChEnHV,IAAI,CgEwHX,AAZD,AAUE,eAVa,AAUZ,KAAK,AAAC,CAAE,OAAO,CAAE,CAAC,CAAI,AAVzB,AAWE,eAXa,AAWZ,KAAK,AAAC,CAAE,OAAO,C7DyzBkB,EAAE,C6DzzBS,AAK/C,AAAA,aAAa,AAAC,CACZ,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,UAAU,CACvB,eAAe,CAAE,aAAa,CAC9B,OAAO,C7DqzB2B,IAAI,CACJ,IAAI,C6DrzBtC,aAAa,C7D2Fe,GAAG,C6D3FW,KAAK,ChEzItC,OAAO,C6BmBd,sBAAsB,C3BmHS,iBAAyD,C2BlHxF,uBAAuB,C3BkHQ,iBAAyD,C8DW3F,AAbD,AAQE,aARW,CAQX,MAAM,AAAC,CACL,OAAO,C7DgzByB,IAAI,CACJ,IAAI,C6D/yBpC,MAAM,C7D8yB0B,KAAI,CACJ,KAAI,CADJ,KAAI,C6D9yBqD,IAAI,CAC9F,AAIH,AAAA,YAAY,AAAC,CACX,aAAa,CAAE,CAAC,CAChB,WAAW,C7DsIiB,GAAG,C6DrIhC,AAID,AAAA,WAAW,AAAC,CACV,QAAQ,CAAE,QAAQ,CAGlB,IAAI,CAAE,QAAQ,CACd,OAAO,C7DowB2B,IAAI,C6DnwBvC,AAGD,AAAA,aAAa,AAAC,CACZ,OAAO,CAAE,IAAI,CACb,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,MAAM,CACnB,eAAe,CAAE,QAAQ,CACzB,OAAO,CAAE,MAAuD,CAChE,UAAU,C7D0DkB,GAAG,C6D1DQ,KAAK,ChE1KnC,OAAO,C6BiCd,0BAA0B,C3BqGK,iBAAyD,C2BpGxF,yBAAyB,C3BoGM,iBAAyD,C8D6C3F,AAfD,AAYE,aAZW,CAYT,CAAC,AAAC,CACF,MAAM,CAAE,MAAgC,CACzC,AAIH,AAAA,wBAAwB,AAAC,CACvB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,OAAO,CACZ,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,QAAQ,CAAE,MAAM,CACjB,AzDxIG,MAAM,mByD6IR,CAAA,AAAA,aAAa,AAAC,CACZ,SAAS,C7DiwBuB,KAAK,C6DhwBrC,MAAM,C7DuuB0B,OAAO,C6DvuBF,IAAI,CAC1C,AAED,AAAA,wBAAwB,AAAC,CACvB,UAAU,C9DjEqB,mBAAyD,C8DsEzF,AAND,AAGE,wBAHsB,CAGtB,cAAc,AAAC,CACb,UAAU,C9DpEmB,oBAAyD,C8DqEvF,AAGH,AAAA,sBAAsB,AAAC,CACrB,UAAU,C9DzEqB,mBAAyD,C8D+EzF,AAPD,AAGE,sBAHoB,EAGjB,MAAM,AAAC,CACR,MAAM,C9D5EuB,oBAAyD,C8D6EtF,MAAM,CAAE,WAAW,CACpB,AAOH,AAAA,SAAS,AAAC,CAAE,SAAS,C7DyuBa,KAAK,C6DzuBH,CAvBnC,AzDhJC,MAAM,mByD2KR,CAAA,AAAA,SAAS,CACT,SAAS,AAAC,CACR,SAAS,C7DiuBuB,KAAK,C6DhuBtC,CAAA,AzD9KC,MAAM,oByDkLR,CAAA,AAAA,SAAS,AAAC,CAAE,SAAS,C7D2tBa,MAAM,C6D3tBJ,CAAD,AC7OrC,AAAA,QAAQ,AAAC,CACP,QAAQ,CAAE,QAAQ,CAClB,OAAO,C9D+qB2B,IAAI,C8D9qBtC,OAAO,CAAE,KAAK,CACd,MAAM,C9Du1B4B,CAAC,CW31BnC,WAAW,CdsCY,QAAQ,CAAE,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,gBAAgB,CAAE,KAAK,CAAE,UAAU,CAAE,mBAAmB,CAAE,gBAAgB,CAAE,iBAAiB,CAAE,kBAAkB,CcpCzM,UAAU,CAAE,MAAM,CAClB,WAAW,CX2RiB,GAAG,CW1R/B,WAAW,CX+RiB,GAAG,CW9R/B,UAAU,CAAE,IAAI,CAChB,UAAU,CAAE,KAAK,CACjB,eAAe,CAAE,IAAI,CACrB,WAAW,CAAE,IAAI,CACjB,cAAc,CAAE,IAAI,CACpB,cAAc,CAAE,MAAM,CACtB,UAAU,CAAE,MAAM,CAClB,YAAY,CAAE,MAAM,CACpB,WAAW,CAAE,MAAM,CACnB,UAAU,CAAE,IAAI,CTgHZ,SAAS,CAtCE,OAAC,C4D9EhB,SAAS,CAAE,UAAU,CACrB,OAAO,CAAE,CAAC,CAiBX,AA5BD,AAaE,QAbM,AAaL,KAAK,AAAC,CAAE,OAAO,C9D20BkB,EAAE,C8D30BE,AAbxC,AAeE,QAfM,CAeN,MAAM,AAAC,CACL,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,KAAK,C9D20B2B,KAAK,C8D10BrC,MAAM,C9D20B0B,KAAK,C8Dn0BtC,AA3BH,AAqBI,QArBI,CAeN,MAAM,EAMD,MAAM,AAAC,CACR,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,EAAE,CACX,YAAY,CAAE,WAAW,CACzB,YAAY,CAAE,KAAK,CACpB,AAIL,AAAA,eAAe,CA4Df,gBAAgB,CACb,AAAA,WAAC,EAAa,KAAK,AAAlB,CA7DY,CACd,OAAO,C9D+zB2B,KAAK,C8D/zBR,CAAC,CAWjC,AAZD,AAGE,eAHa,CAGb,MAAM,CAyDR,gBAAgB,CACb,AAAA,WAAC,EAAa,KAAK,AAAlB,EA1DF,MAAM,AAAC,CACL,MAAM,CAAE,CAAC,CAOV,AAXH,AAMI,eANW,CAGb,MAAM,EAGD,MAAM,CAsDb,gBAAgB,CACb,AAAA,WAAC,EAAa,KAAK,AAAlB,EA1DF,MAAM,EAGD,MAAM,AAAC,CACR,GAAG,CAAE,CAAC,CACN,YAAY,C9DwzBkB,KAAK,C8DxzBC,KAA0B,CAAC,CAAC,CAChE,gBAAgB,CjExBd,IAAI,CiEyBP,AAIL,AAAA,iBAAiB,CA8CjB,gBAAgB,CAIb,AAAA,WAAC,EAAa,OAAO,AAApB,CAlDc,CAChB,OAAO,CAAE,CAAC,C9DizBwB,KAAK,C8DpyBxC,AAdD,AAGE,iBAHe,CAGf,MAAM,CA2CR,gBAAgB,CAIb,AAAA,WAAC,EAAa,OAAO,AAApB,EA/CF,MAAM,AAAC,CACL,IAAI,CAAE,CAAC,CACP,KAAK,C9D6yB2B,KAAK,C8D5yBrC,MAAM,C9D2yB0B,KAAK,C8DpyBtC,AAbH,AAQI,iBARa,CAGf,MAAM,EAKD,MAAM,CAsCb,gBAAgB,CAIb,AAAA,WAAC,EAAa,OAAO,AAApB,EA/CF,MAAM,EAKD,MAAM,AAAC,CACR,KAAK,CAAE,CAAC,CACR,YAAY,CAAE,KAA0B,C9DwyBV,KAAK,C8DxyB4B,KAA0B,CAAC,CAAC,CAC3F,kBAAkB,CjExChB,IAAI,CiEyCP,AAIL,AAAA,kBAAkB,CA8BlB,gBAAgB,CAOb,AAAA,WAAC,EAAa,QAAQ,AAArB,CArCe,CACjB,OAAO,C9DiyB2B,KAAK,C8DjyBR,CAAC,CAWjC,AAZD,AAGE,kBAHgB,CAGhB,MAAM,CA2BR,gBAAgB,CAOb,AAAA,WAAC,EAAa,QAAQ,AAArB,EAlCF,MAAM,AAAC,CACL,GAAG,CAAE,CAAC,CAOP,AAXH,AAMI,kBANc,CAGhB,MAAM,EAGD,MAAM,CAwBb,gBAAgB,CAOb,AAAA,WAAC,EAAa,QAAQ,AAArB,EAlCF,MAAM,EAGD,MAAM,AAAC,CACR,MAAM,CAAE,CAAC,CACT,YAAY,CAAE,CAAC,CAAC,KAA0B,C9D0xBZ,KAAK,C8DzxBnC,mBAAmB,CjEtDjB,IAAI,CiEuDP,AAIL,AAAA,gBAAgB,CAgBhB,gBAAgB,CAUb,AAAA,WAAC,EAAa,MAAM,AAAnB,CA1Ba,CACf,OAAO,CAAE,CAAC,C9DmxBwB,KAAK,C8DtwBxC,AAdD,AAGE,gBAHc,CAGd,MAAM,CAaR,gBAAgB,CAUb,AAAA,WAAC,EAAa,MAAM,AAAnB,EAvBF,MAAM,AAAC,CACL,KAAK,CAAE,CAAC,CACR,KAAK,C9D+wB2B,KAAK,C8D9wBrC,MAAM,C9D6wB0B,KAAK,C8DtwBtC,AAbH,AAQI,gBARY,CAGd,MAAM,EAKD,MAAM,CAQb,gBAAgB,CAUb,AAAA,WAAC,EAAa,MAAM,AAAnB,EAvBF,MAAM,EAKD,MAAM,AAAC,CACR,IAAI,CAAE,CAAC,CACP,YAAY,CAAE,KAA0B,CAAC,CAAC,CAAC,KAA0B,C9D0wBvC,KAAK,C8DzwBnC,iBAAiB,CjEtEf,IAAI,CiEuEP,AAoBL,AAAA,cAAc,AAAC,CACb,SAAS,C9DyuByB,KAAK,C8DxuBvC,OAAO,C9D6uB2B,MAAM,CACN,KAAK,C8D7uBvC,KAAK,CjExGC,IAAI,CiEyGV,UAAU,CAAE,MAAM,CAClB,gBAAgB,CjEhGV,IAAI,C6BER,aAAa,C7BiCD,MAAO,CiE+DtB,AClHD,AAAA,QAAQ,AAAC,CACP,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,CAAC,CACP,OAAO,C/D6qB2B,IAAI,C+D5qBtC,OAAO,CAAE,KAAK,CACd,SAAS,C/Dy2ByB,KAAK,CW92BvC,WAAW,CdsCY,QAAQ,CAAE,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,gBAAgB,CAAE,KAAK,CAAE,UAAU,CAAE,mBAAmB,CAAE,gBAAgB,CAAE,iBAAiB,CAAE,kBAAkB,CcpCzM,UAAU,CAAE,MAAM,CAClB,WAAW,CX2RiB,GAAG,CW1R/B,WAAW,CX+RiB,GAAG,CW9R/B,UAAU,CAAE,IAAI,CAChB,UAAU,CAAE,KAAK,CACjB,eAAe,CAAE,IAAI,CACrB,WAAW,CAAE,IAAI,CACjB,cAAc,CAAE,IAAI,CACpB,cAAc,CAAE,MAAM,CACtB,UAAU,CAAE,MAAM,CAClB,YAAY,CAAE,MAAM,CACpB,WAAW,CAAE,MAAM,CACnB,UAAU,CAAE,IAAI,CTgHZ,SAAS,CAtCE,OAAC,C6D7EhB,SAAS,CAAE,UAAU,CACrB,gBAAgB,ClEPV,IAAI,CkEQV,eAAe,CAAE,WAAW,CAC5B,MAAM,C/D6NsB,GAAG,C+D7ND,KAAK,ClEC7B,eAAI,C6BER,aAAa,C1B8Na,KAAK,C+D7MlC,AAnCD,AAmBE,QAnBM,CAmBN,MAAM,AAAC,CACL,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,KAAK,C/Dy2B2B,IAAI,C+Dx2BpC,MAAM,C/Dy2B0B,KAAK,C+Dx2BrC,MAAM,CAAE,CAAC,C/DwNiB,KAAK,C+D9MhC,AAlCH,AA0BI,QA1BI,CAmBN,MAAM,EAOD,MAAM,CA1Bb,QAAQ,CAmBN,MAAM,EAQD,KAAK,AAAC,CACP,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,OAAO,CAAE,EAAE,CACX,YAAY,CAAE,WAAW,CACzB,YAAY,CAAE,KAAK,CACpB,AAIL,AAAA,eAAe,CAkGf,gBAAgB,CACb,AAAA,WAAC,EAAa,KAAK,AAAlB,CAnGY,CACd,aAAa,C/D01BqB,KAAK,C+Dz0BxC,AAlBD,AAGE,eAHa,CAGX,MAAM,CA+FV,gBAAgB,CACb,AAAA,WAAC,EAAa,KAAK,AAAlB,EAhGA,MAAM,AAAC,CACP,MAAM,ChEqGyB,kBAAyD,CgExFzF,AAjBH,AAMI,eANW,CAGX,MAAM,EAGH,MAAM,CA4Fb,gBAAgB,CACb,AAAA,WAAC,EAAa,KAAK,AAAlB,EAhGA,MAAM,EAGH,MAAM,AAAC,CACR,MAAM,CAAE,CAAC,CACT,YAAY,C/Dm1BkB,KAAK,C+Dn1BC,KAA0B,CAAC,CAAC,CAChE,gBAAgB,ClE9Bd,gBAAI,CkE+BP,AAVL,AAYI,eAZW,CAGX,MAAM,EASH,KAAK,CAsFZ,gBAAgB,CACb,AAAA,WAAC,EAAa,KAAK,AAAlB,EAhGA,MAAM,EASH,KAAK,AAAC,CACP,MAAM,C/D0LkB,GAAG,C+DzL3B,YAAY,C/D60BkB,KAAK,C+D70BC,KAA0B,CAAC,CAAC,CAChE,gBAAgB,ClE9Cd,IAAI,CkE+CP,AAIL,AAAA,iBAAiB,CA8EjB,gBAAgB,CAIb,AAAA,WAAC,EAAa,OAAO,AAApB,CAlFc,CAChB,WAAW,C/Ds0BuB,KAAK,C+DlzBxC,AArBD,AAGE,iBAHe,CAGb,MAAM,CA2EV,gBAAgB,CAIb,AAAA,WAAC,EAAa,OAAO,AAApB,EA/EA,MAAM,AAAC,CACP,IAAI,ChEiF2B,kBAAyD,CgEhFxF,KAAK,C/Dk0B2B,KAAK,C+Dj0BrC,MAAM,C/Dg0B0B,IAAI,C+D/zBpC,MAAM,C/DgLoB,KAAK,C+DhLA,CAAC,CAajC,AApBH,AASI,iBATa,CAGb,MAAM,EAMH,MAAM,CAqEb,gBAAgB,CAIb,AAAA,WAAC,EAAa,OAAO,AAApB,EA/EA,MAAM,EAMH,MAAM,AAAC,CACR,IAAI,CAAE,CAAC,CACP,YAAY,CAAE,KAA0B,C/D4zBV,KAAK,C+D5zB4B,KAA0B,CAAC,CAAC,CAC3F,kBAAkB,ClErDhB,gBAAI,CkEsDP,AAbL,AAeI,iBAfa,CAGb,MAAM,EAYH,KAAK,CA+DZ,gBAAgB,CAIb,AAAA,WAAC,EAAa,OAAO,AAApB,EA/EA,MAAM,EAYH,KAAK,AAAC,CACP,IAAI,C/DmKoB,GAAG,C+DlK3B,YAAY,CAAE,KAA0B,C/DszBV,KAAK,C+DtzB4B,KAA0B,CAAC,CAAC,CAC3F,kBAAkB,ClErEhB,IAAI,CkEsEP,AAIL,AAAA,kBAAkB,CAuDlB,gBAAgB,CAOb,AAAA,WAAC,EAAa,QAAQ,AAArB,CA9De,CACjB,UAAU,C/D+yBwB,KAAK,C+DlxBxC,AA9BD,AAGE,kBAHgB,CAGd,MAAM,CAoDV,gBAAgB,CAOb,AAAA,WAAC,EAAa,QAAQ,AAArB,EA3DA,MAAM,AAAC,CACP,GAAG,ChE0D4B,kBAAyD,CgE7CzF,AAjBH,AAMI,kBANc,CAGd,MAAM,EAGH,MAAM,CAiDb,gBAAgB,CAOb,AAAA,WAAC,EAAa,QAAQ,AAArB,EA3DA,MAAM,EAGH,MAAM,AAAC,CACR,GAAG,CAAE,CAAC,CACN,YAAY,CAAE,CAAC,CAAC,KAA0B,C/DwyBZ,KAAK,C+DxyB8B,KAA0B,CAC3F,mBAAmB,ClEzEjB,gBAAI,CkE0EP,AAVL,AAYI,kBAZc,CAGd,MAAM,EASH,KAAK,CA2CZ,gBAAgB,CAOb,AAAA,WAAC,EAAa,QAAQ,AAArB,EA3DA,MAAM,EASH,KAAK,AAAC,CACP,GAAG,C/D+IqB,GAAG,C+D9I3B,YAAY,CAAE,CAAC,CAAC,KAA0B,C/DkyBZ,KAAK,C+DlyB8B,KAA0B,CAC3F,mBAAmB,ClEzFjB,IAAI,CkE0FP,AAhBL,AAoBE,kBApBgB,CAoBhB,eAAe,EAAE,MAAM,CAmCzB,gBAAgB,CAOb,AAAA,WAAC,EAAa,QAAQ,AAArB,EA1CF,eAAe,EAAE,MAAM,AAAC,CACtB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,IAAI,CAAE,GAAG,CACT,OAAO,CAAE,KAAK,CACd,KAAK,C/DsxB2B,IAAI,C+DrxBpC,WAAW,CAAE,MAAyB,CACtC,OAAO,CAAE,EAAE,CACX,aAAa,C/DgIa,GAAG,C+DhIQ,KAAK,ClEtGtC,OAAI,CkEuGT,AAGH,AAAA,gBAAgB,CAuBhB,gBAAgB,CAUb,AAAA,WAAC,EAAa,MAAM,AAAnB,CAjCa,CACf,YAAY,C/D+wBsB,KAAK,C+D3vBxC,AArBD,AAGE,gBAHc,CAGZ,MAAM,CAoBV,gBAAgB,CAUb,AAAA,WAAC,EAAa,MAAM,AAAnB,EA9BA,MAAM,AAAC,CACP,KAAK,ChE0B0B,kBAAyD,CgEzBxF,KAAK,C/D2wB2B,KAAK,C+D1wBrC,MAAM,C/DywB0B,IAAI,C+DxwBpC,MAAM,C/DyHoB,KAAK,C+DzHA,CAAC,CAajC,AApBH,AASI,gBATY,CAGZ,MAAM,EAMH,MAAM,CAcb,gBAAgB,CAUb,AAAA,WAAC,EAAa,MAAM,AAAnB,EA9BA,MAAM,EAMH,MAAM,AAAC,CACR,KAAK,CAAE,CAAC,CACR,YAAY,CAAE,KAA0B,CAAC,CAAC,CAAC,KAA0B,C/DqwBvC,KAAK,C+DpwBnC,iBAAiB,ClE5Gf,gBAAI,CkE6GP,AAbL,AAeI,gBAfY,CAGZ,MAAM,EAYH,KAAK,CAQZ,gBAAgB,CAUb,AAAA,WAAC,EAAa,MAAM,AAAnB,EA9BA,MAAM,EAYH,KAAK,AAAC,CACP,KAAK,C/D4GmB,GAAG,C+D3G3B,YAAY,CAAE,KAA0B,CAAC,CAAC,CAAC,KAA0B,C/D+vBvC,KAAK,C+D9vBnC,iBAAiB,ClE5Hf,IAAI,CkE6HP,AAqBL,AAAA,eAAe,AAAC,CACd,OAAO,C/D+tB2B,KAAK,CACL,MAAM,C+D/tBxC,aAAa,CAAE,CAAC,C7D3BZ,SAAS,CAtCE,IAAC,C6DoEhB,gBAAgB,ClEvJV,OAAI,CkEwJV,aAAa,C/D8Ee,GAAG,C+D9EM,KAAK,ClExJpC,OAAI,C6BqBR,sBAAsB,C3BmHS,iBAAyD,C2BlHxF,uBAAuB,C3BkHQ,iBAAyD,CgEsB3F,AAZD,AASE,eATa,CASX,KAAK,AAAC,CACN,OAAO,CAAE,IAAI,CACd,AAGH,AAAA,aAAa,AAAC,CACZ,OAAO,C/DitB2B,KAAK,CACL,MAAM,C+DjtBxC,KAAK,ClE5JI,OAAO,CkE6JjB,AC5JD,AAAA,SAAS,AAAC,CACR,QAAQ,CAAE,QAAQ,CACnB,AAED,AAAA,SAAS,AAAA,cAAc,AAAC,CACtB,YAAY,CAAE,KAAK,CACpB,AAED,AAAA,eAAe,AAAC,CACd,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,IAAI,CACX,QAAQ,CAAE,MAAM,CAEjB,AALD,AlCpBE,ekCoBa,ElCpBV,KAAK,AAAC,CACP,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,OAAO,CAAE,EAAE,CACZ,AkCuBH,AAAA,cAAc,AAAC,CACb,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,IAAI,CACb,KAAK,CAAE,IAAI,CACX,KAAK,CAAE,IAAI,CACX,YAAY,CAAE,KAAK,CACnB,mBAAmB,CAAE,MAAM,CnClBvB,UAAU,C7BqjCqB,SAAS,CADT,GAAG,CACqC,WAAW,CgEjiCvF,AnChBK,MAAM,iCmCQZ,CAAA,AAAA,cAAc,AAAC,CnCPP,UAAU,CAAE,IAAI,CmCevB,CAAA,AAED,AAAA,cAAc,AAAA,OAAO,CACrB,mBAAmB,CACnB,mBAAmB,AAAC,CAClB,OAAO,CAAE,KAAK,CACf,AAED,AAAA,mBAAmB,CAAA,GAAK,CAAA,mBAAmB,EAC3C,OAAO,AAAA,oBAAoB,AAAC,CAC1B,SAAS,CAAE,gBAAgB,CAC5B,AAED,AAAA,mBAAmB,CAAA,GAAK,CAAA,oBAAoB,EAC5C,OAAO,AAAA,mBAAmB,AAAC,CACzB,SAAS,CAAE,iBAAiB,CAC7B,AAOD,AACE,cADY,CACZ,cAAc,AAAC,CACb,OAAO,CAAE,CAAC,CACV,mBAAmB,CAAE,OAAO,CAC5B,SAAS,CAAE,IAAI,CAChB,AALH,AAOE,cAPY,CAOZ,cAAc,AAAA,OAAO,CAPvB,cAAc,CAQZ,mBAAmB,AAAA,mBAAmB,CARxC,cAAc,CASZ,mBAAmB,AAAA,oBAAoB,AAAC,CACtC,OAAO,CAAE,CAAC,CACV,OAAO,CAAE,CAAC,CACX,AAZH,AAcE,cAdY,CAcZ,OAAO,AAAA,mBAAmB,CAd5B,cAAc,CAeZ,OAAO,AAAA,oBAAoB,AAAC,CAC1B,OAAO,CAAE,CAAC,CACV,OAAO,CAAE,CAAC,CnC5DR,UAAU,CmC6DQ,OAAO,CAAC,EAAE,ChEu/BG,GAAG,CgEt/BrC,AnC1DG,MAAM,iCmCqDV,CAdF,AAcE,cAdY,CAcZ,OAAO,AAAA,mBAAmB,CAd5B,cAAc,CAeZ,OAAO,AAAA,oBAAoB,AAAC,CnCrDtB,UAAU,CAAE,IAAI,CmCyDrB,CAAA,AAQH,AAAA,sBAAsB,CACtB,sBAAsB,AAAC,CACrB,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,MAAM,CAAE,CAAC,CACT,OAAO,CAAE,CAAC,CAEV,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,eAAe,CAAE,MAAM,CACvB,KAAK,ChEg9B8B,GAAG,CgE/8BtC,KAAK,CnE3FC,IAAI,CmE4FV,UAAU,CAAE,MAAM,CAClB,OAAO,ChE88B4B,EAAE,C6BjiCjC,UAAU,C7BmiCqB,OAAO,CAAC,KAAI,CAAC,IAAI,CgEt8BrD,AnCzFK,MAAM,iCmCkEZ,CAAA,AAAA,sBAAsB,CACtB,sBAAsB,AAAC,CnClEf,UAAU,CAAE,IAAI,CmCwFvB,CAAA,AAvBD,A3DtEE,sB2DsEoB,C3DtElB,KAAK,C2DsET,sBAAsB,C3DrElB,KAAK,C2DsET,sBAAsB,C3DvElB,KAAK,C2DuET,sBAAsB,C3DtElB,KAAK,AAAC,C2DuFN,KAAK,CnElGD,IAAI,CmEmGR,eAAe,CAAE,IAAI,CACrB,OAAO,CAAE,CAAC,CACV,OAAO,ChEu8B0B,EAAE,CK/hCpC,A2D2FH,AAAA,sBAAsB,AAAC,CACrB,IAAI,CAAE,CAAC,CAIR,AACD,AAAA,sBAAsB,AAAC,CACrB,KAAK,CAAE,CAAC,CAIT,AAGD,AAAA,2BAA2B,CAC3B,2BAA2B,AAAC,CAC1B,OAAO,CAAE,YAAY,CACrB,KAAK,ChEg8B8B,IAAI,CgE/7BvC,MAAM,ChE+7B6B,IAAI,CgE97BvC,UAAU,CAAE,yBAAyB,CACtC,AACD,AAAA,2BAA2B,AAAC,CAC1B,gBAAgB,CjEvED,oMAAwH,CiEwExI,AACD,AAAA,2BAA2B,AAAC,CAC1B,gBAAgB,CjE1ED,qMAAwH,CiE2ExI,AAQD,AAAA,oBAAoB,AAAC,CACnB,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,CAAC,CACT,IAAI,CAAE,CAAC,CACP,OAAO,CAAE,EAAE,CACX,OAAO,CAAE,IAAI,CACb,eAAe,CAAE,MAAM,CACvB,YAAY,CAAE,CAAC,CAEf,YAAY,ChEs5BuB,GAAG,CgEr5BtC,WAAW,ChEq5BwB,GAAG,CgEp5BtC,UAAU,CAAE,IAAI,CAuBjB,AAnCD,AAcE,oBAdkB,CAclB,EAAE,AAAC,CACD,UAAU,CAAE,WAAW,CACvB,IAAI,CAAE,QAAQ,CACd,KAAK,ChEo5B4B,IAAI,CgEn5BrC,MAAM,ChEo5B2B,GAAG,CgEn5BpC,YAAY,ChEq5BqB,GAAG,CgEp5BpC,WAAW,ChEo5BsB,GAAG,CgEn5BpC,WAAW,CAAE,MAAM,CACnB,MAAM,CAAE,OAAO,CACf,gBAAgB,CnEjKZ,IAAI,CmEkKR,eAAe,CAAE,WAAW,CAE5B,UAAU,ChE64BuB,IAAI,CgE74BW,KAAK,CAAC,WAAW,CACjE,aAAa,ChE44BoB,IAAI,CgE54Bc,KAAK,CAAC,WAAW,CACpE,OAAO,CAAE,EAAE,CnC5JT,UAAU,C7B0iCqB,OAAO,CAAC,IAAG,CAAC,IAAI,CgE54BlD,AnC1JG,MAAM,iCmC0IV,CAdF,AAcE,oBAdkB,CAclB,EAAE,AAAC,CnCzIG,UAAU,CAAE,IAAI,CmCyJrB,CAAA,AA9BH,AAgCE,oBAhCkB,CAgClB,OAAO,AAAC,CACN,OAAO,CAAE,CAAC,CACX,AAQH,AAAA,iBAAiB,AAAC,CAChB,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,GAAoC,CAC3C,MAAM,CAAE,IAAI,CACZ,IAAI,CAAE,GAAoC,CAC1C,OAAO,CAAE,EAAE,CACX,WAAW,CAAE,IAAI,CACjB,cAAc,CAAE,IAAI,CACpB,KAAK,CnE5LC,IAAI,CmE6LV,UAAU,CAAE,MAAM,CACnB,AChMD,UAAU,CAAV,cAAU,CACR,EAAE,CAAG,SAAS,CAAE,cAAc,EAGhC,AAAA,eAAe,AAAC,CACd,OAAO,CAAE,YAAY,CACrB,KAAK,CjEgkCiB,IAAI,CiE/jC1B,MAAM,CjE+jCgB,IAAI,CiE9jC1B,cAAc,CAAE,WAAW,CAC3B,MAAM,CjE+jCgB,KAAK,CiE/jCG,KAAK,CAAC,YAAY,CAChD,kBAAkB,CAAE,WAAW,CAE/B,aAAa,CAAE,GAAG,CAClB,SAAS,CAAE,mCAAmC,CAC/C,AAED,AAAA,kBAAkB,AAAC,CACjB,KAAK,CjEyjCmB,IAAI,CiExjC5B,MAAM,CjEwjCkB,IAAI,CiEvjC5B,YAAY,CjEyjCY,IAAI,CiExjC7B,AAMD,UAAU,CAAV,YAAU,CACR,EAAE,CACA,SAAS,CAAE,QAAQ,CAErB,GAAG,CACD,OAAO,CAAE,CAAC,CACV,SAAS,CAAE,IAAI,EAInB,AAAA,aAAa,AAAC,CACZ,OAAO,CAAE,YAAY,CACrB,KAAK,CjEgiCiB,IAAI,CiE/hC1B,MAAM,CjE+hCgB,IAAI,CiE9hC1B,cAAc,CAAE,WAAW,CAC3B,gBAAgB,CAAE,YAAY,CAE9B,aAAa,CAAE,GAAG,CAClB,OAAO,CAAE,CAAC,CACV,SAAS,CAAE,iCAAiC,CAC7C,AAED,AAAA,gBAAgB,AAAC,CACf,KAAK,CjEyhCmB,IAAI,CiExhC5B,MAAM,CjEwhCkB,IAAI,CiEvhC7B,AAGC,MAAM,iCACJ,CAAA,AAAA,eAAe,CACf,aAAa,AAAC,CACZ,kBAAkB,CAAE,IAAI,CACzB,CAAA,AE5DL,AAAA,eAAe,AAAI,CAAE,cAAc,CAAE,mBAAmB,CAAI,AAC5D,AAAA,UAAU,AAAS,CAAE,cAAc,CAAE,cAAc,CAAI,AACvD,AAAA,aAAa,AAAM,CAAE,cAAc,CAAE,iBAAiB,CAAI,AAC1D,AAAA,aAAa,AAAM,CAAE,cAAc,CAAE,iBAAiB,CAAI,AAC1D,AAAA,kBAAkB,AAAC,CAAE,cAAc,CAAE,sBAAsB,CAAI,AAC/D,AAAA,eAAe,AAAI,CAAE,cAAc,CAAE,mBAAmB,CAAI,A1CP5D,AAKE,WALS,AAKA,CACP,gBAAgB,C5BYb,OAAO,C4BZe,UAAU,CACpC,AAPH,ApBgBE,CoBhBD,AAAA,WAAW,CpBgBR,KAAK,CoBhBT,CAAC,AAAA,WAAW,CpBiBR,KAAK,CoBhBP,MAAM,AAAA,WAAW,CpBef,KAAK,CoBfP,MAAM,AAAA,WAAW,CpBgBf,KAAK,AAAC,CoBPJ,gBAAgB,C5BQf,OAAO,C4BR8B,UAAU,CpBSnD,AoBnBH,AAKE,aALW,AAKF,CACP,gBAAgB,C5BMT,OAAO,C4BNW,UAAU,CACpC,AAPH,ApBgBE,CoBhBD,AAAA,aAAa,CpBgBV,KAAK,CoBhBT,CAAC,AAAA,aAAa,CpBiBV,KAAK,CoBhBP,MAAM,AAAA,aAAa,CpBejB,KAAK,CoBfP,MAAM,AAAA,aAAa,CpBgBjB,KAAK,AAAC,CoBPJ,gBAAgB,C5BEX,OAAO,C4BF0B,UAAU,CpBSnD,AoBnBH,AAKE,WALS,AAKA,CACP,gBAAgB,C5BmBZ,OAAO,C4BnBc,UAAU,CACpC,AAPH,ApBgBE,CoBhBD,AAAA,WAAW,CpBgBR,KAAK,CoBhBT,CAAC,AAAA,WAAW,CpBiBR,KAAK,CoBhBP,MAAM,AAAA,WAAW,CpBef,KAAK,CoBfP,MAAM,AAAA,WAAW,CpBgBf,KAAK,AAAC,CoBPJ,gBAAgB,C5Bed,OAAO,C4Bf6B,UAAU,CpBSnD,AoBnBH,AAKE,QALM,AAKG,CACP,gBAAgB,C5BqBb,OAAO,C4BrBe,UAAU,CACpC,AAPH,ApBgBE,CoBhBD,AAAA,QAAQ,CpBgBL,KAAK,CoBhBT,CAAC,AAAA,QAAQ,CpBiBL,KAAK,CoBhBP,MAAM,AAAA,QAAQ,CpBeZ,KAAK,CoBfP,MAAM,AAAA,QAAQ,CpBgBZ,KAAK,AAAC,CoBPJ,gBAAgB,C5BiBf,OAAO,C4BjB8B,UAAU,CpBSnD,AoBnBH,AAKE,WALS,AAKA,CACP,gBAAgB,C5BkBX,OAAO,C4BlBa,UAAU,CACpC,AAPH,ApBgBE,CoBhBD,AAAA,WAAW,CpBgBR,KAAK,CoBhBT,CAAC,AAAA,WAAW,CpBiBR,KAAK,CoBhBP,MAAM,AAAA,WAAW,CpBef,KAAK,CoBfP,MAAM,AAAA,WAAW,CpBgBf,KAAK,AAAC,CoBPJ,gBAAgB,C5Bcb,OAAO,C4Bd4B,UAAU,CpBSnD,AoBnBH,AAKE,UALQ,AAKC,CACP,gBAAgB,C5BgBd,OAAO,C4BhBgB,UAAU,CACpC,AAPH,ApBgBE,CoBhBD,AAAA,UAAU,CpBgBP,KAAK,CoBhBT,CAAC,AAAA,UAAU,CpBiBP,KAAK,CoBhBP,MAAM,AAAA,UAAU,CpBed,KAAK,CoBfP,MAAM,AAAA,UAAU,CpBgBd,KAAK,AAAC,CoBPJ,gBAAgB,C5BYhB,OAAO,C4BZ+B,UAAU,CpBSnD,AoBnBH,AAKE,SALO,AAKE,CACP,gBAAgB,C5BCT,OAAO,C4BDW,UAAU,CACpC,AAPH,ApBgBE,CoBhBD,AAAA,SAAS,CpBgBN,KAAK,CoBhBT,CAAC,AAAA,SAAS,CpBiBN,KAAK,CoBhBP,MAAM,AAAA,SAAS,CpBeb,KAAK,CoBfP,MAAM,AAAA,SAAS,CpBgBb,KAAK,AAAC,CoBPJ,gBAAgB,C5BHX,OAAO,C4BG0B,UAAU,CpBSnD,AoBnBH,AAKE,QALM,AAKG,CACP,gBAAgB,C5BQT,OAAO,C4BRW,UAAU,CACpC,AAPH,ApBgBE,CoBhBD,AAAA,QAAQ,CpBgBL,KAAK,CoBhBT,CAAC,AAAA,QAAQ,CpBiBL,KAAK,CoBhBP,MAAM,AAAA,QAAQ,CpBeZ,KAAK,CoBfP,MAAM,AAAA,QAAQ,CpBgBZ,KAAK,AAAC,CoBPJ,gBAAgB,C5BIX,OAAO,C4BJ0B,UAAU,CpBSnD,A+DPH,AAAA,SAAS,AAAC,CACR,gBAAgB,CvEPV,IAAI,CuEOe,UAAU,CACpC,AAED,AAAA,eAAe,AAAC,CACd,gBAAgB,CAAE,sBAAsB,CACzC,ACZD,AAAA,OAAO,AAAS,CAAE,MAAM,CrEsOM,GAAG,CqEtOO,KAAK,CxEElC,OAAO,CwEF0C,UAAU,CAAI,AAC1E,AAAA,WAAW,AAAK,CAAE,UAAU,CrEqOE,GAAG,CqErOW,KAAK,CxECtC,OAAO,CwED8C,UAAU,CAAI,AAC9E,AAAA,aAAa,AAAG,CAAE,YAAY,CrEoOA,GAAG,CqEpOa,KAAK,CxEAxC,OAAO,CwEAgD,UAAU,CAAI,AAChF,AAAA,cAAc,AAAE,CAAE,aAAa,CrEmOD,GAAG,CqEnOc,KAAK,CxEDzC,OAAO,CwECiD,UAAU,CAAI,AACjF,AAAA,YAAY,AAAI,CAAE,WAAW,CrEkOC,GAAG,CqElOY,KAAK,CxEFvC,OAAO,CwEE+C,UAAU,CAAI,AAE/E,AAAA,SAAS,AAAQ,CAAE,MAAM,CAAE,YAAY,CAAI,AAC3C,AAAA,aAAa,AAAI,CAAE,UAAU,CAAE,YAAY,CAAI,AAC/C,AAAA,eAAe,AAAE,CAAE,YAAY,CAAE,YAAY,CAAI,AACjD,AAAA,gBAAgB,AAAC,CAAE,aAAa,CAAE,YAAY,CAAI,AAClD,AAAA,cAAc,AAAG,CAAE,WAAW,CAAE,YAAY,CAAI,AAhBhD,AAmBE,eAnBa,AAmBL,CACN,YAAY,CxEFT,OAAO,CwEEW,UAAU,CAChC,AArBH,AAmBE,iBAnBe,AAmBP,CACN,YAAY,CxERL,OAAO,CwEQO,UAAU,CAChC,AArBH,AAmBE,eAnBa,AAmBL,CACN,YAAY,CxEKR,OAAO,CwELU,UAAU,CAChC,AArBH,AAmBE,YAnBU,AAmBF,CACN,YAAY,CxEOT,OAAO,CwEPW,UAAU,CAChC,AArBH,AAmBE,eAnBa,AAmBL,CACN,YAAY,CxEIP,OAAO,CwEJS,UAAU,CAChC,AArBH,AAmBE,cAnBY,AAmBJ,CACN,YAAY,CxEEV,OAAO,CwEFY,UAAU,CAChC,AArBH,AAmBE,aAnBW,AAmBH,CACN,YAAY,CxEbL,OAAO,CwEaO,UAAU,CAChC,AArBH,AAmBE,YAnBU,AAmBF,CACN,YAAY,CxENL,OAAO,CwEMO,UAAU,CAChC,AAGH,AAAA,aAAa,AAAC,CACZ,YAAY,CxEnBN,IAAI,CwEmBW,UAAU,CAChC,AAMD,AAAA,WAAW,AAAC,CACV,aAAa,CrEgNe,KAAK,CqEhNA,UAAU,CAC5C,AAED,AAAA,QAAQ,AAAC,CACP,aAAa,CxEcC,MAAO,CwEdS,UAAU,CACzC,AAED,AAAA,YAAY,AAAC,CACX,sBAAsB,CxEUR,MAAO,CwEVkB,UAAU,CACjD,uBAAuB,CxEST,MAAO,CwETmB,UAAU,CACnD,AAED,AAAA,cAAc,AAAC,CACb,uBAAuB,CxEKT,MAAO,CwELmB,UAAU,CAClD,0BAA0B,CxEIZ,MAAO,CwEJsB,UAAU,CACtD,AAED,AAAA,eAAe,AAAC,CACd,0BAA0B,CxEAZ,MAAO,CwEAsB,UAAU,CACrD,yBAAyB,CxEDX,MAAO,CwECqB,UAAU,CACrD,AAED,AAAA,aAAa,AAAC,CACZ,sBAAsB,CxELR,MAAO,CwEKkB,UAAU,CACjD,yBAAyB,CxENX,MAAO,CwEMqB,UAAU,CACrD,AAED,AAAA,WAAW,AAAC,CACV,aAAa,CrEmLe,KAAK,CqEnLA,UAAU,CAC5C,AAED,AAAA,eAAe,AAAC,CACd,aAAa,CAAE,cAAc,CAC9B,AAED,AAAA,aAAa,AAAC,CACZ,aAAa,CrE8Ke,KAAK,CqE9KJ,UAAU,CACxC,AAED,AAAA,UAAU,AAAC,CACT,aAAa,CAAE,YAAY,CAC5B,AC1ED,AxCCE,SwCDO,ExCCJ,KAAK,AAAC,CACP,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,OAAO,CAAE,EAAE,CACZ,AyCLH,AAWM,OAXC,AAWa,CAAE,OAAO,CvEimClB,IAAI,CuEjmCuB,UAAU,CAAI,AAXpD,AAWM,SAXG,AAWW,CAAE,OAAO,CvEimCZ,MAAM,CuEjmCe,UAAU,CAAI,AAXpD,AAWM,eAXS,AAWK,CAAE,OAAO,CvEimCJ,YAAY,CuEjmCC,UAAU,CAAI,AAXpD,AAWM,QAXE,AAWY,CAAE,OAAO,CvEimCU,KAAK,CuEjmCN,UAAU,CAAI,AAXpD,AAWM,QAXE,AAWY,CAAE,OAAO,CvEimCiB,KAAK,CuEjmCb,UAAU,CAAI,AAXpD,AAWM,YAXM,AAWQ,CAAE,OAAO,CvEimCwB,SAAS,CuEjmCxB,UAAU,CAAI,AAXpD,AAWM,aAXO,AAWO,CAAE,OAAO,CvEimCmC,UAAU,CuEjmCpC,UAAU,CAAI,AAXpD,AAWM,OAXC,AAWa,CAAE,OAAO,CvEimC+C,IAAI,CuEjmC1C,UAAU,CAAI,AAXpD,AAWM,cAXQ,AAWM,CAAE,OAAO,CvEimCqD,WAAW,CuEjmCvD,UAAU,CAAI,AnEiDhD,MAAM,mBmEjDJ,CAXN,AAWM,UAXI,AAWU,CAAE,OAAO,CvEimClB,IAAI,CuEjmCuB,UAAU,CAAI,AAXpD,AAWM,YAXM,AAWQ,CAAE,OAAO,CvEimCZ,MAAM,CuEjmCe,UAAU,CAAI,AAXpD,AAWM,kBAXY,AAWE,CAAE,OAAO,CvEimCJ,YAAY,CuEjmCC,UAAU,CAAI,AAXpD,AAWM,WAXK,AAWS,CAAE,OAAO,CvEimCU,KAAK,CuEjmCN,UAAU,CAAI,AAXpD,AAWM,WAXK,AAWS,CAAE,OAAO,CvEimCiB,KAAK,CuEjmCb,UAAU,CAAI,AAXpD,AAWM,eAXS,AAWK,CAAE,OAAO,CvEimCwB,SAAS,CuEjmCxB,UAAU,CAAI,AAXpD,AAWM,gBAXU,AAWI,CAAE,OAAO,CvEimCmC,UAAU,CuEjmCpC,UAAU,CAAI,AAXpD,AAWM,UAXI,AAWU,CAAE,OAAO,CvEimC+C,IAAI,CuEjmC1C,UAAU,CAAI,AAXpD,AAWM,iBAXW,AAWG,CAAE,OAAO,CvEimCqD,WAAW,CuEjmCvD,UAAU,CAAI,CAAD,AnEiD/C,MAAM,mBmEjDJ,CAXN,AAWM,UAXI,AAWU,CAAE,OAAO,CvEimClB,IAAI,CuEjmCuB,UAAU,CAAI,AAXpD,AAWM,YAXM,AAWQ,CAAE,OAAO,CvEimCZ,MAAM,CuEjmCe,UAAU,CAAI,AAXpD,AAWM,kBAXY,AAWE,CAAE,OAAO,CvEimCJ,YAAY,CuEjmCC,UAAU,CAAI,AAXpD,AAWM,WAXK,AAWS,CAAE,OAAO,CvEimCU,KAAK,CuEjmCN,UAAU,CAAI,AAXpD,AAWM,WAXK,AAWS,CAAE,OAAO,CvEimCiB,KAAK,CuEjmCb,UAAU,CAAI,AAXpD,AAWM,eAXS,AAWK,CAAE,OAAO,CvEimCwB,SAAS,CuEjmCxB,UAAU,CAAI,AAXpD,AAWM,gBAXU,AAWI,CAAE,OAAO,CvEimCmC,UAAU,CuEjmCpC,UAAU,CAAI,AAXpD,AAWM,UAXI,AAWU,CAAE,OAAO,CvEimC+C,IAAI,CuEjmC1C,UAAU,CAAI,AAXpD,AAWM,iBAXW,AAWG,CAAE,OAAO,CvEimCqD,WAAW,CuEjmCvD,UAAU,CAAI,CAAD,AnEiD/C,MAAM,mBmEjDJ,CAXN,AAWM,UAXI,AAWU,CAAE,OAAO,CvEimClB,IAAI,CuEjmCuB,UAAU,CAAI,AAXpD,AAWM,YAXM,AAWQ,CAAE,OAAO,CvEimCZ,MAAM,CuEjmCe,UAAU,CAAI,AAXpD,AAWM,kBAXY,AAWE,CAAE,OAAO,CvEimCJ,YAAY,CuEjmCC,UAAU,CAAI,AAXpD,AAWM,WAXK,AAWS,CAAE,OAAO,CvEimCU,KAAK,CuEjmCN,UAAU,CAAI,AAXpD,AAWM,WAXK,AAWS,CAAE,OAAO,CvEimCiB,KAAK,CuEjmCb,UAAU,CAAI,AAXpD,AAWM,eAXS,AAWK,CAAE,OAAO,CvEimCwB,SAAS,CuEjmCxB,UAAU,CAAI,AAXpD,AAWM,gBAXU,AAWI,CAAE,OAAO,CvEimCmC,UAAU,CuEjmCpC,UAAU,CAAI,AAXpD,AAWM,UAXI,AAWU,CAAE,OAAO,CvEimC+C,IAAI,CuEjmC1C,UAAU,CAAI,AAXpD,AAWM,iBAXW,AAWG,CAAE,OAAO,CvEimCqD,WAAW,CuEjmCvD,UAAU,CAAI,CAAD,AnEiD/C,MAAM,oBmEjDJ,CAXN,AAWM,UAXI,AAWU,CAAE,OAAO,CvEimClB,IAAI,CuEjmCuB,UAAU,CAAI,AAXpD,AAWM,YAXM,AAWQ,CAAE,OAAO,CvEimCZ,MAAM,CuEjmCe,UAAU,CAAI,AAXpD,AAWM,kBAXY,AAWE,CAAE,OAAO,CvEimCJ,YAAY,CuEjmCC,UAAU,CAAI,AAXpD,AAWM,WAXK,AAWS,CAAE,OAAO,CvEimCU,KAAK,CuEjmCN,UAAU,CAAI,AAXpD,AAWM,WAXK,AAWS,CAAE,OAAO,CvEimCiB,KAAK,CuEjmCb,UAAU,CAAI,AAXpD,AAWM,eAXS,AAWK,CAAE,OAAO,CvEimCwB,SAAS,CuEjmCxB,UAAU,CAAI,AAXpD,AAWM,gBAXU,AAWI,CAAE,OAAO,CvEimCmC,UAAU,CuEjmCpC,UAAU,CAAI,AAXpD,AAWM,UAXI,AAWU,CAAE,OAAO,CvEimC+C,IAAI,CuEjmC1C,UAAU,CAAI,AAXpD,AAWM,iBAXW,AAWG,CAAE,OAAO,CvEimCqD,WAAW,CuEjmCvD,UAAU,CAAI,CAAD,AAUnD,MAAM,MAEF,CAvBJ,AAuBI,aAvBS,AAuBD,CAAE,OAAO,CvEqlCV,IAAI,CuErlCe,UAAU,CAAI,AAvB5C,AAuBI,eAvBW,AAuBH,CAAE,OAAO,CvEqlCJ,MAAM,CuErlCO,UAAU,CAAI,AAvB5C,AAuBI,qBAvBiB,AAuBT,CAAE,OAAO,CvEqlCI,YAAY,CuErlCP,UAAU,CAAI,AAvB5C,AAuBI,cAvBU,AAuBF,CAAE,OAAO,CvEqlCkB,KAAK,CuErlCd,UAAU,CAAI,AAvB5C,AAuBI,cAvBU,AAuBF,CAAE,OAAO,CvEqlCyB,KAAK,CuErlCrB,UAAU,CAAI,AAvB5C,AAuBI,kBAvBc,AAuBN,CAAE,OAAO,CvEqlCgC,SAAS,CuErlChC,UAAU,CAAI,AAvB5C,AAuBI,mBAvBe,AAuBP,CAAE,OAAO,CvEqlC2C,UAAU,CuErlC5C,UAAU,CAAI,AAvB5C,AAuBI,aAvBS,AAuBD,CAAE,OAAO,CvEqlCuD,IAAI,CuErlClD,UAAU,CAAI,AAvB5C,AAuBI,oBAvBgB,AAuBR,CAAE,OAAO,CvEqlC6D,WAAW,CuErlC/D,UAAU,CAAI,CAAD,ACrB3C,AAAA,iBAAiB,AAAC,CAChB,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,OAAO,CAAE,CAAC,CACV,QAAQ,CAAE,MAAM,CAoBjB,AAzBD,AAOE,iBAPe,EAOZ,MAAM,AAAC,CACR,OAAO,CAAE,KAAK,CACd,OAAO,CAAE,EAAE,CACZ,AAVH,AAYE,iBAZe,CAYf,sBAAsB,CAZxB,iBAAiB,CAaf,MAAM,CAbR,iBAAiB,CAcf,KAAK,CAdP,iBAAiB,CAef,MAAM,CAfR,iBAAiB,CAgBf,KAAK,AAAC,CACJ,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,MAAM,CAAE,CAAC,CACT,IAAI,CAAE,CAAC,CACP,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,MAAM,CAAE,CAAC,CACV,AA1BH,AAkCI,uBAlCmB,EAkChB,MAAM,AAAC,CACR,WAAW,CAAE,cAA+E,CAC7F,AApCL,AAkCI,uBAlCmB,EAkChB,MAAM,AAAC,CACR,WAAW,CAAE,MAA+E,CAC7F,AApCL,AAkCI,sBAlCkB,EAkCf,MAAM,AAAC,CACR,WAAW,CAAE,GAA+E,CAC7F,AApCL,AAkCI,sBAlCkB,EAkCf,MAAM,AAAC,CACR,WAAW,CAAE,IAA+E,CAC7F,ACpCL,AAUI,SAVK,AAUkB,CAAE,cAAc,CAAE,cAAc,CAAI,AAV/D,AAWI,YAXQ,AAWe,CAAE,cAAc,CAAE,iBAAiB,CAAI,AAXlE,AAYI,iBAZa,AAYU,CAAE,cAAc,CAAE,sBAAsB,CAAI,AAZvE,AAaI,oBAbgB,AAaO,CAAE,cAAc,CAAE,yBAAyB,CAAI,AAb1E,AAeI,UAfM,AAee,CAAE,SAAS,CAAE,eAAe,CAAI,AAfzD,AAgBI,YAhBQ,AAgBa,CAAE,SAAS,CAAE,iBAAiB,CAAI,AAhB3D,AAiBI,kBAjBc,AAiBO,CAAE,SAAS,CAAE,uBAAuB,CAAI,AAjBjE,AAkBI,UAlBM,AAkBe,CAAE,IAAI,CAAE,mBAAmB,CAAI,AAlBxD,AAmBI,YAnBQ,AAmBa,CAAE,SAAS,CAAE,YAAY,CAAI,AAnBtD,AAoBI,YApBQ,AAoBa,CAAE,SAAS,CAAE,YAAY,CAAI,AApBtD,AAqBI,cArBU,AAqBW,CAAE,WAAW,CAAE,YAAY,CAAI,AArBxD,AAsBI,cAtBU,AAsBW,CAAE,WAAW,CAAE,YAAY,CAAI,AAtBxD,AAwBI,sBAxBkB,AAwBF,CAAE,eAAe,CAAE,qBAAqB,CAAI,AAxBhE,AAyBI,oBAzBgB,AAyBA,CAAE,eAAe,CAAE,mBAAmB,CAAI,AAzB9D,AA0BI,uBA1BmB,AA0BH,CAAE,eAAe,CAAE,iBAAiB,CAAI,AA1B5D,AA2BI,wBA3BoB,AA2BJ,CAAE,eAAe,CAAE,wBAAwB,CAAI,AA3BnE,AA4BI,uBA5BmB,AA4BH,CAAE,eAAe,CAAE,uBAAuB,CAAI,AA5BlE,AA8BI,kBA9Bc,AA8BG,CAAE,WAAW,CAAE,qBAAqB,CAAI,AA9B7D,AA+BI,gBA/BY,AA+BK,CAAE,WAAW,CAAE,mBAAmB,CAAI,AA/B3D,AAgCI,mBAhCe,AAgCE,CAAE,WAAW,CAAE,iBAAiB,CAAI,AAhCzD,AAiCI,qBAjCiB,AAiCA,CAAE,WAAW,CAAE,mBAAmB,CAAI,AAjC3D,AAkCI,oBAlCgB,AAkCC,CAAE,WAAW,CAAE,kBAAkB,CAAI,AAlC1D,AAoCI,oBApCgB,AAoCA,CAAE,aAAa,CAAE,qBAAqB,CAAI,AApC9D,AAqCI,kBArCc,AAqCE,CAAE,aAAa,CAAE,mBAAmB,CAAI,AArC5D,AAsCI,qBAtCiB,AAsCD,CAAE,aAAa,CAAE,iBAAiB,CAAI,AAtC1D,AAuCI,sBAvCkB,AAuCF,CAAE,aAAa,CAAE,wBAAwB,CAAI,AAvCjE,AAwCI,qBAxCiB,AAwCD,CAAE,aAAa,CAAE,uBAAuB,CAAI,AAxChE,AAyCI,sBAzCkB,AAyCF,CAAE,aAAa,CAAE,kBAAkB,CAAI,AAzC3D,AA2CI,gBA3CY,AA2CK,CAAE,UAAU,CAAE,eAAe,CAAI,AA3CtD,AA4CI,iBA5Ca,AA4CI,CAAE,UAAU,CAAE,qBAAqB,CAAI,AA5C5D,AA6CI,eA7CW,AA6CM,CAAE,UAAU,CAAE,mBAAmB,CAAI,AA7C1D,AA8CI,kBA9Cc,AA8CG,CAAE,UAAU,CAAE,iBAAiB,CAAI,AA9CxD,AA+CI,oBA/CgB,AA+CC,CAAE,UAAU,CAAE,mBAAmB,CAAI,AA/C1D,AAgDI,mBAhDe,AAgDE,CAAE,UAAU,CAAE,kBAAkB,CAAI,ArEYrD,MAAM,mBqElDN,CAVJ,AAUI,YAVQ,AAUe,CAAE,cAAc,CAAE,cAAc,CAAI,AAV/D,AAWI,eAXW,AAWY,CAAE,cAAc,CAAE,iBAAiB,CAAI,AAXlE,AAYI,oBAZgB,AAYO,CAAE,cAAc,CAAE,sBAAsB,CAAI,AAZvE,AAaI,uBAbmB,AAaI,CAAE,cAAc,CAAE,yBAAyB,CAAI,AAb1E,AAeI,aAfS,AAeY,CAAE,SAAS,CAAE,eAAe,CAAI,AAfzD,AAgBI,eAhBW,AAgBU,CAAE,SAAS,CAAE,iBAAiB,CAAI,AAhB3D,AAiBI,qBAjBiB,AAiBI,CAAE,SAAS,CAAE,uBAAuB,CAAI,AAjBjE,AAkBI,aAlBS,AAkBY,CAAE,IAAI,CAAE,mBAAmB,CAAI,AAlBxD,AAmBI,eAnBW,AAmBU,CAAE,SAAS,CAAE,YAAY,CAAI,AAnBtD,AAoBI,eApBW,AAoBU,CAAE,SAAS,CAAE,YAAY,CAAI,AApBtD,AAqBI,iBArBa,AAqBQ,CAAE,WAAW,CAAE,YAAY,CAAI,AArBxD,AAsBI,iBAtBa,AAsBQ,CAAE,WAAW,CAAE,YAAY,CAAI,AAtBxD,AAwBI,yBAxBqB,AAwBL,CAAE,eAAe,CAAE,qBAAqB,CAAI,AAxBhE,AAyBI,uBAzBmB,AAyBH,CAAE,eAAe,CAAE,mBAAmB,CAAI,AAzB9D,AA0BI,0BA1BsB,AA0BN,CAAE,eAAe,CAAE,iBAAiB,CAAI,AA1B5D,AA2BI,2BA3BuB,AA2BP,CAAE,eAAe,CAAE,wBAAwB,CAAI,AA3BnE,AA4BI,0BA5BsB,AA4BN,CAAE,eAAe,CAAE,uBAAuB,CAAI,AA5BlE,AA8BI,qBA9BiB,AA8BA,CAAE,WAAW,CAAE,qBAAqB,CAAI,AA9B7D,AA+BI,mBA/Be,AA+BE,CAAE,WAAW,CAAE,mBAAmB,CAAI,AA/B3D,AAgCI,sBAhCkB,AAgCD,CAAE,WAAW,CAAE,iBAAiB,CAAI,AAhCzD,AAiCI,wBAjCoB,AAiCH,CAAE,WAAW,CAAE,mBAAmB,CAAI,AAjC3D,AAkCI,uBAlCmB,AAkCF,CAAE,WAAW,CAAE,kBAAkB,CAAI,AAlC1D,AAoCI,uBApCmB,AAoCH,CAAE,aAAa,CAAE,qBAAqB,CAAI,AApC9D,AAqCI,qBArCiB,AAqCD,CAAE,aAAa,CAAE,mBAAmB,CAAI,AArC5D,AAsCI,wBAtCoB,AAsCJ,CAAE,aAAa,CAAE,iBAAiB,CAAI,AAtC1D,AAuCI,yBAvCqB,AAuCL,CAAE,aAAa,CAAE,wBAAwB,CAAI,AAvCjE,AAwCI,wBAxCoB,AAwCJ,CAAE,aAAa,CAAE,uBAAuB,CAAI,AAxChE,AAyCI,yBAzCqB,AAyCL,CAAE,aAAa,CAAE,kBAAkB,CAAI,AAzC3D,AA2CI,mBA3Ce,AA2CE,CAAE,UAAU,CAAE,eAAe,CAAI,AA3CtD,AA4CI,oBA5CgB,AA4CC,CAAE,UAAU,CAAE,qBAAqB,CAAI,AA5C5D,AA6CI,kBA7Cc,AA6CG,CAAE,UAAU,CAAE,mBAAmB,CAAI,AA7C1D,AA8CI,qBA9CiB,AA8CA,CAAE,UAAU,CAAE,iBAAiB,CAAI,AA9CxD,AA+CI,uBA/CmB,AA+CF,CAAE,UAAU,CAAE,mBAAmB,CAAI,AA/C1D,AAgDI,sBAhDkB,AAgDD,CAAE,UAAU,CAAE,kBAAkB,CAAI,CAtCK,ArEkD1D,MAAM,mBqElDN,CAVJ,AAUI,YAVQ,AAUe,CAAE,cAAc,CAAE,cAAc,CAAI,AAV/D,AAWI,eAXW,AAWY,CAAE,cAAc,CAAE,iBAAiB,CAAI,AAXlE,AAYI,oBAZgB,AAYO,CAAE,cAAc,CAAE,sBAAsB,CAAI,AAZvE,AAaI,uBAbmB,AAaI,CAAE,cAAc,CAAE,yBAAyB,CAAI,AAb1E,AAeI,aAfS,AAeY,CAAE,SAAS,CAAE,eAAe,CAAI,AAfzD,AAgBI,eAhBW,AAgBU,CAAE,SAAS,CAAE,iBAAiB,CAAI,AAhB3D,AAiBI,qBAjBiB,AAiBI,CAAE,SAAS,CAAE,uBAAuB,CAAI,AAjBjE,AAkBI,aAlBS,AAkBY,CAAE,IAAI,CAAE,mBAAmB,CAAI,AAlBxD,AAmBI,eAnBW,AAmBU,CAAE,SAAS,CAAE,YAAY,CAAI,AAnBtD,AAoBI,eApBW,AAoBU,CAAE,SAAS,CAAE,YAAY,CAAI,AApBtD,AAqBI,iBArBa,AAqBQ,CAAE,WAAW,CAAE,YAAY,CAAI,AArBxD,AAsBI,iBAtBa,AAsBQ,CAAE,WAAW,CAAE,YAAY,CAAI,AAtBxD,AAwBI,yBAxBqB,AAwBL,CAAE,eAAe,CAAE,qBAAqB,CAAI,AAxBhE,AAyBI,uBAzBmB,AAyBH,CAAE,eAAe,CAAE,mBAAmB,CAAI,AAzB9D,AA0BI,0BA1BsB,AA0BN,CAAE,eAAe,CAAE,iBAAiB,CAAI,AA1B5D,AA2BI,2BA3BuB,AA2BP,CAAE,eAAe,CAAE,wBAAwB,CAAI,AA3BnE,AA4BI,0BA5BsB,AA4BN,CAAE,eAAe,CAAE,uBAAuB,CAAI,AA5BlE,AA8BI,qBA9BiB,AA8BA,CAAE,WAAW,CAAE,qBAAqB,CAAI,AA9B7D,AA+BI,mBA/Be,AA+BE,CAAE,WAAW,CAAE,mBAAmB,CAAI,AA/B3D,AAgCI,sBAhCkB,AAgCD,CAAE,WAAW,CAAE,iBAAiB,CAAI,AAhCzD,AAiCI,wBAjCoB,AAiCH,CAAE,WAAW,CAAE,mBAAmB,CAAI,AAjC3D,AAkCI,uBAlCmB,AAkCF,CAAE,WAAW,CAAE,kBAAkB,CAAI,AAlC1D,AAoCI,uBApCmB,AAoCH,CAAE,aAAa,CAAE,qBAAqB,CAAI,AApC9D,AAqCI,qBArCiB,AAqCD,CAAE,aAAa,CAAE,mBAAmB,CAAI,AArC5D,AAsCI,wBAtCoB,AAsCJ,CAAE,aAAa,CAAE,iBAAiB,CAAI,AAtC1D,AAuCI,yBAvCqB,AAuCL,CAAE,aAAa,CAAE,wBAAwB,CAAI,AAvCjE,AAwCI,wBAxCoB,AAwCJ,CAAE,aAAa,CAAE,uBAAuB,CAAI,AAxChE,AAyCI,yBAzCqB,AAyCL,CAAE,aAAa,CAAE,kBAAkB,CAAI,AAzC3D,AA2CI,mBA3Ce,AA2CE,CAAE,UAAU,CAAE,eAAe,CAAI,AA3CtD,AA4CI,oBA5CgB,AA4CC,CAAE,UAAU,CAAE,qBAAqB,CAAI,AA5C5D,AA6CI,kBA7Cc,AA6CG,CAAE,UAAU,CAAE,mBAAmB,CAAI,AA7C1D,AA8CI,qBA9CiB,AA8CA,CAAE,UAAU,CAAE,iBAAiB,CAAI,AA9CxD,AA+CI,uBA/CmB,AA+CF,CAAE,UAAU,CAAE,mBAAmB,CAAI,AA/C1D,AAgDI,sBAhDkB,AAgDD,CAAE,UAAU,CAAE,kBAAkB,CAAI,CAtCK,ArEkD1D,MAAM,mBqElDN,CAVJ,AAUI,YAVQ,AAUe,CAAE,cAAc,CAAE,cAAc,CAAI,AAV/D,AAWI,eAXW,AAWY,CAAE,cAAc,CAAE,iBAAiB,CAAI,AAXlE,AAYI,oBAZgB,AAYO,CAAE,cAAc,CAAE,sBAAsB,CAAI,AAZvE,AAaI,uBAbmB,AAaI,CAAE,cAAc,CAAE,yBAAyB,CAAI,AAb1E,AAeI,aAfS,AAeY,CAAE,SAAS,CAAE,eAAe,CAAI,AAfzD,AAgBI,eAhBW,AAgBU,CAAE,SAAS,CAAE,iBAAiB,CAAI,AAhB3D,AAiBI,qBAjBiB,AAiBI,CAAE,SAAS,CAAE,uBAAuB,CAAI,AAjBjE,AAkBI,aAlBS,AAkBY,CAAE,IAAI,CAAE,mBAAmB,CAAI,AAlBxD,AAmBI,eAnBW,AAmBU,CAAE,SAAS,CAAE,YAAY,CAAI,AAnBtD,AAoBI,eApBW,AAoBU,CAAE,SAAS,CAAE,YAAY,CAAI,AApBtD,AAqBI,iBArBa,AAqBQ,CAAE,WAAW,CAAE,YAAY,CAAI,AArBxD,AAsBI,iBAtBa,AAsBQ,CAAE,WAAW,CAAE,YAAY,CAAI,AAtBxD,AAwBI,yBAxBqB,AAwBL,CAAE,eAAe,CAAE,qBAAqB,CAAI,AAxBhE,AAyBI,uBAzBmB,AAyBH,CAAE,eAAe,CAAE,mBAAmB,CAAI,AAzB9D,AA0BI,0BA1BsB,AA0BN,CAAE,eAAe,CAAE,iBAAiB,CAAI,AA1B5D,AA2BI,2BA3BuB,AA2BP,CAAE,eAAe,CAAE,wBAAwB,CAAI,AA3BnE,AA4BI,0BA5BsB,AA4BN,CAAE,eAAe,CAAE,uBAAuB,CAAI,AA5BlE,AA8BI,qBA9BiB,AA8BA,CAAE,WAAW,CAAE,qBAAqB,CAAI,AA9B7D,AA+BI,mBA/Be,AA+BE,CAAE,WAAW,CAAE,mBAAmB,CAAI,AA/B3D,AAgCI,sBAhCkB,AAgCD,CAAE,WAAW,CAAE,iBAAiB,CAAI,AAhCzD,AAiCI,wBAjCoB,AAiCH,CAAE,WAAW,CAAE,mBAAmB,CAAI,AAjC3D,AAkCI,uBAlCmB,AAkCF,CAAE,WAAW,CAAE,kBAAkB,CAAI,AAlC1D,AAoCI,uBApCmB,AAoCH,CAAE,aAAa,CAAE,qBAAqB,CAAI,AApC9D,AAqCI,qBArCiB,AAqCD,CAAE,aAAa,CAAE,mBAAmB,CAAI,AArC5D,AAsCI,wBAtCoB,AAsCJ,CAAE,aAAa,CAAE,iBAAiB,CAAI,AAtC1D,AAuCI,yBAvCqB,AAuCL,CAAE,aAAa,CAAE,wBAAwB,CAAI,AAvCjE,AAwCI,wBAxCoB,AAwCJ,CAAE,aAAa,CAAE,uBAAuB,CAAI,AAxChE,AAyCI,yBAzCqB,AAyCL,CAAE,aAAa,CAAE,kBAAkB,CAAI,AAzC3D,AA2CI,mBA3Ce,AA2CE,CAAE,UAAU,CAAE,eAAe,CAAI,AA3CtD,AA4CI,oBA5CgB,AA4CC,CAAE,UAAU,CAAE,qBAAqB,CAAI,AA5C5D,AA6CI,kBA7Cc,AA6CG,CAAE,UAAU,CAAE,mBAAmB,CAAI,AA7C1D,AA8CI,qBA9CiB,AA8CA,CAAE,UAAU,CAAE,iBAAiB,CAAI,AA9CxD,AA+CI,uBA/CmB,AA+CF,CAAE,UAAU,CAAE,mBAAmB,CAAI,AA/C1D,AAgDI,sBAhDkB,AAgDD,CAAE,UAAU,CAAE,kBAAkB,CAAI,CAtCK,ArEkD1D,MAAM,oBqElDN,CAVJ,AAUI,YAVQ,AAUe,CAAE,cAAc,CAAE,cAAc,CAAI,AAV/D,AAWI,eAXW,AAWY,CAAE,cAAc,CAAE,iBAAiB,CAAI,AAXlE,AAYI,oBAZgB,AAYO,CAAE,cAAc,CAAE,sBAAsB,CAAI,AAZvE,AAaI,uBAbmB,AAaI,CAAE,cAAc,CAAE,yBAAyB,CAAI,AAb1E,AAeI,aAfS,AAeY,CAAE,SAAS,CAAE,eAAe,CAAI,AAfzD,AAgBI,eAhBW,AAgBU,CAAE,SAAS,CAAE,iBAAiB,CAAI,AAhB3D,AAiBI,qBAjBiB,AAiBI,CAAE,SAAS,CAAE,uBAAuB,CAAI,AAjBjE,AAkBI,aAlBS,AAkBY,CAAE,IAAI,CAAE,mBAAmB,CAAI,AAlBxD,AAmBI,eAnBW,AAmBU,CAAE,SAAS,CAAE,YAAY,CAAI,AAnBtD,AAoBI,eApBW,AAoBU,CAAE,SAAS,CAAE,YAAY,CAAI,AApBtD,AAqBI,iBArBa,AAqBQ,CAAE,WAAW,CAAE,YAAY,CAAI,AArBxD,AAsBI,iBAtBa,AAsBQ,CAAE,WAAW,CAAE,YAAY,CAAI,AAtBxD,AAwBI,yBAxBqB,AAwBL,CAAE,eAAe,CAAE,qBAAqB,CAAI,AAxBhE,AAyBI,uBAzBmB,AAyBH,CAAE,eAAe,CAAE,mBAAmB,CAAI,AAzB9D,AA0BI,0BA1BsB,AA0BN,CAAE,eAAe,CAAE,iBAAiB,CAAI,AA1B5D,AA2BI,2BA3BuB,AA2BP,CAAE,eAAe,CAAE,wBAAwB,CAAI,AA3BnE,AA4BI,0BA5BsB,AA4BN,CAAE,eAAe,CAAE,uBAAuB,CAAI,AA5BlE,AA8BI,qBA9BiB,AA8BA,CAAE,WAAW,CAAE,qBAAqB,CAAI,AA9B7D,AA+BI,mBA/Be,AA+BE,CAAE,WAAW,CAAE,mBAAmB,CAAI,AA/B3D,AAgCI,sBAhCkB,AAgCD,CAAE,WAAW,CAAE,iBAAiB,CAAI,AAhCzD,AAiCI,wBAjCoB,AAiCH,CAAE,WAAW,CAAE,mBAAmB,CAAI,AAjC3D,AAkCI,uBAlCmB,AAkCF,CAAE,WAAW,CAAE,kBAAkB,CAAI,AAlC1D,AAoCI,uBApCmB,AAoCH,CAAE,aAAa,CAAE,qBAAqB,CAAI,AApC9D,AAqCI,qBArCiB,AAqCD,CAAE,aAAa,CAAE,mBAAmB,CAAI,AArC5D,AAsCI,wBAtCoB,AAsCJ,CAAE,aAAa,CAAE,iBAAiB,CAAI,AAtC1D,AAuCI,yBAvCqB,AAuCL,CAAE,aAAa,CAAE,wBAAwB,CAAI,AAvCjE,AAwCI,wBAxCoB,AAwCJ,CAAE,aAAa,CAAE,uBAAuB,CAAI,AAxChE,AAyCI,yBAzCqB,AAyCL,CAAE,aAAa,CAAE,kBAAkB,CAAI,AAzC3D,AA2CI,mBA3Ce,AA2CE,CAAE,UAAU,CAAE,eAAe,CAAI,AA3CtD,AA4CI,oBA5CgB,AA4CC,CAAE,UAAU,CAAE,qBAAqB,CAAI,AA5C5D,AA6CI,kBA7Cc,AA6CG,CAAE,UAAU,CAAE,mBAAmB,CAAI,AA7C1D,AA8CI,qBA9CiB,AA8CA,CAAE,UAAU,CAAE,iBAAiB,CAAI,AA9CxD,AA+CI,uBA/CmB,AA+CF,CAAE,UAAU,CAAE,mBAAmB,CAAI,AA/C1D,AAgDI,sBAhDkB,AAgDD,CAAE,UAAU,CAAE,kBAAkB,CAAI,CAtCK,ACV9D,AAMI,WANO,AAMO,CAAE,KAAK,CAAE,eAAe,CAAI,AAN9C,AAOI,YAPQ,AAOM,CAAE,KAAK,CAAE,gBAAgB,CAAI,AAP/C,AAQI,WARO,AAQO,CAAE,KAAK,CAAE,eAAe,CAAI,AtEoD1C,MAAM,mBsEtDN,CANJ,AAMI,cANU,AAMI,CAAE,KAAK,CAAE,eAAe,CAAI,AAN9C,AAOI,eAPW,AAOG,CAAE,KAAK,CAAE,gBAAgB,CAAI,AAP/C,AAQI,cARU,AAQI,CAAE,KAAK,CAAE,eAAe,CAAI,CAFD,AtEsDzC,MAAM,mBsEtDN,CANJ,AAMI,cANU,AAMI,CAAE,KAAK,CAAE,eAAe,CAAI,AAN9C,AAOI,eAPW,AAOG,CAAE,KAAK,CAAE,gBAAgB,CAAI,AAP/C,AAQI,cARU,AAQI,CAAE,KAAK,CAAE,eAAe,CAAI,CAFD,AtEsDzC,MAAM,mBsEtDN,CANJ,AAMI,cANU,AAMI,CAAE,KAAK,CAAE,eAAe,CAAI,AAN9C,AAOI,eAPW,AAOG,CAAE,KAAK,CAAE,gBAAgB,CAAI,AAP/C,AAQI,cARU,AAQI,CAAE,KAAK,CAAE,eAAe,CAAI,CAFD,AtEsDzC,MAAM,oBsEtDN,CANJ,AAMI,cANU,AAMI,CAAE,KAAK,CAAE,eAAe,CAAI,AAN9C,AAOI,eAPW,AAOG,CAAE,KAAK,CAAE,gBAAgB,CAAI,AAP/C,AAQI,cARU,AAQI,CAAE,KAAK,CAAE,eAAe,CAAI,CAFD,ACN7C,AAGE,gBAHc,AAGN,CAAE,WAAW,C3E4mCR,GAAG,C2E5mCc,UAAU,CAAI,AAH9C,AAGE,iBAHe,AAGP,CAAE,WAAW,C3E4mCH,IAAI,C2E5mCQ,UAAU,CAAI,AAH9C,AAGE,iBAHe,AAGP,CAAE,WAAW,C3E4mCG,IAAI,C2E5mCE,UAAU,CAAI,ACH9C,AAGE,cAHY,AAGJ,CAAE,QAAQ,C5E0mCR,IAAI,C4E1mCa,UAAU,CAAI,AAH3C,AAGE,gBAHc,AAGN,CAAE,QAAQ,C5E0mCF,MAAM,C4E1mCK,UAAU,CAAI,ACH3C,AAIE,gBAJc,AAIH,CAAE,QAAQ,C7E0mCX,MAAM,C6E1mCiB,UAAU,CAAI,AAJjD,AAIE,kBAJgB,AAIL,CAAE,QAAQ,C7E0mCH,QAAQ,C6E1mCO,UAAU,CAAI,AAJjD,AAIE,kBAJgB,AAIL,CAAE,QAAQ,C7E0mCO,QAAQ,C6E1mCH,UAAU,CAAI,AAJjD,AAIE,eAJa,AAIF,CAAE,QAAQ,C7E0mCiB,KAAK,C6E1mCV,UAAU,CAAI,AAJjD,AAIE,gBAJc,AAIH,CAAE,QAAQ,C7E0mCwB,MAAM,C6E1mClB,UAAU,CAAI,AAKjD,AAAA,UAAU,AAAC,CACT,QAAQ,CAAE,KAAK,CACf,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,CAAC,CACR,IAAI,CAAE,CAAC,CACP,OAAO,C7EgqB2B,IAAI,C6E/pBvC,AAED,AAAA,aAAa,AAAC,CACZ,QAAQ,CAAE,KAAK,CACf,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,CAAC,CACT,IAAI,CAAE,CAAC,CACP,OAAO,C7EwpB2B,IAAI,C6EvpBvC,AAG6B,SAAC,EAAlB,QAAQ,EAAE,MAAM,EAD7B,AAAA,WAAW,AAAC,CAER,QAAQ,CAAE,MAAM,CAChB,GAAG,CAAE,CAAC,CACN,OAAO,C7EgpByB,IAAI,C6E9oBvC,CC3BD,AAAA,QAAQ,AAAC,CrEEP,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,GAAG,CACV,MAAM,CAAE,GAAG,CACX,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,IAAI,CACZ,QAAQ,CAAE,MAAM,CAChB,IAAI,CAAE,gBAAgB,CACtB,WAAW,CAAE,MAAM,CACnB,MAAM,CAAE,CAAC,CqERV,AAED,ArEgBE,kBqEhBgB,CrEgBd,MAAM,CqEhBV,kBAAkB,CrEiBd,KAAK,AAAC,CACN,QAAQ,CAAE,MAAM,CAChB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,QAAQ,CAAE,OAAO,CACjB,IAAI,CAAE,IAAI,CACV,WAAW,CAAE,MAAM,CACpB,AsE9BH,AAAA,UAAU,AAAC,CAAE,UAAU,ClF4CP,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CA/BzB,kBAAO,CkFbsB,UAAU,CAAI,AACtD,AAAA,OAAO,AAAC,CAAE,UAAU,ClF4CP,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAhCrB,mBAAO,CkFZgB,UAAU,CAAI,AAChD,AAAA,UAAU,AAAC,CAAE,UAAU,C/EmPO,CAAC,CAAC,IAAI,CAAC,IAAI,CHvOjC,iBAAI,CkFZ4B,UAAU,CAAI,AACtD,AAAA,YAAY,AAAC,CAAE,UAAU,CAAE,eAAe,CAAI,ACL9C,AAMI,KANC,AAMa,CAAE,KAAQ,ChFmJpB,GAAG,CgFnJgC,UAAU,CAAI,AANzD,AAMI,KANC,AAMa,CAAE,KAAQ,ChFoJpB,GAAG,CgFpJgC,UAAU,CAAI,AANzD,AAMI,KANC,AAMa,CAAE,KAAQ,ChFqJpB,GAAG,CgFrJgC,UAAU,CAAI,AANzD,AAMI,MANE,AAMY,CAAE,KAAQ,ChFsJnB,IAAI,CgFtJ8B,UAAU,CAAI,AANzD,AAMI,OANG,AAMW,CAAE,KAAQ,ChFuJlB,IAAI,CgFvJ6B,UAAU,CAAI,AANzD,AAMI,KANC,AAMa,CAAE,MAAQ,ChFmJpB,GAAG,CgFnJgC,UAAU,CAAI,AANzD,AAMI,KANC,AAMa,CAAE,MAAQ,ChFoJpB,GAAG,CgFpJgC,UAAU,CAAI,AANzD,AAMI,KANC,AAMa,CAAE,MAAQ,ChFqJpB,GAAG,CgFrJgC,UAAU,CAAI,AANzD,AAMI,MANE,AAMY,CAAE,MAAQ,ChFsJnB,IAAI,CgFtJ8B,UAAU,CAAI,AANzD,AAMI,OANG,AAMW,CAAE,MAAQ,ChFuJlB,IAAI,CgFvJ6B,UAAU,CAAI,AAIzD,AAAA,OAAO,AAAC,CAAE,SAAS,CAAE,eAAe,CAAI,AACxC,AAAA,OAAO,AAAC,CAAE,UAAU,CAAE,eAAe,CAAI,AAIzC,AAAA,WAAW,AAAC,CAAE,SAAS,CAAE,gBAAgB,CAAI,AAC7C,AAAA,WAAW,AAAC,CAAE,UAAU,CAAE,gBAAgB,CAAI,AAE9C,AAAA,OAAO,AAAC,CAAE,KAAK,CAAE,gBAAgB,CAAI,AACrC,AAAA,OAAO,AAAC,CAAE,MAAM,CAAE,gBAAgB,CAAI,ACnBtC,AAUQ,IAVJ,AAUwB,CAAE,MAAQ,CjFiI/B,CAAC,CiFjI6C,UAAU,CAAI,AAVnE,AAWQ,KAXH,CACG,KAAK,AAUiC,CACpC,UAAY,CjF+Hf,CAAC,CiF/HiC,UAAU,CAC1C,AAbT,AAcQ,KAdH,CACG,KAAK,AAaiC,CACpC,YAAc,CjF4HjB,CAAC,CiF5HqC,UAAU,CAC9C,AAhBT,AAiBQ,KAjBH,CACG,KAAK,AAgBiC,CACpC,aAAe,CjFyHlB,CAAC,CiFzHuC,UAAU,CAChD,AAnBT,AAoBQ,KApBH,CACG,KAAK,AAmBiC,CACpC,WAAa,CjFsHhB,CAAC,CiFtHmC,UAAU,CAC5C,AAtBT,AAUQ,IAVJ,AAUwB,CAAE,MAAQ,CjFkI/B,MAAe,CiFlI+B,UAAU,CAAI,AAVnE,AAWQ,KAXH,CACG,KAAK,AAUiC,CACpC,UAAY,CjFgIf,MAAe,CiFhImB,UAAU,CAC1C,AAbT,AAcQ,KAdH,CACG,KAAK,AAaiC,CACpC,YAAc,CjF6HjB,MAAe,CiF7HuB,UAAU,CAC9C,AAhBT,AAiBQ,KAjBH,CACG,KAAK,AAgBiC,CACpC,aAAe,CjF0HlB,MAAe,CiF1HyB,UAAU,CAChD,AAnBT,AAoBQ,KApBH,CACG,KAAK,AAmBiC,CACpC,WAAa,CjFuHhB,MAAe,CiFvHqB,UAAU,CAC5C,AAtBT,AAUQ,IAVJ,AAUwB,CAAE,MAAQ,CjFmI/B,KAAc,CiFnIgC,UAAU,CAAI,AAVnE,AAWQ,KAXH,CACG,KAAK,AAUiC,CACpC,UAAY,CjFiIf,KAAc,CiFjIoB,UAAU,CAC1C,AAbT,AAcQ,KAdH,CACG,KAAK,AAaiC,CACpC,YAAc,CjF8HjB,KAAc,CiF9HwB,UAAU,CAC9C,AAhBT,AAiBQ,KAjBH,CACG,KAAK,AAgBiC,CACpC,aAAe,CjF2HlB,KAAc,CiF3H0B,UAAU,CAChD,AAnBT,AAoBQ,KApBH,CACG,KAAK,AAmBiC,CACpC,WAAa,CjFwHhB,KAAc,CiFxHsB,UAAU,CAC5C,AAtBT,AAUQ,IAVJ,AAUwB,CAAE,MAAQ,CpFyD7B,IAAI,CoFzDwC,UAAU,CAAI,AAVnE,AAWQ,KAXH,CACG,KAAK,AAUiC,CACpC,UAAY,CpFuDb,IAAI,CoFvD4B,UAAU,CAC1C,AAbT,AAcQ,KAdH,CACG,KAAK,AAaiC,CACpC,YAAc,CpFoDf,IAAI,CoFpDgC,UAAU,CAC9C,AAhBT,AAiBQ,KAjBH,CACG,KAAK,AAgBiC,CACpC,aAAe,CpFiDhB,IAAI,CoFjDkC,UAAU,CAChD,AAnBT,AAoBQ,KApBH,CACG,KAAK,AAmBiC,CACpC,WAAa,CpF8Cd,IAAI,CoF9C8B,UAAU,CAC5C,AAtBT,AAUQ,IAVJ,AAUwB,CAAE,MAAQ,CjFqI/B,MAAe,CiFrI+B,UAAU,CAAI,AAVnE,AAWQ,KAXH,CACG,KAAK,AAUiC,CACpC,UAAY,CjFmIf,MAAe,CiFnImB,UAAU,CAC1C,AAbT,AAcQ,KAdH,CACG,KAAK,AAaiC,CACpC,YAAc,CjFgIjB,MAAe,CiFhIuB,UAAU,CAC9C,AAhBT,AAiBQ,KAjBH,CACG,KAAK,AAgBiC,CACpC,aAAe,CjF6HlB,MAAe,CiF7HyB,UAAU,CAChD,AAnBT,AAoBQ,KApBH,CACG,KAAK,AAmBiC,CACpC,WAAa,CjF0HhB,MAAe,CiF1HqB,UAAU,CAC5C,AAtBT,AAUQ,IAVJ,AAUwB,CAAE,MAAQ,CjFsI/B,IAAa,CiFtIiC,UAAU,CAAI,AAVnE,AAWQ,KAXH,CACG,KAAK,AAUiC,CACpC,UAAY,CjFoIf,IAAa,CiFpIqB,UAAU,CAC1C,AAbT,AAcQ,KAdH,CACG,KAAK,AAaiC,CACpC,YAAc,CjFiIjB,IAAa,CiFjIyB,UAAU,CAC9C,AAhBT,AAiBQ,KAjBH,CACG,KAAK,AAgBiC,CACpC,aAAe,CjF8HlB,IAAa,CiF9H2B,UAAU,CAChD,AAnBT,AAoBQ,KApBH,CACG,KAAK,AAmBiC,CACpC,WAAa,CjF2HhB,IAAa,CiF3HuB,UAAU,CAC5C,AAtBT,AAUQ,IAVJ,AAUwB,CAAE,OAAQ,CjFiI/B,CAAC,CiFjI6C,UAAU,CAAI,AAVnE,AAWQ,KAXH,CACG,KAAK,AAUiC,CACpC,WAAY,CjF+Hf,CAAC,CiF/HiC,UAAU,CAC1C,AAbT,AAcQ,KAdH,CACG,KAAK,AAaiC,CACpC,aAAc,CjF4HjB,CAAC,CiF5HqC,UAAU,CAC9C,AAhBT,AAiBQ,KAjBH,CACG,KAAK,AAgBiC,CACpC,cAAe,CjFyHlB,CAAC,CiFzHuC,UAAU,CAChD,AAnBT,AAoBQ,KApBH,CACG,KAAK,AAmBiC,CACpC,YAAa,CjFsHhB,CAAC,CiFtHmC,UAAU,CAC5C,AAtBT,AAUQ,IAVJ,AAUwB,CAAE,OAAQ,CjFkI/B,MAAe,CiFlI+B,UAAU,CAAI,AAVnE,AAWQ,KAXH,CACG,KAAK,AAUiC,CACpC,WAAY,CjFgIf,MAAe,CiFhImB,UAAU,CAC1C,AAbT,AAcQ,KAdH,CACG,KAAK,AAaiC,CACpC,aAAc,CjF6HjB,MAAe,CiF7HuB,UAAU,CAC9C,AAhBT,AAiBQ,KAjBH,CACG,KAAK,AAgBiC,CACpC,cAAe,CjF0HlB,MAAe,CiF1HyB,UAAU,CAChD,AAnBT,AAoBQ,KApBH,CACG,KAAK,AAmBiC,CACpC,YAAa,CjFuHhB,MAAe,CiFvHqB,UAAU,CAC5C,AAtBT,AAUQ,IAVJ,AAUwB,CAAE,OAAQ,CjFmI/B,KAAc,CiFnIgC,UAAU,CAAI,AAVnE,AAWQ,KAXH,CACG,KAAK,AAUiC,CACpC,WAAY,CjFiIf,KAAc,CiFjIoB,UAAU,CAC1C,AAbT,AAcQ,KAdH,CACG,KAAK,AAaiC,CACpC,aAAc,CjF8HjB,KAAc,CiF9HwB,UAAU,CAC9C,AAhBT,AAiBQ,KAjBH,CACG,KAAK,AAgBiC,CACpC,cAAe,CjF2HlB,KAAc,CiF3H0B,UAAU,CAChD,AAnBT,AAoBQ,KApBH,CACG,KAAK,AAmBiC,CACpC,YAAa,CjFwHhB,KAAc,CiFxHsB,UAAU,CAC5C,AAtBT,AAUQ,IAVJ,AAUwB,CAAE,OAAQ,CpFyD7B,IAAI,CoFzDwC,UAAU,CAAI,AAVnE,AAWQ,KAXH,CACG,KAAK,AAUiC,CACpC,WAAY,CpFuDb,IAAI,CoFvD4B,UAAU,CAC1C,AAbT,AAcQ,KAdH,CACG,KAAK,AAaiC,CACpC,aAAc,CpFoDf,IAAI,CoFpDgC,UAAU,CAC9C,AAhBT,AAiBQ,KAjBH,CACG,KAAK,AAgBiC,CACpC,cAAe,CpFiDhB,IAAI,CoFjDkC,UAAU,CAChD,AAnBT,AAoBQ,KApBH,CACG,KAAK,AAmBiC,CACpC,YAAa,CpF8Cd,IAAI,CoF9C8B,UAAU,CAC5C,AAtBT,AAUQ,IAVJ,AAUwB,CAAE,OAAQ,CjFqI/B,MAAe,CiFrI+B,UAAU,CAAI,AAVnE,AAWQ,KAXH,CACG,KAAK,AAUiC,CACpC,WAAY,CjFmIf,MAAe,CiFnImB,UAAU,CAC1C,AAbT,AAcQ,KAdH,CACG,KAAK,AAaiC,CACpC,aAAc,CjFgIjB,MAAe,CiFhIuB,UAAU,CAC9C,AAhBT,AAiBQ,KAjBH,CACG,KAAK,AAgBiC,CACpC,cAAe,CjF6HlB,MAAe,CiF7HyB,UAAU,CAChD,AAnBT,AAoBQ,KApBH,CACG,KAAK,AAmBiC,CACpC,YAAa,CjF0HhB,MAAe,CiF1HqB,UAAU,CAC5C,AAtBT,AAUQ,IAVJ,AAUwB,CAAE,OAAQ,CjFsI/B,IAAa,CiFtIiC,UAAU,CAAI,AAVnE,AAWQ,KAXH,CACG,KAAK,AAUiC,CACpC,WAAY,CjFoIf,IAAa,CiFpIqB,UAAU,CAC1C,AAbT,AAcQ,KAdH,CACG,KAAK,AAaiC,CACpC,aAAc,CjFiIjB,IAAa,CiFjIyB,UAAU,CAC9C,AAhBT,AAiBQ,KAjBH,CACG,KAAK,AAgBiC,CACpC,cAAe,CjF8HlB,IAAa,CiF9H2B,UAAU,CAChD,AAnBT,AAoBQ,KApBH,CACG,KAAK,AAmBiC,CACpC,YAAa,CjF2HhB,IAAa,CiF3HuB,UAAU,CAC5C,AAtBT,AA6BQ,KA7BH,AA6BgB,CAAE,MAAM,CjF+GtB,OAAe,CiF/GkB,UAAU,CAAI,AA7BtD,AA8BQ,MA9BF,CACE,MAAM,AA6BkB,CACtB,UAAU,CjF6Gb,OAAe,CiF7GS,UAAU,CAChC,AAhCT,AAiCQ,MAjCF,CACE,MAAM,AAgCkB,CACtB,YAAY,CjF0Gf,OAAe,CiF1GW,UAAU,CAClC,AAnCT,AAoCQ,MApCF,CACE,MAAM,AAmCkB,CACtB,aAAa,CjFuGhB,OAAe,CiFvGY,UAAU,CACnC,AAtCT,AAuCQ,MAvCF,CACE,MAAM,AAsCkB,CACtB,WAAW,CjFoGd,OAAe,CiFpGU,UAAU,CACjC,AAzCT,AA6BQ,KA7BH,AA6BgB,CAAE,MAAM,CjFgHtB,MAAc,CiFhHmB,UAAU,CAAI,AA7BtD,AA8BQ,MA9BF,CACE,MAAM,AA6BkB,CACtB,UAAU,CjF8Gb,MAAc,CiF9GU,UAAU,CAChC,AAhCT,AAiCQ,MAjCF,CACE,MAAM,AAgCkB,CACtB,YAAY,CjF2Gf,MAAc,CiF3GY,UAAU,CAClC,AAnCT,AAoCQ,MApCF,CACE,MAAM,AAmCkB,CACtB,aAAa,CjFwGhB,MAAc,CiFxGa,UAAU,CACnC,AAtCT,AAuCQ,MAvCF,CACE,MAAM,AAsCkB,CACtB,WAAW,CjFqGd,MAAc,CiFrGW,UAAU,CACjC,AAzCT,AA6BQ,KA7BH,AA6BgB,CAAE,MAAM,CpFsCpB,KAAI,CoFtC2B,UAAU,CAAI,AA7BtD,AA8BQ,MA9BF,CACE,MAAM,AA6BkB,CACtB,UAAU,CpFoCX,KAAI,CoFpCkB,UAAU,CAChC,AAhCT,AAiCQ,MAjCF,CACE,MAAM,AAgCkB,CACtB,YAAY,CpFiCb,KAAI,CoFjCoB,UAAU,CAClC,AAnCT,AAoCQ,MApCF,CACE,MAAM,AAmCkB,CACtB,aAAa,CpF8Bd,KAAI,CoF9BqB,UAAU,CACnC,AAtCT,AAuCQ,MAvCF,CACE,MAAM,AAsCkB,CACtB,WAAW,CpF2BZ,KAAI,CoF3BmB,UAAU,CACjC,AAzCT,AA6BQ,KA7BH,AA6BgB,CAAE,MAAM,CjFkHtB,OAAe,CiFlHkB,UAAU,CAAI,AA7BtD,AA8BQ,MA9BF,CACE,MAAM,AA6BkB,CACtB,UAAU,CjFgHb,OAAe,CiFhHS,UAAU,CAChC,AAhCT,AAiCQ,MAjCF,CACE,MAAM,AAgCkB,CACtB,YAAY,CjF6Gf,OAAe,CiF7GW,UAAU,CAClC,AAnCT,AAoCQ,MApCF,CACE,MAAM,AAmCkB,CACtB,aAAa,CjF0GhB,OAAe,CiF1GY,UAAU,CACnC,AAtCT,AAuCQ,MAvCF,CACE,MAAM,AAsCkB,CACtB,WAAW,CjFuGd,OAAe,CiFvGU,UAAU,CACjC,AAzCT,AA6BQ,KA7BH,AA6BgB,CAAE,MAAM,CjFmHtB,KAAa,CiFnHoB,UAAU,CAAI,AA7BtD,AA8BQ,MA9BF,CACE,MAAM,AA6BkB,CACtB,UAAU,CjFiHb,KAAa,CiFjHW,UAAU,CAChC,AAhCT,AAiCQ,MAjCF,CACE,MAAM,AAgCkB,CACtB,YAAY,CjF8Gf,KAAa,CiF9Ga,UAAU,CAClC,AAnCT,AAoCQ,MApCF,CACE,MAAM,AAmCkB,CACtB,aAAa,CjF2GhB,KAAa,CiF3Gc,UAAU,CACnC,AAtCT,AAuCQ,MAvCF,CACE,MAAM,AAsCkB,CACtB,WAAW,CjFwGd,KAAa,CiFxGY,UAAU,CACjC,AAzCT,AA8CI,OA9CG,AA8CU,CAAE,MAAM,CAAE,eAAe,CAAI,AA9C9C,AA+CI,QA/CI,CACJ,QAAQ,AA8CW,CACjB,UAAU,CAAE,eAAe,CAC5B,AAjDL,AAkDI,QAlDI,CACJ,QAAQ,AAiDW,CACjB,YAAY,CAAE,eAAe,CAC9B,AApDL,AAqDI,QArDI,CACJ,QAAQ,AAoDW,CACjB,aAAa,CAAE,eAAe,CAC/B,AAvDL,AAwDI,QAxDI,CACJ,QAAQ,AAuDW,CACjB,WAAW,CAAE,eAAe,CAC7B,A7EED,MAAM,mB6ElDF,CAVR,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFiI/B,CAAC,CiFjI6C,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjF+Hf,CAAC,CiF/HiC,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjF4HjB,CAAC,CiF5HqC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjFyHlB,CAAC,CiFzHuC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjFsHhB,CAAC,CiFtHmC,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFkI/B,MAAe,CiFlI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFgIf,MAAe,CiFhImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjF6HjB,MAAe,CiF7HuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF0HlB,MAAe,CiF1HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjFuHhB,MAAe,CiFvHqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFmI/B,KAAc,CiFnIgC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFiIf,KAAc,CiFjIoB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjF8HjB,KAAc,CiF9HwB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF2HlB,KAAc,CiF3H0B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjFwHhB,KAAc,CiFxHsB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CpFyD7B,IAAI,CoFzDwC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CpFuDb,IAAI,CoFvD4B,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CpFoDf,IAAI,CoFpDgC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CpFiDhB,IAAI,CoFjDkC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CpF8Cd,IAAI,CoF9C8B,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFqI/B,MAAe,CiFrI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFmIf,MAAe,CiFnImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjFgIjB,MAAe,CiFhIuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF6HlB,MAAe,CiF7HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjF0HhB,MAAe,CiF1HqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFsI/B,IAAa,CiFtIiC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFoIf,IAAa,CiFpIqB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjFiIjB,IAAa,CiFjIyB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF8HlB,IAAa,CiF9H2B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjF2HhB,IAAa,CiF3HuB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFiI/B,CAAC,CiFjI6C,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjF+Hf,CAAC,CiF/HiC,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjF4HjB,CAAC,CiF5HqC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjFyHlB,CAAC,CiFzHuC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjFsHhB,CAAC,CiFtHmC,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFkI/B,MAAe,CiFlI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFgIf,MAAe,CiFhImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjF6HjB,MAAe,CiF7HuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF0HlB,MAAe,CiF1HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjFuHhB,MAAe,CiFvHqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFmI/B,KAAc,CiFnIgC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFiIf,KAAc,CiFjIoB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjF8HjB,KAAc,CiF9HwB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF2HlB,KAAc,CiF3H0B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjFwHhB,KAAc,CiFxHsB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CpFyD7B,IAAI,CoFzDwC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CpFuDb,IAAI,CoFvD4B,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CpFoDf,IAAI,CoFpDgC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CpFiDhB,IAAI,CoFjDkC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CpF8Cd,IAAI,CoF9C8B,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFqI/B,MAAe,CiFrI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFmIf,MAAe,CiFnImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjFgIjB,MAAe,CiFhIuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF6HlB,MAAe,CiF7HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjF0HhB,MAAe,CiF1HqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFsI/B,IAAa,CiFtIiC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFoIf,IAAa,CiFpIqB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjFiIjB,IAAa,CiFjIyB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF8HlB,IAAa,CiF9H2B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjF2HhB,IAAa,CiF3HuB,UAAU,CAC5C,AAtBT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjF+GtB,OAAe,CiF/GkB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjF6Gb,OAAe,CiF7GS,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF0Gf,OAAe,CiF1GW,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjFuGhB,OAAe,CiFvGY,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFoGd,OAAe,CiFpGU,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjFgHtB,MAAc,CiFhHmB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjF8Gb,MAAc,CiF9GU,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF2Gf,MAAc,CiF3GY,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjFwGhB,MAAc,CiFxGa,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFqGd,MAAc,CiFrGW,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CpFsCpB,KAAI,CoFtC2B,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CpFoCX,KAAI,CoFpCkB,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CpFiCb,KAAI,CoFjCoB,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CpF8Bd,KAAI,CoF9BqB,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CpF2BZ,KAAI,CoF3BmB,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjFkHtB,OAAe,CiFlHkB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjFgHb,OAAe,CiFhHS,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF6Gf,OAAe,CiF7GW,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjF0GhB,OAAe,CiF1GY,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFuGd,OAAe,CiFvGU,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjFmHtB,KAAa,CiFnHoB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjFiHb,KAAa,CiFjHW,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF8Gf,KAAa,CiF9Ga,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjF2GhB,KAAa,CiF3Gc,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFwGd,KAAa,CiFxGY,UAAU,CACjC,AAzCT,AA8CI,UA9CM,AA8CO,CAAE,MAAM,CAAE,eAAe,CAAI,AA9C9C,AA+CI,WA/CO,CACP,WAAW,AA8CQ,CACjB,UAAU,CAAE,eAAe,CAC5B,AAjDL,AAkDI,WAlDO,CACP,WAAW,AAiDQ,CACjB,YAAY,CAAE,eAAe,CAC9B,AApDL,AAqDI,WArDO,CACP,WAAW,AAoDQ,CACjB,aAAa,CAAE,eAAe,CAC/B,AAvDL,AAwDI,WAxDO,CACP,WAAW,AAuDQ,CACjB,WAAW,CAAE,eAAe,CAC7B,CAhD6D,A7EkD9D,MAAM,mB6ElDF,CAVR,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFiI/B,CAAC,CiFjI6C,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjF+Hf,CAAC,CiF/HiC,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjF4HjB,CAAC,CiF5HqC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjFyHlB,CAAC,CiFzHuC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjFsHhB,CAAC,CiFtHmC,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFkI/B,MAAe,CiFlI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFgIf,MAAe,CiFhImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjF6HjB,MAAe,CiF7HuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF0HlB,MAAe,CiF1HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjFuHhB,MAAe,CiFvHqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFmI/B,KAAc,CiFnIgC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFiIf,KAAc,CiFjIoB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjF8HjB,KAAc,CiF9HwB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF2HlB,KAAc,CiF3H0B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjFwHhB,KAAc,CiFxHsB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CpFyD7B,IAAI,CoFzDwC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CpFuDb,IAAI,CoFvD4B,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CpFoDf,IAAI,CoFpDgC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CpFiDhB,IAAI,CoFjDkC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CpF8Cd,IAAI,CoF9C8B,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFqI/B,MAAe,CiFrI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFmIf,MAAe,CiFnImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjFgIjB,MAAe,CiFhIuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF6HlB,MAAe,CiF7HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjF0HhB,MAAe,CiF1HqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFsI/B,IAAa,CiFtIiC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFoIf,IAAa,CiFpIqB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjFiIjB,IAAa,CiFjIyB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF8HlB,IAAa,CiF9H2B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjF2HhB,IAAa,CiF3HuB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFiI/B,CAAC,CiFjI6C,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjF+Hf,CAAC,CiF/HiC,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjF4HjB,CAAC,CiF5HqC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjFyHlB,CAAC,CiFzHuC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjFsHhB,CAAC,CiFtHmC,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFkI/B,MAAe,CiFlI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFgIf,MAAe,CiFhImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjF6HjB,MAAe,CiF7HuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF0HlB,MAAe,CiF1HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjFuHhB,MAAe,CiFvHqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFmI/B,KAAc,CiFnIgC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFiIf,KAAc,CiFjIoB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjF8HjB,KAAc,CiF9HwB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF2HlB,KAAc,CiF3H0B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjFwHhB,KAAc,CiFxHsB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CpFyD7B,IAAI,CoFzDwC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CpFuDb,IAAI,CoFvD4B,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CpFoDf,IAAI,CoFpDgC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CpFiDhB,IAAI,CoFjDkC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CpF8Cd,IAAI,CoF9C8B,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFqI/B,MAAe,CiFrI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFmIf,MAAe,CiFnImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjFgIjB,MAAe,CiFhIuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF6HlB,MAAe,CiF7HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjF0HhB,MAAe,CiF1HqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFsI/B,IAAa,CiFtIiC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFoIf,IAAa,CiFpIqB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjFiIjB,IAAa,CiFjIyB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF8HlB,IAAa,CiF9H2B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjF2HhB,IAAa,CiF3HuB,UAAU,CAC5C,AAtBT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjF+GtB,OAAe,CiF/GkB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjF6Gb,OAAe,CiF7GS,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF0Gf,OAAe,CiF1GW,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjFuGhB,OAAe,CiFvGY,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFoGd,OAAe,CiFpGU,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjFgHtB,MAAc,CiFhHmB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjF8Gb,MAAc,CiF9GU,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF2Gf,MAAc,CiF3GY,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjFwGhB,MAAc,CiFxGa,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFqGd,MAAc,CiFrGW,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CpFsCpB,KAAI,CoFtC2B,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CpFoCX,KAAI,CoFpCkB,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CpFiCb,KAAI,CoFjCoB,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CpF8Bd,KAAI,CoF9BqB,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CpF2BZ,KAAI,CoF3BmB,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjFkHtB,OAAe,CiFlHkB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjFgHb,OAAe,CiFhHS,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF6Gf,OAAe,CiF7GW,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjF0GhB,OAAe,CiF1GY,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFuGd,OAAe,CiFvGU,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjFmHtB,KAAa,CiFnHoB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjFiHb,KAAa,CiFjHW,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF8Gf,KAAa,CiF9Ga,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjF2GhB,KAAa,CiF3Gc,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFwGd,KAAa,CiFxGY,UAAU,CACjC,AAzCT,AA8CI,UA9CM,AA8CO,CAAE,MAAM,CAAE,eAAe,CAAI,AA9C9C,AA+CI,WA/CO,CACP,WAAW,AA8CQ,CACjB,UAAU,CAAE,eAAe,CAC5B,AAjDL,AAkDI,WAlDO,CACP,WAAW,AAiDQ,CACjB,YAAY,CAAE,eAAe,CAC9B,AApDL,AAqDI,WArDO,CACP,WAAW,AAoDQ,CACjB,aAAa,CAAE,eAAe,CAC/B,AAvDL,AAwDI,WAxDO,CACP,WAAW,AAuDQ,CACjB,WAAW,CAAE,eAAe,CAC7B,CAhD6D,A7EkD9D,MAAM,mB6ElDF,CAVR,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFiI/B,CAAC,CiFjI6C,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjF+Hf,CAAC,CiF/HiC,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjF4HjB,CAAC,CiF5HqC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjFyHlB,CAAC,CiFzHuC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjFsHhB,CAAC,CiFtHmC,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFkI/B,MAAe,CiFlI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFgIf,MAAe,CiFhImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjF6HjB,MAAe,CiF7HuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF0HlB,MAAe,CiF1HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjFuHhB,MAAe,CiFvHqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFmI/B,KAAc,CiFnIgC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFiIf,KAAc,CiFjIoB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjF8HjB,KAAc,CiF9HwB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF2HlB,KAAc,CiF3H0B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjFwHhB,KAAc,CiFxHsB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CpFyD7B,IAAI,CoFzDwC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CpFuDb,IAAI,CoFvD4B,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CpFoDf,IAAI,CoFpDgC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CpFiDhB,IAAI,CoFjDkC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CpF8Cd,IAAI,CoF9C8B,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFqI/B,MAAe,CiFrI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFmIf,MAAe,CiFnImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjFgIjB,MAAe,CiFhIuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF6HlB,MAAe,CiF7HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjF0HhB,MAAe,CiF1HqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFsI/B,IAAa,CiFtIiC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFoIf,IAAa,CiFpIqB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjFiIjB,IAAa,CiFjIyB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF8HlB,IAAa,CiF9H2B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjF2HhB,IAAa,CiF3HuB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFiI/B,CAAC,CiFjI6C,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjF+Hf,CAAC,CiF/HiC,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjF4HjB,CAAC,CiF5HqC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjFyHlB,CAAC,CiFzHuC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjFsHhB,CAAC,CiFtHmC,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFkI/B,MAAe,CiFlI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFgIf,MAAe,CiFhImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjF6HjB,MAAe,CiF7HuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF0HlB,MAAe,CiF1HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjFuHhB,MAAe,CiFvHqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFmI/B,KAAc,CiFnIgC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFiIf,KAAc,CiFjIoB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjF8HjB,KAAc,CiF9HwB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF2HlB,KAAc,CiF3H0B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjFwHhB,KAAc,CiFxHsB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CpFyD7B,IAAI,CoFzDwC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CpFuDb,IAAI,CoFvD4B,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CpFoDf,IAAI,CoFpDgC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CpFiDhB,IAAI,CoFjDkC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CpF8Cd,IAAI,CoF9C8B,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFqI/B,MAAe,CiFrI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFmIf,MAAe,CiFnImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjFgIjB,MAAe,CiFhIuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF6HlB,MAAe,CiF7HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjF0HhB,MAAe,CiF1HqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFsI/B,IAAa,CiFtIiC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFoIf,IAAa,CiFpIqB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjFiIjB,IAAa,CiFjIyB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF8HlB,IAAa,CiF9H2B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjF2HhB,IAAa,CiF3HuB,UAAU,CAC5C,AAtBT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjF+GtB,OAAe,CiF/GkB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjF6Gb,OAAe,CiF7GS,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF0Gf,OAAe,CiF1GW,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjFuGhB,OAAe,CiFvGY,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFoGd,OAAe,CiFpGU,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjFgHtB,MAAc,CiFhHmB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjF8Gb,MAAc,CiF9GU,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF2Gf,MAAc,CiF3GY,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjFwGhB,MAAc,CiFxGa,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFqGd,MAAc,CiFrGW,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CpFsCpB,KAAI,CoFtC2B,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CpFoCX,KAAI,CoFpCkB,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CpFiCb,KAAI,CoFjCoB,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CpF8Bd,KAAI,CoF9BqB,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CpF2BZ,KAAI,CoF3BmB,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjFkHtB,OAAe,CiFlHkB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjFgHb,OAAe,CiFhHS,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF6Gf,OAAe,CiF7GW,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjF0GhB,OAAe,CiF1GY,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFuGd,OAAe,CiFvGU,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjFmHtB,KAAa,CiFnHoB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjFiHb,KAAa,CiFjHW,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF8Gf,KAAa,CiF9Ga,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjF2GhB,KAAa,CiF3Gc,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFwGd,KAAa,CiFxGY,UAAU,CACjC,AAzCT,AA8CI,UA9CM,AA8CO,CAAE,MAAM,CAAE,eAAe,CAAI,AA9C9C,AA+CI,WA/CO,CACP,WAAW,AA8CQ,CACjB,UAAU,CAAE,eAAe,CAC5B,AAjDL,AAkDI,WAlDO,CACP,WAAW,AAiDQ,CACjB,YAAY,CAAE,eAAe,CAC9B,AApDL,AAqDI,WArDO,CACP,WAAW,AAoDQ,CACjB,aAAa,CAAE,eAAe,CAC/B,AAvDL,AAwDI,WAxDO,CACP,WAAW,AAuDQ,CACjB,WAAW,CAAE,eAAe,CAC7B,CAhD6D,A7EkD9D,MAAM,oB6ElDF,CAVR,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFiI/B,CAAC,CiFjI6C,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjF+Hf,CAAC,CiF/HiC,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjF4HjB,CAAC,CiF5HqC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjFyHlB,CAAC,CiFzHuC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjFsHhB,CAAC,CiFtHmC,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFkI/B,MAAe,CiFlI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFgIf,MAAe,CiFhImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjF6HjB,MAAe,CiF7HuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF0HlB,MAAe,CiF1HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjFuHhB,MAAe,CiFvHqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFmI/B,KAAc,CiFnIgC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFiIf,KAAc,CiFjIoB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjF8HjB,KAAc,CiF9HwB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF2HlB,KAAc,CiF3H0B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjFwHhB,KAAc,CiFxHsB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CpFyD7B,IAAI,CoFzDwC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CpFuDb,IAAI,CoFvD4B,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CpFoDf,IAAI,CoFpDgC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CpFiDhB,IAAI,CoFjDkC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CpF8Cd,IAAI,CoF9C8B,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFqI/B,MAAe,CiFrI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFmIf,MAAe,CiFnImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjFgIjB,MAAe,CiFhIuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF6HlB,MAAe,CiF7HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjF0HhB,MAAe,CiF1HqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,MAAQ,CjFsI/B,IAAa,CiFtIiC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,UAAY,CjFoIf,IAAa,CiFpIqB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,YAAc,CjFiIjB,IAAa,CiFjIyB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,aAAe,CjF8HlB,IAAa,CiF9H2B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,WAAa,CjF2HhB,IAAa,CiF3HuB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFiI/B,CAAC,CiFjI6C,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjF+Hf,CAAC,CiF/HiC,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjF4HjB,CAAC,CiF5HqC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjFyHlB,CAAC,CiFzHuC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjFsHhB,CAAC,CiFtHmC,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFkI/B,MAAe,CiFlI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFgIf,MAAe,CiFhImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjF6HjB,MAAe,CiF7HuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF0HlB,MAAe,CiF1HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjFuHhB,MAAe,CiFvHqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFmI/B,KAAc,CiFnIgC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFiIf,KAAc,CiFjIoB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjF8HjB,KAAc,CiF9HwB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF2HlB,KAAc,CiF3H0B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjFwHhB,KAAc,CiFxHsB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CpFyD7B,IAAI,CoFzDwC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CpFuDb,IAAI,CoFvD4B,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CpFoDf,IAAI,CoFpDgC,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CpFiDhB,IAAI,CoFjDkC,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CpF8Cd,IAAI,CoF9C8B,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFqI/B,MAAe,CiFrI+B,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFmIf,MAAe,CiFnImB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjFgIjB,MAAe,CiFhIuB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF6HlB,MAAe,CiF7HyB,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjF0HhB,MAAe,CiF1HqB,UAAU,CAC5C,AAtBT,AAUQ,OAVD,AAUqB,CAAE,OAAQ,CjFsI/B,IAAa,CiFtIiC,UAAU,CAAI,AAVnE,AAWQ,QAXA,CACA,QAAQ,AAU8B,CACpC,WAAY,CjFoIf,IAAa,CiFpIqB,UAAU,CAC1C,AAbT,AAcQ,QAdA,CACA,QAAQ,AAa8B,CACpC,aAAc,CjFiIjB,IAAa,CiFjIyB,UAAU,CAC9C,AAhBT,AAiBQ,QAjBA,CACA,QAAQ,AAgB8B,CACpC,cAAe,CjF8HlB,IAAa,CiF9H2B,UAAU,CAChD,AAnBT,AAoBQ,QApBA,CACA,QAAQ,AAmB8B,CACpC,YAAa,CjF2HhB,IAAa,CiF3HuB,UAAU,CAC5C,AAtBT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjF+GtB,OAAe,CiF/GkB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjF6Gb,OAAe,CiF7GS,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF0Gf,OAAe,CiF1GW,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjFuGhB,OAAe,CiFvGY,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFoGd,OAAe,CiFpGU,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjFgHtB,MAAc,CiFhHmB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjF8Gb,MAAc,CiF9GU,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF2Gf,MAAc,CiF3GY,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjFwGhB,MAAc,CiFxGa,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFqGd,MAAc,CiFrGW,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CpFsCpB,KAAI,CoFtC2B,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CpFoCX,KAAI,CoFpCkB,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CpFiCb,KAAI,CoFjCoB,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CpF8Bd,KAAI,CoF9BqB,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CpF2BZ,KAAI,CoF3BmB,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjFkHtB,OAAe,CiFlHkB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjFgHb,OAAe,CiFhHS,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF6Gf,OAAe,CiF7GW,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjF0GhB,OAAe,CiF1GY,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFuGd,OAAe,CiFvGU,UAAU,CACjC,AAzCT,AA6BQ,QA7BA,AA6Ba,CAAE,MAAM,CjFmHtB,KAAa,CiFnHoB,UAAU,CAAI,AA7BtD,AA8BQ,SA9BC,CACD,SAAS,AA6Be,CACtB,UAAU,CjFiHb,KAAa,CiFjHW,UAAU,CAChC,AAhCT,AAiCQ,SAjCC,CACD,SAAS,AAgCe,CACtB,YAAY,CjF8Gf,KAAa,CiF9Ga,UAAU,CAClC,AAnCT,AAoCQ,SApCC,CACD,SAAS,AAmCe,CACtB,aAAa,CjF2GhB,KAAa,CiF3Gc,UAAU,CACnC,AAtCT,AAuCQ,SAvCC,CACD,SAAS,AAsCe,CACtB,WAAW,CjFwGd,KAAa,CiFxGY,UAAU,CACjC,AAzCT,AA8CI,UA9CM,AA8CO,CAAE,MAAM,CAAE,eAAe,CAAI,AA9C9C,AA+CI,WA/CO,CACP,WAAW,AA8CQ,CACjB,UAAU,CAAE,eAAe,CAC5B,AAjDL,AAkDI,WAlDO,CACP,WAAW,AAiDQ,CACjB,YAAY,CAAE,eAAe,CAC9B,AApDL,AAqDI,WArDO,CACP,WAAW,AAoDQ,CACjB,aAAa,CAAE,eAAe,CAC/B,AAvDL,AAwDI,WAxDO,CACP,WAAW,AAuDQ,CACjB,WAAW,CAAE,eAAe,CAC7B,CAhD6D,ACNlE,AACE,eADa,EACV,KAAK,AAAC,CACP,QAAQ,CAAE,QAAQ,CAClB,GAAG,CAAE,CAAC,CACN,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,CAAC,CACT,IAAI,CAAE,CAAC,CACP,OAAO,CAAE,CAAC,CAEV,cAAc,CAAE,IAAI,CACpB,OAAO,CAAE,EAAE,CAEX,gBAAgB,CAAE,aAAgB,CACnC,ACXH,AAAA,eAAe,AAAC,CAAE,WAAW,CnF+QC,cAAc,CAAE,KAAK,CAAE,MAAM,CAAE,QAAQ,CAAE,iBAAiB,CAAE,aAAa,CAAE,SAAS,CmF/Q5D,UAAU,CAAI,AAIpE,AAAA,aAAa,AAAE,CAAE,UAAU,CAAE,kBAAkB,CAAI,AACnD,AAAA,UAAU,AAAK,CAAE,WAAW,CAAE,iBAAiB,CAAI,AACnD,AAAA,YAAY,AAAG,CAAE,WAAW,CAAE,iBAAiB,CAAI,AACnD,AAAA,cAAc,AAAC,CrETb,QAAQ,CAAE,MAAM,CAChB,aAAa,CAAE,QAAQ,CACvB,WAAW,CAAE,MAAM,CqEOwB,AAb7C,AAqBI,UArBM,AAqBS,CAAE,UAAU,CAAE,eAAe,CAAI,AArBpD,AAsBI,WAtBO,AAsBQ,CAAE,UAAU,CAAE,gBAAgB,CAAI,AAtBrD,AAuBI,YAvBQ,AAuBO,CAAE,UAAU,CAAE,iBAAiB,CAAI,A/EqClD,MAAM,mB+EvCN,CArBJ,AAqBI,aArBS,AAqBM,CAAE,UAAU,CAAE,eAAe,CAAI,AArBpD,AAsBI,cAtBU,AAsBK,CAAE,UAAU,CAAE,gBAAgB,CAAI,AAtBrD,AAuBI,eAvBW,AAuBI,CAAE,UAAU,CAAE,iBAAiB,CAAI,CAFH,A/EuC/C,MAAM,mB+EvCN,CArBJ,AAqBI,aArBS,AAqBM,CAAE,UAAU,CAAE,eAAe,CAAI,AArBpD,AAsBI,cAtBU,AAsBK,CAAE,UAAU,CAAE,gBAAgB,CAAI,AAtBrD,AAuBI,eAvBW,AAuBI,CAAE,UAAU,CAAE,iBAAiB,CAAI,CAFH,A/EuC/C,MAAM,mB+EvCN,CArBJ,AAqBI,aArBS,AAqBM,CAAE,UAAU,CAAE,eAAe,CAAI,AArBpD,AAsBI,cAtBU,AAsBK,CAAE,UAAU,CAAE,gBAAgB,CAAI,AAtBrD,AAuBI,eAvBW,AAuBI,CAAE,UAAU,CAAE,iBAAiB,CAAI,CAFH,A/EuC/C,MAAM,oB+EvCN,CArBJ,AAqBI,aArBS,AAqBM,CAAE,UAAU,CAAE,eAAe,CAAI,AArBpD,AAsBI,cAtBU,AAsBK,CAAE,UAAU,CAAE,gBAAgB,CAAI,AAtBrD,AAuBI,eAvBW,AAuBI,CAAE,UAAU,CAAE,iBAAiB,CAAI,CAFH,AAQnD,AAAA,eAAe,AAAE,CAAE,cAAc,CAAE,oBAAoB,CAAI,AAC3D,AAAA,eAAe,CiB7Bf,QAAQ,CA0JJ,gBAAgB,CJzJpB,SAAS,CACP,cAAc,CAEZ,gBAAgB,AbyBH,CAAE,cAAc,CAAE,oBAAoB,CAAI,AAC3D,AAAA,gBAAgB,AAAC,CAAE,cAAc,CAAE,qBAAqB,CAAI,AAI5D,AAAA,kBAAkB,AAAG,CAAE,WAAW,CtFMd,GAAG,CsFNgC,UAAU,CAAI,AACrE,AAAA,oBAAoB,AAAC,CAAE,WAAW,CnFyPJ,OAAO,CmFzPoB,UAAU,CAAI,AACvE,AAAA,mBAAmB,AAAE,CAAE,WAAW,CnF0PJ,GAAG,CmF1PuB,UAAU,CAAI,AACtE,AAAA,iBAAiB,AAAI,CAAE,WAAW,CnF0PJ,GAAG,CmF1PqB,UAAU,CAAI,AACpE,AAAA,mBAAmB,AAAE,CAAE,WAAW,CnF0PJ,MAAM,CmF1PoB,UAAU,CAAI,AACtE,AAAA,YAAY,AAAS,CAAE,UAAU,CAAE,iBAAiB,CAAI,AAIxD,AAAA,WAAW,AAAC,CAAE,KAAK,CtFtCX,IAAI,CsFsCgB,UAAU,CAAI,AvE5C1C,AAKE,aALW,AAKF,CACP,KAAK,CfYF,OAAO,CeZI,UAAU,CACzB,AAPH,APgBE,COhBD,AAAA,aAAa,CPgBV,KAAK,COhBT,CAAC,AAAA,aAAa,CPiBV,KAAK,AAAC,CONF,KAAK,CfON,OAAO,CeP0D,UAAU,CPQ/E,AOnBH,AAKE,eALa,AAKJ,CACP,KAAK,CfME,OAAO,CeNA,UAAU,CACzB,AAPH,APgBE,COhBD,AAAA,eAAe,CPgBZ,KAAK,COhBT,CAAC,AAAA,eAAe,CPiBZ,KAAK,AAAC,CONF,KAAK,CfCF,OAAO,CeDsD,UAAU,CPQ/E,AOnBH,AAKE,aALW,AAKF,CACP,KAAK,CfmBD,OAAO,CenBG,UAAU,CACzB,AAPH,APgBE,COhBD,AAAA,aAAa,CPgBV,KAAK,COhBT,CAAC,AAAA,aAAa,CPiBV,KAAK,AAAC,CONF,KAAK,CfcL,OAAO,CedyD,UAAU,CPQ/E,AOnBH,AAKE,UALQ,AAKC,CACP,KAAK,CfqBF,OAAO,CerBI,UAAU,CACzB,AAPH,APgBE,COhBD,AAAA,UAAU,CPgBP,KAAK,COhBT,CAAC,AAAA,UAAU,CPiBP,KAAK,AAAC,CONF,KAAK,CfgBN,OAAO,CehB0D,UAAU,CPQ/E,AOnBH,AAKE,aALW,AAKF,CACP,KAAK,CfkBA,OAAO,CelBE,UAAU,CACzB,AAPH,APgBE,COhBD,AAAA,aAAa,CPgBV,KAAK,COhBT,CAAC,AAAA,aAAa,CPiBV,KAAK,AAAC,CONF,KAAK,CfaJ,OAAO,CebwD,UAAU,CPQ/E,AOnBH,AAKE,YALU,AAKD,CACP,KAAK,CfgBH,OAAO,CehBK,UAAU,CACzB,AAPH,APgBE,COhBD,AAAA,YAAY,CPgBT,KAAK,COhBT,CAAC,AAAA,YAAY,CPiBT,KAAK,AAAC,CONF,KAAK,CfWP,OAAO,CeX2D,UAAU,CPQ/E,AOnBH,AAKE,WALS,AAKA,CACP,KAAK,CfCE,OAAO,CeDA,UAAU,CACzB,AAPH,APgBE,COhBD,AAAA,WAAW,CPgBR,KAAK,COhBT,CAAC,AAAA,WAAW,CPiBR,KAAK,AAAC,CONF,KAAK,CfJF,OAAO,CeIsD,UAAU,CPQ/E,AOnBH,AAKE,UALQ,AAKC,CACP,KAAK,CfQE,OAAO,CeRA,UAAU,CACzB,AAPH,APgBE,COhBD,AAAA,UAAU,CPgBP,KAAK,COhBT,CAAC,AAAA,UAAU,CPiBP,KAAK,AAAC,CONF,KAAK,CfGF,OAAO,CeHsD,UAAU,CPQ/E,A8E+BH,AAAA,UAAU,AAAC,CAAE,KAAK,CtFtCP,OAAO,CsFsCc,UAAU,CAAI,AAC9C,AAAA,WAAW,AAAC,CAAE,KAAK,CtFvCR,OAAO,CsFuCe,UAAU,CAAI,AAE/C,AAAA,cAAc,AAAC,CAAE,KAAK,CtFrCd,eAAI,CsFqC6B,UAAU,CAAI,AACvD,AAAA,cAAc,AAAC,CAAE,KAAK,CtFhDd,qBAAI,CsFgD6B,UAAU,CAAI,AAIvD,AAAA,UAAU,AAAC,CtEvDT,IAAI,CAAE,KAAK,CACX,KAAK,CAAE,WAAW,CAClB,WAAW,CAAE,IAAI,CACjB,gBAAgB,CAAE,WAAW,CAC7B,MAAM,CAAE,CAAC,CsEqDV,AAED,AAAA,qBAAqB,AAAC,CAAE,eAAe,CAAE,eAAe,CAAI,AAE5D,AAAA,WAAW,AAAC,CACV,UAAU,CAAE,qBAAqB,CACjC,SAAS,CAAE,qBAAqB,CACjC,AAID,AAAA,WAAW,AAAC,CAAE,KAAK,CAAE,kBAAkB,CAAI,ACjE3C,AAAA,QAAQ,AAAC,CACP,UAAU,CAAE,kBAAkB,CAC/B,AAED,AAAA,UAAU,AAAC,CACT,UAAU,CAAE,iBAAiB,CAC9B,ACDC,MAAM,MACJ,CAAA,AAAA,CAAC,CACD,CAAC,EAAE,MAAM,CACT,CAAC,EAAE,KAAK,AAAC,CAGP,WAAW,CAAE,eAAe,CAE5B,UAAU,CAAE,eAAe,CAC5B,AAED,AACE,CADD,CACE,GAAK,CAAA,IAAI,CAAE,CACV,eAAe,CAAE,SAAS,CAC3B,AAQH,AAAA,IAAI,CAAA,AAAA,KAAC,AAAA,GAAQ,KAAK,AAAC,CACjB,OAAO,CAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAC9B,AAaD,AAAA,GAAG,AAAC,CACF,WAAW,CAAE,mBAAmB,CACjC,AACD,AAAA,GAAG,CACH,UAAU,AAAC,CACT,MAAM,CrFuLkB,GAAG,CqFvLL,KAAK,CxF1CtB,OAAO,CwF2CZ,iBAAiB,CAAE,KAAK,CACzB,AAOD,AAAA,KAAK,AAAC,CACJ,OAAO,CAAE,kBAAkB,CAC5B,AAED,AAAA,EAAE,CACF,GAAG,AAAC,CACF,iBAAiB,CAAE,KAAK,CACzB,AAED,AAAA,CAAC,CACD,EAAE,CACF,EAAE,AAAC,CACD,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,CAAC,CACV,AAED,AAAA,EAAE,CACF,EAAE,AAAC,CACD,gBAAgB,CAAE,KAAK,CACxB,AAOD,KAAK,CACH,IAAI,CrF2hC0B,EAAE,CqFzhClC,AAAA,IAAI,AAAC,CACH,SAAS,CrF0GT,KAAK,CqF1G4B,UAAU,CAC5C,AACD,AAAA,UAAU,AAAC,CACT,SAAS,CrFuGT,KAAK,CqFvG4B,UAAU,CAC5C,AAGD,AAAA,OAAO,AAAC,CACN,OAAO,CAAE,IAAI,CACd,AACD,AAAA,MAAM,AAAC,CACL,MAAM,CrFqIkB,GAAG,CqFrIL,KAAK,CxFvFzB,IAAI,CwFwFP,AAED,AAAA,MAAM,AAAC,CACL,eAAe,CAAE,mBAAmB,CAMrC,AAPD,AAGE,MAHI,CAGJ,EAAE,CAHJ,MAAM,CAIJ,EAAE,AAAC,CACD,gBAAgB,CxFzGhB,IAAI,CwFyGqB,UAAU,CACpC,AAGH,AACE,eADa,CACb,EAAE,CADJ,eAAe,CAEb,EAAE,AAAC,CACD,MAAM,CAAE,GAAG,CAAC,KAAK,CxF7Gd,OAAO,CwF6GkB,UAAU,CACvC,AAGH,AAAA,WAAW,AAAC,CACV,KAAK,CAAE,OAAO,CAQf,AATD,AAGE,WAHS,CAGT,EAAE,CAHJ,WAAW,CAIT,EAAE,CAJJ,WAAW,CAKT,KAAK,CAAC,EAAE,CALV,WAAW,CAMT,KAAK,CAAG,KAAK,AAAC,CACZ,YAAY,CxFzHT,OAAO,CwF0HX,AAGH,AAAA,MAAM,CAAC,WAAW,CAAC,EAAE,AAAC,CACpB,KAAK,CAAE,OAAO,CACd,YAAY,CxF/HP,OAAO,CwFgIb,CApHA,AElBL,AAAA,IAAI,AAAC,CACH,QAAQ,CAAE,QAAQ,CAClB,UAAU,CAAE,IAAI,CACjB,AAED,AAAA,IAAI,AAAC,CACH,MAAM,CAAE,IAAI,CACb,AAED,AACE,CADD,CACG,KAAK,AAAC,CACN,OAAO,CAAE,IAAI,CACd,AAIH,AAAA,QAAQ,AAAC,CACP,OAAO,CAAE,IAAI,CASd,AAVD,AAEE,QAFM,CAEN,gBAAgB,AAAC,CACf,gBAAgB,C1FdT,OAAO,C0Fed,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,MAAM,CAInB,AATH,AAMI,QANI,CAEN,gBAAgB,CAId,QAAQ,AAAC,CACP,IAAI,CAAE,QAAQ,CACf,AAKL,AAAA,UAAU,CACV,gBAAgB,ChDhChB,aAAa,CAAb,aAAa,CAAb,aAAa,CAAb,aAAa,AgDgCI,CACf,YAAY,C1FmCM,MAAa,C0FlC/B,aAAa,C1FkCK,MAAa,C0FjChC,AAGD,AAAA,cAAc,AAAC,CACb,QAAQ,CAAE,KAAK,CACf,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,IAAI,CACb,KAAK,CAAE,OAAO,CACd,MAAM,CAAE,OAAO,CACf,UAAU,CAAE,MAAM,CAClB,KAAK,C1FxCC,IAAI,C0FyCV,UAAU,C1FjCD,mBAAO,C0FkChB,WAAW,CAAE,IAAI,CAWlB,AArBD,AAWE,cAXY,CAWV,KAAK,CAXT,cAAc,CAYV,KAAK,AAAC,CACN,KAAK,CAAE,KAAK,CACb,AAdH,AAeE,cAfY,CAeV,KAAK,AAAC,CACN,UAAU,C1FxCH,OAAO,C0FyCf,AAjBH,AAkBE,cAlBY,CAkBZ,CAAC,AAAC,CACA,WAAW,CAAE,GAAG,CACjB,AEtDH,UAAU,CAAV,MAAU,CACR,EAAE,CACA,SAAS,CAAE,UAAU,CACrB,OAAO,CAAE,CAAC,CAEZ,IAAI,CACF,SAAS,CAAE,QAAQ,CACnB,OAAO,CAAE,CAAC,EAId,AAAA,kBAAkB,CWdlB,QAAQ,CAIJ,SAAS,CAyBL,SAAS,AXfE,CACjB,cAAc,CAAE,MAAM,CACtB,kBAAkB,CAAE,KAAK,CACzB,yBAAyB,CAAE,SAAS,CAAC,gCAA2B,CAAE,OAAO,CAAC,0BAAsB,CACjG,AAID,UAAU,CAAV,MAAU,CACR,EAAE,CACA,OAAO,CAAE,CAAC,CAEZ,IAAI,CACF,OAAO,CAAE,CAAC,EAId,AAAA,kBAAkB,AAAC,CACjB,cAAc,CAAE,MAAM,CACtB,kBAAkB,CAAE,KAAK,CACzB,yBAAyB,CAAE,OAAO,CAAC,0BAAsB,CAC1D,ACpCD,AAGE,oBAHkB,AAGV,CACN,gBAAgB,C7Fcb,OAAO,C6FbV,gBAAgB,CAAE,kDAA6D,CAC/E,eAAe,CAAE,KAAK,CACvB,AAPH,AAGE,sBAHoB,AAGZ,CACN,gBAAgB,C7FQT,OAAO,C6FPd,gBAAgB,CAAE,kDAA6D,CAC/E,eAAe,CAAE,KAAK,CACvB,AAPH,AAGE,oBAHkB,AAGV,CACN,gBAAgB,C7FqBZ,OAAO,C6FpBX,gBAAgB,CAAE,kDAA6D,CAC/E,eAAe,CAAE,KAAK,CACvB,AAPH,AAGE,iBAHe,AAGP,CACN,gBAAgB,C7FuBb,OAAO,C6FtBV,gBAAgB,CAAE,kDAA6D,CAC/E,eAAe,CAAE,KAAK,CACvB,AAPH,AAGE,oBAHkB,AAGV,CACN,gBAAgB,C7FoBX,OAAO,C6FnBZ,gBAAgB,CAAE,kDAA6D,CAC/E,eAAe,CAAE,KAAK,CACvB,AAPH,AAGE,mBAHiB,AAGT,CACN,gBAAgB,C7FkBd,OAAO,C6FjBT,gBAAgB,CAAE,kDAA6D,CAC/E,eAAe,CAAE,KAAK,CACvB,AAPH,AAGE,kBAHgB,AAGR,CACN,gBAAgB,C7FGT,OAAO,C6FFd,gBAAgB,CAAE,kDAA6D,CAC/E,eAAe,CAAE,KAAK,CACvB,AAPH,AAGE,iBAHe,AAGP,CACN,gBAAgB,C7FUT,OAAO,C6FTd,gBAAgB,CAAE,kDAA6D,CAC/E,eAAe,CAAE,KAAK,CACvB,AAPH,AAaE,YAbU,AAaF,CACN,gBAAgB,C7FPT,OAAO,C6FOW,UAAU,CACpC,AAfH,AAaE,YAbU,AAaF,CACN,gBAAgB,C7FNT,OAAO,C6FMW,UAAU,CACpC,AAfH,AAaE,YAbU,AAaF,CACN,gBAAgB,C7FLT,OAAO,C6FKW,UAAU,CACpC,AAfH,AAaE,YAbU,AAaF,CACN,gBAAgB,C7FJT,OAAO,C6FIW,UAAU,CACpC,AAfH,AAaE,YAbU,AAaF,CACN,gBAAgB,C7FHT,OAAO,C6FGW,UAAU,CACpC,AAfH,AAaE,YAbU,AAaF,CACN,gBAAgB,C7FFT,OAAO,C6FEW,UAAU,CACpC,AAfH,AAaE,YAbU,AAaF,CACN,gBAAgB,C7FDT,OAAO,C6FCW,UAAU,CACpC,AAfH,AAaE,YAbU,AAaF,CACN,gBAAgB,C7FAT,OAAO,C6FAW,UAAU,CACpC,AAfH,AAaE,YAbU,AAaF,CACN,gBAAgB,C7FCT,OAAO,C6FDW,UAAU,CACpC,ACdH,AAAA,SAAS,AAAC,CACR,QAAQ,CAAE,iBAAiB,CAC5B,ACDD,AAAA,QAAQ,AAAC,CACP,SAAS,CAAE,KAAK,CACjB,AAED,AAAA,QAAQ,AAAC,CACP,SAAS,CAAE,MAAM,CAClB,AAED,AAAA,cAAc,AAAC,CACb,KAAK,C/FJI,OAAO,C+FIC,UAAU,CAC5B,AAED,AAAA,cAAc,AAAC,CACb,KAAK,C/FPI,OAAO,C+FOC,UAAU,CAC5B,AAED,AAAA,cAAc,AAAC,CACb,KAAK,C/FVI,OAAO,C+FUC,UAAU,CAC5B,AAED,AAAA,cAAc,AAAC,CACb,KAAK,C/FbI,OAAO,C+FaC,UAAU,CAC5B,AAED,AAAA,cAAc,AAAC,CACb,KAAK,C/FhBI,OAAO,C+FgBC,UAAU,CAC5B,AAED,AAAA,cAAc,AAAC,CACb,KAAK,C/FnBI,OAAO,C+FmBC,UAAU,CAC5B,AAED,AAAA,cAAc,AAAC,CACb,KAAK,C/FtBI,OAAO,C+FsBC,UAAU,CAC5B,AAED,AAAA,cAAc,AAAC,CACb,KAAK,C/FzBI,OAAO,C+FyBC,UAAU,CAC5B,AAED,AAAA,cAAc,AAAC,CACb,KAAK,C/F5BI,OAAO,C+F4BC,UAAU,CAC5B,AAED,AAAA,YAAY,AAAC,CACX,MAAM,CAAE,MAAM,CACd,KAAK,CAAE,MAAM,CACb,aAAa,CAAE,IAAI,CACnB,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,eAAe,CAAE,MAAM,CACxB,ACrDD,AAEI,oBAFgB,AAEC,CACf,WAAmB,CAAkB,OAAM,CAAC,KAAK,ChGehD,OAAO,CgGfiD,UAAU,CACpE,AAJL,AAEI,sBAFkB,AAED,CACf,aAAmB,CAAkB,OAAM,CAAC,KAAK,ChGehD,OAAO,CgGfiD,UAAU,CACpE,AAJL,AAEI,sBAFkB,AAED,CACf,WAAmB,CAAkB,OAAM,CAAC,KAAK,ChGS5C,OAAO,CgGT6C,UAAU,CACpE,AAJL,AAEI,wBAFoB,AAEH,CACf,aAAmB,CAAkB,OAAM,CAAC,KAAK,ChGS5C,OAAO,CgGT6C,UAAU,CACpE,AAJL,AAEI,oBAFgB,AAEC,CACf,WAAmB,CAAkB,OAAM,CAAC,KAAK,ChGsB/C,OAAO,CgGtBgD,UAAU,CACpE,AAJL,AAEI,sBAFkB,AAED,CACf,aAAmB,CAAkB,OAAM,CAAC,KAAK,ChGsB/C,OAAO,CgGtBgD,UAAU,CACpE,AAJL,AAEI,iBAFa,AAEI,CACf,WAAmB,CAAkB,OAAM,CAAC,KAAK,ChGwBhD,OAAO,CgGxBiD,UAAU,CACpE,AAJL,AAEI,mBAFe,AAEE,CACf,aAAmB,CAAkB,OAAM,CAAC,KAAK,ChGwBhD,OAAO,CgGxBiD,UAAU,CACpE,AAJL,AAEI,oBAFgB,AAEC,CACf,WAAmB,CAAkB,OAAM,CAAC,KAAK,ChGqB9C,OAAO,CgGrB+C,UAAU,CACpE,AAJL,AAEI,sBAFkB,AAED,CACf,aAAmB,CAAkB,OAAM,CAAC,KAAK,ChGqB9C,OAAO,CgGrB+C,UAAU,CACpE,AAJL,AAEI,mBAFe,AAEE,CACf,WAAmB,CAAkB,OAAM,CAAC,KAAK,ChGmBjD,OAAO,CgGnBkD,UAAU,CACpE,AAJL,AAEI,qBAFiB,AAEA,CACf,aAAmB,CAAkB,OAAM,CAAC,KAAK,ChGmBjD,OAAO,CgGnBkD,UAAU,CACpE,AAJL,AAEI,kBAFc,AAEG,CACf,WAAmB,CAAkB,OAAM,CAAC,KAAK,ChGI5C,OAAO,CgGJ6C,UAAU,CACpE,AAJL,AAEI,oBAFgB,AAEC,CACf,aAAmB,CAAkB,OAAM,CAAC,KAAK,ChGI5C,OAAO,CgGJ6C,UAAU,CACpE,AAJL,AAEI,iBAFa,AAEI,CACf,WAAmB,CAAkB,OAAM,CAAC,KAAK,ChGW5C,OAAO,CgGX6C,UAAU,CACpE,AAJL,AAEI,mBAFe,AAEE,CACf,aAAmB,CAAkB,OAAM,CAAC,KAAK,ChGW5C,OAAO,CgGX6C,UAAU,CACpE,ACJL,AAAA,YAAY,AAAC,CACX,MAAM,CAAE,KAAK,CACd,ACFD,AAAA,UAAU,AAAC,CACT,SAAS,CAAE,aAAa,CACzB,AAED,AAAA,YAAY,AAAC,CACX,SAAS,CAAE,cAAc,CAC1B,ACJD,AACE,SADO,CACP,cAAc,AAAC,CACb,SAAS,CnGsEQ,MAAO,CmG/DzB,AATH,AAGI,SAHK,CACP,cAAc,CAEZ,gBAAgB,AAAC,CAEf,WAAW,CAAE,GAAG,CAChB,SAAS,CAAE,OAAO,CAClB,KAAK,CnGEA,OAAO,CmGDb,AAML,AACE,SADO,AAAA,SAAS,CAChB,gBAAgB,EAAE,KAAK,AAAC,CACtB,OAAO,CAAE,IAAI,CACd,AEjBH,AAMQ,QANA,CAEN,SAAS,AAEN,SAAS,CACR,gBAAgB,EACX,KAAK,CALhB,OAAO,CACL,SAAS,AAEN,SAAS,CACR,gBAAgB,EACX,KAAK,AAAC,CACP,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,MAAM,CAClB,KAAK,CAAE,KAAK,CACZ,cAAc,CAAE,CAAC,CACjB,MAAM,CAAE,CAAC,CACT,WAAW,CAAE,GAAG,CAChB,OAAO,CAAE,OAAO,CAChB,WAAW,CAAE,qBAAqB,CACnC,AAfT,AAkBQ,QAlBA,CAEN,SAAS,AAEN,SAAS,AAaP,KAAK,CACJ,gBAAgB,EAAE,KAAK,CAjB/B,OAAO,CACL,SAAS,AAEN,SAAS,AAaP,KAAK,CACJ,gBAAgB,EAAE,KAAK,AAAC,CACtB,OAAO,CAAE,OAAO,CACjB,AApBT,AAwBI,QAxBI,CAEN,SAAS,CAsBP,SAAS,CAvBb,OAAO,CACL,SAAS,CAsBP,SAAS,AAAC,CACR,QAAQ,CAAE,QAAQ,CAYnB,AArCL,AA0BM,QA1BE,CAEN,SAAS,CAsBP,SAAS,CAEP,cAAc,CAzBpB,OAAO,CACL,SAAS,CAsBP,SAAS,CAEP,cAAc,AAAC,CACb,QAAQ,CAAE,QAAQ,CAClB,SAAS,CAAE,UAAU,CACrB,gBAAgB,CAAE,SAAS,CAC3B,KAAK,CAAE,MAAM,CACb,UAAU,CAAE,OAAO,CACpB,AAhCP,AAiCM,QAjCE,CAEN,SAAS,CAsBP,SAAS,CASP,YAAY,CAhClB,OAAO,CACL,SAAS,CAsBP,SAAS,CASP,YAAY,AAAC,CACX,MAAM,CAAE,IAAI,CACZ,KAAK,CAAE,IAAI,CACZ,ACrCP,AAAA,OAAO,AAAC,CACN,MAAM,CtGsDa,QAAQ,CsGuD5B,AA9GD,AAEE,OAFK,CAEL,iBAAiB,AAAC,CAChB,MAAM,CAAE,MAAM,CACd,KAAK,CAAE,MAAM,CAOd,AAXH,AAKI,OALG,CAEL,iBAAiB,CAGb,KAAK,AAAC,CACN,gBAAgB,CtGCX,OAAO,CsGAb,AAPL,AAQI,OARG,CAEL,iBAAiB,CAMb,MAAM,AAAC,CACP,gBAAgB,CtGDX,OAAO,CsGEb,AAVL,AAYE,OAZK,CAYL,cAAc,AAAC,CACb,KAAK,CAAE,KAAK,CAKb,AAlBH,AAcI,OAdG,CAYL,cAAc,CAEZ,KAAK,AAAC,CACJ,SAAS,CAAE,OAAO,CAClB,MAAM,CAAE,IAAI,CACb,AAjBL,AAmBE,OAnBK,CAmBL,eAAe,AAAC,CACd,KAAK,CAAE,CAAC,CACR,YAAY,CAAE,GAAG,CAAC,KAAK,CtGdhB,OAAO,CsGed,MAAM,CAAE,qBAAyE,CACjF,MAAM,CAAE,SAAS,CAClB,AAxBH,AA0BI,OA1BG,CAyBL,SAAS,CACP,SAAS,AAAC,CACR,MAAM,CtG4BS,QAAQ,CsG3BvB,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,OAAO,CAAE,SAAS,CAInB,AAlCL,AA+BM,OA/BC,CAyBL,SAAS,CACP,SAAS,CAKL,KAAK,AAAC,CACN,OAAO,CAAE,IAAI,CACd,AAjCP,AAmCI,OAnCG,CAyBL,SAAS,CAUL,KAAK,AAAC,CACN,OAAO,CAAE,IAAI,CACd,AArCL,AAuCE,OAvCK,CAuCL,SAAS,AAAC,CACR,QAAQ,CAAE,MAAM,CAKjB,AA7CH,AAyCI,OAzCG,CAuCL,SAAS,CAEP,cAAc,AAAC,CACb,KAAK,CAAE,mBAAsE,CAC7E,KAAK,CAAE,MAAsB,CAC9B,AA5CL,AA8CE,OA9CK,CA8CL,cAAc,AAAC,CACb,OAAO,CAAE,CAAC,CACV,MAAM,CAAE,IAAI,CACZ,QAAQ,CAAE,MAAM,CA2CjB,AA5FH,AAkDI,OAlDG,CA8CL,cAAc,CAIZ,gBAAgB,AAAC,CACf,gBAAgB,CtGlCf,OAAO,CsGmCR,MAAM,CAAE,GAAG,CAAC,KAAK,CtGnChB,OAAO,CsGoCR,WAAW,CAAE,OAAO,CACpB,cAAc,CAAE,OAAO,CACvB,KAAK,CtGlDH,IAAI,CsGmDP,AAxDL,AAyDI,OAzDG,CA8CL,cAAc,CAWZ,cAAc,AAAC,CACb,WAAW,CAAE,MAAM,CACnB,WAAW,CAAE,MAAM,CACnB,cAAc,CAAE,MAAM,CACtB,WAAW,CAAE,GAAG,CAAC,KAAK,CtGtDjB,OAAO,CsGuDZ,YAAY,CAAE,GAAG,CAAC,KAAK,CtGvDlB,OAAO,CsGwDZ,aAAa,CAAE,GAAG,CAAC,KAAK,CtGxDnB,OAAO,CsGyDZ,WAAW,CAAE,MAAM,CA2BpB,AA3FL,AAiEM,OAjEC,CA8CL,cAAc,CAWZ,cAAc,CAQZ,oBAAoB,AAAC,CACnB,QAAQ,CAAE,QAAQ,CAClB,MAAM,CAAE,MAAM,CACd,KAAK,CAAE,MAAM,CAed,AAnFP,AAqEQ,OArED,CA8CL,cAAc,CAWZ,cAAc,CAQZ,oBAAoB,CAIlB,GAAG,AAAC,CACF,MAAM,CAAE,MAAM,CACd,KAAK,CAAE,MAAM,CACd,AAxET,AAyEQ,OAzED,CA8CL,cAAc,CAWZ,cAAc,CAQZ,oBAAoB,CAQlB,iBAAiB,AAAC,CAChB,gBAAgB,CtGnEf,OAAO,CsGoER,MAAM,CAAE,OAAO,CACf,KAAK,CAAE,OAAO,CACd,aAAa,CAAE,IAAI,CACnB,QAAQ,CAAE,QAAQ,CAClB,MAAM,CAAE,CAAC,CACT,KAAK,CAAE,CAAC,CACR,MAAM,CAAE,QAAO,CAAC,KAAK,CtG5EvB,IAAI,CsG6EH,AAlFT,AAoFM,OApFC,CA8CL,cAAc,CAWZ,cAAc,CA2BZ,cAAc,AAAC,CACb,SAAS,CAAE,KAAK,CACjB,AAtFP,AAuFM,OAvFC,CA8CL,cAAc,CAWZ,cAAc,CA8BV,MAAM,AAAC,CACP,gBAAgB,CtGjFb,OAAO,CsGkFV,KAAK,CtG3EF,OAAO,CsG4EX,A/F/BH,MAAM,mB+FmCN,CA9FJ,AA8FI,OA9FG,CA8FH,SAAS,AAAC,CACR,QAAQ,CAAE,QAAQ,CAKnB,AApGL,AAgGM,OAhGC,CA8FH,SAAS,CAEP,cAAc,AAAC,CACb,KAAK,CAAE,IAAI,CACX,KAAK,CAAE,CAAC,CACT,AAnGP,AAqGI,OArGG,CAqGH,cAAc,AAAC,CACb,KAAK,CAAE,gBAAgB,CAMxB,AA5GL,AAwGQ,OAxGD,CAqGH,cAAc,CAEZ,cAAc,CACZ,cAAc,AAAC,CACb,SAAS,CAAE,SAAS,CACrB,CANJ,AAYL,AAGM,OAHC,AAAA,YAAY,CACjB,WAAW,CACT,SAAS,CACP,SAAS,AAAC,CACR,KAAK,CtG/GL,qBAAI,CsGsHL,AAXP,AAKQ,OALD,AAAA,YAAY,CACjB,WAAW,CACT,SAAS,CACP,SAAS,CAEL,KAAK,AAAC,CACN,KAAK,CtGjHP,IAAI,CsGkHH,AAPT,AAQQ,OARD,AAAA,YAAY,CACjB,WAAW,CACT,SAAS,CACP,SAAS,CAKL,MAAM,AAAC,CACP,KAAK,CtGpHP,IAAI,CsGqHH,AAMT,AAGM,OAHC,AAAA,aAAa,CAClB,WAAW,CACT,SAAS,CACP,SAAS,AAAC,CACR,KAAK,CtG3HF,OAAO,CsGkIX,AAXP,AAKQ,OALD,AAAA,aAAa,CAClB,WAAW,CACT,SAAS,CACP,SAAS,CAEL,KAAK,AAAC,CACN,KAAK,CtG5HJ,OAAO,CsG6HT,AAPT,AAQQ,OARD,AAAA,aAAa,CAClB,WAAW,CACT,SAAS,CACP,SAAS,CAKL,MAAM,AAAC,CACP,KAAK,CtG9HJ,OAAO,CsG+HT,AC1IT,AAAA,QAAQ,AAAC,CACL,KAAK,CvG0DiB,MAAM,CuGzD5B,UAAU,CAAE,KAAK,CAwLpB,AA1LD,AAII,QAJI,CAIJ,SAAS,AAAC,CACN,QAAQ,CAAE,QAAQ,CAqFrB,AA1FL,AAOQ,QAPA,CAIJ,SAAS,CAGH,UAAU,AAAC,CACT,aAAa,CAAE,IAAI,CACtB,AATT,AAWQ,QAXA,CAIJ,SAAS,CAOL,SAAS,AAAC,CACN,UAAU,CAAE,MAAM,CAClB,OAAO,CAAE,YAAY,CACrB,KAAK,CvG6CS,MAAM,CuGvCvB,AApBT,AAgBY,QAhBJ,CAIJ,SAAS,CAOL,SAAS,CAKL,IAAI,AAAC,CACD,SAAS,CAAE,OAAO,CAClB,OAAO,CAAE,KAAK,CACjB,AAnBb,AAuBY,QAvBJ,CAIJ,SAAS,AAkBJ,OAAO,CACJ,SAAS,AAAC,CACN,WAAW,CAAE,GAAG,CACnB,AAzBb,AA6BQ,QA7BA,CAIJ,SAAS,CAyBL,SAAS,AAAC,CACN,QAAQ,CAAE,QAAQ,CAClB,IAAI,CAAE,yBAAiJ,CACvJ,OAAO,CAAE,CAAC,CACV,GAAG,CAAE,GAAG,CAQX,AAzCT,AAqCY,QArCJ,CAIJ,SAAS,CAyBL,SAAS,CAQL,eAAe,AAAC,CACZ,aAAa,CvGYb,MAAO,CuGXP,UAAU,CvGOb,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAhCrB,mBAAO,CuG0BL,AAxCb,AA2CQ,QA3CA,CAIJ,SAAS,CAuCL,WAAW,AAAC,CACR,OAAO,CAAE,IAAI,CACb,UAAU,CAAE,IAAI,CACnB,AA9CT,AAkDY,QAlDJ,CAIJ,SAAS,CA4CL,SAAS,CAEL,eAAe,CAlD3B,QAAQ,CAIJ,SAAS,CA6CL,WAAW,CACP,eAAe,AAAC,CACZ,OAAO,CAAE,OAAO,CAChB,SAAS,CAAE,KAAK,CAChB,SAAS,CvGoBJ,MAAO,CuGnBZ,MAAM,CAAE,UAAU,CAkCrB,AAxFb,AAwDgB,QAxDR,CAIJ,SAAS,CA4CL,SAAS,CAEL,eAAe,CAMX,gBAAgB,CAxDhC,QAAQ,CAIJ,SAAS,CA6CL,WAAW,CACP,eAAe,CAMX,gBAAgB,AAAC,CACb,MAAM,CAAE,CAAC,CACT,WAAW,CAAE,MAAM,CACnB,OAAO,CAAE,YAAY,CACrB,cAAc,CAAE,SAAS,CACzB,WAAW,CAAE,GAAG,CAChB,SAAS,CAAE,OAAO,CAClB,KAAK,CvGrDd,OAAO,CuGsDD,AAhEjB,AAkEgB,QAlER,CAIJ,SAAS,CA4CL,SAAS,CAEL,eAAe,CAgBX,cAAc,CAlE9B,QAAQ,CAIJ,SAAS,CA6CL,WAAW,CACP,eAAe,CAgBX,cAAc,AAAC,CACX,OAAO,CAAE,WAAW,CACpB,MAAM,CAAE,QAAQ,CAChB,OAAO,CAAE,KAAK,CACd,KAAK,CvGxDd,OAAO,CuGyDE,eAAe,CAAE,IAAI,CACrB,aAAa,CvGtBjB,MAAO,CuGuBH,WAAW,CAAE,MAAM,CActB,AAvFjB,AA2EoB,QA3EZ,CAIJ,SAAS,CA4CL,SAAS,CAEL,eAAe,CAgBX,cAAc,CASR,KAAK,CA3E3B,QAAQ,CAIJ,SAAS,CA6CL,WAAW,CACP,eAAe,CAgBX,cAAc,CASR,KAAK,AAAC,CACJ,gBAAgB,CvGrE7B,OAAO,CuGsEG,AA7ErB,AA+EoB,QA/EZ,CAIJ,SAAS,CA4CL,SAAS,CAEL,eAAe,CAgBX,cAAc,CAaR,MAAM,CA/E5B,QAAQ,CAIJ,SAAS,CA6CL,WAAW,CACP,eAAe,CAgBX,cAAc,CAaR,MAAM,AAAC,CACL,gBAAgB,CvGxE7B,OAAO,CuGyEG,AAjFrB,AAmFoB,QAnFZ,CAIJ,SAAS,CA4CL,SAAS,CAEL,eAAe,CAgBX,cAAc,AAiBT,OAAO,CAnF5B,QAAQ,CAIJ,SAAS,CA6CL,WAAW,CACP,eAAe,CAgBX,cAAc,AAiBT,OAAO,AAAC,CACL,KAAK,CvGnEtB,OAAO,CuGoEU,WAAW,CAAE,GAAG,CACnB,AAtFrB,AA4FI,QA5FI,CA4FJ,cAAc,AAAC,CACX,KAAK,CAAE,MAAM,CACb,MAAM,CAAE,MAAM,CACd,UAAU,CAAE,MAAM,CAClB,aAAa,CAAE,IAAI,CACnB,MAAM,CAAE,OAAO,CAgBlB,AAjHL,AAmGQ,QAnGA,CA4FJ,cAAc,EAOP,KAAK,AAAC,CACL,WAAW,CAAE,GAAG,CAChB,OAAO,CAAE,OAAO,CAChB,WAAW,CAAE,qBAAqB,CAClC,YAAY,CAAE,MAAM,CACvB,AAxGT,AA0GQ,QA1GA,CA4FJ,cAAc,CAcR,KAAK,AAAC,CACJ,eAAe,CAAE,IAAI,CACxB,AA5GT,AA8GQ,QA9GA,CA4FJ,cAAc,CAkBR,KAAK,AAAC,CACJ,OAAO,CAAE,IAAI,CAChB,AAhHT,AAmHI,QAnHI,AAmHH,QAAQ,AAAC,CACN,KAAK,CAAE,YAAY,CACnB,QAAQ,CAAE,MAAM,CAWnB,AAhIL,AAuHQ,QAvHA,AAmHH,QAAQ,CAIL,cAAc,EAAE,KAAK,AAAC,CAClB,OAAO,CAAE,OAAO,CAChB,WAAW,CAAE,qBAAqB,CAClC,WAAW,CAAE,OAAO,CACvB,AA3HT,AA6HQ,QA7HA,AAmHH,QAAQ,CAUL,aAAa,AAAC,CACV,OAAO,CAAE,IAAI,CAChB,AA/HT,AAkII,QAlII,CAkIJ,cAAc,AAAC,CACX,MAAM,CvG5EO,QAAQ,CuG6ErB,eAAe,CAAE,IAAI,CACrB,SAAS,CAAE,IAAI,CACf,WAAW,CAAE,GAAG,CAChB,OAAO,CAAE,WAAW,CACpB,UAAU,CAAE,MAAM,CAClB,cAAc,CAAE,SAAS,CACzB,cAAc,CAAE,OAAO,CACvB,OAAO,CAAE,CAAC,CASb,AApJL,AA6IQ,QA7IA,CAkIJ,cAAc,CAWV,mBAAmB,CAAC,CAAC,AAAC,CAClB,SAAS,CAAE,IAAI,CAClB,AA/IT,AAiJQ,QAjJA,CAkIJ,cAAc,CAeV,mBAAmB,AAAC,CAChB,OAAO,CAAE,IAAI,CAChB,AAnJT,AAsJI,QAtJI,CAsJJ,EAAE,AAAA,gBAAgB,AAAC,CACf,MAAM,CAAE,WAAW,CACtB,AAxJL,AA0JI,QA1JI,CA0JJ,gBAAgB,AAAC,CACb,UAAU,CAAE,MAAM,CAClB,OAAO,CAAE,MAAM,CACf,WAAW,CAAE,GAAG,CAChB,SAAS,CAAE,OAAO,CAErB,AAhKL,AAkKI,QAlKI,CAkKJ,aAAa,AAAC,CACV,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,MAAM,CACtB,WAAW,CAAE,MAAM,CACnB,SAAS,CpGoHa,OAAsB,CoGnH5C,aAAa,CvGrHL,MAAO,CuGsHf,KAAK,CvGnKL,qBAAI,CuGoKJ,WAAW,CAAE,IAAI,CACjB,YAAY,CAAE,IAAI,CAClB,aAAa,CAAE,IAAI,CACnB,OAAO,CAAE,IAAI,CACb,gBAAgB,CvG9JhB,eAAI,CuG0KP,AAzLL,AA8KQ,QA9KA,CAkKJ,aAAa,CAYT,0BAA0B,AAAC,CACvB,MAAM,CAAE,IAAI,CACZ,OAAO,CAAE,KAAK,CACjB,AAjLT,AAkLQ,QAlLA,CAkKJ,aAAa,CAgBT,mBAAmB,AAAC,CAChB,WAAW,CAAE,IAAI,CACpB,AApLT,AAqLQ,QArLA,CAkKJ,aAAa,CAmBT,CAAC,AAAC,CACE,SAAS,CAAE,OAAO,CAClB,KAAK,CvGlLT,qBAAI,CuGmLH,AhG7HL,MAAM,mBgGkIN,CAAA,AAAA,QAAQ,AAAC,CACL,KAAK,CvGrIQ,KAAK,CuGqIS,UAAU,CAsJxC,AAvJD,AAMQ,QANA,CAGJ,SAAS,CAGL,SAAS,AAAC,CACN,QAAQ,CAAE,QAAQ,CAClB,IAAI,CAAE,CAAC,CACP,OAAO,CAAE,CAAC,CACV,GAAG,CAAE,CAAC,CACN,SAAS,CAAE,IAAI,CAMlB,AAjBT,AAaY,QAbJ,CAGJ,SAAS,CAGL,SAAS,CAOL,eAAe,AAAC,CACZ,aAAa,CAAE,CAAC,CAChB,UAAU,CAAE,IAAI,CACnB,AAhBb,AAmBQ,QAnBA,CAGJ,SAAS,CAgBL,WAAW,AAAC,CACR,OAAO,CAAE,KAAK,CACd,UAAU,CvG5IJ,MAAM,CAAC,KAAI,CAAC,IAAI,CuG6IzB,AAtBT,AAwBQ,QAxBA,CAGJ,SAAS,CAqBL,SAAS,CAxBjB,QAAQ,CAGJ,SAAS,CAsBL,WAAW,AAAC,CACR,MAAM,CAAE,MAAM,CACjB,AA3BT,AA6BQ,QA7BA,CAGJ,SAAS,CA0BL,SAAS,AAAC,CACN,OAAO,CAAE,KAAK,CACd,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,IAAI,CAChB,OAAO,CAAE,IAAI,CACb,KAAK,CvGtKA,KAAK,CuGmMb,AA/DT,AAoCY,QApCJ,CAGJ,SAAS,CA0BL,SAAS,CAOL,CAAC,AAAC,CACE,SAAS,CAAE,OAAO,CAClB,YAAY,CAAE,OAAO,CACxB,AAvCb,AAyCY,QAzCJ,CAGJ,SAAS,CA0BL,SAAS,CAYL,IAAI,AAAC,CACD,SAAS,CAAE,OAAO,CAClB,OAAO,CAAE,MAAM,CAClB,AA5Cb,AAgDgB,QAhDR,CAGJ,SAAS,CA0BL,SAAS,CAkBJ,AAAA,WAAC,CAAY,UAAU,AAAtB,GACK,KAAK,AAAC,CACL,KAAK,CAAE,IAAI,CACX,UAAU,CAAE,MAAM,CAClB,KAAK,CAAE,KAAK,CACZ,cAAc,CAAE,CAAC,CACjB,MAAM,CAAE,CAAC,CACT,WAAW,CAAE,GAAG,CAChB,OAAO,CAAE,OAAO,CAChB,WAAW,CAAE,qBAAqB,CACrC,AAzDjB,AA2DgB,QA3DR,CAGJ,SAAS,CA0BL,SAAS,AA8BA,UAAU,CAZd,AAAA,WAAC,CAAY,UAAU,AAAtB,GAYe,KAAK,AAAC,CACf,OAAO,CAAE,OAAO,CACnB,AA7DjB,AAmEQ,QAnEA,CAkEJ,cAAc,CACV,mBAAmB,CAAC,CAAC,AAAC,CAClB,SAAS,CAAE,IAAI,CAClB,AArET,AAuEQ,QAvEA,CAkEJ,cAAc,CAKV,mBAAmB,AAAC,CAChB,OAAO,CAAE,MAAM,CAClB,AAzET,AA4EI,QA5EI,CA4EJ,gBAAgB,AAAC,CACb,UAAU,CAAE,IAAI,CACnB,AA9EL,AAgFI,QAhFI,AAgFH,QAAQ,AAAC,CACN,QAAQ,CAAE,OAAO,CACjB,KAAK,CvGpNS,MAAM,CuGoNY,UAAU,CAoE7C,AAtJL,AAuFY,QAvFJ,AAgFH,QAAQ,CAIL,SAAS,CAGL,SAAS,AAAC,CACN,QAAQ,CAAE,QAAQ,CAClB,IAAI,CAAE,yBAAiJ,CACvJ,OAAO,CAAE,CAAC,CACV,GAAG,CAAE,GAAG,CAER,cAAc,CAAE,MAAM,CACtB,kBAAkB,CAAE,KAAK,CACzB,yBAAyB,CAAE,SAAS,CAAC,gCAA8B,EAAE,OAAO,CAAC,0BAAyB,CAMzG,AArGb,AAiGgB,QAjGR,AAgFH,QAAQ,CAIL,SAAS,CAGL,SAAS,CAUL,eAAe,AAAC,CACZ,UAAU,CvGjPrB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAhCrB,mBAAO,CuGkRM,aAAa,CvG9OrB,MAAO,CuG+OF,AApGjB,AAuGY,QAvGJ,AAgFH,QAAQ,CAIL,SAAS,CAmBL,WAAW,AAAC,CACR,OAAO,CAAE,IAAI,CACb,UAAU,CAAE,IAAI,CACnB,AA1Gb,AA4GY,QA5GJ,AAgFH,QAAQ,CAIL,SAAS,CAwBL,SAAS,CA5GrB,QAAQ,AAgFH,QAAQ,CAIL,SAAS,CAyBL,WAAW,AAAC,CACR,MAAM,CAAE,CAAC,CACZ,AA/Gb,AAiHY,QAjHJ,AAgFH,QAAQ,CAIL,SAAS,CA6BH,UAAU,AAAC,CACT,aAAa,CAAE,IAAI,CACtB,AAnHb,AAqHY,QArHJ,AAgFH,QAAQ,CAIL,SAAS,CAiCL,SAAS,AAAC,CACN,UAAU,CAAE,MAAM,CAClB,OAAO,CAAE,YAAY,CACrB,KAAK,CvG1PC,MAAM,CuGwQf,AAtIb,AA0HgB,QA1HR,AAgFH,QAAQ,CAIL,SAAS,CAiCL,SAAS,CAKL,IAAI,AAAC,CACD,SAAS,CAAE,OAAO,CAClB,OAAO,CAAE,KAAK,CACjB,AA7HjB,AA+HgB,QA/HR,AAgFH,QAAQ,CAIL,SAAS,CAiCL,SAAS,CAUL,CAAC,AAAC,CACE,YAAY,CAAE,CAAC,CAClB,AAjIjB,AAmIgB,QAnIR,AAgFH,QAAQ,CAIL,SAAS,CAiCL,SAAS,CAcJ,AAAA,WAAC,CAAY,UAAU,AAAtB,GAAyB,KAAK,AAAC,CAC7B,OAAO,CAAE,IAAI,CAChB,AArIjB,AA0IY,QA1IJ,AAgFH,QAAQ,CAyDL,cAAc,CACV,mBAAmB,CAAC,CAAC,AAAC,CAClB,SAAS,CAAE,IAAI,CAClB,AA5Ib,AA8IY,QA9IJ,AAgFH,QAAQ,CAyDL,cAAc,CAKV,mBAAmB,AAAC,CAChB,OAAO,CAAE,IAAI,CAChB,AAhJb,AAmJQ,QAnJA,AAgFH,QAAQ,CAmEL,gBAAgB,AAAC,CACb,UAAU,CAAE,MAAM,CACrB,CAER,AAML,AACI,cADU,CACV,cAAc,AAAC,CACX,KAAK,CvGhVF,OAAO,CuGiVb,AAHL,AAKI,cALU,CAKV,EAAE,AAAA,gBAAgB,AAAC,CACf,UAAU,CAAE,GAAG,CAAC,KAAK,CvGzVlB,OAAO,CuG0Vb,AAPL,AASI,cATU,CASV,gBAAgB,AAAC,CACb,KAAK,CvG1VF,OAAO,CuG2Vb,AAXL,AAcQ,cAdM,CAaV,SAAS,CACL,SAAS,AAAC,CACN,KAAK,CvG9VN,OAAO,CuGkXT,AAnCT,AAiBY,cAjBE,CAaV,SAAS,CACL,SAAS,CAGL,CAAC,AAAC,CACE,KAAK,CvGnWV,OAAO,CuGoWL,AAnBb,AAqBY,cArBE,CAaV,SAAS,CACL,SAAS,CAOH,MAAM,CArBpB,cAAc,CAaV,SAAS,CACL,SAAS,CAQH,KAAK,CAtBnB,cAAc,CAaV,SAAS,CACL,SAAS,CASH,KAAK,AAAC,CACJ,KAAK,CvGtWV,OAAO,CuG2WL,AA7Bb,AA0BgB,cA1BF,CAaV,SAAS,CACL,SAAS,CAOH,MAAM,CAKJ,CAAC,CA1BjB,cAAc,CAaV,SAAS,CACL,SAAS,CAQH,KAAK,CAIH,CAAC,CA1BjB,cAAc,CAaV,SAAS,CACL,SAAS,CASH,KAAK,CAGH,CAAC,AAAC,CACE,KAAK,CvGzWd,OAAO,CuG0WD,AA5BjB,AAgCY,cAhCE,CAaV,SAAS,CACL,SAAS,CAkBJ,AAAA,WAAC,CAAY,UAAU,AAAtB,GAAyB,KAAK,AAAC,CAC7B,KAAK,CvGjXV,OAAO,CuGkXL,AAlCb,AAsCY,cAtCE,CAaV,SAAS,AAwBJ,OAAO,CACJ,SAAS,AAAC,CACN,KAAK,CvGrXV,OAAO,CuG0XL,AA5Cb,AAyCgB,cAzCF,CAaV,SAAS,AAwBJ,OAAO,CACJ,SAAS,CAGL,CAAC,AAAC,CACE,KAAK,CvGxXd,OAAO,CuGyXD,AA3CjB,AAiDI,cAjDU,CAiDV,cAAc,AAAC,CACX,gBAAgB,CvGrYb,OAAO,CuG8Yb,AA3DL,AAoDQ,cApDM,CAiDV,cAAc,EAGP,KAAK,AAAC,CACL,KAAK,CvGrYN,OAAO,CuGsYT,AAtDT,AAwDQ,cAxDM,CAiDV,cAAc,CAOR,KAAK,AAAC,CACJ,gBAAgB,CvG3YjB,OAAO,CuG4YT,AAKT,AACI,aADS,CACT,cAAc,AAAC,CACX,KAAK,CvGtZL,IAAI,CuGuZP,AAHL,AAKI,aALS,CAKT,EAAE,AAAA,gBAAgB,AAAC,CACf,UAAU,CAAE,GAAG,CAAC,KAAK,CvG1ZrB,sBAAI,CuG2ZP,AAPL,AASI,aATS,CAST,gBAAgB,AAAC,CACb,KAAK,CvG9ZL,qBAAI,CuG+ZP,AAXL,AAcQ,aAdK,CAaT,SAAS,CACL,SAAS,AAAC,CACN,KAAK,CvGnaT,qBAAI,CuGubH,AAnCT,AAiBY,aAjBC,CAaT,SAAS,CACL,SAAS,CAGL,CAAC,AAAC,CACE,KAAK,CvGtab,qBAAI,CuGuaC,AAnBb,AAqBY,aArBC,CAaT,SAAS,CACL,SAAS,CAOH,MAAM,CArBpB,aAAa,CAaT,SAAS,CACL,SAAS,CAQH,KAAK,CAtBnB,aAAa,CAaT,SAAS,CACL,SAAS,CASH,KAAK,AAAC,CACJ,KAAK,CvG5ab,IAAI,CuGibC,AA7Bb,AA0BgB,aA1BH,CAaT,SAAS,CACL,SAAS,CAOH,MAAM,CAKJ,CAAC,CA1BjB,aAAa,CAaT,SAAS,CACL,SAAS,CAQH,KAAK,CAIH,CAAC,CA1BjB,aAAa,CAaT,SAAS,CACL,SAAS,CASH,KAAK,CAGH,CAAC,AAAC,CACE,KAAK,CvG/ajB,IAAI,CuGgbK,AA5BjB,AAgCY,aAhCC,CAaT,SAAS,CACL,SAAS,CAkBJ,AAAA,WAAC,CAAY,UAAU,AAAtB,GAAyB,KAAK,AAAC,CAC7B,KAAK,CvGrbb,qBAAI,CuGsbC,AAlCb,AAsCY,aAtCC,CAaT,SAAS,AAwBJ,OAAO,CACJ,SAAS,AAAC,CACN,KAAK,CvG3bb,IAAI,CuGgcC,AA5Cb,AAyCgB,aAzCH,CAaT,SAAS,AAwBJ,OAAO,CACJ,SAAS,CAGL,CAAC,AAAC,CACE,KAAK,CvG9bjB,IAAI,CuG+bK,AA3CjB,AAiDI,aAjDS,CAiDT,cAAc,AAAC,CACX,gBAAgB,CvGtchB,qBAAI,CuG+cP,AA3DL,AAoDQ,aApDK,CAiDT,cAAc,EAGP,KAAK,AAAC,CACL,KAAK,CvGzcT,qBAAI,CuG0cH,AAtDT,AAwDQ,aAxDK,CAiDT,cAAc,CAOR,KAAK,AAAC,CACJ,gBAAgB,CvG7cpB,sBAAI,CuG8cH,AA1DT,AA8DQ,aA9DK,AA6DR,QAAQ,CACL,cAAc,EAAE,KAAK,AAAC,CAClB,KAAK,CvGndT,qBAAI,CuGodH,AC1dT,AAAA,WAAW,AAAC,CACV,aAAa,CAAE,IAAI,CACnB,MAAM,CAAE,MAAM,CACd,KAAK,CAAE,MAAM,CACb,SAAS,CAAE,IAAI,CACf,OAAO,CAAE,WAAW,CACpB,WAAW,CAAE,MAAM,CACnB,eAAe,CAAE,MAAM,CAWxB,AAlBD,AAQE,WARS,AAQR,OAAO,CxDoDV,aAAa,CwD5Db,WAAW,AxD4DK,IAAI,AwDpDT,CACP,MAAM,CAAE,MAAM,CACd,KAAK,CAAE,MAAM,CACb,SAAS,CAAE,OAAO,CACnB,AAZH,AAaE,WAbS,AAaR,OAAO,CxDgDV,aAAa,CwD7Db,WAAW,AxD6DK,IAAI,AwDhDT,CACP,MAAM,CAAE,MAAM,CACd,KAAK,CAAE,MAAM,CACb,SAAS,CAAE,OAAO,CACnB,AAGH,AAAA,eAAe,AAAC,CACd,OAAO,CAAE,CAAC,CACV,QAAQ,CAAE,MAAM,CAChB,OAAO,CAAE,WAAW,CACpB,WAAW,CAAE,OAAO,CACpB,eAAe,CAAE,MAAM,CA0BxB,AA/BD,AAME,eANa,CAMb,KAAK,AAAC,CACJ,UAAU,CxGXN,gBAAI,CwGYR,OAAO,CAAE,YAAY,CACrB,OAAO,CrGqWmB,OAAO,CACP,MAAM,CqGrWjC,AAVH,AAWE,eAXa,CAWb,KAAK,AAAC,CACJ,OAAO,CAAE,YAAY,CACrB,OAAO,CrGiWmB,OAAO,CACP,MAAM,CqGjWjC,AAdH,AAgBI,eAhBW,AAeZ,OAAO,CACN,KAAK,CxDwBT,aAAa,CwDxCb,eAAe,AxDwCC,IAAI,CwDxBhB,KAAK,AAAC,CACJ,OAAO,CrGuWiB,MAAM,CACN,KAAK,CqGvW9B,AAlBL,AAmBI,eAnBW,AAeZ,OAAO,CAIN,KAAK,CxDqBT,aAAa,CwDxCb,eAAe,AxDwCC,IAAI,CwDrBhB,KAAK,AAAC,CACJ,OAAO,CrGoWiB,MAAM,CACN,KAAK,CqGpW9B,AArBL,AAwBI,eAxBW,AAuBZ,OAAO,CACN,KAAK,CxDiBT,aAAa,CwDzCb,eAAe,AxDyCC,IAAI,CwDjBhB,KAAK,AAAC,CACJ,OAAO,CrGoWiB,KAAK,CACL,IAAI,CqGpW7B,AA1BL,AA2BI,eA3BW,AAuBZ,OAAO,CAIN,KAAK,CxDcT,aAAa,CwDzCb,eAAe,AxDyCC,IAAI,CwDdhB,KAAK,AAAC,CACJ,OAAO,CrGiWiB,KAAK,CACL,IAAI,CqGjW7B,AC/CL,AAGI,KAHC,CACH,YAAY,CAEV,SAAS,AAAC,CACR,WAAW,CAAE,CAAC,CAIf,AARL,AAKM,KALD,CACH,YAAY,CAEV,SAAS,CAEP,cAAc,AAAC,CACb,WAAW,CAAE,GAAG,CACjB,AAPP,AAWE,KAXG,CAWH,YAAY,CAAA,AAAA,WAAC,CAAY,UAAU,AAAtB,CAAwB,CACnC,eAAe,CAAE,IAAI,CACrB,QAAQ,CAAE,QAAQ,CAClB,OAAO,CAAE,+BAA+B,CAkBzC,AAhCH,AAeI,KAfC,CAWH,YAAY,CAAA,AAAA,WAAC,CAAY,UAAU,AAAtB,GAIR,KAAK,AAAC,CACP,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,CAAC,CACR,GAAG,CAAE,CAAC,CACN,aAAa,CAAE,QAAQ,CACvB,WAAW,CAAE,IAAI,CACjB,WAAW,CAAE,GAAG,CAChB,OAAO,CAAE,OAAO,CAChB,WAAW,CAAE,qBAAqB,CAClC,KAAK,CzGhBA,OAAO,CyGiBb,AAzBL,AA0BI,KA1BC,CAWH,YAAY,AAeT,UAAU,CAfD,AAAA,WAAC,CAAY,UAAU,AAAtB,CAeC,CACV,aAAa,CzGsBH,MAAO,CyGlBlB,AA/BL,AA4BM,KA5BD,CAWH,YAAY,AAeT,UAAU,CAfD,AAAA,WAAC,CAAY,UAAU,AAAtB,GAiBN,KAAK,AAAC,CACP,OAAO,CAAE,OAAO,CACjB,AC/BP,AAAA,WAAW,AAAC,CACV,QAAQ,CAAE,QAAQ,CAClB,MAAM,CAAE,KAAK,CACb,KAAK,CAAE,IAAI,CAIZ,AnGoDG,MAAM,mBmG3DV,CAAA,AAAA,WAAW,AAAC,CAKR,MAAM,CAAE,KAAK,CAEhB,CAAA,AAGD,AAAA,UAAU,AAAC,CACT,QAAQ,CAAE,QAAQ,CAClB,MAAM,CAAE,KAAK,CACb,KAAK,CAAE,IAAI,CAIZ,AnG0CG,MAAM,mBmGjDV,CAAA,AAAA,UAAU,AAAC,CAKP,MAAM,CAAE,KAAK,CAEhB,CAAA,AAGD,AAAA,UAAU,AAAC,CACT,QAAQ,CAAE,QAAQ,CAClB,MAAM,CAAE,KAAK,CACb,KAAK,CAAE,IAAI,CAIZ,AnGgCG,MAAM,mBmGvCV,CAAA,AAAA,UAAU,AAAC,CAKP,MAAM,CAAE,kBAAkB,CAAC,UAAU,CAExC,CAAA,ACzBD,AAAA,eAAe,AAAC,CACd,UAAU,CAAE,sDAAiB,CAC7B,mBAAmB,CAAE,MAAM,CAC3B,eAAe,CAAE,KAAK,CACvB,AAED,AAAA,kBAAkB,AAAC,CACjB,UAAU,CAAE,sDAAoB,CAChC,mBAAmB,CAAE,MAAM,CAC3B,eAAe,CAAE,KAAK,CACvB,AAED,AAAA,kBAAkB,AAAC,CACjB,UAAU,CAAE,sDAAoB,CAChC,mBAAmB,CAAE,MAAM,CAC3B,eAAe,CAAE,KAAK,CACvB,AAED,AAGI,IAHA,AAAA,KAAK,CAEP,gBAAgB,AAAA,MAAM,CACpB,KAAK,AAAC,CACJ,WAAW,CAAE,MAAM,CACpB,AALL,AAQE,IARE,AAAA,KAAK,CAQP,kBAAkB,AAAC,CACjB,SAAS,CAAE,MAAM,CACjB,aAAa,CAAE,KAAK,CACpB,OAAO,CAAE,WAAW,CACrB,AAZH,AAcE,IAdE,AAAA,KAAK,CAcP,SAAS,AAAC,CACR,SAAS,CAAE,MAAM,CACjB,aAAa,CAAE,KAAK,CACpB,OAAO,CAAE,YAAY,CACtB,AAIH,AAAA,WAAW,AAAC,CvFrCV,KAAK,CpBAC,IAAI,C+BAR,gBAAgB,C/BwBL,OAAO,CoBtBpB,YAAY,CpBFN,IAAI,C2GuCX,AAFD,AnG/BE,WmG+BS,CnG/BP,KAAK,AAAC,CYAN,KAAK,CpBND,IAAI,C+BAR,gBAAgB,C/BwBL,OAAO,CoBhBlB,YAAY,CpBRR,OAAI,CQMY,AmG+BxB,AvF1BE,WuF0BS,CvF1BP,KAAK,CuF0BT,WAAW,AvFzBR,MAAM,AAAC,CACN,KAAK,CpBbD,IAAI,C+BAR,gBAAgB,C/BwBL,OAAO,CoBTlB,YAAY,CpBfR,OAAI,CoBoBN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB8WO,KAAK,CiB9WW,qBAAyC,CAEpF,AuFeH,AvFZE,WuFYS,AvFZR,SAAS,CuFYZ,WAAW,CvFXP,QAAQ,AAAC,CACT,KAAK,CpB3BD,IAAI,CoB4BR,gBAAgB,CpBJL,OAAO,CoBKlB,YAAY,CpB7BR,IAAI,CoBkCT,AuFGH,AvFDE,WuFCS,CvFDR,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CuFCxC,WAAW,AvFAsB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CuFDP,WAAW,AvFCA,gBAAgB,AAAC,CACxB,KAAK,CpBvCD,IAAI,CoBwCR,gBAAgB,CpBhBL,OAAO,CoBoBlB,YAAY,CpB5CR,OAAI,CoBsDT,AuFjBH,AvFSI,WuFTO,CvFDR,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAUlC,KAAK,CuFTX,WAAW,AvFAsB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAS1B,KAAK,CART,KAAK,CuFDP,WAAW,AvFCA,gBAAgB,CAQrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB+UK,KAAK,CiB/Ua,qBAAyC,CAEpF,AuFZL,AAAA,aAAa,AAAC,CvFzCZ,KAAK,CpBAC,IAAI,C+BAR,gBAAgB,C/ByBH,OAAO,CoBvBtB,YAAY,CpBFN,IAAI,C2G2CX,AAFD,AnGnCE,amGmCW,CnGnCT,KAAK,AAAC,CYAN,KAAK,CpBND,IAAI,C+BAR,gBAAgB,C/ByBH,OAAO,CoBjBpB,YAAY,CpBRR,OAAI,CQMY,AmGmCxB,AvF9BE,auF8BW,CvF9BT,KAAK,CuF8BT,aAAa,AvF7BV,MAAM,AAAC,CACN,KAAK,CpBbD,IAAI,C+BAR,gBAAgB,C/ByBH,OAAO,CoBVpB,YAAY,CpBfR,OAAI,CoBoBN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB8WO,KAAK,CiB9WW,qBAAyC,CAEpF,AuFmBH,AvFhBE,auFgBW,AvFhBV,SAAS,CuFgBZ,aAAa,CvFfT,QAAQ,AAAC,CACT,KAAK,CpB3BD,IAAI,CoB4BR,gBAAgB,CpBHH,OAAO,CoBIpB,YAAY,CpB7BR,IAAI,CoBkCT,AuFOH,AvFLE,auFKW,CvFLV,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CuFKxC,aAAa,AvFJoB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAC9B,KAAK,CuFGP,aAAa,AvFHF,gBAAgB,AAAC,CACxB,KAAK,CpBvCD,IAAI,CoBwCR,gBAAgB,CpBfH,OAAO,CoBmBpB,YAAY,CpB5CR,OAAI,CoBsDT,AuFbH,AvFKI,auFLS,CvFLV,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAAE,MAAM,CAUlC,KAAK,CuFLX,aAAa,AvFJoB,OAAO,CAArC,GAAK,EAAC,QAAQ,EAAC,GAAK,CAAA,SAAS,EAS1B,KAAK,CART,KAAK,CuFGP,aAAa,AvFHF,gBAAgB,CAQrB,KAAK,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CjB+UK,KAAK,CiB/Ua,qBAAyC,CAEpF,AwFvDL,AAAA,MAAM,AAAC,CACL,KAAK,C5GSI,OAAO,C4GRhB,SAAS,CAAE,IAAI,CACf,QAAQ,CAAE,QAAQ,CAClB,WAAW,CAAE,CAAC,CACd,KAAK,CAAE,OAAO,CACf,AACD,UAAU,CAAV,UAAU,CAXV,EAAE,CAeI,IAAI,CAAE,0BAA4C,CAfxD,EAAE,CAeI,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,0BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,2BAA4C,CAfxD,GAAG,CAeG,IAAI,CAAE,0BAA4C,CAfxD,IAAI,CAeE,IAAI,CAAE,2BAA4C,EAIxD,AAAA,MAAM,CAAC,KAAK,AAAC,CACX,OAAO,CAAE,eAAe,CACxB,QAAQ,CAAE,QAAQ,CAClB,IAAI,CAAE,GAAG,CACT,WAAW,CAAG,IAAG,CAAC,CAAC,C5GDf,OAAO,C4GEX,GAAG,CAAE,CAAC,CACN,KAAK,C5GXI,OAAO,C4GYhB,UAAU,C5GnBD,OAAO,C4GoBhB,QAAQ,CAAE,MAAM,CAChB,IAAI,CAAE,oBAAiB,CACvB,SAAS,CAAE,+CAA+C,CAC3D,AAED,UAAU,CAAV,YAAU,CAhCV,EAAE,CAoCI,IAAI,CAAE,yBAA4C,CApCxD,EAAE,CAoCI,IAAI,CAAE,0BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,0BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,0BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,2BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,2BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,2BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,2BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,2BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,2BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,2BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,2BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,2BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,2BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,2BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,0BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,2BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,2BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,2BAA4C,CApCxD,GAAG,CAoCG,IAAI,CAAE,2BAA4C,CApCxD,IAAI,CAoCE,IAAI,CAAE,2BAA4C,EAIxD,AAAA,MAAM,CAAC,MAAM,AAAC,CACZ,OAAO,CAAE,eAAe,CACxB,QAAQ,CAAE,QAAQ,CAClB,IAAI,CAAE,IAAI,CACV,WAAW,CAAE,GAAG,CAAC,CAAC,C5G1Bb,OAAO,C4G2BZ,GAAG,CAAE,CAAC,CACN,KAAK,C5GhCI,OAAO,C4GiChB,UAAU,C5GxCD,OAAO,C4GyChB,QAAQ,CAAE,MAAM,CAChB,IAAI,CAAE,oBAAiB,CACvB,SAAS,CAAE,iDAAiD,CAC7D,ACnDD,AAAA,MAAM,AAAA,cAAc,AAAC,CACnB,OAAO,CAAE,MAAM,CACf,WAAW,CAAE,CAAC,CAKf,AAPD,AAGE,MAHI,AAAA,cAAc,CAGlB,UAAU,AAAC,CACT,WAAW,CAAE,CAAC,CACd,SAAS,CAAE,MAAM,CAClB,AAGH,AACE,IADE,AAAA,gBAAgB,CAClB,MAAM,AAAA,cAAc,AAAC,CACnB,KAAK,CAAE,IAAI,CACZ"
 }
\ No newline at end of file
index 98e1e09..5d02aa6 100644 (file)
 .roo-htmleditor-body dl {
        /*bringing lists on to the page with breathing room */
        margin-left:2em;
-}     
\ No newline at end of file
+}
+
+
+.roo-htmleditor-body::selection,
+.roo-htmleditor-body *::selection 
+{
+       background: #d9e8fb; 
+}
+
+.roo-htmleditor-body table.roo-ed-selection,
+.roo-htmleditor-body td.roo-ed-selection
+{
+       background-color: #d9e8fb;
+}
+
+
index 91136d9..db083be 100644 (file)
     margin-top: 2px;
     margin-left: 2px;
     max-height: 95%;
-    overflow-y: scroll;
+    overflow-y: auto;
 }
 
 .x-menu-plain
index 0139afe..3d933c8 100644 (file)
@@ -43,3 +43,12 @@ menu, .undoreset nav, .undoreset output, .undoreset ruby, .undoreset section, .u
 /* Pre */
 .undoreset pre, .undoreset code { display: block; font-family: Courier New; white-space: pre; margin: 1em 0; }
 
+
+/** sneaked in here - as this file is used by editor */
+.roo-htmleditor-body [contenteditable=true]:focus-visible {
+    background-color: #fafafa;
+    padding: 0 5px;;
+}
+.roo-htmleditor-body [contenteditable=true]:hover {
+    border: 1px solid #ccc;
+}
\ No newline at end of file
index d839074..812c850 100644 (file)
         ],
         "returns" : []
       },
+      {
+        "name" : "from",
+        "type" : "function",
+        "desc" : "from",
+        "sig" : "(o)",
+        "static" : true,
+        "memberOf" : "",
+        "isStatic" : true,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "o",
+            "type" : "Array",
+            "desc" : "Or Array like object (eg. nodelist)",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
       {
         "name" : "indexOf",
         "type" : "function",
     "tree_parent" : []
   },
   "Roo" : {
-    "props" : [],
+    "props" : [
+      {
+        "name" : "grid",
+        "type" : "Roo.grid.Grid",
+        "desc" : "The grid for this panel",
+        "memberOf" : ""
+      },
+      {
+        "name" : "layout",
+        "type" : "Roo.BorderLayout",
+        "desc" : "[required] The layout for this panel",
+        "memberOf" : ""
+      }
+    ],
     "events" : [],
     "methods" : [
       {
           }
         ]
       },
+      {
+        "name" : "log",
+        "type" : "function",
+        "desc" : "Logs to console if it can.",
+        "sig" : "(string)",
+        "static" : true,
+        "memberOf" : "",
+        "isStatic" : true,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "string",
+            "type" : "String|Object",
+            "desc" : "",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
+      {
+        "name" : "namespace",
+        "type" : "function",
+        "desc" : "Creates namespaces to be used for scoping variables and classes so that they are not global.  Usage:\n<pre><code>\nRoo.namespace('Company', 'Company.data');\nCompany.Widget = function() { ... }\nCompany.data.CustomStore = function(config) { ... }\n</code></pre>",
+        "sig" : "(namespace1, namespace2, etc)",
+        "static" : true,
+        "memberOf" : "",
+        "isStatic" : true,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "namespace1",
+            "type" : "String",
+            "desc" : "",
+            "isOptional" : false
+          },
+          {
+            "name" : "namespace2",
+            "type" : "String",
+            "desc" : "",
+            "isOptional" : false
+          },
+          {
+            "name" : "etc",
+            "type" : "String",
+            "desc" : "",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
       {
         "name" : "onReady",
         "type" : "function",
       "Roo.LayoutDialog"
     ],
     "tree_children" : [],
-    "tree_parent" : []
+    "tree_parent" : [
+      "none",
+      "builder"
+    ]
   },
   "Roo.BasicLayoutRegion" : {
     "props" : [
       {
         "name" : "region",
         "type" : "String",
-        "desc" : "[required]   (center|north|south|east|west) which region to put this panel on (when used with xtype constructors)",
+        "desc" : "t) [required] which region to put this panel on (when used with xtype constructors)",
         "memberOf" : ""
       },
       {
     "tree_parent" : [
       "Roo.BorderLayout",
       "Roo.LayoutDialog",
-      "builder-top"
+      "builder"
     ]
   },
   "Roo.DDView" : {
             "desc" : "The new node"
           }
         ]
+      },
+      {
+        "name" : "update",
+        "type" : "function",
+        "desc" : "Updates the first element with the spec from the o (replacing if necessary)\nThis iterates through the children, and updates attributes / children etc..",
+        "sig" : "(el, o)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "el",
+            "type" : "String/HTMLElement/Element",
+            "desc" : "The context element",
+            "isOptional" : false
+          },
+          {
+            "name" : "o",
+            "type" : "Object/String",
+            "desc" : "The Dom object spec (and children) or raw HTML blob",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
       }
     ],
     "isAbstract" : false,
         "desc" : "True for this panel to adjust its size to fit when the region resizes  (defaults to false)",
         "memberOf" : "Roo.ContentPanel"
       },
+      {
+        "name" : "grid",
+        "type" : "Roo.grid.Grid",
+        "desc" : "The grid for this panel",
+        "memberOf" : "Roo"
+      },
       {
         "name" : "listeners",
         "type" : "Object",
       {
         "name" : "region",
         "type" : "String",
-        "desc" : "[required]   (center|north|south|east|west) which region to put this panel on (when used with xtype constructors)",
+        "desc" : "t) [required] which region to put this panel on (when used with xtype constructors)",
         "memberOf" : "Roo.ContentPanel"
       },
       {
     "isBuilderTop" : false,
     "implementations" : [],
     "tree_children" : [],
-    "tree_parent" : []
+    "tree_parent" : [
+      "Roo.BorderLayout",
+      "Roo.LayoutDialog",
+      "builder"
+    ]
   },
   "Roo.HtmlEditorCore" : {
     "props" : [
       {
         "name" : "allowComments",
         "type" : "boolean",
-        "desc" : "- default false - allow comments in HTML source - by default they are stripped - if you are editing email you may need this.",
+        "desc" : "- default false - allow comments in HTML source\n         - by default they are stripped - if you are editing email you may need this.",
         "memberOf" : ""
       },
       {
         "desc" : "Whether the component can move the Dom node when rendering (defaults to true).",
         "memberOf" : "Roo.Component"
       },
+      {
+        "name" : "autoClean",
+        "type" : "boolean",
+        "desc" : "- default true - loading and saving will remove quite a bit of formating,\n        if you are doing an email editor, this probably needs disabling, it's designed",
+        "memberOf" : ""
+      },
       {
         "name" : "disableClass",
         "type" : "String",
         "desc" : "CSS class added to the component when it is disabled (defaults to \"x-item-disabled\").",
         "memberOf" : "Roo.Component"
       },
+      {
+        "name" : "enableBlocks",
+        "type" : "boolean",
+        "desc" : "- default true - if the block editor (table and figure should be enabled)",
+        "memberOf" : ""
+      },
       {
         "name" : "height",
         "type" : "Number",
         "desc" : "y)\nHow this component should hidden. Supported values are\n\"visibility\" (css visibility), \"offsets\" (negative offset position) and\n\"display\" (css display) - defaults to \"display\".",
         "memberOf" : "Roo.Component"
       },
+      {
+        "name" : "language",
+        "type" : "String",
+        "desc" : "default en - language of text (usefull for rtl languages)",
+        "memberOf" : ""
+      },
       {
         "name" : "listeners",
         "type" : "Object",
       {
         "name" : "cleanTableWidths",
         "type" : "function",
-        "desc" : "cleanTableWidths.\n\nQuite often pasting from word etc.. results in tables with column and widths.\nThis does not work well on fluid HTML layouts - like emails. - so this code should hunt an destroy them..",
+        "desc" : "",
         "sig" : "()\n{\n\n}",
         "static" : false,
         "memberOf" : "",
         "isConstructor" : false,
         "isPrivate" : false,
         "example" : "",
-        "deprecated" : "",
+        "deprecated" : "This has been deprecated: - use filters",
         "since" : "",
         "see" : "",
         "exceptions" : "",
         "isConstructor" : false,
         "isPrivate" : false,
         "example" : "",
-        "deprecated" : "",
+        "deprecated" : "This has been deprecated: - use filter directly",
         "since" : "",
         "see" : "",
         "exceptions" : "",
         "params" : [],
         "returns" : []
       },
-      {
-        "name" : "iterateChildren",
-        "type" : "function",
-        "desc" : "iterateChildren of a Node, calling fn each time, using this as the scole..",
-        "sig" : "(node, fn)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "node",
-            "type" : "DomNode",
-            "desc" : "node to iterate children of.",
-            "isOptional" : false
-          },
-          {
-            "name" : "fn",
-            "type" : "Function",
-            "desc" : "method of this class to call on each item.",
-            "isOptional" : false
-          }
-        ],
-        "returns" : []
-      },
       {
         "name" : "on",
         "type" : "function",
       {
         "name" : "pushValue",
         "type" : "function",
-        "desc" : "Protected method that will not generally be called directly. Pushes the value of the textarea\ninto the iframe editor.",
+        "desc" : "TEXTAREA -> EDITABLE\nProtected method that will not generally be called directly. Pushes the value of the textarea\ninto the iframe editor.",
         "sig" : "()\n{\n\n}",
         "static" : false,
         "memberOf" : "",
         ],
         "returns" : []
       },
+      {
+        "name" : "selectNode",
+        "type" : "function",
+        "desc" : "Select a dom node",
+        "sig" : "(node)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "node",
+            "type" : "DomElement",
+            "desc" : "the node to select",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
       {
         "name" : "setDisabled",
         "type" : "function",
     "tree_children" : [],
     "tree_parent" : []
   },
+  "Roo.MessageBox" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [
+      {
+        "name" : "alert",
+        "type" : "function",
+        "desc" : "Displays a standard read-only message box with an OK button (comparable to the basic JavaScript Window.alert).\nIf a callback function is passed it will be called after the user clicks the button, and the\nid of the button that was clicked will be passed as the only parameter to the callback\n(could also be the top-right close button).",
+        "sig" : "(title, msg, fn, scope)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "title",
+            "type" : "String",
+            "desc" : "The title bar text",
+            "isOptional" : false
+          },
+          {
+            "name" : "msg",
+            "type" : "String",
+            "desc" : "The message box body text",
+            "isOptional" : false
+          },
+          {
+            "name" : "fn",
+            "type" : "Function",
+            "desc" : "(optional) The callback function invoked after the message box is closed",
+            "isOptional" : false
+          },
+          {
+            "name" : "scope",
+            "type" : "Object",
+            "desc" : "(optional) The scope of the callback function",
+            "isOptional" : false
+          }
+        ],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "Roo.MessageBox",
+            "desc" : "This message box"
+          }
+        ]
+      },
+      {
+        "name" : "confirm",
+        "type" : "function",
+        "desc" : "Displays a confirmation message box with Yes and No buttons (comparable to JavaScript's Window.confirm).\nIf a callback function is passed it will be called after the user clicks either button, and the id of the\nbutton that was clicked will be passed as the only parameter to the callback (could also be the top-right close button).",
+        "sig" : "(title, msg, fn, scope)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "title",
+            "type" : "String",
+            "desc" : "The title bar text",
+            "isOptional" : false
+          },
+          {
+            "name" : "msg",
+            "type" : "String",
+            "desc" : "The message box body text",
+            "isOptional" : false
+          },
+          {
+            "name" : "fn",
+            "type" : "Function",
+            "desc" : "(optional) The callback function invoked after the message box is closed",
+            "isOptional" : false
+          },
+          {
+            "name" : "scope",
+            "type" : "Object",
+            "desc" : "(optional) The scope of the callback function",
+            "isOptional" : false
+          }
+        ],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "Roo.MessageBox",
+            "desc" : "This message box"
+          }
+        ]
+      },
+      {
+        "name" : "getDialog",
+        "type" : "function",
+        "desc" : "Returns a reference to the underlying {@link Roo.BasicDialog} element",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "Roo.BasicDialog",
+            "desc" : "The BasicDialog element"
+          }
+        ]
+      },
+      {
+        "name" : "hide",
+        "type" : "function",
+        "desc" : "Hides the message box if it is displayed",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : []
+      },
+      {
+        "name" : "isVisible",
+        "type" : "function",
+        "desc" : "Returns true if the message box is currently displayed",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "Boolean",
+            "desc" : "True if the message box is visible, else false"
+          }
+        ]
+      },
+      {
+        "name" : "progress",
+        "type" : "function",
+        "desc" : "Displays a message box with a progress bar.  This message box has no buttons and is not closeable by\nthe user.  You are responsible for updating the progress bar as needed via {@link Roo.MessageBox#updateProgress}\nand closing the message box when the process is complete.",
+        "sig" : "(title, msg)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "title",
+            "type" : "String",
+            "desc" : "The title bar text",
+            "isOptional" : false
+          },
+          {
+            "name" : "msg",
+            "type" : "String",
+            "desc" : "The message box body text",
+            "isOptional" : false
+          }
+        ],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "Roo.MessageBox",
+            "desc" : "This message box"
+          }
+        ]
+      },
+      {
+        "name" : "prompt",
+        "type" : "function",
+        "desc" : "Displays a message box with OK and Cancel buttons prompting the user to enter some text (comparable to\nJavaScript's Window.prompt).  The prompt can be a single-line or multi-line textbox.  If a callback function\nis passed it will be called after the user clicks either button, and the id of the button that was clicked\n(could also be the top-right close button) and the text that was entered will be passed as the two\nparameters to the callback.",
+        "sig" : "(title, msg, fn, scope, multiline)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "title",
+            "type" : "String",
+            "desc" : "The title bar text",
+            "isOptional" : false
+          },
+          {
+            "name" : "msg",
+            "type" : "String",
+            "desc" : "The message box body text",
+            "isOptional" : false
+          },
+          {
+            "name" : "fn",
+            "type" : "Function",
+            "desc" : "(optional) The callback function invoked after the message box is closed",
+            "isOptional" : false
+          },
+          {
+            "name" : "scope",
+            "type" : "Object",
+            "desc" : "(optional) The scope of the callback function",
+            "isOptional" : false
+          },
+          {
+            "name" : "multiline",
+            "type" : "Boolean/Number",
+            "desc" : "(optional) True to create a multiline textbox using the defaultTextHeight\nproperty, or the height in pixels to create the textbox (defaults to false / single-line)",
+            "isOptional" : false
+          }
+        ],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "Roo.MessageBox",
+            "desc" : "This message box"
+          }
+        ]
+      },
+      {
+        "name" : "show",
+        "type" : "function",
+        "desc" : "Displays a new message box, or reinitializes an existing message box, based on the config options\npassed in. All functions (e.g. prompt, alert, etc) on MessageBox call this function internally.\nThe following config object properties are supported:\n<pre>\nProperty    Type             Description\n----------  ---------------  ------------------------------------------------------------------------------------\nanimEl            String/Element   An id or Element from which the message box should animate as it opens and\n                                   closes (defaults to undefined)\nbuttons           Object/Boolean   A button config object (e.g., Roo.MessageBox.OKCANCEL or {ok:'Foo',\n                                   cancel:'Bar'}), or false to not show any buttons (defaults to false)\nclosable          Boolean          False to hide the top-right close button (defaults to true).  Note that\n                                   progress and wait dialogs will ignore this property and always hide the\n                                   close button as they can only be closed programmatically.\ncls               String           A custom CSS class to apply to the message box element\ndefaultTextHeight Number           The default height in pixels of the message box's multiline textarea if\n                                   displayed (defaults to 75)\nfn                Function         A callback function to execute after closing the dialog.  The arguments to the\n                                   function will be btn (the name of the button that was clicked, if applicable,\n                                   e.g. \"ok\"), and text (the value of the active text field, if applicable).\n                                   Progress and wait dialogs will ignore this option since they do not respond to\n                                   user actions and can only be closed programmatically, so any required function\n                                   should be called by the same code after it closes the dialog.\nicon              String           A CSS class that provides a background image to be used as an icon for\n                                   the dialog (e.g., Roo.MessageBox.WARNING or 'custom-class', defaults to '')\nmaxWidth          Number           The maximum width in pixels of the message box (defaults to 600)\nminWidth          Number           The minimum width in pixels of the message box (defaults to 100)\nmodal             Boolean          False to allow user interaction with the page while the message box is\n                                   displayed (defaults to true)\nmsg               String           A string that will replace the existing message box body text (defaults\n                                   to the XHTML-compliant non-breaking space character '&#160;')\nmultiline         Boolean          True to prompt the user to enter multi-line text (defaults to false)\nprogress          Boolean          True to display a progress bar (defaults to false)\nprogressText      String           The text to display inside the progress bar if progress = true (defaults to '')\nprompt            Boolean          True to prompt the user to enter single-line text (defaults to false)\nproxyDrag         Boolean          True to display a lightweight proxy while dragging (defaults to false)\ntitle             String           The title text\nvalue             String           The string value to set into the active textbox element if displayed\nwait              Boolean          True to display a progress bar (defaults to false)\nwidth             Number           The width of the dialog in pixels\n</pre>\n\nExample usage:\n<pre><code>\nRoo.Msg.show({\n   title: 'Address',\n   msg: 'Please enter your address:',\n   width: 300,\n   buttons: Roo.MessageBox.OKCANCEL,\n   multiline: true,\n   fn: saveAddress,\n   animEl: 'addAddressBtn'\n});\n</code></pre>",
+        "sig" : "(config)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "config",
+            "type" : "Object",
+            "desc" : "Configuration options",
+            "isOptional" : false
+          }
+        ],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "Roo.MessageBox",
+            "desc" : "This message box"
+          }
+        ]
+      },
+      {
+        "name" : "updateProgress",
+        "type" : "function",
+        "desc" : "Updates a progress-style message box's text and progress bar.  Only relevant on message boxes\ninitiated via {@link Roo.MessageBox#progress} or by calling {@link Roo.MessageBox#show} with progress: true.",
+        "sig" : "(value, text)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "value",
+            "type" : "Number",
+            "desc" : "Any number between 0 and 1 (e.g., .5)",
+            "isOptional" : false
+          },
+          {
+            "name" : "text",
+            "type" : "String",
+            "desc" : "(optional) If defined, the message box's body text is replaced with the specified string (defaults to undefined)",
+            "isOptional" : false
+          }
+        ],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "Roo.MessageBox",
+            "desc" : "This message box"
+          }
+        ]
+      },
+      {
+        "name" : "updateText",
+        "type" : "function",
+        "desc" : "Updates the message box body text",
+        "sig" : "(text)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "text",
+            "type" : "String",
+            "desc" : "(optional) Replaces the message box element's innerHTML with the specified string (defaults to\nthe XHTML-compliant non-breaking space character '&amp;#160;')",
+            "isOptional" : false
+          }
+        ],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "Roo.MessageBox",
+            "desc" : "This message box"
+          }
+        ]
+      },
+      {
+        "name" : "wait",
+        "type" : "function",
+        "desc" : "Displays a message box with an infinitely auto-updating progress bar.  This can be used to block user\ninteraction while waiting for a long-running process to complete that does not have defined intervals.\nYou are responsible for closing the message box when the process is complete.",
+        "sig" : "(msg, title)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "msg",
+            "type" : "String",
+            "desc" : "The message box body text",
+            "isOptional" : false
+          },
+          {
+            "name" : "title",
+            "type" : "String",
+            "desc" : "(optional) The title bar text",
+            "isOptional" : false
+          }
+        ],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "Roo.MessageBox",
+            "desc" : "This message box"
+          }
+        ]
+      }
+    ],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
   "Roo.NestedLayoutPanel" : {
     "props" : [
       {
         "desc" : "True for this panel to adjust its size to fit when the region resizes  (defaults to false)",
         "memberOf" : "Roo.ContentPanel"
       },
+      {
+        "name" : "layout",
+        "type" : "Roo.BorderLayout",
+        "desc" : "[required] The layout for this panel",
+        "memberOf" : "Roo"
+      },
       {
         "name" : "listeners",
         "type" : "Object",
       {
         "name" : "region",
         "type" : "String",
-        "desc" : "[required]   (center|north|south|east|west) which region to put this panel on (when used with xtype constructors)",
+        "desc" : "t) [required] which region to put this panel on (when used with xtype constructors)",
         "memberOf" : "Roo.ContentPanel"
       },
       {
     "isBuilderTop" : false,
     "implementations" : [],
     "tree_children" : [],
-    "tree_parent" : []
+    "tree_parent" : [
+      "Roo.BorderLayout",
+      "Roo.LayoutDialog",
+      "builder"
+    ]
   },
   "Roo.PagingToolbar" : {
     "props" : [
           }
         ]
       },
+      {
+        "name" : "onClick",
+        "type" : "function",
+        "desc" : "event that occurs when you click on the navigation buttons - can be used to trigger load of a grid.",
+        "sig" : "(which)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "which",
+            "type" : "String",
+            "desc" : "(first|prev|next|last|refresh)  which button to press.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
       {
         "name" : "show",
         "type" : "function",
       "Roo.Toolbar.Separator",
       "Roo.Toolbar.Spacer",
       "Roo.Toolbar.TextItem",
+      "Roo.Toolbar.Button",
+      "Roo.Toolbar.SplitButton",
       "Roo.form.Field",
       "Roo.form.Checkbox",
       "Roo.form.ComboBox",
       "Roo.Toolbar.Separator",
       "Roo.Toolbar.Spacer",
       "Roo.Toolbar.TextItem",
+      "Roo.Toolbar.Button",
+      "Roo.Toolbar.SplitButton",
       "Roo.form.Field",
       "Roo.form.Checkbox",
       "Roo.form.ComboBox",
       {
         "name" : "hide",
         "type" : "function",
-        "desc" : "Hides this item.",
+        "desc" : "Hides this button",
         "sig" : "()\n{\n\n}",
         "static" : false,
-        "memberOf" : "Roo.Toolbar.Item",
+        "memberOf" : "",
         "isStatic" : false,
         "isConstructor" : false,
         "isPrivate" : false,
       {
         "name" : "show",
         "type" : "function",
-        "desc" : "Shows this item.",
+        "desc" : "Shows this button",
         "sig" : "()\n{\n\n}",
         "static" : false,
-        "memberOf" : "Roo.Toolbar.Item",
+        "memberOf" : "",
         "isStatic" : false,
         "isConstructor" : false,
         "isPrivate" : false,
       {
         "name" : "region",
         "type" : "String",
-        "desc" : "[required]   (center|north|south|east|west) which region to put this panel on (when used with xtype constructors)",
+        "desc" : "t) [required] which region to put this panel on (when used with xtype constructors)",
         "memberOf" : "Roo.ContentPanel"
       },
       {
     "isBuilderTop" : false,
     "implementations" : [],
     "tree_children" : [],
-    "tree_parent" : []
+    "tree_parent" : [
+      "Roo.BorderLayout",
+      "Roo.LayoutDialog",
+      "builder"
+    ]
   },
   "Roo.UpdateManager" : {
     "props" : [
           {
             "name" : "options",
             "type" : "Object",
-            "desc" : "An object containing properties which control loading options:<ul>\n<li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>\n<li>callback {Function} A function to be called after the Records have been loaded. The callback is\npassed the following arguments:<ul>\n<li>r : Roo.data.Record[]</li>\n<li>options: Options object from the load call</li>\n<li>success: Boolean success indicator</li></ul></li>\n<li>scope {Object} Scope with which to call the callback (defaults to the Store object)</li>\n<li>add {Boolean} indicator to append loaded records rather than replace the current cache.</li>\n</ul>",
+            "desc" : "An object containing properties which control loading options:<ul>\n<li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>\n<li>params.data {Object} if you are using a MemoryProxy / JsonReader, use this as the data to load stuff..\n<pre>\n                {\n                    data : data,  // array of key=>value data like JsonReader\n                    total : data.length,\n                    success : true\n                    \n                }\n        </pre>\n            }.</li>\n<li>callback {Function} A function to be called after the Records have been loaded. The callback is\npassed the following arguments:<ul>\n<li>r : Roo.data.Record[]</li>\n<li>options: Options object from the load call</li>\n<li>success: Boolean success indicator</li></ul></li>\n<li>scope {Object} Scope with which to call the callback (defaults to the Store object)</li>\n<li>add {Boolean} indicator to append loaded records rather than replace the current cache.</li>\n</ul>",
             "isOptional" : false
           }
         ],
           {
             "name" : "options",
             "type" : "Object",
-            "desc" : "An object containing properties which control loading options:<ul>\n<li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>\n<li>callback {Function} A function to be called after the Records have been loaded. The callback is\npassed the following arguments:<ul>\n<li>r : Roo.data.Record[]</li>\n<li>options: Options object from the load call</li>\n<li>success: Boolean success indicator</li></ul></li>\n<li>scope {Object} Scope with which to call the callback (defaults to the Store object)</li>\n<li>add {Boolean} indicator to append loaded records rather than replace the current cache.</li>\n</ul>",
+            "desc" : "An object containing properties which control loading options:<ul>\n<li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>\n<li>params.data {Object} if you are using a MemoryProxy / JsonReader, use this as the data to load stuff..\n<pre>\n                {\n                    data : data,  // array of key=>value data like JsonReader\n                    total : data.length,\n                    success : true\n                    \n                }\n        </pre>\n            }.</li>\n<li>callback {Function} A function to be called after the Records have been loaded. The callback is\npassed the following arguments:<ul>\n<li>r : Roo.data.Record[]</li>\n<li>options: Options object from the load call</li>\n<li>success: Boolean success indicator</li></ul></li>\n<li>scope {Object} Scope with which to call the callback (defaults to the Store object)</li>\n<li>add {Boolean} indicator to append loaded records rather than replace the current cache.</li>\n</ul>",
             "isOptional" : false
           }
         ],
           {
             "name" : "options",
             "type" : "Object",
-            "desc" : "An object containing properties which control loading options:<ul>\n<li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>\n<li>callback {Function} A function to be called after the Records have been loaded. The callback is\npassed the following arguments:<ul>\n<li>r : Roo.data.Record[]</li>\n<li>options: Options object from the load call</li>\n<li>success: Boolean success indicator</li></ul></li>\n<li>scope {Object} Scope with which to call the callback (defaults to the Store object)</li>\n<li>add {Boolean} indicator to append loaded records rather than replace the current cache.</li>\n</ul>",
+            "desc" : "An object containing properties which control loading options:<ul>\n<li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>\n<li>params.data {Object} if you are using a MemoryProxy / JsonReader, use this as the data to load stuff..\n<pre>\n                {\n                    data : data,  // array of key=>value data like JsonReader\n                    total : data.length,\n                    success : true\n                    \n                }\n        </pre>\n            }.</li>\n<li>callback {Function} A function to be called after the Records have been loaded. The callback is\npassed the following arguments:<ul>\n<li>r : Roo.data.Record[]</li>\n<li>options: Options object from the load call</li>\n<li>success: Boolean success indicator</li></ul></li>\n<li>scope {Object} Scope with which to call the callback (defaults to the Store object)</li>\n<li>add {Boolean} indicator to append loaded records rather than replace the current cache.</li>\n</ul>",
             "isOptional" : false
           }
         ],
     "tree_children" : [],
     "tree_parent" : []
   },
-  "Roo.dd.DragDropMgr" : {
-    "props" : [],
-    "events" : [],
-    "methods" : [
-      {
-        "name" : "getBestMatch",
-        "type" : "function",
-        "desc" : "Helper function for getting the best match from the list of drag\nand drop objects returned by the drag and drop events when we are\nin INTERSECT mode.  It returns either the first object that the\ncursor is over, or the object that has the greatest overlap with\nthe dragged element.",
-        "sig" : "(dds)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "dds",
-            "type" : "DragDrop[]",
-            "desc" : "The array of drag and drop objects\ntargeted",
-            "isOptional" : false
-          }
-        ],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "DragDrop",
-            "desc" : "The best single match"
-          }
-        ]
-      },
-      {
-        "name" : "getCss",
-        "type" : "function",
-        "desc" : "Returns the style property for the DOM element (i.e.,\ndocument.getElById(id).style)",
-        "sig" : "(id)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "This has been deprecated: use Roo.getDom instead",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "id",
-            "type" : "String",
-            "desc" : "the id of the elment to get",
-            "isOptional" : false
-          }
-        ],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "Object",
-            "desc" : "The style property of the element"
-          }
-        ]
-      },
-      {
-        "name" : "getDDById",
-        "type" : "function",
-        "desc" : "Returns the DragDrop instance for a given id",
-        "sig" : "(id)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "id",
-            "type" : "String",
-            "desc" : "the id of the DragDrop object",
-            "isOptional" : false
-          }
-        ],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "DragDrop",
-            "desc" : "the drag drop object, null if it is not found"
-          }
-        ]
-      },
-      {
-        "name" : "getElement",
-        "type" : "function",
-        "desc" : "Returns the actual DOM element",
-        "sig" : "(id)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "This has been deprecated: use Roo.getDom instead",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "id",
-            "type" : "String",
-            "desc" : "the id of the elment to get",
-            "isOptional" : false
-          }
-        ],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "Object",
-            "desc" : "The element"
-          }
-        ]
-      },
-      {
-        "name" : "getLocation",
-        "type" : "function",
-        "desc" : "Returns a Region object containing the drag and drop element's position\nand size, including the padding configured for it",
-        "sig" : "(oDD)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "oDD",
-            "type" : "DragDrop",
-            "desc" : "the drag and drop object to get the\n                      location for",
-            "isOptional" : false
-          }
-        ],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "Roo.lib.Region",
-            "desc" : "a Region object representing the total area\n                            the element occupies, including any padding\n                            the instance is configured for."
-          }
-        ]
-      },
-      {
-        "name" : "getPosX",
-        "type" : "function",
-        "desc" : "Returns the X position of an html element",
-        "sig" : "(el)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "This has been deprecated: use Roo.lib.Dom.getX instead",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "el",
-            "type" : "",
-            "desc" : "the element for which to get the position",
-            "isOptional" : false
-          }
-        ],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "int",
-            "desc" : "the X coordinate"
-          }
-        ]
-      },
-      {
-        "name" : "getPosY",
-        "type" : "function",
-        "desc" : "Returns the Y position of an html element",
-        "sig" : "(el)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "This has been deprecated: use Roo.lib.Dom.getY instead",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "el",
-            "type" : "",
-            "desc" : "the element for which to get the position",
-            "isOptional" : false
-          }
-        ],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "int",
-            "desc" : "the Y coordinate"
-          }
-        ]
-      },
-      {
-        "name" : "getRelated",
-        "type" : "function",
-        "desc" : "Returns the drag and drop instances that are in all groups the\npassed in instance belongs to.",
-        "sig" : "(p_oDD, bTargetsOnly)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "p_oDD",
-            "type" : "DragDrop",
-            "desc" : "the obj to get related data for",
-            "isOptional" : false
-          },
-          {
-            "name" : "bTargetsOnly",
-            "type" : "boolean",
-            "desc" : "if true, only return targetable objs",
-            "isOptional" : false
-          }
-        ],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "DragDrop[]",
-            "desc" : "the related instances"
-          }
-        ]
-      },
-      {
-        "name" : "getScrollLeft",
-        "type" : "function",
-        "desc" : "Gets the scrollLeft",
-        "sig" : "()\n{\n\n}",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "int",
-            "desc" : "the document's scrollTop"
-          }
-        ]
-      },
-      {
-        "name" : "getScrollTop",
-        "type" : "function",
-        "desc" : "Gets the scrollTop",
-        "sig" : "()\n{\n\n}",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "int",
-            "desc" : "the document's scrollTop"
-          }
-        ]
-      },
-      {
-        "name" : "getStyle",
-        "type" : "function",
-        "desc" : "Returns the specified element style property",
-        "sig" : "(el, styleProp)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "This has been deprecated: use Roo.lib.Dom.getStyle",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "el",
-            "type" : "HTMLElement",
-            "desc" : "the element",
-            "isOptional" : false
-          },
-          {
-            "name" : "styleProp",
-            "type" : "string",
-            "desc" : "the style property",
-            "isOptional" : false
-          }
-        ],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "string",
-            "desc" : "The value of the style property"
-          }
-        ]
-      },
-      {
-        "name" : "handleWasClicked",
-        "type" : "function",
-        "desc" : "Recursively searches the immediate parent and all child nodes for\nthe handle element in order to determine wheter or not it was\nclicked.",
-        "sig" : "(node)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "node",
-            "type" : "",
-            "desc" : "the html element to inspect",
-            "isOptional" : false
-          }
-        ],
-        "returns" : []
-      },
-      {
-        "name" : "isDragDrop",
-        "type" : "function",
-        "desc" : "Utility function to determine if a given element has been\nregistered as a drag drop item.",
-        "sig" : "(id)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "id",
-            "type" : "String",
-            "desc" : "the element id to check",
-            "isOptional" : false
-          }
-        ],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "boolean",
-            "desc" : "true if this element is a DragDrop item,\nfalse otherwise"
-          }
-        ]
-      },
-      {
-        "name" : "isHandle",
-        "type" : "function",
-        "desc" : "Utility function to determine if a given element has been\nregistered as a drag drop handle for the given Drag Drop object.",
-        "sig" : "(id)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "id",
-            "type" : "String",
-            "desc" : "the element id to check",
-            "isOptional" : false
-          }
-        ],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "boolean",
-            "desc" : "true if this element is a DragDrop handle, false\notherwise"
-          }
-        ]
-      },
-      {
-        "name" : "isLegalTarget",
-        "type" : "function",
-        "desc" : "Returns true if the specified dd target is a legal target for\nthe specifice drag obj",
-        "sig" : "(the, the)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "the",
-            "type" : "DragDrop",
-            "desc" : "drag obj",
-            "isOptional" : false
-          },
-          {
-            "name" : "the",
-            "type" : "DragDrop",
-            "desc" : "target",
-            "isOptional" : false
-          }
-        ],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "boolean",
-            "desc" : "true if the target is a legal target for the\ndd obj"
-          }
-        ]
-      },
-      {
-        "name" : "isLocked",
-        "type" : "function",
-        "desc" : "Is drag and drop locked?",
-        "sig" : "()\n{\n\n}",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "boolean",
-            "desc" : "True if drag and drop is locked, false otherwise."
-          }
-        ]
-      },
-      {
-        "name" : "isTypeOfDD",
-        "type" : "function",
-        "desc" : "My goal is to be able to transparently determine if an object is\ntypeof DragDrop, and the exact subclass of DragDrop.  typeof\nreturns \"object\", oDD.constructor.toString() always returns\n\"DragDrop\" and not the name of the subclass.  So for now it just\nevaluates a well-known variable in DragDrop.",
-        "sig" : "(the)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "the",
-            "type" : "Object",
-            "desc" : "object to evaluate",
-            "isOptional" : false
-          }
-        ],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "boolean",
-            "desc" : "true if typeof oDD = DragDrop"
-          }
-        ]
-      },
-      {
-        "name" : "lock",
-        "type" : "function",
-        "desc" : "Lock all drag and drop functionality",
-        "sig" : "()\n{\n\n}",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [],
-        "returns" : []
-      },
-      {
-        "name" : "moveToEl",
-        "type" : "function",
-        "desc" : "Sets the x/y position of an element to the location of the\ntarget element.",
-        "sig" : "(moveEl, targetEl)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "moveEl",
-            "type" : "HTMLElement",
-            "desc" : "The element to move",
-            "isOptional" : false
-          },
-          {
-            "name" : "targetEl",
-            "type" : "HTMLElement",
-            "desc" : "The position reference element",
-            "isOptional" : false
-          }
-        ],
-        "returns" : []
-      },
-      {
-        "name" : "numericSort",
-        "type" : "function",
-        "desc" : "Numeric array sort function",
-        "sig" : "()\n{\n\n}",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [],
-        "returns" : []
-      },
-      {
-        "name" : "refreshCache",
-        "type" : "function",
-        "desc" : "Refreshes the cache of the top-left and bottom-right points of the\ndrag and drop objects in the specified group(s).  This is in the\nformat that is stored in the drag and drop instance, so typical\nusage is:\n<code>\nRoo.dd.DragDropMgr.refreshCache(ddinstance.groups);\n</code>\nAlternatively:\n<code>\nRoo.dd.DragDropMgr.refreshCache({group1:true, group2:true});\n</code>",
-        "sig" : "(groups)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "groups",
-            "type" : "Object",
-            "desc" : "an associative array of groups to refresh",
-            "isOptional" : false
-          }
-        ],
-        "returns" : []
-      },
-      {
-        "name" : "regDragDrop",
-        "type" : "function",
-        "desc" : "Each DragDrop instance must be registered with the DragDropMgr.\nThis is executed in DragDrop.init()",
-        "sig" : "(oDD, sGroup)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "oDD",
-            "type" : "DragDrop",
-            "desc" : "the DragDrop object to register",
-            "isOptional" : false
-          },
-          {
-            "name" : "sGroup",
-            "type" : "String",
-            "desc" : "the name of the group this element belongs to",
-            "isOptional" : false
-          }
-        ],
-        "returns" : []
-      },
-      {
-        "name" : "regHandle",
-        "type" : "function",
-        "desc" : "Each DragDrop handle element must be registered.  This is done\nautomatically when executing DragDrop.setHandleElId()",
-        "sig" : "(sDDId, sHandleId)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "sDDId",
-            "type" : "String",
-            "desc" : "the DragDrop id this element is a handle for",
-            "isOptional" : false
-          },
-          {
-            "name" : "sHandleId",
-            "type" : "String",
-            "desc" : "the id of the element that is the drag\nhandle",
-            "isOptional" : false
-          }
-        ],
-        "returns" : []
-      },
-      {
-        "name" : "startDrag",
-        "type" : "function",
-        "desc" : "Fired when either the drag pixel threshol or the mousedown hold\ntime threshold has been met.",
-        "sig" : "(x, y)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "x",
-            "type" : "",
-            "desc" : "{int} the X position of the original mousedown",
-            "isOptional" : false
-          },
-          {
-            "name" : "y",
-            "type" : "",
-            "desc" : "{int} the Y position of the original mousedown",
-            "isOptional" : false
-          }
-        ],
-        "returns" : []
-      },
-      {
-        "name" : "stopEvent",
-        "type" : "function",
-        "desc" : "Utility to stop event propagation and event default, if these\nfeatures are turned on.",
-        "sig" : "(e)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "e",
-            "type" : "Event",
-            "desc" : "the event as returned by this.getEvent()",
-            "isOptional" : false
-          }
-        ],
-        "returns" : []
-      },
-      {
-        "name" : "swapNode",
-        "type" : "function",
-        "desc" : "Swap two nodes.  In IE, we use the native method, for others we\nemulate the IE behavior",
-        "sig" : "(n1, n2)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "n1",
-            "type" : "",
-            "desc" : "the first node to swap",
-            "isOptional" : false
-          },
-          {
-            "name" : "n2",
-            "type" : "",
-            "desc" : "the other node to swap",
-            "isOptional" : false
-          }
-        ],
-        "returns" : []
-      },
-      {
-        "name" : "unlock",
-        "type" : "function",
-        "desc" : "Unlock all drag and drop functionality",
-        "sig" : "()\n{\n\n}",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [],
-        "returns" : []
-      },
-      {
-        "name" : "verifyEl",
-        "type" : "function",
-        "desc" : "This checks to make sure an element exists and is in the DOM.  The\nmain purpose is to handle cases where innerHTML is used to remove\ndrag and drop objects from the DOM.  IE provides an 'unspecified\nerror' when trying to access the offsetParent of such an element",
-        "sig" : "(el)",
-        "static" : false,
-        "memberOf" : "",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "el",
-            "type" : "HTMLElement",
-            "desc" : "the element to check",
-            "isOptional" : false
-          }
-        ],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "boolean",
-            "desc" : "true if the element looks usable"
-          }
-        ]
-      }
-    ],
-    "isAbstract" : false,
-    "isBuilderTop" : false,
-    "implementations" : [],
-    "tree_children" : [],
-    "tree_parent" : []
-  },
   "Roo.dd.DragSource" : {
     "props" : [
       {
       {
         "name" : "getFieldValues",
         "type" : "function",
-        "desc" : "Returns the fields in this form as an object with key/value pairs. \nThis differs from getValues as it calls getValue on each child item, rather than using dom data.",
-        "sig" : "()\n{\n\n}",
+        "desc" : "Returns the fields in this form as an object with key/value pairs. \nThis differs from getValues as it calls getValue on each child item, rather than using dom data.\nNormally this will not return readOnly data",
+        "sig" : "(with_readonly)",
         "static" : false,
         "memberOf" : "",
         "isStatic" : false,
         "see" : "",
         "exceptions" : "",
         "requires" : "",
-        "params" : [],
+        "params" : [
+          {
+            "name" : "with_readonly",
+            "type" : "Boolean",
+            "desc" : "return readonly field data.",
+            "isOptional" : false
+          }
+        ],
         "returns" : [
           {
             "name" : "",
     "isAbstract" : false,
     "isBuilderTop" : false,
     "implementations" : [],
-    "tree_children" : [],
+    "tree_children" : [
+      "Roo.form.Row",
+      "Roo.form.Field",
+      "Roo.form.Checkbox",
+      "Roo.form.ComboBox",
+      "Roo.form.ComboBoxArray",
+      "Roo.form.ComboCheck",
+      "Roo.form.ComboNested",
+      "Roo.form.DateField",
+      "Roo.form.DayPicker",
+      "Roo.form.DisplayField",
+      "Roo.form.FCKeditor",
+      "Roo.form.GridField",
+      "Roo.form.Hidden",
+      "Roo.form.HtmlEditor",
+      "Roo.form.MonthField",
+      "Roo.form.NumberField",
+      "Roo.form.Radio",
+      "Roo.form.Select",
+      "Roo.form.Signature",
+      "Roo.form.TextArea",
+      "Roo.form.TextField",
+      "Roo.form.TriggerField",
+      "Roo.Button",
+      "Roo.SplitButton",
+      "Roo.Toolbar.Button",
+      "Roo.Toolbar.SplitButton",
+      "Roo.form.TextItem",
+      "Roo.form.FieldSet"
+    ],
     "tree_parent" : []
   },
   "Roo.form.ComboBox" : {
         "type" : "Number",
         "desc" : "width (optional) size of component",
         "memberOf" : "Roo.BoxComponent"
+      },
+      {
+        "name" : "zeroValue",
+        "type" : "Date/String",
+        "desc" : "if the date is less that this number, then the field is rendered as empty\ndefault is 1800",
+        "memberOf" : ""
       }
     ],
     "events" : [
       {
         "name" : "getFieldValues",
         "type" : "function",
-        "desc" : "Returns the fields in this form as an object with key/value pairs. \nThis differs from getValues as it calls getValue on each child item, rather than using dom data.",
-        "sig" : "()\n{\n\n}",
+        "desc" : "Returns the fields in this form as an object with key/value pairs. \nThis differs from getValues as it calls getValue on each child item, rather than using dom data.\nNormally this will not return readOnly data",
+        "sig" : "(with_readonly)",
         "static" : false,
         "memberOf" : "Roo.form.BasicForm",
         "isStatic" : false,
         "see" : "",
         "exceptions" : "",
         "requires" : "",
-        "params" : [],
+        "params" : [
+          {
+            "name" : "with_readonly",
+            "type" : "Boolean",
+            "desc" : "return readonly field data.",
+            "isOptional" : false
+          }
+        ],
         "returns" : [
           {
             "name" : "",
         "desc" : "Whether the component can move the Dom node when rendering (defaults to true).",
         "memberOf" : "Roo.Component"
       },
+      {
+        "name" : "autoClean",
+        "type" : "boolean",
+        "desc" : "- default true - loading and saving will remove quite a bit of formating,\n        if you are doing an email editor, this probably needs disabling, it's designed",
+        "memberOf" : ""
+      },
       {
         "name" : "blacklist",
         "type" : "Array",
         "desc" : "of html tags - in addition to standard blacklist.",
         "memberOf" : ""
       },
+      {
+        "name" : "bodyCls",
+        "type" : "string",
+        "desc" : "default '' default classes to add to body of editable area - usually undoreset is a good start..",
+        "memberOf" : ""
+      },
       {
         "name" : "clearUp",
         "type" : "Boolean",
         "desc" : "True to disable the field (defaults to false).",
         "memberOf" : "Roo.form.Field"
       },
+      {
+        "name" : "enableBlocks",
+        "type" : "boolean",
+        "desc" : "- default true - if the block editor (table and figure should be enabled)",
+        "memberOf" : ""
+      },
       {
         "name" : "fieldLabel",
         "type" : "String",
         "desc" : "y)\nHow this component should hidden. Supported values are\n\"visibility\" (css visibility), \"offsets\" (negative offset position) and\n\"display\" (css display) - defaults to \"display\".",
         "memberOf" : "Roo.Component"
       },
+      {
+        "name" : "language",
+        "type" : "String",
+        "desc" : "default en - language of text (usefull for rtl languages)",
+        "memberOf" : ""
+      },
       {
         "name" : "listeners",
         "type" : "Object",
       {
         "name" : "stylesheets",
         "type" : "Array",
-        "desc" : "url of stylesheets. set to [] to disable stylesheets.",
+        "desc" : "url of stylesheets. set to [] to disable stylesheets - this is usally a good idea  rootURL + '/roojs1/css/undoreset.css',   .",
         "memberOf" : ""
       },
       {
         ],
         "returns" : []
       },
+      {
+        "name" : "paste",
+        "type" : "function",
+        "desc" : "Fires when press user pastes into the editor",
+        "sig" : "function (_self)\n{\n\n}",
+        "memberOf" : "",
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "params" : [
+          {
+            "name" : "this",
+            "type" : "Roo.HtmlEditorCore",
+            "desc" : "",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
       {
         "name" : "push",
         "type" : "function",
           }
         ]
       },
+      {
+        "name" : "getSelectedNode",
+        "type" : "function",
+        "desc" : "get the Context selected node",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : []
+      },
       {
         "name" : "getSize",
         "type" : "function",
         ],
         "returns" : []
       },
+      {
+        "name" : "updateLanguage",
+        "type" : "function",
+        "desc" : "update the language in the body - really done by core",
+        "sig" : "(language)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "language",
+            "type" : "String",
+            "desc" : "- eg. en / ar / zh-CN etc..",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
       {
         "name" : "validate",
         "type" : "function",
       "Roo.SplitButton",
       "Roo.Toolbar.Button",
       "Roo.Toolbar.SplitButton",
-      "Roo.form.TextItem"
+      "Roo.form.TextItem",
+      "Roo.form.FieldSet"
     ],
     "tree_parent" : []
   },
       "Roo.SplitButton",
       "Roo.Toolbar.Button",
       "Roo.Toolbar.SplitButton",
-      "Roo.form.TextItem"
+      "Roo.form.TextItem",
+      "Roo.form.FieldSet"
     ],
     "tree_parent" : []
   },
         "desc" : "The selection Model (default = Roo.grid.RowSelectionModel)",
         "memberOf" : "Roo.grid.Grid"
       },
+      {
+        "name" : "sortColMenu",
+        "type" : "boolean",
+        "desc" : "Sort the column order menu when it shows (usefull for long lists..) default false",
+        "memberOf" : "Roo.grid.Grid"
+      },
       {
         "name" : "stripeRows",
         "type" : "Boolean",
         "desc" : "The selection Model (default = Roo.grid.RowSelectionModel)",
         "memberOf" : "Roo.grid.Grid"
       },
+      {
+        "name" : "sortColMenu",
+        "type" : "boolean",
+        "desc" : "Sort the column order menu when it shows (usefull for long lists..) default false",
+        "memberOf" : "Roo.grid.Grid"
+      },
       {
         "name" : "stripeRows",
         "type" : "Boolean",
         "desc" : "The selection Model (default = Roo.grid.RowSelectionModel)",
         "memberOf" : ""
       },
+      {
+        "name" : "sortColMenu",
+        "type" : "boolean",
+        "desc" : "Sort the column order menu when it shows (usefull for long lists..) default false",
+        "memberOf" : ""
+      },
       {
         "name" : "stripeRows",
         "type" : "Boolean",
         "desc" : "The selection Model (default = Roo.grid.RowSelectionModel)",
         "memberOf" : "Roo.grid.Grid"
       },
+      {
+        "name" : "sortColMenu",
+        "type" : "boolean",
+        "desc" : "Sort the column order menu when it shows (usefull for long lists..) default false",
+        "memberOf" : "Roo.grid.Grid"
+      },
       {
         "name" : "stripeRows",
         "type" : "Boolean",
     "tree_children" : [],
     "tree_parent" : []
   },
+  "Roo.htmleditor" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.Block" : {
+    "props" : [
+      {
+        "name" : "Context",
+        "type" : "Object",
+        "desc" : "menu - see Roo.form.HtmlEditor.ToolbarContext",
+        "memberOf" : ""
+      },
+      {
+        "name" : "friendly_name",
+        "type" : "String",
+        "desc" : "the name that appears in the context bar about this block",
+        "memberOf" : ""
+      },
+      {
+        "name" : "node",
+        "type" : "DomElement",
+        "desc" : "The node to apply stuff to.",
+        "memberOf" : ""
+      }
+    ],
+    "events" : [],
+    "methods" : [
+      {
+        "name" : "factory",
+        "type" : "function",
+        "desc" : "factory method to get the block from an element (using cache if necessary)",
+        "sig" : "(the)",
+        "static" : true,
+        "memberOf" : "",
+        "isStatic" : true,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "the",
+            "type" : "HtmlElement",
+            "desc" : "dom element",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
+      {
+        "name" : "getVal",
+        "type" : "function",
+        "desc" : "used by readEleemnt to extract data from a node\nmay need improving as it's pretty basic",
+        "sig" : "(node, tag, attribute, style)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "node",
+            "type" : "DomElement",
+            "desc" : "",
+            "isOptional" : false
+          },
+          {
+            "name" : "tag",
+            "type" : "String",
+            "desc" : "- tag to find, eg. IMG ?? might be better to use DomQuery ?",
+            "isOptional" : false
+          },
+          {
+            "name" : "attribute",
+            "type" : "String",
+            "desc" : "(use html - for contents, or style for using next param as style)",
+            "isOptional" : false
+          },
+          {
+            "name" : "style",
+            "type" : "String",
+            "desc" : "the style property - eg. text-align",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
+      {
+        "name" : "initAll",
+        "type" : "function",
+        "desc" : "initalize all Elements from content that are 'blockable'",
+        "sig" : "(the)",
+        "static" : true,
+        "memberOf" : "",
+        "isStatic" : true,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "the",
+            "type" : "",
+            "desc" : "body element",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
+      {
+        "name" : "readElement",
+        "type" : "function",
+        "desc" : "Read a node that has a 'data-block' property - and extract the values from it.",
+        "sig" : "(node)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "node",
+            "type" : "DomElement",
+            "desc" : "- the node",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
+      {
+        "name" : "toHTML",
+        "type" : "function",
+        "desc" : "convert to plain HTML for calling insertAtCursor..",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : []
+      },
+      {
+        "name" : "toObject",
+        "type" : "function",
+        "desc" : "create a DomHelper friendly object - for use with \nRoo.DomHelper.markup / overwrite / etc..\n(override this)",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : []
+      },
+      {
+        "name" : "updateElement",
+        "type" : "function",
+        "desc" : "Update a node with values from this object",
+        "sig" : "(node)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "node",
+            "type" : "DomElement",
+            "desc" : "",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      }
+    ],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.BlockFigure" : {
+    "props" : [
+      {
+        "name" : "align",
+        "type" : "String",
+        "desc" : "t) alignment for the block default left",
+        "memberOf" : ""
+      },
+      {
+        "name" : "caption",
+        "type" : "String",
+        "desc" : "the text to appear below  (and in the alt tag)",
+        "memberOf" : ""
+      },
+      {
+        "name" : "caption_display",
+        "type" : "String",
+        "desc" : "e) display or not the caption",
+        "memberOf" : ""
+      },
+      {
+        "name" : "image_height",
+        "type" : "String|number",
+        "desc" : "the height of the image number or %?",
+        "memberOf" : ""
+      },
+      {
+        "name" : "image_src",
+        "type" : "String",
+        "desc" : "the url for the image",
+        "memberOf" : ""
+      },
+      {
+        "name" : "image_width",
+        "type" : "String|number",
+        "desc" : "the width of the image number or %?",
+        "memberOf" : ""
+      }
+    ],
+    "events" : [],
+    "methods" : [
+      {
+        "name" : "toObject",
+        "type" : "function",
+        "desc" : "create a DomHelper friendly object - for use with\nRoo.DomHelper.markup / overwrite / etc..",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : []
+      }
+    ],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.BlockTable" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [
+      {
+        "name" : "toObject",
+        "type" : "function",
+        "desc" : "create a DomHelper friendly object - for use with\nRoo.DomHelper.markup / overwrite / etc..\n?? should it be called with option to hide all editing features?",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : []
+      }
+    ],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.BlockTd" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [
+      {
+        "name" : "toObject",
+        "type" : "function",
+        "desc" : "create a DomHelper friendly object - for use with\nRoo.DomHelper.markup / overwrite / etc..\n?? should it be called with option to hide all editing features?",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : []
+      }
+    ],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.Filter" : {
+    "props" : [
+      {
+        "name" : "node",
+        "type" : "DomElement",
+        "desc" : "The node to iterate and filter",
+        "memberOf" : ""
+      },
+      {
+        "name" : "tag",
+        "type" : "boolean|String|Array",
+        "desc" : "Tags to replace",
+        "memberOf" : ""
+      }
+    ],
+    "events" : [],
+    "methods" : [],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.FilterAttributes" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.FilterBlack" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.FilterBlock" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.FilterComment" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.FilterKeepChildren" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.FilterLongBr" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.FilterParagraph" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.FilterSpan" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.FilterStyleToTag" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.FilterTableWidth" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.FilterWord" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [
+      {
+        "name" : "replaceTag",
+        "type" : "function",
+        "desc" : "Clean up MS wordisms...",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : []
+      }
+    ],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.KeyEnter" : {
+    "props" : [
+      {
+        "name" : "core",
+        "type" : "Roo.HtmlEditorCore",
+        "desc" : "the editor.",
+        "memberOf" : ""
+      }
+    ],
+    "events" : [],
+    "methods" : [],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.TidyEntities" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [
+      {
+        "name" : "decode",
+        "type" : "function",
+        "desc" : "Decodes the specified string, this will replace entities with raw UTF characters.",
+        "sig" : "(text)",
+        "static" : true,
+        "memberOf" : "",
+        "isStatic" : true,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "text",
+            "type" : "String",
+            "desc" : "Text to entity decode.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "String",
+            "desc" : "Entity decoded string."
+          }
+        ]
+      },
+      {
+        "name" : "encodeAllRaw",
+        "type" : "function",
+        "desc" : "Encoded the specified text with both the attributes and text entities. This function will produce larger text contents\nsince it doesn't know if the context is within a attribute or text node. This was added for compatibility\nand is exposed as the DOMUtils.encode function.",
+        "sig" : "(text)",
+        "static" : true,
+        "memberOf" : "",
+        "isStatic" : true,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "text",
+            "type" : "String",
+            "desc" : "Text to encode.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "String",
+            "desc" : "Entity encoded text."
+          }
+        ]
+      },
+      {
+        "name" : "encodeNamed",
+        "type" : "function",
+        "desc" : "Encodes the specified string using named entities. The core entities will be encoded\nas named ones but all non lower ascii characters will be encoded into named entities.",
+        "sig" : "(text, attr, entities)",
+        "static" : true,
+        "memberOf" : "",
+        "isStatic" : true,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "text",
+            "type" : "String",
+            "desc" : "Text to encode.",
+            "isOptional" : false
+          },
+          {
+            "name" : "attr",
+            "type" : "Boolean",
+            "desc" : "Optional flag to specify if the text is attribute contents.",
+            "isOptional" : false
+          },
+          {
+            "name" : "entities",
+            "type" : "Object",
+            "desc" : "Optional parameter with entities to use.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "String",
+            "desc" : "Entity encoded text."
+          }
+        ]
+      },
+      {
+        "name" : "encodeNumeric",
+        "type" : "function",
+        "desc" : "Encodes the specified string using numeric entities. The core entities will be\nencoded as named ones but all non lower ascii characters will be encoded into numeric entities.",
+        "sig" : "(text, attr)",
+        "static" : true,
+        "memberOf" : "",
+        "isStatic" : true,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "text",
+            "type" : "String",
+            "desc" : "Text to encode.",
+            "isOptional" : false
+          },
+          {
+            "name" : "attr",
+            "type" : "Boolean",
+            "desc" : "Optional flag to specify if the text is attribute contents.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "String",
+            "desc" : "Entity encoded text."
+          }
+        ]
+      },
+      {
+        "name" : "encodeRaw",
+        "type" : "function",
+        "desc" : "Encodes the specified string using raw entities. This means only the required XML base entities will be encoded.",
+        "sig" : "(text, attr)",
+        "static" : true,
+        "memberOf" : "",
+        "isStatic" : true,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "text",
+            "type" : "String",
+            "desc" : "Text to encode.",
+            "isOptional" : false
+          },
+          {
+            "name" : "attr",
+            "type" : "Boolean",
+            "desc" : "Optional flag to specify if the text is attribute contents.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "String",
+            "desc" : "Entity encoded text."
+          }
+        ]
+      },
+      {
+        "name" : "getEncodeFunc",
+        "type" : "function",
+        "desc" : "Returns an encode function based on the name(s) and it's optional entities.",
+        "sig" : "(name, entities)",
+        "static" : true,
+        "memberOf" : "",
+        "isStatic" : true,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "name",
+            "type" : "String",
+            "desc" : "Comma separated list of encoders for example named,numeric.",
+            "isOptional" : false
+          },
+          {
+            "name" : "entities",
+            "type" : "String",
+            "desc" : "Optional parameter with entities to use instead of the built in set.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "function",
+            "desc" : "Encode function to be used."
+          }
+        ]
+      },
+      {
+        "name" : "init",
+        "type" : "function",
+        "desc" : "initialize data..",
+        "sig" : "()\n{\n\n}",
+        "static" : true,
+        "memberOf" : "",
+        "isStatic" : true,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : []
+      }
+    ],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.TidySerializer" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [
+      {
+        "name" : "inner",
+        "type" : "function",
+        "desc" : "",
+        "sig" : "(inner)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "inner",
+            "type" : "boolean",
+            "desc" : "do the inner of the node.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
+      {
+        "name" : "serialize",
+        "type" : "function",
+        "desc" : "Serializes the specified node into a string.",
+        "sig" : "(node)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "new tinymce.html.Serializer().serialize(new tinymce.html.DomParser().parse('<p>text</p>'));",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "node",
+            "type" : "DomElement",
+            "desc" : "Node instance to serialize.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "String",
+            "desc" : "String with HTML based on DOM tree."
+          }
+        ]
+      }
+    ],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.htmleditor.TidyWriter" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [
+      {
+        "name" : "cdata",
+        "type" : "function",
+        "desc" : "Writes a cdata node such as <![CDATA[data]]>.",
+        "sig" : "(text)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "text",
+            "type" : "String",
+            "desc" : "String to write out inside the cdata.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
+      {
+        "name" : "comment",
+        "type" : "function",
+        "desc" : "Writes a comment node such as <!-- Comment -->.",
+        "sig" : "(text)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "text",
+            "type" : "String",
+            "desc" : "String to write out inside the comment.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
+      {
+        "name" : "doctype",
+        "type" : "function",
+        "desc" : "Writes a doctype node such as <!DOCTYPE data>.",
+        "sig" : "(text)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "text",
+            "type" : "String",
+            "desc" : "String to write out inside the doctype.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
+      {
+        "name" : "end",
+        "type" : "function",
+        "desc" : "Writes the a end element such as </p>.",
+        "sig" : "(name)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "name",
+            "type" : "String",
+            "desc" : "Name of the element.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
+      {
+        "name" : "getContent",
+        "type" : "function",
+        "desc" : "Returns the contents that got serialized.",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "String",
+            "desc" : "HTML contents that got written down."
+          }
+        ]
+      },
+      {
+        "name" : "pi",
+        "type" : "function",
+        "desc" : "Writes a PI node such as <?xml attr=\"value\" ?>.",
+        "sig" : "(name, text)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "name",
+            "type" : "String",
+            "desc" : "Name of the pi.",
+            "isOptional" : false
+          },
+          {
+            "name" : "text",
+            "type" : "String",
+            "desc" : "String to write out inside the pi.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
+      {
+        "name" : "reset",
+        "type" : "function",
+        "desc" : "Resets the internal buffer if one wants to reuse the writer.",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : []
+      },
+      {
+        "name" : "start",
+        "type" : "function",
+        "desc" : "Writes the a start element such as <p id=\"a\">.",
+        "sig" : "(name, attrs, empty)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "name",
+            "type" : "String",
+            "desc" : "Name of the element.",
+            "isOptional" : false
+          },
+          {
+            "name" : "attrs",
+            "type" : "Array",
+            "desc" : "Optional attribute array or undefined if it hasn't any.",
+            "isOptional" : false
+          },
+          {
+            "name" : "empty",
+            "type" : "Boolean",
+            "desc" : "Optional empty state if the tag should end like <br />.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
+      {
+        "name" : "text",
+        "type" : "function",
+        "desc" : "Writes a text node.\n\nIn pre - we should not mess with the contents.",
+        "sig" : "(text, raw)",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "text",
+            "type" : "String",
+            "desc" : "String to write out.",
+            "isOptional" : false
+          },
+          {
+            "name" : "raw",
+            "type" : "Boolean",
+            "desc" : "Optional raw state if true the contents wont get encoded.",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      }
+    ],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
   "Roo.lib" : {
     "props" : [],
     "events" : [],
     "tree_children" : [],
     "tree_parent" : []
   },
-  "Roo.lib.RGBColor" : {
+  "Roo.lib.RGBColor" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [
+      {
+        "name" : "getCSSHSL",
+        "type" : "function",
+        "desc" : "getCSSHSL",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "Roo.lib.Color",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "String",
+            "desc" : "a string representing this Color as a CSS HSL Color value - that\nis, a string of the form hsl(h,s%,l%) where h is in the range [0,100] and\ns and l are in the range [0,100]."
+          }
+        ]
+      },
+      {
+        "name" : "getCSSHSLA",
+        "type" : "function",
+        "desc" : "getCSSHSLA",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "Roo.lib.Color",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "String",
+            "desc" : "a string representing this Color as a CSS HSLA Color value - that\nis, a string of the form hsla(h,s%,l%,a) where h is in the range [0,100],\ns and l are in the range [0,100], and a is in the range [0,1]."
+          }
+        ]
+      },
+      {
+        "name" : "getCSSHexadecimalRGB",
+        "type" : "function",
+        "desc" : "getCSSHexadecimalRGB",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "Roo.lib.Color",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "String",
+            "desc" : "a string representing this Color as a CSS hexadecimal RGB Color\nvalue - that is, a string of the form #RRGGBB where each of RR, GG, and BB\nare two-digit hexadecimal numbers."
+          }
+        ]
+      },
+      {
+        "name" : "getCSSIntegerRGB",
+        "type" : "function",
+        "desc" : "getCSSIntegerRGB",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "Roo.lib.Color",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "String",
+            "desc" : "a string representing this Color as a CSS integer RGB Color\nvalue - that is, a string of the form rgb(r,g,b) where each of r, g, and b\nare integers in the range [0,255]."
+          }
+        ]
+      },
+      {
+        "name" : "getCSSIntegerRGBA",
+        "type" : "function",
+        "desc" : "getCSSIntegerRGBA",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "Roo.lib.Color",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "String",
+            "desc" : "Returns a string representing this Color as a CSS integer RGBA Color\nvalue - that is, a string of the form rgba(r,g,b,a) where each of r, g, and\nb are integers in the range [0,255] and a is in the range [0,1]."
+          }
+        ]
+      },
+      {
+        "name" : "getCSSPercentageRGB",
+        "type" : "function",
+        "desc" : "getCSSPercentageRGB",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "Roo.lib.Color",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "String",
+            "desc" : "a string representing this Color as a CSS percentage RGB Color\nvalue - that is, a string of the form rgb(r%,g%,b%) where each of r, g, and\nb are in the range [0,100]."
+          }
+        ]
+      },
+      {
+        "name" : "getCSSPercentageRGBA",
+        "type" : "function",
+        "desc" : "getCSSPercentageRGBA",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "Roo.lib.Color",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "String",
+            "desc" : "a string representing this Color as a CSS percentage RGBA Color\nvalue - that is, a string of the form rgba(r%,g%,b%,a) where each of r, g,\nand b are in the range [0,100] and a is in the range [0,1]."
+          }
+        ]
+      },
+      {
+        "name" : "getHSL",
+        "type" : "function",
+        "desc" : "getHSL",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "Roo.lib.Color",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "Object",
+            "desc" : "the HSL and alpha components of this Color as an object with h,\ns, l, and a properties. h is in the range [0,360), s and l are in the range\n[0,100], and a is in the range [0,1]."
+          }
+        ]
+      },
+      {
+        "name" : "getHSV",
+        "type" : "function",
+        "desc" : "getHSV",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "Roo.lib.Color",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "Object",
+            "desc" : "the HSV and alpha components of this Color as an object with h,\ns, v, and a properties. h is in the range [0,360), s and v are in the range\n[0,100], and a is in the range [0,1]."
+          }
+        ]
+      },
+      {
+        "name" : "getIntegerRGB",
+        "type" : "function",
+        "desc" : "getIntegerRGB",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "Roo.lib.Color",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "Object",
+            "desc" : "an object representing the RGBA components of this Color. The red,\ngreen, and blue components are converted to integers in the range [0,255].\nThe alpha is a value in the range [0,1]."
+          }
+        ]
+      },
+      {
+        "name" : "getPercentageRGB",
+        "type" : "function",
+        "desc" : "getPercentageRGB",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "Roo.lib.Color",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "Object",
+            "desc" : "an object representing the RGBA components of this Color. The red,\ngreen, and blue components are converted to numbers in the range [0,100].\nThe alpha is a value in the range [0,1]."
+          }
+        ]
+      },
+      {
+        "name" : "getRGB",
+        "type" : "function",
+        "desc" : "getRGB",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "Roo.lib.Color",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "Object",
+            "desc" : "the RGB and alpha components of this Color as an object with r,\ng, b, and a properties. r, g, and b are in the range [0,255] and a is in\nthe range [0,1]."
+          }
+        ]
+      },
+      {
+        "name" : "setNodeBackgroundColor",
+        "type" : "function",
+        "desc" : "Sets the background Color of the specified node to this Color. This\nfunctions sets the CSS 'background-color' property for the node. The\nparameter is:",
+        "sig" : "(node)",
+        "static" : false,
+        "memberOf" : "Roo.lib.Color",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "node",
+            "type" : "DomElement",
+            "desc" : "- the node whose background Color should be set",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      },
+      {
+        "name" : "setNodeColor",
+        "type" : "function",
+        "desc" : "Sets the Color of the specified node to this Color. This functions sets\nthe CSS 'color' property for the node. The parameter is:",
+        "sig" : "(node)",
+        "static" : false,
+        "memberOf" : "Roo.lib.Color",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [
+          {
+            "name" : "node",
+            "type" : "DomElement",
+            "desc" : "- the node whose Color should be set",
+            "isOptional" : false
+          }
+        ],
+        "returns" : []
+      }
+    ],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.lib.Range" : {
     "props" : [],
     "events" : [],
     "methods" : [
       {
-        "name" : "getCSSHSL",
-        "type" : "function",
-        "desc" : "getCSSHSL",
-        "sig" : "()\n{\n\n}",
-        "static" : false,
-        "memberOf" : "Roo.lib.Color",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "String",
-            "desc" : "a string representing this Color as a CSS HSL Color value - that\nis, a string of the form hsl(h,s%,l%) where h is in the range [0,100] and\ns and l are in the range [0,100]."
-          }
-        ]
-      },
-      {
-        "name" : "getCSSHSLA",
-        "type" : "function",
-        "desc" : "getCSSHSLA",
-        "sig" : "()\n{\n\n}",
-        "static" : false,
-        "memberOf" : "Roo.lib.Color",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "String",
-            "desc" : "a string representing this Color as a CSS HSLA Color value - that\nis, a string of the form hsla(h,s%,l%,a) where h is in the range [0,100],\ns and l are in the range [0,100], and a is in the range [0,1]."
-          }
-        ]
-      },
-      {
-        "name" : "getCSSHexadecimalRGB",
-        "type" : "function",
-        "desc" : "getCSSHexadecimalRGB",
-        "sig" : "()\n{\n\n}",
-        "static" : false,
-        "memberOf" : "Roo.lib.Color",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "String",
-            "desc" : "a string representing this Color as a CSS hexadecimal RGB Color\nvalue - that is, a string of the form #RRGGBB where each of RR, GG, and BB\nare two-digit hexadecimal numbers."
-          }
-        ]
-      },
-      {
-        "name" : "getCSSIntegerRGB",
-        "type" : "function",
-        "desc" : "getCSSIntegerRGB",
-        "sig" : "()\n{\n\n}",
-        "static" : false,
-        "memberOf" : "Roo.lib.Color",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "String",
-            "desc" : "a string representing this Color as a CSS integer RGB Color\nvalue - that is, a string of the form rgb(r,g,b) where each of r, g, and b\nare integers in the range [0,255]."
-          }
-        ]
-      },
-      {
-        "name" : "getCSSIntegerRGBA",
+        "name" : "wrap",
         "type" : "function",
-        "desc" : "getCSSIntegerRGBA",
-        "sig" : "()\n{\n\n}",
-        "static" : false,
-        "memberOf" : "Roo.lib.Color",
-        "isStatic" : false,
+        "desc" : "Wrap a Dom Range object, to give it new features...",
+        "sig" : "(the)",
+        "static" : true,
+        "memberOf" : "",
+        "isStatic" : true,
         "isConstructor" : false,
         "isPrivate" : false,
         "example" : "",
         "see" : "",
         "exceptions" : "",
         "requires" : "",
-        "params" : [],
-        "returns" : [
+        "params" : [
           {
-            "name" : "",
-            "type" : "String",
-            "desc" : "Returns a string representing this Color as a CSS integer RGBA Color\nvalue - that is, a string of the form rgba(r,g,b,a) where each of r, g, and\nb are integers in the range [0,255] and a is in the range [0,1]."
+            "name" : "the",
+            "type" : "Range",
+            "desc" : "range to wrap",
+            "isOptional" : false
           }
-        ]
-      },
+        ],
+        "returns" : []
+      }
+    ],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.lib.Selection" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [
       {
-        "name" : "getCSSPercentageRGB",
+        "name" : "insertNode",
         "type" : "function",
-        "desc" : "getCSSPercentageRGB",
-        "sig" : "()\n{\n\n}",
+        "desc" : "insert node at selection",
+        "sig" : "(node, cursor)",
         "static" : false,
-        "memberOf" : "Roo.lib.Color",
+        "memberOf" : "",
         "isStatic" : false,
         "isConstructor" : false,
         "isPrivate" : false,
         "see" : "",
         "exceptions" : "",
         "requires" : "",
-        "params" : [],
-        "returns" : [
+        "params" : [
           {
-            "name" : "",
-            "type" : "String",
-            "desc" : "a string representing this Color as a CSS percentage RGB Color\nvalue - that is, a string of the form rgb(r%,g%,b%) where each of r, g, and\nb are in the range [0,100]."
-          }
-        ]
-      },
-      {
-        "name" : "getCSSPercentageRGBA",
-        "type" : "function",
-        "desc" : "getCSSPercentageRGBA",
-        "sig" : "()\n{\n\n}",
-        "static" : false,
-        "memberOf" : "Roo.lib.Color",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [],
-        "returns" : [
+            "name" : "node",
+            "type" : "DomElement|string",
+            "desc" : "",
+            "isOptional" : false
+          },
           {
-            "name" : "",
-            "type" : "String",
-            "desc" : "a string representing this Color as a CSS percentage RGBA Color\nvalue - that is, a string of the form rgba(r%,g%,b%,a) where each of r, g,\nand b are in the range [0,100] and a is in the range [0,1]."
+            "name" : "cursor",
+            "type" : "string",
+            "desc" : "(after|in|none) where to place the cursor after inserting.",
+            "isOptional" : false
           }
-        ]
+        ],
+        "returns" : []
       },
       {
-        "name" : "getHSL",
+        "name" : "wrap",
         "type" : "function",
-        "desc" : "getHSL",
-        "sig" : "()\n{\n\n}",
-        "static" : false,
-        "memberOf" : "Roo.lib.Color",
-        "isStatic" : false,
+        "desc" : "Wrap a Dom Range object, to give it new features...",
+        "sig" : "(the)",
+        "static" : true,
+        "memberOf" : "",
+        "isStatic" : true,
         "isConstructor" : false,
         "isPrivate" : false,
         "example" : "",
         "see" : "",
         "exceptions" : "",
         "requires" : "",
-        "params" : [],
-        "returns" : [
+        "params" : [
           {
-            "name" : "",
-            "type" : "Object",
-            "desc" : "the HSL and alpha components of this Color as an object with h,\ns, l, and a properties. h is in the range [0,360), s and l are in the range\n[0,100], and a is in the range [0,1]."
+            "name" : "the",
+            "type" : "Range",
+            "desc" : "range to wrap",
+            "isOptional" : false
           }
-        ]
-      },
+        ],
+        "returns" : []
+      }
+    ],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
+  "Roo.lib.UndoManager" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [
       {
-        "name" : "getHSV",
+        "name" : "addEvent",
         "type" : "function",
-        "desc" : "getHSV",
+        "desc" : "Manually add an event.\nNormall called without arguements - and it will just get added to the stack.",
         "sig" : "()\n{\n\n}",
         "static" : false,
-        "memberOf" : "Roo.lib.Color",
+        "memberOf" : "",
         "isStatic" : false,
         "isConstructor" : false,
         "isPrivate" : false,
         "exceptions" : "",
         "requires" : "",
         "params" : [],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "Object",
-            "desc" : "the HSV and alpha components of this Color as an object with h,\ns, v, and a properties. h is in the range [0,360), s and v are in the range\n[0,100], and a is in the range [0,1]."
-          }
-        ]
+        "returns" : []
       },
       {
-        "name" : "getIntegerRGB",
+        "name" : "reset",
         "type" : "function",
-        "desc" : "getIntegerRGB",
+        "desc" : "Reset the undo - probaly done on load to clear all history.",
         "sig" : "()\n{\n\n}",
         "static" : false,
-        "memberOf" : "Roo.lib.Color",
+        "memberOf" : "",
         "isStatic" : false,
         "isConstructor" : false,
         "isPrivate" : false,
         "exceptions" : "",
         "requires" : "",
         "params" : [],
-        "returns" : [
-          {
-            "name" : "",
-            "type" : "Object",
-            "desc" : "an object representing the RGBA components of this Color. The red,\ngreen, and blue components are converted to integers in the range [0,255].\nThe alpha is a value in the range [0,1]."
-          }
-        ]
+        "returns" : []
       },
       {
-        "name" : "getPercentageRGB",
+        "name" : "transact",
         "type" : "function",
-        "desc" : "getPercentageRGB",
-        "sig" : "()\n{\n\n}",
+        "desc" : "To push and execute a transaction, the method undoManager.transact\nmust be called by passing a transaction object as the first argument, and a merge\nflag as the second argument. A transaction object has the following properties:\n\nUsage:\n<pre><code>\nundoManager.transact({\n    label: 'Typing',\n    execute: function() { ... },\n    undo: function() { ... },\n    // redo same as execute\n    redo: function() { this.execute(); }\n}, false);\n\n// merge transaction\nundoManager.transact({\n    label: 'Typing',\n    execute: function() { ... },  // this will be run...\n    undo: function() { ... }, // what to do when undo is run.\n    // redo same as execute\n    redo: function() { this.execute(); }\n}, true); \n</code></pre>",
+        "sig" : "(transaction)",
         "static" : false,
-        "memberOf" : "Roo.lib.Color",
+        "memberOf" : "",
         "isStatic" : false,
         "isConstructor" : false,
         "isPrivate" : false,
         "see" : "",
         "exceptions" : "",
         "requires" : "",
-        "params" : [],
-        "returns" : [
+        "params" : [
           {
-            "name" : "",
+            "name" : "transaction",
             "type" : "Object",
-            "desc" : "an object representing the RGBA components of this Color. The red,\ngreen, and blue components are converted to numbers in the range [0,100].\nThe alpha is a value in the range [0,1]."
+            "desc" : "The transaction to add to the stack.",
+            "isOptional" : false
           }
-        ]
-      },
-      {
-        "name" : "getRGB",
-        "type" : "function",
-        "desc" : "getRGB",
-        "sig" : "()\n{\n\n}",
-        "static" : false,
-        "memberOf" : "Roo.lib.Color",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [],
+        ],
         "returns" : [
           {
             "name" : "",
-            "type" : "Object",
-            "desc" : "the RGB and alpha components of this Color as an object with r,\ng, b, and a properties. r, g, and b are in the range [0,255] and a is in\nthe range [0,1]."
+            "type" : "String",
+            "desc" : "The HTML fragment"
           }
         ]
-      },
-      {
-        "name" : "setNodeBackgroundColor",
-        "type" : "function",
-        "desc" : "Sets the background Color of the specified node to this Color. This\nfunctions sets the CSS 'background-color' property for the node. The\nparameter is:",
-        "sig" : "(node)",
-        "static" : false,
-        "memberOf" : "Roo.lib.Color",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "node",
-            "type" : "DomElement",
-            "desc" : "- the node whose background Color should be set",
-            "isOptional" : false
-          }
-        ],
-        "returns" : []
-      },
-      {
-        "name" : "setNodeColor",
-        "type" : "function",
-        "desc" : "Sets the Color of the specified node to this Color. This functions sets\nthe CSS 'color' property for the node. The parameter is:",
-        "sig" : "(node)",
-        "static" : false,
-        "memberOf" : "Roo.lib.Color",
-        "isStatic" : false,
-        "isConstructor" : false,
-        "isPrivate" : false,
-        "example" : "",
-        "deprecated" : "",
-        "since" : "",
-        "see" : "",
-        "exceptions" : "",
-        "requires" : "",
-        "params" : [
-          {
-            "name" : "node",
-            "type" : "DomElement",
-            "desc" : "- the node whose Color should be set",
-            "isOptional" : false
-          }
-        ],
-        "returns" : []
       }
     ],
     "isAbstract" : false,
   },
   "Roo.menu.CheckItem" : {
     "props" : [
-      {
-        "name" : "HTML",
-        "type" : "String",
-        "desc" : "to render in menu\nThe text to show on the menu item (HTML version).",
-        "memberOf" : "Roo.menu.Item"
-      },
       {
         "name" : "actionMode",
         "type" : "String",
         "desc" : "True to hide the containing menu after this item is clicked (defaults to true)",
         "memberOf" : "Roo.menu.BaseItem"
       },
+      {
+        "name" : "html",
+        "type" : "String",
+        "desc" : "to render in menu\nThe text to show on the menu item (HTML version).",
+        "memberOf" : "Roo.menu.Item"
+      },
       {
         "name" : "icon",
         "type" : "String",
   },
   "Roo.menu.Item" : {
     "props" : [
-      {
-        "name" : "HTML",
-        "type" : "String",
-        "desc" : "to render in menu\nThe text to show on the menu item (HTML version).",
-        "memberOf" : ""
-      },
       {
         "name" : "actionMode",
         "type" : "String",
         "desc" : "True to hide the containing menu after this item is clicked (defaults to true)",
         "memberOf" : "Roo.menu.BaseItem"
       },
+      {
+        "name" : "html",
+        "type" : "String",
+        "desc" : "to render in menu\nThe text to show on the menu item (HTML version).",
+        "memberOf" : ""
+      },
       {
         "name" : "icon",
         "type" : "String",
       "Roo.menu.DateMenu"
     ],
     "tree_children" : [
-      "Roo.menu.CheckItem",
-      "Roo.menu.ColorItem",
-      "Roo.menu.DateItem",
       "Roo.menu.Item",
+      "Roo.menu.CheckItem",
       "Roo.menu.Separator",
       "Roo.menu.TextItem"
     ],
     "tree_children" : [],
     "tree_parent" : []
   },
+  "Roo.rtf" : {
+    "props" : [],
+    "events" : [],
+    "methods" : [],
+    "isAbstract" : false,
+    "isBuilderTop" : false,
+    "implementations" : [],
+    "tree_children" : [],
+    "tree_parent" : []
+  },
   "Roo.state" : {
     "props" : [],
     "events" : [],
           }
         ]
       },
+      {
+        "name" : "toUpperCaseFirst",
+        "type" : "function",
+        "desc" : "Make the first letter of a string uppercase",
+        "sig" : "()\n{\n\n}",
+        "static" : false,
+        "memberOf" : "",
+        "isStatic" : false,
+        "isConstructor" : false,
+        "isPrivate" : false,
+        "example" : "",
+        "deprecated" : "",
+        "since" : "",
+        "see" : "",
+        "exceptions" : "",
+        "requires" : "",
+        "params" : [],
+        "returns" : [
+          {
+            "name" : "",
+            "type" : "String",
+            "desc" : "The new string."
+          }
+        ]
+      },
       {
         "name" : "toggle",
         "type" : "function",
index acf5ea3..773b028 100644 (file)
      */
     </span><span class="jsdoc-var">equals </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">)
     {
-        </span><span class="jsdoc-comment">// https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
-       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">) {
-           </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
-        }
-       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">== </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">) {
-           </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
-       }
-       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.length </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-var">b.length</span><span class="jsdoc-syntax">) {
-           </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
-       }
+            </span><span class="jsdoc-comment">// https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
+        }
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">== </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+        }
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.length </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-var">b.length</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+        }
 
-       </span><span class="jsdoc-comment">// sort?? a.sort().equals(b.sort());
+        </span><span class="jsdoc-comment">// sort?? a.sort().equals(b.sort());
 
-       </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.length</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) {
-           </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] !== </span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]) {
-               </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
-           }
-       }
-       </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.length</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] !== </span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]) {
+            </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+            }
+        }
+        </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
     }
+
+
+
+
 });
 
+</span><span class="jsdoc-var">Roo.applyIf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">, {
+ </span><span class="jsdoc-comment">/**
+     * from
+     * @static
+     * @param {Array} o Or Array like object (eg. nodelist)
+     * @returns {Array} 
+     */
+    </span><span class="jsdoc-var">from </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">)
+    {
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">= [];
 
+        </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">=0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">o.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
+            </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
+        }
+        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">;
 
+    }
+});
 </span></code></body></html>
\ No newline at end of file
index e90aa3d..274cd35 100644 (file)
@@ -301,17 +301,17 @@ dt = Date.parseDate(&quot;2006-1-15 3:20:01 PM&quot;, &quot;Y-m-d h:i:s A&quot;
     }
 
     </span><span class="jsdoc-var">code </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">&quot;if (y &gt;= 0 &amp;&amp; m &gt;= 0 &amp;&amp; d &gt; 0 &amp;&amp; h &gt;= 0 &amp;&amp; i &gt;= 0 &amp;&amp; s &gt;= 0)\n&quot;
-        </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;{v = new Date(y, m, d, h, i, s);}\n&quot;
+        </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;{v = new Date(y, m, d, h, i, s); v.setFullYear(y);}\n&quot;
         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;else if (y &gt;= 0 &amp;&amp; m &gt;= 0 &amp;&amp; d &gt; 0 &amp;&amp; h &gt;= 0 &amp;&amp; i &gt;= 0)\n&quot;
-        </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;{v = new Date(y, m, d, h, i);}\n&quot;
+        </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;{v = new Date(y, m, d, h, i); v.setFullYear(y);}\n&quot;
         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;else if (y &gt;= 0 &amp;&amp; m &gt;= 0 &amp;&amp; d &gt; 0 &amp;&amp; h &gt;= 0)\n&quot;
-        </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;{v = new Date(y, m, d, h);}\n&quot;
+        </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;{v = new Date(y, m, d, h); v.setFullYear(y);}\n&quot;
         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;else if (y &gt;= 0 &amp;&amp; m &gt;= 0 &amp;&amp; d &gt; 0)\n&quot;
-        </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;{v = new Date(y, m, d);}\n&quot;
+        </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;{v = new Date(y, m, d); v.setFullYear(y);}\n&quot;
         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;else if (y &gt;= 0 &amp;&amp; m &gt;= 0)\n&quot;
-        </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;{v = new Date(y, m);}\n&quot;
+        </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;{v = new Date(y, m); v.setFullYear(y);}\n&quot;
         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;else if (y &gt;= 0)\n&quot;
-        </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;{v = new Date(y);}\n&quot;
+        </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;{v = new Date(y); v.setFullYear(y);}\n&quot;
         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;}return (v &amp;&amp; (z || o))?\n&quot; </span><span class="jsdoc-comment">// favour UTC offset over GMT offset
         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;    ((z)? v.add(Date.SECOND, (v.getTimezoneOffset() * 60) + (z*1)) :\n&quot; </span><span class="jsdoc-comment">// reset to UTC, then add offset
         </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;        v.add(Date.HOUR, (v.getGMTOffset() / 100) + (o / -100))) : v\n&quot; </span><span class="jsdoc-comment">// reset to GMT, then add offset
@@ -371,7 +371,7 @@ dt = Date.parseDate(&quot;2006-1-15 3:20:01 PM&quot;, &quot;Y-m-d h:i:s A&quot;
             </span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">:</span><span class="jsdoc-string">&quot;(\\d{1,2})&quot;</span><span class="jsdoc-syntax">}; </span><span class="jsdoc-comment">// Numeric representation of a month, without leading zeros
     </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;m&quot;</span><span class="jsdoc-syntax">:
         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">{</span><span class="jsdoc-var">g</span><span class="jsdoc-syntax">:1,
-            </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">:</span><span class="jsdoc-string">&quot;m = parseInt(results[&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">currentGroup </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;], 10) - 1;\n&quot;</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">:</span><span class="jsdoc-string">&quot;m = Math.max(0,parseInt(results[&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">currentGroup </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;], 10) - 1);\n&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">:</span><span class="jsdoc-string">&quot;(\\d{2})&quot;</span><span class="jsdoc-syntax">}; </span><span class="jsdoc-comment">// Numeric representation of a month, with leading zeros
     </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;t&quot;</span><span class="jsdoc-syntax">:
         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">{</span><span class="jsdoc-var">g</span><span class="jsdoc-syntax">:0,
index 5a41799..4ebc34f 100644 (file)
@@ -700,7 +700,6 @@ Roo.factory(conf, Roo.data);
 
 </span><span class="jsdoc-var">Roo.namespace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;Roo&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.util&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.grid&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.dd&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.tree&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.data&quot;</span><span class="jsdoc-syntax">,
                 </span><span class="jsdoc-string">&quot;Roo.form&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.menu&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.state&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.lib&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.layout&quot;</span><span class="jsdoc-syntax">,
-                </span><span class="jsdoc-string">&quot;Roo.app&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.ux&quot;</span><span class="jsdoc-syntax">,
-                </span><span class="jsdoc-string">&quot;Roo.bootstrap&quot;</span><span class="jsdoc-syntax">,
-                </span><span class="jsdoc-string">&quot;Roo.bootstrap.dash&quot;</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-string">&quot;Roo.app&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;Roo.ux&quot;
+               </span><span class="jsdoc-syntax">);
 </span></code></body></html>
\ No newline at end of file
index 720fa1d..69c3177 100644 (file)
@@ -12,6 +12,7 @@
 /**
  * @class Roo.BasicDialog
  * @extends Roo.util.Observable
+ * @parent none builder
  * Lightweight Dialog Class.  The code below shows the creation of a typical dialog using existing HTML markup:
  * &lt;pre&gt;&lt;code&gt;
 var dlg = new Roo.BasicDialog(&quot;my-dlg&quot;, {
index b380b8f..df010d2 100644 (file)
@@ -12,7 +12,7 @@
  * @class Roo.ContentPanel
  * @extends Roo.util.Observable
  * @children Roo.form.Form Roo.JsonView Roo.View
- * @parent Roo.BorderLayout Roo.LayoutDialog builder-top
+ * @parent Roo.BorderLayout Roo.LayoutDialog builder
  * A basic ContentPanel element.
  * @cfg {Boolean}   fitToFrame    True for this panel to adjust its size to fit when the region resizes  (defaults to false)
  * @cfg {Boolean}   fitContainer   When using {@link #fitToFrame} and {@link #resizeEl}, you can also fit the parent container  (defaults to false)
@@ -25,7 +25,7 @@
  * @cfg {String} title          The title for this panel
  * @cfg {Array} adjustments     Values to &lt;b&gt;add&lt;/b&gt; to the width/height when doing a {@link #fitToFrame} (default is [0, 0])
  * @cfg {String} url            Calls {@link #setUrl} with this value
- * @cfg {String} region [required]   (center|north|south|east|west) which region to put this panel on (when used with xtype constructors)
+ * @cfg {String} region (center|north|south|east|west) [required] which region to put this panel on (when used with xtype constructors)
  * @cfg {String|Object} params  When used with {@link #url}, calls {@link #setUrl} with this value
  * @cfg {Boolean} loadOnce      When used with {@link #url}, calls {@link #setUrl} with this value
  * @cfg {String}    content        Raw content to fill content panel with (uses setContent on construction.)
@@ -460,327 +460,6 @@ layout.addxtype({
     }
 });
 
-</span><span class="jsdoc-comment">/**
- * @class Roo.GridPanel
- * @extends Roo.ContentPanel
- * @constructor
- * Create a new GridPanel.
- * @param {Roo.grid.Grid} grid The grid for this panel
- * @param {String/Object} config A string to set only the panel's title, or a config object
- */
-</span><span class="jsdoc-var">Roo.GridPanel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">grid</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">){
-
-
-    </span><span class="jsdoc-var">this.wrapper </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.DomHelper.append</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">, </span><span class="jsdoc-comment">// wrapper for IE7 strict &amp; safari scroll issue
-        </span><span class="jsdoc-syntax">{</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;div&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;x-layout-grid-wrapper x-layout-inactive-content&quot;</span><span class="jsdoc-syntax">}, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-
-    </span><span class="jsdoc-var">this.wrapper.dom.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">grid.getGridEl</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.dom</span><span class="jsdoc-syntax">);
-
-    </span><span class="jsdoc-var">Roo.GridPanel.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.wrapper</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
-
-    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.toolbar</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-var">this.toolbar.el.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.wrapper.dom.firstChild</span><span class="jsdoc-syntax">);
-    }
-    </span><span class="jsdoc-comment">// xtype created footer. - not sure if will work as we normally have to render first..
-    </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.footer </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">this.footer.el </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.footer.xtype</span><span class="jsdoc-syntax">) {
-
-        </span><span class="jsdoc-var">this.footer.container </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.grid.getView</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getFooterPanel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-var">this.footer.dataSource </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.grid.dataSource</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-var">this.footer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.footer</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo</span><span class="jsdoc-syntax">);
-
-    }
-
-    </span><span class="jsdoc-var">grid.monitorWindowResize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// turn off autosizing
-    </span><span class="jsdoc-var">grid.autoHeight </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
-    </span><span class="jsdoc-var">grid.autoWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
-    </span><span class="jsdoc-var">this.grid </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">grid</span><span class="jsdoc-syntax">;
-    </span><span class="jsdoc-var">this.grid.getGridEl</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.replaceClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;x-layout-inactive-content&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;x-layout-component-panel&quot;</span><span class="jsdoc-syntax">);
-};
-
-</span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.GridPanel</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.ContentPanel</span><span class="jsdoc-syntax">, {
-    </span><span class="jsdoc-var">getId </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.grid.id</span><span class="jsdoc-syntax">;
-    },
-
-    </span><span class="jsdoc-comment">/**
-     * Returns the grid for this panel
-     * @return {Roo.grid.Grid} 
-     */
-    </span><span class="jsdoc-var">getGrid </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.grid</span><span class="jsdoc-syntax">;
-    },
-
-    </span><span class="jsdoc-var">setSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.ignoreResize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">)){
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">grid </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.grid</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">size </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.adjustForComponents</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">grid.getGridEl</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.setSize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">size.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">size.height</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">grid.autoSize</span><span class="jsdoc-syntax">();
-        }
-    },
-
-    </span><span class="jsdoc-var">beforeSlide </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
-        </span><span class="jsdoc-var">this.grid.getView</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.scroller.clip</span><span class="jsdoc-syntax">();
-    },
-
-    </span><span class="jsdoc-var">afterSlide </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
-        </span><span class="jsdoc-var">this.grid.getView</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.scroller.unclip</span><span class="jsdoc-syntax">();
-    },
-
-    </span><span class="jsdoc-var">destroy </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
-        </span><span class="jsdoc-var">this.grid.destroy</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">this.grid</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-var">Roo.GridPanel.superclass.destroy.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-    }
-});
-
-
-</span><span class="jsdoc-comment">/**
- * @class Roo.NestedLayoutPanel
- * @extends Roo.ContentPanel
- * @constructor
- * Create a new NestedLayoutPanel.
- * 
- * 
- * @param {Roo.BorderLayout} layout [required] The layout for this panel
- * @param {String/Object} config A string to set only the title or a config object
- */
-</span><span class="jsdoc-var">Roo.NestedLayoutPanel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">layout</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">)
-{
-    </span><span class="jsdoc-comment">// construct with only one argument..
-    /* FIXME - implement nicer consturctors
-    if (layout.layout) {
-        config = layout;
-        layout = config.layout;
-        delete config.layout;
-    }
-    if (layout.xtype &amp;&amp; !layout.getEl) {
-        // then layout needs constructing..
-        layout = Roo.factory(layout, Roo);
-    }
-    */
-
-
-    </span><span class="jsdoc-var">Roo.NestedLayoutPanel.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">layout.getEl</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
-
-    </span><span class="jsdoc-var">layout.monitorWindowResize </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// turn off autosizing
-    </span><span class="jsdoc-var">this.layout </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">layout</span><span class="jsdoc-syntax">;
-    </span><span class="jsdoc-var">this.layout.getEl</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;x-layout-nested-layout&quot;</span><span class="jsdoc-syntax">);
-
-
-
-
-};
-
-</span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.NestedLayoutPanel</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.ContentPanel</span><span class="jsdoc-syntax">, {
-
-    </span><span class="jsdoc-var">setSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.ignoreResize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">)){
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">size </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.adjustForComponents</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.layout.getEl</span><span class="jsdoc-syntax">();
-            </span><span class="jsdoc-var">el.setSize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">size.width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">size.height</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">touch </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el.dom.offsetWidth</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-var">this.layout.layout</span><span class="jsdoc-syntax">();
-            </span><span class="jsdoc-comment">// ie requires a double layout on the first pass
-            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">this.initialized</span><span class="jsdoc-syntax">){
-                </span><span class="jsdoc-var">this.initialized </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
-                </span><span class="jsdoc-var">this.layout.layout</span><span class="jsdoc-syntax">();
-            }
-        }
-    },
-
-    </span><span class="jsdoc-comment">// activate all subpanels if not currently active..
-
-    </span><span class="jsdoc-var">setActiveState </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">active</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-var">this.active </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">active</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">active</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;deactivate&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-
-        </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;activate&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-comment">// not sure if this should happen before or after..
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.layout</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// should not happen..
-        </span><span class="jsdoc-syntax">}
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">reg </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">r </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">this.layout.regions</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-var">reg </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.layout.getRegion</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">reg.getActivePanel</span><span class="jsdoc-syntax">()) {
-                </span><span class="jsdoc-comment">//reg.showPanel(reg.getActivePanel()); // force it to activate.. 
-                </span><span class="jsdoc-var">reg.setActivePanel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">reg.getActivePanel</span><span class="jsdoc-syntax">());
-                </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
-            }
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">reg.panels.length</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
-            }
-            </span><span class="jsdoc-var">reg.showPanel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">reg.getPanel</span><span class="jsdoc-syntax">(0));
-        }
-
-
-
-
-    },
-
-    </span><span class="jsdoc-comment">/**
-     * Returns the nested BorderLayout for this panel
-     * @return {Roo.BorderLayout} 
-     */
-    </span><span class="jsdoc-var">getLayout </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.layout</span><span class="jsdoc-syntax">;
-    },
-
-     </span><span class="jsdoc-comment">/**
-     * Adds a xtype elements to the layout of the nested panel
-     * &lt;pre&gt;&lt;code&gt;
-
-panel.addxtype({
-       xtype : 'ContentPanel',
-       region: 'west',
-       items: [ .... ]
-   }
-);
-
-panel.addxtype({
-        xtype : 'NestedLayoutPanel',
-        region: 'west',
-        layout: {
-           center: { },
-           west: { }   
-        },
-        items : [ ... list of content panels or nested layout panels.. ]
-   }
-);
-&lt;/code&gt;&lt;/pre&gt;
-     * @param {Object} cfg Xtype definition of item to add.
-     */
-    </span><span class="jsdoc-var">addxtype </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cfg</span><span class="jsdoc-syntax">) {
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.layout.addxtype</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cfg</span><span class="jsdoc-syntax">);
-
-    }
-});
-
-</span><span class="jsdoc-var">Roo.ScrollPanel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">content</span><span class="jsdoc-syntax">){
-    </span><span class="jsdoc-var">config </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">config </span><span class="jsdoc-syntax">|| {};
-    </span><span class="jsdoc-var">config.fitToFrame </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
-    </span><span class="jsdoc-var">Roo.ScrollPanel.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">content</span><span class="jsdoc-syntax">);
-
-    </span><span class="jsdoc-var">this.el.dom.style.overflow </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;hidden&quot;</span><span class="jsdoc-syntax">;
-    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">wrap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.wrap</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;x-scroller x-layout-inactive-content&quot;</span><span class="jsdoc-syntax">});
-    </span><span class="jsdoc-var">this.el.removeClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;x-layout-inactive-content&quot;</span><span class="jsdoc-syntax">);
-    </span><span class="jsdoc-var">this.el.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;mousewheel&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.onWheel</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-
-    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">up </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">wrap.createChild</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;x-scroller-up&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;&amp;#160;&quot;</span><span class="jsdoc-syntax">}, </span><span class="jsdoc-var">this.el.dom</span><span class="jsdoc-syntax">);
-    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">down </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">wrap.createChild</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;x-scroller-down&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;&amp;#160;&quot;</span><span class="jsdoc-syntax">});
-    </span><span class="jsdoc-var">up.unselectable</span><span class="jsdoc-syntax">(); </span><span class="jsdoc-var">down.unselectable</span><span class="jsdoc-syntax">();
-    </span><span class="jsdoc-var">up.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;click&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.scrollUp</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-    </span><span class="jsdoc-var">down.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;click&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.scrollDown</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-    </span><span class="jsdoc-var">up.addClassOnOver</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;x-scroller-btn-over&quot;</span><span class="jsdoc-syntax">);
-    </span><span class="jsdoc-var">down.addClassOnOver</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;x-scroller-btn-over&quot;</span><span class="jsdoc-syntax">);
-    </span><span class="jsdoc-var">up.addClassOnClick</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;x-scroller-btn-click&quot;</span><span class="jsdoc-syntax">);
-    </span><span class="jsdoc-var">down.addClassOnClick</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;x-scroller-btn-click&quot;</span><span class="jsdoc-syntax">);
-    </span><span class="jsdoc-var">this.adjustments </span><span class="jsdoc-syntax">= [0, -(</span><span class="jsdoc-var">up.getHeight</span><span class="jsdoc-syntax">() + </span><span class="jsdoc-var">down.getHeight</span><span class="jsdoc-syntax">())];
-
-    </span><span class="jsdoc-var">this.resizeEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el</span><span class="jsdoc-syntax">;
-    </span><span class="jsdoc-var">this.el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">wrap</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">this.up </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">up</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">this.down </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">down</span><span class="jsdoc-syntax">;
-};
-
-</span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.ScrollPanel</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.ContentPanel</span><span class="jsdoc-syntax">, {
-    </span><span class="jsdoc-var">increment </span><span class="jsdoc-syntax">: 100,
-    </span><span class="jsdoc-var">wheelIncrement </span><span class="jsdoc-syntax">: 5,
-    </span><span class="jsdoc-var">scrollUp </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
-        </span><span class="jsdoc-var">this.resizeEl.scroll</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;up&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.increment</span><span class="jsdoc-syntax">, {</span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.afterScroll</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">});
-    },
-
-    </span><span class="jsdoc-var">scrollDown </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
-        </span><span class="jsdoc-var">this.resizeEl.scroll</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;down&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.increment</span><span class="jsdoc-syntax">, {</span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.afterScroll</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">});
-    },
-
-    </span><span class="jsdoc-var">afterScroll </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.resizeEl</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el.dom.scrollTop</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">h </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el.dom.scrollHeight</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ch </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el.dom.clientHeight</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-var">this.up</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">== 0 ? </span><span class="jsdoc-string">&quot;addClass&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;removeClass&quot;</span><span class="jsdoc-syntax">](</span><span class="jsdoc-string">&quot;x-scroller-btn-disabled&quot;</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-var">this.down</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">h </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">&lt;= </span><span class="jsdoc-var">ch </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">&quot;addClass&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;removeClass&quot;</span><span class="jsdoc-syntax">](</span><span class="jsdoc-string">&quot;x-scroller-btn-disabled&quot;</span><span class="jsdoc-syntax">);
-    },
-
-    </span><span class="jsdoc-var">setSize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
-        </span><span class="jsdoc-var">Roo.ScrollPanel.superclass.setSize.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-var">this.afterScroll</span><span class="jsdoc-syntax">();
-    },
-
-    </span><span class="jsdoc-var">onWheel </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">d </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.getWheelDelta</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-var">this.resizeEl.dom.scrollTop </span><span class="jsdoc-syntax">-= (</span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">*</span><span class="jsdoc-var">this.wheelIncrement</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-var">this.afterScroll</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-var">e.stopEvent</span><span class="jsdoc-syntax">();
-    },
-
-    </span><span class="jsdoc-var">setContent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">content</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">loadScripts</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-var">this.resizeEl.update</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">content</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">loadScripts</span><span class="jsdoc-syntax">);
-    }
-
-});
-
-
-
-</span><span class="jsdoc-comment">/**
- * @class Roo.TreePanel
- * @extends Roo.ContentPanel
- * Treepanel component
- * 
- * @constructor
- * Create a new TreePanel. - defaults to fit/scoll contents.
- * @param {String/Object} config A string to set only the panel's title, or a config object
- */
-</span><span class="jsdoc-var">Roo.TreePanel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">){
-    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">config.el</span><span class="jsdoc-syntax">;
-    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tree </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">config.tree</span><span class="jsdoc-syntax">;
-    </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">config.tree</span><span class="jsdoc-syntax">;
-    </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">config.el</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// hopefull!
-
-    // wrapper for IE7 strict &amp; safari scroll issue
-
-    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">treeEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el.createChild</span><span class="jsdoc-syntax">();
-    </span><span class="jsdoc-var">config.resizeEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">treeEl</span><span class="jsdoc-syntax">;
-
-
-
-    </span><span class="jsdoc-var">Roo.TreePanel.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
-
-
-    </span><span class="jsdoc-var">this.tree </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.tree.TreePanel</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">treeEl </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">tree</span><span class="jsdoc-syntax">);
-    </span><span class="jsdoc-comment">//console.log(tree);
-    </span><span class="jsdoc-var">this.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'activate'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
-    {
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.tree.rendered</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-        </span><span class="jsdoc-comment">//console.log('render tree');
-        </span><span class="jsdoc-var">this.tree.render</span><span class="jsdoc-syntax">();
-    });
-    </span><span class="jsdoc-comment">// this should not be needed.. - it's actually the 'el' that resizes?
-    // actuall it breaks the containerScroll - dragging nodes auto scroll at top
-
-    //this.on('resize',  function (cp, w, h) {
-    //        this.tree.innerCt.setWidth(w);
-    //        this.tree.innerCt.setHeight(h);
-    //        //this.tree.innerCt.setStyle('overflow-y', 'auto');
-    //});
-
-
-
-</span><span class="jsdoc-syntax">};
-
-</span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.TreePanel</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.ContentPanel</span><span class="jsdoc-syntax">, {
-    </span><span class="jsdoc-var">fitToFrame </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
-    </span><span class="jsdoc-var">autoScroll </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
-    </span><span class="jsdoc-comment">/*
-     * @cfg {Roo.tree.TreePanel} tree [required] The tree TreePanel, with config etc.
-     */
-    </span><span class="jsdoc-var">tree </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false
-
-</span><span class="jsdoc-syntax">});
-
 
 
 
index 69b7ea6..63de082 100644 (file)
         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">;
     };
 
+    </span><span class="jsdoc-comment">// this is a bit like the react update code...
+    // 
+
+    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">updateNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">from</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">to</span><span class="jsdoc-syntax">)
+    {
+        </span><span class="jsdoc-comment">// should we handle non-standard elements?
+        </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">&quot;UpdateNode&quot; </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">from</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">to</span><span class="jsdoc-syntax">]);
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">from.nodeType </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">to.nodeType</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">&quot;ReplaceChild - mismatch notType&quot; </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">to</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">from </span><span class="jsdoc-syntax">]);
+            </span><span class="jsdoc-var">from.parentNode.replaceChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">to</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">from</span><span class="jsdoc-syntax">);
+        }
+
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">from.nodeType </span><span class="jsdoc-syntax">== 3) {
+            </span><span class="jsdoc-comment">// assume it's text?!
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">from.data </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">to.data</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+            }
+            </span><span class="jsdoc-var">from.data </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">to.data</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        }
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">from.parentNode</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-comment">// not sure why this is happening?
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        }
+        </span><span class="jsdoc-comment">// assume 'to' doesnt have '1/3 nodetypes!
+        // not sure why, by from, parent node might not exist?
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">from.nodeType </span><span class="jsdoc-syntax">!=1 || </span><span class="jsdoc-var">from.tagName </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">to.tagName</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">&quot;ReplaceChild&quot; </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">from</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">to </span><span class="jsdoc-syntax">]);
+
+            </span><span class="jsdoc-var">from.parentNode.replaceChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">to</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">from</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        }
+        </span><span class="jsdoc-comment">// compare attributes
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Array.from</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">from.attributes</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">ar.length</span><span class="jsdoc-syntax">;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">to.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">)) {
+                </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
+            }
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'id'</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-comment">// always keep ids?
+               </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
+            }
+            </span><span class="jsdoc-comment">//if (ar[i].name == 'style') {
+            //   throw &quot;style removed?&quot;;
+            //}
+            </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;removeAttribute&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-var">from.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">);
+        }
+        </span><span class="jsdoc-var">ar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">to.attributes</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">ar.length</span><span class="jsdoc-syntax">;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">from.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-var">to.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">)) {
+                </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;skipAttribute &quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name  </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'=' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">to.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">));
+                </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
+            }
+            </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;updateAttribute &quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'=&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">to.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">));
+            </span><span class="jsdoc-var">from.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">to.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">));
+        }
+        </span><span class="jsdoc-comment">// children
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">far </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Array.from</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">from.childNodes</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Array.from</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">to.childNodes</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-comment">// if the lengths are different.. then it's probably a editable content change, rather than
+        // a change of the block definition..
+
+        // this did notwork , as our rebuilt nodes did not include ID's so did not match at all.
+         /*if (from.innerHTML == to.innerHTML) {
+            return;
+        }
+        if (far.length != tar.length) {
+            from.innerHTML = to.innerHTML;
+            return;
+        }
+        */
+
+        </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">Math.max</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tar.length</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">far.length</span><span class="jsdoc-syntax">); </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&gt;= </span><span class="jsdoc-var">far.length</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-var">from.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
+                </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">&quot;add&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">tar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]]);
+
+            } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">i  </span><span class="jsdoc-syntax">&gt;= </span><span class="jsdoc-var">tar.length</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-var">from.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">far</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
+                </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">&quot;remove&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">far</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]]);
+            } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+
+                </span><span class="jsdoc-var">updateNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">far</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">], </span><span class="jsdoc-var">tar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
+            }
+        }
+
+
+
+
+    };
+
+
+
     </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">{
-    </span><span class="jsdoc-comment">/** True to force the use of DOM instead of html fragments @type Boolean */
-    </span><span class="jsdoc-var">useDom </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">/** True to force the use of DOM instead of html fragments @type Boolean */
+        </span><span class="jsdoc-var">useDom </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
 
-    </span><span class="jsdoc-comment">/**
-     * Returns the markup for the passed Element(s) config
-     * @param {Object} o The Dom object spec (and children)
-     * @return {String}
-     */
-    </span><span class="jsdoc-var">markup </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">createHtml</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
-    },
+        </span><span class="jsdoc-comment">/**
+         * Returns the markup for the passed Element(s) config
+         * @param {Object} o The Dom object spec (and children)
+         * @return {String}
+         */
+        </span><span class="jsdoc-var">markup </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">createHtml</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
+        },
 
-    </span><span class="jsdoc-comment">/**
-     * Applies a style specification to an element
-     * @param {String/HTMLElement} el The element to apply styles to
-     * @param {String/Object/Function} styles A style specification string eg &quot;width:100px&quot;, or object in the form {width:&quot;100px&quot;}, or
-     * a function which returns such a specification.
-     */
-    </span><span class="jsdoc-var">applyStyles </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">styles</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">styles</span><span class="jsdoc-syntax">){
-           </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.fly</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
-           </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">styles </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;string&quot;</span><span class="jsdoc-syntax">){
-               </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">re </span><span class="jsdoc-syntax">= /\s?([a-z\-]*)\:\s?([^;]*);?/gi;
-               </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">matches</span><span class="jsdoc-syntax">;
-               </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">matches </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">re.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">styles</span><span class="jsdoc-syntax">)) != </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">){
-                   </span><span class="jsdoc-var">el.setStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">matches</span><span class="jsdoc-syntax">[1], </span><span class="jsdoc-var">matches</span><span class="jsdoc-syntax">[2]);
-               }
-           }</span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">styles </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;object&quot;</span><span class="jsdoc-syntax">){
-               </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">style </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">styles</span><span class="jsdoc-syntax">){
-                  </span><span class="jsdoc-var">el.setStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">style</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">styles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">style</span><span class="jsdoc-syntax">]);
+        </span><span class="jsdoc-comment">/**
+         * Applies a style specification to an element
+         * @param {String/HTMLElement} el The element to apply styles to
+         * @param {String/Object/Function} styles A style specification string eg &quot;width:100px&quot;, or object in the form {width:&quot;100px&quot;}, or
+         * a function which returns such a specification.
+         */
+        </span><span class="jsdoc-var">applyStyles </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">styles</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">styles</span><span class="jsdoc-syntax">){
+               </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.fly</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
+               </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">styles </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;string&quot;</span><span class="jsdoc-syntax">){
+                   </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">re </span><span class="jsdoc-syntax">= /\s?([a-z\-]*)\:\s?([^;]*);?/gi;
+                   </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">matches</span><span class="jsdoc-syntax">;
+                   </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">matches </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">re.exec</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">styles</span><span class="jsdoc-syntax">)) != </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">){
+                       </span><span class="jsdoc-var">el.setStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">matches</span><span class="jsdoc-syntax">[1], </span><span class="jsdoc-var">matches</span><span class="jsdoc-syntax">[2]);
+                   }
+               }</span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">styles </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;object&quot;</span><span class="jsdoc-syntax">){
+                   </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">style </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">styles</span><span class="jsdoc-syntax">){
+                      </span><span class="jsdoc-var">el.setStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">style</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">styles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">style</span><span class="jsdoc-syntax">]);
+                   }
+               }</span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">styles </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;function&quot;</span><span class="jsdoc-syntax">){
+                    </span><span class="jsdoc-var">Roo.DomHelper.applyStyles</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">styles.call</span><span class="jsdoc-syntax">());
                }
-           }</span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">styles </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;function&quot;</span><span class="jsdoc-syntax">){
-                </span><span class="jsdoc-var">Roo.DomHelper.applyStyles</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">styles.call</span><span class="jsdoc-syntax">());
-           }
-        }
-    },
+            }
+        },
 
-    </span><span class="jsdoc-comment">/**
-     * Inserts an HTML fragment into the Dom
-     * @param {String} where Where to insert the html in relation to el - beforeBegin, afterBegin, beforeEnd, afterEnd.
-     * @param {HTMLElement} el The context element
-     * @param {String} html The HTML fragmenet
-     * @return {HTMLElement} The new node
-     */
-    </span><span class="jsdoc-var">insertHtml </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">where</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-var">where </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">where.toLowerCase</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.insertAdjacentHTML</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tableRe.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.tagName</span><span class="jsdoc-syntax">)){
-                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">rs</span><span class="jsdoc-syntax">;
-                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">insertIntoTable</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.tagName.toLowerCase</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">where</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">)){
-                    </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">rs</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-comment">/**
+         * Inserts an HTML fragment into the Dom
+         * @param {String} where Where to insert the html in relation to el - beforeBegin, afterBegin, beforeEnd, afterEnd.
+         * @param {HTMLElement} el The context element
+         * @param {String} html The HTML fragmenet
+         * @return {HTMLElement} The new node
+         */
+        </span><span class="jsdoc-var">insertHtml </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">where</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">where </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">where.toLowerCase</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.insertAdjacentHTML</span><span class="jsdoc-syntax">){
+                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tableRe.test</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.tagName</span><span class="jsdoc-syntax">)){
+                    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">rs</span><span class="jsdoc-syntax">;
+                    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">insertIntoTable</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.tagName.toLowerCase</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">where</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">)){
+                        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">rs</span><span class="jsdoc-syntax">;
+                    }
                 }
+                </span><span class="jsdoc-keyword">switch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">where</span><span class="jsdoc-syntax">){
+                    </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;beforebegin&quot;</span><span class="jsdoc-syntax">:
+                        </span><span class="jsdoc-var">el.insertAdjacentHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'BeforeBegin'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
+                        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.previousSibling</span><span class="jsdoc-syntax">;
+                    </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;afterbegin&quot;</span><span class="jsdoc-syntax">:
+                        </span><span class="jsdoc-var">el.insertAdjacentHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'AfterBegin'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
+                        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">;
+                    </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;beforeend&quot;</span><span class="jsdoc-syntax">:
+                        </span><span class="jsdoc-var">el.insertAdjacentHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'BeforeEnd'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
+                        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.lastChild</span><span class="jsdoc-syntax">;
+                    </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;afterend&quot;</span><span class="jsdoc-syntax">:
+                        </span><span class="jsdoc-var">el.insertAdjacentHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'AfterEnd'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
+                        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.nextSibling</span><span class="jsdoc-syntax">;
+                }
+                </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">'Illegal insertion point -&gt; &quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">where </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot;'</span><span class="jsdoc-syntax">;
             }
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el.ownerDocument.createRange</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">frag</span><span class="jsdoc-syntax">;
             </span><span class="jsdoc-keyword">switch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">where</span><span class="jsdoc-syntax">){
-                </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;beforebegin&quot;</span><span class="jsdoc-syntax">:
-                    </span><span class="jsdoc-var">el.insertAdjacentHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'BeforeBegin'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
+                 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;beforebegin&quot;</span><span class="jsdoc-syntax">:
+                    </span><span class="jsdoc-var">range.setStartBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
+                    </span><span class="jsdoc-var">frag </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.createContextualFragment</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
+                    </span><span class="jsdoc-var">el.parentNode.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">frag</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
                     </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.previousSibling</span><span class="jsdoc-syntax">;
-                </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;afterbegin&quot;</span><span class="jsdoc-syntax">:
-                    </span><span class="jsdoc-var">el.insertAdjacentHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'AfterBegin'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
-                    </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">;
+                 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;afterbegin&quot;</span><span class="jsdoc-syntax">:
+                    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">){
+                        </span><span class="jsdoc-var">range.setStartBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">);
+                        </span><span class="jsdoc-var">frag </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.createContextualFragment</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
+                        </span><span class="jsdoc-var">el.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">frag</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">);
+                        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">;
+                    }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
+                        </span><span class="jsdoc-var">el.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">;
+                        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">;
+                    }
                 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;beforeend&quot;</span><span class="jsdoc-syntax">:
-                    </span><span class="jsdoc-var">el.insertAdjacentHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'BeforeEnd'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
-                    </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.lastChild</span><span class="jsdoc-syntax">;
+                    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.lastChild</span><span class="jsdoc-syntax">){
+                        </span><span class="jsdoc-var">range.setStartAfter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.lastChild</span><span class="jsdoc-syntax">);
+                        </span><span class="jsdoc-var">frag </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.createContextualFragment</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
+                        </span><span class="jsdoc-var">el.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">frag</span><span class="jsdoc-syntax">);
+                        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.lastChild</span><span class="jsdoc-syntax">;
+                    }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
+                        </span><span class="jsdoc-var">el.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">;
+                        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.lastChild</span><span class="jsdoc-syntax">;
+                    }
                 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;afterend&quot;</span><span class="jsdoc-syntax">:
-                    </span><span class="jsdoc-var">el.insertAdjacentHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'AfterEnd'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
-                    </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.nextSibling</span><span class="jsdoc-syntax">;
-            }
-            </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">'Illegal insertion point -&gt; &quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">where </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot;'</span><span class="jsdoc-syntax">;
-        }
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el.ownerDocument.createRange</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">frag</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-keyword">switch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">where</span><span class="jsdoc-syntax">){
-             </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;beforebegin&quot;</span><span class="jsdoc-syntax">:
-                </span><span class="jsdoc-var">range.setStartBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-var">frag </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.createContextualFragment</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-var">el.parentNode.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">frag</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.previousSibling</span><span class="jsdoc-syntax">;
-             </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;afterbegin&quot;</span><span class="jsdoc-syntax">:
-                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">){
-                    </span><span class="jsdoc-var">range.setStartBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">);
-                    </span><span class="jsdoc-var">frag </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.createContextualFragment</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
-                    </span><span class="jsdoc-var">el.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">frag</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">);
-                    </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">;
-                }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
-                    </span><span class="jsdoc-var">el.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">;
-                    </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">;
-                }
-            </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;beforeend&quot;</span><span class="jsdoc-syntax">:
-                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.lastChild</span><span class="jsdoc-syntax">){
-                    </span><span class="jsdoc-var">range.setStartAfter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.lastChild</span><span class="jsdoc-syntax">);
+                    </span><span class="jsdoc-var">range.setStartAfter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
                     </span><span class="jsdoc-var">frag </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.createContextualFragment</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
-                    </span><span class="jsdoc-var">el.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">frag</span><span class="jsdoc-syntax">);
-                    </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.lastChild</span><span class="jsdoc-syntax">;
-                }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
-                    </span><span class="jsdoc-var">el.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">;
-                    </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.lastChild</span><span class="jsdoc-syntax">;
+                    </span><span class="jsdoc-var">el.parentNode.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">frag</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el.nextSibling</span><span class="jsdoc-syntax">);
+                    </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.nextSibling</span><span class="jsdoc-syntax">;
                 }
-            </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;afterend&quot;</span><span class="jsdoc-syntax">:
-                </span><span class="jsdoc-var">range.setStartAfter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-var">frag </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.createContextualFragment</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-var">el.parentNode.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">frag</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el.nextSibling</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el.nextSibling</span><span class="jsdoc-syntax">;
+                </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">'Illegal insertion point -&gt; &quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">where </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot;'</span><span class="jsdoc-syntax">;
+        },
+
+        </span><span class="jsdoc-comment">/**
+         * Creates new Dom element(s) and inserts them before el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        </span><span class="jsdoc-var">insertBefore </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.doInsert</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;beforeBegin&quot;</span><span class="jsdoc-syntax">);
+        },
+
+        </span><span class="jsdoc-comment">/**
+         * Creates new Dom element(s) and inserts them after el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object} o The Dom object spec (and children)
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        </span><span class="jsdoc-var">insertAfter </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.doInsert</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;afterEnd&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;nextSibling&quot;</span><span class="jsdoc-syntax">);
+        },
+
+        </span><span class="jsdoc-comment">/**
+         * Creates new Dom element(s) and inserts them as the first child of el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        </span><span class="jsdoc-var">insertFirst </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.doInsert</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;afterBegin&quot;</span><span class="jsdoc-syntax">);
+        },
+
+        </span><span class="jsdoc-comment">// private
+        </span><span class="jsdoc-var">doInsert </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">pos</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sibling</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.useDom </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">o.ns</span><span class="jsdoc-syntax">){
+                </span><span class="jsdoc-var">newNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">createDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-var">el.parentNode.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sibling </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sibling</span><span class="jsdoc-syntax">] : </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
+            }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">createHtml</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-var">newNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.insertHtml</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pos</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
             }
-            </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">'Illegal insertion point -&gt; &quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">where </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot;'</span><span class="jsdoc-syntax">;
-    },
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">returnElement </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">;
+        },
 
-    </span><span class="jsdoc-comment">/**
-     * Creates new Dom element(s) and inserts them before el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    </span><span class="jsdoc-var">insertBefore </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.doInsert</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;beforeBegin&quot;</span><span class="jsdoc-syntax">);
-    },
+        </span><span class="jsdoc-comment">/**
+         * Creates new Dom element(s) and appends them to el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        </span><span class="jsdoc-var">append </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.useDom </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">o.ns</span><span class="jsdoc-syntax">){
+                </span><span class="jsdoc-var">newNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">createDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-var">el.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">);
+            }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">createHtml</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-var">newNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.insertHtml</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;beforeEnd&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
+            }
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">returnElement </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">;
+        },
 
-    </span><span class="jsdoc-comment">/**
-     * Creates new Dom element(s) and inserts them after el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object} o The Dom object spec (and children)
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    </span><span class="jsdoc-var">insertAfter </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.doInsert</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;afterEnd&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;nextSibling&quot;</span><span class="jsdoc-syntax">);
-    },
+        </span><span class="jsdoc-comment">/**
+         * Creates new Dom element(s) and overwrites the contents of el with them
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        </span><span class="jsdoc-var">overwrite </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">)
+        {
+            </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.ns</span><span class="jsdoc-syntax">) {
 
-    </span><span class="jsdoc-comment">/**
-     * Creates new Dom element(s) and inserts them as the first child of el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    </span><span class="jsdoc-var">insertFirst </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.doInsert</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;afterBegin&quot;</span><span class="jsdoc-syntax">);
-    },
-
-    </span><span class="jsdoc-comment">// private
-    </span><span class="jsdoc-var">doInsert </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">pos</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sibling</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.useDom </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">o.ns</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">newNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">createDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">el.parentNode.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sibling </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sibling</span><span class="jsdoc-syntax">] : </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
-        }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">createHtml</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">newNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.insertHtml</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pos</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
-        }
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">returnElement </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">;
-    },
+                </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.childNodes.length</span><span class="jsdoc-syntax">) {
+                    </span><span class="jsdoc-var">el.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">);
+                }
+                </span><span class="jsdoc-var">createDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
+            } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+                </span><span class="jsdoc-var">el.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">createHtml</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
+            }
 
-    </span><span class="jsdoc-comment">/**
-     * Creates new Dom element(s) and appends them to el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    </span><span class="jsdoc-var">append </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.useDom </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">o.ns</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">newNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">createDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">el.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">);
-        }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
+            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">returnElement </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">;
+        },
+
+        </span><span class="jsdoc-comment">/**
+         * Creates a new Roo.DomHelper.Template from the Dom object spec
+         * @param {Object} o The Dom object spec (and children)
+         * @return {Roo.DomHelper.Template} The new template
+         */
+        </span><span class="jsdoc-var">createTemplate </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">createHtml</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">newNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.insertHtml</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;beforeEnd&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
-        }
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">returnElement </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">newNode</span><span class="jsdoc-syntax">;
-    },
+            </span><span class="jsdoc-keyword">return new </span><span class="jsdoc-var">Roo.Template</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
+        },
+         </span><span class="jsdoc-comment">/**
+         * Updates the first element with the spec from the o (replacing if necessary)
+         * This iterates through the children, and updates attributes / children etc..
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         */
 
-    </span><span class="jsdoc-comment">/**
-     * Creates new Dom element(s) and overwrites the contents of el with them
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    </span><span class="jsdoc-var">overwrite </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">returnElement</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o.ns</span><span class="jsdoc-syntax">) {
+        </span><span class="jsdoc-var">update </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">)
+        {
+            </span><span class="jsdoc-var">updateNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">createDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">));
 
-            </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.childNodes.length</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">el.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">);
-            }
-            </span><span class="jsdoc-var">createDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
-        } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
-            </span><span class="jsdoc-var">el.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">createHtml</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
         }
 
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">returnElement </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">el.firstChild</span><span class="jsdoc-syntax">;
-    },
 
-    </span><span class="jsdoc-comment">/**
-     * Creates a new Roo.DomHelper.Template from the Dom object spec
-     * @param {Object} o The Dom object spec (and children)
-     * @return {Roo.DomHelper.Template} The new template
-     */
-    </span><span class="jsdoc-var">createTemplate </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">){
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">createHtml</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-keyword">return new </span><span class="jsdoc-var">Roo.Template</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
-    }
     };
 }();
 </span></code></body></html>
\ No newline at end of file
index deec458..14d6f98 100644 (file)
@@ -73,6 +73,7 @@
          */
         </span><span class="jsdoc-var">editorevent</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
 
+
     </span><span class="jsdoc-syntax">});
 
     </span><span class="jsdoc-comment">// at this point this.owner is set, so we can start working out the whitelisted / blacklisted elements
      * @cfg {Number} width (in pixels)
      */
     </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 500,
+     </span><span class="jsdoc-comment">/**
+     * @cfg {boolean} autoClean - default true - loading and saving will remove quite a bit of formating,
+     *         if you are doing an email editor, this probably needs disabling, it's designed
+     */
+    </span><span class="jsdoc-var">autoClean</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
 
+    </span><span class="jsdoc-comment">/**
+     * @cfg {boolean} enableBlocks - default true - if the block editor (table and figure should be enabled)
+     */
+    </span><span class="jsdoc-var">enableBlocks </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
     </span><span class="jsdoc-comment">/**
      * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets.
      * 
      */
     </span><span class="jsdoc-var">stylesheets</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+     </span><span class="jsdoc-comment">/**
+     * @cfg {String} language default en - language of text (usefull for rtl languages)
+     * 
+     */
+    </span><span class="jsdoc-var">language</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'en'</span><span class="jsdoc-syntax">,
 
     </span><span class="jsdoc-comment">/**
-     * @cfg {boolean} allowComments - default false - allow comments in HTML source - by default they are stripped - if you are editing email you may need this.
+     * @cfg {boolean} allowComments - default false - allow comments in HTML source
+     *          - by default they are stripped - if you are editing email you may need this.
      */
     </span><span class="jsdoc-var">allowComments</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
     </span><span class="jsdoc-comment">// id of frame..
 
     </span><span class="jsdoc-var">bodyCls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
 
+
+    </span><span class="jsdoc-var">undoManager </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
     </span><span class="jsdoc-comment">/**
      * Protected method that will not generally be called directly. It
      * is called when the editor initializes the iframe with HTML contents. Override this method if you
                    </span><span class="jsdoc-string">'&lt;/style&gt;'</span><span class="jsdoc-syntax">;
         } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
             </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">this.stylesheets</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.stylesheets</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]) != </span><span class="jsdoc-string">'string'</span><span class="jsdoc-syntax">) {
+                    </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
+                }
                 </span><span class="jsdoc-var">st </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'&lt;link rel=&quot;stylesheet&quot; href=&quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.stylesheets</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] +</span><span class="jsdoc-string">'&quot; type=&quot;text/css&quot;&gt;'</span><span class="jsdoc-syntax">;
             }
 
             </span><span class="jsdoc-string">'IMG { cursor: pointer } ' </span><span class="jsdoc-syntax">+
         </span><span class="jsdoc-string">'&lt;/style&gt;'</span><span class="jsdoc-syntax">;
 
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'roo-htmleditor-body'</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">st </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">'&lt;meta name=&quot;google&quot; content=&quot;notranslate&quot;&gt;'</span><span class="jsdoc-syntax">;
+
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'notranslate roo-htmleditor-body'</span><span class="jsdoc-syntax">;
 
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.bodyCls.length</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">' ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.bodyCls</span><span class="jsdoc-syntax">;
         }
 
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;html&gt;&lt;head&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">st  </span><span class="jsdoc-syntax">+
+        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">'&lt;html  class=&quot;notranslate&quot; translate=&quot;no&quot;&gt;&lt;head&gt;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">st  </span><span class="jsdoc-syntax">+
             </span><span class="jsdoc-comment">//&lt;style type=&quot;text/css&quot;&gt;' +
             //'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
             //'&lt;/style&gt;' +
 
         </span><span class="jsdoc-var">this.iframe </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">iframe.dom</span><span class="jsdoc-syntax">;
 
-         </span><span class="jsdoc-var">this.assignDocWin</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-var">this.assignDocWin</span><span class="jsdoc-syntax">();
 
         </span><span class="jsdoc-var">this.doc.designMode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'on'</span><span class="jsdoc-syntax">;
 
                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.body </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.doc.readyState </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'complete'</span><span class="jsdoc-syntax">){
                     </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
                         </span><span class="jsdoc-var">this.doc.designMode</span><span class="jsdoc-syntax">=</span><span class="jsdoc-string">&quot;on&quot;</span><span class="jsdoc-syntax">;
+
                     } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
                         </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
                     }
 
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.sourceEditMode</span><span class="jsdoc-syntax">){
 
-            </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.iframe</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.addClass</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">'x-hidden'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">'hide'</span><span class="jsdoc-syntax">]);     </span><span class="jsdoc-comment">//FIXME - what's the BS styles for these
+            </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.iframe</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.addClass</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">'x-hidden'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">'hide'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'d-none'</span><span class="jsdoc-syntax">]);     </span><span class="jsdoc-comment">//FIXME - what's the BS styles for these
 
         </span><span class="jsdoc-syntax">}</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
-            </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.iframe</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.removeClass</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">'x-hidden'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">'hide'</span><span class="jsdoc-syntax">]);
+            </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.iframe</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.removeClass</span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">'x-hidden'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">'hide'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'d-none'</span><span class="jsdoc-syntax">]);
             </span><span class="jsdoc-comment">//this.iframe.className = '';
             </span><span class="jsdoc-var">this.deferFocus</span><span class="jsdoc-syntax">();
         }
      * @param {String} html The HTML to be cleaned
      * return {String} The cleaned HTML
      */
-    </span><span class="jsdoc-var">cleanHtml </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">){
+    </span><span class="jsdoc-var">cleanHtml </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">)
+    {
         </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html.length </span><span class="jsdoc-syntax">&gt; 5){
             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isSafari</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// strip safari nonsense
      * Protected method that will not generally be called directly. Syncs the contents
      * of the editor iframe with the textarea.
      */
-    </span><span class="jsdoc-var">syncValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+    </span><span class="jsdoc-var">syncValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
+    {
+        </span><span class="jsdoc-comment">//Roo.log(&quot;HtmlEditorCore:syncValue (EDITOR-&gt;TEXT)&quot;);
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.initialized</span><span class="jsdoc-syntax">){
+
+            </span><span class="jsdoc-var">this.undoManager.addEvent</span><span class="jsdoc-syntax">();
+
+
             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bd </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.doc.body </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.doc.documentElement</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-comment">//this.cleanUpPaste(); -- this is done else where and causes havoc..
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">bd.innerHTML</span><span class="jsdoc-syntax">;
+
+
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.win.getSelection</span><span class="jsdoc-syntax">();
+
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">div </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-var">div.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">bd.innerHTML</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">gtx </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">div.getElementsByClassName</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'gtx-trans-icon'</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// google translate - really annoying and difficult to get rid of.
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">gtx.length </span><span class="jsdoc-syntax">&gt; 0) {
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">rm </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">gtx.item</span><span class="jsdoc-syntax">(0)</span><span class="jsdoc-var">.parentNode</span><span class="jsdoc-syntax">;
+                </span><span class="jsdoc-var">rm.parentNode.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rm</span><span class="jsdoc-syntax">);
+            }
+
+
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.enableBlocks</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterBlock</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">div </span><span class="jsdoc-syntax">});
+            }
+            </span><span class="jsdoc-comment">//?? tidy?
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tidy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.TidySerializer</span><span class="jsdoc-syntax">({
+                </span><span class="jsdoc-var">inner</span><span class="jsdoc-syntax">:  </span><span class="jsdoc-keyword">true
+            </span><span class="jsdoc-syntax">});
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">html  </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tidy.serialize</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">div</span><span class="jsdoc-syntax">);
+
+
             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isSafari</span><span class="jsdoc-syntax">){
                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">bd.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// Safari puts text-align styles on the body element!
                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">m </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">bs </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">bs.match</span><span class="jsdoc-syntax">(/text-align:(.*?);/i) : </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
     },
 
     </span><span class="jsdoc-comment">/**
+     * TEXTAREA -&gt; EDITABLE
      * Protected method that will not generally be called directly. Pushes the value of the textarea
      * into the iframe editor.
      */
-    </span><span class="jsdoc-var">pushValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+    </span><span class="jsdoc-var">pushValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
+    {
+        </span><span class="jsdoc-comment">//Roo.log(&quot;HtmlEditorCore:pushValue (TEXT-&gt;EDITOR)&quot;);
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.initialized</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.dom.value.trim</span><span class="jsdoc-syntax">();
 
-</span><span class="jsdoc-comment">//            if(v.length &lt; 1){
-//                v = '&amp;#160;';
-//            }
 
             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'beforepush'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">d </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">this.doc.body </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.doc.documentElement</span><span class="jsdoc-syntax">);
                 </span><span class="jsdoc-var">d.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">;
-                </span><span class="jsdoc-var">this.cleanUpPaste</span><span class="jsdoc-syntax">();
+
                 </span><span class="jsdoc-var">this.el.dom.value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">d.innerHTML</span><span class="jsdoc-syntax">;
                 </span><span class="jsdoc-var">this.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'push'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">);
             }
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.autoClean</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterParagraph</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.doc.body</span><span class="jsdoc-syntax">}); </span><span class="jsdoc-comment">// paragraphs
+                </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterSpan</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.doc.body</span><span class="jsdoc-syntax">}); </span><span class="jsdoc-comment">// empty spans
+            </span><span class="jsdoc-syntax">}
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.enableBlocks</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-var">Roo.htmleditor.Block.initAll</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.body</span><span class="jsdoc-syntax">);
+            }
+
+            </span><span class="jsdoc-var">this.updateLanguage</span><span class="jsdoc-syntax">();
+
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">lc </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.doc.body.lastChild</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">lc </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">lc.nodeType </span><span class="jsdoc-syntax">== 1 &amp;&amp; </span><span class="jsdoc-var">lc.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;contenteditable&quot;</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">&quot;false&quot;</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-comment">// add an extra line at the end.
+                </span><span class="jsdoc-var">this.doc.body.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'br'</span><span class="jsdoc-syntax">));
+            }
+
+
         }
     },
 
         //var ss = this.el.getStyles( 'background-image', 'background-repeat');
         //ss['background-attachment'] = 'fixed'; // w3c
         </span><span class="jsdoc-var">dbody.bgProperties </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'fixed'</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// ie
-        //Roo.DomHelper.applyStyles(dbody, ss);
+        </span><span class="jsdoc-var">dbody.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;translate&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;no&quot;</span><span class="jsdoc-syntax">);
+
+        </span><span class="jsdoc-comment">//Roo.DomHelper.applyStyles(dbody, ss);
         </span><span class="jsdoc-var">Roo.EventManager.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc</span><span class="jsdoc-syntax">, {
-            </span><span class="jsdoc-comment">//'mousedown': this.onEditorEvent,
+
             </span><span class="jsdoc-string">'mouseup'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.onEditorEvent</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-string">'dblclick'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.onEditorEvent</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.onEditorEvent</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-string">'keyup'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.onEditorEvent</span><span class="jsdoc-syntax">,
+
             </span><span class="jsdoc-var">buffer</span><span class="jsdoc-syntax">:100,
             </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this
         </span><span class="jsdoc-syntax">});
+        </span><span class="jsdoc-var">Roo.EventManager.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc</span><span class="jsdoc-syntax">, {
+            </span><span class="jsdoc-string">'paste'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.onPasteEvent</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">scope </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this
+        </span><span class="jsdoc-syntax">});
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isGecko</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-var">Roo.EventManager.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'keypress'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.mozKeyPress</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
         }
+        </span><span class="jsdoc-comment">//??? needed???
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.isSafari </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.isOpera</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-var">Roo.EventManager.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'keydown'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.fixKeys</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
         }
         </span><span class="jsdoc-var">this.initialized </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
 
+
+        </span><span class="jsdoc-comment">// initialize special key events - enter
+        </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.KeyEnter</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">core </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">});
+
+
+
         </span><span class="jsdoc-var">this.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'initialize'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
         </span><span class="jsdoc-var">this.pushValue</span><span class="jsdoc-syntax">();
     },
+    </span><span class="jsdoc-comment">// this is to prevent a href clicks resulting in a redirect?
+
+    </span><span class="jsdoc-var">onPasteEvent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">)
+    {
+        </span><span class="jsdoc-comment">// I think we better assume paste is going to be a dirty load of rubish from word..
+
+        // even pasting into a 'email version' of this widget will have to clean up that mess.
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cd </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">e.browserEvent.clipboardData </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">window.clipboardData</span><span class="jsdoc-syntax">);
+
+        </span><span class="jsdoc-comment">// check what type of paste - if it's an image, then handle it differently.
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cd.files.length </span><span class="jsdoc-syntax">&gt; 0) {
+            </span><span class="jsdoc-comment">// pasting images?
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">urlAPI </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">window.createObjectURL </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">) ||
+                (</span><span class="jsdoc-var">window.URL </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">URL.revokeObjectURL </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">URL</span><span class="jsdoc-syntax">) ||
+                (</span><span class="jsdoc-var">window.webkitURL </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">webkitURL</span><span class="jsdoc-syntax">);
+
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">urlAPI.createObjectURL</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">cd.files</span><span class="jsdoc-syntax">[0]);
+            </span><span class="jsdoc-var">this.insertAtCursor</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'&lt;img src=&quot; + url + &quot;&gt;'</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+        }
+
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cd.getData</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'text/html'</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// clipboard event
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">parser </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.rtf.Parser</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cd.getData</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'text/rtf'</span><span class="jsdoc-syntax">));
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">images </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">parser.doc </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">parser.doc.getElementsByType</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'pict'</span><span class="jsdoc-syntax">) : [];
+        </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">images</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-comment">//Roo.log(imgs);
+        // fixme..
+        </span><span class="jsdoc-var">images </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">images.filter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">g</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">!</span><span class="jsdoc-var">g.path.match</span><span class="jsdoc-syntax">(/^rtf\/(head|pgdsctbl|listtable)/); }) </span><span class="jsdoc-comment">// ignore headers
+                       </span><span class="jsdoc-var">.map</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">g</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">g.toDataURL</span><span class="jsdoc-syntax">(); })
+                       </span><span class="jsdoc-var">.filter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">g</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">g </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'about:blank'</span><span class="jsdoc-syntax">; });
+
+
+        </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.cleanWordChars</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">);
+
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">d </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">DOMParser</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.parseFromString</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'text/html'</span><span class="jsdoc-syntax">))</span><span class="jsdoc-var">.body</span><span class="jsdoc-syntax">;
+
+
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getParentElement</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-comment">// check if d contains a table, and prevent nesting??
+        //Roo.log(d.getElementsByTagName('table'));
+        //Roo.log(sn);
+        //Roo.log(sn.closest('table'));
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">d.getElementsByTagName</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'table'</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.length </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">sn </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">sn.closest</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'table'</span><span class="jsdoc-syntax">)) {
+            </span><span class="jsdoc-var">e.preventDefault</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-var">this.insertAtCursor</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;You can not nest tables&quot;</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-comment">//Roo.log(&quot;prevent?&quot;); // fixme - 
+            </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+        }
+
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">images.length </span><span class="jsdoc-syntax">&gt; 0) {
+            </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">d.getElementsByTagName</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'img'</span><span class="jsdoc-syntax">), </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">img</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-var">img.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'src'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">images</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
+            });
+        }
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.autoClean</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterStyleToTag</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">d </span><span class="jsdoc-syntax">});
+            </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterAttributes</span><span class="jsdoc-syntax">({
+                </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">attrib_white </span><span class="jsdoc-syntax">: [</span><span class="jsdoc-string">'href'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'src'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'name'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'align'</span><span class="jsdoc-syntax">],
+                </span><span class="jsdoc-var">attrib_clean </span><span class="jsdoc-syntax">: [</span><span class="jsdoc-string">'href'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'src' </span><span class="jsdoc-syntax">]
+            });
+            </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterBlack</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.black</span><span class="jsdoc-syntax">});
+            </span><span class="jsdoc-comment">// should be fonts..
+            </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterKeepChildren</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">d</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: [ </span><span class="jsdoc-string">'FONT'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'O:P' </span><span class="jsdoc-syntax">]} );
+            </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterParagraph</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">d </span><span class="jsdoc-syntax">});
+            </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterSpan</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">d </span><span class="jsdoc-syntax">});
+            </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterLongBr</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">d </span><span class="jsdoc-syntax">});
+        }
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.enableBlocks</span><span class="jsdoc-syntax">) {
 
+            </span><span class="jsdoc-var">Array.from</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">d.getElementsByTagName</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'img'</span><span class="jsdoc-syntax">))</span><span class="jsdoc-var">.forEach</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">img</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">img.closest</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'figure'</span><span class="jsdoc-syntax">)) { </span><span class="jsdoc-comment">// assume!! that it's aready
+                    </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+                }
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">fig  </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.BlockFigure</span><span class="jsdoc-syntax">({
+                    </span><span class="jsdoc-var">image_src  </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">img.src
+                </span><span class="jsdoc-syntax">});
+                </span><span class="jsdoc-var">fig.updateElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">img</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// replace it..
+
+            </span><span class="jsdoc-syntax">});
+        }
+
+
+        </span><span class="jsdoc-var">this.insertAtCursor</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">d.innerHTML.replace</span><span class="jsdoc-syntax">(/&amp;nbsp;/g,</span><span class="jsdoc-string">' '</span><span class="jsdoc-syntax">));
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.enableBlocks</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-var">Roo.htmleditor.Block.initAll</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.body</span><span class="jsdoc-syntax">);
+        }
+
+
+        </span><span class="jsdoc-var">e.preventDefault</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-comment">// default behaveiour should be our local cleanup paste? (optional?)
+        // for simple editor - we want to hammer the paste and get rid of everything... - so over-rideable..
+        //this.owner.fireEvent('paste', e, v);
+    </span><span class="jsdoc-syntax">},
     </span><span class="jsdoc-comment">// private
     </span><span class="jsdoc-var">onDestroy </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
 
     </span><span class="jsdoc-var">onFirstFocus </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
 
         </span><span class="jsdoc-var">this.assignDocWin</span><span class="jsdoc-syntax">();
-
+        </span><span class="jsdoc-var">this.undoManager </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.lib.UndoManager</span><span class="jsdoc-syntax">(100,(</span><span class="jsdoc-var">this.doc.body </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.doc.documentElement</span><span class="jsdoc-syntax">));
 
         </span><span class="jsdoc-var">this.activated </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
 
 
     </span><span class="jsdoc-var">onEditorEvent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">)
     {
-        </span><span class="jsdoc-var">this.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'editorevent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+
+
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e </span><span class="jsdoc-syntax">&amp;&amp; (</span><span class="jsdoc-var">e.ctrlKey </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">e.metaKey</span><span class="jsdoc-syntax">) &amp;&amp; </span><span class="jsdoc-var">e.keyCode </span><span class="jsdoc-syntax">=== 90) {
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// we do not handle this.. (undo manager does..)
+        </span><span class="jsdoc-syntax">}
+        </span><span class="jsdoc-comment">// in theory this detects if the last element is not a br, then we try and do that.
+        // its so clicking in space at bottom triggers adding a br and moving the cursor.
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e </span><span class="jsdoc-syntax">&amp;&amp;
+            </span><span class="jsdoc-var">e.target.nodeName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'BODY' </span><span class="jsdoc-syntax">&amp;&amp;
+            </span><span class="jsdoc-var">e.type </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;mouseup&quot; </span><span class="jsdoc-syntax">&amp;&amp;
+            </span><span class="jsdoc-var">this.doc.body.lastChild
+           </span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">lc </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.doc.body.lastChild</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-comment">// gtx-trans is google translate plugin adding crap.
+            </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">lc.nodeType </span><span class="jsdoc-syntax">== 3 &amp;&amp; </span><span class="jsdoc-var">lc.nodeValue </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">) || </span><span class="jsdoc-var">lc.id </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'gtx-trans'</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-var">lc </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">lc.previousSibling</span><span class="jsdoc-syntax">;
+            }
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">lc.nodeType </span><span class="jsdoc-syntax">== 1 &amp;&amp; </span><span class="jsdoc-var">lc.nodeName </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'BR'</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-comment">// if last element is &lt;BR&gt; - then dont do anything.
+
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ns </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.doc.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'br'</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-var">this.doc.body.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ns</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.doc.createRange</span><span class="jsdoc-syntax">();
+                </span><span class="jsdoc-var">range.setStartAfter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ns</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-var">range.collapse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.win.getSelection</span><span class="jsdoc-syntax">();
+                </span><span class="jsdoc-var">sel.removeAllRanges</span><span class="jsdoc-syntax">();
+                </span><span class="jsdoc-var">sel.addRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">);
+            }
+        }
+
+
+
+        </span><span class="jsdoc-var">this.fireEditorEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
       </span><span class="jsdoc-comment">//  this.updateToolbar();
         </span><span class="jsdoc-var">this.syncValue</span><span class="jsdoc-syntax">(); </span><span class="jsdoc-comment">//we can not sync so often.. sync cleans, so this breaks stuff
     </span><span class="jsdoc-syntax">},
 
+    </span><span class="jsdoc-var">fireEditorEvent</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">)
+    {
+        </span><span class="jsdoc-var">this.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'editorevent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+    },
+
     </span><span class="jsdoc-var">insertTag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tg</span><span class="jsdoc-syntax">)
     {
         </span><span class="jsdoc-comment">// could be a bit smarter... -&gt; wrap the current selected tRoo..
 
         }
         </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;formatblock&quot;</span><span class="jsdoc-syntax">,   </span><span class="jsdoc-var">tg</span><span class="jsdoc-syntax">);
-
+        </span><span class="jsdoc-var">this.undoManager.addEvent</span><span class="jsdoc-syntax">();
     },
 
     </span><span class="jsdoc-var">insertText </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">txt</span><span class="jsdoc-syntax">)
                </span><span class="jsdoc-comment">//alert(Sender.getAttribute('label'));
 
         </span><span class="jsdoc-var">range.insertNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.createTextNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">txt</span><span class="jsdoc-syntax">));
+        </span><span class="jsdoc-var">this.undoManager.addEvent</span><span class="jsdoc-syntax">();
     } ,
 
 
      * @param {String} cmd The Midas command
      * @param {String/Boolean} value (optional) The value to pass to the command (defaults to null)
      */
-    </span><span class="jsdoc-var">relayCmd </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cmd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
+    </span><span class="jsdoc-var">relayCmd </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cmd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">)
+    {
+
+        </span><span class="jsdoc-keyword">switch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cmd</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'justifyleft'</span><span class="jsdoc-syntax">:
+            </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'justifyright'</span><span class="jsdoc-syntax">:
+            </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'justifycenter'</span><span class="jsdoc-syntax">:
+                </span><span class="jsdoc-comment">// if we are in a cell, then we will adjust the
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">n </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getParentElement</span><span class="jsdoc-syntax">();
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">td </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n.closest</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'td'</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">td</span><span class="jsdoc-syntax">) {
+                    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.htmleditor.Block.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">td</span><span class="jsdoc-syntax">);
+                    </span><span class="jsdoc-var">bl.textAlign </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cmd.replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'justify'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
+                    </span><span class="jsdoc-var">bl.updateElement</span><span class="jsdoc-syntax">();
+                    </span><span class="jsdoc-var">this.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'editorevent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+                    </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+                }
+                </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'styleWithCSS'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// 
+                </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'bold'</span><span class="jsdoc-syntax">:
+            </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'italic'</span><span class="jsdoc-syntax">:
+                </span><span class="jsdoc-comment">// if there is no selection, then we insert, and set the curson inside it..
+                </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'styleWithCSS'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+
+
+            </span><span class="jsdoc-keyword">default</span><span class="jsdoc-syntax">:
+                </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+        }
+
+
         </span><span class="jsdoc-var">this.win.focus</span><span class="jsdoc-syntax">();
         </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cmd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">);
         </span><span class="jsdoc-var">this.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'editorevent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.activated</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
         }
-        </span><span class="jsdoc-comment">/*
-        if(Roo.isIE){
-            this.win.focus();
-            var r = this.doc.selection.createRange();
-            if(r){
-                r.collapse(true);
-                r.pasteHTML(text);
-                this.syncValue();
-                this.deferFocus();
-            
-            }
-            return;
-        }
-        */
+
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isGecko </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.isOpera </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.isSafari</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-var">this.win.focus</span><span class="jsdoc-syntax">();
 
             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">win </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.win</span><span class="jsdoc-syntax">;
 
             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">win.getSelection </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">win.getSelection</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getRangeAt</span><span class="jsdoc-syntax">) {
+
+                </span><span class="jsdoc-comment">// delete the existing?
+
+                </span><span class="jsdoc-var">this.createRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getSelection</span><span class="jsdoc-syntax">())</span><span class="jsdoc-var">.deleteContents</span><span class="jsdoc-syntax">();
                 </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">win.getSelection</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.getRangeAt</span><span class="jsdoc-syntax">(0);
                 </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">range.createContextualFragment</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">;
                 </span><span class="jsdoc-var">range.insertNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">range.cloneRange</span><span class="jsdoc-syntax">();
+                </span><span class="jsdoc-var">range.collapse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
+
+                </span><span class="jsdoc-var">win.getSelection</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.removeAllRanges</span><span class="jsdoc-syntax">();
+                </span><span class="jsdoc-var">win.getSelection</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.addRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">);
+
+
+
             } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">win.document.selection </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">win.document.selection.createRange</span><span class="jsdoc-syntax">) {
                 </span><span class="jsdoc-comment">// no firefox support
                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">txt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">text.outerHTML</span><span class="jsdoc-syntax">;
                 </span><span class="jsdoc-var">win.document.selection.createRange</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.pasteHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">txt</span><span class="jsdoc-syntax">);
+
             } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
                 </span><span class="jsdoc-comment">// no firefox support
                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">txt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">text </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">text.outerHTML</span><span class="jsdoc-syntax">;
                 </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'InsertHTML'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">txt</span><span class="jsdoc-syntax">);
             }
-
             </span><span class="jsdoc-var">this.syncValue</span><span class="jsdoc-syntax">();
 
             </span><span class="jsdoc-var">this.deferFocus</span><span class="jsdoc-syntax">();
                         </span><span class="jsdoc-var">cmd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'underline'</span><span class="jsdoc-syntax">;
                         </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
 
-                    </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'v'</span><span class="jsdoc-syntax">:
-                        </span><span class="jsdoc-var">this.cleanUpPaste.defer</span><span class="jsdoc-syntax">(100, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-                        </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+                    </span><span class="jsdoc-comment">//case 'v':
+                      //  this.cleanUpPaste.defer(100, this);
+                      //  return;
 
-                }
+                </span><span class="jsdoc-syntax">}
                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cmd</span><span class="jsdoc-syntax">){
-                    </span><span class="jsdoc-var">this.win.focus</span><span class="jsdoc-syntax">();
-                    </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cmd</span><span class="jsdoc-syntax">);
-                    </span><span class="jsdoc-var">this.deferFocus</span><span class="jsdoc-syntax">();
+
+                    </span><span class="jsdoc-var">this.relayCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cmd</span><span class="jsdoc-syntax">);
+                    </span><span class="jsdoc-comment">//this.win.focus();
+                    //this.execCmd(cmd);
+                    //this.deferFocus();
                     </span><span class="jsdoc-var">e.preventDefault</span><span class="jsdoc-syntax">();
                 }
 
 
     </span><span class="jsdoc-comment">// private
     </span><span class="jsdoc-var">fixKeys </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){ </span><span class="jsdoc-comment">// load time branching for fastest keydown performance
+
+
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.getKey</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">;
                     }
                     </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
                 }
-
-                </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">e.ENTER</span><span class="jsdoc-syntax">){
-                    </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.doc.selection.createRange</span><span class="jsdoc-syntax">();
-                    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">){
-                        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">r.parentElement</span><span class="jsdoc-syntax">();
-                        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">target.tagName.toLowerCase</span><span class="jsdoc-syntax">() != </span><span class="jsdoc-string">'li'</span><span class="jsdoc-syntax">){
-                            </span><span class="jsdoc-var">e.stopEvent</span><span class="jsdoc-syntax">();
-                            </span><span class="jsdoc-var">r.pasteHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'&lt;br /&gt;'</span><span class="jsdoc-syntax">);
-                            </span><span class="jsdoc-var">r.collapse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
-                            </span><span class="jsdoc-var">r.select</span><span class="jsdoc-syntax">();
+                </span><span class="jsdoc-comment">/// this is handled by Roo.htmleditor.KeyEnter
+                 /*
+                if(k == e.ENTER){
+                    r = this.doc.selection.createRange();
+                    if(r){
+                        var target = r.parentElement();
+                        if(!target || target.tagName.toLowerCase() != 'li'){
+                            e.stopEvent();
+                            r.pasteHTML('&lt;br/&gt;');
+                            r.collapse(false);
+                            r.select();
                         }
                     }
                 }
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">String.fromCharCode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.toLowerCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">'v'</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-comment">// paste
-                    </span><span class="jsdoc-var">this.cleanUpPaste.defer</span><span class="jsdoc-syntax">(100, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-                    </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-                }
+                */
+                //if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
+                //    this.cleanUpPaste.defer(100, this);
+                //    return;
+                //}
 
 
-            };
+            </span><span class="jsdoc-syntax">};
         }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isOpera</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.getKey</span><span class="jsdoc-syntax">();
                     </span><span class="jsdoc-var">this.execCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'InsertHTML'</span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">'&amp;#160;&amp;#160;&amp;#160;&amp;#160;'</span><span class="jsdoc-syntax">);
                     </span><span class="jsdoc-var">this.deferFocus</span><span class="jsdoc-syntax">();
                 }
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">String.fromCharCode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.toLowerCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">'v'</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-comment">// paste
-                    </span><span class="jsdoc-var">this.cleanUpPaste.defer</span><span class="jsdoc-syntax">(100, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-                    </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-                }
 
-            };
+                </span><span class="jsdoc-comment">//if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
+                //    this.cleanUpPaste.defer(100, this);
+                 //   return;
+                //}
+
+            </span><span class="jsdoc-syntax">};
         }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isSafari</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.getKey</span><span class="jsdoc-syntax">();
                     </span><span class="jsdoc-var">this.deferFocus</span><span class="jsdoc-syntax">();
                     </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
                 }
-               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">String.fromCharCode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.toLowerCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">'v'</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-comment">// paste
-                    </span><span class="jsdoc-var">this.cleanUpPaste.defer</span><span class="jsdoc-syntax">(100, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
-                    </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-                }
+                 </span><span class="jsdoc-var">this.mozKeyPress</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
 
-             };
+               </span><span class="jsdoc-comment">//if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
+                 //   this.cleanUpPaste.defer(100, this);
+                 //   return;
+               // }
+
+             </span><span class="jsdoc-syntax">};
         }
     }(),
 
     </span><span class="jsdoc-var">getSelection </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
     {
         </span><span class="jsdoc-var">this.assignDocWin</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.isIE </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.doc.selection </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.win.getSelection</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.lib.Selection.wrap</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.doc.selection </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.win.getSelection</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">this.doc</span><span class="jsdoc-syntax">);
+    },
+    </span><span class="jsdoc-comment">/**
+     * Select a dom node
+     * @param {DomElement} node the node to select
+     */
+    </span><span class="jsdoc-var">selectNode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">collapse</span><span class="jsdoc-syntax">)
+    {
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nodeRange </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.ownerDocument.createRange</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
+            </span><span class="jsdoc-var">nodeRange.selectNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
+        } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-var">nodeRange.selectNodeContents</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
+        }
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">collapse </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-var">nodeRange.collapse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+        }
+        </span><span class="jsdoc-comment">//
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">s </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.win.getSelection</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-var">s.removeAllRanges</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-var">s.addRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nodeRange</span><span class="jsdoc-syntax">);
     },
 
     </span><span class="jsdoc-var">getSelectedNode</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
 
 
 
-
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.createRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getSelection</span><span class="jsdoc-syntax">())</span><span class="jsdoc-var">.cloneRange</span><span class="jsdoc-syntax">();
 
         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE</span><span class="jsdoc-syntax">) {
 
         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">nodes</span><span class="jsdoc-syntax">[0];
     },
+
+
     </span><span class="jsdoc-var">createRange</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">)
     {
         </span><span class="jsdoc-comment">// this has strange effects when using with 
         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">3;
     },
 
-    </span><span class="jsdoc-comment">// private? - in a new class?
-    </span><span class="jsdoc-var">cleanUpPaste </span><span class="jsdoc-syntax">:  </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
-    {
-        </span><span class="jsdoc-comment">// cleans up the whole document..
-        </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'cleanuppaste'</span><span class="jsdoc-syntax">);
-
-        </span><span class="jsdoc-var">this.cleanUpChildren</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.body</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">clean </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.cleanWordChars</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.body.innerHTML</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">clean </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">this.doc.body.innerHTML</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-var">this.doc.body.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">clean</span><span class="jsdoc-syntax">;
-        }
-
-    },
-
     </span><span class="jsdoc-var">cleanWordChars </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">input</span><span class="jsdoc-syntax">) {</span><span class="jsdoc-comment">// change the chars to hex code
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">he </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.HtmlEditorCore</span><span class="jsdoc-syntax">;
 
+       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">swapCodes  </span><span class="jsdoc-syntax">= [
+            [    8211, </span><span class="jsdoc-string">&quot;&amp;#8211;&quot; </span><span class="jsdoc-syntax">],
+            [    8212, </span><span class="jsdoc-string">&quot;&amp;#8212;&quot; </span><span class="jsdoc-syntax">],
+            [    8216,  </span><span class="jsdoc-string">&quot;'&quot; </span><span class="jsdoc-syntax">],
+            [    8217, </span><span class="jsdoc-string">&quot;'&quot; </span><span class="jsdoc-syntax">],
+            [    8220, </span><span class="jsdoc-string">'&quot;' </span><span class="jsdoc-syntax">],
+            [    8221, </span><span class="jsdoc-string">'&quot;' </span><span class="jsdoc-syntax">],
+            [    8226, </span><span class="jsdoc-string">&quot;*&quot; </span><span class="jsdoc-syntax">],
+            [    8230, </span><span class="jsdoc-string">&quot;...&quot; </span><span class="jsdoc-syntax">]
+        ];
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">output </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">input</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">he.swapCodes</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sw</span><span class="jsdoc-syntax">) {
+        </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">swapCodes</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sw</span><span class="jsdoc-syntax">) {
             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">swapper </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">RegExp</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;\\u&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">sw</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.toString</span><span class="jsdoc-syntax">(16), </span><span class="jsdoc-string">&quot;g&quot;</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// hex codes
 
             </span><span class="jsdoc-var">output </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">output.replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">swapper</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sw</span><span class="jsdoc-syntax">[1]);
     },
 
 
-    </span><span class="jsdoc-var">cleanUpChildren </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">)
-    {
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">n.childNodes.length</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-        </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n.childNodes.length</span><span class="jsdoc-syntax">-1; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&gt; -1 ; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">--) {
-           </span><span class="jsdoc-var">this.cleanUpChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n.childNodes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
-        }
-    },
-
 
 
 
     </span><span class="jsdoc-var">cleanUpChild </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">)
     {
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ed </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-comment">//console.log(node);
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.nodeName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;#text&quot;</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-comment">// clean up silly Windows -- stuff?
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.nodeName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;#comment&quot;</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.allowComments</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">node.parentNode.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
-            }
-            </span><span class="jsdoc-comment">// clean up silly Windows -- stuff?
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">lcname </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.tagName.toLowerCase</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-comment">// we ignore whitelists... ?? = not really the way to go, but we probably have not got a full
-        // whitelist of tags..
-
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.black.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">lcname</span><span class="jsdoc-syntax">) &gt; -1 &amp;&amp; </span><span class="jsdoc-var">this.clearUp </span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-comment">// remove node.
-            </span><span class="jsdoc-var">node.parentNode.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-
-        }
-
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">remove_keep_children</span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.HtmlEditorCore.remove.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.tagName.toLowerCase</span><span class="jsdoc-syntax">()) &gt; -1;
-
-        </span><span class="jsdoc-comment">// spans with no attributes - just remove them..
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">((!</span><span class="jsdoc-var">node.attributes </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">node.attributes.length</span><span class="jsdoc-syntax">) &amp;&amp; </span><span class="jsdoc-var">lcname </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'span'</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-var">remove_keep_children </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
-        }
-
-        </span><span class="jsdoc-comment">// remove &lt;a name=....&gt; as rendering on yahoo mailer is borked with this.
-        // this will have to be flaged elsewhere - perhaps ablack=name... on the mailer..
-
-        //if (node.tagName.toLowerCase() == 'a' &amp;&amp; !node.hasAttribute('href')) {
-        //    remove_keep_children = true;
-        //}
-
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">remove_keep_children</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-var">this.cleanUpChildren</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-comment">// inserts everything just before this node...
-            </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.childNodes.length</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.childNodes</span><span class="jsdoc-syntax">[0];
-                </span><span class="jsdoc-var">node.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cn</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-var">node.parentNode.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
-            }
-            </span><span class="jsdoc-var">node.parentNode.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">node.attributes </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">node.attributes.length</span><span class="jsdoc-syntax">) {
 
-
-
-
-            </span><span class="jsdoc-var">this.cleanUpChildren</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-
-        </span><span class="jsdoc-keyword">function </span><span class="jsdoc-var">cleanAttr</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">)
-        {
-
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v.match</span><span class="jsdoc-syntax">(/^\./) || </span><span class="jsdoc-var">v.match</span><span class="jsdoc-syntax">(/^\//)) {
-                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-            }
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v.match</span><span class="jsdoc-syntax">(/^(http|https):\/\//) || </span><span class="jsdoc-var">v.match</span><span class="jsdoc-syntax">(/^mailto:/) || </span><span class="jsdoc-var">v.match</span><span class="jsdoc-syntax">(/^ftp:/)) {
-                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-            }
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v.match</span><span class="jsdoc-syntax">(/^#/)) {
-                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-            }
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v.match</span><span class="jsdoc-syntax">(/^\{/)) { </span><span class="jsdoc-comment">// allow template editing.
-                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-            }
-</span><span class="jsdoc-comment">//            Roo.log(&quot;(REMOVE TAG)&quot;+ node.tagName +'.' + n + '=' + v);
-            </span><span class="jsdoc-var">node.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">);
-
-        }
-
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cwhite </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.cwhite</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cblack </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.cblack</span><span class="jsdoc-syntax">;
-
-        </span><span class="jsdoc-keyword">function </span><span class="jsdoc-var">cleanStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">)
-        {
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v.match</span><span class="jsdoc-syntax">(/expression/)) { </span><span class="jsdoc-comment">//XSS?? should we even bother..
-                </span><span class="jsdoc-var">node.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-            }
-
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">parts </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">v.split</span><span class="jsdoc-syntax">(/;/);
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">clean </span><span class="jsdoc-syntax">= [];
-
-            </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">parts</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">p.replace</span><span class="jsdoc-syntax">(/^\s+/g,</span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/\s+$/g,</span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">p.length</span><span class="jsdoc-syntax">) {
-                    </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
-                }
-                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">l </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">p.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">':'</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.shift</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/\s+/g,</span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-var">l </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">l.replace</span><span class="jsdoc-syntax">(/^\s+/g,</span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/\s+$/g,</span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
-
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">cwhite.length </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">cblack.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">l</span><span class="jsdoc-syntax">) &gt; -1) {
-</span><span class="jsdoc-comment">//                    Roo.log('(REMOVE CSS)' + node.tagName +'.' + n + ':'+l + '=' + v);
-                    //node.removeAttribute(n);
-                    </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
-                }
-                </span><span class="jsdoc-comment">//Roo.log()
-                // only allow 'c whitelisted system attributes'
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">cwhite.length </span><span class="jsdoc-syntax">&amp;&amp;  </span><span class="jsdoc-var">cwhite.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">l</span><span class="jsdoc-syntax">) &lt; 0 &amp;&amp; </span><span class="jsdoc-var">cwhite.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">l.toLowerCase</span><span class="jsdoc-syntax">()) &lt; 0 ) {
-</span><span class="jsdoc-comment">//                    Roo.log('(REMOVE CSS)' + node.tagName +'.' + n + ':'+l + '=' + v);
-                    //node.removeAttribute(n);
-                    </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
-                }
-
-
-
-
-                </span><span class="jsdoc-var">clean.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
-            });
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">clean.length</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">node.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">clean.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">';'</span><span class="jsdoc-syntax">));
-            } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
-                </span><span class="jsdoc-var">node.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">);
-            }
-
-        }
-
-
-        </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.attributes.length</span><span class="jsdoc-syntax">-1; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&gt; -1 ; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">--) {
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">a </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.attributes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
-            </span><span class="jsdoc-comment">//console.log(a);
-
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a.name.toLowerCase</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.substr</span><span class="jsdoc-syntax">(0,2)==</span><span class="jsdoc-string">'on'</span><span class="jsdoc-syntax">)  {
-                </span><span class="jsdoc-var">node.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a.name</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
-            }
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.HtmlEditorCore.ablack.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a.name.toLowerCase</span><span class="jsdoc-syntax">()) &gt; -1) {
-                </span><span class="jsdoc-var">node.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a.name</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
-            }
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.HtmlEditorCore.aclean.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a.name.toLowerCase</span><span class="jsdoc-syntax">()) &gt; -1) {
-                </span><span class="jsdoc-var">cleanAttr</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a.name</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">a.value</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// fixme..
-                </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
-            }
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a.name </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">cleanStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a.name</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">a.value</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
-            }
-            </span><span class="jsdoc-comment">/// clean up MS crap..
-            // tecnically this should be a list of valid class'es..
-
-
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a.name </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'class'</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a.value.match</span><span class="jsdoc-syntax">(/^Mso/)) {
-                    </span><span class="jsdoc-var">node.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'class'</span><span class="jsdoc-syntax">);
-                }
-
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a.value.match</span><span class="jsdoc-syntax">(/^body$/)) {
-                    </span><span class="jsdoc-var">node.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'class'</span><span class="jsdoc-syntax">);
-                }
-                </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
-            }
-
-            </span><span class="jsdoc-comment">// style cleanup!?
-            // class cleanup?
-
-        </span><span class="jsdoc-syntax">}
-
-
-        </span><span class="jsdoc-var">this.cleanUpChildren</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterComment</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">});
+        </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterAttributes</span><span class="jsdoc-syntax">({
+                </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">attrib_black </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.ablack</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">attrib_clean </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.aclean</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">style_white </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.cwhite</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">style_black </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.cblack
+        </span><span class="jsdoc-syntax">});
+        </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterBlack</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.black</span><span class="jsdoc-syntax">});
+        </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterKeepChildren</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.tag_remove</span><span class="jsdoc-syntax">} );
 
 
     },
 
     </span><span class="jsdoc-comment">/**
      * Clean up MS wordisms...
+     * @deprecated - use filter directly
      */
     </span><span class="jsdoc-var">cleanWord </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">)
     {
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-var">this.cleanWord</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.body</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(
-                </span><span class="jsdoc-var">node.nodeName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'SPAN' </span><span class="jsdoc-syntax">&amp;&amp;
-                !</span><span class="jsdoc-var">node.hasAttributes</span><span class="jsdoc-syntax">() &amp;&amp;
-                </span><span class="jsdoc-var">node.childNodes.length </span><span class="jsdoc-syntax">== 1 &amp;&amp;
-                </span><span class="jsdoc-var">node.firstChild.nodeName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;#text&quot;
-        </span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">textNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.firstChild</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-var">node.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">textNode</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'lang'</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'zh-CN'</span><span class="jsdoc-syntax">) {   </span><span class="jsdoc-comment">// do not space pad on chinese characters..
-                </span><span class="jsdoc-var">node.parentNode.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.ownerDocument.createTextNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot; &quot;</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
-            }
-            </span><span class="jsdoc-var">node.parentNode.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">textNode</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'lang'</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'zh-CN'</span><span class="jsdoc-syntax">) {   </span><span class="jsdoc-comment">// do not space pad on chinese characters..
-                </span><span class="jsdoc-var">node.parentNode.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.ownerDocument.createTextNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot; &quot;</span><span class="jsdoc-syntax">) , </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
-            }
-            </span><span class="jsdoc-var">node.parentNode.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
-        }
-
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.nodeName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;#text&quot;</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-comment">// clean up silly Windows -- stuff?
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.nodeName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;#comment&quot;</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-var">node.parentNode.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-comment">// clean up silly Windows -- stuff?
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.tagName.toLowerCase</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.match</span><span class="jsdoc-syntax">(/^(style|script|applet|embed|noframes|noscript)$/)) {
-            </span><span class="jsdoc-var">node.parentNode.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-        </span><span class="jsdoc-comment">//Roo.log(node.tagName);
-        // remove - but keep children..
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.tagName.toLowerCase</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.match</span><span class="jsdoc-syntax">(/^(meta|link|\\?xml:|st1:|o:|v:|font)/)) {
-            </span><span class="jsdoc-comment">//Roo.log('-- removed');
-            </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.childNodes.length</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.childNodes</span><span class="jsdoc-syntax">[0];
-                </span><span class="jsdoc-var">node.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cn</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-var">node.parentNode.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-comment">// move node to parent - and clean it..
-                </span><span class="jsdoc-var">this.cleanWord</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cn</span><span class="jsdoc-syntax">);
-            }
-            </span><span class="jsdoc-var">node.parentNode.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-comment">/// no need to iterate chidlren = it's got none..
-            //this.iterateChildren(node, this.cleanWord);
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-        </span><span class="jsdoc-comment">// clean styles
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.className.length</span><span class="jsdoc-syntax">) {
-
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.className.split</span><span class="jsdoc-syntax">(/\W+/);
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cna </span><span class="jsdoc-syntax">= [];
-            </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cls.match</span><span class="jsdoc-syntax">(/Mso[a-zA-Z]+/)) {
-                    </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-                }
-                </span><span class="jsdoc-var">cna.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">);
-            });
-            </span><span class="jsdoc-var">node.className </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cna.length </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">cna.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">' '</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">cna.length</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">node.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;class&quot;</span><span class="jsdoc-syntax">);
-            }
-        }
-
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;lang&quot;</span><span class="jsdoc-syntax">)) {
-            </span><span class="jsdoc-var">node.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;lang&quot;</span><span class="jsdoc-syntax">);
-        }
-
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;style&quot;</span><span class="jsdoc-syntax">)) {
-
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">styles </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;style&quot;</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;;&quot;</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nstyle </span><span class="jsdoc-syntax">= [];
-            </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">styles</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">s.match</span><span class="jsdoc-syntax">(/:/)) {
-                    </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-                }
-                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">kv </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">s.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;:&quot;</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">kv</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.match</span><span class="jsdoc-syntax">(/^(mso-|line|font|background|margin|padding|color)/)) {
-                    </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-                }
-                </span><span class="jsdoc-comment">// what ever is left... we allow.
-                </span><span class="jsdoc-var">nstyle.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">);
-            });
-            </span><span class="jsdoc-var">node.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;style&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nstyle.length </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">nstyle.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">';'</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">nstyle.length</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">node.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">);
-            }
-        }
-        </span><span class="jsdoc-var">this.iterateChildren</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.cleanWord</span><span class="jsdoc-syntax">);
-
-
+        </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterWord</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.doc.body </span><span class="jsdoc-syntax">});
 
-    },
-    </span><span class="jsdoc-comment">/**
-     * iterateChildren of a Node, calling fn each time, using this as the scole..
-     * @param {DomNode} node node to iterate children of.
-     * @param {Function} fn method of this class to call on each item.
-     */
-    </span><span class="jsdoc-var">iterateChildren </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">)
-    {
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">node.childNodes.length</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-        </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.childNodes.length</span><span class="jsdoc-syntax">-1; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&gt; -1 ; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">--) {
-           </span><span class="jsdoc-var">fn.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node.childNodes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">])
-        }
     },
 
 
     </span><span class="jsdoc-comment">/**
-     * cleanTableWidths.
-     *
-     * Quite often pasting from word etc.. results in tables with column and widths.
-     * This does not work well on fluid HTML layouts - like emails. - so this code should hunt an destroy them..
-     *
+
+     * @deprecated - use filters
      */
     </span><span class="jsdoc-var">cleanTableWidths </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">)
     {
-
-
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-var">this.cleanTableWidths</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.body</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-
-        </span><span class="jsdoc-comment">// ignore list...
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.nodeName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;#text&quot; </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">node.nodeName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;#comment&quot;</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-        </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.tagName</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">node.tagName.toLowerCase</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.match</span><span class="jsdoc-syntax">(/^(table|td|tr)$/)) {
-            </span><span class="jsdoc-var">this.iterateChildren</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.cleanTableWidths</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-        }
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'width'</span><span class="jsdoc-syntax">)) {
-            </span><span class="jsdoc-var">node.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'width'</span><span class="jsdoc-syntax">);
-        }
-
-
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;style&quot;</span><span class="jsdoc-syntax">)) {
-            </span><span class="jsdoc-comment">// pretty basic...
-
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">styles </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;style&quot;</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;;&quot;</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nstyle </span><span class="jsdoc-syntax">= [];
-            </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">styles</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">s.match</span><span class="jsdoc-syntax">(/:/)) {
-                    </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-                }
-                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">kv </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">s.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;:&quot;</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">kv</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.match</span><span class="jsdoc-syntax">(/^\s*(width|min-width)\s*$/)) {
-                    </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-                }
-                </span><span class="jsdoc-comment">// what ever is left... we allow.
-                </span><span class="jsdoc-var">nstyle.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">);
-            });
-            </span><span class="jsdoc-var">node.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;style&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nstyle.length </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">nstyle.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">';'</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">nstyle.length</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">node.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">);
-            }
-        }
-
-        </span><span class="jsdoc-var">this.iterateChildren</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.cleanTableWidths</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterTableWidth</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.doc.body</span><span class="jsdoc-syntax">});
 
 
     },
 
 
 
-
-    </span><span class="jsdoc-var">domToHTML </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">currentElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">depth</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nopadtext</span><span class="jsdoc-syntax">) {
-
-        </span><span class="jsdoc-var">depth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">depth </span><span class="jsdoc-syntax">|| 0;
-        </span><span class="jsdoc-var">nopadtext </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">nopadtext </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
-
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">currentElement</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.domToHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.doc.body</span><span class="jsdoc-syntax">);
-        }
-
-        </span><span class="jsdoc-comment">//Roo.log(currentElement);
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">allText </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nodeName </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">currentElement.nodeName</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tagName </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.util.Format.htmlEncode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">currentElement.tagName</span><span class="jsdoc-syntax">);
-
-        </span><span class="jsdoc-keyword">if  </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nodeName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'#text'</span><span class="jsdoc-syntax">) {
-
-            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">nopadtext </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">currentElement.nodeValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">currentElement.nodeValue.trim</span><span class="jsdoc-syntax">();
-        }
-
-
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nodeName </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'BODY'</span><span class="jsdoc-syntax">) {
-
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0;
-            </span><span class="jsdoc-comment">// Prints the node tagName, such as &lt;A&gt;, &lt;IMG&gt;, etc
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tagName</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">attr </span><span class="jsdoc-syntax">= [];
-                </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">currentElement.attributes.length</span><span class="jsdoc-syntax">;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
-                    </span><span class="jsdoc-comment">// quoting?
-                    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">aname </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">currentElement.attributes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">;
-                    </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">currentElement.attributes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.value.length</span><span class="jsdoc-syntax">) {
-                        </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
-                    }
-                    </span><span class="jsdoc-var">attr.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">aname </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'=&quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">Roo.util.Format.htmlEncode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">currentElement.attributes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.value</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-string">'&quot;' </span><span class="jsdoc-syntax">);
-                }
-
-                </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;&lt;&quot;</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">currentElement.tagName</span><span class="jsdoc-syntax">+ ( </span><span class="jsdoc-var">attr.length </span><span class="jsdoc-syntax">? (</span><span class="jsdoc-string">' ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">attr.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">' '</span><span class="jsdoc-syntax">) ) : </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-string">&quot;&gt;&quot;</span><span class="jsdoc-syntax">;
-            }
-            </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
-
-                </span><span class="jsdoc-comment">// eack
-            </span><span class="jsdoc-syntax">}
-        } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
-            </span><span class="jsdoc-var">tagName </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
-        }
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">'IMG'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'BR'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'HR'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'INPUT'</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tagName</span><span class="jsdoc-syntax">) &gt; -1) {
-            </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">;
-        }
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">'PRE'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'TEXTAREA'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'TD'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'A'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'SPAN'</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tagName</span><span class="jsdoc-syntax">) &gt; -1) { </span><span class="jsdoc-comment">// or code?
-            </span><span class="jsdoc-var">nopadtext </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
-        }
-
-
-        </span><span class="jsdoc-comment">// Traverse the tree
-        </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0;
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">currentElementChild </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">currentElement.childNodes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">allText </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">innerHTML  </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-var">lastnode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">currentElementChild</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-comment">// Formatting code (indent the tree so it looks nice on the screen)
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nopad </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">nopadtext</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">lastnode </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'SPAN'</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">nopad  </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
-            }
-            </span><span class="jsdoc-comment">// text
-            </span><span class="jsdoc-keyword">if  </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">currentElementChild.nodeName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'#text'</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">toadd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.util.Format.htmlEncode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">currentElementChild.nodeValue</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-var">toadd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">nopadtext </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">toadd </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">toadd.trim</span><span class="jsdoc-syntax">();
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">nopad </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">toadd.length </span><span class="jsdoc-syntax">&gt; 80) {
-                    </span><span class="jsdoc-var">innerHTML  </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">&quot;\n&quot; </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">depth </span><span class="jsdoc-syntax">+ 1 ))</span><span class="jsdoc-var">.join</span><span class="jsdoc-syntax">( </span><span class="jsdoc-string">&quot;  &quot;  </span><span class="jsdoc-syntax">);
-                }
-                </span><span class="jsdoc-var">innerHTML  </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">toadd</span><span class="jsdoc-syntax">;
-
-                </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++;
-                </span><span class="jsdoc-var">currentElementChild </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">currentElement.childNodes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-var">lastNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
-                </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
-            }
-            </span><span class="jsdoc-var">allText </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
-
-            </span><span class="jsdoc-var">innerHTML  </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">nopad </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;\n&quot; </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">depth </span><span class="jsdoc-syntax">+ 1 ))</span><span class="jsdoc-var">.join</span><span class="jsdoc-syntax">( </span><span class="jsdoc-string">&quot;  &quot;  </span><span class="jsdoc-syntax">);
-
-            </span><span class="jsdoc-comment">// Recursively traverse the tree structure of the child node
-            </span><span class="jsdoc-var">innerHTML   </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.domToHTML</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">currentElementChild</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">depth</span><span class="jsdoc-syntax">+1, </span><span class="jsdoc-var">nopadtext</span><span class="jsdoc-syntax">);
-            </span><span class="jsdoc-var">lastnode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">currentElementChild.nodeName</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++;
-            </span><span class="jsdoc-var">currentElementChild</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">currentElement.childNodes.item</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">);
-        }
-
-        </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">innerHTML</span><span class="jsdoc-syntax">;
-
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">allText</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-comment">// The remaining code is mostly for formatting the tree
-            </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">nopadtext </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;\n&quot; </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">depth  </span><span class="jsdoc-syntax">))</span><span class="jsdoc-var">.join</span><span class="jsdoc-syntax">( </span><span class="jsdoc-string">&quot;  &quot;  </span><span class="jsdoc-syntax">);
-        }
-
-
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tagName</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">+= </span><span class="jsdoc-string">&quot;&lt;/&quot;</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">tagName</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">&quot;&gt;&quot;</span><span class="jsdoc-syntax">;
-        }
-        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">ret</span><span class="jsdoc-syntax">;
-
-    },
-
     </span><span class="jsdoc-var">applyBlacklists </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
     {
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">w </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.owner.white</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.owner.white </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.owner.white  </span><span class="jsdoc-syntax">: [];
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.owner.black</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.owner.black </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.owner.black </span><span class="jsdoc-syntax">:  [];
 
+        </span><span class="jsdoc-var">this.aclean </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.owner.aclean</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.owner.aclean </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.owner.aclean </span><span class="jsdoc-syntax">:  </span><span class="jsdoc-var">Roo.HtmlEditorCore.aclean</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">this.ablack </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.owner.ablack</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.owner.ablack </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.owner.ablack </span><span class="jsdoc-syntax">:  </span><span class="jsdoc-var">Roo.HtmlEditorCore.ablack</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">this.tag_remove </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.owner.tag_remove</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.owner.tag_remove </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.owner.tag_remove </span><span class="jsdoc-syntax">:  </span><span class="jsdoc-var">Roo.HtmlEditorCore.tag_remove</span><span class="jsdoc-syntax">;
+
         </span><span class="jsdoc-var">this.white </span><span class="jsdoc-syntax">= [];
         </span><span class="jsdoc-var">this.black </span><span class="jsdoc-syntax">= [];
         </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.HtmlEditorCore.white</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">) {
 
     },
 
+
+    </span><span class="jsdoc-var">updateLanguage </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
+    {
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.iframe </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">this.iframe.contentDocument</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        }
+        </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.iframe.contentDocument.body</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.attr</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;lang&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.language</span><span class="jsdoc-syntax">);
+    },
+
+
     </span><span class="jsdoc-var">removeStylesheets </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
     {
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_this </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
 </span><span class="jsdoc-syntax">});
 
 </span><span class="jsdoc-var">Roo.HtmlEditorCore.white </span><span class="jsdoc-syntax">= [
-        </span><span class="jsdoc-string">'area'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'br'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'img'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'input'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'hr'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'wbr'</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-string">'AREA'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'BR'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'IMG'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'INPUT'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'HR'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'WBR'</span><span class="jsdoc-syntax">,
 
-       </span><span class="jsdoc-string">'address'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'blockquote'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'center'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'dd'</span><span class="jsdoc-syntax">,      </span><span class="jsdoc-string">'dir'</span><span class="jsdoc-syntax">,       </span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">,
-       </span><span class="jsdoc-string">'dl'</span><span class="jsdoc-syntax">,      </span><span class="jsdoc-string">'dt'</span><span class="jsdoc-syntax">,         </span><span class="jsdoc-string">'h1'</span><span class="jsdoc-syntax">,     </span><span class="jsdoc-string">'h2'</span><span class="jsdoc-syntax">,      </span><span class="jsdoc-string">'h3'</span><span class="jsdoc-syntax">,        </span><span class="jsdoc-string">'h4'</span><span class="jsdoc-syntax">,
-       </span><span class="jsdoc-string">'h5'</span><span class="jsdoc-syntax">,      </span><span class="jsdoc-string">'h6'</span><span class="jsdoc-syntax">,         </span><span class="jsdoc-string">'hr'</span><span class="jsdoc-syntax">,     </span><span class="jsdoc-string">'isindex'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'listing'</span><span class="jsdoc-syntax">,   </span><span class="jsdoc-string">'marquee'</span><span class="jsdoc-syntax">,
-       </span><span class="jsdoc-string">'menu'</span><span class="jsdoc-syntax">,    </span><span class="jsdoc-string">'multicol'</span><span class="jsdoc-syntax">,   </span><span class="jsdoc-string">'ol'</span><span class="jsdoc-syntax">,     </span><span class="jsdoc-string">'p'</span><span class="jsdoc-syntax">,       </span><span class="jsdoc-string">'plaintext'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'pre'</span><span class="jsdoc-syntax">,
-       </span><span class="jsdoc-string">'table'</span><span class="jsdoc-syntax">,   </span><span class="jsdoc-string">'ul'</span><span class="jsdoc-syntax">,         </span><span class="jsdoc-string">'xmp'</span><span class="jsdoc-syntax">,
+       </span><span class="jsdoc-string">'ADDRESS'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'BLOCKQUOTE'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'CENTER'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'DD'</span><span class="jsdoc-syntax">,      </span><span class="jsdoc-string">'DIR'</span><span class="jsdoc-syntax">,       </span><span class="jsdoc-string">'DIV'</span><span class="jsdoc-syntax">,
+       </span><span class="jsdoc-string">'DL'</span><span class="jsdoc-syntax">,      </span><span class="jsdoc-string">'DT'</span><span class="jsdoc-syntax">,         </span><span class="jsdoc-string">'H1'</span><span class="jsdoc-syntax">,     </span><span class="jsdoc-string">'H2'</span><span class="jsdoc-syntax">,      </span><span class="jsdoc-string">'H3'</span><span class="jsdoc-syntax">,        </span><span class="jsdoc-string">'H4'</span><span class="jsdoc-syntax">,
+       </span><span class="jsdoc-string">'H5'</span><span class="jsdoc-syntax">,      </span><span class="jsdoc-string">'H6'</span><span class="jsdoc-syntax">,         </span><span class="jsdoc-string">'HR'</span><span class="jsdoc-syntax">,     </span><span class="jsdoc-string">'ISINDEX'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'LISTING'</span><span class="jsdoc-syntax">,   </span><span class="jsdoc-string">'MARQUEE'</span><span class="jsdoc-syntax">,
+       </span><span class="jsdoc-string">'MENU'</span><span class="jsdoc-syntax">,    </span><span class="jsdoc-string">'MULTICOL'</span><span class="jsdoc-syntax">,   </span><span class="jsdoc-string">'OL'</span><span class="jsdoc-syntax">,     </span><span class="jsdoc-string">'P'</span><span class="jsdoc-syntax">,       </span><span class="jsdoc-string">'PLAINTEXT'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'PRE'</span><span class="jsdoc-syntax">,
+       </span><span class="jsdoc-string">'TABLE'</span><span class="jsdoc-syntax">,   </span><span class="jsdoc-string">'UL'</span><span class="jsdoc-syntax">,         </span><span class="jsdoc-string">'XMP'</span><span class="jsdoc-syntax">,
 
-       </span><span class="jsdoc-string">'caption'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'col'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'colgroup'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'tbody'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'td'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'tfoot'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'th'</span><span class="jsdoc-syntax">,
-      </span><span class="jsdoc-string">'thead'</span><span class="jsdoc-syntax">,   </span><span class="jsdoc-string">'tr'</span><span class="jsdoc-syntax">,
+       </span><span class="jsdoc-string">'CAPTION'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'COL'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'COLGROUP'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'TBODY'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'TD'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'TFOOT'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'TH'</span><span class="jsdoc-syntax">,
+      </span><span class="jsdoc-string">'THEAD'</span><span class="jsdoc-syntax">,   </span><span class="jsdoc-string">'TR'</span><span class="jsdoc-syntax">,
 
-      </span><span class="jsdoc-string">'dir'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'menu'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'ol'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'ul'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'dl'</span><span class="jsdoc-syntax">,
+      </span><span class="jsdoc-string">'DIR'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'MENU'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'OL'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'UL'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'DL'</span><span class="jsdoc-syntax">,
 
-      </span><span class="jsdoc-string">'embed'</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-string">'object'
+      </span><span class="jsdoc-string">'EMBED'</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-string">'OBJECT'
 </span><span class="jsdoc-syntax">];
 
 
 </span><span class="jsdoc-var">Roo.HtmlEditorCore.black </span><span class="jsdoc-syntax">= [
     </span><span class="jsdoc-comment">//    'embed',  'object', // enable - backend responsiblity to clean thiese
-        </span><span class="jsdoc-string">'applet'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-comment">// 
-        </span><span class="jsdoc-string">'base'</span><span class="jsdoc-syntax">,   </span><span class="jsdoc-string">'basefont'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'bgsound'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'blink'</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-string">'body'</span><span class="jsdoc-syntax">,
-        </span><span class="jsdoc-string">'frame'</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-string">'frameset'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'head'</span><span class="jsdoc-syntax">,    </span><span class="jsdoc-string">'html'</span><span class="jsdoc-syntax">,   </span><span class="jsdoc-string">'ilayer'</span><span class="jsdoc-syntax">,
-        </span><span class="jsdoc-string">'iframe'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'layer'</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-string">'link'</span><span class="jsdoc-syntax">,     </span><span class="jsdoc-string">'meta'</span><span class="jsdoc-syntax">,    </span><span class="jsdoc-string">'object'</span><span class="jsdoc-syntax">,
-        </span><span class="jsdoc-string">'script'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'style' </span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">'title'</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-string">'xml' </span><span class="jsdoc-comment">// clean later..
+        </span><span class="jsdoc-string">'APPLET'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-comment">// 
+        </span><span class="jsdoc-string">'BASE'</span><span class="jsdoc-syntax">,   </span><span class="jsdoc-string">'BASEFONT'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'BGSOUND'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'BLINK'</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-string">'BODY'</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-string">'FRAME'</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-string">'FRAMESET'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'HEAD'</span><span class="jsdoc-syntax">,    </span><span class="jsdoc-string">'HTML'</span><span class="jsdoc-syntax">,   </span><span class="jsdoc-string">'ILAYER'</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-string">'IFRAME'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'LAYER'</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-string">'LINK'</span><span class="jsdoc-syntax">,     </span><span class="jsdoc-string">'META'</span><span class="jsdoc-syntax">,    </span><span class="jsdoc-string">'OBJECT'</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-string">'SCRIPT'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'STYLE' </span><span class="jsdoc-syntax">,</span><span class="jsdoc-string">'TITLE'</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-string">'XML'</span><span class="jsdoc-syntax">,
+        </span><span class="jsdoc-comment">//'FONT' // CLEAN LATER..
+        </span><span class="jsdoc-string">'COLGROUP'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'COL'   </span><span class="jsdoc-comment">// messy tables.
+
+
 </span><span class="jsdoc-syntax">];
-</span><span class="jsdoc-var">Roo.HtmlEditorCore.clean </span><span class="jsdoc-syntax">= [
-    </span><span class="jsdoc-string">'script'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'style'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'title'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'xml'
+</span><span class="jsdoc-var">Roo.HtmlEditorCore.clean </span><span class="jsdoc-syntax">= [ </span><span class="jsdoc-comment">// ?? needed???
+     </span><span class="jsdoc-string">'SCRIPT'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'STYLE'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'TITLE'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'XML'
 </span><span class="jsdoc-syntax">];
-</span><span class="jsdoc-var">Roo.HtmlEditorCore.remove </span><span class="jsdoc-syntax">= [
-    </span><span class="jsdoc-string">'font'
+</span><span class="jsdoc-var">Roo.HtmlEditorCore.tag_remove </span><span class="jsdoc-syntax">= [
+    </span><span class="jsdoc-string">'FONT'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'TBODY'
 </span><span class="jsdoc-syntax">];
 </span><span class="jsdoc-comment">// attributes..
 
 </span><span class="jsdoc-syntax">];
 
 
-</span><span class="jsdoc-var">Roo.HtmlEditorCore.swapCodes   </span><span class="jsdoc-syntax">=[
-    [    8211, </span><span class="jsdoc-string">&quot;&amp;#8211;&quot; </span><span class="jsdoc-syntax">],
-    [    8212, </span><span class="jsdoc-string">&quot;&amp;#8212;&quot; </span><span class="jsdoc-syntax">],
-    [    8216,  </span><span class="jsdoc-string">&quot;'&quot; </span><span class="jsdoc-syntax">],
-    [    8217, </span><span class="jsdoc-string">&quot;'&quot; </span><span class="jsdoc-syntax">],
-    [    8220, </span><span class="jsdoc-string">'&quot;' </span><span class="jsdoc-syntax">],
-    [    8221, </span><span class="jsdoc-string">'&quot;' </span><span class="jsdoc-syntax">],
-    [    8226, </span><span class="jsdoc-string">&quot;*&quot; </span><span class="jsdoc-syntax">],
-    [    8230, </span><span class="jsdoc-string">&quot;...&quot; </span><span class="jsdoc-syntax">]
-];
+
 
     </span></code></body></html>
\ No newline at end of file
index 96d5087..38cf67e 100644 (file)
@@ -11,6 +11,7 @@
 
 /**
  * @class Roo.MessageBox
+ * @static
  * Utility class for generating different styles of message boxes.  The alias Roo.Msg can also be used.
  * Example usage:
  *&lt;pre&gt;&lt;code&gt;
@@ -120,6 +121,7 @@ Roo.Msg.show({
                         }
                     }
                 });
+
                 </span><span class="jsdoc-var">dlg.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;hide&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">handleHide</span><span class="jsdoc-syntax">);
                 </span><span class="jsdoc-var">mask </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dlg.mask</span><span class="jsdoc-syntax">;
                 </span><span class="jsdoc-var">dlg.addKeyListener</span><span class="jsdoc-syntax">(27, </span><span class="jsdoc-var">handleEsc</span><span class="jsdoc-syntax">);
@@ -363,6 +365,7 @@ Roo.Msg.show({
                 </span><span class="jsdoc-var">d.animateTarget </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
                 </span><span class="jsdoc-var">d.show</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">options.animEl</span><span class="jsdoc-syntax">);
             }
+            </span><span class="jsdoc-var">dlg.toFront</span><span class="jsdoc-syntax">();
             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
         },
 
index 18e5c2c..b9a7354 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @class Roo.PagingToolbar
  * @extends Roo.Toolbar
- * @children   Roo.Toolbar.Item Roo.form.Field
+ * @children   Roo.Toolbar.Item Roo.Toolbar.Button Roo.Toolbar.SplitButton Roo.form.Field
  * A specialized toolbar that is bound to a {@link Roo.data.Store} and provides automatic paging controls.
  * @constructor
  * Create a new PagingToolbar
             </span><span class="jsdoc-var">this.loading.disable</span><span class="jsdoc-syntax">();
         }
     },
-
-    </span><span class="jsdoc-comment">// private
+    </span><span class="jsdoc-comment">/**
+     * event that occurs when you click on the navigation buttons - can be used to trigger load of a grid.
+     * @param {String} which (first|prev|next|last|refresh)  which button to press.
+     *
+     */
+    // private
     </span><span class="jsdoc-var">onClick </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">which</span><span class="jsdoc-syntax">){
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ds </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.ds</span><span class="jsdoc-syntax">;
         </span><span class="jsdoc-keyword">switch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">which</span><span class="jsdoc-syntax">){
index e6be5f1..5910f09 100644 (file)
@@ -11,7 +11,7 @@
 
 /**
  * @class Roo.Toolbar
- * @children   Roo.Toolbar.Item Roo.form.Field
+ * @children   Roo.Toolbar.Item Roo.Toolbar.Button Roo.Toolbar.SplitButton Roo.form.Field 
  * Basic Toolbar class.
  * @constructor
  * Creates a new Toolbar
 
     </span><span class="jsdoc-var">enable</span><span class="jsdoc-syntax">:</span><span class="jsdoc-var">Roo.emptyFn</span><span class="jsdoc-syntax">,
     </span><span class="jsdoc-var">disable</span><span class="jsdoc-syntax">:</span><span class="jsdoc-var">Roo.emptyFn</span><span class="jsdoc-syntax">,
-    </span><span class="jsdoc-var">focus</span><span class="jsdoc-syntax">:</span><span class="jsdoc-var">Roo.emptyFn
-</span><span class="jsdoc-syntax">});
+    </span><span class="jsdoc-var">focus</span><span class="jsdoc-syntax">:</span><span class="jsdoc-var">Roo.emptyFn</span><span class="jsdoc-syntax">,
+     </span><span class="jsdoc-comment">/**
+     * Shows this button
+     */
+    </span><span class="jsdoc-var">show</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+        </span><span class="jsdoc-var">this.hidden </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">this.el.style.display </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">;
+    },
+
+    </span><span class="jsdoc-comment">/**
+     * Hides this button
+     */
+    </span><span class="jsdoc-var">hide</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
+        </span><span class="jsdoc-var">this.hidden </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">this.el.style.display </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;none&quot;</span><span class="jsdoc-syntax">;
+    }
+
+});
 
 </span><span class="jsdoc-comment">/**
  * @class Roo.Toolbar.Button
index 462fc0c..b4b3846 100644 (file)
         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.IsLongEnough</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">, 6) || !</span><span class="jsdoc-var">this.IsLongEnough</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pwd</span><span class="jsdoc-syntax">, 0);
     }
 
-})</span></code></body></html>
\ No newline at end of file
+});</span></code></body></html>
\ No newline at end of file
index 1a6c657..cb914e5 100644 (file)
      * &lt;p&gt;
      * @param {Object} options An object containing properties which control loading options:&lt;ul&gt;
      * &lt;li&gt;params {Object} An object containing properties to pass as HTTP parameters to a remote data source.&lt;/li&gt;
+     * &lt;li&gt;params.data {Object} if you are using a MemoryProxy / JsonReader, use this as the data to load stuff..
+     * &lt;pre&gt;
+                {
+                    data : data,  // array of key=&gt;value data like JsonReader
+                    total : data.length,
+                    success : true
+                    
+                }
+        &lt;/pre&gt;
+            }.&lt;/li&gt;
      * &lt;li&gt;callback {Function} A function to be called after the Records have been loaded. The callback is
      * passed the following arguments:&lt;ul&gt;
      * &lt;li&gt;r : Roo.data.Record[]&lt;/li&gt;
index a79bdfd..1210410 100644 (file)
@@ -549,12 +549,13 @@ clientValidation  Boolean          Applies to submit only.  Pass true to call fo
      * @param {Boolean} asString
      * @return {Object}
      */
-    </span><span class="jsdoc-var">getValues </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">asString</span><span class="jsdoc-syntax">){
+    </span><span class="jsdoc-var">getValues </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">asString</span><span class="jsdoc-syntax">)
+    {
         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.childForms</span><span class="jsdoc-syntax">) {
             </span><span class="jsdoc-comment">// copy values from the child forms
             </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.childForms</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">this.setValues</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f.getValues</span><span class="jsdoc-syntax">());
-            }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-var">this.setValues</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f.getFieldValues</span><span class="jsdoc-syntax">()); </span><span class="jsdoc-comment">// get the full set of data, as we might be copying comboboxes from external into this one.
+            </span><span class="jsdoc-syntax">}, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
         }
 
         </span><span class="jsdoc-comment">// use formdata
@@ -586,21 +587,31 @@ clientValidation  Boolean          Applies to submit only.  Pass true to call fo
     </span><span class="jsdoc-comment">/**
      * Returns the fields in this form as an object with key/value pairs. 
      * This differs from getValues as it calls getValue on each child item, rather than using dom data.
+     * Normally this will not return readOnly data 
+     * @param {Boolean} with_readonly return readonly field data.
      * @return {Object}
      */
-    </span><span class="jsdoc-var">getFieldValues </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">with_hidden</span><span class="jsdoc-syntax">)
+    </span><span class="jsdoc-var">getFieldValues </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">with_readonly</span><span class="jsdoc-syntax">)
     {
         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.childForms</span><span class="jsdoc-syntax">) {
             </span><span class="jsdoc-comment">// copy values from the child forms
             // should this call getFieldValues - probably not as we do not currently copy
             // hidden fields when we generate..
             </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.childForms</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">this.setValues</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f.getValues</span><span class="jsdoc-syntax">());
+                </span><span class="jsdoc-var">this.setValues</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f.getFieldValues</span><span class="jsdoc-syntax">());
             }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
         }
 
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ret </span><span class="jsdoc-syntax">= {};
         </span><span class="jsdoc-var">this.items.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">){
+
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f.readOnly </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">with_readonly </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// skip read only values. - this is in theory to stop 'old' values being copied over new ones
+                        // if a subform contains a copy of them.
+                        // if you have subforms with the same editable data, you will need to copy the data back
+                        // and forth.
+            </span><span class="jsdoc-syntax">}
+
             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">f.getName</span><span class="jsdoc-syntax">()) {
                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
             }
index 21968c6..7fe3e90 100644 (file)
      * The tooltip text to display when the date falls on a disabled date (defaults to 'Disabled')
      */
     </span><span class="jsdoc-var">disabledDatesText </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Disabled&quot;</span><span class="jsdoc-syntax">,
+
+
+       </span><span class="jsdoc-comment">/**
+     * @cfg {Date/String} zeroValue
+     * if the date is less that this number, then the field is rendered as empty
+     * default is 1800
+     */
+       </span><span class="jsdoc-var">zeroValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'1800-01-01'</span><span class="jsdoc-syntax">,
+
+
     </span><span class="jsdoc-comment">/**
      * @cfg {Date/String} minValue
      * The minimum allowed date. Can be either a Javascript date object or a string date in a
@@ -273,6 +283,15 @@ dateField.setValue('2006-5-4');
 
     </span><span class="jsdoc-comment">// private
     </span><span class="jsdoc-var">parseDate </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
+
+               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">) {
+                       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">Date.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.zeroValue</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'Y-m-d'</span><span class="jsdoc-syntax">) ) {
+                               </span><span class="jsdoc-keyword">return  </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
+                       }
+                       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">;
+               }
+
+
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">value </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Date</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">;
         }
@@ -288,6 +307,9 @@ dateField.setValue('2006-5-4');
                 </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Date.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.altFormatsArray</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
             }
         }
+               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">Date.parseDate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.zeroValue</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'Y-m-d'</span><span class="jsdoc-syntax">) ) {
+                       </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
+               }
         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">;
     },
 
index 8d6ff55..98dc47c 100644 (file)
@@ -59,7 +59,7 @@
     </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 500,
 
     </span><span class="jsdoc-comment">/**
-     * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets.
+     * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets - this is usally a good idea  rootURL + '/roojs1/css/undoreset.css',   .
      * 
      */
     </span><span class="jsdoc-var">stylesheets</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
      * @cfg {boolean} allowComments - default false - allow comments in HTML source - by default they are stripped - if you are editing email you may need this.
      */
     </span><span class="jsdoc-var">allowComments</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+    </span><span class="jsdoc-comment">/**
+     * @cfg {boolean} enableBlocks - default true - if the block editor (table and figure should be enabled)
+     */
+    </span><span class="jsdoc-var">enableBlocks </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+
+    </span><span class="jsdoc-comment">/**
+     * @cfg {boolean} autoClean - default true - loading and saving will remove quite a bit of formating,
+     *         if you are doing an email editor, this probably needs disabling, it's designed
+     */
+    </span><span class="jsdoc-var">autoClean</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+    </span><span class="jsdoc-comment">/**
+     * @cfg {string} bodyCls default '' default classes to add to body of editable area - usually undoreset is a good start..
+     */
+    </span><span class="jsdoc-var">bodyCls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
+    </span><span class="jsdoc-comment">/**
+     * @cfg {String} language default en - language of text (usefull for rtl languages)
+     * 
+     */
+    </span><span class="jsdoc-var">language</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'en'</span><span class="jsdoc-syntax">,
+
 
     </span><span class="jsdoc-comment">// id of frame..
     </span><span class="jsdoc-var">frameId</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
             * Fires when press the Sytlesheets button
             * @param {Roo.HtmlEditorCore} this
             */
-            </span><span class="jsdoc-var">stylesheetsclick</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
+            </span><span class="jsdoc-var">stylesheetsclick</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-comment">/**
+            * @event paste
+            * Fires when press user pastes into the editor
+            * @param {Roo.HtmlEditorCore} this
+            */
+            </span><span class="jsdoc-var">paste</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
         </span><span class="jsdoc-syntax">});
         </span><span class="jsdoc-var">this.defaultAutoCreate </span><span class="jsdoc-syntax">=  {
             </span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;textarea&quot;</span><span class="jsdoc-syntax">,
 
 
     },
+    </span><span class="jsdoc-comment">/**
+     * get the Context selected node
+     * @returns {DomElement|boolean} selected node if active or false if none
+     * 
+     */
+    </span><span class="jsdoc-var">getSelectedNode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
+    {
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.toolbars.length </span><span class="jsdoc-syntax">&lt; 2 || !</span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">[1]</span><span class="jsdoc-var">.tb</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+        }
+        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">[1]</span><span class="jsdoc-var">.tb.selectedNode</span><span class="jsdoc-syntax">;
 
-
+    },
     </span><span class="jsdoc-comment">// private
     </span><span class="jsdoc-var">onRender </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ct</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">position</span><span class="jsdoc-syntax">)
     {
             </span><span class="jsdoc-var">this.el.removeClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'x-hidden'</span><span class="jsdoc-syntax">);
             </span><span class="jsdoc-var">this.el.dom.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'tabIndex'</span><span class="jsdoc-syntax">);
             </span><span class="jsdoc-var">this.el.focus</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-var">this.el.dom.scrollTop </span><span class="jsdoc-syntax">= 0;
+
 
             </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.toolbars.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Roo.form.HtmlEditor.ToolbarContext</span><span class="jsdoc-syntax">){
         </span><span class="jsdoc-var">this.editorcore.pushValue</span><span class="jsdoc-syntax">();
     },
 
+    </span><span class="jsdoc-comment">/**
+     * update the language in the body - really done by core
+     * @param {String} language - eg. en / ar / zh-CN etc..
+     */
+    </span><span class="jsdoc-var">updateLanguage </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">lang</span><span class="jsdoc-syntax">)
+    {
+        </span><span class="jsdoc-var">this.language </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">lang</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">this.editorcore.language </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">lang</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">this.editorcore.updateLanguage</span><span class="jsdoc-syntax">();
 
+    },
     </span><span class="jsdoc-comment">// private
     </span><span class="jsdoc-var">deferFocus </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
         </span><span class="jsdoc-var">this.focus.defer</span><span class="jsdoc-syntax">(10, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
index 5a474b5..f12c515 100644 (file)
 
 
 </span><span class="jsdoc-var">Roo.form.HtmlEditor.ToolbarContext.types </span><span class="jsdoc-syntax">= {
-    </span><span class="jsdoc-string">'IMG' </span><span class="jsdoc-syntax">: {
-        </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">: {
+    </span><span class="jsdoc-string">'IMG' </span><span class="jsdoc-syntax">: [
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'width'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Width&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 40
         },
-        </span><span class="jsdoc-var">height</span><span class="jsdoc-syntax">:  {
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'height'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Height&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 40
         },
-        </span><span class="jsdoc-var">align</span><span class="jsdoc-syntax">: {
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'align'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Align&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">opts </span><span class="jsdoc-syntax">: [ [</span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;left&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;right&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;center&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;top&quot;</span><span class="jsdoc-syntax">]],
             </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">: 80
 
         },
-        </span><span class="jsdoc-var">border</span><span class="jsdoc-syntax">: {
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'border'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Border&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 40
         },
-        </span><span class="jsdoc-var">alt</span><span class="jsdoc-syntax">: {
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'alt'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Alt&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 120
         },
-        </span><span class="jsdoc-var">src </span><span class="jsdoc-syntax">: {
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'src'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Src&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 220
         }
 
-    },
-    </span><span class="jsdoc-string">'A' </span><span class="jsdoc-syntax">: {
-        </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: {
+    ],
+
+    </span><span class="jsdoc-string">'FIGURE' </span><span class="jsdoc-syntax">: [
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'align'</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Align&quot;</span><span class="jsdoc-syntax">,
+            </span><span class="jsdoc-var">opts </span><span class="jsdoc-syntax">: [ [</span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;left&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;right&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;center&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;top&quot;</span><span class="jsdoc-syntax">]],
+            </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">: 80
+        }
+    ],
+    </span><span class="jsdoc-string">'A' </span><span class="jsdoc-syntax">: [
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'name'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Name&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 50
         },
-        </span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">:  {
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'target'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Target&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 120
         },
-        </span><span class="jsdoc-var">href</span><span class="jsdoc-syntax">:  {
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'href'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Href&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 220
         } </span><span class="jsdoc-comment">// border?
 
-    </span><span class="jsdoc-syntax">},
-    </span><span class="jsdoc-string">'TABLE' </span><span class="jsdoc-syntax">: {
-        </span><span class="jsdoc-var">rows </span><span class="jsdoc-syntax">: {
-            </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Rows&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 20
-        },
-        </span><span class="jsdoc-var">cols </span><span class="jsdoc-syntax">: {
-            </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Cols&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 20
-        },
-        </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">: {
-            </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Width&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 40
-        },
-        </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">: {
-            </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Height&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 40
-        },
-        </span><span class="jsdoc-var">border </span><span class="jsdoc-syntax">: {
-            </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Border&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 20
-        }
-    },
-    </span><span class="jsdoc-string">'TD' </span><span class="jsdoc-syntax">: {
-        </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">: {
-            </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Width&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 40
-        },
-        </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">: {
-            </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Height&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 40
-        },
-        </span><span class="jsdoc-var">align</span><span class="jsdoc-syntax">: {
-            </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Align&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">opts </span><span class="jsdoc-syntax">: [[</span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;left&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;center&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;right&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;justify&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;char&quot;</span><span class="jsdoc-syntax">]],
-            </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 80
-        },
-        </span><span class="jsdoc-var">valign</span><span class="jsdoc-syntax">: {
-            </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Valign&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">opts </span><span class="jsdoc-syntax">: [[</span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;top&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;middle&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;bottom&quot;</span><span class="jsdoc-syntax">],[ </span><span class="jsdoc-string">&quot;baseline&quot;</span><span class="jsdoc-syntax">]],
-            </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 80
-        },
-        </span><span class="jsdoc-var">colspan</span><span class="jsdoc-syntax">: {
-            </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Colspan&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 20
+    </span><span class="jsdoc-syntax">],
 
-        },
-         </span><span class="jsdoc-string">'font-family'  </span><span class="jsdoc-syntax">: {
-            </span><span class="jsdoc-var">title </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Font&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">style </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'fontFamily'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">displayField</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'display'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">optname </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'font-family'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 140
-        }
-    },
-    </span><span class="jsdoc-string">'INPUT' </span><span class="jsdoc-syntax">: {
-        </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: {
+    </span><span class="jsdoc-string">'INPUT' </span><span class="jsdoc-syntax">: [
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'name'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;name&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 120
         },
-        </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">: {
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'value'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Value&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 120
         },
-        </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">: {
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'width'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Width&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 40
         }
-    },
-    </span><span class="jsdoc-string">'LABEL' </span><span class="jsdoc-syntax">: {
-        </span><span class="jsdoc-string">'for' </span><span class="jsdoc-syntax">: {
+    ],
+    </span><span class="jsdoc-string">'LABEL' </span><span class="jsdoc-syntax">: [
+         {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'for'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;For&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 120
         }
-    },
-    </span><span class="jsdoc-string">'TEXTAREA' </span><span class="jsdoc-syntax">: {
-          </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: {
+    ],
+    </span><span class="jsdoc-string">'TEXTAREA' </span><span class="jsdoc-syntax">: [
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'name'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;name&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 120
         },
-        </span><span class="jsdoc-var">rows </span><span class="jsdoc-syntax">: {
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'rows'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Rows&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 20
         },
-        </span><span class="jsdoc-var">cols </span><span class="jsdoc-syntax">: {
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'cols'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Cols&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 20
         }
-    },
-    </span><span class="jsdoc-string">'SELECT' </span><span class="jsdoc-syntax">: {
-        </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: {
+    ],
+    </span><span class="jsdoc-string">'SELECT' </span><span class="jsdoc-syntax">: [
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'name'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;name&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 120
         },
-        </span><span class="jsdoc-var">selectoptions </span><span class="jsdoc-syntax">: {
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'selectoptions'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Options&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 200
         }
-    },
+    ],
 
     </span><span class="jsdoc-comment">// should we really allow this??
     // should this just be 
-    </span><span class="jsdoc-string">'BODY' </span><span class="jsdoc-syntax">: {
-        </span><span class="jsdoc-var">title </span><span class="jsdoc-syntax">: {
+    </span><span class="jsdoc-string">'BODY' </span><span class="jsdoc-syntax">: [
+
+        {
+            </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'title'</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Title&quot;</span><span class="jsdoc-syntax">,
             </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 200,
             </span><span class="jsdoc-var">disabled </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
         </span><span class="jsdoc-syntax">}
-    },
-    </span><span class="jsdoc-string">'SPAN' </span><span class="jsdoc-syntax">: {
-        </span><span class="jsdoc-string">'font-family'  </span><span class="jsdoc-syntax">: {
-            </span><span class="jsdoc-var">title </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Font&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">style </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'fontFamily'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">displayField</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'display'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">optname </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'font-family'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 140
-        }
-    },
-    </span><span class="jsdoc-string">'DIV' </span><span class="jsdoc-syntax">: {
-        </span><span class="jsdoc-string">'font-family'  </span><span class="jsdoc-syntax">: {
-            </span><span class="jsdoc-var">title </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Font&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">style </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'fontFamily'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">displayField</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'display'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">optname </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'font-family'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 140
-        }
-    },
-     </span><span class="jsdoc-string">'P' </span><span class="jsdoc-syntax">: {
-        </span><span class="jsdoc-string">'font-family'  </span><span class="jsdoc-syntax">: {
-            </span><span class="jsdoc-var">title </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Font&quot;</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">style </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'fontFamily'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">displayField</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'display'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">optname </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'font-family'</span><span class="jsdoc-syntax">,
-            </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 140
-        }
-    },
+    ],
 
-    </span><span class="jsdoc-string">'*' </span><span class="jsdoc-syntax">: {
-        </span><span class="jsdoc-comment">// empty..
-    </span><span class="jsdoc-syntax">}
+    </span><span class="jsdoc-string">'*' </span><span class="jsdoc-syntax">: [
+        </span><span class="jsdoc-comment">// empty.
+    </span><span class="jsdoc-syntax">]
 
 };
 
         // disable everything...
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ty</span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.form.HtmlEditor.ToolbarContext.types</span><span class="jsdoc-syntax">;
         </span><span class="jsdoc-var">this.toolbars </span><span class="jsdoc-syntax">= {};
-
+        </span><span class="jsdoc-comment">// block toolbars are built in updateToolbar when needed.
         </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-keyword">in  </span><span class="jsdoc-var">ty</span><span class="jsdoc-syntax">) {
 
             </span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">this.buildToolbar</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ty</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">],</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">);
      *
      * Note you can force an update by calling on('editorevent', scope, false)
      */
-    </span><span class="jsdoc-var">updateToolbar</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">editor</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">){
+    </span><span class="jsdoc-var">updateToolbar</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">editor </span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">)
+    {
+
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-var">ev.stopEvent</span><span class="jsdoc-syntax">(); </span><span class="jsdoc-comment">// se if we can stop this looping with mutiple events.
+        </span><span class="jsdoc-syntax">}
 
         </span><span class="jsdoc-comment">//Roo.log(ev);
         // capture mouse up - this is handy for selecting images..
              </span><span class="jsdoc-var">this.editor.onFirstFocus</span><span class="jsdoc-syntax">();
             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
         }
+        </span><span class="jsdoc-comment">//Roo.log(ev ? ev.target : 'NOTARGET');
 
 
-
-        </span><span class="jsdoc-comment">// http://developer.yahoo.com/yui/docs/simple-editor.js.html
+        // http://developer.yahoo.com/yui/docs/simple-editor.js.html
         // selectNode - might want to handle IE?
+
+
+
         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ev </span><span class="jsdoc-syntax">&amp;&amp;
             (</span><span class="jsdoc-var">ev.type </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'mouseup' </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">ev.type </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'click' </span><span class="jsdoc-syntax">) &amp;&amp;
-            </span><span class="jsdoc-var">ev.target </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">ev.target.tagName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'IMG'</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-comment">// they have click on an image...
+            </span><span class="jsdoc-var">ev.target </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">ev.target.tagName </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'BODY' </span><span class="jsdoc-syntax">) { </span><span class="jsdoc-comment">// &amp;&amp; ev.target.tagName == 'IMG') {
+            // they have click on an image...
             // let's see if we can change the selection...
             </span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ev.target</span><span class="jsdoc-syntax">;
 
-              </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">nodeRange </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sel.ownerDocument.createRange</span><span class="jsdoc-syntax">();
-            </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
-                </span><span class="jsdoc-var">nodeRange.selectNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">);
-            } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">nodeRange.selectNodeContents</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">);
-            }
-            </span><span class="jsdoc-comment">//nodeRange.collapse(true);
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">s </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.editorcore.win.getSelection</span><span class="jsdoc-syntax">();
-            </span><span class="jsdoc-var">s.removeAllRanges</span><span class="jsdoc-syntax">();
-            </span><span class="jsdoc-var">s.addRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nodeRange</span><span class="jsdoc-syntax">);
-        }
+            </span><span class="jsdoc-comment">// this triggers looping?
+            //this.editorcore.selectNode(sel);
 
+        </span><span class="jsdoc-syntax">}
+
+        </span><span class="jsdoc-comment">// this forces an id..
+        </span><span class="jsdoc-var">Array.from</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.editorcore.doc.body.querySelectorAll</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.roo-ed-selection'</span><span class="jsdoc-syntax">))</span><span class="jsdoc-var">.forEach</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
+             </span><span class="jsdoc-var">e.classList.remove</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'roo-ed-selection'</span><span class="jsdoc-syntax">);
+        });
+        </span><span class="jsdoc-comment">//Roo.select('.roo-ed-selection', false, this.editorcore.doc).removeClass('roo-ed-selection');
+        //Roo.get(node).addClass('roo-ed-selection');
 
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">updateFooter </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">? </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
+        //var updateFooter = sel ? false : true; 
 
 
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ans </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.editorcore.getAllAncestors</span><span class="jsdoc-syntax">();
 
         </span><span class="jsdoc-comment">// pick
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ty</span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.form.HtmlEditor.ToolbarContext.types</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ty </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.form.HtmlEditor.ToolbarContext.types</span><span class="jsdoc-syntax">;
 
         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">) {
             </span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ans.length </span><span class="jsdoc-syntax">? (</span><span class="jsdoc-var">ans</span><span class="jsdoc-syntax">[0] ?  </span><span class="jsdoc-var">ans</span><span class="jsdoc-syntax">[0]  : </span><span class="jsdoc-var">ans</span><span class="jsdoc-syntax">[1]) : </span><span class="jsdoc-var">this.editorcore.doc.body</span><span class="jsdoc-syntax">;
             </span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sel.tagName.length </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.editorcore.doc.body</span><span class="jsdoc-syntax">;
 
         }
-        </span><span class="jsdoc-comment">// pick a menu that exists..
+
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sel.tagName.toUpperCase</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-comment">//sel = typeof(ty[tn]) != 'undefined' ? sel : this.editor.doc.body;
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">lastSel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.tb.selectedNode</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">this.tb.selectedNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">left_label </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">;
 
-        </span><span class="jsdoc-var">tn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sel.tagName.toUpperCase</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-comment">// ok see if we are editing a block?
 
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">lastSel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.tb.selectedNode</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">db </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-comment">// you are not actually selecting the block.
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">sel.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'data-block'</span><span class="jsdoc-syntax">)) {
+            </span><span class="jsdoc-var">db </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">;
+        } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">sel.closest</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'[data-block]'</span><span class="jsdoc-syntax">)) {
 
-        </span><span class="jsdoc-var">this.tb.selectedNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-var">db </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sel.closest</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'[data-block]'</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-comment">//var cepar = sel.closest('[contenteditable=true]');
+            //if (db &amp;&amp; cepar &amp;&amp; cepar.tagName != 'BODY') {
+            //   db = false; // we are inside an editable block.. = not sure how we are going to handle nested blocks!?
+            //}   
+        </span><span class="jsdoc-syntax">}
 
-        </span><span class="jsdoc-comment">// if current menu does not match..
 
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">this.tb.name </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">) || (</span><span class="jsdoc-var">lastSel </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">this.tb.selectedNode</span><span class="jsdoc-syntax">) || </span><span class="jsdoc-var">ev </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">) {
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">block </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-comment">//if (db &amp;&amp; !sel.hasAttribute('contenteditable') &amp;&amp; sel.getAttribute('contenteditable') != 'true' ) {
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">db </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.editorcore.enableBlocks</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-var">block </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.htmleditor.Block.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">db</span><span class="jsdoc-syntax">);
 
-            </span><span class="jsdoc-var">this.tb.el.hide</span><span class="jsdoc-syntax">();
-            </span><span class="jsdoc-comment">///console.log(&quot;show: &quot; + tn);
-            </span><span class="jsdoc-var">this.tb </span><span class="jsdoc-syntax">=  </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ty</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">]) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">] : </span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'*'</span><span class="jsdoc-syntax">];
-            </span><span class="jsdoc-var">this.tb.el.show</span><span class="jsdoc-syntax">();
-            </span><span class="jsdoc-comment">// update name
-            </span><span class="jsdoc-var">this.tb.items.first</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.el.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tn </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">':&amp;nbsp;'</span><span class="jsdoc-syntax">;
 
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">block</span><span class="jsdoc-syntax">) {
+                 </span><span class="jsdoc-var">db.className </span><span class="jsdoc-syntax">= (
+                        </span><span class="jsdoc-var">db.classList.length </span><span class="jsdoc-syntax">&gt; 0  ? </span><span class="jsdoc-var">db.className </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">' ' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''
+                    </span><span class="jsdoc-syntax">)  + </span><span class="jsdoc-string">'roo-ed-selection'</span><span class="jsdoc-syntax">;
 
-            </span><span class="jsdoc-comment">// update attributes
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.tb.fields</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">this.tb.fields.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
-                    </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.stylename</span><span class="jsdoc-syntax">) {
-                        </span><span class="jsdoc-var">e.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel.style</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">e.stylename</span><span class="jsdoc-syntax">]);
-                        </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
-                    }
-                   </span><span class="jsdoc-var">e.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.attrname</span><span class="jsdoc-syntax">));
-                });
-            }
+                 </span><span class="jsdoc-comment">// since we removed it earlier... its not there..
+                </span><span class="jsdoc-var">tn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'BLOCK.' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">db.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'data-block'</span><span class="jsdoc-syntax">);
 
-            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">hasStyles </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">this.styles</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">hasStyles </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
-                </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+                </span><span class="jsdoc-comment">//this.editorcore.selectNode(db);
+                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">]) == </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) {
+                   </span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">this.buildToolbar</span><span class="jsdoc-syntax">( </span><span class="jsdoc-keyword">false  </span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">tn </span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">block.friendly_name</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">block</span><span class="jsdoc-syntax">);
+                }
+                </span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.selectedNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">db</span><span class="jsdoc-syntax">;
+                </span><span class="jsdoc-var">left_label </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">block.friendly_name</span><span class="jsdoc-syntax">;
+                </span><span class="jsdoc-var">ans </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.editorcore.getAllAncestors</span><span class="jsdoc-syntax">();
             }
 
-            </span><span class="jsdoc-comment">// update styles
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">hasStyles</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">st </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.tb.fields.item</span><span class="jsdoc-syntax">(0);
 
-                </span><span class="jsdoc-var">st.store.removeAll</span><span class="jsdoc-syntax">();
+
+        }
 
 
-                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sel.className.split</span><span class="jsdoc-syntax">(/\s+/);
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.tb.name </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">tn </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">lastSel </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">this.tb.selectedNode </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">ev </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// no change?
+        </span><span class="jsdoc-syntax">}
 
-                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">avs </span><span class="jsdoc-syntax">= [];
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.styles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'*'</span><span class="jsdoc-syntax">]) {
 
-                    </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.styles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'*'</span><span class="jsdoc-syntax">], </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) {
-                        </span><span class="jsdoc-var">avs.push</span><span class="jsdoc-syntax">( [ </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cn.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) &gt; -1 ? 1 : 0 ] );
-                    });
-                }
-                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.styles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">]) {
-                    </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.styles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">], </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) {
-                        </span><span class="jsdoc-var">avs.push</span><span class="jsdoc-syntax">( [ </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cn.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) &gt; -1 ? 1 : 0 ] );
-                    });
-                }
 
-                </span><span class="jsdoc-var">st.store.loadData</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">avs</span><span class="jsdoc-syntax">);
-                </span><span class="jsdoc-var">st.collapse</span><span class="jsdoc-syntax">();
-                </span><span class="jsdoc-var">st.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cn</span><span class="jsdoc-syntax">);
-            }
-            </span><span class="jsdoc-comment">// flag our selected Node.
-            </span><span class="jsdoc-var">this.tb.selectedNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">this.tb.el.hide</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-comment">///console.log(&quot;show: &quot; + tn);
+        </span><span class="jsdoc-var">this.tb </span><span class="jsdoc-syntax">=  </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">]) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">] : </span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'*'</span><span class="jsdoc-syntax">];
 
+        </span><span class="jsdoc-var">this.tb.el.show</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-comment">// update name
+        </span><span class="jsdoc-var">this.tb.items.first</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.el.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">left_label </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">':&amp;nbsp;'</span><span class="jsdoc-syntax">;
 
-            </span><span class="jsdoc-var">Roo.menu.MenuMgr.hideAll</span><span class="jsdoc-syntax">();
 
-        }
+        </span><span class="jsdoc-comment">// update attributes
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">block </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.tb.fields</span><span class="jsdoc-syntax">) {
 
-        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">updateFooter</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-comment">//this.footDisp.dom.innerHTML = ''; 
-            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-var">this.tb.fields.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-var">e.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">block</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">e.name</span><span class="jsdoc-syntax">]);
+            });
+
+
+        } </span><span class="jsdoc-keyword">else  if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.tb.fields </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.tb.selectedNode</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-var">this.tb.fields.each</span><span class="jsdoc-syntax">( </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.stylename</span><span class="jsdoc-syntax">) {
+                    </span><span class="jsdoc-var">e.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.tb.selectedNode.style</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">e.stylename</span><span class="jsdoc-syntax">]);
+                    </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+                }
+                </span><span class="jsdoc-var">e.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.tb.selectedNode.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.attrname</span><span class="jsdoc-syntax">));
+            }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-var">this.updateToolbarStyles</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.tb.selectedNode</span><span class="jsdoc-syntax">);
         }
+
+
+
+        </span><span class="jsdoc-var">Roo.menu.MenuMgr.hideAll</span><span class="jsdoc-syntax">();
+
+
+
+
         </span><span class="jsdoc-comment">// update the footer
         //
+        </span><span class="jsdoc-var">this.updateFooter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ans</span><span class="jsdoc-syntax">);
+
+    },
+
+    </span><span class="jsdoc-var">updateToolbarStyles </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">)
+    {
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">hasStyles </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">this.styles</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-var">hasStyles </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+        }
+
+        </span><span class="jsdoc-comment">// update styles
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">hasStyles </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.tb.hasStyles</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">st </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.tb.fields.item</span><span class="jsdoc-syntax">(0);
+
+            </span><span class="jsdoc-var">st.store.removeAll</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sel.className.split</span><span class="jsdoc-syntax">(/\s+/);
+
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">avs </span><span class="jsdoc-syntax">= [];
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.styles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'*'</span><span class="jsdoc-syntax">]) {
+
+                </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.styles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'*'</span><span class="jsdoc-syntax">], </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) {
+                    </span><span class="jsdoc-var">avs.push</span><span class="jsdoc-syntax">( [ </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cn.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) &gt; -1 ? 1 : 0 ] );
+                });
+            }
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.styles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">]) {
+                </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.styles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tn</span><span class="jsdoc-syntax">], </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) {
+                    </span><span class="jsdoc-var">avs.push</span><span class="jsdoc-syntax">( [ </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cn.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) &gt; -1 ? 1 : 0 ] );
+                });
+            }
+
+            </span><span class="jsdoc-var">st.store.loadData</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">avs</span><span class="jsdoc-syntax">);
+            </span><span class="jsdoc-var">st.collapse</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-var">st.setValue</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cn</span><span class="jsdoc-syntax">);
+        }
+    },
+
+
+    </span><span class="jsdoc-var">updateFooter </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ans</span><span class="jsdoc-syntax">)
+    {
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ans </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-var">this.footDisp.dom.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
+            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        }
 
         </span><span class="jsdoc-var">this.footerEls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ans.reverse</span><span class="jsdoc-syntax">();
         </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.footerEls</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) {
 
         </span><span class="jsdoc-var">this.footDisp.dom.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">;
 
-        </span><span class="jsdoc-comment">//this.editorsyncValue();
-    </span><span class="jsdoc-syntax">},
-
 
+    },
 
 
     </span><span class="jsdoc-comment">// private
            </span><span class="jsdoc-var">item.enable</span><span class="jsdoc-syntax">();
         });
     },
-    </span><span class="jsdoc-var">buildToolbar</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nm</span><span class="jsdoc-syntax">)
+    </span><span class="jsdoc-var">buildToolbar</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nm</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">friendly_name</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">block</span><span class="jsdoc-syntax">)
     {
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">editor </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.editor</span><span class="jsdoc-syntax">;
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">editorcore </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.editorcore</span><span class="jsdoc-syntax">;
 
 
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tb </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.Toolbar</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">wdiv</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-comment">// add the name..
+        </span><span class="jsdoc-comment">///this.tb = tb; // &lt;&lt; this sets the active toolbar..
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tlist </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">block</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-var">tlist </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">block.contextMenu</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+        }
 
-        </span><span class="jsdoc-var">tb.add</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nm</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;:&amp;nbsp;&quot;</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-var">tb.hasStyles </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-var">tb.name </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">nm</span><span class="jsdoc-syntax">;
+
+        </span><span class="jsdoc-var">tb.add</span><span class="jsdoc-syntax">((</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">friendly_name</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">nm </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">friendly_name</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-string">&quot;:&amp;nbsp;&quot;</span><span class="jsdoc-syntax">);
+
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">styles </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Array.from</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.styles</span><span class="jsdoc-syntax">);
 
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">styles </span><span class="jsdoc-syntax">= [];
-        </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">this.styles</span><span class="jsdoc-syntax">) {
-            </span><span class="jsdoc-var">styles.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">);
-        }
 
         </span><span class="jsdoc-comment">// styles...
         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">styles </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">styles.length</span><span class="jsdoc-syntax">) {
-
+            </span><span class="jsdoc-var">tb.hasStyles </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
             </span><span class="jsdoc-comment">// this needs a multi-select checkbox...
             </span><span class="jsdoc-var">tb.addField</span><span class="jsdoc-syntax">( </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.form.ComboBox</span><span class="jsdoc-syntax">({
                 </span><span class="jsdoc-var">store</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.data.SimpleStore</span><span class="jsdoc-syntax">({
         }
 
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tbc </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.form.HtmlEditor.ToolbarContext</span><span class="jsdoc-syntax">;
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tbops </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tbc.options</span><span class="jsdoc-syntax">;
 
-        </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">) {
+
+        </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">tlist.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
+
+            </span><span class="jsdoc-comment">// newer versions will use xtype cfg to create menus.
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.xtype</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) {
+
+                </span><span class="jsdoc-var">tb</span><span class="jsdoc-syntax">[</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">)== </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'add' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'addField'</span><span class="jsdoc-syntax">](</span><span class="jsdoc-var">Roo.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]));
+
+
+                </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
+            }
 
             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">item </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
             </span><span class="jsdoc-var">tb.add</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item.title </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;:&amp;nbsp;&quot;</span><span class="jsdoc-syntax">);
 
             </span><span class="jsdoc-comment">//optname == used so you can configure the options available..
             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">opts </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">item.opts </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">item.opts </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
-            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item.optname</span><span class="jsdoc-syntax">) {
-                </span><span class="jsdoc-var">opts </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tbops</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">item.optname</span><span class="jsdoc-syntax">];
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item.optname</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-comment">// use the b
+                </span><span class="jsdoc-var">opts </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.form.HtmlEditor.ToolbarContext.options</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">item.optname</span><span class="jsdoc-syntax">];
 
             }
 
                         </span><span class="jsdoc-var">fields</span><span class="jsdoc-syntax">: [</span><span class="jsdoc-string">'val'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'display'</span><span class="jsdoc-syntax">],
                         </span><span class="jsdoc-var">data </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">opts
                     </span><span class="jsdoc-syntax">}),
-                    </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'-roo-edit-' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">,
-                    </span><span class="jsdoc-var">attrname </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">,
+                    </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'-roo-edit-' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">,
+
+                    </span><span class="jsdoc-var">attrname </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">,
                     </span><span class="jsdoc-var">stylename </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">item.style </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">item.style </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+
                     </span><span class="jsdoc-var">displayField</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">item.displayField </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">item.displayField </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'val'</span><span class="jsdoc-syntax">,
                     </span><span class="jsdoc-var">valueField </span><span class="jsdoc-syntax">:  </span><span class="jsdoc-string">'val'</span><span class="jsdoc-syntax">,
                     </span><span class="jsdoc-var">typeAhead</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
-                    </span><span class="jsdoc-var">mode</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tbc.stores</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]) != </span><span class="jsdoc-string">'undefined'  </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'remote' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'local'</span><span class="jsdoc-syntax">,
+                    </span><span class="jsdoc-var">mode</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tbc.stores</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">]) != </span><span class="jsdoc-string">'undefined'  </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'remote' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'local'</span><span class="jsdoc-syntax">,
                     </span><span class="jsdoc-var">editable </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
                     </span><span class="jsdoc-var">triggerAction</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'all'</span><span class="jsdoc-syntax">,
                     </span><span class="jsdoc-var">emptyText</span><span class="jsdoc-syntax">:</span><span class="jsdoc-string">'Select'</span><span class="jsdoc-syntax">,
                     </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">item.width </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">item.width  </span><span class="jsdoc-syntax">: 130,
                     </span><span class="jsdoc-var">listeners </span><span class="jsdoc-syntax">: {
                         </span><span class="jsdoc-string">'select'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) {
+
+
                             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c.stylename</span><span class="jsdoc-syntax">) {
                                 </span><span class="jsdoc-var">tb.selectedNode.style</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">c.stylename</span><span class="jsdoc-syntax">] =  </span><span class="jsdoc-var">r.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'val'</span><span class="jsdoc-syntax">);
+                                </span><span class="jsdoc-var">editorcore.syncValue</span><span class="jsdoc-syntax">();
+                                </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+                            }
+                            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">) {
+                                </span><span class="jsdoc-var">tb.selectedNode.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c.attrname</span><span class="jsdoc-syntax">);
+                                </span><span class="jsdoc-var">editorcore.syncValue</span><span class="jsdoc-syntax">();
                                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
                             }
                             </span><span class="jsdoc-var">tb.selectedNode.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c.attrname</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">r.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'val'</span><span class="jsdoc-syntax">));
+                            </span><span class="jsdoc-var">editorcore.syncValue</span><span class="jsdoc-syntax">();
                         }
                     }
 
                 </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
 
 
-
-                </span><span class="jsdoc-var">tb.addField</span><span class="jsdoc-syntax">( </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.form.TextField</span><span class="jsdoc-syntax">({
-                    </span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">,
-                    </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: 100,
-                    </span><span class="jsdoc-comment">//allowBlank:false,
-                    </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''
-                </span><span class="jsdoc-syntax">}));
-                </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
-            }
+                </span><span class="jsdoc-comment">/*
+                tb.addField( new Roo.form.TextField({
+                    name: i,
+                    width: 100,
+                    //allowBlank:false,
+                    value: ''
+                }));
+                continue;
+                */
+            </span><span class="jsdoc-syntax">}
             </span><span class="jsdoc-var">tb.addField</span><span class="jsdoc-syntax">( </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.form.TextField</span><span class="jsdoc-syntax">({
-                </span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'-roo-edit-' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">,
-                </span><span class="jsdoc-var">attrname </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'-roo-edit-' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">attrname </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">tlist</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.name</span><span class="jsdoc-syntax">,
 
                 </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">item.width</span><span class="jsdoc-syntax">,
                 </span><span class="jsdoc-comment">//allowBlank:true,
                 </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
                 </span><span class="jsdoc-var">listeners</span><span class="jsdoc-syntax">: {
                     </span><span class="jsdoc-string">'change' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nv</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ov</span><span class="jsdoc-syntax">) {
+
+
                         </span><span class="jsdoc-var">tb.selectedNode.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f.attrname</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">nv</span><span class="jsdoc-syntax">);
                         </span><span class="jsdoc-var">editorcore.syncValue</span><span class="jsdoc-syntax">();
                     }
         }
 
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_this </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
-
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">show_delete </span><span class="jsdoc-syntax">= !</span><span class="jsdoc-var">block </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">block.deleteTitle </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nm </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'BODY'</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-var">show_delete </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
             </span><span class="jsdoc-var">tb.addSeparator</span><span class="jsdoc-syntax">();
 
             </span><span class="jsdoc-var">tb.addButton</span><span class="jsdoc-syntax">( {
         }
 
         </span><span class="jsdoc-var">tb.addFill</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-var">tb.addButton</span><span class="jsdoc-syntax">( {
-            </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Remove Tag'</span><span class="jsdoc-syntax">,
-
-            </span><span class="jsdoc-var">listeners </span><span class="jsdoc-syntax">: {
-                </span><span class="jsdoc-var">click </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">()
-                {
-                    </span><span class="jsdoc-comment">// remove
-                    // undo does not work.
-
-                    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tb.selectedNode</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">show_delete</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-var">tb.addButton</span><span class="jsdoc-syntax">({
+                </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">block </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">block.deleteTitle </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">block.deleteTitle  </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Remove Block or Formating'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-comment">// remove the tag, and puts the children outside...
 
-                    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sn.parentNode</span><span class="jsdoc-syntax">;
-
-                    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">stn </span><span class="jsdoc-syntax">=  </span><span class="jsdoc-var">sn.childNodes</span><span class="jsdoc-syntax">[0];
-                    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">en </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sn.childNodes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sn.childNodes.length </span><span class="jsdoc-syntax">- 1 ];
-                    </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sn.childNodes.length</span><span class="jsdoc-syntax">) {
-                        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sn.childNodes</span><span class="jsdoc-syntax">[0];
-                        </span><span class="jsdoc-var">sn.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
-                        </span><span class="jsdoc-comment">//Roo.log(node);
-                        </span><span class="jsdoc-var">pn.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sn</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-var">listeners </span><span class="jsdoc-syntax">: {
+                    </span><span class="jsdoc-var">click </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">()
+                    {
+                        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tb.selectedNode</span><span class="jsdoc-syntax">;
+                        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">block</span><span class="jsdoc-syntax">) {
+                            </span><span class="jsdoc-var">sn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.htmleditor.Block.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tb.selectedNode</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.removeNode</span><span class="jsdoc-syntax">();
 
-                    }
-                    </span><span class="jsdoc-var">pn.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sn</span><span class="jsdoc-syntax">);
-                    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">editorcore.createRange</span><span class="jsdoc-syntax">();
+                        }
+                        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">sn</span><span class="jsdoc-syntax">) {
+                            </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+                        }
+                        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">stn </span><span class="jsdoc-syntax">=  </span><span class="jsdoc-var">sn.childNodes</span><span class="jsdoc-syntax">[0] || </span><span class="jsdoc-var">sn.nextSibling </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">sn.previousSibling </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">sn.parentNode</span><span class="jsdoc-syntax">;
+                        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sn.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'data-block'</span><span class="jsdoc-syntax">)) {
+                            </span><span class="jsdoc-var">stn </span><span class="jsdoc-syntax">=  </span><span class="jsdoc-var">sn.nextSibling </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">sn.previousSibling </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">sn.parentNode</span><span class="jsdoc-syntax">;
+                            </span><span class="jsdoc-var">sn.parentNode.removeChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sn</span><span class="jsdoc-syntax">);
+
+                        } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sn </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">sn.tagName </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'BODY'</span><span class="jsdoc-syntax">) {
+                            </span><span class="jsdoc-comment">// remove and keep parents.
+                            </span><span class="jsdoc-var">a </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.FilterKeepChildren</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">tag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">});
+                            </span><span class="jsdoc-var">a.replaceTag</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sn</span><span class="jsdoc-syntax">);
+                        }
 
-                    </span><span class="jsdoc-var">range.setStart</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">stn</span><span class="jsdoc-syntax">,0);
-                    </span><span class="jsdoc-var">range.setEnd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">en</span><span class="jsdoc-syntax">,0); </span><span class="jsdoc-comment">//????
-                    //range.selectNode(sel);
 
+                        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">editorcore.createRange</span><span class="jsdoc-syntax">();
 
-                    </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">selection </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">editorcore.getSelection</span><span class="jsdoc-syntax">();
-                    </span><span class="jsdoc-var">selection.removeAllRanges</span><span class="jsdoc-syntax">();
-                    </span><span class="jsdoc-var">selection.addRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">);
+                        </span><span class="jsdoc-var">range.setStart</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">stn</span><span class="jsdoc-syntax">,0);
+                        </span><span class="jsdoc-var">range.setEnd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">stn</span><span class="jsdoc-syntax">,0);
+                        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">selection </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">editorcore.getSelection</span><span class="jsdoc-syntax">();
+                        </span><span class="jsdoc-var">selection.removeAllRanges</span><span class="jsdoc-syntax">();
+                        </span><span class="jsdoc-var">selection.addRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">);
 
 
+                        </span><span class="jsdoc-comment">//_this.updateToolbar(null, null, pn);
+                        </span><span class="jsdoc-var">_this.updateToolbar</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">);
+                        </span><span class="jsdoc-var">_this.updateFooter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
 
-                    </span><span class="jsdoc-comment">//_this.updateToolbar(null, null, pn);
-                    </span><span class="jsdoc-var">_this.updateToolbar</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">);
-                    </span><span class="jsdoc-var">_this.footDisp.dom.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
+                    }
                 }
-            }
 
 
 
 
-        });
-
+            });
+        }
 
         </span><span class="jsdoc-var">tb.el.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'click'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
             </span><span class="jsdoc-var">e.preventDefault</span><span class="jsdoc-syntax">(); </span><span class="jsdoc-comment">// what does this do?
         </span><span class="jsdoc-syntax">});
         </span><span class="jsdoc-var">tb.el.setVisibilityMode</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">Roo.Element.DISPLAY</span><span class="jsdoc-syntax">);
         </span><span class="jsdoc-var">tb.el.hide</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-var">tb.name </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">nm</span><span class="jsdoc-syntax">;
+
         </span><span class="jsdoc-comment">// dont need to disable them... as they will get hidden
         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">tb</span><span class="jsdoc-syntax">;
 
 
 
     },
+    </span><span class="jsdoc-comment">// when the footer contect changes
     </span><span class="jsdoc-var">onContextClick </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ev</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">dom</span><span class="jsdoc-syntax">)
     {
         </span><span class="jsdoc-var">ev.preventDefault</span><span class="jsdoc-syntax">();
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ans </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.footerEls</span><span class="jsdoc-syntax">;
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ans</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">];
 
-         </span><span class="jsdoc-comment">// pick
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">range </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.editorcore.createRange</span><span class="jsdoc-syntax">();
-
-        </span><span class="jsdoc-var">range.selectNodeContents</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-comment">//range.selectNode(sel);
-
-
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">selection </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.editorcore.getSelection</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-var">selection.removeAllRanges</span><span class="jsdoc-syntax">();
-        </span><span class="jsdoc-var">selection.addRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">);
-
+        </span><span class="jsdoc-var">this.editorcore.selectNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">);
 
 
         </span><span class="jsdoc-var">this.updateToolbar</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sel</span><span class="jsdoc-syntax">);
index e10bd2f..1b19c1f 100644 (file)
                     </span><span class="jsdoc-var">tabIndex</span><span class="jsdoc-syntax">:-1
                 });
             }
-             </span><span class="jsdoc-var">cmenu.menu.items.push</span><span class="jsdoc-syntax">({
+            </span><span class="jsdoc-var">cmenu.menu.items.push</span><span class="jsdoc-syntax">({
                 </span><span class="jsdoc-var">actiontype </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'tablewidths'</span><span class="jsdoc-syntax">,
                 </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Remove Table Widths'</span><span class="jsdoc-syntax">,
                 </span><span class="jsdoc-var">handler</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">) {
                 </span><span class="jsdoc-var">actiontype </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'tidy'</span><span class="jsdoc-syntax">,
                 </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Tidy HTML Source'</span><span class="jsdoc-syntax">,
                 </span><span class="jsdoc-var">handler</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">) {
-                    </span><span class="jsdoc-var">editorcore.doc.body.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">editorcore.domToHTML</span><span class="jsdoc-syntax">();
+                    </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.htmleditor.Tidy</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">editorcore.doc.body</span><span class="jsdoc-syntax">);
                     </span><span class="jsdoc-var">editorcore.syncValue</span><span class="jsdoc-syntax">();
                 },
                 </span><span class="jsdoc-var">tabIndex</span><span class="jsdoc-syntax">:-1
 
         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.btns</span><span class="jsdoc-syntax">) {
             </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">=0; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.btns.length</span><span class="jsdoc-syntax">;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
-                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.btns</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">],</span><span class="jsdoc-var">Roo.form</span><span class="jsdoc-syntax">);
+                </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.btns</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">],</span><span class="jsdoc-var">this.btns</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.xns </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.form</span><span class="jsdoc-syntax">);
                 </span><span class="jsdoc-var">b.cls </span><span class="jsdoc-syntax">=  </span><span class="jsdoc-string">'x-edit-none'</span><span class="jsdoc-syntax">;
 
                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.btns</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.cls</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.btns</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.cls.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'x-init-enable'</span><span class="jsdoc-syntax">) !== -1){
     },
     </span><span class="jsdoc-comment">// private used internally
     </span><span class="jsdoc-var">createLink </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
-        </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;create link?&quot;</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">prompt</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.createLinkText</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.defaultLinkValue</span><span class="jsdoc-syntax">);
-        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'http:/'</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">'/'</span><span class="jsdoc-syntax">){
-            </span><span class="jsdoc-var">this.editorcore.relayCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'createlink'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">);
+        </span><span class="jsdoc-comment">//Roo.log(&quot;create link?&quot;);
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ec </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.editorcore</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ec.getAllAncestors</span><span class="jsdoc-syntax">();
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">n </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">ar.length</span><span class="jsdoc-syntax">;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] &amp;&amp; </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.nodeName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'A'</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-var">n </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
+                </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+            }
         }
-    },
+
+        (</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+
+            </span><span class="jsdoc-var">Roo.MessageBox.show</span><span class="jsdoc-syntax">({
+                </span><span class="jsdoc-var">title </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Add / Edit Link URL&quot;</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">msg </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Enter the url for the link&quot;</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">buttons</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.MessageBox.OKCANCEL</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">btn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">){
+                    </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">btn </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'ok'</span><span class="jsdoc-syntax">) {
+                        </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+                    }
+                    </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">url </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'http:/'</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">'/'</span><span class="jsdoc-syntax">){
+                        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">) {
+                            </span><span class="jsdoc-var">n.setAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'href'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">);
+                        } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+                            </span><span class="jsdoc-var">ec.relayCmd</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'createlink'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">url</span><span class="jsdoc-syntax">);
+                        }
+                    }
+                },
+                </span><span class="jsdoc-var">minWidth</span><span class="jsdoc-syntax">:250,
+                </span><span class="jsdoc-var">prompt</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-comment">//multiline: multiline,
+                </span><span class="jsdoc-var">modal </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">:  </span><span class="jsdoc-var">n  </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">n.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'href'</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-string">''
+            </span><span class="jsdoc-syntax">});
+
+
+        })</span><span class="jsdoc-var">.defer</span><span class="jsdoc-syntax">(100, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// we have to defer this , otherwise the mouse click gives focus to the main window.
+
+    </span><span class="jsdoc-syntax">},
 
 
     </span><span class="jsdoc-comment">/**
                 </span><span class="jsdoc-var">this.tb.items.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">){
                     </span><span class="jsdoc-var">item.enable</span><span class="jsdoc-syntax">();
                 });
+                </span><span class="jsdoc-comment">// initialize 'blocks'
+                </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.editorcore.doc.body</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.query</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'*[data-block]'</span><span class="jsdoc-syntax">), </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
+                    </span><span class="jsdoc-var">Roo.htmleditor.Block.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.updateElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+                },</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+
             }
 
         }
index bbff9f4..1dec91c 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @class Roo.form.Layout
  * @extends Roo.Component
- * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem
+ * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem Roo.form.FieldSet
  * Creates a container for layout and rendering of fields in an {@link Roo.form.Form}.
  * @constructor
  * @param {Object} config Configuration options
 </span><span class="jsdoc-comment">/**
  * @class Roo.form.Column
  * @extends Roo.form.Layout
+ * @children Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem Roo.form.FieldSet
  * Creates a column container for layout and rendering of fields in an {@link Roo.form.Form}.
  * @constructor
  * @param {Object} config Configuration options
 </span><span class="jsdoc-comment">/**
  * @class Roo.form.Row
  * @extends Roo.form.Layout
- * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem
+ * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem Roo.form.FieldSet
  * Creates a row container for layout and rendering of fields in an {@link Roo.form.Form}.
  * @constructor
  * @param {Object} config Configuration options
index 91c5891..fa07f37 100644 (file)
     * @cfg {Roo.dd.DropTarget} dropTarget An {@link Roo.dd.DropTarget} config
     */
     </span><span class="jsdoc-var">dropTarget</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
-
-
+     </span><span class="jsdoc-comment">/**
+    * @cfg {boolean} sortColMenu Sort the column order menu when it shows (usefull for long lists..) default false
+    */
+    </span><span class="jsdoc-var">sortColMenu </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
 
     </span><span class="jsdoc-comment">// private
     </span><span class="jsdoc-var">rendered </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
index dbc0949..e8021b8 100644 (file)
     </span><span class="jsdoc-var">beforeColMenuShow </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cm </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.cm</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-var">colCount </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cm.getColumnCount</span><span class="jsdoc-syntax">();
         </span><span class="jsdoc-var">this.colMenu.removeAll</span><span class="jsdoc-syntax">();
+
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">items </span><span class="jsdoc-syntax">= [];
         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">colCount</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
-            </span><span class="jsdoc-var">this.colMenu.add</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.menu.CheckItem</span><span class="jsdoc-syntax">({
+            </span><span class="jsdoc-var">items.push</span><span class="jsdoc-syntax">({
                 </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;col-&quot;</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">cm.getColumnId</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">),
                 </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">cm.getColumnHeader</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">),
                 </span><span class="jsdoc-var">checked</span><span class="jsdoc-syntax">: !</span><span class="jsdoc-var">cm.isHidden</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">),
                 </span><span class="jsdoc-var">hideOnClick</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">false
-            </span><span class="jsdoc-syntax">}));
+            </span><span class="jsdoc-syntax">});
+        }
+
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.grid.sortColMenu</span><span class="jsdoc-syntax">) {
+            </span><span class="jsdoc-var">items.sort</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">) {
+                </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a.text </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">b.text</span><span class="jsdoc-syntax">) {
+                    </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">0;
+                }
+                </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">a.text.toUpperCase</span><span class="jsdoc-syntax">() &gt; </span><span class="jsdoc-var">b.text.toUpperCase</span><span class="jsdoc-syntax">() ? 1 : -1;
+            });
+        }
+
+        </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">colCount</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
+            </span><span class="jsdoc-var">this.colMenu.add</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.menu.CheckItem</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">items</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]));
         }
     },
 
index e461294..6e2d01e 100644 (file)
@@ -35,7 +35,7 @@
      */
     </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
      </span><span class="jsdoc-comment">/**
-     * @cfg {String} HTML to render in menu
+     * @cfg {String} html to render in menu
      * The text to show on the menu item (HTML version).
      */
     </span><span class="jsdoc-var">html</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
index 0804539..2299aaf 100644 (file)
@@ -12,7 +12,7 @@
 /**
  * @class Roo.menu.Menu
  * @extends Roo.util.Observable
- * @children Roo.menu.BaseItem
+ * @children Roo.menu.Item Roo.menu.Separator Roo.menu.TextItem
  * A menu object.  This is the container to which you add all other menu items.  Menu can also serve a as a base class
  * when you want a specialzed menu based off of another component (like {@link Roo.menu.DateMenu} for example).
  * @constructor
index 565b067..60bc24a 100644 (file)
@@ -114,4 +114,14 @@ sort = (sort == 'ASC' ? 'DESC' : 'ASC');
     );
 };
 
+
+</span><span class="jsdoc-comment">/**
+  * Make the first letter of a string uppercase
+  *
+  * @return {String} The new string.
+  */
+</span><span class="jsdoc-var">String.prototype.toUpperCaseFirst </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">() {
+    </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.charAt</span><span class="jsdoc-syntax">(0)</span><span class="jsdoc-var">.toUpperCase</span><span class="jsdoc-syntax">() + </span><span class="jsdoc-var">this.slice</span><span class="jsdoc-syntax">(1);
+};
+
 </span></code></body></html>
\ No newline at end of file
index 5136c81..4fbfd03 100644 (file)
         }
       ]
     },
+    {
+      "name" : "from",
+      "type" : "function",
+      "desc" : "from",
+      "sig" : "(o)",
+      "static" : true,
+      "memberOf" : "",
+      "isStatic" : true,
+      "isConstructor" : false,
+      "isPrivate" : false,
+      "example" : "",
+      "deprecated" : "",
+      "since" : "",
+      "see" : "",
+      "exceptions" : "",
+      "requires" : "",
+      "params" : [
+        {
+          "name" : "o",
+          "type" : "Array",
+          "desc" : "Or Array like object (eg. nodelist)",
+          "isOptional" : false
+        }
+      ],
+      "returns" : []
+    },
     {
       "name" : "map",
       "type" : "function",
index d89dab3..04c1fe5 100644 (file)
@@ -9,7 +9,10 @@
     ]
   },
   "tree_children" : [],
-  "tree_parent" : [],
+  "tree_parent" : [
+    "none",
+    "builder"
+  ],
   "desc" : "Lightweight Dialog Class.  The code below shows the creation of a typical dialog using existing HTML markup:\n<pre><code>\nvar dlg = new Roo.BasicDialog(\"my-dlg\", {\n    height: 200,\n    width: 300,\n    minHeight: 100,\n    minWidth: 150,\n    modal: true,\n    proxyDrag: true,\n    shadow: true\n});\ndlg.addKeyListener(27, dlg.hide, dlg); // ESC can also close the dialog\ndlg.addButton('OK', dlg.hide, dlg);    // Could call a save function instead of hiding\ndlg.addButton('Cancel', dlg.hide, dlg);\ndlg.show();\n</code></pre>\n  <b>A Dialog should always be a direct child of the body element.</b>",
   "isSingleton" : false,
   "isStatic" : false,
index bba7138..0c95420 100644 (file)
@@ -19,7 +19,7 @@
   "tree_parent" : [
     "Roo.BorderLayout",
     "Roo.LayoutDialog",
-    "builder-top"
+    "builder"
   ],
   "desc" : "A basic ContentPanel element.",
   "isSingleton" : false,
     {
       "name" : "region",
       "type" : "String",
-      "desc" : "[required]   (center|north|south|east|west) which region to put this panel on (when used with xtype constructors)",
+      "desc" : "t) [required] which region to put this panel on (when used with xtype constructors)",
       "memberOf" : ""
     },
     {
index d04e85d..f5312a9 100644 (file)
       ],
       "returns" : []
     },
+    {
+      "name" : "update",
+      "type" : "function",
+      "desc" : "Updates the first element with the spec from the o (replacing if necessary)\nThis iterates through the children, and updates attributes / children etc..",
+      "sig" : "(el, o)",
+      "static" : false,
+      "memberOf" : "",
+      "isStatic" : false,
+      "isConstructor" : false,
+      "isPrivate" : false,
+      "example" : "",
+      "deprecated" : "",
+      "since" : "",
+      "see" : "",
+      "exceptions" : "",
+      "requires" : "",
+      "params" : [
+        {
+          "name" : "el",
+          "type" : "String/HTMLElement/Element",
+          "desc" : "The context element",
+          "isOptional" : false
+        },
+        {
+          "name" : "o",
+          "type" : "Object/String",
+          "desc" : "The Dom object spec (and children) or raw HTML blob",
+          "isOptional" : false
+        }
+      ],
+      "returns" : []
+    },
     {
       "name" : "markup",
       "type" : "function",
index 49ad872..9f7a9e2 100644 (file)
@@ -6,7 +6,11 @@
   ],
   "childClasses" : {  },
   "tree_children" : [],
-  "tree_parent" : [],
+  "tree_parent" : [
+    "Roo.BorderLayout",
+    "Roo.LayoutDialog",
+    "builder"
+  ],
   "desc" : "Create a new GridPanel.",
   "isSingleton" : false,
   "isStatic" : false,
   "deprecated" : "",
   "since" : "",
   "see" : "",
-  "params" : [
-    {
-      "name" : "grid",
-      "type" : "Roo.grid.Grid",
-      "desc" : "The grid for this panel",
-      "isOptional" : false
-    },
-    {
-      "name" : "config",
-      "type" : "String/Object",
-      "desc" : "A string to set only the panel's title, or a config object",
-      "isOptional" : false
-    }
-  ],
+  "params" : [],
   "returns" : [],
   "throws" : "",
   "requires" : "",
@@ -75,7 +66,7 @@
     {
       "name" : "region",
       "type" : "String",
-      "desc" : "[required]   (center|north|south|east|west) which region to put this panel on (when used with xtype constructors)",
+      "desc" : "t) [required] which region to put this panel on (when used with xtype constructors)",
       "memberOf" : "Roo.ContentPanel"
     },
     {
       "desc" : "When using {@link #fitToFrame} and {@link #resizeEl}, you can also fit the parent container  (defaults to false)",
       "memberOf" : "Roo.ContentPanel"
     },
+    {
+      "name" : "grid",
+      "type" : "Roo.grid.Grid",
+      "desc" : "The grid for this panel",
+      "memberOf" : "Roo"
+    },
     {
       "name" : "closable",
       "type" : "Boolean",
index 01d5628..03fb501 100644 (file)
     {
       "name" : "allowComments",
       "type" : "boolean",
-      "desc" : "- default false - allow comments in HTML source - by default they are stripped - if you are editing email you may need this.",
+      "desc" : "- default false - allow comments in HTML source\n         - by default they are stripped - if you are editing email you may need this.",
+      "memberOf" : ""
+    },
+    {
+      "name" : "autoClean",
+      "type" : "boolean",
+      "desc" : "- default true - loading and saving will remove quite a bit of formating,\n        if you are doing an email editor, this probably needs disabling, it's designed",
       "memberOf" : ""
     },
     {
       "desc" : "Whether the component can move the Dom node when rendering (defaults to true).",
       "memberOf" : "Roo.Component"
     },
+    {
+      "name" : "language",
+      "type" : "String",
+      "desc" : "default en - language of text (usefull for rtl languages)",
+      "memberOf" : ""
+    },
+    {
+      "name" : "enableBlocks",
+      "type" : "boolean",
+      "desc" : "- default true - if the block editor (table and figure should be enabled)",
+      "memberOf" : ""
+    },
     {
       "name" : "actionMode",
       "type" : "String",
       ],
       "returns" : []
     },
+    {
+      "name" : "selectNode",
+      "type" : "function",
+      "desc" : "Select a dom node",
+      "sig" : "(node)",
+      "static" : false,
+      "memberOf" : "",
+      "isStatic" : false,
+      "isConstructor" : false,
+      "isPrivate" : false,
+      "example" : "",
+      "deprecated" : "",
+      "since" : "",
+      "see" : "",
+      "exceptions" : "",
+      "requires" : "",
+      "params" : [
+        {
+          "name" : "node",
+          "type" : "DomElement",
+          "desc" : "the node to select",
+          "isOptional" : false
+        }
+      ],
+      "returns" : []
+    },
     {
       "name" : "execCmd",
       "type" : "function",
       "isConstructor" : false,
       "isPrivate" : false,
       "example" : "",
-      "deprecated" : "",
+      "deprecated" : "This has been deprecated: - use filter directly",
       "since" : "",
       "see" : "",
       "exceptions" : "",
     {
       "name" : "cleanTableWidths",
       "type" : "function",
-      "desc" : "cleanTableWidths.\n\nQuite often pasting from word etc.. results in tables with column and widths.\nThis does not work well on fluid HTML layouts - like emails. - so this code should hunt an destroy them..",
+      "desc" : "",
       "sig" : "()\n{\n\n}",
       "static" : false,
       "memberOf" : "",
       "isConstructor" : false,
       "isPrivate" : false,
       "example" : "",
-      "deprecated" : "",
+      "deprecated" : "This has been deprecated: - use filters",
       "since" : "",
       "see" : "",
       "exceptions" : "",
       "params" : [],
       "returns" : []
     },
-    {
-      "name" : "iterateChildren",
-      "type" : "function",
-      "desc" : "iterateChildren of a Node, calling fn each time, using this as the scole..",
-      "sig" : "(node, fn)",
-      "static" : false,
-      "memberOf" : "",
-      "isStatic" : false,
-      "isConstructor" : false,
-      "isPrivate" : false,
-      "example" : "",
-      "deprecated" : "",
-      "since" : "",
-      "see" : "",
-      "exceptions" : "",
-      "requires" : "",
-      "params" : [
-        {
-          "name" : "node",
-          "type" : "DomNode",
-          "desc" : "node to iterate children of.",
-          "isOptional" : false
-        },
-        {
-          "name" : "fn",
-          "type" : "Function",
-          "desc" : "method of this class to call on each item.",
-          "isOptional" : false
-        }
-      ],
-      "returns" : []
-    },
     {
       "name" : "pushValue",
       "type" : "function",
-      "desc" : "Protected method that will not generally be called directly. Pushes the value of the textarea\ninto the iframe editor.",
+      "desc" : "TEXTAREA -> EDITABLE\nProtected method that will not generally be called directly. Pushes the value of the textarea\ninto the iframe editor.",
       "sig" : "()\n{\n\n}",
       "static" : false,
       "memberOf" : "",
index 6b69a3a..3b37e53 100644 (file)
@@ -6,8 +6,12 @@
   ],
   "childClasses" : {  },
   "tree_children" : [],
-  "tree_parent" : [],
-  "desc" : "Create a new NestedLayoutPanel.",
+  "tree_parent" : [
+    "Roo.BorderLayout",
+    "Roo.LayoutDialog",
+    "builder"
+  ],
+  "desc" : "",
   "isSingleton" : false,
   "isStatic" : false,
   "isBuiltin" : false,
@@ -75,7 +79,7 @@
     {
       "name" : "region",
       "type" : "String",
-      "desc" : "[required]   (center|north|south|east|west) which region to put this panel on (when used with xtype constructors)",
+      "desc" : "t) [required] which region to put this panel on (when used with xtype constructors)",
       "memberOf" : "Roo.ContentPanel"
     },
     {
       "desc" : "When used with {@link #url}, calls {@link #setUrl} with this value",
       "memberOf" : "Roo.ContentPanel"
     },
+    {
+      "name" : "layout",
+      "type" : "Roo.BorderLayout",
+      "desc" : "[required] The layout for this panel",
+      "memberOf" : "Roo"
+    },
     {
       "name" : "adjustments",
       "type" : "Array",
index 3fedff0..32b2e60 100644 (file)
@@ -10,6 +10,8 @@
     "Roo.Toolbar.Separator",
     "Roo.Toolbar.Spacer",
     "Roo.Toolbar.TextItem",
+    "Roo.Toolbar.Button",
+    "Roo.Toolbar.SplitButton",
     "Roo.form.Field",
     "Roo.form.Checkbox",
     "Roo.form.ComboBox",
       ],
       "returns" : []
     },
+    {
+      "name" : "onClick",
+      "type" : "function",
+      "desc" : "event that occurs when you click on the navigation buttons - can be used to trigger load of a grid.",
+      "sig" : "(which)",
+      "static" : false,
+      "memberOf" : "",
+      "isStatic" : false,
+      "isConstructor" : false,
+      "isPrivate" : false,
+      "example" : "",
+      "deprecated" : "",
+      "since" : "",
+      "see" : "",
+      "exceptions" : "",
+      "requires" : "",
+      "params" : [
+        {
+          "name" : "which",
+          "type" : "String",
+          "desc" : "(first|prev|next|last|refresh)  which button to press.",
+          "isOptional" : false
+        }
+      ],
+      "returns" : []
+    },
     {
       "name" : "unbind",
       "type" : "function",
index b548f3f..12e1da1 100644 (file)
   ],
   "methods" : [
     {
-      "name" : "disable",
+      "name" : "hide",
       "type" : "function",
-      "desc" : "Disables this item.",
+      "desc" : "Hides this button",
       "sig" : "()\n{\n\n}",
       "static" : false,
-      "memberOf" : "Roo.Toolbar.Item",
+      "memberOf" : "",
       "isStatic" : false,
       "isConstructor" : false,
       "isPrivate" : false,
       "returns" : []
     },
     {
-      "name" : "hide",
+      "name" : "show",
       "type" : "function",
-      "desc" : "Hides this item.",
+      "desc" : "Shows this button",
       "sig" : "()\n{\n\n}",
       "static" : false,
-      "memberOf" : "Roo.Toolbar.Item",
+      "memberOf" : "",
       "isStatic" : false,
       "isConstructor" : false,
       "isPrivate" : false,
@@ -69,9 +69,9 @@
       "returns" : []
     },
     {
-      "name" : "focus",
+      "name" : "disable",
       "type" : "function",
-      "desc" : "Try to focus this item.",
+      "desc" : "Disables this item.",
       "sig" : "()\n{\n\n}",
       "static" : false,
       "memberOf" : "Roo.Toolbar.Item",
@@ -88,9 +88,9 @@
       "returns" : []
     },
     {
-      "name" : "show",
+      "name" : "focus",
       "type" : "function",
-      "desc" : "Shows this item.",
+      "desc" : "Try to focus this item.",
       "sig" : "()\n{\n\n}",
       "static" : false,
       "memberOf" : "Roo.Toolbar.Item",
index 9c2734e..b14276f 100644 (file)
@@ -12,6 +12,8 @@
     "Roo.Toolbar.Separator",
     "Roo.Toolbar.Spacer",
     "Roo.Toolbar.TextItem",
+    "Roo.Toolbar.Button",
+    "Roo.Toolbar.SplitButton",
     "Roo.form.Field",
     "Roo.form.Checkbox",
     "Roo.form.ComboBox",
index 422144c..2325a9d 100644 (file)
@@ -6,7 +6,11 @@
   ],
   "childClasses" : {  },
   "tree_children" : [],
-  "tree_parent" : [],
+  "tree_parent" : [
+    "Roo.BorderLayout",
+    "Roo.LayoutDialog",
+    "builder"
+  ],
   "desc" : "Treepanel component",
   "isSingleton" : false,
   "isStatic" : false,
@@ -69,7 +73,7 @@
     {
       "name" : "region",
       "type" : "String",
-      "desc" : "[required]   (center|north|south|east|west) which region to put this panel on (when used with xtype constructors)",
+      "desc" : "t) [required] which region to put this panel on (when used with xtype constructors)",
       "memberOf" : "Roo.ContentPanel"
     },
     {
index c6e74ce..6657677 100644 (file)
         {
           "name" : "options",
           "type" : "Object",
-          "desc" : "An object containing properties which control loading options:<ul>\n<li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>\n<li>callback {Function} A function to be called after the Records have been loaded. The callback is\npassed the following arguments:<ul>\n<li>r : Roo.data.Record[]</li>\n<li>options: Options object from the load call</li>\n<li>success: Boolean success indicator</li></ul></li>\n<li>scope {Object} Scope with which to call the callback (defaults to the Store object)</li>\n<li>add {Boolean} indicator to append loaded records rather than replace the current cache.</li>\n</ul>",
+          "desc" : "An object containing properties which control loading options:<ul>\n<li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>\n<li>params.data {Object} if you are using a MemoryProxy / JsonReader, use this as the data to load stuff..\n<pre>\n                {\n                    data : data,  // array of key=>value data like JsonReader\n                    total : data.length,\n                    success : true\n                    \n                }\n        </pre>\n            }.</li>\n<li>callback {Function} A function to be called after the Records have been loaded. The callback is\npassed the following arguments:<ul>\n<li>r : Roo.data.Record[]</li>\n<li>options: Options object from the load call</li>\n<li>success: Boolean success indicator</li></ul></li>\n<li>scope {Object} Scope with which to call the callback (defaults to the Store object)</li>\n<li>add {Boolean} indicator to append loaded records rather than replace the current cache.</li>\n</ul>",
           "isOptional" : false
         }
       ],
index 3f904ad..0af2188 100644 (file)
         {
           "name" : "options",
           "type" : "Object",
-          "desc" : "An object containing properties which control loading options:<ul>\n<li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>\n<li>callback {Function} A function to be called after the Records have been loaded. The callback is\npassed the following arguments:<ul>\n<li>r : Roo.data.Record[]</li>\n<li>options: Options object from the load call</li>\n<li>success: Boolean success indicator</li></ul></li>\n<li>scope {Object} Scope with which to call the callback (defaults to the Store object)</li>\n<li>add {Boolean} indicator to append loaded records rather than replace the current cache.</li>\n</ul>",
+          "desc" : "An object containing properties which control loading options:<ul>\n<li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>\n<li>params.data {Object} if you are using a MemoryProxy / JsonReader, use this as the data to load stuff..\n<pre>\n                {\n                    data : data,  // array of key=>value data like JsonReader\n                    total : data.length,\n                    success : true\n                    \n                }\n        </pre>\n            }.</li>\n<li>callback {Function} A function to be called after the Records have been loaded. The callback is\npassed the following arguments:<ul>\n<li>r : Roo.data.Record[]</li>\n<li>options: Options object from the load call</li>\n<li>success: Boolean success indicator</li></ul></li>\n<li>scope {Object} Scope with which to call the callback (defaults to the Store object)</li>\n<li>add {Boolean} indicator to append loaded records rather than replace the current cache.</li>\n</ul>",
           "isOptional" : false
         }
       ],
index 35e8841..e4d5b68 100644 (file)
         {
           "name" : "options",
           "type" : "Object",
-          "desc" : "An object containing properties which control loading options:<ul>\n<li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>\n<li>callback {Function} A function to be called after the Records have been loaded. The callback is\npassed the following arguments:<ul>\n<li>r : Roo.data.Record[]</li>\n<li>options: Options object from the load call</li>\n<li>success: Boolean success indicator</li></ul></li>\n<li>scope {Object} Scope with which to call the callback (defaults to the Store object)</li>\n<li>add {Boolean} indicator to append loaded records rather than replace the current cache.</li>\n</ul>",
+          "desc" : "An object containing properties which control loading options:<ul>\n<li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>\n<li>params.data {Object} if you are using a MemoryProxy / JsonReader, use this as the data to load stuff..\n<pre>\n                {\n                    data : data,  // array of key=>value data like JsonReader\n                    total : data.length,\n                    success : true\n                    \n                }\n        </pre>\n            }.</li>\n<li>callback {Function} A function to be called after the Records have been loaded. The callback is\npassed the following arguments:<ul>\n<li>r : Roo.data.Record[]</li>\n<li>options: Options object from the load call</li>\n<li>success: Boolean success indicator</li></ul></li>\n<li>scope {Object} Scope with which to call the callback (defaults to the Store object)</li>\n<li>add {Boolean} indicator to append loaded records rather than replace the current cache.</li>\n</ul>",
           "isOptional" : false
         }
       ],
index 67e71e5..cd9294f 100644 (file)
     {
       "name" : "getFieldValues",
       "type" : "function",
-      "desc" : "Returns the fields in this form as an object with key/value pairs. \nThis differs from getValues as it calls getValue on each child item, rather than using dom data.",
-      "sig" : "()\n{\n\n}",
+      "desc" : "Returns the fields in this form as an object with key/value pairs. \nThis differs from getValues as it calls getValue on each child item, rather than using dom data.\nNormally this will not return readOnly data",
+      "sig" : "(with_readonly)",
       "static" : false,
       "memberOf" : "",
       "isStatic" : false,
       "see" : "",
       "exceptions" : "",
       "requires" : "",
-      "params" : [],
+      "params" : [
+        {
+          "name" : "with_readonly",
+          "type" : "Boolean",
+          "desc" : "return readonly field data.",
+          "isOptional" : false
+        }
+      ],
       "returns" : [
         {
           "name" : "",
index 2c0a45c..893e383 100644 (file)
@@ -6,7 +6,36 @@
     "Roo.util.Observable"
   ],
   "childClasses" : {  },
-  "tree_children" : [],
+  "tree_children" : [
+    "Roo.form.Row",
+    "Roo.form.Field",
+    "Roo.form.Checkbox",
+    "Roo.form.ComboBox",
+    "Roo.form.ComboBoxArray",
+    "Roo.form.ComboCheck",
+    "Roo.form.ComboNested",
+    "Roo.form.DateField",
+    "Roo.form.DayPicker",
+    "Roo.form.DisplayField",
+    "Roo.form.FCKeditor",
+    "Roo.form.GridField",
+    "Roo.form.Hidden",
+    "Roo.form.HtmlEditor",
+    "Roo.form.MonthField",
+    "Roo.form.NumberField",
+    "Roo.form.Radio",
+    "Roo.form.Select",
+    "Roo.form.Signature",
+    "Roo.form.TextArea",
+    "Roo.form.TextField",
+    "Roo.form.TriggerField",
+    "Roo.Button",
+    "Roo.SplitButton",
+    "Roo.Toolbar.Button",
+    "Roo.Toolbar.SplitButton",
+    "Roo.form.TextItem",
+    "Roo.form.FieldSet"
+  ],
   "tree_parent" : [],
   "desc" : "Creates a column container for layout and rendering of fields in an {@link Roo.form.Form}.",
   "isSingleton" : false,
index 60c1ca9..4ec16c4 100644 (file)
       "desc" : "True to disable the field (defaults to false).",
       "memberOf" : "Roo.form.Field"
     },
+    {
+      "name" : "zeroValue",
+      "type" : "Date/String",
+      "desc" : "if the date is less that this number, then the field is rendered as empty\ndefault is 1800",
+      "memberOf" : ""
+    },
     {
       "name" : "name",
       "type" : "String",
index c771b57..74f0da3 100644 (file)
     {
       "name" : "getFieldValues",
       "type" : "function",
-      "desc" : "Returns the fields in this form as an object with key/value pairs. \nThis differs from getValues as it calls getValue on each child item, rather than using dom data.",
-      "sig" : "()\n{\n\n}",
+      "desc" : "Returns the fields in this form as an object with key/value pairs. \nThis differs from getValues as it calls getValue on each child item, rather than using dom data.\nNormally this will not return readOnly data",
+      "sig" : "(with_readonly)",
       "static" : false,
       "memberOf" : "Roo.form.BasicForm",
       "isStatic" : false,
       "see" : "",
       "exceptions" : "",
       "requires" : "",
-      "params" : [],
+      "params" : [
+        {
+          "name" : "with_readonly",
+          "type" : "Boolean",
+          "desc" : "return readonly field data.",
+          "isOptional" : false
+        }
+      ],
       "returns" : [
         {
           "name" : "",
index 7c5a7b3..21b363d 100644 (file)
       "desc" : "True to disable the field (defaults to false).",
       "memberOf" : "Roo.form.Field"
     },
-    {
-      "name" : "name",
-      "type" : "String",
-      "desc" : "The field's HTML name attribute.",
-      "memberOf" : "Roo.form.Field"
-    },
     {
       "name" : "resizable",
       "type" : "String",
       "desc" : "Array of toolbars. - defaults to just the Standard one",
       "memberOf" : ""
     },
+    {
+      "name" : "name",
+      "type" : "String",
+      "desc" : "The field's HTML name attribute.",
+      "memberOf" : "Roo.form.Field"
+    },
     {
       "name" : "width",
       "type" : "Number",
       "desc" : "list of events and functions to call for this object, \nFor example :\n<pre><code>\n    listeners :  { \n       'click' : function(e) {\n           ..... \n        } ,\n        .... \n    } \n  </code></pre>",
       "memberOf" : "Roo.util.Observable"
     },
+    {
+      "name" : "bodyCls",
+      "type" : "string",
+      "desc" : "default '' default classes to add to body of editable area - usually undoreset is a good start..",
+      "memberOf" : ""
+    },
     {
       "name" : "readOnly",
       "type" : "Boolean",
       "desc" : "True to mark the field as readOnly in HTML (defaults to false) -- Note: this only sets the element's readOnly DOM attribute.",
       "memberOf" : "Roo.form.Field"
     },
+    {
+      "name" : "enableBlocks",
+      "type" : "boolean",
+      "desc" : "- default true - if the block editor (table and figure should be enabled)",
+      "memberOf" : ""
+    },
+    {
+      "name" : "language",
+      "type" : "String",
+      "desc" : "default en - language of text (usefull for rtl languages)",
+      "memberOf" : ""
+    },
     {
       "name" : "cls",
       "type" : "String",
       "desc" : "Label to use when rendering a form.",
       "memberOf" : "Roo.form.Field"
     },
-    {
-      "name" : "disableClass",
-      "type" : "String",
-      "desc" : "CSS class added to the component when it is disabled (defaults to \"x-item-disabled\").",
-      "memberOf" : "Roo.Component"
-    },
     {
       "name" : "validationDelay",
       "type" : "Number",
       "desc" : "The length of time in milliseconds after user input begins until validation is initiated (defaults to 250)",
       "memberOf" : "Roo.form.Field"
     },
+    {
+      "name" : "disableClass",
+      "type" : "String",
+      "desc" : "CSS class added to the component when it is disabled (defaults to \"x-item-disabled\").",
+      "memberOf" : "Roo.Component"
+    },
     {
       "name" : "stylesheets",
       "type" : "Array",
-      "desc" : "url of stylesheets. set to [] to disable stylesheets.",
+      "desc" : "url of stylesheets. set to [] to disable stylesheets - this is usally a good idea  rootURL + '/roojs1/css/undoreset.css',   .",
       "memberOf" : ""
     },
     {
       "type" : "String",
       "desc" : "Mouse over tip",
       "memberOf" : "Roo.form.Field"
+    },
+    {
+      "name" : "autoClean",
+      "type" : "boolean",
+      "desc" : "- default true - loading and saving will remove quite a bit of formating,\n        if you are doing an email editor, this probably needs disabling, it's designed",
+      "memberOf" : ""
     }
   ],
   "methods" : [
       ],
       "returns" : []
     },
+    {
+      "name" : "updateLanguage",
+      "type" : "function",
+      "desc" : "update the language in the body - really done by core",
+      "sig" : "(language)",
+      "static" : false,
+      "memberOf" : "",
+      "isStatic" : false,
+      "isConstructor" : false,
+      "isPrivate" : false,
+      "example" : "",
+      "deprecated" : "",
+      "since" : "",
+      "see" : "",
+      "exceptions" : "",
+      "requires" : "",
+      "params" : [
+        {
+          "name" : "language",
+          "type" : "String",
+          "desc" : "- eg. en / ar / zh-CN etc..",
+          "isOptional" : false
+        }
+      ],
+      "returns" : []
+    },
     {
       "name" : "markInvalid",
       "type" : "function",
       "params" : [],
       "returns" : []
     },
+    {
+      "name" : "getSelectedNode",
+      "type" : "function",
+      "desc" : "get the Context selected node",
+      "sig" : "()\n{\n\n}",
+      "static" : false,
+      "memberOf" : "",
+      "isStatic" : false,
+      "isConstructor" : false,
+      "isPrivate" : false,
+      "example" : "",
+      "deprecated" : "",
+      "since" : "",
+      "see" : "",
+      "exceptions" : "",
+      "requires" : "",
+      "params" : [],
+      "returns" : []
+    },
     {
       "name" : "validate",
       "type" : "function",
       "params" : [],
       "returns" : []
     },
+    {
+      "name" : "paste",
+      "type" : "function",
+      "desc" : "Fires when press user pastes into the editor",
+      "sig" : "function (_self)\n{\n\n}",
+      "memberOf" : "",
+      "example" : "",
+      "deprecated" : "",
+      "since" : "",
+      "see" : "",
+      "params" : [
+        {
+          "name" : "this",
+          "type" : "Roo.HtmlEditorCore",
+          "desc" : "",
+          "isOptional" : false
+        }
+      ],
+      "returns" : []
+    },
     {
       "name" : "editmodechange",
       "type" : "function",
index fea1d46..94e8142 100644 (file)
@@ -39,7 +39,8 @@
     "Roo.SplitButton",
     "Roo.Toolbar.Button",
     "Roo.Toolbar.SplitButton",
-    "Roo.form.TextItem"
+    "Roo.form.TextItem",
+    "Roo.form.FieldSet"
   ],
   "tree_parent" : [],
   "desc" : "Creates a container for layout and rendering of fields in an {@link Roo.form.Form}.",
index 962ab56..4b86383 100644 (file)
@@ -34,7 +34,8 @@
     "Roo.SplitButton",
     "Roo.Toolbar.Button",
     "Roo.Toolbar.SplitButton",
-    "Roo.form.TextItem"
+    "Roo.form.TextItem",
+    "Roo.form.FieldSet"
   ],
   "tree_parent" : [],
   "desc" : "Creates a row container for layout and rendering of fields in an {@link Roo.form.Form}.",
index b21e1f2..3faf8cc 100644 (file)
       "desc" : "True to measure headers with column data when auto sizing columns. Default is true.",
       "memberOf" : "Roo.grid.Grid"
     },
+    {
+      "name" : "sortColMenu",
+      "type" : "boolean",
+      "desc" : "Sort the column order menu when it shows (usefull for long lists..) default false",
+      "memberOf" : "Roo.grid.Grid"
+    },
     {
       "name" : "enableDragDrop",
       "type" : "Boolean",
index 9809c97..7b98a30 100644 (file)
       "desc" : "True to measure headers with column data when auto sizing columns. Default is true.",
       "memberOf" : "Roo.grid.Grid"
     },
+    {
+      "name" : "sortColMenu",
+      "type" : "boolean",
+      "desc" : "Sort the column order menu when it shows (usefull for long lists..) default false",
+      "memberOf" : "Roo.grid.Grid"
+    },
     {
       "name" : "enableDragDrop",
       "type" : "Boolean",
index 3ffc45e..0f587ee 100644 (file)
       "desc" : "True to measure headers with column data when auto sizing columns. Default is true.",
       "memberOf" : ""
     },
+    {
+      "name" : "sortColMenu",
+      "type" : "boolean",
+      "desc" : "Sort the column order menu when it shows (usefull for long lists..) default false",
+      "memberOf" : ""
+    },
     {
       "name" : "enableDragDrop",
       "type" : "Boolean",
index c0242bf..b4589db 100644 (file)
       "desc" : "True to enable drop of elements. Default is false. (double check if this is needed?)",
       "memberOf" : "Roo.grid.Grid"
     },
+    {
+      "name" : "sortColMenu",
+      "type" : "boolean",
+      "desc" : "Sort the column order menu when it shows (usefull for long lists..) default false",
+      "memberOf" : "Roo.grid.Grid"
+    },
     {
       "name" : "clicksToEdit",
       "type" : "Number",
index cf2c27c..d5f6e34 100644 (file)
   "returns" : [],
   "throws" : "",
   "requires" : "",
-  "config" : [],
+  "config" : [
+    {
+      "name" : "grid",
+      "type" : "Roo.grid.Grid",
+      "desc" : "The grid for this panel",
+      "memberOf" : ""
+    },
+    {
+      "name" : "layout",
+      "type" : "Roo.BorderLayout",
+      "desc" : "[required] The layout for this panel",
+      "memberOf" : ""
+    }
+  ],
   "methods" : [
     {
       "name" : "each",
         }
       ]
     },
+    {
+      "name" : "log",
+      "type" : "function",
+      "desc" : "Logs to console if it can.",
+      "sig" : "(string)",
+      "static" : true,
+      "memberOf" : "",
+      "isStatic" : true,
+      "isConstructor" : false,
+      "isPrivate" : false,
+      "example" : "",
+      "deprecated" : "",
+      "since" : "",
+      "see" : "",
+      "exceptions" : "",
+      "requires" : "",
+      "params" : [
+        {
+          "name" : "string",
+          "type" : "String|Object",
+          "desc" : "",
+          "isOptional" : false
+        }
+      ],
+      "returns" : []
+    },
     {
       "name" : "addBehaviors",
       "type" : "function",
       ],
       "returns" : []
     },
+    {
+      "name" : "namespace",
+      "type" : "function",
+      "desc" : "Creates namespaces to be used for scoping variables and classes so that they are not global.  Usage:\n<pre><code>\nRoo.namespace('Company', 'Company.data');\nCompany.Widget = function() { ... }\nCompany.data.CustomStore = function(config) { ... }\n</code></pre>",
+      "sig" : "(namespace1, namespace2, etc)",
+      "static" : true,
+      "memberOf" : "",
+      "isStatic" : true,
+      "isConstructor" : false,
+      "isPrivate" : false,
+      "example" : "",
+      "deprecated" : "",
+      "since" : "",
+      "see" : "",
+      "exceptions" : "",
+      "requires" : "",
+      "params" : [
+        {
+          "name" : "namespace1",
+          "type" : "String",
+          "desc" : "",
+          "isOptional" : false
+        },
+        {
+          "name" : "namespace2",
+          "type" : "String",
+          "desc" : "",
+          "isOptional" : false
+        },
+        {
+          "name" : "etc",
+          "type" : "String",
+          "desc" : "",
+          "isOptional" : false
+        }
+      ],
+      "returns" : []
+    },
     {
       "name" : "override",
       "type" : "function",
index 2061dd7..e65833e 100644 (file)
       "memberOf" : ""
     },
     {
-      "name" : "HTML",
+      "name" : "html",
       "type" : "String",
       "desc" : "to render in menu\nThe text to show on the menu item (HTML version).",
       "memberOf" : "Roo.menu.Item"
index da72ae3..69cf39b 100644 (file)
       "memberOf" : "Roo.Component"
     },
     {
-      "name" : "itemCls",
+      "name" : "html",
       "type" : "String",
-      "desc" : "The default CSS class to use for menu items (defaults to \"x-menu-item\")",
+      "desc" : "to render in menu\nThe text to show on the menu item (HTML version).",
       "memberOf" : ""
     },
     {
-      "name" : "HTML",
+      "name" : "itemCls",
       "type" : "String",
-      "desc" : "to render in menu\nThe text to show on the menu item (HTML version).",
+      "desc" : "The default CSS class to use for menu items (defaults to \"x-menu-item\")",
       "memberOf" : ""
     },
     {
index 82e05db..c87fd1f 100644 (file)
     ]
   },
   "tree_children" : [
-    "Roo.menu.CheckItem",
-    "Roo.menu.ColorItem",
-    "Roo.menu.DateItem",
     "Roo.menu.Item",
+    "Roo.menu.CheckItem",
     "Roo.menu.Separator",
     "Roo.menu.TextItem"
   ],
index 9c96da0..5047028 100644 (file)
         }
       ]
     },
+    {
+      "name" : "toUpperCaseFirst",
+      "type" : "function",
+      "desc" : "Make the first letter of a string uppercase",
+      "sig" : "()\n{\n\n}",
+      "static" : false,
+      "memberOf" : "",
+      "isStatic" : false,
+      "isConstructor" : false,
+      "isPrivate" : false,
+      "example" : "",
+      "deprecated" : "",
+      "since" : "",
+      "see" : "",
+      "exceptions" : "",
+      "requires" : "",
+      "params" : [],
+      "returns" : [
+        {
+          "name" : "",
+          "type" : "String",
+          "desc" : "The new string."
+        }
+      ]
+    },
     {
       "name" : "leftPad",
       "type" : "function",
index 3de9774..ee49378 100644 (file)
         "cn" : [],
         "is_class" : true
       },
+      {
+        "name" : "Roo.MessageBox",
+        "cn" : [],
+        "is_class" : true
+      },
       {
         "name" : "Roo.NestedLayoutPanel",
         "cn" : [],
             "cn" : [],
             "is_class" : true
           },
-          {
-            "name" : "Roo.dd.DragDropMgr",
-            "cn" : [],
-            "is_class" : true
-          },
           {
             "name" : "Roo.dd.DragSource",
             "cn" : [],
         ],
         "is_class" : false
       },
+      {
+        "name" : "Roo.htmleditor",
+        "cn" : [
+          {
+            "name" : "Roo.htmleditor.Block",
+            "cn" : [],
+            "is_class" : true
+          },
+          {
+            "name" : "Roo.htmleditor.BlockFigure",
+            "cn" : [],
+            "is_class" : true
+          },
+          {
+            "name" : "Roo.htmleditor.BlockTable",
+            "cn" : [],
+            "is_class" : true
+          },
+          {
+            "name" : "Roo.htmleditor.BlockTd",
+            "cn" : [],
+            "is_class" : true
+          },
+          {
+            "name" : "Roo.htmleditor.Filter",
+            "cn" : [],
+            "is_class" : false
+          },
+          {
+            "name" : "Roo.htmleditor.FilterAttributes",
+            "cn" : [],
+            "is_class" : false
+          },
+          {
+            "name" : "Roo.htmleditor.FilterBlack",
+            "cn" : [],
+            "is_class" : false
+          },
+          {
+            "name" : "Roo.htmleditor.FilterBlock",
+            "cn" : [],
+            "is_class" : false
+          },
+          {
+            "name" : "Roo.htmleditor.FilterComment",
+            "cn" : [],
+            "is_class" : false
+          },
+          {
+            "name" : "Roo.htmleditor.FilterKeepChildren",
+            "cn" : [],
+            "is_class" : false
+          },
+          {
+            "name" : "Roo.htmleditor.FilterLongBr",
+            "cn" : [],
+            "is_class" : false
+          },
+          {
+            "name" : "Roo.htmleditor.FilterParagraph",
+            "cn" : [],
+            "is_class" : false
+          },
+          {
+            "name" : "Roo.htmleditor.FilterSpan",
+            "cn" : [],
+            "is_class" : false
+          },
+          {
+            "name" : "Roo.htmleditor.FilterStyleToTag",
+            "cn" : [],
+            "is_class" : false
+          },
+          {
+            "name" : "Roo.htmleditor.FilterTableWidth",
+            "cn" : [],
+            "is_class" : false
+          },
+          {
+            "name" : "Roo.htmleditor.FilterWord",
+            "cn" : [],
+            "is_class" : true
+          },
+          {
+            "name" : "Roo.htmleditor.KeyEnter",
+            "cn" : [],
+            "is_class" : false
+          },
+          {
+            "name" : "Roo.htmleditor.TidyEntities",
+            "cn" : [],
+            "is_class" : true
+          },
+          {
+            "name" : "Roo.htmleditor.TidySerializer",
+            "cn" : [],
+            "is_class" : true
+          },
+          {
+            "name" : "Roo.htmleditor.TidyWriter",
+            "cn" : [],
+            "is_class" : true
+          }
+        ],
+        "is_class" : false
+      },
       {
         "name" : "Roo.lib",
         "cn" : [
             "name" : "Roo.lib.RGBColor",
             "cn" : [],
             "is_class" : true
+          },
+          {
+            "name" : "Roo.lib.Range",
+            "cn" : [],
+            "is_class" : true
+          },
+          {
+            "name" : "Roo.lib.Selection",
+            "cn" : [],
+            "is_class" : true
+          },
+          {
+            "name" : "Roo.lib.UndoManager",
+            "cn" : [],
+            "is_class" : true
           }
         ],
         "is_class" : false
         ],
         "is_class" : false
       },
+      {
+        "name" : "Roo.rtf",
+        "cn" : [],
+        "is_class" : false
+      },
       {
         "name" : "Roo.state",
         "cn" : [
index 88e6362..23ebd7d 100644 (file)
         <div class="x-form-clear"></div>
 
 
-        <script type="text/javascript" src="../../roojs-all.js"></script>   
+        <script type="text/javascript" src="../../roojs-debug.js"></script>   
         <!-- testing new code.. -->
+        <script type="text/javascript" src="../../Roo/DomHelper.js"></script>
+        <script type="text/javascript" src="../../Roo/lib/UndoManager.js"></script>
+        <script type="text/javascript" src="../../Roo/lib/Range.js"></script>
+        <script type="text/javascript" src="../../Roo/lib/Selection.js"></script>
+        <script type="text/javascript" src="../../Roo/htmleditor/KeyEnter.js"></script>        
           <script type="text/javascript" src="../../Roo/HtmlEditorCore.js"></script>        
         <script type="text/javascript" src="../../Roo/form/HtmlEditor.js"></script>        
         <script type="text/javascript" src="../../Roo/form/HtmlEditor/ToolbarStandard.js"></script>
-          <script type="text/javascript" src="../../Roo/form/HtmlEditor/ToolbarContext.js"></script>        
+        <script type="text/javascript" src="../../Roo/htmleditor/Block.js"></script>
+        <script type="text/javascript" src="../../Roo/htmleditor/BlockTable.js"></script>
+        <script type="text/javascript" src="../../Roo/htmleditor/BlockFigure.js"></script>
+        <script type="text/javascript" src="../../Roo/htmleditor/BlockTd.js"></script>
+        <script type="text/javascript" src="../../Roo/htmleditor/FilterBlock.js"></script>
+        <script type="text/javascript" src="../../Roo/htmleditor/Tidy.js"></script>
+        <script type="text/javascript" src="../../Roo/htmleditor/TidyEntities.js"></script>
+        <script type="text/javascript" src="../../Roo/htmleditor/TidySerializer.js"></script>
+        <script type="text/javascript" src="../../Roo/htmleditor/TidyWriter.js"></script>
+
+        <script type="text/javascript" src="../../Roo/form/HtmlEditor/ToolbarContext.js"></script>
         <script type="text/javascript" src="../../Roo/menu/Item.js"></script>        
         
         <script type="text/javascript" src="../examples.js"></script>        
index 6b7a5ab..c9cbdec 100644 (file)
@@ -26,10 +26,121 @@ Roo.onReady(function(){
                 xtype : 'HtmlEditor',
                 xns: Roo.form,
                 white : [ 'iframe' ],
+                autoClean : true,
+                bodyCls : 'undoreset undoreset mo-pr-body-content',
+                stylesheets : [ 
+                    '../../css/undoreset.css',
+                    '/web.MediaOutreach/Pman/PressRelease/templates/images/css/editor.css'
+                    
+                    
+                ],
                 toolbars : [    
                     {
                         xtype : 'ToolbarStandard',
-                        xns : Roo.form.HtmlEditor
+                        xns : Roo.form.HtmlEditor,
+                        btns : [
+                            {
+                                xtype : 'Button',
+                                text : "Add Table",
+                                cls : 'x-init-enable',
+                                listeners : {
+                                    click : function (_self, e)
+                                    {
+                                        
+                                        var rr = new Roo.htmleditor.BlockTable({
+                                            no_row : 4,
+                                            no_col : 4
+                                        });
+                                        editor.editorcore.insertAtCursor(rr.toHTML());
+                                    
+                                 
+                                    }
+                                },
+                                xns : Roo,
+                               
+                            },
+                            {
+                                xtype : 'Button',
+                                text : "Add Image (BIG)",
+                                cls : 'x-init-enable',
+                                listeners : {
+                                    click : function (_self, e)
+                                    {
+                                        
+                                        var rr = new Roo.htmleditor.BlockFigure({
+                                            image_src: 'https://picsum.photos/1000/500',
+    
+                                            align: 'left',
+                                            caption : 'test',
+                                            text_align: 'left',
+                                            
+                                            width : '100%',
+                                            margin: '2%',
+                                        });
+                                        editor.editorcore.insertAtCursor(rr.toHTML());
+                                    
+                                 
+                                    }
+                                },
+                                xns : Roo,
+                               
+                            },
+                            {
+                                xtype : 'Button',
+                                text : "Add Image (SMALL)",
+                                cls : 'x-init-enable',
+                                listeners : {
+                                    click : function (_self, e)
+                                    {
+                                        
+                                        var rr = new Roo.htmleditor.BlockFigure({
+                                            image_src: 'https://picsum.photos/400/300',
+    
+                                            align: 'left',
+                                            caption : 'test',
+                                            text_align: 'left',
+                                            
+                                            width : '100%',
+                                            margin: '2%',
+                                        });
+                                        editor.editorcore.insertAtCursor(rr.toHTML());
+                                    
+                                 
+                                    }
+                                },
+                                xns : Roo,
+                               
+                            },
+                            {
+                                xtype : 'Button',
+                                text : "Add Youtube",
+                                cls : 'x-init-enable',
+                                listeners : {
+                                    click : function (_self, e)
+                                    {
+                                        
+                                        var rr = new Roo.htmleditor.BlockFigure({
+                                            image_src: 'https://picsum.photos/500/400',
+    
+                                            align: 'center',
+                                            caption : 'test',
+                                            text_align: 'left',
+                                            video_url : 'https://www.youtube.com/embed/Gbr-UrxxeoA',
+                                            href : 'https://youtu.be/Gbr-UrxxeoA',
+                                            cls : 'youtube',
+                                            width : '100%',
+                                            margin: '2%',
+                                        });
+                                        editor.editorcore.insertAtCursor(rr.toHTML());
+                                    
+                                 
+                                    }
+                                },
+                                xns : Roo,
+                               
+                            }
+                   
+                        ]
                     },
                       {
                         xtype : 'ToolbarContext',
@@ -38,15 +149,15 @@ Roo.onReady(function(){
                             '*' : [ 'headline' ] ,
                             'TD' : [ 'underline', 'double-underline' ]
                         }
-                    },
-                    
+                    }
+                     
                     
                 ],
                 id:'bio',
                 name : 'bio',
                 fieldLabel:'Biography',
-                width:800,
-                height:400,
+                width:1100,
+                height:600,
                 resizable: 's' /// where the handles should got..
 
             },
index 036d8f8..fbcb5e0 100644 (file)
@@ -18,7 +18,7 @@ i<l;i++){var a=as[i];if(a instanceof Array){r=r.concat(a);}else if(a.length!==un
 },destroy:function(){for(var i=0,a=arguments,S=a.length;i<S;i++){var as=a[i];if(as){if(as.dom){as.removeAllListeners();as.remove();continue;}if(typeof as.purgeListeners=='function'){as.purgeListeners();}if(typeof as.destroy=='function'){as.destroy();}}}},type:function(o){if(o===undefined||o===null){return false;
 }if(o.htmlElement){return 'element';}var t=typeof o;if(t=='object'&&o.nodeName){switch(o.nodeType){case 1:return 'element';case 3:return (/\S/).test(o.nodeValue)?'textnode':'whitespace';}}if(t=='object'||t=='function'){switch(o.constructor){case Array:return 'array';
 case RegExp:return 'regexp';}if(typeof o.length=='number'&&typeof o.item=='function'){return 'nodelist';}}return t;},isEmpty:function(v,S){return v===null||v===undefined||(!S?v==='':false);},isOpera:C,isSafari:D,isFirefox:E,isIE:F,isIE7:G,isIE11:H,isEdge:I,isGecko:J,isBorderBox:K,isWindows:L,isLinux:N,isMac:M,isIOS:P,isAndroid:Q,isTouch:R,useShims:((F&&!G)||(J&&M)),selectNode:function(S,T){var U=Roo.DomQuery.selectNode(S,T);
-return U?Roo.get(U):new Roo.Element(false);},getGridSize:function(){var w=Roo.lib.Dom.getViewWidth();switch(true){case w>1200:return 'xl';case w>992:return 'lg';case w>768:return 'md';case w>576:return 'sm';default:return 'xs'}}});})();Roo.namespace("Roo","Roo.util","Roo.grid","Roo.dd","Roo.tree","Roo.data","Roo.form","Roo.menu","Roo.state","Roo.lib","Roo.layout","Roo.app","Roo.ux","Roo.bootstrap","Roo.bootstrap.dash");
+return U?Roo.get(U):new Roo.Element(false);},getGridSize:function(){var w=Roo.lib.Dom.getViewWidth();switch(true){case w>1200:return 'xl';case w>992:return 'lg';case w>768:return 'md';case w>576:return 'sm';default:return 'xs'}}});})();Roo.namespace("Roo","Roo.util","Roo.grid","Roo.dd","Roo.tree","Roo.data","Roo.form","Roo.menu","Roo.state","Roo.lib","Roo.layout","Roo.app","Roo.ux");
 
 // Function.js
 (function(){if(Roo.isIE){function fnCleanUp(){var p=Function.prototype;delete p.createSequence;delete p.defer;delete p.createDelegate;delete p.createCallback;delete p.createInterceptor;window.detachEvent("onunload",fnCleanUp);}window.attachEvent("onunload",fnCleanUp);
@@ -29,13 +29,13 @@ E=E.concat(B);}else if(typeof C=="number"){E=Array.prototype.slice.call(argument
 // String.js
 Roo.applyIf(String,{escape:function(A){return A.replace(/('|\\)/g,"\\$1");},leftPad:function(A,B,ch){var C=new String(A);if(ch===null||ch===undefined||ch===''){ch=" ";}while(C.length<B){C=ch+C;}return C;},format:function(A){var B=Array.prototype.slice.call(arguments,1);
 return A.replace(/\{(\d+)\}/g,function(m,i){return Roo.util.Format.htmlEncode(B[i]);});}});String.prototype.toggle=function(A,B){return this==A?B:A;};String.prototype.unicodeClean=function(){return this.replace(/[\s\S]/g,function(A){if(A.charCodeAt()<256){return A;
-}try{encodeURIComponent(A);}catch(e){return '';}return A;});};
+}try{encodeURIComponent(A);}catch(e){return '';}return A;});};String.prototype.toUpperCaseFirst=function(){return this.charAt(0).toUpperCase()+this.slice(1);};
 // Number.js
 Roo.applyIf(Number.prototype,{constrain:function(A,B){return Math.min(Math.max(this,A),B);}});
 // Array.js
 Roo.applyIf(Array.prototype,{indexOf:function(o){for(var i=0,A=this.length;i<A;i++){if(this[i]==o){return i;}}return -1;},remove:function(o){var A=this.indexOf(o);if(A!=-1){this.splice(A,1);}},map:function(A){var B=this.length>>>0;if(typeof A!="function"){throw new TypeError();
 }var C=new Array(B);var D=arguments[1];for(var i=0;i<B;i++){if(i in this){C[i]=A.call(D,this[i],i,this);}}return C;},equals:function(b){if(this===b){return true;}if(b==null){return false;}if(this.length!==b.length){return false;}for(var i=0;i<this.length;
-++i){if(this[i]!==b[i]){return false;}}return true;}});
+++i){if(this[i]!==b[i]){return false;}}return true;}});Roo.applyIf(Array,{from:function(o){var A=[];for(var i=0;i<o.length;i++){A[i]=o[i];}return A;}});
 // Date.js
 Date.prototype.getElapsed=function(A){return Math.abs((A||new Date()).getTime()-this.getTime());};Date.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(A){if(Date.formatFunctions[A]==null){Date.createNewFormat(A);
 }var B=Date.formatFunctions[A];return this[B]();};Date.prototype.format=Date.prototype.dateFormat;Date.createNewFormat=function(A){var B="format"+Date.formatFunctions.count++;Date.formatFunctions[A]=B;var C="Date.prototype."+B+" = function(){return ";var D=false;
@@ -47,10 +47,10 @@ case "g":return "((this.getHours() % 12) ? this.getHours() % 12 : 12) + ";case "
 case "i":return "String.leftPad(this.getMinutes(), 2, '0') + ";case "s":return "String.leftPad(this.getSeconds(), 2, '0') + ";case "O":return "this.getGMTOffset() + ";case "P":return "this.getGMTColonOffset() + ";case "T":return "this.getTimezone() + ";case "Z":return "(this.getTimezoneOffset() * -60) + ";
 default:return "'"+String.escape(A)+"' + ";}};Date.parseDate=function(A,B){if(Date.parseFunctions[B]==null){Date.createParser(B);}var C=Date.parseFunctions[B];return Date[C](A);};Date.createParser=function(A){var B="parse"+Date.parseFunctions.count++;var C=Date.parseRegexes.length;
 var D=1;Date.parseFunctions[A]=B;var E="Date."+B+" = function(input){\n"+"var y = -1, m = -1, d = -1, h = -1, i = -1, s = -1, o, z, v;\n"+"var d = new Date();\n"+"y = d.getFullYear();\n"+"m = d.getMonth();\n"+"d = d.getDate();\n"+"if (typeof(input) !== 'string') { input = input.toString(); }\n"+"var results = input.match(Date.parseRegexes["+C+"]);\n"+"if (results && results.length > 0) {";
-var F="";var G=false;var ch='';for(var i=0;i<A.length;++i){ch=A.charAt(i);if(!G&&ch=="\\"){G=true;}else if(G){G=false;F+=String.escape(ch);}else{var H=Date.formatCodeToRegex(ch,D);D+=H.g;F+=H.s;if(H.g&&H.c){E+=H.c;}}}E+="if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"+"{v = new Date(y, m, d, h, i, s);}\n"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"+"{v = new Date(y, m, d, h, i);}\n"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0)\n"+"{v = new Date(y, m, d, h);}\n"+"else if (y >= 0 && m >= 0 && d > 0)\n"+"{v = new Date(y, m, d);}\n"+"else if (y >= 0 && m >= 0)\n"+"{v = new Date(y, m);}\n"+"else if (y >= 0)\n"+"{v = new Date(y);}\n"+"}return (v && (z || o))?\n"+"    ((z)? v.add(Date.SECOND, (v.getTimezoneOffset() * 60) + (z*1)) :\n"+"        v.add(Date.HOUR, (v.getGMTOffset() / 100) + (o / -100))) : v\n"+";}";
+var F="";var G=false;var ch='';for(var i=0;i<A.length;++i){ch=A.charAt(i);if(!G&&ch=="\\"){G=true;}else if(G){G=false;F+=String.escape(ch);}else{var H=Date.formatCodeToRegex(ch,D);D+=H.g;F+=H.s;if(H.g&&H.c){E+=H.c;}}}E+="if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"+"{v = new Date(y, m, d, h, i, s); v.setFullYear(y);}\n"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"+"{v = new Date(y, m, d, h, i); v.setFullYear(y);}\n"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0)\n"+"{v = new Date(y, m, d, h); v.setFullYear(y);}\n"+"else if (y >= 0 && m >= 0 && d > 0)\n"+"{v = new Date(y, m, d); v.setFullYear(y);}\n"+"else if (y >= 0 && m >= 0)\n"+"{v = new Date(y, m); v.setFullYear(y);}\n"+"else if (y >= 0)\n"+"{v = new Date(y); v.setFullYear(y);}\n"+"}return (v && (z || o))?\n"+"    ((z)? v.add(Date.SECOND, (v.getTimezoneOffset() * 60) + (z*1)) :\n"+"        v.add(Date.HOUR, (v.getGMTOffset() / 100) + (o / -100))) : v\n"+";}";
 Date.parseRegexes[C]=new RegExp("^"+F+"$");eval(E);};Date.formatCodeToRegex=function(A,B){switch(A){case "D":return {g:0,c:null,s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};case "j":return {g:1,c:"d = parseInt(results["+B+"], 10);\n",s:"(\\d{1,2})"};case "d":return {g:1,c:"d = parseInt(results["+B+"], 10);\n",s:"(\\d{2})"}
 ;case "l":return {g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case "S":return {g:0,c:null,s:"(?:st|nd|rd|th)"};case "w":return {g:0,c:null,s:"\\d"};case "z":return {g:0,c:null,s:"(?:\\d{1,3})"};case "W":return {g:0,c:null,s:"(?:\\d{2})"};case "F":return {g:1,c:"m = parseInt(Date.monthNumbers[results["+B+"].substring(0, 3)], 10);\n",s:"("+Date.monthNames.join("|")+")"}
-;case "M":return {g:1,c:"m = parseInt(Date.monthNumbers[results["+B+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case "n":return {g:1,c:"m = parseInt(results["+B+"], 10) - 1;\n",s:"(\\d{1,2})"};case "m":return {g:1,c:"m = parseInt(results["+B+"], 10) - 1;\n",s:"(\\d{2})"}
+;case "M":return {g:1,c:"m = parseInt(Date.monthNumbers[results["+B+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case "n":return {g:1,c:"m = parseInt(results["+B+"], 10) - 1;\n",s:"(\\d{1,2})"};case "m":return {g:1,c:"m = Math.max(0,parseInt(results["+B+"], 10) - 1);\n",s:"(\\d{2})"}
 ;case "t":return {g:0,c:null,s:"\\d{1,2}"};case "L":return {g:0,c:null,s:"(?:1|0)"};case "Y":return {g:1,c:"y = parseInt(results["+B+"], 10);\n",s:"(\\d{4})"};case "y":return {g:1,c:"var ty = parseInt(results["+B+"], 10);\n"+"y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"}
 ;case "a":return {g:1,c:"if (results["+B+"] == 'am') {\n"+"if (h == 12) { h = 0; }\n"+"} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case "A":return {g:1,c:"if (results["+B+"] == 'AM') {\n"+"if (h == 12) { h = 0; }\n"+"} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"}
 ;case "g":case "G":return {g:1,c:"h = parseInt(results["+B+"], 10);\n",s:"(\\d{1,2})"};case "h":case "H":return {g:1,c:"h = parseInt(results["+B+"], 10);\n",s:"(\\d{2})"};case "i":return {g:1,c:"i = parseInt(results["+B+"], 10);\n",s:"(\\d{2})"};case "s":return {g:1,c:"s = parseInt(results["+B+"], 10);\n",s:"(\\d{2})"}
@@ -209,28 +209,52 @@ i<J;++i){H[i]=[G[0]+H[i][0],G[1]+H[i][1]];}}this.runtimeAttributes[E]=[G];if(H.l
 var id=el.id||el.tagName;return ("Scroll "+id);};B.doMethod=function(C,D,E){var F=null;if(C=='scroll'){F=[this.method(this.currentFrame,D[0],E[0]-D[0],this.totalFrames),this.method(this.currentFrame,D[1],E[1]-D[1],this.totalFrames)];}else{F=A.doMethod.call(this,C,D,E);
 }return F;};B.getAttribute=function(C){var D=null;var el=this.getEl();if(C=='scroll'){D=[el.scrollLeft,el.scrollTop];}else{D=A.getAttribute.call(this,C);}return D;};B.setAttribute=function(C,D,E){var el=this.getEl();if(C=='scroll'){el.scrollLeft=D[0];el.scrollTop=D[1];
 }else{A.setAttribute.call(this,C,D,E);}};})();
+// Roo/lib/UndoManager.js
+Roo.lib.UndoManager=function(A,B){this.stack=[];this.limit=A;this.scope=B;this.fireEvent=typeof CustomEvent!='undefined'&&B&&B.dispatchEvent;if(this.fireEvent){this.bindEvents();}this.reset();};Roo.lib.UndoManager.prototype={limit:false,stack:false,scope:false,fireEvent:false,position:0,length:0,transact:function(A,B){if(arguments.length<2){throw new TypeError('Not enough arguments to UndoManager.transact.');
+}A.execute();this.stack.splice(0,this.position);if(B&&this.length){this.stack[0].push(A);}else{this.stack.unshift([A]);}this.position=0;if(this.limit&&this.stack.length>this.limit){this.length=this.stack.length=this.limit;}else{this.length=this.stack.length;
+}if(this.fireEvent){this.scope.dispatchEvent(new CustomEvent('DOMTransaction',{detail:{transactions:this.stack[0].slice()},bubbles:true,cancelable:false}));}},undo:function(){if(this.position<this.length){for(var i=this.stack[this.position].length-1;i>=0;
+i--){this.stack[this.position][i].undo();}this.position++;if(this.fireEvent){this.scope.dispatchEvent(new CustomEvent('undo',{detail:{transactions:this.stack[this.position-1].slice()},bubbles:true,cancelable:false}));}}},redo:function(){if(this.position>0){for(var i=0,n=this.stack[this.position-1].length;
+i<n;i++){this.stack[this.position-1][i].redo();}this.position--;if(this.fireEvent){this.scope.dispatchEvent(new CustomEvent('redo',{detail:{transactions:this.stack[this.position].slice()},bubbles:true,cancelable:false}));}}},item:function(A){if(A>=0&&A<this.length){return this.stack[A].slice();
+}return null;},clearUndo:function(){this.stack.length=this.length=this.position;},clearRedo:function(){this.stack.splice(0,this.position);this.position=0;this.length=this.stack.length;},reset:function(){this.stack=[];this.position=0;this.length=0;this.current_html=this.scope.innerHTML;
+if(this.timer!==false){clearTimeout(this.timer);}this.timer=false;this.merge=false;this.addEvent();},current_html:'',timer:false,merge:false,bindEvents:function(){var el=this.scope;el.undoManager=this;this.scope.addEventListener('keydown',function(e){if((e.ctrlKey||e.metaKey)&&e.keyCode===90){if(e.shiftKey){el.undoManager.redo();
+}else{el.undoManager.undo();}e.preventDefault();}});this.scope.addEventListener('keyup',function(e){if((e.ctrlKey||e.metaKey)&&e.keyCode===90){e.preventDefault();}});var t=this;el.addEventListener('input',function(e){if(el.innerHTML==t.current_html){return;
+}if(t.timer!==false){clearTimeout(t.timer);t.timer=false;}t.timer=setTimeout(function(){t.merge=false;},1000);t.addEvent(t.merge);t.merge=true;});},addEvent:function(A){A=typeof(A)=='undefined'?false:A;this.scope.undoManager.transact({scope:this.scope,oldHTML:this.current_html,newHTML:this.scope.innerHTML,execute:function(){}
+,undo:function(){this.scope.innerHTML=this.current_html=this.oldHTML;},redo:function(){this.scope.innerHTML=this.current_html=this.newHTML;}},false);this.merge=A;this.current_html=this.scope.innerHTML;}};
+// Roo/lib/Range.js
+Roo.lib.Range=function(){};Roo.lib.Range.wrap=function(r){return Roo.apply(r,Roo.lib.Range.prototype);};Roo.apply(Roo.lib.Range.prototype,{closest:function(A){if(typeof(A)!='string'){for(var i=0;i<A.length;i++){var r=this.closest(A[i]);if(r!==false){return r;
+}}return false;}A=A.toLowerCase();var n=this.commonAncestorContainer;while(n.nodeType!=1){n=n.parentNode;}if(n.nodeName.toLowerCase()==A){return n;}if(n.nodeName.toLowerCase()=='body'){return false;}return n.closest(A)||false;},cloneRange:function(){return Roo.lib.Range.wrap(Range.prototype.cloneRange.call(this));
+}});
+// Roo/lib/Selection.js
+Roo.lib.Selection=function(){};Roo.lib.Selection.wrap=function(r,A){Roo.apply(r,Roo.lib.Selection.prototype);r.ownerDocument=A;return r;};Roo.apply(Roo.lib.Selection.prototype,{ownerDocument:false,getRangeAt:function(n){return Roo.lib.Range.wrap(Selection.prototype.getRangeAt.call(this,n));
+},insertNode:function(A,B){if(typeof(A)=='string'){A=this.ownerDocument.createElement(A);if(B=='in'){A.innerHTML='&nbsp;';}}var C=this.getRangeAt(0);if(this.type!='Caret'){C.deleteContents();}var sn=A.childNodes[0];C.insertNode(A);if(B=='after'){A.insertAdjacentHTML('afterend','&nbsp;');
+sn=A.nextSibling;}if(B=='none'){return;}this.cursorText(sn);},cursorText:function(n){range=Roo.lib.Range.wrap(new Range());var ix=Array.from(n.parentNode.childNodes).indexOf(n);range.setStart(n.parentNode,ix);range.setEnd(n.parentNode,ix+1);this.removeAllRanges();
+this.addRange(range);Roo.log([n,range,this,this.baseOffset,this.extentOffset,this.type]);},cursorAfter:function(n){if(!n.nextSibling||n.nextSibling.nodeValue!='&nbsp;'){n.insertAdjacentHTML('afterend','&nbsp;');}this.cursorText(n.nextSibling);}});
 // Roo/DomHelper.js
 if(typeof Range!="undefined"&&typeof Range.prototype.createContextualFragment=="undefined"){Range.prototype.createContextualFragment=function(A){var B=window.document;var C=B.createElement("div");C.innerHTML=A;var D=B.createDocumentFragment(),n;while((n=C.firstChild)){D.appendChild(n);
 }return D;};}Roo.DomHelper=function(){var A=null;var B=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i;var C=/^table|tbody|tr|td$/i;var D={};var E=function(o){if(typeof o=='string'){return o;}var b="";if(!o.tag){o.tag="div";}b+="<"+o.tag;
-for(var M in o){if(M=="tag"||M=="children"||M=="cn"||M=="html"||typeof o[M]=="function"){continue;}if(M=="style"){var s=o["style"];if(typeof s=="function"){s=s.call();}if(typeof s=="string"){b+=' style="'+s+'"';}else if(typeof s=="object"){b+=' style="';for(var N in s){if(typeof s[N]!="function"){b+=N+":"+s[N]+";";
-}}b+='"';}}else{if(M=="cls"){b+=' class="'+o["cls"]+'"';}else if(M=="htmlFor"){b+=' for="'+o["htmlFor"]+'"';}else{b+=" "+M+'="'+o[M]+'"';}}}if(B.test(o.tag)){b+="/>";}else{b+=">";var cn=o.children||o.cn;if(cn){if((cn instanceof Array)||(Roo.isSafari&&typeof(cn.join)=="function")){for(var i=0,O=cn.length;
-i<O;i++){b+=E(cn[i],b);}}else{b+=E(cn,b);}}if(o.html){b+=o.html;}b+="</"+o.tag+">";}return b;};var F=function(o,M){var ns=false;if(o.ns&&o.ns!='html'){if(o.xmlns&&typeof(D[o.ns])=='undefined'){D[o.ns]=o.xmlns;ns=o.xmlns;}if(typeof(D[o.ns])=='undefined'){console.log("Trying to create namespace element "+o.ns+", however no xmlns was sent to builder previously");
-}ns=D[o.ns];}if(typeof(o)=='string'){return M.appendChild(document.createTextNode(o));}o.tag=o.tag||div;if(o.ns&&Roo.isIE){ns=false;o.tag=o.ns+':'+o.tag;}var el=ns?document.createElementNS(ns,o.tag||'div'):document.createElement(o.tag||'div');var N=el.setAttribute?true:false;
-for(var O in o){if(O=="tag"||O=="ns"||O=="xmlns"||O=="children"||O=="cn"||O=="html"||O=="style"||typeof o[O]=="function"){continue;}if(O=="cls"&&Roo.isIE){el.className=o["cls"];}else{if(N){el.setAttribute(O=="cls"?'class':O,o[O]);}else{el[O]=o[O];}}}Roo.DomHelper.applyStyles(el,o.style);
-var cn=o.children||o.cn;if(cn){if((cn instanceof Array)||(Roo.isSafari&&typeof(cn.join)=="function")){for(var i=0,P=cn.length;i<P;i++){F(cn[i],el);}}else{F(cn,el);}}if(o.html){el.innerHTML=o.html;}if(M){M.appendChild(el);}return el;};var G=function(M,s,h,e){A.innerHTML=[s,h,e].join('');
-var i=-1,el=A;while(++i<M&&el.firstChild){el=el.firstChild;}return el;};var ts='<table>',te='</table>',H=ts+'<tbody>',I='</tbody>'+te,J=H+'<tr>',K='</tr>'+I;var L=function(M,N,el,O){if(!A){A=document.createElement('div');}var P;var Q=null;if(M=='td'){if(N=='afterbegin'||N=='beforeend'){return;
-}if(N=='beforebegin'){Q=el;el=el.parentNode;}else{Q=el.nextSibling;el=el.parentNode;}P=G(4,J,O,K);}else if(M=='tr'){if(N=='beforebegin'){Q=el;el=el.parentNode;P=G(3,H,O,I);}else if(N=='afterend'){Q=el.nextSibling;el=el.parentNode;P=G(3,H,O,I);}else{if(N=='afterbegin'){Q=el.firstChild;
-}P=G(4,J,O,K);}}else if(M=='tbody'){if(N=='beforebegin'){Q=el;el=el.parentNode;P=G(2,ts,O,te);}else if(N=='afterend'){Q=el.nextSibling;el=el.parentNode;P=G(2,ts,O,te);}else{if(N=='afterbegin'){Q=el.firstChild;}P=G(3,H,O,I);}}else{if(N=='beforebegin'||N=='afterend'){return;
-}if(N=='afterbegin'){Q=el.firstChild;}P=G(2,ts,O,te);}el.insertBefore(P,Q);return P;};return {useDom:false,markup:function(o){return E(o);},applyStyles:function(el,M){if(M){el=Roo.fly(el);if(typeof M=="string"){var re=/\s?([a-z\-]*)\:\s?([^;]*);?/gi;var N;
-while((N=re.exec(M))!=null){el.setStyle(N[1],N[2]);}}else if(typeof M=="object"){for(var O in M){el.setStyle(O,M[O]);}}else if(typeof M=="function"){Roo.DomHelper.applyStyles(el,M.call());}}},insertHtml:function(M,el,N){M=M.toLowerCase();if(el.insertAdjacentHTML){if(C.test(el.tagName)){var rs;
-if(rs=L(el.tagName.toLowerCase(),M,el,N)){return rs;}}switch(M){case "beforebegin":el.insertAdjacentHTML('BeforeBegin',N);return el.previousSibling;case "afterbegin":el.insertAdjacentHTML('AfterBegin',N);return el.firstChild;case "beforeend":el.insertAdjacentHTML('BeforeEnd',N);
-return el.lastChild;case "afterend":el.insertAdjacentHTML('AfterEnd',N);return el.nextSibling;}throw 'Illegal insertion point -> "'+M+'"';}var O=el.ownerDocument.createRange();var P;switch(M){case "beforebegin":O.setStartBefore(el);P=O.createContextualFragment(N);
-el.parentNode.insertBefore(P,el);return el.previousSibling;case "afterbegin":if(el.firstChild){O.setStartBefore(el.firstChild);P=O.createContextualFragment(N);el.insertBefore(P,el.firstChild);return el.firstChild;}else{el.innerHTML=N;return el.firstChild;
-}case "beforeend":if(el.lastChild){O.setStartAfter(el.lastChild);P=O.createContextualFragment(N);el.appendChild(P);return el.lastChild;}else{el.innerHTML=N;return el.lastChild;}case "afterend":O.setStartAfter(el);P=O.createContextualFragment(N);el.parentNode.insertBefore(P,el.nextSibling);
-return el.nextSibling;}throw 'Illegal insertion point -> "'+M+'"';},insertBefore:function(el,o,M){return this.doInsert(el,o,M,"beforeBegin");},insertAfter:function(el,o,M){return this.doInsert(el,o,M,"afterEnd","nextSibling");},insertFirst:function(el,o,M){return this.doInsert(el,o,M,"afterBegin");
-},doInsert:function(el,o,M,N,O){el=Roo.getDom(el);var P;if(this.useDom||o.ns){P=F(o,null);el.parentNode.insertBefore(P,O?el[O]:el);}else{var Q=E(o);P=this.insertHtml(N,el,Q);}return M?Roo.get(P,true):P;},append:function(el,o,M){el=Roo.getDom(el);var N;if(this.useDom||o.ns){N=F(o,null);
-el.appendChild(N);}else{var O=E(o);N=this.insertHtml("beforeEnd",el,O);}return M?Roo.get(N,true):N;},overwrite:function(el,o,M){el=Roo.getDom(el);if(o.ns){while(el.childNodes.length){el.removeChild(el.firstChild);}F(o,el);}else{el.innerHTML=E(o);}return M?Roo.get(el.firstChild,true):el.firstChild;
-},createTemplate:function(o){var M=E(o);return new Roo.Template(M);}};}();
+for(var N in o){if(N=="tag"||N=="children"||N=="cn"||N=="html"||typeof o[N]=="function"){continue;}if(N=="style"){var s=o["style"];if(typeof s=="function"){s=s.call();}if(typeof s=="string"){b+=' style="'+s+'"';}else if(typeof s=="object"){b+=' style="';for(var O in s){if(typeof s[O]!="function"){b+=O+":"+s[O]+";";
+}}b+='"';}}else{if(N=="cls"){b+=' class="'+o["cls"]+'"';}else if(N=="htmlFor"){b+=' for="'+o["htmlFor"]+'"';}else{b+=" "+N+'="'+o[N]+'"';}}}if(B.test(o.tag)){b+="/>";}else{b+=">";var cn=o.children||o.cn;if(cn){if((cn instanceof Array)||(Roo.isSafari&&typeof(cn.join)=="function")){for(var i=0,P=cn.length;
+i<P;i++){b+=E(cn[i],b);}}else{b+=E(cn,b);}}if(o.html){b+=o.html;}b+="</"+o.tag+">";}return b;};var F=function(o,N){var ns=false;if(o.ns&&o.ns!='html'){if(o.xmlns&&typeof(D[o.ns])=='undefined'){D[o.ns]=o.xmlns;ns=o.xmlns;}if(typeof(D[o.ns])=='undefined'){console.log("Trying to create namespace element "+o.ns+", however no xmlns was sent to builder previously");
+}ns=D[o.ns];}if(typeof(o)=='string'){return N.appendChild(document.createTextNode(o));}o.tag=o.tag||div;if(o.ns&&Roo.isIE){ns=false;o.tag=o.ns+':'+o.tag;}var el=ns?document.createElementNS(ns,o.tag||'div'):document.createElement(o.tag||'div');var O=el.setAttribute?true:false;
+for(var P in o){if(P=="tag"||P=="ns"||P=="xmlns"||P=="children"||P=="cn"||P=="html"||P=="style"||typeof o[P]=="function"){continue;}if(P=="cls"&&Roo.isIE){el.className=o["cls"];}else{if(O){el.setAttribute(P=="cls"?'class':P,o[P]);}else{el[P]=o[P];}}}Roo.DomHelper.applyStyles(el,o.style);
+var cn=o.children||o.cn;if(cn){if((cn instanceof Array)||(Roo.isSafari&&typeof(cn.join)=="function")){for(var i=0,Q=cn.length;i<Q;i++){F(cn[i],el);}}else{F(cn,el);}}if(o.html){el.innerHTML=o.html;}if(N){N.appendChild(el);}return el;};var G=function(N,s,h,e){A.innerHTML=[s,h,e].join('');
+var i=-1,el=A;while(++i<N&&el.firstChild){el=el.firstChild;}return el;};var ts='<table>',te='</table>',H=ts+'<tbody>',I='</tbody>'+te,J=H+'<tr>',K='</tr>'+I;var L=function(N,O,el,P){if(!A){A=document.createElement('div');}var Q;var R=null;if(N=='td'){if(O=='afterbegin'||O=='beforeend'){return;
+}if(O=='beforebegin'){R=el;el=el.parentNode;}else{R=el.nextSibling;el=el.parentNode;}Q=G(4,J,P,K);}else if(N=='tr'){if(O=='beforebegin'){R=el;el=el.parentNode;Q=G(3,H,P,I);}else if(O=='afterend'){R=el.nextSibling;el=el.parentNode;Q=G(3,H,P,I);}else{if(O=='afterbegin'){R=el.firstChild;
+}Q=G(4,J,P,K);}}else if(N=='tbody'){if(O=='beforebegin'){R=el;el=el.parentNode;Q=G(2,ts,P,te);}else if(O=='afterend'){R=el.nextSibling;el=el.parentNode;Q=G(2,ts,P,te);}else{if(O=='afterbegin'){R=el.firstChild;}Q=G(3,H,P,I);}}else{if(O=='beforebegin'||O=='afterend'){return;
+}if(O=='afterbegin'){R=el.firstChild;}Q=G(2,ts,P,te);}el.insertBefore(Q,R);return Q;};var M=function(N,to){Roo.log(["UpdateNode",N,to]);if(N.nodeType!=to.nodeType){Roo.log(["ReplaceChild - mismatch notType",to,N]);N.parentNode.replaceChild(to,N);}if(N.nodeType==3){if(N.data==to.data){return;
+}N.data=to.data;return;}if(!N.parentNode){return;}if(N.nodeType!=1||N.tagName!=to.tagName){Roo.log(["ReplaceChild",N,to]);N.parentNode.replaceChild(to,N);return;}var ar=Array.from(N.attributes);for(var i=0;i<ar.length;i++){if(to.hasAttribute(ar[i].name)){continue;
+}if(ar[i].name=='id'){continue;}Roo.log("removeAttribute"+ar[i].name);N.removeAttribute(ar[i].name);}ar=to.attributes;for(var i=0;i<ar.length;i++){if(N.getAttribute(ar[i].name)==to.getAttribute(ar[i].name)){Roo.log("skipAttribute "+ar[i].name+'='+to.getAttribute(ar[i].name));
+continue;}Roo.log("updateAttribute "+ar[i].name+'=>'+to.getAttribute(ar[i].name));N.setAttribute(ar[i].name,to.getAttribute(ar[i].name));}var O=Array.from(N.childNodes);var P=Array.from(to.childNodes);for(var i=0;i<Math.max(P.length,O.length);i++){if(i>=O.length){N.appendChild(P[i]);
+Roo.log(["add",P[i]]);}else if(i>=P.length){N.removeChild(O[i]);Roo.log(["remove",O[i]]);}else{M(O[i],P[i]);}}};return {useDom:false,markup:function(o){return E(o);},applyStyles:function(el,N){if(N){el=Roo.fly(el);if(typeof N=="string"){var re=/\s?([a-z\-]*)\:\s?([^;]*);?/gi;
+var O;while((O=re.exec(N))!=null){el.setStyle(O[1],O[2]);}}else if(typeof N=="object"){for(var P in N){el.setStyle(P,N[P]);}}else if(typeof N=="function"){Roo.DomHelper.applyStyles(el,N.call());}}},insertHtml:function(N,el,O){N=N.toLowerCase();if(el.insertAdjacentHTML){if(C.test(el.tagName)){var rs;
+if(rs=L(el.tagName.toLowerCase(),N,el,O)){return rs;}}switch(N){case "beforebegin":el.insertAdjacentHTML('BeforeBegin',O);return el.previousSibling;case "afterbegin":el.insertAdjacentHTML('AfterBegin',O);return el.firstChild;case "beforeend":el.insertAdjacentHTML('BeforeEnd',O);
+return el.lastChild;case "afterend":el.insertAdjacentHTML('AfterEnd',O);return el.nextSibling;}throw 'Illegal insertion point -> "'+N+'"';}var P=el.ownerDocument.createRange();var Q;switch(N){case "beforebegin":P.setStartBefore(el);Q=P.createContextualFragment(O);
+el.parentNode.insertBefore(Q,el);return el.previousSibling;case "afterbegin":if(el.firstChild){P.setStartBefore(el.firstChild);Q=P.createContextualFragment(O);el.insertBefore(Q,el.firstChild);return el.firstChild;}else{el.innerHTML=O;return el.firstChild;
+}case "beforeend":if(el.lastChild){P.setStartAfter(el.lastChild);Q=P.createContextualFragment(O);el.appendChild(Q);return el.lastChild;}else{el.innerHTML=O;return el.lastChild;}case "afterend":P.setStartAfter(el);Q=P.createContextualFragment(O);el.parentNode.insertBefore(Q,el.nextSibling);
+return el.nextSibling;}throw 'Illegal insertion point -> "'+N+'"';},insertBefore:function(el,o,N){return this.doInsert(el,o,N,"beforeBegin");},insertAfter:function(el,o,N){return this.doInsert(el,o,N,"afterEnd","nextSibling");},insertFirst:function(el,o,N){return this.doInsert(el,o,N,"afterBegin");
+},doInsert:function(el,o,N,O,P){el=Roo.getDom(el);var Q;if(this.useDom||o.ns){Q=F(o,null);el.parentNode.insertBefore(Q,P?el[P]:el);}else{var R=E(o);Q=this.insertHtml(O,el,R);}return N?Roo.get(Q,true):Q;},append:function(el,o,N){el=Roo.getDom(el);var O;if(this.useDom||o.ns){O=F(o,null);
+el.appendChild(O);}else{var P=E(o);O=this.insertHtml("beforeEnd",el,P);}return N?Roo.get(O,true):O;},overwrite:function(el,o,N){el=Roo.getDom(el);if(o.ns){while(el.childNodes.length){el.removeChild(el.firstChild);}F(o,el);}else{el.innerHTML=E(o);}return N?Roo.get(el.firstChild,true):el.firstChild;
+},createTemplate:function(o){var N=E(o);return new Roo.Template(N);},update:function(el,o){M(Roo.getDom(el),F(o));}};}();
 // Roo/Template.js
 Roo.Template=function(A){if(A instanceof Array){A=A.join("");}else if(arguments.length>1){A=Array.prototype.join.call(arguments,"");}if(typeof(A)=='object'){Roo.apply(this,A)}else{this.html=A;}if(this.url){this.load();}};Roo.Template.prototype={onLoad:false,url:false,html:'',compiled:false,loaded:false,applyTemplate:function(A){try{if(this.compiled){return this.compiled(A);
 }var B=this.disableFormats!==true;var fm=Roo.util.Format,C=this;var fn=function(m,D,E,F){if(E&&B){if(E.substr(0,5)=="this."){return C.call(E.substr(5),A[D],A);}else{if(F){var re=/^\s*['"](.*)["']\s*$/;F=F.split(',');for(var i=0,G=F.length;i<G;i++){F[i]=F[i].replace(re,"$1");
@@ -1226,12 +1250,12 @@ A.render(td);var ti=new Roo.Toolbar.Item(td.firstChild);ti.render(td);this.items
 this.disabled=false;this.el.disabled=false;}});Roo.Toolbar.Separator=function(A){var s=document.createElement("span");s.className="ytb-sep";if(A){A.el=s;}Roo.Toolbar.Separator.superclass.constructor.call(this,A||s);};Roo.extend(Roo.Toolbar.Separator,Roo.Toolbar.Item,{enable:Roo.emptyFn,disable:Roo.emptyFn,focus:Roo.emptyFn}
 );Roo.Toolbar.Spacer=function(A){var s=document.createElement("div");s.className="ytb-spacer";if(A){A.el=s;}Roo.Toolbar.Spacer.superclass.constructor.call(this,A||s);};Roo.extend(Roo.Toolbar.Spacer,Roo.Toolbar.Item,{enable:Roo.emptyFn,disable:Roo.emptyFn,focus:Roo.emptyFn}
 );Roo.Toolbar.Fill=Roo.extend(Roo.Toolbar.Spacer,{render:function(td){td.style.width='100%';Roo.Toolbar.Fill.superclass.render.call(this,td);}});Roo.Toolbar.TextItem=function(A){var B=A||"";if(typeof(A)=='object'){B=A.text||"";}else{A=null;}var s=document.createElement("span");
-s.className="ytb-text";s.innerHTML=B;if(A){A.el=s;}Roo.Toolbar.TextItem.superclass.constructor.call(this,A||s);};Roo.extend(Roo.Toolbar.TextItem,Roo.Toolbar.Item,{enable:Roo.emptyFn,disable:Roo.emptyFn,focus:Roo.emptyFn});Roo.Toolbar.Button=function(A){Roo.Toolbar.Button.superclass.constructor.call(this,null,A);
-};Roo.extend(Roo.Toolbar.Button,Roo.Button,{render:function(td){this.td=td;Roo.Toolbar.Button.superclass.render.call(this,td);},destroy:function(){Roo.Toolbar.Button.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;
-this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";},disable:function(){Roo.fly(this.td).addClass("x-item-disabled");this.disabled=true;},enable:function(){Roo.fly(this.td).removeClass("x-item-disabled");this.disabled=false;
-}});Roo.ToolbarButton=Roo.Toolbar.Button;Roo.Toolbar.SplitButton=function(A){Roo.Toolbar.SplitButton.superclass.constructor.call(this,null,A);};Roo.extend(Roo.Toolbar.SplitButton,Roo.SplitButton,{render:function(td){this.td=td;Roo.Toolbar.SplitButton.superclass.render.call(this,td);
-},destroy:function(){Roo.Toolbar.SplitButton.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";}});Roo.Toolbar.MenuButton=Roo.Toolbar.SplitButton;
-
+s.className="ytb-text";s.innerHTML=B;if(A){A.el=s;}Roo.Toolbar.TextItem.superclass.constructor.call(this,A||s);};Roo.extend(Roo.Toolbar.TextItem,Roo.Toolbar.Item,{enable:Roo.emptyFn,disable:Roo.emptyFn,focus:Roo.emptyFn,show:function(){this.hidden=false;this.el.style.display="";
+},hide:function(){this.hidden=true;this.el.style.display="none";}});Roo.Toolbar.Button=function(A){Roo.Toolbar.Button.superclass.constructor.call(this,null,A);};Roo.extend(Roo.Toolbar.Button,Roo.Button,{render:function(td){this.td=td;Roo.Toolbar.Button.superclass.render.call(this,td);
+},destroy:function(){Roo.Toolbar.Button.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";},disable:function(){Roo.fly(this.td).addClass("x-item-disabled");
+this.disabled=true;},enable:function(){Roo.fly(this.td).removeClass("x-item-disabled");this.disabled=false;}});Roo.ToolbarButton=Roo.Toolbar.Button;Roo.Toolbar.SplitButton=function(A){Roo.Toolbar.SplitButton.superclass.constructor.call(this,null,A);};Roo.extend(Roo.Toolbar.SplitButton,Roo.SplitButton,{render:function(td){this.td=td;
+Roo.Toolbar.SplitButton.superclass.render.call(this,td);},destroy:function(){Roo.Toolbar.SplitButton.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;
+this.td.style.display="none";}});Roo.Toolbar.MenuButton=Roo.Toolbar.SplitButton;
 // Roo/PagingToolbar.js
 Roo.PagingToolbar=function(el,ds,A){if(typeof(el)=='object'&&el.xtype){A=el;ds=el.dataSource;el=A.container;}var B=[];if(A.items){B=A.items;A.items=[];}Roo.PagingToolbar.superclass.constructor.call(this,el,null,A);this.ds=ds;this.cursor=0;this.renderButtons(this.el);
 this.bind(ds);Roo.each(B,function(e){this.add(Roo.factory(e));},this);};Roo.extend(Roo.PagingToolbar,Roo.Toolbar,{pageSize:20,displayMsg:'Displaying {0} - {1} of {2}',emptyMsg:'No data to display',beforePageText:"Page",afterPageText:"of {0}",firstText:"First Page",prevText:"Previous Page",nextText:"Next Page",lastText:"Last Page",refreshText:"Refresh",renderButtons:function(el){Roo.PagingToolbar.superclass.render.call(this,el);
@@ -1368,7 +1392,7 @@ E.dom.style.overflowY='auto'+(Roo.isIE?'':' !important');}else{E.dom.style.heigh
 Roo.log("[Roo.Messagebox] Show called while message displayed:");Roo.log("Old Dialog Message:"+F.innerHTML);Roo.log("New Dialog Message:"+Q.msg)}var d=this.getDialog();B=Q;d.setTitle(B.title||"&#160;");d.close.setDisplayed(B.closable!==false);K=G;B.prompt=B.prompt||(B.multiline?true:false);
 if(B.prompt){if(B.multiline){G.hide();H.show();H.setHeight(typeof B.multiline=="number"?B.multiline:this.defaultTextHeight);K=H;}else{G.show();H.hide();}}else{G.hide();H.hide();}I.setDisplayed(B.progress===true);this.updateProgress(0);K.dom.value=B.value||"";
 if(B.prompt){A.setDefaultButton(K);}else{var bs=B.buttons;var db=null;if(bs&&bs.ok){db=J["ok"];}else if(bs&&bs.yes){db=J["yes"];}A.setDefaultButton(db);}L=O(B.buttons);this.updateText(B.msg);if(B.cls){d.el.addClass(B.cls);}d.proxyDrag=B.proxyDrag===true;d.modal=B.modal!==false;
-d.mask=B.modal!==false?C:false;if(!d.isVisible()){document.body.appendChild(A.el.dom);d.animateTarget=null;d.show(Q.animEl);}return this;},progress:function(Q,R){this.show({title:Q,msg:R,buttons:false,progress:true,closable:false,minWidth:this.minProgressWidth,modal:true}
+d.mask=B.modal!==false?C:false;if(!d.isVisible()){document.body.appendChild(A.el.dom);d.animateTarget=null;d.show(Q.animEl);}A.toFront();return this;},progress:function(Q,R){this.show({title:Q,msg:R,buttons:false,progress:true,closable:false,minWidth:this.minProgressWidth,modal:true}
 );return this;},alert:function(Q,R,fn,S){this.show({title:Q,msg:R,buttons:this.OK,fn:fn,scope:S,modal:true});return this;},wait:function(Q,R){this.show({title:R,msg:Q,buttons:false,closable:false,progress:true,modal:true,width:300,wait:true});D=Roo.TaskMgr.start({run:function(i){Roo.MessageBox.updateProgress(((((i+20)%20)+1)*5)*.01);
 },interval:1000});return this;},confirm:function(Q,R,fn,S){this.show({title:Q,msg:R,buttons:this.YESNO,fn:fn,scope:S,modal:true});return this;},prompt:function(Q,R,fn,S,T){this.show({title:Q,msg:R,buttons:this.OKCANCEL,fn:fn,minWidth:250,scope:S,prompt:true,multiline:T,modal:true}
 );return this;},OK:{ok:true},YESNO:{yes:true,no:true},OKCANCEL:{ok:true,cancel:true},YESNOCANCEL:{yes:true,no:true,cancel:true},defaultTextHeight:75,maxWidth:600,minWidth:100,minProgressWidth:250,buttonText:{ok:"OK",cancel:"Cancel",yes:"Yes",no:"No"}};}();
@@ -1688,17 +1712,18 @@ return false;}if(B<this.minValue){this.markInvalid(String.format(this.minText,th
 if(v){this.setValue(v);}}});
 // Roo/form/DateField.js
 Roo.form.DateField=function(A){Roo.form.DateField.superclass.constructor.call(this,A);this.addEvents({'select':true});if(typeof this.minValue=="string"){this.minValue=this.parseDate(this.minValue);}if(typeof this.maxValue=="string"){this.maxValue=this.parseDate(this.maxValue);
-}this.ddMatch=null;if(this.disabledDates){var dd=this.disabledDates;var re="(?:";for(var i=0;i<dd.length;i++){re+=dd[i];if(i!=dd.length-1){re+="|";}}this.ddMatch=new RegExp(re+")");}};Roo.extend(Roo.form.DateField,Roo.form.TriggerField,{format:"m/d/y",altFormats:"m/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d",disabledDays:null,disabledDaysText:"Disabled",disabledDates:null,disabledDatesText:"Disabled",minValue:null,maxValue:null,minText:"The date in this field must be equal to or after {0}",maxText:"The date in this field must be equal to or before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerClass:'x-form-date-trigger',useIso:false,defaultAutoCreate:{tag:"input",type:"text",size:"10",autocomplete:"off"}
+}this.ddMatch=null;if(this.disabledDates){var dd=this.disabledDates;var re="(?:";for(var i=0;i<dd.length;i++){re+=dd[i];if(i!=dd.length-1){re+="|";}}this.ddMatch=new RegExp(re+")");}};Roo.extend(Roo.form.DateField,Roo.form.TriggerField,{format:"m/d/y",altFormats:"m/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d",disabledDays:null,disabledDaysText:"Disabled",disabledDates:null,disabledDatesText:"Disabled",zeroValue:'1800-01-01',minValue:null,maxValue:null,minText:"The date in this field must be equal to or after {0}",maxText:"The date in this field must be equal to or before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerClass:'x-form-date-trigger',useIso:false,defaultAutoCreate:{tag:"input",type:"text",size:"10",autocomplete:"off"}
 ,hiddenField:false,onRender:function(ct,A){Roo.form.DateField.superclass.onRender.call(this,ct,A);if(this.useIso){Roo.log("Changing name?");this.el.dom.setAttribute('name',this.name+'____hidden___');this.hiddenField=this.el.insertSibling({tag:'input',type:'hidden',name:this.name}
 ,'before',true);this.hiddenField.value=this.value?this.formatDate(this.value,'Y-m-d'):'';this.hiddenName=this.name;}},validateValue:function(A){A=this.formatDate(A);if(!Roo.form.DateField.superclass.validateValue.call(this,A)){Roo.log('super failed');return false;
 }if(A.length<1){return true;}var B=A;A=this.parseDate(A);if(!A){Roo.log('parse date failed'+B);this.markInvalid(String.format(this.invalidText,B,this.format));return false;}var C=A.getTime();if(this.minValue&&C<this.minValue.getTime()){this.markInvalid(String.format(this.minText,this.formatDate(this.minValue)));
 return false;}if(this.maxValue&&C>this.maxValue.getTime()){this.markInvalid(String.format(this.maxText,this.formatDate(this.maxValue)));return false;}if(this.disabledDays){var D=A.getDay();for(var i=0;i<this.disabledDays.length;i++){if(D===this.disabledDays[i]){this.markInvalid(this.disabledDaysText);
 return false;}}}var E=this.formatDate(A);if(this.ddMatch&&this.ddMatch.test(E)){this.markInvalid(String.format(this.disabledDatesText,E));return false;}return true;},validateBlur:function(){return !this.menu||!this.menu.isVisible();},getName:function(){if(!this.rendered){return ''}
 ;return !this.hiddenName&&this.el.dom.name?this.el.dom.name:(this.hiddenName||'');},getValue:function(){return this.hiddenField?this.hiddenField.value:this.parseDate(Roo.form.DateField.superclass.getValue.call(this))||"";},setValue:function(A){if(this.hiddenField){this.hiddenField.value=this.formatDate(this.parseDate(A),'Y-m-d');
-}Roo.form.DateField.superclass.setValue.call(this,this.formatDate(this.parseDate(A)));this.value=this.parseDate(A);},parseDate:function(A){if(!A||A instanceof Date){return A;}var v=Date.parseDate(A,this.format);if(!v&&this.useIso){v=Date.parseDate(A,'Y-m-d');
-}if(!v&&this.altFormats){if(!this.altFormatsArray){this.altFormatsArray=this.altFormats.split("|");}for(var i=0,B=this.altFormatsArray.length;i<B&&!v;i++){v=Date.parseDate(A,this.altFormatsArray[i]);}}return v;},formatDate:function(A,B){return (!A||!(A instanceof Date))?A:A.dateFormat(B||this.format);
-},menuListeners:{select:function(m,d){this.setValue(d);this.fireEvent('select',this,d);},show:function(){this.onFocus();},hide:function(){this.focus.defer(10,this);var ml=this.menuListeners;this.menu.un("select",ml.select,this);this.menu.un("show",ml.show,this);
-this.menu.un("hide",ml.hide,this);}},onTriggerClick:function(){if(this.disabled){return;}if(this.menu==null){this.menu=new Roo.menu.DateMenu();}Roo.apply(this.menu.picker,{showClear:this.allowBlank,minDate:this.minValue,maxDate:this.maxValue,disabledDatesRE:this.ddMatch,disabledDatesText:this.disabledDatesText,disabledDays:this.disabledDays,disabledDaysText:this.disabledDaysText,format:this.useIso?'Y-m-d':this.format,minText:String.format(this.minText,this.formatDate(this.minValue)),maxText:String.format(this.maxText,this.formatDate(this.maxValue))}
+}Roo.form.DateField.superclass.setValue.call(this,this.formatDate(this.parseDate(A)));this.value=this.parseDate(A);},parseDate:function(A){if(A instanceof Date){if(A<Date.parseDate(this.zeroValue,'Y-m-d')){return '';}return A;}if(!A||A instanceof Date){return A;
+}var v=Date.parseDate(A,this.format);if(!v&&this.useIso){v=Date.parseDate(A,'Y-m-d');}if(!v&&this.altFormats){if(!this.altFormatsArray){this.altFormatsArray=this.altFormats.split("|");}for(var i=0,B=this.altFormatsArray.length;i<B&&!v;i++){v=Date.parseDate(A,this.altFormatsArray[i]);
+}}if(v<Date.parseDate(this.zeroValue,'Y-m-d')){v='';}return v;},formatDate:function(A,B){return (!A||!(A instanceof Date))?A:A.dateFormat(B||this.format);},menuListeners:{select:function(m,d){this.setValue(d);this.fireEvent('select',this,d);},show:function(){this.onFocus();
+},hide:function(){this.focus.defer(10,this);var ml=this.menuListeners;this.menu.un("select",ml.select,this);this.menu.un("show",ml.show,this);this.menu.un("hide",ml.hide,this);}},onTriggerClick:function(){if(this.disabled){return;}if(this.menu==null){this.menu=new Roo.menu.DateMenu();
+}Roo.apply(this.menu.picker,{showClear:this.allowBlank,minDate:this.minValue,maxDate:this.maxValue,disabledDatesRE:this.ddMatch,disabledDatesText:this.disabledDatesText,disabledDays:this.disabledDays,disabledDaysText:this.disabledDaysText,format:this.useIso?'Y-m-d':this.format,minText:String.format(this.minText,this.formatDate(this.minValue)),maxText:String.format(this.maxText,this.formatDate(this.maxValue))}
 );this.menu.on(Roo.apply({},this.menuListeners,{scope:this}));this.menu.picker.setValue(this.getValue()||new Date());this.menu.show(this.el,"tl-bl?");},beforeBlur:function(){var v=this.parseDate(this.getRawValue());if(v){this.setValue(v);}},isDirty:function(){if(this.disabled){return false;
 }if(typeof(this.startValue)==='undefined'){return false;}return String(this.getValue())!==String(this.startValue);},cleanLeadingSpace:function(e){return;}});
 // Roo/form/MonthField.js
@@ -1825,98 +1850,295 @@ this.el.on('DOMAttrModified',this.setFromHidden,this);this.el.on('propertychange
 Roo.form.Radio=function(){Roo.form.Radio.superclass.constructor.apply(this,arguments);};Roo.extend(Roo.form.Radio,Roo.form.Checkbox,{inputType:'radio',getGroupValue:function(){return this.el.up('form').child('input[name='+this.el.dom.name+']:checked',true).value;
 },onRender:function(ct,A){Roo.form.Checkbox.superclass.onRender.call(this,ct,A);if(this.inputValue!==undefined){this.el.dom.value=this.inputValue;}this.wrap=this.el.wrap({cls:"x-form-check-wrap"});if(this.boxLabel){this.wrap.createChild({tag:'label',htmlFor:this.el.id,cls:'x-form-cb-label',html:this.boxLabel}
 );}if(this.checked){this.el.dom.checked='checked';}}});
+// Roo/rtf/namespace.js
+Roo.rtf={};
+// Roo/rtf/Hex.js
+Roo.rtf.Hex=function(A){this.hexstr=A;};
+// Roo/rtf/Paragraph.js
+Roo.rtf.Paragraph=function(A){this.content=[];};
+// Roo/rtf/Span.js
+Roo.rtf.Span=function(A){this.value=A.value;};
+// Roo/rtf/Group.js
+Roo.rtf.Group=function(A){this.content=[];this.cn=[];};Roo.rtf.Group.prototype={ignorable:false,content:false,cn:false,addContent:function(A){this.content.push(A);},addChild:function(cn){this.cn.push(cn);},toDataURL:function(){var A=false;switch(true){case this.content.filter(function(a){return a.value=='pngblip'}
+).length>0:A="image/png";break;case this.content.filter(function(a){return a.value=='jpegblip'}).length>0:A="image/jpeg";break;default:return 'about:blank';}var B=this.content[this.content.length-1].value;return 'data:'+A+';base64,'+btoa(B.match(/\w{2}/g).map(function(a){return String.fromCharCode(parseInt(a,16));
+}).join(""));}};
+// Roo/rtf/Document.js
+Roo.rtf.Document=function(){this.rtlch=[];this.content=[];this.cn=[];};Roo.extend(Roo.rtf.Document,Roo.rtf.Group,{addChild:function(cn){this.cn.push(cn);switch(cn.type){case 'rtlch':case 'listtext':case 'shpinst':this.rtlch.push(cn);return;default:this[cn.type]=cn;
+}},getElementsByType:function(A){var B=[];this._getElementsByType(A,B,this.cn,'rtf');return B;},_getElementsByType:function(A,B,C,D){C.forEach(function(n,i){if(n.type==A){n.path=D+'/'+n.type+':'+i;B.push(n);}if(n.cn.length>0){this._getElementsByType(A,B,n.cn,D+'/'+n.type+':'+i);
+}},this);}});
+// Roo/rtf/Ctrl.js
+Roo.rtf.Ctrl=function(A){this.value=A.value;this.param=A.param;};
+// Roo/rtf/Parser.js
+Roo.rtf.Parser=function(A){this.text='';this.parserState=this.parseText;this.doc={};this.groupStack=[];this.hexStore=[];this.doc=false;this.groups=[];for(var ii=0;ii<A.length;++ii){++this.cpos;if(A[ii]==='\n'){++this.row;this.col=1;}else{++this.col;}this.parserState(A[ii]);
+}};Roo.rtf.Parser.prototype={text:'',controlWord:'',controlWordParam:'',hexChar:'',doc:false,group:false,groupStack:false,hexStore:false,cpos:0,row:1,col:1,push:function(el){var m='cmd'+el.type;if(typeof(this[m])=='undefined'){Roo.log('invalid cmd:'+el.type);
+return;}this[m](el);},flushHexStore:function(){if(this.hexStore.length<1){return;}var A=this.hexStore.map(function(B){return B.value;}).join('');this.group.addContent(new Roo.rtf.Hex(A));this.hexStore.splice(0)},cmdgroupstart:function(){this.flushHexStore();
+if(this.group){this.groupStack.push(this.group);}if(this.doc===false){this.group=this.doc=new Roo.rtf.Document();return;}this.group=new Roo.rtf.Group(this.group);},cmdignorable:function(){this.flushHexStore();this.group.ignorable=true;},cmdendparagraph:function(){this.flushHexStore();
+this.group.addContent(new Roo.rtf.Paragraph());},cmdgroupend:function(){this.flushHexStore();var A=this.group;this.group=this.groupStack.pop();if(this.group){this.group.addChild(A);}var B=this.group||this.doc;if(A.ignorable===false){this.groups.push(A);}}
+,cmdtext:function(A){this.flushHexStore();if(!this.group){}this.group.addContent(new Roo.rtf.Span(A));},cmdcontrolword:function(A){this.flushHexStore();if(!this.group.type){this.group.type=A.value;return;}this.group.addContent(new Roo.rtf.Ctrl(A));return;
+},cmdhexchar:function(A){this.hexStore.push(A);},cmderror:function(A){throw new Exception(A.value);},parseText:function(c){if(c==='\\'){this.parserState=this.parseEscapes;}else if(c==='{'){this.emitStartGroup();}else if(c==='}'){this.emitEndGroup();}else if(c==='\x0A'||c==='\x0D'){}
+else{this.text+=c;}},parseEscapes:function(c){if(c==='\\'||c==='{'||c==='}'){this.text+=c;this.parserState=this.parseText;}else{this.parserState=this.parseControlSymbol;this.parseControlSymbol(c);}},parseControlSymbol:function(c){if(c==='~'){this.text+='\u00a0';
+this.parserState=this.parseText}else if(c==='-'){this.text+='\u00ad';}else if(c==='_'){this.text+='\u2011';}else if(c==='*'){this.emitIgnorable();this.parserState=this.parseText;}else if(c==="'"){this.parserState=this.parseHexChar;}else if(c==='|'){this.emitFormula();
+this.parserState=this.parseText;}else if(c===':'){this.emitIndexSubEntry();this.parserState=this.parseText;}else if(c==='\x0a'){this.emitEndParagraph();this.parserState=this.parseText;}else if(c==='\x0d'){this.emitEndParagraph();this.parserState=this.parseText;
+}else{this.parserState=this.parseControlWord;this.parseControlWord(c);}},parseHexChar:function(c){if(/^[A-Fa-f0-9]$/.test(c)){this.hexChar+=c;if(this.hexChar.length>=2){this.emitHexChar();this.parserState=this.parseText;}return;}this.emitError("Invalid character \""+c+"\" in hex literal.");
+this.parserState=this.parseText;},parseControlWord:function(c){if(c===' '){this.emitControlWord();this.parserState=this.parseText;}else if(/^[-\d]$/.test(c)){this.parserState=this.parseControlWordParam;this.controlWordParam+=c;}else if(/^[A-Za-z]$/.test(c)){this.controlWord+=c;
+}else{this.emitControlWord();this.parserState=this.parseText;this.parseText(c);}},parseControlWordParam:function(c){if(/^\d$/.test(c)){this.controlWordParam+=c;}else if(c===' '){this.emitControlWord();this.parserState=this.parseText;}else{this.emitControlWord();
+this.parserState=this.parseText;this.parseText(c);}},emitText:function(){if(this.text===''){return;}this.push({type:'text',value:this.text,pos:this.cpos,row:this.row,col:this.col});this.text=''},emitControlWord:function(){this.emitText();if(this.controlWord===''){this.emitError('empty control word');
+}else{this.push({type:'controlword',value:this.controlWord,param:this.controlWordParam!==''&&Number(this.controlWordParam),pos:this.cpos,row:this.row,col:this.col});}this.controlWord='';this.controlWordParam='';},emitStartGroup:function(){this.emitText();
+this.push({type:'groupstart',pos:this.cpos,row:this.row,col:this.col});},emitEndGroup:function(){this.emitText();this.push({type:'groupend',pos:this.cpos,row:this.row,col:this.col});},emitIgnorable:function(){this.emitText();this.push({type:'ignorable',pos:this.cpos,row:this.row,col:this.col}
+);},emitHexChar:function(){this.emitText();this.push({type:'hexchar',value:this.hexChar,pos:this.cpos,row:this.row,col:this.col});this.hexChar=''},emitError:function(A){this.emitText();this.push({type:'error',value:A,row:this.row,col:this.col,char:this.cpos}
+);},emitEndParagraph:function(){this.emitText();this.push({type:'endparagraph',pos:this.cpos,row:this.row,col:this.col});}};
+// Roo/htmleditor/namespace.js
+Roo.htmleditor={};
+// Roo/htmleditor/Filter.js
+Roo.htmleditor.Filter=function(A){Roo.apply(this.cfg);};Roo.htmleditor.Filter.prototype={node:false,tag:false,replaceComment:false,replaceTag:false,walk:function(A){Roo.each(Array.from(A.childNodes),function(e){switch(true){case e.nodeType==8&&this.replaceComment!==false:this.replaceComment(e);
+return;case e.nodeType!=1:return;case this.tag===true:case typeof(this.tag)=='object'&&this.tag.indexOf(e.tagName)>-1:case typeof(this.tag)=='string'&&this.tag==e.tagName:if(this.replaceTag&&false===this.replaceTag(e)){return;}if(e.hasChildNodes()){this.walk(e);
+}return;default:if(e.hasChildNodes()){this.walk(e);}}},this);}};
+// Roo/htmleditor/FilterAttributes.js
+Roo.htmleditor.FilterAttributes=function(A){Roo.apply(this,A);this.attrib_black=this.attrib_black||[];this.attrib_white=this.attrib_white||[];this.attrib_clean=this.attrib_clean||[];this.style_white=this.style_white||[];this.style_black=this.style_black||[];
+this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterAttributes,Roo.htmleditor.Filter,{tag:true,attrib_black:false,attrib_clean:false,attrib_white:false,style_white:false,style_black:false,replaceTag:function(A){if(!A.attributes||!A.attributes.length){return true;
+}for(var i=A.attributes.length-1;i>-1;i--){var a=A.attributes[i];if(this.attrib_white.length&&this.attrib_white.indexOf(a.name.toLowerCase())<0){A.removeAttribute(a.name);continue;}if(a.name.toLowerCase().substr(0,2)=='on'){A.removeAttribute(a.name);continue;
+}if(this.attrib_black.indexOf(a.name.toLowerCase())>-1){A.removeAttribute(a.name);continue;}if(this.attrib_clean.indexOf(a.name.toLowerCase())>-1){this.cleanAttr(A,a.name,a.value);continue;}if(a.name=='style'){this.cleanStyle(A,a.name,a.value);continue;}if(a.name=='class'){if(a.value.match(/^Mso/)){A.removeAttribute('class');
+}if(a.value.match(/^body$/)){A.removeAttribute('class');}continue;}}return true;},cleanAttr:function(A,n,v){if(v.match(/^\./)||v.match(/^\//)){return;}if(v.match(/^(http|https):\/\//)||v.match(/^mailto:/)||v.match(/^ftp:/)||v.match(/^data:/)){return;}if(v.match(/^#/)){return;
+}if(v.match(/^\{/)){return;}A.removeAttribute(n);},cleanStyle:function(A,n,v){if(v.match(/expression/)){A.removeAttribute(n);return;}var B=v.split(/;/);var C=[];Roo.each(B,function(p){p=p.replace(/^\s+/g,'').replace(/\s+$/g,'');if(!p.length){return true;}
+var l=p.split(':').shift().replace(/\s+/g,'');l=l.replace(/^\s+/g,'').replace(/\s+$/g,'');if(this.style_black.length&&(this.style_black.indexOf(l)>-1||this.style_black.indexOf(l.toLowerCase())>-1)){return true;}if(this.style_white.length&&style_white.indexOf(l)<0&&style_white.indexOf(l.toLowerCase())<0){return true;
+}C.push(p);return true;},this);if(C.length){A.setAttribute(n,C.join(';'));}else{A.removeAttribute(n);}}});
+// Roo/htmleditor/FilterBlack.js
+Roo.htmleditor.FilterBlack=function(A){Roo.apply(this,A);this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterBlack,Roo.htmleditor.Filter,{tag:true,replaceTag:function(n){n.parentNode.removeChild(n);}});
+// Roo/htmleditor/FilterComment.js
+Roo.htmleditor.FilterComment=function(A){this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterComment,Roo.htmleditor.Filter,{replaceComment:function(n){n.parentNode.removeChild(n);}});
+// Roo/htmleditor/FilterKeepChildren.js
+Roo.htmleditor.FilterKeepChildren=function(A){Roo.apply(this,A);if(this.tag===false){return;}this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterKeepChildren,Roo.htmleditor.FilterBlack,{replaceTag:function(A){var ar=Array.from(A.childNodes);for(var i=0;i<ar.length;
+i++){if(ar[i].nodeType==1){if((typeof(this.tag)=='object'&&this.tag.indexOf(ar[i].tagName)>-1)||(typeof(this.tag)=='string'&&this.tag==ar[i].tagName)){this.replaceTag(ar[i]);continue;}}}ar=Array.from(A.childNodes);for(var i=0;i<ar.length;i++){A.removeChild(ar[i]);
+A.parentNode.insertBefore(ar[i],A);if(this.tag!==false){this.walk(ar[i]);}}A.parentNode.removeChild(A);return false;}});
+// Roo/htmleditor/FilterParagraph.js
+Roo.htmleditor.FilterParagraph=function(A){this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterParagraph,Roo.htmleditor.Filter,{tag:'P',replaceTag:function(A){if(A.childNodes.length==1&&A.childNodes[0].nodeType==3&&A.childNodes[0].textContent.trim().length<1){A.parentNode.replaceChild(A.ownerDocument.createElement('BR'),A);
+return false;}var ar=Array.from(A.childNodes);for(var i=0;i<ar.length;i++){A.removeChild(ar[i]);A.parentNode.insertBefore(ar[i],A);}A.parentNode.insertBefore(A.ownerDocument.createElement('BR'),A);A.parentNode.insertBefore(A.ownerDocument.createElement('BR'),A);
+A.parentNode.removeChild(A);return false;}});
+// Roo/htmleditor/FilterSpan.js
+Roo.htmleditor.FilterSpan=function(A){this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterSpan,Roo.htmleditor.FilterKeepChildren,{tag:'SPAN',replaceTag:function(A){if(A.attributes&&A.attributes.length>0){return true;}Roo.htmleditor.FilterKeepChildren.prototype.replaceTag.call(this,A);
+return false;}});
+// Roo/htmleditor/FilterTableWidth.js
+Roo.htmleditor.FilterTableWidth=function(A){this.tag=['TABLE','TD','TR','TH','THEAD','TBODY'];this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterTableWidth,Roo.htmleditor.Filter,{replaceTag:function(A){if(A.hasAttribute('width')){A.removeAttribute('width');
+}if(A.hasAttribute("style")){var B=A.getAttribute("style").split(";");var C=[];Roo.each(B,function(s){if(!s.match(/:/)){return;}var kv=s.split(":");if(kv[0].match(/^\s*(width|min-width)\s*$/)){return;}C.push(s);});A.setAttribute("style",C.length?C.join(';'):'');
+if(!C.length){A.removeAttribute('style');}}return true;}});
+// Roo/htmleditor/FilterWord.js
+Roo.htmleditor.FilterWord=function(A){this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterWord,Roo.htmleditor.Filter,{tag:true,replaceTag:function(A){if(A.nodeName=='SPAN'&&!A.hasAttributes()&&A.childNodes.length==1&&A.firstChild.nodeName=="#text"){var B=A.firstChild;
+A.removeChild(B);if(A.getAttribute('lang')!='zh-CN'){A.parentNode.insertBefore(A.ownerDocument.createTextNode(" "),A);}A.parentNode.insertBefore(B,A);if(A.getAttribute('lang')!='zh-CN'){A.parentNode.insertBefore(A.ownerDocument.createTextNode(" "),A);}A.parentNode.removeChild(A);
+return false;}if(A.tagName.toLowerCase().match(/^(style|script|applet|embed|noframes|noscript)$/)){A.parentNode.removeChild(A);return false;}if(A.tagName.toLowerCase().match(/^(meta|link|\\?xml:|st1:|o:|v:|font)/)){while(A.childNodes.length){var cn=A.childNodes[0];
+A.removeChild(cn);A.parentNode.insertBefore(cn,A);this.replaceTag(cn);}A.parentNode.removeChild(A);return false;}if(A.className.length){var cn=A.className.split(/\W+/);var C=[];Roo.each(cn,function(F){if(F.match(/Mso[a-zA-Z]+/)){return;}C.push(F);});A.className=C.length?C.join(' '):'';
+if(!C.length){A.removeAttribute("class");}}if(A.hasAttribute("lang")){A.removeAttribute("lang");}if(A.hasAttribute("style")){var D=A.getAttribute("style").split(";");var E=[];Roo.each(D,function(s){if(!s.match(/:/)){return;}var kv=s.split(":");if(kv[0].match(/^(mso-|line|font|background|margin|padding|color)/)){return;
+}E.push(s);});A.setAttribute("style",E.length?E.join(';'):'');if(!E.length){A.removeAttribute('style');}}return true;}});
+// Roo/htmleditor/FilterStyleToTag.js
+Roo.htmleditor.FilterStyleToTag=function(A){this.tags={B:['fontWeight','bold'],I:['fontStyle','italic'],SUP:['verticalAlign','super'],SUB:['verticalAlign','sub']};Roo.apply(this,A);this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterStyleToTag,Roo.htmleditor.Filter,{tag:true,tags:false,replaceTag:function(A){if(A.getAttribute("style")===null){return true;
+}var B=[];for(var k in this.tags){if(A.style[this.tags[k][0]]==this.tags[k][1]){B.push(k);A.style.removeProperty(this.tags[k][0]);}}if(!B.length){return true;}var cn=Array.from(A.childNodes);var nn=A;Roo.each(B,function(t){var nc=A.ownerDocument.createElement(t);
+nn.appendChild(nc);nn=nc;});for(var i=0;i<cn.length;cn++){A.removeChild(cn[i]);nn.appendChild(cn[i]);}return true}})
+// Roo/htmleditor/FilterLongBr.js
+Roo.htmleditor.FilterLongBr=function(A){this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterLongBr,Roo.htmleditor.Filter,{tag:'BR',replaceTag:function(A){var ps=A.nextSibling;while(ps&&ps.nodeType==3&&ps.nodeValue.trim().length<1){ps=ps.nextSibling;}if(!ps&&['TD','TH','LI','H1','H2','H3','H4','H5','H6'].indexOf(A.parentNode.tagName)>-1){A.parentNode.removeChild(A);
+return false;}if(!ps||ps.nodeType!=1){return false;}if(!ps||ps.tagName!='BR'){return false;}if(!A.previousSibling){return false;}var ps=A.previousSibling;while(ps&&ps.nodeType==3&&ps.nodeValue.trim().length<1){ps=ps.previousSibling;}if(!ps||ps.nodeType!=1){return false;
+}if(!ps||['BR','H1','H2','H3','H4','H5','H6'].indexOf(ps.tagName)<0){return false;}A.parentNode.removeChild(A);return false;}});
+// Roo/htmleditor/FilterBlock.js
+Roo.htmleditor.FilterBlock=function(A){Roo.apply(this,A);var qa=A.node.querySelectorAll;this.removeAttributes('data-block');this.removeAttributes('contenteditable');this.removeAttributes('id');};Roo.apply(Roo.htmleditor.FilterBlock.prototype,{node:true,removeAttributes:function(A){var ar=this.node.querySelectorAll('*['+A+']');
+for(var i=0;i<ar.length;i++){ar[i].removeAttribute(A);}}});
+// Roo/htmleditor/TidySerializer.js
+Roo.htmleditor.TidySerializer=function(A){Roo.apply(this,A);this.writer=new Roo.htmleditor.TidyWriter(A);};Roo.htmleditor.TidySerializer.prototype={inner:false,writer:false,serialize:function(A){var B=this.writer;var C=this;this.handlers={3:function(D){B.text(D.nodeValue,D);
+},8:function(D){B.comment(D.nodeValue);},7:function(D){B.pi(D.name,D.nodeValue);},10:function(D){B.doctype(D.nodeValue);},4:function(D){B.cdata(D.nodeValue);},11:function(D){D=D.firstChild;if(!D){return;}while(D){C.walk(D);D=D.nextSibling}}};B.reset();1!=A.nodeType||this.inner?this.handlers[11](A):this.walk(A);
+return B.getContent();},walk:function(A){var B,C,D,i,l,E,F=this.handlers[A.nodeType];if(F){F(A);return;}var G=A.nodeName;var H=A.childNodes.length<1;var I=this.writer;var J=A.attributes;I.start(A.nodeName,J,H,A);if(H){return;}A=A.firstChild;if(!A){I.end(G);
+return;}while(A){this.walk(A);A=A.nextSibling;}I.end(G);}};
+// Roo/htmleditor/TidyWriter.js
+Roo.htmleditor.TidyWriter=function(A){Roo.apply(this,A);this.html=[];this.state=[];this.encode=Roo.htmleditor.TidyEntities.getEncodeFunc(A.entity_encoding||'raw',A.entities);};Roo.htmleditor.TidyWriter.prototype={state:false,indent:'  ',indentstr:'',in_pre:false,in_inline:false,last_inline:false,encode:false,start:function(A,B,C,D){var i,l,E,F;
+var G=this.in_inline||Roo.htmleditor.TidyWriter.inline_elements.indexOf(A)>-1;var H=this.in_pre||Roo.htmleditor.TidyWriter.whitespace_elements.indexOf(A)>-1;var I=C?Roo.htmleditor.TidyWriter.shortend_elements.indexOf(A)>-1:false;var J=A=='BR'?false:G;if(!J&&!this.in_pre&&this.lastElementEndsWS()){i_inline=false;
+}var K=this.indentstr;if(!this.in_pre){if(G){if(A=='BR'){this.addLine();}else if(this.lastElementEndsWS()){this.addLine();}else{K='';}}else{this.addLine();}}else{K='';}this.html.push(K+'<',A.toLowerCase());if(B){for(i=0,l=B.length;i<l;i++){E=B[i];this.html.push(' ',E.name,'="',this.encode(E.value,true),'"');
+}}if(C){if(I){this.html[this.html.length]='/>';}else{this.html[this.html.length]='></'+A.toLowerCase()+'>';}var L=A=='BR'?false:this.in_inline;if(!L&&!this.in_pre){this.addLine();}return;}this.html[this.html.length]='>';this.pushState({indentstr:H?'':(this.indentstr+this.indent),in_pre:H,in_inline:G}
+);if(!G&&!H){this.addLine();}},lastElementEndsWS:function(){var A=this.html.length>0?this.html[this.html.length-1]:false;if(A===false){return true;}return A.match(/\s+$/);},end:function(A){var B;this.popState();var C='';var D=this.in_inline||Roo.htmleditor.TidyWriter.inline_elements.indexOf(A)>-1;
+if(!this.in_pre&&!D){this.addLine();C=this.indentstr;}this.html.push(C+'</',A.toLowerCase(),'>');this.last_inline=D;},text:function(A,B){if(A.length<1){return;}if(this.in_pre){this.html[this.html.length]=A;return;}if(this.in_inline){A=A.replace(/\s+/g,' ');
+if(A!=' '){A=A.replace(/\s+/,' ');if(B.nextSibling&&B.nextSibling.nodeType==1&&B.nextSibling.nodeName=='BR'){A=A.replace(/\s+$/g,'');}if(B.previousSibling&&B.previousSibling.nodeType==1&&B.previousSibling.nodeName=='BR'){A=this.indentstr+A.replace(/^\s+/g,'');
+}if(A.match(/\n/)){A=A.replace(/(?![^\n]{1,64}$)([^\n]{1,64})\s/g,'$1\n'+this.indentstr);A=A.replace(/\n\s+$/,'');}}this.html[this.html.length]=A;return;}var C=this.indentstr;A=A.replace(/\s+/g," ");if(B.previousSibling&&B.previousSibling.nodeType==1&&Roo.htmleditor.TidyWriter.inline_elements.indexOf(B.previousSibling.nodeName)>-1){C='';
+}else{this.addLine();A=A.replace(/^\s+/,'');}if(B.nextSibling&&B.nextSibling.nodeType==1&&Roo.htmleditor.TidyWriter.inline_elements.indexOf(B.nextSibling.nodeName)>-1){}else{A=A.replace(/\s+$/,'');}if(A.length<1){return;}if(!A.match(/\n/)){this.html.push(C+A);
+return;}A=this.indentstr+A.replace(/(?![^\n]{1,64}$)([^\n]{1,64})\s/g,'$1\n'+this.indentstr);A=A.replace(/\s+$/,'');this.html.push(A);},cdata:function(A){this.html.push('<![CDATA[',A,']]>');},comment:function(A){this.html.push('<!--',A,'-->');},pi:function(A,B){B?this.html.push('<?',A,' ',this.encode(B),'?>'):this.html.push('<?',A,'?>');
+this.indent!=''&&this.html.push('\n');},doctype:function(A){this.html.push('<!DOCTYPE',A,'>',this.indent!=''?'\n':'');},reset:function(){this.html.length=0;this.state=[];this.pushState({indentstr:'',in_pre:false,in_inline:false})},getContent:function(){return this.html.join('').replace(/\n$/,'');
+},pushState:function(A){this.state.push(A);Roo.apply(this,A);},popState:function(){if(this.state.length<1){return;}var A={in_pre:false,indentstr:''};this.state.pop();if(this.state.length>0){A=this.state[this.state.length-1];}Roo.apply(this,A);},addLine:function(){if(this.html.length<1){return;
+}var A=this.html[this.html.length-1];if(A.length>0&&'\n'!==A){this.html.push('\n');}}};Roo.htmleditor.TidyWriter.inline_elements=['SPAN','STRONG','B','EM','I','FONT','STRIKE','U','VAR','CITE','DFN','CODE','MARK','Q','SUP','SUB','SAMP','A'];Roo.htmleditor.TidyWriter.shortend_elements=['AREA','BASE','BASEFONT','BR','COL','FRAME','HR','IMG','INPUT','ISINDEX','LINK','','META','PARAM','EMBED','SOURCE','WBR','TRACK'];
+Roo.htmleditor.TidyWriter.whitespace_elements=['PRE','SCRIPT','NOSCRIPT','STYLE','TEXTAREA','VIDEO','AUDIO','IFRAME','OBJECT','CODE'];
+// Roo/htmleditor/TidyEntities.js
+Roo.htmleditor.TidyEntities={init:function(){this.namedEntities=this.buildEntitiesLookup(this.namedEntitiesData,32);},buildEntitiesLookup:function(A,B){var i,C,D,E={};if(!A){return {};}A=typeof(A)=='string'?A.split(','):A;B=B||10;for(i=0;i<A.length;i+=2){C=String.fromCharCode(parseInt(A[i],B));
+if(!this.baseEntities[C]){D='&'+A[i+1]+';';E[C]=D;E[D]=C;}}return E;},asciiMap:{128:'€',130:'‚',131:'ƒ',132:'„',133:'…',134:'†',135:'‡',136:'ˆ',137:'‰',138:'Š',139:'‹',140:'Œ',142:'Ž',145:'‘',146:'’',147:'“',148:'”',149:'•',150:'–',151:'—',152:'˜',153:'™',154:'š',155:'›',156:'œ',158:'ž',159:'Ÿ'}
+,baseEntities:{'"':'&quot;','\'':'&#39;','<':'&lt;','>':'&gt;','&':'&amp;','`':'&#96;'},reverseEntities:{'&lt;':'<','&gt;':'>','&amp;':'&','&quot;':'"','&apos;':'\''},attrsCharsRegExp:/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,textCharsRegExp:/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,rawCharsRegExp:/[<>&\"\']/g,entityRegExp:/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,namedEntities:false,namedEntitiesData:['50','nbsp','51','iexcl','52','cent','53','pound','54','curren','55','yen','56','brvbar','57','sect','58','uml','59','copy','5a','ordf','5b','laquo','5c','not','5d','shy','5e','reg','5f','macr','5g','deg','5h','plusmn','5i','sup2','5j','sup3','5k','acute','5l','micro','5m','para','5n','middot','5o','cedil','5p','sup1','5q','ordm','5r','raquo','5s','frac14','5t','frac12','5u','frac34','5v','iquest','60','Agrave','61','Aacute','62','Acirc','63','Atilde','64','Auml','65','Aring','66','AElig','67','Ccedil','68','Egrave','69','Eacute','6a','Ecirc','6b','Euml','6c','Igrave','6d','Iacute','6e','Icirc','6f','Iuml','6g','ETH','6h','Ntilde','6i','Ograve','6j','Oacute','6k','Ocirc','6l','Otilde','6m','Ouml','6n','times','6o','Oslash','6p','Ugrave','6q','Uacute','6r','Ucirc','6s','Uuml','6t','Yacute','6u','THORN','6v','szlig','70','agrave','71','aacute','72','acirc','73','atilde','74','auml','75','aring','76','aelig','77','ccedil','78','egrave','79','eacute','7a','ecirc','7b','euml','7c','igrave','7d','iacute','7e','icirc','7f','iuml','7g','eth','7h','ntilde','7i','ograve','7j','oacute','7k','ocirc','7l','otilde','7m','ouml','7n','divide','7o','oslash','7p','ugrave','7q','uacute','7r','ucirc','7s','uuml','7t','yacute','7u','thorn','7v','yuml','ci','fnof','sh','Alpha','si','Beta','sj','Gamma','sk','Delta','sl','Epsilon','sm','Zeta','sn','Eta','so','Theta','sp','Iota','sq','Kappa','sr','Lambda','ss','Mu','st','Nu','su','Xi','sv','Omicron','t0','Pi','t1','Rho','t3','Sigma','t4','Tau','t5','Upsilon','t6','Phi','t7','Chi','t8','Psi','t9','Omega','th','alpha','ti','beta','tj','gamma','tk','delta','tl','epsilon','tm','zeta','tn','eta','to','theta','tp','iota','tq','kappa','tr','lambda','ts','mu','tt','nu','tu','xi','tv','omicron','u0','pi','u1','rho','u2','sigmaf','u3','sigma','u4','tau','u5','upsilon','u6','phi','u7','chi','u8','psi','u9','omega','uh','thetasym','ui','upsih','um','piv','812','bull','816','hellip','81i','prime','81j','Prime','81u','oline','824','frasl','88o','weierp','88h','image','88s','real','892','trade','89l','alefsym','8cg','larr','8ch','uarr','8ci','rarr','8cj','darr','8ck','harr','8dl','crarr','8eg','lArr','8eh','uArr','8ei','rArr','8ej','dArr','8ek','hArr','8g0','forall','8g2','part','8g3','exist','8g5','empty','8g7','nabla','8g8','isin','8g9','notin','8gb','ni','8gf','prod','8gh','sum','8gi','minus','8gn','lowast','8gq','radic','8gt','prop','8gu','infin','8h0','ang','8h7','and','8h8','or','8h9','cap','8ha','cup','8hb','int','8hk','there4','8hs','sim','8i5','cong','8i8','asymp','8j0','ne','8j1','equiv','8j4','le','8j5','ge','8k2','sub','8k3','sup','8k4','nsub','8k6','sube','8k7','supe','8kl','oplus','8kn','otimes','8l5','perp','8m5','sdot','8o8','lceil','8o9','rceil','8oa','lfloor','8ob','rfloor','8p9','lang','8pa','rang','9ea','loz','9j0','spades','9j3','clubs','9j5','hearts','9j6','diams','ai','OElig','aj','oelig','b0','Scaron','b1','scaron','bo','Yuml','m6','circ','ms','tilde','802','ensp','803','emsp','809','thinsp','80c','zwnj','80d','zwj','80e','lrm','80f','rlm','80j','ndash','80k','mdash','80o','lsquo','80p','rsquo','80q','sbquo','80s','ldquo','80t','rdquo','80u','bdquo','810','dagger','811','Dagger','81g','permil','81p','lsaquo','81q','rsaquo','85c','euro'],encodeRaw:function(A,B){var t=this;
+return A.replace(B?this.attrsCharsRegExp:this.textCharsRegExp,function(C){return t.baseEntities[C]||C;});},encodeAllRaw:function(A){var t=this;return (''+A).replace(this.rawCharsRegExp,function(B){return t.baseEntities[B]||B;});},encodeNumeric:function(A,B){var t=this;
+return A.replace(B?this.attrsCharsRegExp:this.textCharsRegExp,function(C){if(C.length>1){return '&#'+(1024*(C.charCodeAt(0)-55296)+(C.charCodeAt(1)-56320)+65536)+';';}return t.baseEntities[C]||'&#'+C.charCodeAt(0)+';';});},encodeNamed:function(A,B,C){var t=this;
+C=C||this.namedEntities;return A.replace(B?this.attrsCharsRegExp:this.textCharsRegExp,function(D){return t.baseEntities[D]||C[D]||D;});},getEncodeFunc:function(A,B){B=this.buildEntitiesLookup(B)||this.namedEntities;var t=this;function encodeNamedAndNumeric(C,D){return C.replace(D?t.attrsCharsRegExp:t.textCharsRegExp,function(E){return t.baseEntities[E]||B[E]||'&#'+E.charCodeAt(0)+';'||E;
+});}function encodeCustomNamed(C,D){return t.encodeNamed(C,D,B);}A=this.makeMap(A.replace(/\+/g,','));if(A.named&&A.numeric){return this.encodeNamedAndNumeric;}if(A.named){if(B){return encodeCustomNamed;}return this.encodeNamed;}if(A.numeric){return this.encodeNumeric;
+}return this.encodeRaw;},decode:function(A){var t=this;return A.replace(this.entityRegExp,function(B,C){if(C){C='x'===C.charAt(0).toLowerCase()?parseInt(C.substr(1),16):parseInt(C,10);if(C>65535){C-=65536;return String.fromCharCode(55296+(C>>10),56320+(1023&C));
+}return t.asciiMap[C]||String.fromCharCode(C);}return t.reverseEntities[B]||t.namedEntities[B]||t.nativeDecode(B);});},nativeDecode:function(A){return A;},makeMap:function(A,B,C){var i;A=A||[];B=B||',';if(typeof A=="string"){A=A.split(B);}C=C||{};i=A.length;
+while(i--){C[A[i]]={};}return C;}};Roo.htmleditor.TidyEntities.init();
+// Roo/htmleditor/KeyEnter.js
+Roo.htmleditor.KeyEnter=function(A){Roo.apply(this,A);Roo.get(this.core.doc.body).on('keypress',this.keypress,this);};Roo.htmleditor.KeyEnter.prototype={core:false,keypress:function(e){if(e.charCode!=13&&e.charCode!=10){Roo.log([e.charCode,e]);return true;
+}e.preventDefault();var A=this.core.doc;var B=this.core.getSelection();var C=B.getRangeAt(0);var n=C.commonAncestorContainer;var pc=C.closest(['ol','ul']);var D=C.closest('li');if(!pc||e.ctrlKey){B.insertNode('br','after');this.core.undoManager.addEvent();
+this.core.fireEditorEvent(e);return false;}if(D.innerText.trim()==''&&D.previousSibling&&D.previousSibling.nodeName=='LI'&&D.previousSibling.innerText.trim()==''){D.parentNode.removeChild(D.previousSibling);B.cursorAfter(pc);this.core.undoManager.addEvent();
+this.core.fireEditorEvent(e);return false;}var li=A.createElement('LI');li.innerHTML='&nbsp;';if(!D||!D.firstSibling){pc.appendChild(li);}else{D.parentNode.insertBefore(li,D.firstSibling);}B.cursorText(li.firstChild);this.core.undoManager.addEvent();this.core.fireEditorEvent(e);
+return false;}};
+// Roo/htmleditor/Block.js
+Roo.htmleditor.Block=function(A){};Roo.htmleditor.Block.factory=function(A){var cc=Roo.htmleditor.Block.cache;var id=Roo.get(A).id;if(typeof(cc[id])!='undefined'&&(!cc[id].node||cc[id].node.closest('body'))){Roo.htmleditor.Block.cache[id].readElement(A);return Roo.htmleditor.Block.cache[id];
+}var db=A.getAttribute('data-block');if(!db){db=A.nodeName.toLowerCase().toUpperCaseFirst();}var B=Roo.htmleditor['Block'+db];if(typeof(B)=='undefined'){Roo.log("OOps missing block : "+'Block'+db);return false;}Roo.htmleditor.Block.cache[id]=new B({node:A}
+);return Roo.htmleditor.Block.cache[id];};Roo.htmleditor.Block.initAll=function(A,B){if(typeof(B)=='undefined'){var ia=Roo.htmleditor.Block.initAll;ia(A,'table');ia(A,'td');ia(A,'figure');return;}Roo.each(Roo.get(A).query(B),function(e){Roo.htmleditor.Block.factory(e);
+},this);};Roo.htmleditor.Block.cache={};Roo.htmleditor.Block.prototype={node:false,friendly_name:'Based Block',deleteTitle:false,context:false,updateElement:function(A){Roo.DomHelper.update(A===undefined?this.node:A,this.toObject());},toHTML:function(){return Roo.DomHelper.markup(this.toObject());
+},getVal:function(A,B,C,D){var n=A;if(B!==true&&n.tagName!=B.toUpperCase()){n=A.getElementsByTagName(B).item(0);}if(!n){return '';}if(C=='html'){return n.innerHTML;}if(C=='style'){return n.style[D];}return n.hasAttribute(C)?n.getAttribute(C):'';},toObject:function(){return {}
+;},readElement:function(A){}};
+// Roo/htmleditor/BlockFigure.js
+Roo.htmleditor.BlockFigure=function(A){if(A.node){this.readElement(A.node);this.updateElement(A.node);}Roo.apply(this,A);};Roo.extend(Roo.htmleditor.BlockFigure,Roo.htmleditor.Block,{image_src:'',align:'center',caption:'',caption_display:'block',width:'100%',cls:'',href:'',video_url:'',text_align:'left',friendly_name:'Image with caption',deleteTitle:"Delete Image and Caption",contextMenu:function(A){var B=function(){return Roo.htmleditor.Block.factory(A.tb.selectedNode);
+};var C=typeof(Roo.bootstrap)=='undefined'?Roo:Roo.bootstrap;var D=A.editorcore.syncValue;var E={};return [{xtype:'TextItem',text:"Source: ",xns:C.Toolbar},{xtype:'Button',text:'Change Image URL',listeners:{click:function(F,G){var b=B();Roo.MessageBox.show({title:"Image Source URL",msg:"Enter the url for the image",buttons:Roo.MessageBox.OKCANCEL,fn:function(H,I){if(H!='ok'){return;
+}b.image_src=I;b.updateElement();D();A.editorcore.onEditorEvent();},minWidth:250,prompt:true,modal:true,value:b.image_src});}},xns:C.Toolbar},{xtype:'Button',text:'Change Link URL',listeners:{click:function(F,G){var b=B();Roo.MessageBox.show({title:"Link URL",msg:"Enter the url for the link - leave blank to have no link",buttons:Roo.MessageBox.OKCANCEL,fn:function(H,I){if(H!='ok'){return;
+}b.href=I;b.updateElement();D();A.editorcore.onEditorEvent();},minWidth:250,prompt:true,modal:true,value:b.href});}},xns:C.Toolbar},{xtype:'Button',text:'Show Video URL',listeners:{click:function(F,G){Roo.MessageBox.alert("Video URL",B().video_url==''?'This image is not linked ot a video':'The image is linked to: <a target="_new" href="'+B().video_url+'">'+B().video_url+'</a>');
+}},xns:C.Toolbar},{xtype:'TextItem',text:"Width: ",xns:C.Toolbar},{xtype:'ComboBox',allowBlank:false,displayField:'val',editable:true,listWidth:100,triggerAction:'all',typeAhead:true,valueField:'val',width:70,name:'width',listeners:{select:function(F,r,G){A.editorcore.selectNode(A.tb.selectedNode);
+var b=B();b.width=r.get('val');b.updateElement();D();A.editorcore.onEditorEvent();}},xns:C.form,store:{xtype:'SimpleStore',data:[['auto'],['50%'],['100%']],fields:['val'],xns:Roo.data}},{xtype:'TextItem',text:"Align: ",xns:C.Toolbar},{xtype:'ComboBox',allowBlank:false,displayField:'val',editable:true,listWidth:100,triggerAction:'all',typeAhead:true,valueField:'val',width:70,name:'align',listeners:{select:function(F,r,G){A.editorcore.selectNode(A.tb.selectedNode);
+var b=B();b.align=r.get('val');b.updateElement();D();A.editorcore.onEditorEvent();}},xns:C.form,store:{xtype:'SimpleStore',data:[['left'],['right'],['center']],fields:['val'],xns:Roo.data}},{xtype:'Button',text:'Hide Caption',name:'caption_display',pressed:false,enableToggle:true,setValue:function(v){this.toggle(v=='block'?false:true);
+},listeners:{toggle:function(F,G){var b=B();b.caption_display=b.caption_display=='block'?'none':'block';this.setText(b.caption_display=='block'?"Hide Caption":"Show Caption");b.updateElement();D();A.editorcore.selectNode(A.tb.selectedNode);A.editorcore.onEditorEvent();
+}},xns:C.Toolbar}];},toObject:function(){var d=document.createElement('div');d.innerHTML=this.caption;var m=this.width=='50%'&&this.align=='center'?'0 auto':0;var A={tag:'img',contenteditable:'false',src:this.image_src,alt:d.innerText.replace(/\n/g," ").replace(/\s+/g,' ').trim(),style:{width:'auto','max-width':'100%',margin:'0px'}
+};if(this.href.length>0){A={tag:'a',href:this.href,contenteditable:'true',cn:[A]};}if(this.video_url.length>0){A={tag:'div',cls:this.cls,frameborder:0,allowfullscreen:true,width:420,height:315,src:this.video_url,cn:[A]};}var B=this.caption_display=='hidden'?this.caption:(this.caption.length?this.caption:"Caption");
+return {tag:'figure','data-block':'Figure',contenteditable:'false',style:{display:'block',float:this.align,'max-width':this.width,width:'auto',margin:m,padding:'10px'},align:this.align,cn:[A,{tag:'figcaption',style:{'text-align':'left','margin-top':'16px','font-size':'16px','line-height':'24px',display:this.caption_display}
+,cls:this.cls.length>0?(this.cls+'-thumbnail'):'',cn:[{tag:'i',contenteditable:true,html:B}]}]};},readElement:function(A){this.video_url=this.getVal(A,'div','src');this.cls=this.getVal(A,'div','class');this.href=this.getVal(A,'a','href');this.image_src=this.getVal(A,'img','src');
+this.align=this.getVal(A,'figure','align');this.caption=this.getVal(A,'figcaption','html');if(this.caption.trim().match(/^<i[^>]*>/i)){this.caption=this.caption.trim().replace(/^<i[^>]*>/i,'').replace(/^<\/i>$/i,'');}this.width=this.getVal(A,'figure','style','max-width');
+},removeNode:function(){return this.node;}})
+// Roo/htmleditor/BlockTable.js
+Roo.htmleditor.BlockTable=function(A){if(A.node){this.readElement(A.node);this.updateElement(A.node);}Roo.apply(this,A);if(!A.node){this.rows=[];for(var r=0;r<this.no_row;r++){this.rows[r]=[];for(var c=0;c<this.no_col;c++){this.rows[r][c]=this.emptyCell();
+}}}};Roo.extend(Roo.htmleditor.BlockTable,Roo.htmleditor.Block,{rows:false,no_col:1,no_row:1,width:'100%',friendly_name:'Table',deleteTitle:'Delete Table',contextMenu:function(A){var B=function(){return Roo.htmleditor.Block.factory(A.tb.selectedNode);};var C=typeof(Roo.bootstrap)=='undefined'?Roo:Roo.bootstrap;
+var D=A.editorcore.syncValue;var E={};return [{xtype:'TextItem',text:"Width: ",xns:C.Toolbar},{xtype:'ComboBox',allowBlank:false,displayField:'val',editable:true,listWidth:100,triggerAction:'all',typeAhead:true,valueField:'val',width:100,name:'width',listeners:{select:function(F,r,G){A.editorcore.selectNode(A.tb.selectedNode);
+var b=B();b.width=r.get('val');b.updateElement();D();A.editorcore.onEditorEvent();}},xns:C.form,store:{xtype:'SimpleStore',data:[['100%'],['auto']],fields:['val'],xns:Roo.data}},{xtype:'TextItem',text:"Columns: ",xns:C.Toolbar},{xtype:'Button',text:'-',listeners:{click:function(F,e){A.editorcore.selectNode(A.tb.selectedNode);
+B().removeColumn();D();A.editorcore.onEditorEvent();}},xns:C.Toolbar},{xtype:'Button',text:'+',listeners:{click:function(F,e){A.editorcore.selectNode(A.tb.selectedNode);B().addColumn();D();A.editorcore.onEditorEvent();}},xns:C.Toolbar},{xtype:'TextItem',text:"Rows: ",xns:C.Toolbar}
+,{xtype:'Button',text:'-',listeners:{click:function(F,e){A.editorcore.selectNode(A.tb.selectedNode);B().removeRow();D();A.editorcore.onEditorEvent();}},xns:C.Toolbar},{xtype:'Button',text:'+',listeners:{click:function(F,e){B().addRow();D();A.editorcore.onEditorEvent();
+}},xns:C.Toolbar},{xtype:'Button',text:'Reset Column Widths',listeners:{click:function(F,e){B().resetWidths();D();A.editorcore.onEditorEvent();}},xns:C.Toolbar}];},toObject:function(){var A={tag:'table',contenteditable:'false','data-block':'Table',style:{width:this.width,border:'solid 1px #000','border-collapse':'collapse'}
+,cn:[{tag:'tbody',cn:[]}]};var B=0;Roo.each(this.rows,function(C){var tr={tag:'tr',style:{margin:'6px',border:'solid 1px #000',textAlign:'left'},cn:[]};A.cn[0].cn.push(tr);var nc=0;Roo.each(C,function(D){var td={tag:'td',contenteditable:'true','data-block':'Td',html:D.html,style:D.style}
+;if(D.colspan>1){td.colspan=D.colspan;nc+=D.colspan;}else{nc++;}if(D.rowspan>1){td.rowspan=D.rowspan;}tr.cn.push(td);},this);B=Math.max(nc,B);},this);B++;return A;},readElement:function(A){A=A?A:this.node;this.width=this.getVal(A,true,'style','width')||'100%';
+this.rows=[];this.no_row=0;var B=Array.from(A.rows);B.forEach(function(tr){var C=[];this.rows.push(C);this.no_row++;var D=0;Array.from(tr.cells).forEach(function(td){var E={colspan:td.hasAttribute('colspan')?td.getAttribute('colspan')*1:1,rowspan:td.hasAttribute('rowspan')?td.getAttribute('rowspan')*1:1,style:td.hasAttribute('style')?td.getAttribute('style'):'',html:td.innerHTML}
+;D+=E.colspan;C.push(E);},this);this.no_col=Math.max(this.no_col,D);},this);},normalizeRows:function(){var A=[];var B=-1;this.rows.forEach(function(C){B++;A[B]=[];C=this.normalizeRow(C);var D=0;C.forEach(function(c){while(typeof(A[B][D])!='undefined'){D++;
+}if(typeof(A[B])=='undefined'){A[B]=[];}A[B][D]=c;c.row=B;c.col=D;if(c.rowspan<2){return;}for(var i=1;i<c.rowspan;i++){if(typeof(A[B+i])=='undefined'){A[B+i]=[];}A[B+i][D]=c;}});},this);return A;},normalizeRow:function(A){var B=[];A.forEach(function(c){if(c.colspan<2){B.push(c);
+return;}for(var i=0;i<c.colspan;i++){B.push(c);}});return B;},deleteColumn:function(A){if(!A||A.type!='col'){return;}if(this.no_col<2){return;}this.rows.forEach(function(B){var C=this.normalizeRow(B);var D=C[A.col];if(D.colspan>1){D.colspan--;}else{B.remove(D);
+}},this);this.no_col--;},removeColumn:function(){this.deleteColumn({type:'col',col:this.no_col-1});this.updateElement();},addColumn:function(){this.rows.forEach(function(A){A.push(this.emptyCell());},this);this.updateElement();},deleteRow:function(A){if(!A||A.type!='row'){return;
+}if(this.no_row<2){return;}var B=this.normalizeRows();B[A.row].forEach(function(D){if(D.rowspan>1){D.rowspan--;}else{D.remove=1;}},this);var C=[];this.rows.forEach(function(D){newrow=[];D.forEach(function(c){if(typeof(c.remove)=='undefined'){newrow.push(c);
+}});if(newrow.length>0){C.push(D);}});this.rows=C;this.no_row--;this.updateElement();},removeRow:function(){this.deleteRow({type:'row',row:this.no_row-1});},addRow:function(){var A=[];for(var i=0;i<this.no_col;i++){A.push(this.emptyCell());}this.rows.push(A);
+this.updateElement();},emptyCell:function(){return (new Roo.htmleditor.BlockTd({})).toObject();},removeNode:function(){return this.node;},resetWidths:function(){Array.from(this.node.getElementsByTagName('td')).forEach(function(n){var nn=Roo.htmleditor.Block.factory(n);
+nn.width='';nn.updateElement(n);});}})
+// Roo/htmleditor/BlockTd.js
+Roo.htmleditor.BlockTd=function(A){if(A.node){this.readElement(A.node);this.updateElement(A.node);}Roo.apply(this,A);};Roo.extend(Roo.htmleditor.BlockTd,Roo.htmleditor.Block,{node:false,width:'',textAlign:'left',valign:'top',colspan:1,rowspan:1,friendly_name:'Table Cell',deleteTitle:false,contextMenu:function(A){var B=function(){return Roo.htmleditor.Block.factory(A.tb.selectedNode);
+};var C=function(){return Roo.htmleditor.Block.factory(A.tb.selectedNode.closest('table'));};var lr=false;var D=function(){lr=A.editorcore.getSelection().getRangeAt(0);};var restoreSel=function(){if(lr){(function(){A.editorcore.focus();var cr=A.editorcore.getSelection();
+cr.removeAllRanges();cr.addRange(lr);A.editorcore.onEditorEvent();}).defer(10,this);}};var rooui=typeof(Roo.bootstrap)=='undefined'?Roo:Roo.bootstrap;var E=A.editorcore.syncValue;var F={};return [{xtype:'Button',text:'Edit Table',listeners:{click:function(){var t=A.tb.selectedNode.closest('table');
+A.editorcore.selectNode(t);A.editorcore.onEditorEvent();}}},{xtype:'TextItem',text:"Column Width: ",xns:rooui.Toolbar},{xtype:'Button',text:'-',listeners:{click:function(G,e){A.editorcore.selectNode(A.tb.selectedNode);B().shrinkColumn();E();A.editorcore.onEditorEvent();
+}},xns:rooui.Toolbar},{xtype:'Button',text:'+',listeners:{click:function(G,e){A.editorcore.selectNode(A.tb.selectedNode);B().growColumn();E();A.editorcore.onEditorEvent();}},xns:rooui.Toolbar},{xtype:'TextItem',text:"Vertical Align: ",xns:rooui.Toolbar},{xtype:'ComboBox',allowBlank:false,displayField:'val',editable:true,listWidth:100,triggerAction:'all',typeAhead:true,valueField:'val',width:100,name:'valign',listeners:{select:function(G,r,H){A.editorcore.selectNode(A.tb.selectedNode);
+var b=B();b.valign=r.get('val');b.updateElement();E();A.editorcore.onEditorEvent();}},xns:rooui.form,store:{xtype:'SimpleStore',data:[['top'],['middle'],['bottom']],fields:['val'],xns:Roo.data}},{xtype:'TextItem',text:"Merge Cells: ",xns:rooui.Toolbar},{xtype:'Button',text:'Right',listeners:{click:function(G,e){A.editorcore.selectNode(A.tb.selectedNode);
+B().mergeRight();E();A.editorcore.onEditorEvent();}},xns:rooui.Toolbar},{xtype:'Button',text:'Below',listeners:{click:function(G,e){A.editorcore.selectNode(A.tb.selectedNode);B().mergeBelow();E();A.editorcore.onEditorEvent();}},xns:rooui.Toolbar},{xtype:'TextItem',text:"| ",xns:rooui.Toolbar}
+,{xtype:'Button',text:'Split',listeners:{click:function(G,e){B().split();E();A.editorcore.selectNode(A.tb.selectedNode);A.editorcore.onEditorEvent();}},xns:rooui.Toolbar},{xtype:'Fill',xns:rooui.Toolbar},{xtype:'Button',text:'Delete',xns:rooui.Toolbar,menu:{xtype:'Menu',xns:rooui.menu,items:[{xtype:'Item',html:'Column',listeners:{click:function(G,e){var t=C();
+B().deleteColumn();E();A.editorcore.selectNode(t.node);A.editorcore.onEditorEvent();}},xns:rooui.menu},{xtype:'Item',html:'Row',listeners:{click:function(G,e){var t=C();B().deleteRow();E();A.editorcore.selectNode(t.node);A.editorcore.onEditorEvent();}},xns:rooui.menu}
+,{xtype:'Separator',xns:rooui.menu},{xtype:'Item',html:'Table',listeners:{click:function(G,e){var t=C();var nn=t.node.nextSibling||t.node.previousSibling;t.node.parentNode.removeChild(t.node);if(nn){A.editorcore.selectNode(nn,true);}A.editorcore.onEditorEvent();
+}},xns:rooui.menu}]}}];},toObject:function(){var A={tag:'td',contenteditable:'true','data-block':'Td',valign:this.valign,style:{'text-align':this.textAlign,border:'solid 1px rgb(0, 0, 0)','border-collapse':'collapse',padding:'6px','vertical-align':this.valign}
+,html:this.html};if(this.width!=''){A.width=this.width;A.style.width=this.width;}if(this.colspan>1){A.colspan=this.colspan;}if(this.rowspan>1){A.rowspan=this.rowspan;}return A;},readElement:function(A){A=A?A:this.node;this.width=A.style.width;this.colspan=Math.max(1,1*A.getAttribute('colspan'));
+this.rowspan=Math.max(1,1*A.getAttribute('rowspan'));this.html=A.innerHTML;},emptyCell:function(){return {colspan:1,rowspan:1,textAlign:'left',html:"&nbsp;"};},removeNode:function(){return this.node.closest('table');},cellData:false,colWidths:false,toTableArray:function(){var A=[];
+var B=this.node.closest('tr').closest('table');Array.from(B.rows).forEach(function(r,ri){A[ri]=[];});var rn=0;this.colWidths=[];var C=true;Array.from(B.rows).forEach(function(r,ri){var cn=0;Array.from(r.cells).forEach(function(ce,ci){var c={cell:ce,row:rn,col:cn,colspan:ce.colSpan,rowspan:ce.rowSpan}
+;if(ce.isEqualNode(this.node)){this.cellData=c;}if(typeof(A[rn][cn])!='undefined'){while(typeof(A[rn][cn])!='undefined'){cn++;}c.col=cn;}if(typeof(this.colWidths[cn])=='undefined'){this.colWidths[cn]=ce.style.width;if(this.colWidths[cn]!=''){C=false;}}if(c.colspan<2&&c.rowspan<2){A[rn][cn]=c;
+cn++;return;}for(var j=0;j<c.rowspan;j++){if(typeof(A[rn+j])=='undefined'){continue;}A[rn+j][cn]=c;for(var i=0;i<c.colspan;i++){A[rn+j][cn+i]=c;}}cn+=c.colspan;},this);rn++;},this);if(C){this.colWidths[0]=false;}return A;},mergeRight:function(){var tr=this.node.closest('tr');
+var i=Array.prototype.indexOf.call(tr.childNodes,this.node);if(i>=tr.childNodes.length-1){return;}var A=this.toTableArray();if(typeof(A[this.cellData.row][this.cellData.col+this.cellData.colspan])=='undefined'){return;}var rc=A[this.cellData.row][this.cellData.col+this.cellData.colspan];
+if(rc.rowspan!=this.cellData.rowspan||rc.row!=this.cellData.row){return;}this.node.innerHTML+=' '+rc.cell.innerHTML;tr.removeChild(rc.cell);this.colspan+=rc.colspan;this.node.setAttribute('colspan',this.colspan);},mergeBelow:function(){var A=this.toTableArray();
+if(typeof(A[this.cellData.row+this.cellData.rowspan])=='undefined'){return;}if(typeof(A[this.cellData.row+this.cellData.rowspan][this.cellData.col])=='undefined'){return;}var rc=A[this.cellData.row+this.cellData.rowspan][this.cellData.col];if(rc.colspan!=this.cellData.colspan||rc.col!=this.cellData.col){return;
+}this.node.innerHTML=this.node.innerHTML+rc.cell.innerHTML;rc.cell.parentNode.removeChild(rc.cell);this.rowspan+=rc.rowspan;this.node.setAttribute('rowspan',this.rowspan);},split:function(){if(this.node.rowSpan<2&&this.node.colSpan<2){return;}var A=this.toTableArray();
+var cd=this.cellData;this.rowspan=1;this.colspan=1;for(var r=cd.row;r<cd.row+cd.rowspan;r++){for(var c=cd.col;c<cd.col+cd.colspan;c++){if(r==cd.row&&c==cd.col){this.node.removeAttribute('rowspan');this.node.removeAttribute('colspan');continue;}var B=this.node.cloneNode();
+B.removeAttribute('id');B.innerHTML='';A[r][c]={cell:B,col:c,row:r,colspan:1,rowspan:1};}}this.redrawAllCells(A);},redrawAllCells:function(A){var B=this.node.closest('tr').closest('table');var C=B.rows[0].parentNode;Array.from(B.rows).forEach(function(r,ri){Array.from(r.cells).forEach(function(ce,ci){ce.parentNode.removeChild(ce);
+});r.parentNode.removeChild(r);});for(var r=0;r<A.length;r++){var re=B.rows[r];var re=B.ownerDocument.createElement('tr');C.appendChild(re);for(var c=0;c<A[r].length;c++){if(A[r][c].cell===false){continue;}re.appendChild(A[r][c].cell);A[r][c].cell=false;}
+}},updateWidths:function(A){for(var r=0;r<A.length;r++){for(var c=0;c<A[r].length;c++){if(A[r][c].cell===false){continue;}if(this.colWidths[0]!=false&&A[r][c].colspan<2){var el=Roo.htmleditor.Block.factory(A[r][c].cell);el.width=Math.floor(this.colWidths[c])+'%';
+el.updateElement(el.node);}A[r][c].cell=false;}}},normalizeWidths:function(A){if(this.colWidths[0]===false){var nw=100.0/this.colWidths.length;this.colWidths.forEach(function(w,i){this.colWidths[i]=nw;},this);return;}var t=0,B=[];this.colWidths.forEach(function(w,i){this.colWidths[i]=this.colWidths[i]==''?0:(this.colWidths[i]+'').replace(/[^0-9]+/g,'')*1;
+var D=this.colWidths[i];if(D>0){t+=D;return;}B.push(i);},this);var nc=this.colWidths.length;if(B.length){var C=(nc-B.length)/(1.0*nc);var t=C*t;var ew=(100-t)/(1.0*B.length);this.colWidths.forEach(function(w,i){if(w>0){this.colWidths[i]=w*C;return;}this.colWidths[i]=ew;
+},this);}},shrinkColumn:function(){var A=this.toTableArray();this.normalizeWidths(A);var B=this.cellData.col;var nw=this.colWidths[B]*0.8;if(nw<5){return;}var C=(this.colWidths[B]*0.2)/(this.colWidths.length-1);this.colWidths.forEach(function(w,i){if(i==B){this.colWidths[i]=nw;
+return;}this.colWidths[i]+=C},this);this.updateWidths(A);},growColumn:function(){var A=this.toTableArray();this.normalizeWidths(A);var B=this.cellData.col;var nw=this.colWidths[B]*1.2;if(nw>90){return;}var C=(this.colWidths[B]*0.2)/(this.colWidths.length-1);
+this.colWidths.forEach(function(w,i){if(i==B){this.colWidths[i]=nw;return;}this.colWidths[i]-=C},this);this.updateWidths(A);},deleteRow:function(){var A=this.toTableArray();for(var i=0;i<A[this.cellData.row].length;i++){var c=A[this.cellData.row][i];if(c.row!=this.cellData.row){c.rowspan--;
+c.cell.setAttribute('rowspan',c.rowspan);continue;}if(c.rowspan>1){c.rowspan--;c.cell.setAttribute('rowspan',c.rowspan);}}A.splice(this.cellData.row,1);this.redrawAllCells(A);},deleteColumn:function(){var A=this.toTableArray();for(var i=0;i<A.length;i++){var c=A[i][this.cellData.col];
+if(c.col!=this.cellData.col){A[i][this.cellData.col].colspan--;}else if(c.colspan>1){c.colspan--;c.cell.setAttribute('colspan',c.colspan);}A[i].splice(this.cellData.col,1);}this.redrawAllCells(A);}})
 // Roo/HtmlEditorCore.js
-Roo.HtmlEditorCore=function(A){Roo.HtmlEditorCore.superclass.constructor.call(this,A);this.addEvents({initialize:true,activate:true,beforesync:true,beforepush:true,sync:true,push:true,editorevent:true});this.applyBlacklists();};Roo.extend(Roo.HtmlEditorCore,Roo.Component,{owner:false,resizable:false,height:300,width:500,stylesheets:false,allowComments:false,frameId:false,validationEvent:false,deferHeight:true,initialized:false,activated:false,sourceEditMode:false,onFocus:Roo.emptyFn,iframePad:3,hideMode:'offsets',clearUp:true,black:false,white:false,bodyCls:'',getDocMarkup:function(){var st='';
+Roo.HtmlEditorCore=function(A){Roo.HtmlEditorCore.superclass.constructor.call(this,A);this.addEvents({initialize:true,activate:true,beforesync:true,beforepush:true,sync:true,push:true,editorevent:true});this.applyBlacklists();};Roo.extend(Roo.HtmlEditorCore,Roo.Component,{owner:false,resizable:false,height:300,width:500,autoClean:true,enableBlocks:true,stylesheets:false,language:'en',allowComments:false,frameId:false,validationEvent:false,deferHeight:true,initialized:false,activated:false,sourceEditMode:false,onFocus:Roo.emptyFn,iframePad:3,hideMode:'offsets',clearUp:true,black:false,white:false,bodyCls:'',undoManager:false,getDocMarkup:function(){var st='';
 if(this.stylesheets===false){Roo.get(document.head).select('style').each(function(B){st+=B.dom.outerHTML||new XMLSerializer().serializeToString(B.dom);});Roo.get(document.head).select('link').each(function(B){st+=B.dom.outerHTML||new XMLSerializer().serializeToString(B.dom);
-});}else if(!this.stylesheets.length){st='<style type="text/css">'+'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}'+'</style>';}else{for(var i in this.stylesheets){st+='<link rel="stylesheet" href="'+this.stylesheets[i]+'" type="text/css">';}
-}st+='<style type="text/css">'+'IMG { cursor: pointer } '+'</style>';var A='roo-htmleditor-body';if(this.bodyCls.length){A+=' '+this.bodyCls;}return '<html><head>'+st+' </head><body contenteditable="true" data-enable-grammerly="true" class="'+A+'"></body></html>';
+});}else if(!this.stylesheets.length){st='<style type="text/css">'+'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}'+'</style>';}else{for(var i in this.stylesheets){if(typeof(this.stylesheets[i])!='string'){continue;}st+='<link rel="stylesheet" href="'+this.stylesheets[i]+'" type="text/css">';
+}}st+='<style type="text/css">'+'IMG { cursor: pointer } '+'</style>';st+='<meta name="google" content="notranslate">';var A='notranslate roo-htmleditor-body';if(this.bodyCls.length){A+=' '+this.bodyCls;}return '<html  class="notranslate" translate="no"><head>'+st+' </head><body contenteditable="true" data-enable-grammerly="true" class="'+A+'"></body></html>';
 },onRender:function(ct,A){var _t=this;this.el=this.owner.inputEl?this.owner.inputEl():this.owner.el;this.el.dom.style.border='0 none';this.el.dom.setAttribute('tabIndex',-1);this.el.addClass('x-hidden hide');if(Roo.isIE){this.el.applyStyles('margin-top:-1px;margin-bottom:-1px;')}
 this.frameId=Roo.id();var B=this.owner.wrap.createChild({tag:'iframe',cls:'form-control',id:this.frameId,name:this.frameId,frameBorder:'no','src':Roo.SSL_SECURE_URL?Roo.SSL_SECURE_URL:"javascript:false"},this.el);this.iframe=B.dom;this.assignDocWin();this.doc.designMode='on';
 this.doc.open();this.doc.write(this.getDocMarkup());this.doc.close();var C={run:function(){this.assignDocWin();if(this.doc.body||this.doc.readyState=='complete'){try{this.doc.designMode="on";}catch(e){return;}Roo.TaskMgr.stop(C);this.initEditor.defer(10,this);
 }},interval:10,duration:10000,scope:this};Roo.TaskMgr.start(C);},onResize:function(w,h){Roo.log('resize: '+w+','+h);if(!this.iframe){return;}if(typeof w=='number'){this.iframe.style.width=w+'px';}if(typeof h=='number'){this.iframe.style.height=h+'px';if(this.doc){(this.doc.body||this.doc.documentElement).style.height=(h-(this.iframePad*2))+'px';
-}}},toggleSourceEdit:function(A){this.sourceEditMode=A===true;if(this.sourceEditMode){Roo.get(this.iframe).addClass(['x-hidden','hide']);}else{Roo.get(this.iframe).removeClass(['x-hidden','hide']);this.deferFocus();}},cleanHtml:function(A){A=String(A);if(A.length>5){if(Roo.isSafari){A=A.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,'');
-}}if(A=='&nbsp;'){A='';}return A;},syncValue:function(){if(this.initialized){var bd=(this.doc.body||this.doc.documentElement);var A=bd.innerHTML;if(Roo.isSafari){var bs=bd.getAttribute('style');var m=bs?bs.match(/text-align:(.*?);/i):false;if(m&&m[1]){A='<div style="'+m[0]+'">'+A+'</div>';
-}}A=this.cleanHtml(A);A=A.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u0080-\uFFFF]/g,function(B){var cc=B.charCodeAt();if(B.length==2){var C=B.charCodeAt(0)-0xD800;var D=B.charCodeAt(1)-0xDC00;cc=(C*0x400)+D+0x10000;}else if((cc>=0x4E00&&cc<0xA000)||(cc>=0x3400&&cc<0x4E00)||(cc>=0xf900&&cc<0xfb00)){return B;
-}return "&#"+cc+";";});if(this.owner.fireEvent('beforesync',this,A)!==false){this.el.dom.value=A;this.owner.fireEvent('sync',this,A);}}},pushValue:function(){if(this.initialized){var v=this.el.dom.value.trim();if(this.owner.fireEvent('beforepush',this,v)!==false){var d=(this.doc.body||this.doc.documentElement);
-d.innerHTML=v;this.cleanUpPaste();this.el.dom.value=d.innerHTML;this.owner.fireEvent('push',this,v);}}},deferFocus:function(){this.focus.defer(10,this);},focus:function(){if(this.win&&!this.sourceEditMode){this.win.focus();}else{this.el.focus();}},assignDocWin:function(){var A=this.iframe;
-if(Roo.isIE){this.doc=A.contentWindow.document;this.win=A.contentWindow;}else{if(!Roo.get(this.frameId)&&!A.contentDocument){return;}this.doc=(A.contentDocument||Roo.get(this.frameId).dom.document);this.win=(A.contentWindow||Roo.get(this.frameId).dom.contentWindow);
-}},initEditor:function(){this.assignDocWin();this.doc.designMode="on";this.doc.open();this.doc.write(this.getDocMarkup());this.doc.close();var A=(this.doc.body||this.doc.documentElement);A.bgProperties='fixed';Roo.EventManager.on(this.doc,{'mouseup':this.onEditorEvent,'dblclick':this.onEditorEvent,'click':this.onEditorEvent,'keyup':this.onEditorEvent,buffer:100,scope:this}
-);if(Roo.isGecko){Roo.EventManager.on(this.doc,'keypress',this.mozKeyPress,this);}if(Roo.isIE||Roo.isSafari||Roo.isOpera){Roo.EventManager.on(this.doc,'keydown',this.fixKeys,this);}this.initialized=true;this.owner.fireEvent('initialize',this);this.pushValue();
-},onDestroy:function(){if(this.rendered){}},onFirstFocus:function(){this.assignDocWin();this.activated=true;if(Roo.isGecko){this.win.focus();var s=this.win.getSelection();if(!s.focusNode||s.focusNode.nodeType!=3){var r=s.getRangeAt(0);r.selectNodeContents((this.doc.body||this.doc.documentElement));
-r.collapse(true);this.deferFocus();}try{this.execCmd('useCSS',true);this.execCmd('styleWithCSS',false);}catch(e){}}this.owner.fireEvent('activate',this);},adjustFont:function(A){var B=A.cmd=='increasefontsize'?1:-1;var v=parseInt(this.doc.queryCommandValue('FontSize')||3,10);
-if(Roo.isSafari){var sm={10:1,13:2,16:3,18:4,24:5,32:6,48:7};v=(v<10)?10:v;v=(v>48)?48:v;v=typeof(sm[v])=='undefined'?1:sm[v];}v=Math.max(1,v+B);this.execCmd('FontSize',v);},onEditorEvent:function(e){this.owner.fireEvent('editorevent',this,e);this.syncValue();
+}}},toggleSourceEdit:function(A){this.sourceEditMode=A===true;if(this.sourceEditMode){Roo.get(this.iframe).addClass(['x-hidden','hide','d-none']);}else{Roo.get(this.iframe).removeClass(['x-hidden','hide','d-none']);this.deferFocus();}},cleanHtml:function(A){A=String(A);
+if(A.length>5){if(Roo.isSafari){A=A.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,'');}}if(A=='&nbsp;'){A='';}return A;},syncValue:function(){if(this.initialized){this.undoManager.addEvent();var bd=(this.doc.body||this.doc.documentElement);
+var A=this.win.getSelection();var B=document.createElement('div');B.innerHTML=bd.innerHTML;var C=B.getElementsByClassName('gtx-trans-icon');if(C.length>0){var rm=C.item(0).parentNode;rm.parentNode.removeChild(rm);}if(this.enableBlocks){new Roo.htmleditor.FilterBlock({node:B}
+);}var D=new Roo.htmleditor.TidySerializer({inner:true});var E=D.serialize(B);if(Roo.isSafari){var bs=bd.getAttribute('style');var m=bs?bs.match(/text-align:(.*?);/i):false;if(m&&m[1]){E='<div style="'+m[0]+'">'+E+'</div>';}}E=this.cleanHtml(E);E=E.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u0080-\uFFFF]/g,function(F){var cc=F.charCodeAt();
+if(F.length==2){var G=F.charCodeAt(0)-0xD800;var H=F.charCodeAt(1)-0xDC00;cc=(G*0x400)+H+0x10000;}else if((cc>=0x4E00&&cc<0xA000)||(cc>=0x3400&&cc<0x4E00)||(cc>=0xf900&&cc<0xfb00)){return F;}return "&#"+cc+";";});if(this.owner.fireEvent('beforesync',this,E)!==false){this.el.dom.value=E;
+this.owner.fireEvent('sync',this,E);}}},pushValue:function(){if(this.initialized){var v=this.el.dom.value.trim();if(this.owner.fireEvent('beforepush',this,v)!==false){var d=(this.doc.body||this.doc.documentElement);d.innerHTML=v;this.el.dom.value=d.innerHTML;
+this.owner.fireEvent('push',this,v);}if(this.autoClean){new Roo.htmleditor.FilterParagraph({node:this.doc.body});new Roo.htmleditor.FilterSpan({node:this.doc.body});}if(this.enableBlocks){Roo.htmleditor.Block.initAll(this.doc.body);}this.updateLanguage();
+var lc=this.doc.body.lastChild;if(lc&&lc.nodeType==1&&lc.getAttribute("contenteditable")=="false"){this.doc.body.appendChild(this.doc.createElement('br'));}}},deferFocus:function(){this.focus.defer(10,this);},focus:function(){if(this.win&&!this.sourceEditMode){this.win.focus();
+}else{this.el.focus();}},assignDocWin:function(){var A=this.iframe;if(Roo.isIE){this.doc=A.contentWindow.document;this.win=A.contentWindow;}else{if(!Roo.get(this.frameId)&&!A.contentDocument){return;}this.doc=(A.contentDocument||Roo.get(this.frameId).dom.document);
+this.win=(A.contentWindow||Roo.get(this.frameId).dom.contentWindow);}},initEditor:function(){this.assignDocWin();this.doc.designMode="on";this.doc.open();this.doc.write(this.getDocMarkup());this.doc.close();var A=(this.doc.body||this.doc.documentElement);
+A.bgProperties='fixed';A.setAttribute("translate","no");Roo.EventManager.on(this.doc,{'mouseup':this.onEditorEvent,'dblclick':this.onEditorEvent,'click':this.onEditorEvent,'keyup':this.onEditorEvent,buffer:100,scope:this});Roo.EventManager.on(this.doc,{'paste':this.onPasteEvent,scope:this}
+);if(Roo.isGecko){Roo.EventManager.on(this.doc,'keypress',this.mozKeyPress,this);}if(Roo.isIE||Roo.isSafari||Roo.isOpera){Roo.EventManager.on(this.doc,'keydown',this.fixKeys,this);}this.initialized=true;new Roo.htmleditor.KeyEnter({core:this});this.owner.fireEvent('initialize',this);
+this.pushValue();},onPasteEvent:function(e,v){var cd=(e.browserEvent.clipboardData||window.clipboardData);if(cd.files.length>0){var A=(window.createObjectURL&&window)||(window.URL&&URL.revokeObjectURL&&URL)||(window.webkitURL&&webkitURL);var B=A.createObjectURL(cd.files[0]);
+this.insertAtCursor('<img src=" + url + ">');return false;}var C=cd.getData('text/html');var D=new Roo.rtf.Parser(cd.getData('text/rtf'));var E=D.doc?D.doc.getElementsByType('pict'):[];Roo.log(E);E=E.filter(function(g){return !g.path.match(/^rtf\/(head|pgdsctbl|listtable)/);
+}).map(function(g){return g.toDataURL();}).filter(function(g){return g!='about:blank';});C=this.cleanWordChars(C);var d=(new DOMParser().parseFromString(C,'text/html')).body;var sn=this.getParentElement();if(d.getElementsByTagName('table').length&&sn&&sn.closest('table')){e.preventDefault();
+this.insertAtCursor("You can not nest tables");return false;}if(E.length>0){Roo.each(d.getElementsByTagName('img'),function(F,i){F.setAttribute('src',E[i]);});}if(this.autoClean){new Roo.htmleditor.FilterStyleToTag({node:d});new Roo.htmleditor.FilterAttributes({node:d,attrib_white:['href','src','name','align'],attrib_clean:['href','src']}
+);new Roo.htmleditor.FilterBlack({node:d,tag:this.black});new Roo.htmleditor.FilterKeepChildren({node:d,tag:['FONT','O:P']});new Roo.htmleditor.FilterParagraph({node:d});new Roo.htmleditor.FilterSpan({node:d});new Roo.htmleditor.FilterLongBr({node:d});}if(this.enableBlocks){Array.from(d.getElementsByTagName('img')).forEach(function(F){if(F.closest('figure')){return;
+}var G=new Roo.htmleditor.BlockFigure({image_src:F.src});G.updateElement(F);});}this.insertAtCursor(d.innerHTML.replace(/&nbsp;/g,' '));if(this.enableBlocks){Roo.htmleditor.Block.initAll(this.doc.body);}e.preventDefault();return false;},onDestroy:function(){if(this.rendered){}
+},onFirstFocus:function(){this.assignDocWin();this.undoManager=new Roo.lib.UndoManager(100,(this.doc.body||this.doc.documentElement));this.activated=true;if(Roo.isGecko){this.win.focus();var s=this.win.getSelection();if(!s.focusNode||s.focusNode.nodeType!=3){var r=s.getRangeAt(0);
+r.selectNodeContents((this.doc.body||this.doc.documentElement));r.collapse(true);this.deferFocus();}try{this.execCmd('useCSS',true);this.execCmd('styleWithCSS',false);}catch(e){}}this.owner.fireEvent('activate',this);},adjustFont:function(A){var B=A.cmd=='increasefontsize'?1:-1;
+var v=parseInt(this.doc.queryCommandValue('FontSize')||3,10);if(Roo.isSafari){var sm={10:1,13:2,16:3,18:4,24:5,32:6,48:7};v=(v<10)?10:v;v=(v>48)?48:v;v=typeof(sm[v])=='undefined'?1:sm[v];}v=Math.max(1,v+B);this.execCmd('FontSize',v);},onEditorEvent:function(e){if(e&&(e.ctrlKey||e.metaKey)&&e.keyCode===90){return;
+}if(e&&e.target.nodeName=='BODY'&&e.type=="mouseup"&&this.doc.body.lastChild){var lc=this.doc.body.lastChild;while((lc.nodeType==3&&lc.nodeValue=='')||lc.id=='gtx-trans'){lc=lc.previousSibling;}if(lc.nodeType==1&&lc.nodeName!='BR'){var ns=this.doc.createElement('br');
+this.doc.body.appendChild(ns);range=this.doc.createRange();range.setStartAfter(ns);range.collapse(true);var A=this.win.getSelection();A.removeAllRanges();A.addRange(range);}}this.fireEditorEvent(e);this.syncValue();},fireEditorEvent:function(e){this.owner.fireEvent('editorevent',this,e);
 },insertTag:function(tg){if(tg.toLowerCase()=='span'||tg.toLowerCase()=='code'||tg.toLowerCase()=='sup'||tg.toLowerCase()=='sub'){range=this.createRange(this.getSelection());var A=this.doc.createElement(tg.toLowerCase());A.appendChild(range.extractContents());
-range.insertNode(A);return;}this.execCmd("formatblock",tg);},insertText:function(A){var B=this.createRange();B.deleteContents();B.insertNode(this.doc.createTextNode(A));},relayCmd:function(A,B){this.win.focus();this.execCmd(A,B);this.owner.fireEvent('editorevent',this);
-this.owner.deferFocus();},execCmd:function(A,B){this.doc.execCommand(A,false,B===undefined?null:B);this.syncValue();},insertAtCursor:function(A){if(!this.activated){return;}if(Roo.isGecko||Roo.isOpera||Roo.isSafari){this.win.focus();var B,C;var D=this.win;
-if(D.getSelection&&D.getSelection().getRangeAt){B=D.getSelection().getRangeAt(0);C=typeof(A)=='string'?B.createContextualFragment(A):A;B.insertNode(C);}else if(D.document.selection&&D.document.selection.createRange){var E=typeof(A)=='string'?A:A.outerHTML;
-D.document.selection.createRange().pasteHTML(E);}else{var E=typeof(A)=='string'?A:A.outerHTML;this.execCmd('InsertHTML',E);}this.syncValue();this.deferFocus();}},mozKeyPress:function(e){if(e.ctrlKey){var c=e.getCharCode(),A;if(c>0){c=String.fromCharCode(c).toLowerCase();
-switch(c){case 'b':A='bold';break;case 'i':A='italic';break;case 'u':A='underline';break;case 'v':this.cleanUpPaste.defer(100,this);return;}if(A){this.win.focus();this.execCmd(A);this.deferFocus();e.preventDefault();}}}},fixKeys:function(){if(Roo.isIE){return function(e){var k=e.getKey(),r;
-if(k==e.TAB){e.stopEvent();r=this.doc.selection.createRange();if(r){r.collapse(true);r.pasteHTML('&#160;&#160;&#160;&#160;');this.deferFocus();}return;}if(k==e.ENTER){r=this.doc.selection.createRange();if(r){var A=r.parentElement();if(!A||A.tagName.toLowerCase()!='li'){e.stopEvent();
-r.pasteHTML('<br />');r.collapse(false);r.select();}}}if(String.fromCharCode(k).toLowerCase()=='v'){this.cleanUpPaste.defer(100,this);return;}};}else if(Roo.isOpera){return function(e){var k=e.getKey();if(k==e.TAB){e.stopEvent();this.win.focus();this.execCmd('InsertHTML','&#160;&#160;&#160;&#160;');
-this.deferFocus();}if(String.fromCharCode(k).toLowerCase()=='v'){this.cleanUpPaste.defer(100,this);return;}};}else if(Roo.isSafari){return function(e){var k=e.getKey();if(k==e.TAB){e.stopEvent();this.execCmd('InsertText','\t');this.deferFocus();return;}if(String.fromCharCode(k).toLowerCase()=='v'){this.cleanUpPaste.defer(100,this);
-return;}};}}(),getAllAncestors:function(){var p=this.getSelectedNode();var a=[];if(!p){a.push(p);p=this.getParentElement();}while(p&&(p.nodeType==1)&&(p.tagName.toLowerCase()!='body')){a.push(p);p=p.parentNode;}a.push(this.doc.body);return a;},lastSel:false,lastSelNode:false,getSelection:function(){this.assignDocWin();
-return Roo.isIE?this.doc.selection:this.win.getSelection();},getSelectedNode:function(){var A=this.createRange(this.getSelection()).cloneRange();if(Roo.isIE){var B=A.parentElement();while(true){var C=A.duplicate();C.moveToElementText(B);if(C.inRange(A)){break;
-}if((B.nodeType!=1)||(B.tagName.toLowerCase()=='body')){break;}B=B.parentElement;}return B;}var ac=A.commonAncestorContainer;if(ac.nodeType==3){ac=ac.parentNode;}var ar=ac.childNodes;var D=[];var E=[];var F=false;for(var i=0;i<ar.length;i++){if((ar[i].nodeType==3)&&(!ar[i].data.length)){continue;
-}if(this.rangeIntersectsNode(A,ar[i])&&this.rangeCompareNode(A,ar[i])==3){D.push(ar[i]);continue;}if((ar[i].nodeType==1)&&this.rangeIntersectsNode(A,ar[i])&&(this.rangeCompareNode(A,ar[i])>0)){E.push(ar[i]);continue;}if(!this.rangeIntersectsNode(A,ar[i])||(this.rangeCompareNode(A,ar[i])==0)){continue;
-}F=true;}if(!D.length&&E.length){D=E;}if(F||!D.length||(D.length>1)){return false;}return D[0];},createRange:function(A){if(typeof A!="undefined"){try{return A.getRangeAt?A.getRangeAt(0):A.createRange();}catch(e){return this.doc.createRange();}}else{return this.doc.createRange();
-}},getParentElement:function(){this.assignDocWin();var A=Roo.isIE?this.doc.selection:this.win.getSelection();var B=this.createRange(A);try{var p=B.commonAncestorContainer;while(p.nodeType==3){p=p.parentNode;}return p;}catch(e){return null;}},rangeIntersectsNode:function(A,B){var C=B.ownerDocument.createRange();
-try{C.selectNode(B);}catch(e){C.selectNodeContents(B);}var D=A.cloneRange();D.collapse(true);var E=A.cloneRange();E.collapse(false);var F=C.cloneRange();F.collapse(true);var G=C.cloneRange();G.collapse(false);return D.compareBoundaryPoints(Range.START_TO_START,G)==-1&&E.compareBoundaryPoints(Range.START_TO_START,F)==1;
-},rangeCompareNode:function(A,B){var C=B.ownerDocument.createRange();try{C.selectNode(B);}catch(e){C.selectNodeContents(B);}A.collapse(true);C.collapse(true);var ss=A.compareBoundaryPoints(Range.START_TO_START,C);var ee=A.compareBoundaryPoints(Range.END_TO_END,C);
-var D=ss==1;var E=ee==-1;if(D&&E){return 0;}if(!D&&E){return 1;}if(D&&!E){return 2;}return 3;},cleanUpPaste:function(){Roo.log('cleanuppaste');this.cleanUpChildren(this.doc.body);var A=this.cleanWordChars(this.doc.body.innerHTML);if(A!=this.doc.body.innerHTML){this.doc.body.innerHTML=A;
-}},cleanWordChars:function(A){var he=Roo.HtmlEditorCore;var B=A;Roo.each(he.swapCodes,function(sw){var C=new RegExp("\\u"+sw[0].toString(16),"g");B=B.replace(C,sw[1]);});return B;},cleanUpChildren:function(n){if(!n.childNodes.length){return;}for(var i=n.childNodes.length-1;
-i>-1;i--){this.cleanUpChild(n.childNodes[i]);}},cleanUpChild:function(A){var ed=this;if(A.nodeName=="#text"){return;}if(A.nodeName=="#comment"){if(!this.allowComments){A.parentNode.removeChild(A);}return;}var B=A.tagName.toLowerCase();if(this.black.indexOf(B)>-1&&this.clearUp){A.parentNode.removeChild(A);
-return;}var C=Roo.HtmlEditorCore.remove.indexOf(A.tagName.toLowerCase())>-1;if((!A.attributes||!A.attributes.length)&&B=='span'){C=true;}if(C){this.cleanUpChildren(A);while(A.childNodes.length){var cn=A.childNodes[0];A.removeChild(cn);A.parentNode.insertBefore(cn,A);
-}A.parentNode.removeChild(A);return;}if(!A.attributes||!A.attributes.length){this.cleanUpChildren(A);return;}function cleanAttr(n,v){if(v.match(/^\./)||v.match(/^\//)){return;}if(v.match(/^(http|https):\/\//)||v.match(/^mailto:/)||v.match(/^ftp:/)){return;
-}if(v.match(/^#/)){return;}if(v.match(/^\{/)){return;}A.removeAttribute(n);}var D=this.cwhite;var E=this.cblack;function cleanStyle(n,v){if(v.match(/expression/)){A.removeAttribute(n);return;}var F=v.split(/;/);var G=[];Roo.each(F,function(p){p=p.replace(/^\s+/g,'').replace(/\s+$/g,'');
-if(!p.length){return true;}var l=p.split(':').shift().replace(/\s+/g,'');l=l.replace(/^\s+/g,'').replace(/\s+$/g,'');if(D.length&&E.indexOf(l)>-1){return true;}if(D.length&&D.indexOf(l)<0&&D.indexOf(l.toLowerCase())<0){return true;}G.push(p);return true;}
-);if(G.length){A.setAttribute(n,G.join(';'));}else{A.removeAttribute(n);}}for(var i=A.attributes.length-1;i>-1;i--){var a=A.attributes[i];if(a.name.toLowerCase().substr(0,2)=='on'){A.removeAttribute(a.name);continue;}if(Roo.HtmlEditorCore.ablack.indexOf(a.name.toLowerCase())>-1){A.removeAttribute(a.name);
-continue;}if(Roo.HtmlEditorCore.aclean.indexOf(a.name.toLowerCase())>-1){cleanAttr(a.name,a.value);continue;}if(a.name=='style'){cleanStyle(a.name,a.value);continue;}if(a.name=='class'){if(a.value.match(/^Mso/)){A.removeAttribute('class');}if(a.value.match(/^body$/)){A.removeAttribute('class');
-}continue;}}this.cleanUpChildren(A);},cleanWord:function(A){if(!A){this.cleanWord(this.doc.body);return;}if(A.nodeName=='SPAN'&&!A.hasAttributes()&&A.childNodes.length==1&&A.firstChild.nodeName=="#text"){var B=A.firstChild;A.removeChild(B);if(A.getAttribute('lang')!='zh-CN'){A.parentNode.insertBefore(A.ownerDocument.createTextNode(" "),A);
-}A.parentNode.insertBefore(B,A);if(A.getAttribute('lang')!='zh-CN'){A.parentNode.insertBefore(A.ownerDocument.createTextNode(" "),A);}A.parentNode.removeChild(A);}if(A.nodeName=="#text"){return;}if(A.nodeName=="#comment"){A.parentNode.removeChild(A);return;
-}if(A.tagName.toLowerCase().match(/^(style|script|applet|embed|noframes|noscript)$/)){A.parentNode.removeChild(A);return;}if(A.tagName.toLowerCase().match(/^(meta|link|\\?xml:|st1:|o:|v:|font)/)){while(A.childNodes.length){var cn=A.childNodes[0];A.removeChild(cn);
-A.parentNode.insertBefore(cn,A);this.cleanWord(cn);}A.parentNode.removeChild(A);return;}if(A.className.length){var cn=A.className.split(/\W+/);var C=[];Roo.each(cn,function(F){if(F.match(/Mso[a-zA-Z]+/)){return;}C.push(F);});A.className=C.length?C.join(' '):'';
-if(!C.length){A.removeAttribute("class");}}if(A.hasAttribute("lang")){A.removeAttribute("lang");}if(A.hasAttribute("style")){var D=A.getAttribute("style").split(";");var E=[];Roo.each(D,function(s){if(!s.match(/:/)){return;}var kv=s.split(":");if(kv[0].match(/^(mso-|line|font|background|margin|padding|color)/)){return;
-}E.push(s);});A.setAttribute("style",E.length?E.join(';'):'');if(!E.length){A.removeAttribute('style');}}this.iterateChildren(A,this.cleanWord);},iterateChildren:function(A,fn){if(!A.childNodes.length){return;}for(var i=A.childNodes.length-1;i>-1;i--){fn.call(this,A.childNodes[i])}
-},cleanTableWidths:function(A){if(!A){this.cleanTableWidths(this.doc.body);return;}if(A.nodeName=="#text"||A.nodeName=="#comment"){return;}Roo.log(A.tagName);if(!A.tagName.toLowerCase().match(/^(table|td|tr)$/)){this.iterateChildren(A,this.cleanTableWidths);
-return;}if(A.hasAttribute('width')){A.removeAttribute('width');}if(A.hasAttribute("style")){var B=A.getAttribute("style").split(";");var C=[];Roo.each(B,function(s){if(!s.match(/:/)){return;}var kv=s.split(":");if(kv[0].match(/^\s*(width|min-width)\s*$/)){return;
-}C.push(s);});A.setAttribute("style",C.length?C.join(';'):'');if(!C.length){A.removeAttribute('style');}}this.iterateChildren(A,this.cleanTableWidths);},domToHTML:function(A,B,C){B=B||0;C=C||false;if(!A){return this.domToHTML(this.doc.body);}var j;var D=false;
-var E=A.nodeName;var F=Roo.util.Format.htmlEncode(A.tagName);if(E=='#text'){return C?A.nodeValue:A.nodeValue.trim();}var G='';if(E!='BODY'){var i=0;if(F){var H=[];for(i=0;i<A.attributes.length;i++){var I=A.attributes.item(i).name;if(!A.attributes.item(i).value.length){continue;
-}H.push(I+'="'+Roo.util.Format.htmlEncode(A.attributes.item(i).value)+'"');}G="<"+A.tagName+(H.length?(' '+H.join(' ')):'')+">";}else{}}else{F=false;}if(['IMG','BR','HR','INPUT'].indexOf(F)>-1){return G;}if(['PRE','TEXTAREA','TD','A','SPAN'].indexOf(F)>-1){C=true;
-}i=0;var J=A.childNodes.item(i);var D=true;var K='';lastnode='';while(J){var L=C;if(lastnode=='SPAN'){L=true;}if(J.nodeName=='#text'){var M=Roo.util.Format.htmlEncode(J.nodeValue);M=C?M:M.trim();if(!L&&M.length>80){K+="\n"+(new Array(B+1)).join("  ");}K+=M;
-i++;J=A.childNodes.item(i);lastNode='';continue;}D=false;K+=L?'':"\n"+(new Array(B+1)).join("  ");K+=this.domToHTML(J,B+1,C);lastnode=J.nodeName;i++;J=A.childNodes.item(i);}G+=K;if(!D){G+=C?'':"\n"+(new Array(B)).join("  ");}if(F){G+="</"+F+">";}return G;
-},applyBlacklists:function(){var w=typeof(this.owner.white)!='undefined'&&this.owner.white?this.owner.white:[];var b=typeof(this.owner.black)!='undefined'&&this.owner.black?this.owner.black:[];this.white=[];this.black=[];Roo.each(Roo.HtmlEditorCore.white,function(A){if(b.indexOf(A)>-1){return;
-}this.white.push(A);},this);Roo.each(w,function(A){if(b.indexOf(A)>-1){return;}if(this.white.indexOf(A)>-1){return;}this.white.push(A);},this);Roo.each(Roo.HtmlEditorCore.black,function(A){if(w.indexOf(A)>-1){return;}this.black.push(A);},this);Roo.each(b,function(A){if(w.indexOf(A)>-1){return;
+range.insertNode(A);return;}this.execCmd("formatblock",tg);this.undoManager.addEvent();},insertText:function(A){var B=this.createRange();B.deleteContents();B.insertNode(this.doc.createTextNode(A));this.undoManager.addEvent();},relayCmd:function(A,B){switch(A){case 'justifyleft':case 'justifyright':case 'justifycenter':var n=this.getParentElement();
+var td=n.closest('td');if(td){var bl=Roo.htmleditor.Block.factory(td);bl.textAlign=A.replace('justify','');bl.updateElement();this.owner.fireEvent('editorevent',this);return;}this.execCmd('styleWithCSS',true);break;case 'bold':case 'italic':this.execCmd('styleWithCSS',false);
+break;default:break;}this.win.focus();this.execCmd(A,B);this.owner.fireEvent('editorevent',this);this.owner.deferFocus();},execCmd:function(A,B){this.doc.execCommand(A,false,B===undefined?null:B);this.syncValue();},insertAtCursor:function(A){if(!this.activated){return;
+}if(Roo.isGecko||Roo.isOpera||Roo.isSafari){this.win.focus();var B,C;var D=this.win;if(D.getSelection&&D.getSelection().getRangeAt){this.createRange(this.getSelection()).deleteContents();B=D.getSelection().getRangeAt(0);C=typeof(A)=='string'?B.createContextualFragment(A):A;
+B.insertNode(C);B=B.cloneRange();B.collapse(false);D.getSelection().removeAllRanges();D.getSelection().addRange(B);}else if(D.document.selection&&D.document.selection.createRange){var E=typeof(A)=='string'?A:A.outerHTML;D.document.selection.createRange().pasteHTML(E);
+}else{var E=typeof(A)=='string'?A:A.outerHTML;this.execCmd('InsertHTML',E);}this.syncValue();this.deferFocus();}},mozKeyPress:function(e){if(e.ctrlKey){var c=e.getCharCode(),A;if(c>0){c=String.fromCharCode(c).toLowerCase();switch(c){case 'b':A='bold';break;
+case 'i':A='italic';break;case 'u':A='underline';break;}if(A){this.relayCmd(A);e.preventDefault();}}}},fixKeys:function(){if(Roo.isIE){return function(e){var k=e.getKey(),r;if(k==e.TAB){e.stopEvent();r=this.doc.selection.createRange();if(r){r.collapse(true);
+r.pasteHTML('&#160;&#160;&#160;&#160;');this.deferFocus();}return;}};}else if(Roo.isOpera){return function(e){var k=e.getKey();if(k==e.TAB){e.stopEvent();this.win.focus();this.execCmd('InsertHTML','&#160;&#160;&#160;&#160;');this.deferFocus();}};}else if(Roo.isSafari){return function(e){var k=e.getKey();
+if(k==e.TAB){e.stopEvent();this.execCmd('InsertText','\t');this.deferFocus();return;}this.mozKeyPress(e);};}}(),getAllAncestors:function(){var p=this.getSelectedNode();var a=[];if(!p){a.push(p);p=this.getParentElement();}while(p&&(p.nodeType==1)&&(p.tagName.toLowerCase()!='body')){a.push(p);
+p=p.parentNode;}a.push(this.doc.body);return a;},lastSel:false,lastSelNode:false,getSelection:function(){this.assignDocWin();return Roo.lib.Selection.wrap(Roo.isIE?this.doc.selection:this.win.getSelection(),this.doc);},selectNode:function(A,B){var C=A.ownerDocument.createRange();
+try{C.selectNode(A);}catch(e){C.selectNodeContents(A);}if(B===true){C.collapse(true);}var s=this.win.getSelection();s.removeAllRanges();s.addRange(C);},getSelectedNode:function(){var A=this.createRange(this.getSelection()).cloneRange();if(Roo.isIE){var B=A.parentElement();
+while(true){var C=A.duplicate();C.moveToElementText(B);if(C.inRange(A)){break;}if((B.nodeType!=1)||(B.tagName.toLowerCase()=='body')){break;}B=B.parentElement;}return B;}var ac=A.commonAncestorContainer;if(ac.nodeType==3){ac=ac.parentNode;}var ar=ac.childNodes;
+var D=[];var E=[];var F=false;for(var i=0;i<ar.length;i++){if((ar[i].nodeType==3)&&(!ar[i].data.length)){continue;}if(this.rangeIntersectsNode(A,ar[i])&&this.rangeCompareNode(A,ar[i])==3){D.push(ar[i]);continue;}if((ar[i].nodeType==1)&&this.rangeIntersectsNode(A,ar[i])&&(this.rangeCompareNode(A,ar[i])>0)){E.push(ar[i]);
+continue;}if(!this.rangeIntersectsNode(A,ar[i])||(this.rangeCompareNode(A,ar[i])==0)){continue;}F=true;}if(!D.length&&E.length){D=E;}if(F||!D.length||(D.length>1)){return false;}return D[0];},createRange:function(A){if(typeof A!="undefined"){try{return A.getRangeAt?A.getRangeAt(0):A.createRange();
+}catch(e){return this.doc.createRange();}}else{return this.doc.createRange();}},getParentElement:function(){this.assignDocWin();var A=Roo.isIE?this.doc.selection:this.win.getSelection();var B=this.createRange(A);try{var p=B.commonAncestorContainer;while(p.nodeType==3){p=p.parentNode;
+}return p;}catch(e){return null;}},rangeIntersectsNode:function(A,B){var C=B.ownerDocument.createRange();try{C.selectNode(B);}catch(e){C.selectNodeContents(B);}var D=A.cloneRange();D.collapse(true);var E=A.cloneRange();E.collapse(false);var F=C.cloneRange();
+F.collapse(true);var G=C.cloneRange();G.collapse(false);return D.compareBoundaryPoints(Range.START_TO_START,G)==-1&&E.compareBoundaryPoints(Range.START_TO_START,F)==1;},rangeCompareNode:function(A,B){var C=B.ownerDocument.createRange();try{C.selectNode(B);
+}catch(e){C.selectNodeContents(B);}A.collapse(true);C.collapse(true);var ss=A.compareBoundaryPoints(Range.START_TO_START,C);var ee=A.compareBoundaryPoints(Range.END_TO_END,C);var D=ss==1;var E=ee==-1;if(D&&E){return 0;}if(!D&&E){return 1;}if(D&&!E){return 2;
+}return 3;},cleanWordChars:function(A){var B=[[8211,"&#8211;"],[8212,"&#8212;"],[8216,"'"],[8217,"'"],[8220,'"'],[8221,'"'],[8226,"*"],[8230,"..."]];var C=A;Roo.each(B,function(sw){var D=new RegExp("\\u"+sw[0].toString(16),"g");C=C.replace(D,sw[1]);});return C;
+},cleanUpChild:function(A){new Roo.htmleditor.FilterComment({node:A});new Roo.htmleditor.FilterAttributes({node:A,attrib_black:this.ablack,attrib_clean:this.aclean,style_white:this.cwhite,style_black:this.cblack});new Roo.htmleditor.FilterBlack({node:A,tag:this.black}
+);new Roo.htmleditor.FilterKeepChildren({node:A,tag:this.tag_remove});},cleanWord:function(A){new Roo.htmleditor.FilterWord({node:A?A:this.doc.body});},cleanTableWidths:function(A){new Roo.htmleditor.FilterTableWidth({node:A?A:this.doc.body});},applyBlacklists:function(){var w=typeof(this.owner.white)!='undefined'&&this.owner.white?this.owner.white:[];
+var b=typeof(this.owner.black)!='undefined'&&this.owner.black?this.owner.black:[];this.aclean=typeof(this.owner.aclean)!='undefined'&&this.owner.aclean?this.owner.aclean:Roo.HtmlEditorCore.aclean;this.ablack=typeof(this.owner.ablack)!='undefined'&&this.owner.ablack?this.owner.ablack:Roo.HtmlEditorCore.ablack;
+this.tag_remove=typeof(this.owner.tag_remove)!='undefined'&&this.owner.tag_remove?this.owner.tag_remove:Roo.HtmlEditorCore.tag_remove;this.white=[];this.black=[];Roo.each(Roo.HtmlEditorCore.white,function(A){if(b.indexOf(A)>-1){return;}this.white.push(A);
+},this);Roo.each(w,function(A){if(b.indexOf(A)>-1){return;}if(this.white.indexOf(A)>-1){return;}this.white.push(A);},this);Roo.each(Roo.HtmlEditorCore.black,function(A){if(w.indexOf(A)>-1){return;}this.black.push(A);},this);Roo.each(b,function(A){if(w.indexOf(A)>-1){return;
 }if(this.black.indexOf(A)>-1){return;}this.black.push(A);},this);w=typeof(this.owner.cwhite)!='undefined'&&this.owner.cwhite?this.owner.cwhite:[];b=typeof(this.owner.cblack)!='undefined'&&this.owner.cblack?this.owner.cblack:[];this.cwhite=[];this.cblack=[];
 Roo.each(Roo.HtmlEditorCore.cwhite,function(A){if(b.indexOf(A)>-1){return;}this.cwhite.push(A);},this);Roo.each(w,function(A){if(b.indexOf(A)>-1){return;}if(this.cwhite.indexOf(A)>-1){return;}this.cwhite.push(A);},this);Roo.each(Roo.HtmlEditorCore.cblack,function(A){if(w.indexOf(A)>-1){return;
 }this.cblack.push(A);},this);Roo.each(b,function(A){if(w.indexOf(A)>-1){return;}if(this.cblack.indexOf(A)>-1){return;}this.cblack.push(A);},this);},setStylesheets:function(A){if(typeof(A)=='string'){Roo.get(this.iframe.contentDocument.head).createChild({tag:'link',rel:'stylesheet',type:'text/css',href:A}
-);return;}var B=this;Roo.each(A,function(s){if(!s.length){return;}Roo.get(B.iframe.contentDocument.head).createChild({tag:'link',rel:'stylesheet',type:'text/css',href:s});});},removeStylesheets:function(){var A=this;Roo.each(Roo.get(A.iframe.contentDocument.head).select('link[rel=stylesheet]',true).elements,function(s){s.remove();
-});},setStyle:function(A){Roo.get(this.iframe.contentDocument.head).createChild({tag:'style',type:'text/css',html:A});return;}});Roo.HtmlEditorCore.white=['area','br','img','input','hr','wbr','address','blockquote','center','dd','dir','div','dl','dt','h1','h2','h3','h4','h5','h6','hr','isindex','listing','marquee','menu','multicol','ol','p','plaintext','pre','table','ul','xmp','caption','col','colgroup','tbody','td','tfoot','th','thead','tr','dir','menu','ol','ul','dl','embed','object'];
-Roo.HtmlEditorCore.black=['applet','base','basefont','bgsound','blink','body','frame','frameset','head','html','ilayer','iframe','layer','link','meta','object','script','style','title','xml'];Roo.HtmlEditorCore.clean=['script','style','title','xml'];Roo.HtmlEditorCore.remove=['font'];
-Roo.HtmlEditorCore.ablack=['on'];Roo.HtmlEditorCore.aclean=['action','background','codebase','dynsrc','href','lowsrc'];Roo.HtmlEditorCore.pwhite=['http','https','mailto'];Roo.HtmlEditorCore.cwhite=[];Roo.HtmlEditorCore.cblack=[];Roo.HtmlEditorCore.swapCodes=[[8211,"&#8211;"],[8212,"&#8212;"],[8216,"'"],[8217,"'"],[8220,'"'],[8221,'"'],[8226,"*"],[8230,"..."]];
+);return;}var B=this;Roo.each(A,function(s){if(!s.length){return;}Roo.get(B.iframe.contentDocument.head).createChild({tag:'link',rel:'stylesheet',type:'text/css',href:s});});},updateLanguage:function(){if(!this.iframe||!this.iframe.contentDocument){return;
+}Roo.get(this.iframe.contentDocument.body).attr("lang",this.language);},removeStylesheets:function(){var A=this;Roo.each(Roo.get(A.iframe.contentDocument.head).select('link[rel=stylesheet]',true).elements,function(s){s.remove();});},setStyle:function(A){Roo.get(this.iframe.contentDocument.head).createChild({tag:'style',type:'text/css',html:A}
+);return;}});Roo.HtmlEditorCore.white=['AREA','BR','IMG','INPUT','HR','WBR','ADDRESS','BLOCKQUOTE','CENTER','DD','DIR','DIV','DL','DT','H1','H2','H3','H4','H5','H6','HR','ISINDEX','LISTING','MARQUEE','MENU','MULTICOL','OL','P','PLAINTEXT','PRE','TABLE','UL','XMP','CAPTION','COL','COLGROUP','TBODY','TD','TFOOT','TH','THEAD','TR','DIR','MENU','OL','UL','DL','EMBED','OBJECT'];
+Roo.HtmlEditorCore.black=['APPLET','BASE','BASEFONT','BGSOUND','BLINK','BODY','FRAME','FRAMESET','HEAD','HTML','ILAYER','IFRAME','LAYER','LINK','META','OBJECT','SCRIPT','STYLE','TITLE','XML','COLGROUP','COL'];Roo.HtmlEditorCore.clean=['SCRIPT','STYLE','TITLE','XML'];
+Roo.HtmlEditorCore.tag_remove=['FONT','TBODY'];Roo.HtmlEditorCore.ablack=['on'];Roo.HtmlEditorCore.aclean=['action','background','codebase','dynsrc','href','lowsrc'];Roo.HtmlEditorCore.pwhite=['http','https','mailto'];Roo.HtmlEditorCore.cwhite=[];Roo.HtmlEditorCore.cblack=[];
 
 // Roo/form/HtmlEditor.js
-Roo.form.HtmlEditor=function(A){Roo.form.HtmlEditor.superclass.constructor.call(this,A);if(!this.toolbars){this.toolbars=[];}this.editorcore=new Roo.HtmlEditorCore(Roo.apply({owner:this},A));};Roo.extend(Roo.form.HtmlEditor,Roo.form.Field,{clearUp:true,toolbars:false,resizable:false,height:300,width:500,stylesheets:false,cblack:false,cwhite:false,black:false,white:false,allowComments:false,frameId:false,validationEvent:false,deferHeight:true,initialized:false,activated:false,onFocus:Roo.emptyFn,iframePad:3,hideMode:'offsets',actionMode:'container',defaultAutoCreate:{tag:"textarea",style:"width:500px;height:300px;",autocomplete:"new-password"}
-,initComponent:function(){this.addEvents({initialize:true,activate:true,beforesync:true,beforepush:true,sync:true,push:true,editmodechange:true,editorevent:true,firstfocus:true,autosave:true,savedpreview:true,stylesheetsclick:true});this.defaultAutoCreate={tag:"textarea",style:'width: '+this.width+'px;height: '+this.height+'px;',autocomplete:"new-password"}
+Roo.form.HtmlEditor=function(A){Roo.form.HtmlEditor.superclass.constructor.call(this,A);if(!this.toolbars){this.toolbars=[];}this.editorcore=new Roo.HtmlEditorCore(Roo.apply({owner:this},A));};Roo.extend(Roo.form.HtmlEditor,Roo.form.Field,{clearUp:true,toolbars:false,resizable:false,height:300,width:500,stylesheets:false,cblack:false,cwhite:false,black:false,white:false,allowComments:false,enableBlocks:true,autoClean:true,bodyCls:'',language:'en',frameId:false,validationEvent:false,deferHeight:true,initialized:false,activated:false,onFocus:Roo.emptyFn,iframePad:3,hideMode:'offsets',actionMode:'container',defaultAutoCreate:{tag:"textarea",style:"width:500px;height:300px;",autocomplete:"new-password"}
+,initComponent:function(){this.addEvents({initialize:true,activate:true,beforesync:true,beforepush:true,sync:true,push:true,editmodechange:true,editorevent:true,firstfocus:true,autosave:true,savedpreview:true,stylesheetsclick:true,paste:true});this.defaultAutoCreate={tag:"textarea",style:'width: '+this.width+'px;height: '+this.height+'px;',autocomplete:"new-password"}
 ;},createToolbar:function(A){Roo.log("create toolbars");if(!A.toolbars||!A.toolbars.length){A.toolbars=[new Roo.form.HtmlEditor.ToolbarStandard()];}for(var i=0;i<A.toolbars.length;i++){A.toolbars[i]=Roo.factory(typeof(A.toolbars[i])=='string'?{xtype:A.toolbars[i]}
-:A.toolbars[i],Roo.form.HtmlEditor);A.toolbars[i].init(A);}},onRender:function(ct,A){var _t=this;Roo.form.HtmlEditor.superclass.onRender.call(this,ct,A);this.wrap=this.el.wrap({cls:'x-html-editor-wrap',cn:{cls:'x-html-editor-tb'}});this.editorcore.onRender(ct,A);
-if(this.resizable){this.resizeEl=new Roo.Resizable(this.wrap,{pinned:true,wrap:true,dynamic:true,minHeight:this.height,height:this.height,handles:this.resizable,width:this.width,listeners:{resize:function(r,w,h){_t.onResize(w,h);}}});}this.createToolbar(this);
-if(!this.width){this.setSize(this.wrap.getSize());}if(this.resizeEl){this.resizeEl.resizeTo.defer(100,this.resizeEl,[this.width,this.height]);}this.keyNav=new Roo.KeyNav(this.el,{"tab":function(e){e.preventDefault();var B=this.getValue();var C=this.el.dom.selectionStart;
-var D=this.el.dom.selectionEnd;if(!e.shiftKey){this.setValue(B.substring(0,C)+"\t"+B.substring(D));this.el.dom.setSelectionRange(D+1,D+1);return;}var f=B.substring(0,C).split("\t");if(f.pop().length!=0){return;}this.setValue(f.join("\t")+B.substring(D));this.el.dom.setSelectionRange(C-1,C-1);
-},"home":function(e){e.preventDefault();var B=this.el.dom.selectionStart;var C=this.getValue().split("\n");if(!C.length){return;}if(e.ctrlKey){this.el.dom.setSelectionRange(0,0);return;}var D=0;for(var i=0;i<C.length;i++){D+=C[i].length;if(i!=0){D+=1;}if(D<B){continue;
-}D-=C[i].length;break;}if(!e.shiftKey){this.el.dom.setSelectionRange(D,D);return;}this.el.dom.selectionStart=D;this.el.dom.selectionEnd=B;},"end":function(e){e.preventDefault();var B=this.el.dom.selectionStart;var C=this.getValue().split("\n");if(!C.length){return;
-}if(e.ctrlKey){this.el.dom.setSelectionRange(this.getValue().length,this.getValue().length);return;}var D=0;for(var i=0;i<C.length;i++){D+=C[i].length;if(i!=0){D+=1;}if(D<B){continue;}break;}if(!e.shiftKey){this.el.dom.setSelectionRange(D,D);return;}this.el.dom.selectionStart=B;
-this.el.dom.selectionEnd=D;},scope:this,doRelay:function(B,C,D){return Roo.KeyNav.prototype.doRelay.apply(this,arguments);},forceKeyDown:true});},onResize:function(w,h){Roo.form.HtmlEditor.superclass.onResize.apply(this,arguments);var ew=false;var eh=false;
-if(this.el){if(typeof w=='number'){var aw=w-this.wrap.getFrameWidth('lr');this.el.setWidth(this.adjustWidth('textarea',aw));ew=aw;}if(typeof h=='number'){var A=0;for(var i=0;i<this.toolbars.length;i++){A+=this.toolbars[i].tb.el.getHeight();if(this.toolbars[i].footer){A+=this.toolbars[i].footer.el.getHeight();
-}}var ah=h-this.wrap.getFrameWidth('tb')-A;ah-=5;this.el.setHeight(this.adjustWidth('textarea',ah));var eh=ah;}}Roo.log('onResize:'+[w,h,ew,eh].join(','));this.editorcore.onResize(ew,eh);},toggleSourceEdit:function(A){this.editorcore.toggleSourceEdit(A);if(this.editorcore.sourceEditMode){Roo.log('editor - showing textarea');
-this.editorcore.syncValue();this.el.removeClass('x-hidden');this.el.dom.removeAttribute('tabIndex');this.el.focus();for(var i=0;i<this.toolbars.length;i++){if(this.toolbars[i] instanceof Roo.form.HtmlEditor.ToolbarContext){this.toolbars[i].tb.hide();this.toolbars[i].footer.hide();
-}}}else{Roo.log('editor - hiding textarea');this.editorcore.pushValue();this.el.addClass('x-hidden');this.el.dom.setAttribute('tabIndex',-1);for(var i=0;i<this.toolbars.length;i++){if(this.toolbars[i] instanceof Roo.form.HtmlEditor.ToolbarContext){this.toolbars[i].tb.show();
-this.toolbars[i].footer.show();}}}this.setSize(this.wrap.getSize());this.onResize(this.wrap.getSize().width,this.wrap.getSize().height);this.fireEvent('editmodechange',this,this.editorcore.sourceEditMode);},adjustSize:Roo.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap;
-},getPositionEl:function(){return this.wrap;},initEvents:function(){this.originalValue=this.getValue();},markInvalid:Roo.emptyFn,clearInvalid:Roo.emptyFn,setValue:function(v){Roo.form.HtmlEditor.superclass.setValue.call(this,v);this.editorcore.pushValue();
-},deferFocus:function(){this.focus.defer(10,this);},focus:function(){this.editorcore.focus();},onDestroy:function(){if(this.rendered){for(var i=0;i<this.toolbars.length;i++){this.toolbars[i].onDestroy();}this.wrap.dom.innerHTML='';this.wrap.remove();}},onFirstFocus:function(){this.editorcore.onFirstFocus();
-for(var i=0;i<this.toolbars.length;i++){this.toolbars[i].onFirstFocus();}},syncValue:function(){this.editorcore.syncValue();},pushValue:function(){this.editorcore.pushValue();},setStylesheets:function(A){this.editorcore.setStylesheets(A);},removeStylesheets:function(){this.editorcore.removeStylesheets();
-}});
+:A.toolbars[i],Roo.form.HtmlEditor);A.toolbars[i].init(A);}},getSelectedNode:function(){if(this.toolbars.length<2||!this.toolbars[1].tb){return false;}return this.toolbars[1].tb.selectedNode;},onRender:function(ct,A){var _t=this;Roo.form.HtmlEditor.superclass.onRender.call(this,ct,A);
+this.wrap=this.el.wrap({cls:'x-html-editor-wrap',cn:{cls:'x-html-editor-tb'}});this.editorcore.onRender(ct,A);if(this.resizable){this.resizeEl=new Roo.Resizable(this.wrap,{pinned:true,wrap:true,dynamic:true,minHeight:this.height,height:this.height,handles:this.resizable,width:this.width,listeners:{resize:function(r,w,h){_t.onResize(w,h);
+}}});}this.createToolbar(this);if(!this.width){this.setSize(this.wrap.getSize());}if(this.resizeEl){this.resizeEl.resizeTo.defer(100,this.resizeEl,[this.width,this.height]);}this.keyNav=new Roo.KeyNav(this.el,{"tab":function(e){e.preventDefault();var B=this.getValue();
+var C=this.el.dom.selectionStart;var D=this.el.dom.selectionEnd;if(!e.shiftKey){this.setValue(B.substring(0,C)+"\t"+B.substring(D));this.el.dom.setSelectionRange(D+1,D+1);return;}var f=B.substring(0,C).split("\t");if(f.pop().length!=0){return;}this.setValue(f.join("\t")+B.substring(D));
+this.el.dom.setSelectionRange(C-1,C-1);},"home":function(e){e.preventDefault();var B=this.el.dom.selectionStart;var C=this.getValue().split("\n");if(!C.length){return;}if(e.ctrlKey){this.el.dom.setSelectionRange(0,0);return;}var D=0;for(var i=0;i<C.length;
+i++){D+=C[i].length;if(i!=0){D+=1;}if(D<B){continue;}D-=C[i].length;break;}if(!e.shiftKey){this.el.dom.setSelectionRange(D,D);return;}this.el.dom.selectionStart=D;this.el.dom.selectionEnd=B;},"end":function(e){e.preventDefault();var B=this.el.dom.selectionStart;
+var C=this.getValue().split("\n");if(!C.length){return;}if(e.ctrlKey){this.el.dom.setSelectionRange(this.getValue().length,this.getValue().length);return;}var D=0;for(var i=0;i<C.length;i++){D+=C[i].length;if(i!=0){D+=1;}if(D<B){continue;}break;}if(!e.shiftKey){this.el.dom.setSelectionRange(D,D);
+return;}this.el.dom.selectionStart=B;this.el.dom.selectionEnd=D;},scope:this,doRelay:function(B,C,D){return Roo.KeyNav.prototype.doRelay.apply(this,arguments);},forceKeyDown:true});},onResize:function(w,h){Roo.form.HtmlEditor.superclass.onResize.apply(this,arguments);
+var ew=false;var eh=false;if(this.el){if(typeof w=='number'){var aw=w-this.wrap.getFrameWidth('lr');this.el.setWidth(this.adjustWidth('textarea',aw));ew=aw;}if(typeof h=='number'){var A=0;for(var i=0;i<this.toolbars.length;i++){A+=this.toolbars[i].tb.el.getHeight();
+if(this.toolbars[i].footer){A+=this.toolbars[i].footer.el.getHeight();}}var ah=h-this.wrap.getFrameWidth('tb')-A;ah-=5;this.el.setHeight(this.adjustWidth('textarea',ah));var eh=ah;}}Roo.log('onResize:'+[w,h,ew,eh].join(','));this.editorcore.onResize(ew,eh);
+},toggleSourceEdit:function(A){this.editorcore.toggleSourceEdit(A);if(this.editorcore.sourceEditMode){Roo.log('editor - showing textarea');this.editorcore.syncValue();this.el.removeClass('x-hidden');this.el.dom.removeAttribute('tabIndex');this.el.focus();
+this.el.dom.scrollTop=0;for(var i=0;i<this.toolbars.length;i++){if(this.toolbars[i] instanceof Roo.form.HtmlEditor.ToolbarContext){this.toolbars[i].tb.hide();this.toolbars[i].footer.hide();}}}else{Roo.log('editor - hiding textarea');this.editorcore.pushValue();
+this.el.addClass('x-hidden');this.el.dom.setAttribute('tabIndex',-1);for(var i=0;i<this.toolbars.length;i++){if(this.toolbars[i] instanceof Roo.form.HtmlEditor.ToolbarContext){this.toolbars[i].tb.show();this.toolbars[i].footer.show();}}}this.setSize(this.wrap.getSize());
+this.onResize(this.wrap.getSize().width,this.wrap.getSize().height);this.fireEvent('editmodechange',this,this.editorcore.sourceEditMode);},adjustSize:Roo.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap;},getPositionEl:function(){return this.wrap;
+},initEvents:function(){this.originalValue=this.getValue();},markInvalid:Roo.emptyFn,clearInvalid:Roo.emptyFn,setValue:function(v){Roo.form.HtmlEditor.superclass.setValue.call(this,v);this.editorcore.pushValue();},updateLanguage:function(A){this.language=A;
+this.editorcore.language=A;this.editorcore.updateLanguage();},deferFocus:function(){this.focus.defer(10,this);},focus:function(){this.editorcore.focus();},onDestroy:function(){if(this.rendered){for(var i=0;i<this.toolbars.length;i++){this.toolbars[i].onDestroy();
+}this.wrap.dom.innerHTML='';this.wrap.remove();}},onFirstFocus:function(){this.editorcore.onFirstFocus();for(var i=0;i<this.toolbars.length;i++){this.toolbars[i].onFirstFocus();}},syncValue:function(){this.editorcore.syncValue();},pushValue:function(){this.editorcore.pushValue();
+},setStylesheets:function(A){this.editorcore.setStylesheets(A);},removeStylesheets:function(){this.editorcore.removeStylesheets();}});
 // Roo/form/HtmlEditor/ToolbarStandard.js
-Roo.form.HtmlEditor.ToolbarStandard=function(A){Roo.apply(this,A);this.disable=this.disable||{};Roo.applyIf(this.disable,{fontSize:true,colors:true,specialElements:true});};Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,{tb:false,rendered:false,editor:false,editorcore:false,disable:false,createLinkText:'Please enter the URL for the link:',defaultLinkValue:'http:/'+'/',fontFamilies:['Arial','Courier New','Tahoma','Times New Roman','Verdana'],specialChars:["&#169;","&#174;","&#8482;","&#163;","&#8230;","&#247;","&#8364;","&#176;"],specialElements:[{text:"Insert Table",xtype:'MenuItem',xns:Roo.Menu,ihtml:'<table><tr><td>Cell</td></tr></table>'}
+Roo.form.HtmlEditor.ToolbarStandard=function(A){Roo.apply(this,A);this.disable=this.disable||{};Roo.applyIf(this.disable,{fontSize:true,colors:true,specialElements:true});};Roo.form.HtmlEditor.ToolbarStandard.prototype={tb:false,rendered:false,editor:false,editorcore:false,disable:false,createLinkText:'Please enter the URL for the link:',defaultLinkValue:'http:/'+'/',fontFamilies:['Arial','Courier New','Tahoma','Times New Roman','Verdana'],specialChars:["&#169;","&#174;","&#8482;","&#163;","&#8230;","&#247;","&#8364;","&#176;"],specialElements:[{text:"Insert Table",xtype:'MenuItem',xns:Roo.Menu,ihtml:'<table><tr><td>Cell</td></tr></table>'}
 ,{text:"Insert Image",xtype:'MenuItem',xns:Roo.Menu,ihtml:'<img src="about:blank"/>'}],inputElements:["form","input:text","input:hidden","input:checkbox","input:radio","input:password","input:submit","input:button","select","textarea","label"],formats:[["p"],["h1"],["h2"],["h3"],["h4"],["h5"],["h6"],["pre"],["code"],["abbr"],["acronym"],["address"],["cite"],["samp"],["var"],['div'],['span'],['sup'],['sub']],cleanStyles:["font-size"],defaultFont:'tahoma',fontSelect:false,formatCombo:false,init:function(A){this.editor=A;
 this.editorcore=A.editorcore?A.editorcore:A;var B=this.editorcore;var _t=this;var C=B.frameId;var D=this;function btn(id,H,I){var J=C+'-'+id;return {id:J,cmd:id,cls:'x-btn-icon x-edit-'+id,enableToggle:H!==false,scope:_t,handler:I||_t.relayBtnCmd,clickEvent:'mousedown',tooltip:D.buttonTips[id]||undefined,tabIndex:-1}
 ;}var tb=new Roo.Toolbar(A.wrap.dom.firstChild);this.tb=tb;tb.el.on('click',function(e){e.preventDefault();});if(!this.disable.font){};if(!this.disable.formats){this.formatCombo=new Roo.form.ComboBox({store:new Roo.data.SimpleStore({id:'tag',fields:['tag'],data:this.formats}
@@ -1930,54 +2152,56 @@ B.execCmd('hilitecolor',H);B.execCmd('useCSS',true);A.deferFocus();}else{B.execC
 c.select('[style]').each(function(s){s.dom.style.removeProperty(a.actiontype);});B.syncValue();},tabIndex:-1});}F.menu.items.push({actiontype:'tablewidths',html:'Remove Table Widths',handler:function(a,b){B.cleanTableWidths();B.syncValue();},tabIndex:-1});
 F.menu.items.push({actiontype:'word',html:'Remove MS Word Formating',handler:function(a,b){B.cleanWord();B.syncValue();},tabIndex:-1});F.menu.items.push({actiontype:'all',html:'Remove All Styles',handler:function(a,b){var c=Roo.get(B.doc.body);c.select('[style]').each(function(s){s.dom.removeAttribute('style');
 });B.syncValue();},tabIndex:-1});F.menu.items.push({actiontype:'all',html:'Remove All CSS Classes',handler:function(a,b){var c=Roo.get(B.doc.body);c.select('[class]').each(function(s){s.dom.removeAttribute('class');});B.cleanWord();B.syncValue();},tabIndex:-1}
-);F.menu.items.push({actiontype:'tidy',html:'Tidy HTML Source',handler:function(a,b){B.doc.body.innerHTML=B.domToHTML();B.syncValue();},tabIndex:-1});tb.add(F);}if(!this.disable.specialElements){var G={text:"Other;",cls:'x-edit-none',menu:{items:[]}};for(var i=0;
-i<this.specialElements.length;i++){G.menu.items.push(Roo.apply({handler:function(a,b){A.insertAtCursor(this.ihtml);}},this.specialElements[i]));}tb.add(G);}if(this.btns){for(var i=0;i<this.btns.length;i++){var b=Roo.factory(this.btns[i],Roo.form);b.cls='x-edit-none';
-if(typeof(this.btns[i].cls)!='undefined'&&this.btns[i].cls.indexOf('x-init-enable')!==-1){b.cls+=' x-init-enable';}b.scope=B;tb.add(b);}}this.tb.items.each(function(H){if(H.id!=B.frameId+'-sourceedit'&&(typeof(H.cls)!='undefined'&&H.cls.indexOf('x-init-enable')===-1)){H.disable();
-}});this.rendered=true;A.on('editorevent',this.updateToolbar,this);},relayBtnCmd:function(A){this.editorcore.relayCmd(A.cmd);},createLink:function(){Roo.log("create link?");var A=prompt(this.createLinkText,this.defaultLinkValue);if(A&&A!='http:/'+'/'){this.editorcore.relayCmd('createlink',A);
-}},updateToolbar:function(){if(!this.editorcore.activated){this.editor.onFirstFocus();return;}var A=this.tb.items.map,B=this.editorcore.doc,C=this.editorcore.frameId;if(!this.disable.font&&!Roo.isSafari){}if(!this.disable.format){A[C+'-bold'].toggle(B.queryCommandState('bold'));
-A[C+'-italic'].toggle(B.queryCommandState('italic'));A[C+'-underline'].toggle(B.queryCommandState('underline'));A[C+'-strikethrough'].toggle(B.queryCommandState('strikethrough'));}if(!this.disable.alignments){A[C+'-justifyleft'].toggle(B.queryCommandState('justifyleft'));
-A[C+'-justifycenter'].toggle(B.queryCommandState('justifycenter'));A[C+'-justifyright'].toggle(B.queryCommandState('justifyright'));}if(!Roo.isSafari&&!this.disable.lists){A[C+'-insertorderedlist'].toggle(B.queryCommandState('insertorderedlist'));A[C+'-insertunorderedlist'].toggle(B.queryCommandState('insertunorderedlist'));
-}var D=this.editorcore.getAllAncestors();if(this.formatCombo){var E=this.formatCombo.store;this.formatCombo.setValue("");for(var i=0;i<D.length;i++){if(D[i]&&E.query('tag',D[i].tagName.toLowerCase(),false).length){this.formatCombo.setValue(D[i].tagName.toLowerCase());
+);F.menu.items.push({actiontype:'tidy',html:'Tidy HTML Source',handler:function(a,b){new Roo.htmleditor.Tidy(B.doc.body);B.syncValue();},tabIndex:-1});tb.add(F);}if(!this.disable.specialElements){var G={text:"Other;",cls:'x-edit-none',menu:{items:[]}};for(var i=0;
+i<this.specialElements.length;i++){G.menu.items.push(Roo.apply({handler:function(a,b){A.insertAtCursor(this.ihtml);}},this.specialElements[i]));}tb.add(G);}if(this.btns){for(var i=0;i<this.btns.length;i++){var b=Roo.factory(this.btns[i],this.btns[i].xns||Roo.form);
+b.cls='x-edit-none';if(typeof(this.btns[i].cls)!='undefined'&&this.btns[i].cls.indexOf('x-init-enable')!==-1){b.cls+=' x-init-enable';}b.scope=B;tb.add(b);}}this.tb.items.each(function(H){if(H.id!=B.frameId+'-sourceedit'&&(typeof(H.cls)!='undefined'&&H.cls.indexOf('x-init-enable')===-1)){H.disable();
+}});this.rendered=true;A.on('editorevent',this.updateToolbar,this);},relayBtnCmd:function(A){this.editorcore.relayCmd(A.cmd);},createLink:function(){var ec=this.editorcore;var ar=ec.getAllAncestors();var n=false;for(var i=0;i<ar.length;i++){if(ar[i]&&ar[i].nodeName=='A'){n=ar[i];
+break;}}(function(){Roo.MessageBox.show({title:"Add / Edit Link URL",msg:"Enter the url for the link",buttons:Roo.MessageBox.OKCANCEL,fn:function(A,B){if(A!='ok'){return;}if(B&&B!='http:/'+'/'){if(n){n.setAttribute('href',B);}else{ec.relayCmd('createlink',B);
+}}},minWidth:250,prompt:true,modal:true,value:n?n.getAttribute('href'):''});}).defer(100,this);},updateToolbar:function(){if(!this.editorcore.activated){this.editor.onFirstFocus();return;}var A=this.tb.items.map,B=this.editorcore.doc,C=this.editorcore.frameId;
+if(!this.disable.font&&!Roo.isSafari){}if(!this.disable.format){A[C+'-bold'].toggle(B.queryCommandState('bold'));A[C+'-italic'].toggle(B.queryCommandState('italic'));A[C+'-underline'].toggle(B.queryCommandState('underline'));A[C+'-strikethrough'].toggle(B.queryCommandState('strikethrough'));
+}if(!this.disable.alignments){A[C+'-justifyleft'].toggle(B.queryCommandState('justifyleft'));A[C+'-justifycenter'].toggle(B.queryCommandState('justifycenter'));A[C+'-justifyright'].toggle(B.queryCommandState('justifyright'));}if(!Roo.isSafari&&!this.disable.lists){A[C+'-insertorderedlist'].toggle(B.queryCommandState('insertorderedlist'));
+A[C+'-insertunorderedlist'].toggle(B.queryCommandState('insertunorderedlist'));}var D=this.editorcore.getAllAncestors();if(this.formatCombo){var E=this.formatCombo.store;this.formatCombo.setValue("");for(var i=0;i<D.length;i++){if(D[i]&&E.query('tag',D[i].tagName.toLowerCase(),false).length){this.formatCombo.setValue(D[i].tagName.toLowerCase());
 break;}}}Roo.menu.MenuMgr.hideAll();},createFontOptions:function(){var A=[],fs=this.fontFamilies,ff,lc;for(var i=0,B=fs.length;i<B;i++){ff=fs[i];lc=ff.toLowerCase();A.push('<option value="',lc,'" style="font-family:',ff,';"',(this.defaultFont==lc?' selected="true">':'>'),ff,'</option>');
 }return A.join('');},toggleSourceEdit:function(A){Roo.log("toolbar toogle");if(A===undefined){A=!this.sourceEditMode;}this.sourceEditMode=A===true;var B=this.tb.items.get(this.editorcore.frameId+'-sourceedit');if(B.pressed!==this.sourceEditMode){B.toggle(this.sourceEditMode);
 return;}if(A){Roo.log("disabling buttons");this.tb.items.each(function(C){if(C.cmd!='sourceedit'&&(typeof(C.cls)!='undefined'&&C.cls.indexOf('x-init-enable')===-1)){C.disable();}});}else{Roo.log("enabling buttons");if(this.editorcore.initialized){this.tb.items.each(function(C){C.enable();
-});}}Roo.log("calling toggole on editor");this.editor.toggleSourceEdit(A);},buttonTips:{bold:{title:'Bold (Ctrl+B)',text:'Make the selected text bold.',cls:'x-html-editor-tip'},italic:{title:'Italic (Ctrl+I)',text:'Make the selected text italic.',cls:'x-html-editor-tip'}
-,underline:{title:'Underline (Ctrl+U)',text:'Underline the selected text.',cls:'x-html-editor-tip'},strikethrough:{title:'Strikethrough',text:'Strikethrough the selected text.',cls:'x-html-editor-tip'},increasefontsize:{title:'Grow Text',text:'Increase the font size.',cls:'x-html-editor-tip'}
-,decreasefontsize:{title:'Shrink Text',text:'Decrease the font size.',cls:'x-html-editor-tip'},backcolor:{title:'Text Highlight Color',text:'Change the background color of the selected text.',cls:'x-html-editor-tip'},forecolor:{title:'Font Color',text:'Change the color of the selected text.',cls:'x-html-editor-tip'}
-,justifyleft:{title:'Align Text Left',text:'Align text to the left.',cls:'x-html-editor-tip'},justifycenter:{title:'Center Text',text:'Center text in the editor.',cls:'x-html-editor-tip'},justifyright:{title:'Align Text Right',text:'Align text to the right.',cls:'x-html-editor-tip'}
-,insertunorderedlist:{title:'Bullet List',text:'Start a bulleted list.',cls:'x-html-editor-tip'},insertorderedlist:{title:'Numbered List',text:'Start a numbered list.',cls:'x-html-editor-tip'},createlink:{title:'Hyperlink',text:'Make the selected text a hyperlink.',cls:'x-html-editor-tip'}
-,sourceedit:{title:'Source Edit',text:'Switch to source editing mode.',cls:'x-html-editor-tip'}},onDestroy:function(){if(this.rendered){this.tb.items.each(function(A){if(A.menu){A.menu.removeAll();if(A.menu.el){A.menu.el.destroy();}}A.destroy();});}},onFirstFocus:function(){this.tb.items.each(function(A){A.enable();
-});}});
+});Roo.each(Roo.get(this.editorcore.doc.body).query('*[data-block]'),function(e){Roo.htmleditor.Block.factory(e).updateElement(e);},this);}}Roo.log("calling toggole on editor");this.editor.toggleSourceEdit(A);},buttonTips:{bold:{title:'Bold (Ctrl+B)',text:'Make the selected text bold.',cls:'x-html-editor-tip'}
+,italic:{title:'Italic (Ctrl+I)',text:'Make the selected text italic.',cls:'x-html-editor-tip'},underline:{title:'Underline (Ctrl+U)',text:'Underline the selected text.',cls:'x-html-editor-tip'},strikethrough:{title:'Strikethrough',text:'Strikethrough the selected text.',cls:'x-html-editor-tip'}
+,increasefontsize:{title:'Grow Text',text:'Increase the font size.',cls:'x-html-editor-tip'},decreasefontsize:{title:'Shrink Text',text:'Decrease the font size.',cls:'x-html-editor-tip'},backcolor:{title:'Text Highlight Color',text:'Change the background color of the selected text.',cls:'x-html-editor-tip'}
+,forecolor:{title:'Font Color',text:'Change the color of the selected text.',cls:'x-html-editor-tip'},justifyleft:{title:'Align Text Left',text:'Align text to the left.',cls:'x-html-editor-tip'},justifycenter:{title:'Center Text',text:'Center text in the editor.',cls:'x-html-editor-tip'}
+,justifyright:{title:'Align Text Right',text:'Align text to the right.',cls:'x-html-editor-tip'},insertunorderedlist:{title:'Bullet List',text:'Start a bulleted list.',cls:'x-html-editor-tip'},insertorderedlist:{title:'Numbered List',text:'Start a numbered list.',cls:'x-html-editor-tip'}
+,createlink:{title:'Hyperlink',text:'Make the selected text a hyperlink.',cls:'x-html-editor-tip'},sourceedit:{title:'Source Edit',text:'Switch to source editing mode.',cls:'x-html-editor-tip'}},onDestroy:function(){if(this.rendered){this.tb.items.each(function(A){if(A.menu){A.menu.removeAll();
+if(A.menu.el){A.menu.el.destroy();}}A.destroy();});}},onFirstFocus:function(){this.tb.items.each(function(A){A.enable();});}};
 // Roo/form/HtmlEditor/ToolbarContext.js
-Roo.form.HtmlEditor.ToolbarContext=function(A){Roo.apply(this,A);this.styles=this.styles||{};};Roo.form.HtmlEditor.ToolbarContext.types={'IMG':{width:{title:"Width",width:40},height:{title:"Height",width:40},align:{title:"Align",opts:[[""],["left"],["right"],["center"],["top"]],width:80}
-,border:{title:"Border",width:40},alt:{title:"Alt",width:120},src:{title:"Src",width:220}},'A':{name:{title:"Name",width:50},target:{title:"Target",width:120},href:{title:"Href",width:220}},'TABLE':{rows:{title:"Rows",width:20},cols:{title:"Cols",width:20}
-,width:{title:"Width",width:40},height:{title:"Height",width:40},border:{title:"Border",width:20}},'TD':{width:{title:"Width",width:40},height:{title:"Height",width:40},align:{title:"Align",opts:[[""],["left"],["center"],["right"],["justify"],["char"]],width:80}
-,valign:{title:"Valign",opts:[[""],["top"],["middle"],["bottom"],["baseline"]],width:80},colspan:{title:"Colspan",width:20},'font-family':{title:"Font",style:'fontFamily',displayField:'display',optname:'font-family',width:140}},'INPUT':{name:{title:"name",width:120}
-,value:{title:"Value",width:120},width:{title:"Width",width:40}},'LABEL':{'for':{title:"For",width:120}},'TEXTAREA':{name:{title:"name",width:120},rows:{title:"Rows",width:20},cols:{title:"Cols",width:20}},'SELECT':{name:{title:"name",width:120},selectoptions:{title:"Options",width:200}
-},'BODY':{title:{title:"Title",width:200,disabled:true}},'SPAN':{'font-family':{title:"Font",style:'fontFamily',displayField:'display',optname:'font-family',width:140}},'DIV':{'font-family':{title:"Font",style:'fontFamily',displayField:'display',optname:'font-family',width:140}
-},'P':{'font-family':{title:"Font",style:'fontFamily',displayField:'display',optname:'font-family',width:140}},'*':{}};Roo.form.HtmlEditor.ToolbarContext.stores=false;Roo.form.HtmlEditor.ToolbarContext.options={'font-family':[['Helvetica,Arial,sans-serif','Helvetica'],['Courier New','Courier New'],['Tahoma','Tahoma'],['Times New Roman,serif','Times'],['Verdana','Verdana']]}
-;Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,{tb:false,rendered:false,editor:false,editorcore:false,disable:false,styles:false,options:false,toolbars:false,init:function(A){this.editor=A;this.editorcore=A.editorcore?A.editorcore:A;var B=this.editorcore;
-var C=B.frameId;var D=this;function btn(id,F,G){var H=C+'-'+id;return {id:H,cmd:id,cls:'x-btn-icon x-edit-'+id,enableToggle:F!==false,scope:B,handler:G||B.relayBtnCmd,clickEvent:'mousedown',tooltip:D.buttonTips[id]||undefined,tabIndex:-1};}var E=A.wrap.createChild({tag:'div'}
-,A.wrap.dom.firstChild.nextSibling,true);var ty=Roo.form.HtmlEditor.ToolbarContext.types;this.toolbars={};for(var i in ty){this.toolbars[i]=this.buildToolbar(ty[i],i);}this.tb=this.toolbars.BODY;this.tb.el.show();this.buildFooter();this.footer.show();A.on('hide',function(){this.footer.hide()}
-,this);A.on('show',function(){this.footer.show()},this);this.rendered=true;A.on('editorevent',this.updateToolbar,this);},updateToolbar:function(A,ev,B){if(!this.editorcore.activated){this.editor.onFirstFocus();return;}if(ev&&(ev.type=='mouseup'||ev.type=='click')&&ev.target&&ev.target.tagName=='IMG'){B=ev.target;
-var C=B.ownerDocument.createRange();try{C.selectNode(B);}catch(e){C.selectNodeContents(B);}var s=this.editorcore.win.getSelection();s.removeAllRanges();s.addRange(C);}var D=B?false:true;var E=this.editorcore.getAllAncestors();var ty=Roo.form.HtmlEditor.ToolbarContext.types;
-if(!B){B=E.length?(E[0]?E[0]:E[1]):this.editorcore.doc.body;B=B?B:this.editorcore.doc.body;B=B.tagName.length?B:this.editorcore.doc.body;}var tn=B.tagName.toUpperCase();tn=B.tagName.toUpperCase();var F=this.tb.selectedNode;this.tb.selectedNode=B;if((this.tb.name!=tn)||(F!=this.tb.selectedNode)||ev===false){this.tb.el.hide();
-this.tb=typeof(ty[tn])!='undefined'?this.toolbars[tn]:this.toolbars['*'];this.tb.el.show();this.tb.items.first().el.innerHTML=tn+':&nbsp;';if(this.tb.fields){this.tb.fields.each(function(e){if(e.stylename){e.setValue(B.style[e.stylename]);return;}e.setValue(B.getAttribute(e.attrname));
-});}var G=false;for(var i in this.styles){G=true;break;}if(G){var st=this.tb.fields.item(0);st.store.removeAll();var cn=B.className.split(/\s+/);var H=[];if(this.styles['*']){Roo.each(this.styles['*'],function(v){H.push([v,cn.indexOf(v)>-1?1:0]);});}if(this.styles[tn]){Roo.each(this.styles[tn],function(v){H.push([v,cn.indexOf(v)>-1?1:0]);
-});}st.store.loadData(H);st.collapse();st.setValue(cn);}this.tb.selectedNode=B;Roo.menu.MenuMgr.hideAll();}if(!D){return;}var I='';this.footerEls=E.reverse();Roo.each(this.footerEls,function(a,i){if(!a){return;}I+=I.length?' &gt; ':'';I+='<span class="x-ed-loc-'+i+'">'+a.tagName+'</span>';
-});var sz=this.footDisp.up('td').getSize();this.footDisp.dom.style.width=(sz.width-10)+'px';this.footDisp.dom.style.marginLeft='5px';this.footDisp.dom.style.overflow='hidden';this.footDisp.dom.innerHTML=I;},onDestroy:function(){if(this.rendered){this.tb.items.each(function(A){if(A.menu){A.menu.removeAll();
-if(A.menu.el){A.menu.el.destroy();}}A.destroy();});}},onFirstFocus:function(){this.tb.items.each(function(A){A.enable();});},buildToolbar:function(A,nm){var B=this.editor;var C=this.editorcore;var D=B.wrap.createChild({tag:'div'},B.wrap.dom.firstChild.nextSibling,true);
-var tb=new Roo.Toolbar(D);tb.add(nm+":&nbsp;");var E=[];for(var i in this.styles){E.push(i);}if(E&&E.length){tb.addField(new Roo.form.ComboBox({store:new Roo.data.SimpleStore({id:'val',fields:['val','selected'],data:[]}),name:'-roo-edit-className',attrname:'className',displayField:'val',typeAhead:false,mode:'local',editable:false,triggerAction:'all',emptyText:'Select Style',selectOnFocus:true,width:130,listeners:{'select':function(c,r,i){tb.selectedNode.className=r?r.get('val'):'';
-C.syncValue();}}}));}var F=Roo.form.HtmlEditor.ToolbarContext;var G=F.options;for(var i in A){var H=A[i];tb.add(H.title+":&nbsp;");var I=H.opts?H.opts:false;if(H.optname){I=G[H.optname];}if(I){tb.addField(new Roo.form.ComboBox({store:typeof(F.stores[i])!='undefined'?Roo.factory(F.stores[i],Roo.data):new Roo.data.SimpleStore({id:'val',fields:['val','display'],data:I}
-),name:'-roo-edit-'+i,attrname:i,stylename:H.style?H.style:false,displayField:H.displayField?H.displayField:'val',valueField:'val',typeAhead:false,mode:typeof(F.stores[i])!='undefined'?'remote':'local',editable:false,triggerAction:'all',emptyText:'Select',selectOnFocus:true,width:H.width?H.width:130,listeners:{'select':function(c,r,i){if(c.stylename){tb.selectedNode.style[c.stylename]=r.get('val');
-return;}tb.selectedNode.setAttribute(c.attrname,r.get('val'));}}}));continue;tb.addField(new Roo.form.TextField({name:i,width:100,value:''}));continue;}tb.addField(new Roo.form.TextField({name:'-roo-edit-'+i,attrname:i,width:H.width,value:'',listeners:{'change':function(f,nv,ov){tb.selectedNode.setAttribute(f.attrname,nv);
-C.syncValue();}}}));}var J=this;if(nm=='BODY'){tb.addSeparator();tb.addButton({text:'Stylesheets',listeners:{click:function(){J.editor.fireEvent('stylesheetsclick',J.editor);}}});}tb.addFill();tb.addButton({text:'Remove Tag',listeners:{click:function(){var sn=tb.selectedNode;
-var pn=sn.parentNode;var K=sn.childNodes[0];var en=sn.childNodes[sn.childNodes.length-1];while(sn.childNodes.length){var L=sn.childNodes[0];sn.removeChild(L);pn.insertBefore(L,sn);}pn.removeChild(sn);var M=C.createRange();M.setStart(K,0);M.setEnd(en,0);var N=C.getSelection();
-N.removeAllRanges();N.addRange(M);J.updateToolbar(null,null,null);J.footDisp.dom.innerHTML='';}}});tb.el.on('click',function(e){e.preventDefault();});tb.el.setVisibilityMode(Roo.Element.DISPLAY);tb.el.hide();tb.name=nm;return tb;},buildFooter:function(){var A=this.editor.wrap.createChild();
-this.footer=new Roo.Toolbar(A);var B=new Roo.Toolbar.Fill();var _t=this;this.footer.add({text:'&lt;',xtype:'Button',handler:function(){_t.footDisp.scrollTo('left',0,true)}});this.footer.add(B);this.footer.add({text:'&gt;',xtype:'Button',handler:function(){_t.footDisp.select('span').last().scrollIntoView(_t.footDisp,true);
-}});var A=Roo.get(B.el);A.addClass('x-editor-context');this.footDispWrap=A;this.footDispWrap.overflow='hidden';this.footDisp=A.createChild();this.footDispWrap.on('click',this.onContextClick,this)},onContextClick:function(ev,A){ev.preventDefault();var cn=A.className;
-if(!cn.match(/x-ed-loc-/)){return;}var n=cn.split('-').pop();var B=this.footerEls;var C=B[n];var D=this.editorcore.createRange();D.selectNodeContents(C);var E=this.editorcore.getSelection();E.removeAllRanges();E.addRange(D);this.updateToolbar(null,null,C);
-}});
+Roo.form.HtmlEditor.ToolbarContext=function(A){Roo.apply(this,A);this.styles=this.styles||{};};Roo.form.HtmlEditor.ToolbarContext.types={'IMG':[{name:'width',title:"Width",width:40},{name:'height',title:"Height",width:40},{name:'align',title:"Align",opts:[[""],["left"],["right"],["center"],["top"]],width:80}
+,{name:'border',title:"Border",width:40},{name:'alt',title:"Alt",width:120},{name:'src',title:"Src",width:220}],'FIGURE':[{name:'align',title:"Align",opts:[[""],["left"],["right"],["center"],["top"]],width:80}],'A':[{name:'name',title:"Name",width:50},{name:'target',title:"Target",width:120}
+,{name:'href',title:"Href",width:220}],'INPUT':[{name:'name',title:"name",width:120},{name:'value',title:"Value",width:120},{name:'width',title:"Width",width:40}],'LABEL':[{name:'for',title:"For",width:120}],'TEXTAREA':[{name:'name',title:"name",width:120}
+,{name:'rows',title:"Rows",width:20},{name:'cols',title:"Cols",width:20}],'SELECT':[{name:'name',title:"name",width:120},{name:'selectoptions',title:"Options",width:200}],'BODY':[{name:'title',title:"Title",width:200,disabled:true}],'*':[]};Roo.form.HtmlEditor.ToolbarContext.stores=false;
+Roo.form.HtmlEditor.ToolbarContext.options={'font-family':[['Helvetica,Arial,sans-serif','Helvetica'],['Courier New','Courier New'],['Tahoma','Tahoma'],['Times New Roman,serif','Times'],['Verdana','Verdana']]};Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,{tb:false,rendered:false,editor:false,editorcore:false,disable:false,styles:false,options:false,toolbars:false,init:function(A){this.editor=A;
+this.editorcore=A.editorcore?A.editorcore:A;var B=this.editorcore;var C=B.frameId;var D=this;function btn(id,F,G){var H=C+'-'+id;return {id:H,cmd:id,cls:'x-btn-icon x-edit-'+id,enableToggle:F!==false,scope:B,handler:G||B.relayBtnCmd,clickEvent:'mousedown',tooltip:D.buttonTips[id]||undefined,tabIndex:-1}
+;}var E=A.wrap.createChild({tag:'div'},A.wrap.dom.firstChild.nextSibling,true);var ty=Roo.form.HtmlEditor.ToolbarContext.types;this.toolbars={};for(var i in ty){this.toolbars[i]=this.buildToolbar(ty[i],i);}this.tb=this.toolbars.BODY;this.tb.el.show();this.buildFooter();
+this.footer.show();A.on('hide',function(){this.footer.hide()},this);A.on('show',function(){this.footer.show()},this);this.rendered=true;A.on('editorevent',this.updateToolbar,this);},updateToolbar:function(A,ev,B){if(ev){ev.stopEvent();}if(!this.editorcore.activated){this.editor.onFirstFocus();
+return;}if(ev&&(ev.type=='mouseup'||ev.type=='click')&&ev.target&&ev.target.tagName!='BODY'){B=ev.target;}Array.from(this.editorcore.doc.body.querySelectorAll('.roo-ed-selection')).forEach(function(e){e.classList.remove('roo-ed-selection');});var C=this.editorcore.getAllAncestors();
+var ty=Roo.form.HtmlEditor.ToolbarContext.types;if(!B){B=C.length?(C[0]?C[0]:C[1]):this.editorcore.doc.body;B=B?B:this.editorcore.doc.body;B=B.tagName.length?B:this.editorcore.doc.body;}var tn=B.tagName.toUpperCase();var D=this.tb.selectedNode;this.tb.selectedNode=B;
+var E=tn;var db=false;if(B&&B.hasAttribute('data-block')){db=B;}else if(B&&B.closest('[data-block]')){db=B.closest('[data-block]');}var F=false;if(db&&this.editorcore.enableBlocks){F=Roo.htmleditor.Block.factory(db);if(F){db.className=(db.classList.length>0?db.className+' ':'')+'roo-ed-selection';
+tn='BLOCK.'+db.getAttribute('data-block');if(typeof(this.toolbars[tn])=='undefined'){this.toolbars[tn]=this.buildToolbar(false,tn,F.friendly_name,F);}this.toolbars[tn].selectedNode=db;E=F.friendly_name;C=this.editorcore.getAllAncestors();}}if(this.tb.name==tn&&D==this.tb.selectedNode&&ev!==false){return;
+}this.tb.el.hide();this.tb=typeof(this.toolbars[tn])!='undefined'?this.toolbars[tn]:this.toolbars['*'];this.tb.el.show();this.tb.items.first().el.innerHTML=E+':&nbsp;';if(F&&this.tb.fields){this.tb.fields.each(function(e){e.setValue(F[e.name]);});}else if(this.tb.fields&&this.tb.selectedNode){this.tb.fields.each(function(e){if(e.stylename){e.setValue(this.tb.selectedNode.style[e.stylename]);
+return;}e.setValue(this.tb.selectedNode.getAttribute(e.attrname));},this);this.updateToolbarStyles(this.tb.selectedNode);}Roo.menu.MenuMgr.hideAll();this.updateFooter(C);},updateToolbarStyles:function(A){var B=false;for(var i in this.styles){B=true;break;
+}if(B&&this.tb.hasStyles){var st=this.tb.fields.item(0);st.store.removeAll();var cn=A.className.split(/\s+/);var C=[];if(this.styles['*']){Roo.each(this.styles['*'],function(v){C.push([v,cn.indexOf(v)>-1?1:0]);});}if(this.styles[tn]){Roo.each(this.styles[tn],function(v){C.push([v,cn.indexOf(v)>-1?1:0]);
+});}st.store.loadData(C);st.collapse();st.setValue(cn);}},updateFooter:function(A){var B='';if(A===false){this.footDisp.dom.innerHTML='';return;}this.footerEls=A.reverse();Roo.each(this.footerEls,function(a,i){if(!a){return;}B+=B.length?' &gt; ':'';B+='<span class="x-ed-loc-'+i+'">'+a.tagName+'</span>';
+});var sz=this.footDisp.up('td').getSize();this.footDisp.dom.style.width=(sz.width-10)+'px';this.footDisp.dom.style.marginLeft='5px';this.footDisp.dom.style.overflow='hidden';this.footDisp.dom.innerHTML=B;},onDestroy:function(){if(this.rendered){this.tb.items.each(function(A){if(A.menu){A.menu.removeAll();
+if(A.menu.el){A.menu.el.destroy();}}A.destroy();});}},onFirstFocus:function(){this.tb.items.each(function(A){A.enable();});},buildToolbar:function(A,nm,B,C){var D=this.editor;var E=this.editorcore;var F=D.wrap.createChild({tag:'div'},D.wrap.dom.firstChild.nextSibling,true);
+var tb=new Roo.Toolbar(F);if(A===false&&C){A=C.contextMenu(this);}tb.hasStyles=false;tb.name=nm;tb.add((typeof(B)=='undefined'?nm:B)+":&nbsp;");var G=Array.from(this.styles);if(G&&G.length){tb.hasStyles=true;tb.addField(new Roo.form.ComboBox({store:new Roo.data.SimpleStore({id:'val',fields:['val','selected'],data:[]}
+),name:'-roo-edit-className',attrname:'className',displayField:'val',typeAhead:false,mode:'local',editable:false,triggerAction:'all',emptyText:'Select Style',selectOnFocus:true,width:130,listeners:{'select':function(c,r,i){tb.selectedNode.className=r?r.get('val'):'';
+E.syncValue();}}}));}var H=Roo.form.HtmlEditor.ToolbarContext;for(var i=0;i<A.length;i++){if(typeof(A[i].xtype)!='undefined'){tb[typeof(A[i].name)=='undefined'?'add':'addField'](Roo.factory(A[i]));continue;}var I=A[i];tb.add(I.title+":&nbsp;");var J=I.opts?I.opts:false;
+if(I.optname){J=Roo.form.HtmlEditor.ToolbarContext.options[I.optname];}if(J){tb.addField(new Roo.form.ComboBox({store:typeof(H.stores[i])!='undefined'?Roo.factory(H.stores[i],Roo.data):new Roo.data.SimpleStore({id:'val',fields:['val','display'],data:J}),name:'-roo-edit-'+A[i].name,attrname:A[i].name,stylename:I.style?I.style:false,displayField:I.displayField?I.displayField:'val',valueField:'val',typeAhead:false,mode:typeof(H.stores[A[i].name])!='undefined'?'remote':'local',editable:false,triggerAction:'all',emptyText:'Select',selectOnFocus:true,width:I.width?I.width:130,listeners:{'select':function(c,r,i){if(c.stylename){tb.selectedNode.style[c.stylename]=r.get('val');
+E.syncValue();return;}if(r===false){tb.selectedNode.removeAttribute(c.attrname);E.syncValue();return;}tb.selectedNode.setAttribute(c.attrname,r.get('val'));E.syncValue();}}}));continue;}tb.addField(new Roo.form.TextField({name:'-roo-edit-'+A[i].name,attrname:A[i].name,width:I.width,value:'',listeners:{'change':function(f,nv,ov){tb.selectedNode.setAttribute(f.attrname,nv);
+E.syncValue();}}}));}var K=this;var L=!C||C.deleteTitle!==false;if(nm=='BODY'){L=false;tb.addSeparator();tb.addButton({text:'Stylesheets',listeners:{click:function(){K.editor.fireEvent('stylesheetsclick',K.editor);}}});}tb.addFill();if(L){tb.addButton({text:C&&C.deleteTitle?C.deleteTitle:'Remove Block or Formating',listeners:{click:function(){var sn=tb.selectedNode;
+if(C){sn=Roo.htmleditor.Block.factory(tb.selectedNode).removeNode();}if(!sn){return;}var M=sn.childNodes[0]||sn.nextSibling||sn.previousSibling||sn.parentNode;if(sn.hasAttribute('data-block')){M=sn.nextSibling||sn.previousSibling||sn.parentNode;sn.parentNode.removeChild(sn);
+}else if(sn&&sn.tagName!='BODY'){a=new Roo.htmleditor.FilterKeepChildren({tag:false});a.replaceTag(sn);}var N=E.createRange();N.setStart(M,0);N.setEnd(M,0);var O=E.getSelection();O.removeAllRanges();O.addRange(N);K.updateToolbar(null,null,null);K.updateFooter(false);
+}}});}tb.el.on('click',function(e){e.preventDefault();});tb.el.setVisibilityMode(Roo.Element.DISPLAY);tb.el.hide();return tb;},buildFooter:function(){var A=this.editor.wrap.createChild();this.footer=new Roo.Toolbar(A);var B=new Roo.Toolbar.Fill();var _t=this;
+this.footer.add({text:'&lt;',xtype:'Button',handler:function(){_t.footDisp.scrollTo('left',0,true)}});this.footer.add(B);this.footer.add({text:'&gt;',xtype:'Button',handler:function(){_t.footDisp.select('span').last().scrollIntoView(_t.footDisp,true);}});
+var A=Roo.get(B.el);A.addClass('x-editor-context');this.footDispWrap=A;this.footDispWrap.overflow='hidden';this.footDisp=A.createChild();this.footDispWrap.on('click',this.onContextClick,this)},onContextClick:function(ev,A){ev.preventDefault();var cn=A.className;
+if(!cn.match(/x-ed-loc-/)){return;}var n=cn.split('-').pop();var B=this.footerEls;var C=B[n];this.editorcore.selectNode(C);this.updateToolbar(null,null,C);}});
 // Roo/form/BasicForm.js
 Roo.form.BasicForm=function(el,A){this.allItems=[];this.childForms=[];Roo.apply(this,A);this.items=new Roo.util.MixedCollection(false,function(o){return o.id||(o.id=Roo.id());});this.addEvents({beforeaction:true,actionfailed:true,actioncomplete:true});if(el){this.initEl(el);
 }Roo.form.BasicForm.superclass.constructor.call(this);Roo.form.BasicForm.popover.apply();};Roo.extend(Roo.form.BasicForm,Roo.util.Observable,{timeout:30,activeAction:null,trackResetOnLoad:false,childForms:false,allItems:false,waitMsgTarget:false,disableMask:false,errorMask:false,maskOffset:100,initEl:function(el){this.el=Roo.get(el);
@@ -1995,18 +2219,19 @@ this.fireEvent('actioncomplete',this,A);}else{if((typeof(A.result)!='undefined')
 i<B;i++){var C=A[i];var f=this.findField(C.id);if(f){f.markInvalid(C.msg);}}}else{var D,id;for(id in A){if(typeof A[id]!='function'&&(D=this.findField(id))){D.markInvalid(A[id]);}}}Roo.each(this.childForms||[],function(f){f.markInvalid(A);});return this;}
 ,setValues:function(A){if(A instanceof Array){for(var i=0,B=A.length;i<B;i++){var v=A[i];var f=this.findField(v.id);if(f){f.setValue(v.value);if(this.trackResetOnLoad){f.originalValue=f.getValue();}}}}else{var C,id;for(id in A){if(typeof A[id]!='function'&&(C=this.findField(id))){if(C.setFromData&&C.valueField&&C.displayField&&(C.store&&!C.store.isLocal)){var sd={}
 ;sd[C.valueField]=typeof(A[C.hiddenName])=='undefined'?'':A[C.hiddenName];sd[C.displayField]=typeof(A[C.name])=='undefined'?'':A[C.name];C.setFromData(sd);}else{C.setValue(A[id]);}if(this.trackResetOnLoad){C.originalValue=C.getValue();}}}}this.resetHasChanged();
-Roo.each(this.childForms||[],function(f){f.setValues(A);f.resetHasChanged();});return this;},getValues:function(A){if(this.childForms){Roo.each(this.childForms,function(f){this.setValues(f.getValues());},this);}if(typeof(FormData)!='undefined'&&A!==true){try{var fd=(new FormData(this.el.dom)).entries();
-var B={};var C=fd.next();while(!C.done){B[C.value[0]]=C.value[1];C=fd.next();};return B;}catch(e){}}var fs=Roo.lib.Ajax.serializeForm(this.el.dom);if(A===true){return fs;}return Roo.urlDecode(fs);},getFieldValues:function(A){if(this.childForms){Roo.each(this.childForms,function(f){this.setValues(f.getValues());
-},this);}var B={};this.items.each(function(f){if(!f.getName()){return;}var v=f.getValue();if(f.inputType=='radio'){if(typeof(B[f.getName()])=='undefined'){B[f.getName()]='';}if(!f.el.dom.checked){return;}v=f.el.dom.value;}if((typeof(v)=='object')&&f.getRawValue){v=f.getRawValue();
-}if(f.name!=f.getName()){B[f.name]=f.getRawValue();}B[f.getName()]=v;});return B;},clearInvalid:function(){this.items.each(function(f){f.clearInvalid();});Roo.each(this.childForms||[],function(f){f.clearInvalid();});return this;},reset:function(){this.items.each(function(f){f.reset();
-});Roo.each(this.childForms||[],function(f){f.reset();});this.resetHasChanged();return this;},add:function(){this.items.addAll(Array.prototype.slice.call(arguments,0));return this;},remove:function(A){this.items.remove(A);return this;},render:function(){this.items.each(function(f){if(f.isFormField&&!f.rendered&&document.getElementById(f.id)){f.applyTo(f.id);
-}});return this;},applyToFields:function(o){this.items.each(function(f){Roo.apply(f,o);});return this;},applyIfToFields:function(o){this.items.each(function(f){Roo.applyIf(f,o);});return this;}});Roo.BasicForm=Roo.form.BasicForm;Roo.apply(Roo.form.BasicForm,{popover:{padding:5,isApplied:false,isMasked:false,form:false,target:false,intervalID:false,maskEl:false,apply:function(){if(this.isApplied){return;
-}this.maskEl={top:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-top-mask"},true),left:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-left-mask"},true),bottom:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-bottom-mask"}
-,true),right:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-right-mask"},true)};this.maskEl.top.enableDisplayMode("block");this.maskEl.left.enableDisplayMode("block");this.maskEl.bottom.enableDisplayMode("block");this.maskEl.right.enableDisplayMode("block");
-Roo.get(document.body).on('click',function(){this.unmask();},this);Roo.get(document.body).on('touchstart',function(){this.unmask();},this);this.isApplied=true},mask:function(A,B){this.form=A;this.target=B;if(!this.form.errorMask||!B.el){return;}var C=this.target.el.findScrollableParent()||this.target.el.findParent('div.x-layout-active-content',100,true)||Roo.get(document.body);
-var ot=this.target.el.calcOffsetsTo(C);var D=ot[1]-this.form.maskOffset;D=Math.min(D,C.dom.scrollHeight);C.scrollTo('top',D);var el=this.target.wrap||this.target.el;var E=el.getBox();this.maskEl.top.setStyle('position','absolute');this.maskEl.top.setStyle('z-index',10000);
-this.maskEl.top.setSize(Roo.lib.Dom.getDocumentWidth(),E.y-this.padding);this.maskEl.top.setLeft(0);this.maskEl.top.setTop(0);this.maskEl.top.show();this.maskEl.left.setStyle('position','absolute');this.maskEl.left.setStyle('z-index',10000);this.maskEl.left.setSize(E.x-this.padding,E.height+this.padding*2);
-this.maskEl.left.setLeft(0);this.maskEl.left.setTop(E.y-this.padding);this.maskEl.left.show();this.maskEl.bottom.setStyle('position','absolute');this.maskEl.bottom.setStyle('z-index',10000);this.maskEl.bottom.setSize(Roo.lib.Dom.getDocumentWidth(),Roo.lib.Dom.getDocumentHeight()-E.bottom-this.padding);
+Roo.each(this.childForms||[],function(f){f.setValues(A);f.resetHasChanged();});return this;},getValues:function(A){if(this.childForms){Roo.each(this.childForms,function(f){this.setValues(f.getFieldValues());},this);}if(typeof(FormData)!='undefined'&&A!==true){try{var fd=(new FormData(this.el.dom)).entries();
+var B={};var C=fd.next();while(!C.done){B[C.value[0]]=C.value[1];C=fd.next();};return B;}catch(e){}}var fs=Roo.lib.Ajax.serializeForm(this.el.dom);if(A===true){return fs;}return Roo.urlDecode(fs);},getFieldValues:function(A){if(this.childForms){Roo.each(this.childForms,function(f){this.setValues(f.getFieldValues());
+},this);}var B={};this.items.each(function(f){if(f.readOnly&&A!==true){return;}if(!f.getName()){return;}var v=f.getValue();if(f.inputType=='radio'){if(typeof(B[f.getName()])=='undefined'){B[f.getName()]='';}if(!f.el.dom.checked){return;}v=f.el.dom.value;}
+if((typeof(v)=='object')&&f.getRawValue){v=f.getRawValue();}if(f.name!=f.getName()){B[f.name]=f.getRawValue();}B[f.getName()]=v;});return B;},clearInvalid:function(){this.items.each(function(f){f.clearInvalid();});Roo.each(this.childForms||[],function(f){f.clearInvalid();
+});return this;},reset:function(){this.items.each(function(f){f.reset();});Roo.each(this.childForms||[],function(f){f.reset();});this.resetHasChanged();return this;},add:function(){this.items.addAll(Array.prototype.slice.call(arguments,0));return this;},remove:function(A){this.items.remove(A);
+return this;},render:function(){this.items.each(function(f){if(f.isFormField&&!f.rendered&&document.getElementById(f.id)){f.applyTo(f.id);}});return this;},applyToFields:function(o){this.items.each(function(f){Roo.apply(f,o);});return this;},applyIfToFields:function(o){this.items.each(function(f){Roo.applyIf(f,o);
+});return this;}});Roo.BasicForm=Roo.form.BasicForm;Roo.apply(Roo.form.BasicForm,{popover:{padding:5,isApplied:false,isMasked:false,form:false,target:false,intervalID:false,maskEl:false,apply:function(){if(this.isApplied){return;}this.maskEl={top:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-top-mask"}
+,true),left:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-left-mask"},true),bottom:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-bottom-mask"},true),right:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-right-mask"}
+,true)};this.maskEl.top.enableDisplayMode("block");this.maskEl.left.enableDisplayMode("block");this.maskEl.bottom.enableDisplayMode("block");this.maskEl.right.enableDisplayMode("block");Roo.get(document.body).on('click',function(){this.unmask();},this);Roo.get(document.body).on('touchstart',function(){this.unmask();
+},this);this.isApplied=true},mask:function(A,B){this.form=A;this.target=B;if(!this.form.errorMask||!B.el){return;}var C=this.target.el.findScrollableParent()||this.target.el.findParent('div.x-layout-active-content',100,true)||Roo.get(document.body);var ot=this.target.el.calcOffsetsTo(C);
+var D=ot[1]-this.form.maskOffset;D=Math.min(D,C.dom.scrollHeight);C.scrollTo('top',D);var el=this.target.wrap||this.target.el;var E=el.getBox();this.maskEl.top.setStyle('position','absolute');this.maskEl.top.setStyle('z-index',10000);this.maskEl.top.setSize(Roo.lib.Dom.getDocumentWidth(),E.y-this.padding);
+this.maskEl.top.setLeft(0);this.maskEl.top.setTop(0);this.maskEl.top.show();this.maskEl.left.setStyle('position','absolute');this.maskEl.left.setStyle('z-index',10000);this.maskEl.left.setSize(E.x-this.padding,E.height+this.padding*2);this.maskEl.left.setLeft(0);
+this.maskEl.left.setTop(E.y-this.padding);this.maskEl.left.show();this.maskEl.bottom.setStyle('position','absolute');this.maskEl.bottom.setStyle('z-index',10000);this.maskEl.bottom.setSize(Roo.lib.Dom.getDocumentWidth(),Roo.lib.Dom.getDocumentHeight()-E.bottom-this.padding);
 this.maskEl.bottom.setLeft(0);this.maskEl.bottom.setTop(E.bottom+this.padding);this.maskEl.bottom.show();this.maskEl.right.setStyle('position','absolute');this.maskEl.right.setStyle('z-index',10000);this.maskEl.right.setSize(Roo.lib.Dom.getDocumentWidth()-E.right-this.padding,E.height+this.padding*2);
 this.maskEl.right.setLeft(E.right+this.padding);this.maskEl.right.setTop(E.y-this.padding);this.maskEl.right.show();this.intervalID=window.setInterval(function(){Roo.form.BasicForm.popover.unmask();},10000);window.onwheel=function(){return false;};(function(){this.isMasked=true;
 }).defer(500,this);},unmask:function(){if(!this.isApplied||!this.isMasked||!this.form||!this.target||!this.form.errorMask){return;}this.maskEl.top.setStyle('position','absolute');this.maskEl.top.setSize(0,0).setXY([0,0]);this.maskEl.top.hide();this.maskEl.left.setStyle('position','absolute');
@@ -2305,21 +2530,28 @@ this.resizeEl.setSize(this.autoWidth?"auto":C.width,this.autoHeight?"auto":C.hei
 }},isClosable:function(){return this.closable;},beforeSlide:function(){this.el.clip();this.resizeEl.clip();},afterSlide:function(){this.el.unclip();this.resizeEl.unclip();},refresh:function(){if(this.refreshDelegate){this.loaded=false;this.refreshDelegate();
 }},destroy:function(){this.el.removeAllListeners();var A=document.createElement("span");A.appendChild(this.el.dom);A.innerHTML="";this.el.remove();this.el=null;},form:false,view:false,addxtype:function(A){if(A.xtype.match(/^Form$/)){var el;el=this.el.createChild();
 this.form=new Roo.form.Form(A);if(this.form.allItems.length){this.form.render(el.dom);}return this.form;}if(['View','JsonView','DatePicker'].indexOf(A.xtype)>-1){A.el=this.el.appendChild(document.createElement("div"));var B=new Roo.factory(A);B.render&&B.render(false,'');
-this.view=B;return B;}return false;}});Roo.GridPanel=function(A,B){this.wrapper=Roo.DomHelper.append(document.body,{tag:"div",cls:"x-layout-grid-wrapper x-layout-inactive-content"},true);this.wrapper.dom.appendChild(A.getGridEl().dom);Roo.GridPanel.superclass.constructor.call(this,this.wrapper,B);
+this.view=B;return B;}return false;}});
+// Roo/GridPanel.js
+Roo.GridPanel=function(A,B){if(typeof(A.grid)!='undefined'){B=A;A=B.grid;}this.wrapper=Roo.DomHelper.append(document.body,{tag:"div",cls:"x-layout-grid-wrapper x-layout-inactive-content"},true);this.wrapper.dom.appendChild(A.getGridEl().dom);Roo.GridPanel.superclass.constructor.call(this,this.wrapper,B);
 if(this.toolbar){this.toolbar.el.insertBefore(this.wrapper.dom.firstChild);}if(this.footer&&!this.footer.el&&this.footer.xtype){this.footer.container=this.grid.getView().getFooterPanel(true);this.footer.dataSource=this.grid.dataSource;this.footer=Roo.factory(this.footer,Roo);
 }A.monitorWindowResize=false;A.autoHeight=false;A.autoWidth=false;this.grid=A;this.grid.getGridEl().replaceClass("x-layout-inactive-content","x-layout-component-panel");};Roo.extend(Roo.GridPanel,Roo.ContentPanel,{getId:function(){return this.grid.id;},getGrid:function(){return this.grid;
 },setSize:function(A,B){if(!this.ignoreResize(A,B)){var C=this.grid;var D=this.adjustForComponents(A,B);C.getGridEl().setSize(D.width,D.height);C.autoSize();}},beforeSlide:function(){this.grid.getView().scroller.clip();},afterSlide:function(){this.grid.getView().scroller.unclip();
-},destroy:function(){this.grid.destroy();delete this.grid;Roo.GridPanel.superclass.destroy.call(this);}});Roo.NestedLayoutPanel=function(A,B){Roo.NestedLayoutPanel.superclass.constructor.call(this,A.getEl(),B);A.monitorWindowResize=false;this.layout=A;this.layout.getEl().addClass("x-layout-nested-layout");
-};Roo.extend(Roo.NestedLayoutPanel,Roo.ContentPanel,{setSize:function(A,B){if(!this.ignoreResize(A,B)){var C=this.adjustForComponents(A,B);var el=this.layout.getEl();el.setSize(C.width,C.height);var D=el.dom.offsetWidth;this.layout.layout();if(Roo.isIE&&!this.initialized){this.initialized=true;
-this.layout.layout();}}},setActiveState:function(A){this.active=A;if(!A){this.fireEvent("deactivate",this);return;}this.fireEvent("activate",this);if(!this.layout){return;}var B=false;for(var r in this.layout.regions){B=this.layout.getRegion(r);if(B.getActivePanel()){B.setActivePanel(B.getActivePanel());
-continue;}if(!B.panels.length){continue;}B.showPanel(B.getPanel(0));}},getLayout:function(){return this.layout;},addxtype:function(A){return this.layout.addxtype(A);}});Roo.ScrollPanel=function(el,A,B){A=A||{};A.fitToFrame=true;Roo.ScrollPanel.superclass.constructor.call(this,el,A,B);
-this.el.dom.style.overflow="hidden";var C=this.el.wrap({cls:"x-scroller x-layout-inactive-content"});this.el.removeClass("x-layout-inactive-content");this.el.on("mousewheel",this.onWheel,this);var up=C.createChild({cls:"x-scroller-up",html:"&#160;"},this.el.dom);
-var D=C.createChild({cls:"x-scroller-down",html:"&#160;"});up.unselectable();D.unselectable();up.on("click",this.scrollUp,this);D.on("click",this.scrollDown,this);up.addClassOnOver("x-scroller-btn-over");D.addClassOnOver("x-scroller-btn-over");up.addClassOnClick("x-scroller-btn-click");
-D.addClassOnClick("x-scroller-btn-click");this.adjustments=[0,-(up.getHeight()+D.getHeight())];this.resizeEl=this.el;this.el=C;this.up=up;this.down=D;};Roo.extend(Roo.ScrollPanel,Roo.ContentPanel,{increment:100,wheelIncrement:5,scrollUp:function(){this.resizeEl.scroll("up",this.increment,{callback:this.afterScroll,scope:this}
-);},scrollDown:function(){this.resizeEl.scroll("down",this.increment,{callback:this.afterScroll,scope:this});},afterScroll:function(){var el=this.resizeEl;var t=el.dom.scrollTop,h=el.dom.scrollHeight,ch=el.dom.clientHeight;this.up[t==0?"addClass":"removeClass"]("x-scroller-btn-disabled");
-this.down[h-t<=ch?"addClass":"removeClass"]("x-scroller-btn-disabled");},setSize:function(){Roo.ScrollPanel.superclass.setSize.apply(this,arguments);this.afterScroll();},onWheel:function(e){var d=e.getWheelDelta();this.resizeEl.dom.scrollTop-=(d*this.wheelIncrement);
-this.afterScroll();e.stopEvent();},setContent:function(A,B){this.resizeEl.update(A,B);}});Roo.TreePanel=function(A){var el=A.el;var B=A.tree;delete A.tree;delete A.el;var C=el.createChild();A.resizeEl=C;Roo.TreePanel.superclass.constructor.call(this,el,A);
-this.tree=new Roo.tree.TreePanel(C,B);this.on('activate',function(){if(this.tree.rendered){return;}this.tree.render();});};Roo.extend(Roo.TreePanel,Roo.ContentPanel,{fitToFrame:true,autoScroll:true,tree:false});
+},destroy:function(){this.grid.destroy();delete this.grid;Roo.GridPanel.superclass.destroy.call(this);}});
+// Roo/NestedLayoutPanel.js
+Roo.NestedLayoutPanel=function(A,B){Roo.NestedLayoutPanel.superclass.constructor.call(this,A.getEl(),B);A.monitorWindowResize=false;this.layout=A;this.layout.getEl().addClass("x-layout-nested-layout");};Roo.extend(Roo.NestedLayoutPanel,Roo.ContentPanel,{layout:false,setSize:function(A,B){if(!this.ignoreResize(A,B)){var C=this.adjustForComponents(A,B);
+var el=this.layout.getEl();el.setSize(C.width,C.height);var D=el.dom.offsetWidth;this.layout.layout();if(Roo.isIE&&!this.initialized){this.initialized=true;this.layout.layout();}}},setActiveState:function(A){this.active=A;if(!A){this.fireEvent("deactivate",this);
+return;}this.fireEvent("activate",this);if(!this.layout){return;}var B=false;for(var r in this.layout.regions){B=this.layout.getRegion(r);if(B.getActivePanel()){B.setActivePanel(B.getActivePanel());continue;}if(!B.panels.length){continue;}B.showPanel(B.getPanel(0));
+}},getLayout:function(){return this.layout;},addxtype:function(A){return this.layout.addxtype(A);}});
+// Roo/ScrollPanel.js
+Roo.ScrollPanel=function(el,A,B){A=A||{};A.fitToFrame=true;Roo.ScrollPanel.superclass.constructor.call(this,el,A,B);this.el.dom.style.overflow="hidden";var C=this.el.wrap({cls:"x-scroller x-layout-inactive-content"});this.el.removeClass("x-layout-inactive-content");
+this.el.on("mousewheel",this.onWheel,this);var up=C.createChild({cls:"x-scroller-up",html:"&#160;"},this.el.dom);var D=C.createChild({cls:"x-scroller-down",html:"&#160;"});up.unselectable();D.unselectable();up.on("click",this.scrollUp,this);D.on("click",this.scrollDown,this);
+up.addClassOnOver("x-scroller-btn-over");D.addClassOnOver("x-scroller-btn-over");up.addClassOnClick("x-scroller-btn-click");D.addClassOnClick("x-scroller-btn-click");this.adjustments=[0,-(up.getHeight()+D.getHeight())];this.resizeEl=this.el;this.el=C;this.up=up;
+this.down=D;};Roo.extend(Roo.ScrollPanel,Roo.ContentPanel,{increment:100,wheelIncrement:5,scrollUp:function(){this.resizeEl.scroll("up",this.increment,{callback:this.afterScroll,scope:this});},scrollDown:function(){this.resizeEl.scroll("down",this.increment,{callback:this.afterScroll,scope:this}
+);},afterScroll:function(){var el=this.resizeEl;var t=el.dom.scrollTop,h=el.dom.scrollHeight,ch=el.dom.clientHeight;this.up[t==0?"addClass":"removeClass"]("x-scroller-btn-disabled");this.down[h-t<=ch?"addClass":"removeClass"]("x-scroller-btn-disabled");},setSize:function(){Roo.ScrollPanel.superclass.setSize.apply(this,arguments);
+this.afterScroll();},onWheel:function(e){var d=e.getWheelDelta();this.resizeEl.dom.scrollTop-=(d*this.wheelIncrement);this.afterScroll();e.stopEvent();},setContent:function(A,B){this.resizeEl.update(A,B);}});
+// Roo/TreePanel.js
+Roo.TreePanel=function(A){var el=A.el;var B=A.tree;delete A.tree;delete A.el;var C=el.createChild();A.resizeEl=C;Roo.TreePanel.superclass.constructor.call(this,el,A);this.tree=new Roo.tree.TreePanel(C,B);this.on('activate',function(){if(this.tree.rendered){return;
+}this.tree.render();});};Roo.extend(Roo.TreePanel,Roo.ContentPanel,{fitToFrame:true,autoScroll:true,tree:false});
 // Roo/ReaderLayout.js
 Roo.ReaderLayout=function(A,B){var c=A||{size:{}};Roo.ReaderLayout.superclass.constructor.call(this,B||document.body,{north:c.north!==false?Roo.apply({split:false,initialSize:32,titlebar:false},c.north):false,west:c.west!==false?Roo.apply({split:true,initialSize:200,minSize:175,maxSize:400,titlebar:true,collapsible:true,animate:true,margins:{left:5,right:0,bottom:5,top:5}
 ,cmargins:{left:5,right:5,bottom:5,top:5}},c.west):false,east:c.east!==false?Roo.apply({split:true,initialSize:200,minSize:175,maxSize:400,titlebar:true,collapsible:true,animate:true,margins:{left:0,right:5,bottom:5,top:5},cmargins:{left:5,right:5,bottom:5,top:5}
@@ -2331,7 +2563,7 @@ Roo.grid.Grid=function(A,B){this.container=Roo.get(A);this.container.update("");
 }if(this.cm){this.colModel=this.cm;delete this.cm;}if(this.sm){this.selModel=this.sm;delete this.sm;}if(this.selModel){this.selModel=Roo.factory(this.selModel,Roo.grid);this.sm=this.selModel;this.sm.xmodule=this.xmodule||false;}if(typeof(this.colModel.config)=='undefined'){this.colModel=new Roo.grid.ColumnModel(this.colModel);
 this.cm=this.colModel;this.cm.xmodule=this.xmodule||false;}if(this.dataSource){this.dataSource=Roo.factory(this.dataSource,Roo.data);this.ds=this.dataSource;this.ds.xmodule=this.xmodule||false;}if(this.width){this.container.setWidth(this.width);}if(this.height){this.container.setHeight(this.height);
 }this.addEvents({"click":true,"dblclick":true,"contextmenu":true,"mousedown":true,"mouseup":true,"mouseover":true,"mouseout":true,"keypress":true,"keydown":true,"cellclick":true,"celldblclick":true,"rowclick":true,"rowdblclick":true,"headerclick":true,"headerdblclick":true,"rowcontextmenu":true,"cellcontextmenu":true,"headercontextmenu":true,"bodyscroll":true,"columnresize":true,"columnmove":true,"startdrag":true,"enddrag":true,"dragdrop":true,"dragover":true,"dragenter":true,"dragout":true,'rowclass':true,'render':true}
-);Roo.grid.Grid.superclass.constructor.call(this);};Roo.extend(Roo.grid.Grid,Roo.util.Observable,{minColumnWidth:25,autoSizeColumns:false,autoSizeHeaders:true,monitorWindowResize:true,maxRowsToMeasure:0,trackMouseOver:true,enableDragDrop:false,enableColumnMove:true,enableColumnHide:true,enableRowHeightSync:false,stripeRows:true,autoHeight:false,autoExpandColumn:false,autoExpandMin:50,autoExpandMax:1000,view:null,loadMask:false,dropTarget:false,rendered:false,ddText:"{0} selected row{1}",render:function(){var c=this.container;
+);Roo.grid.Grid.superclass.constructor.call(this);};Roo.extend(Roo.grid.Grid,Roo.util.Observable,{minColumnWidth:25,autoSizeColumns:false,autoSizeHeaders:true,monitorWindowResize:true,maxRowsToMeasure:0,trackMouseOver:true,enableDragDrop:false,enableColumnMove:true,enableColumnHide:true,enableRowHeightSync:false,stripeRows:true,autoHeight:false,autoExpandColumn:false,autoExpandMin:50,autoExpandMax:1000,view:null,loadMask:false,dropTarget:false,sortColMenu:false,rendered:false,ddText:"{0} selected row{1}",render:function(){var c=this.container;
 if((!c.dom.offsetHeight||c.dom.offsetHeight<20)||c.getStyle("height")=="auto"){this.autoHeight=true;}var A=this.getView();A.init(this);c.on("click",this.onClick,this);c.on("dblclick",this.onDblClick,this);c.on("contextmenu",this.onContextMenu,this);c.on("keydown",this.onKeyDown,this);
 if(Roo.isTouch){c.on("touchstart",this.onTouchStart,this);}this.relayEvents(c,["mousedown","mouseup","mouseover","mouseout","keypress"]);this.getSelectionModel().init(this);A.render();if(this.loadMask){this.loadMask=new Roo.LoadMask(this.container,Roo.apply({store:this.dataSource}
 ,this.loadMask));}if(this.toolbar&&this.toolbar.xtype){this.toolbar.container=this.getView().getHeaderPanel(true);this.toolbar=new Roo.Toolbar(this.toolbar);}if(this.footer&&this.footer.xtype){this.footer.dataSource=this.getDataSource();this.footer.container=this.getView().getFooterPanel(true);
@@ -2452,11 +2684,11 @@ if(A){for(var dd in A){if(!A[dd].config.isTarget&&A[dd].dragElId){var B=A[dd].dr
 case "lock":var lc=cm.getLockedCount();if(cm.getColumnCount(true)<=lc+1){this.onDenyColumnLock();return;}if(lc!=B){cm.setLocked(B,true,true);cm.moveColumn(B,lc);this.grid.fireEvent("columnmove",B,lc);}else{cm.setLocked(B,true);}break;case "unlock":var lc=cm.getLockedCount();
 if((lc-1)!=B){cm.setLocked(B,false,true);cm.moveColumn(B,lc-1);this.grid.fireEvent("columnmove",B,lc-1);}else{cm.setLocked(B,false);}break;case 'wider':case 'narrow':var cw=cm.getColumnWidth(B);cw+=(A.id=='wider'?1:-1)*50;cw=Math.max(0,cw);cw=Math.min(cw,4000);
 cm.setColumnWidth(B,cw);break;default:B=cm.getIndexById(A.id.substr(4));if(B!=-1){if(A.checked&&cm.getColumnCount(true)<=1){this.onDenyColumnHide();return false;}cm.setHidden(B,A.checked);}}return true;},beforeColMenuShow:function(){var cm=this.cm,A=cm.getColumnCount();
-this.colMenu.removeAll();for(var i=0;i<A;i++){this.colMenu.add(new Roo.menu.CheckItem({id:"col-"+cm.getColumnId(i),text:cm.getColumnHeader(i),checked:!cm.isHidden(i),hideOnClick:false}));}},handleHdCtx:function(g,A,e){e.stopEvent();var hd=this.getHeaderCell(A);
-this.hdCtxIndex=A;var ms=this.hmenu.items,cm=this.cm;ms.get("asc").setDisabled(!cm.isSortable(A));ms.get("desc").setDisabled(!cm.isSortable(A));if(this.grid.enableColLock!==false){ms.get("lock").setDisabled(cm.isLocked(A));ms.get("unlock").setDisabled(!cm.isLocked(A));
-}this.hmenu.show(hd,"tl-bl");},handleHdOver:function(e){var hd=this.findHeaderCell(e.getTarget());if(hd&&!this.headersDisabled){if(this.grid.colModel.isSortable(this.getCellIndex(hd))){this.fly(hd).addClass("x-grid-hd-over");}}},handleHdOut:function(e){var hd=this.findHeaderCell(e.getTarget());
-if(hd){this.fly(hd).removeClass("x-grid-hd-over");}},handleSplitDblClick:function(e,t){var i=this.getCellIndex(t);if(this.grid.enableColumnResize!==false&&this.cm.isResizable(i)&&!this.cm.isFixed(i)){this.autoSizeColumn(i,true);this.layout();}},render:function(){var cm=this.cm;
-var A=cm.getColumnCount();if(this.grid.monitorWindowResize===true){Roo.EventManager.onWindowResize(this.onWindowResize,this,true);}var B=this.renderHeaders();var C=this.templates.body.apply({rows:""});var D=this.templates.master.apply({lockedBody:C,body:C,lockedHeader:B[0],header:B[1]}
+this.colMenu.removeAll();var B=[];for(var i=0;i<A;i++){B.push({id:"col-"+cm.getColumnId(i),text:cm.getColumnHeader(i),checked:!cm.isHidden(i),hideOnClick:false});}if(this.grid.sortColMenu){B.sort(function(a,b){if(a.text==b.text){return 0;}return a.text.toUpperCase()>b.text.toUpperCase()?1:-1;
+});}for(var i=0;i<A;i++){this.colMenu.add(new Roo.menu.CheckItem(B[i]));}},handleHdCtx:function(g,A,e){e.stopEvent();var hd=this.getHeaderCell(A);this.hdCtxIndex=A;var ms=this.hmenu.items,cm=this.cm;ms.get("asc").setDisabled(!cm.isSortable(A));ms.get("desc").setDisabled(!cm.isSortable(A));
+if(this.grid.enableColLock!==false){ms.get("lock").setDisabled(cm.isLocked(A));ms.get("unlock").setDisabled(!cm.isLocked(A));}this.hmenu.show(hd,"tl-bl");},handleHdOver:function(e){var hd=this.findHeaderCell(e.getTarget());if(hd&&!this.headersDisabled){if(this.grid.colModel.isSortable(this.getCellIndex(hd))){this.fly(hd).addClass("x-grid-hd-over");
+}}},handleHdOut:function(e){var hd=this.findHeaderCell(e.getTarget());if(hd){this.fly(hd).removeClass("x-grid-hd-over");}},handleSplitDblClick:function(e,t){var i=this.getCellIndex(t);if(this.grid.enableColumnResize!==false&&this.cm.isResizable(i)&&!this.cm.isFixed(i)){this.autoSizeColumn(i,true);
+this.layout();}},render:function(){var cm=this.cm;var A=cm.getColumnCount();if(this.grid.monitorWindowResize===true){Roo.EventManager.onWindowResize(this.onWindowResize,this,true);}var B=this.renderHeaders();var C=this.templates.body.apply({rows:""});var D=this.templates.master.apply({lockedBody:C,body:C,lockedHeader:B[0],header:B[1]}
 );this.grid.getGridEl().dom.innerHTML=D;this.initElements();this.el.on("scroll",function(){this.el.dom.scrollTop=0;},this);this.scroller.on("scroll",this.handleScroll,this);this.lockedBody.on("mousewheel",this.handleWheel,this);this.mainBody.on("mousewheel",this.handleWheel,this);
 this.mainHd.on("mouseover",this.handleHdOver,this);this.mainHd.on("mouseout",this.handleHdOut,this);this.mainHd.on("dblclick",this.handleSplitDblClick,this,{delegate:"."+this.splitClass});this.lockedHd.on("mouseover",this.handleHdOver,this);this.lockedHd.on("mouseout",this.handleHdOut,this);
 this.lockedHd.on("dblclick",this.handleSplitDblClick,this,{delegate:"."+this.splitClass});if(this.grid.enableColumnResize!==false&&Roo.grid.SplitDragZone){new Roo.grid.SplitDragZone(this.grid,this.lockedHd.dom,this.mainHd.dom);}this.updateSplitters();if(this.grid.enableColumnMove&&Roo.grid.HeaderDragZone){new Roo.grid.HeaderDragZone(this.grid,this.lockedHd.dom,this.mainHd.dom);
index 9f8bb00..2d53d54 100644 (file)
@@ -1,4 +1,4 @@
-/**
+Roo.bootstrap = {};/**
  * set the version of bootstrap based on the stylesheet...
  *
  */
@@ -15358,6 +15358,16 @@ Roo.extend(Roo.data.Store, Roo.util.Observable, {
      * <p>
      * @param {Object} options An object containing properties which control loading options:<ul>
      * <li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>
+     * <li>params.data {Object} if you are using a MemoryProxy / JsonReader, use this as the data to load stuff..
+     * <pre>
+                {
+                    data : data,  // array of key=>value data like JsonReader
+                    total : data.length,
+                    success : true
+                    
+                }
+        </pre>
+            }.</li>
      * <li>callback {Function} A function to be called after the Records have been loaded. The callback is
      * passed the following arguments:<ul>
      * <li>r : Roo.data.Record[]</li>
@@ -25977,1498 +25987,3954 @@ Roo.extend(Roo.bootstrap.form.SecurePass, Roo.bootstrap.form.Input, {
         return this.IsLongEnough(pwd, 6) || !this.IsLongEnough(pwd, 0);
     }
           
-})//<script type="text/javascript">
-
-/*
- * Based  Ext JS Library 1.1.1
- * Copyright(c) 2006-2007, Ext JS, LLC.
- * LGPL
- *
- */
+});
+Roo.htmleditor = {};
  
 /**
- * @class Roo.HtmlEditorCore
- * @extends Roo.Component
- * Provides a the editing component for the HTML editors in Roo. (bootstrap and Roo.form)
- *
- * any element that has display set to 'none' can cause problems in Safari and Firefox.<br/><br/>
+ * @class Roo.htmleditor.Filter
+ * Base Class for filtering htmleditor stuff. - do not use this directly - extend it.
+ * @cfg {DomElement} node The node to iterate and filter
+ * @cfg {boolean|String|Array} tag Tags to replace 
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
  */
 
-Roo.HtmlEditorCore = function(config){
-    
-    
-    Roo.HtmlEditorCore.superclass.constructor.call(this, config);
-    
-    
-    this.addEvents({
-        /**
-         * @event initialize
-         * Fires when the editor is fully initialized (including the iframe)
-         * @param {Roo.HtmlEditorCore} this
-         */
-        initialize: true,
-        /**
-         * @event activate
-         * Fires when the editor is first receives the focus. Any insertion must wait
-         * until after this event.
-         * @param {Roo.HtmlEditorCore} this
-         */
-        activate: true,
-         /**
-         * @event beforesync
-         * Fires before the textarea is updated with content from the editor iframe. Return false
-         * to cancel the sync.
-         * @param {Roo.HtmlEditorCore} this
-         * @param {String} html
-         */
-        beforesync: true,
-         /**
-         * @event beforepush
-         * Fires before the iframe editor is updated with content from the textarea. Return false
-         * to cancel the push.
-         * @param {Roo.HtmlEditorCore} this
-         * @param {String} html
-         */
-        beforepush: true,
-         /**
-         * @event sync
-         * Fires when the textarea is updated with content from the editor iframe.
-         * @param {Roo.HtmlEditorCore} this
-         * @param {String} html
-         */
-        sync: true,
-         /**
-         * @event push
-         * Fires when the iframe editor is updated with content from the textarea.
-         * @param {Roo.HtmlEditorCore} this
-         * @param {String} html
-         */
-        push: true,
-        
-        /**
-         * @event editorevent
-         * Fires when on any editor (mouse up/down cursor movement etc.) - used for toolbar hooks.
-         * @param {Roo.HtmlEditorCore} this
-         */
-        editorevent: true
-        
-    });
-    
-    // at this point this.owner is set, so we can start working out the whitelisted / blacklisted elements
-    
-    // defaults : white / black...
-    this.applyBlacklists();
-    
-    
-    
-};
 
 
-Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
+Roo.htmleditor.Filter = function(cfg) {
+    Roo.apply(this.cfg);
+    // this does not actually call walk as it's really just a abstract class
+}
 
 
-     /**
-     * @cfg {Roo.form.HtmlEditor|Roo.bootstrap.HtmlEditor} the owner field 
-     */
-    
-    owner : false,
-    
-     /**
-     * @cfg {String} resizable  's' or 'se' or 'e' - wrapps the element in a
-     *                        Roo.resizable.
-     */
-    resizable : false,
-     /**
-     * @cfg {Number} height (in pixels)
-     */   
-    height: 300,
-   /**
-     * @cfg {Number} width (in pixels)
-     */   
-    width: 500,
+Roo.htmleditor.Filter.prototype = {
     
-    /**
-     * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets.
-     * 
-     */
-    stylesheets: false,
+    node: false,
     
-    /**
-     * @cfg {boolean} allowComments - default false - allow comments in HTML source - by default they are stripped - if you are editing email you may need this.
-     */
-    allowComments: false,
-    // id of frame..
-    frameId: false,
+    tag: false,
+
+    // overrride to do replace comments.
+    replaceComment : false,
     
-    // private properties
-    validationEvent : false,
-    deferHeight: true,
-    initialized : false,
-    activated : false,
-    sourceEditMode : false,
-    onFocus : Roo.emptyFn,
-    iframePad:3,
-    hideMode:'offsets',
+    // overrride to do replace or do stuff with tags..
+    replaceTag : false,
     
-    clearUp: true,
+    walk : function(dom)
+    {
+        Roo.each( Array.from(dom.childNodes), function( e ) {
+            switch(true) {
+                
+                case e.nodeType == 8 &&  this.replaceComment  !== false: // comment
+                    this.replaceComment(e);
+                    return;
+                
+                case e.nodeType != 1: //not a node.
+                    return;
+                
+                case this.tag === true: // everything
+                case typeof(this.tag) == 'object' && this.tag.indexOf(e.tagName) > -1: // array and it matches.
+                case typeof(this.tag) == 'string' && this.tag == e.tagName: // array and it matches.
+                    if (this.replaceTag && false === this.replaceTag(e)) {
+                        return;
+                    }
+                    if (e.hasChildNodes()) {
+                        this.walk(e);
+                    }
+                    return;
+                
+                default:    // tags .. that do not match.
+                    if (e.hasChildNodes()) {
+                        this.walk(e);
+                    }
+            }
+            
+        }, this);
+        
+    }
+}; 
+
+/**
+ * @class Roo.htmleditor.FilterAttributes
+ * clean attributes and  styles including http:// etc.. in attribute
+ * @constructor
+* Run a new Attribute Filter
+* @param {Object} config Configuration options
+ */
+Roo.htmleditor.FilterAttributes = function(cfg)
+{
+    Roo.apply(this, cfg);
+    this.attrib_black = this.attrib_black || [];
+    this.attrib_white = this.attrib_white || [];
+
+    this.attrib_clean = this.attrib_clean || [];
+    this.style_white = this.style_white || [];
+    this.style_black = this.style_black || [];
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterAttributes, Roo.htmleditor.Filter,
+{
+    tag: true, // all tags
     
-    // blacklist + whitelisted elements..
-    black: false,
-    white: false,
-     
-    bodyCls : '',
+    attrib_black : false, // array
+    attrib_clean : false,
+    attrib_white : false,
 
-    /**
-     * Protected method that will not generally be called directly. It
-     * is called when the editor initializes the iframe with HTML contents. Override this method if you
-     * want to change the initialization markup of the iframe (e.g. to add stylesheets).
-     */
-    getDocMarkup : function(){
-        // body styles..
-        var st = '';
+    style_white : false,
+    style_black : false,
+     
+     
+    replaceTag : function(node)
+    {
+        if (!node.attributes || !node.attributes.length) {
+            return true;
+        }
         
-        // inherit styels from page...?? 
-        if (this.stylesheets === false) {
+        for (var i = node.attributes.length-1; i > -1 ; i--) {
+            var a = node.attributes[i];
+            //console.log(a);
+            if (this.attrib_white.length && this.attrib_white.indexOf(a.name.toLowerCase()) < 0) {
+                node.removeAttribute(a.name);
+                continue;
+            }
             
-            Roo.get(document.head).select('style').each(function(node) {
-                st += node.dom.outerHTML || new XMLSerializer().serializeToString(node.dom);
-            });
             
-            Roo.get(document.head).select('link').each(function(node) { 
-                st += node.dom.outerHTML || new XMLSerializer().serializeToString(node.dom);
-            });
             
-        } else if (!this.stylesheets.length) {
-                // simple..
-                st = '<style type="text/css">' +
-                    'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
-                   '</style>';
-        } else {
-            for (var i in this.stylesheets) { 
-                st += '<link rel="stylesheet" href="' + this.stylesheets[i] +'" type="text/css">';
+            if (a.name.toLowerCase().substr(0,2)=='on')  {
+                node.removeAttribute(a.name);
+                continue;
+            }
+            
+            
+            if (this.attrib_black.indexOf(a.name.toLowerCase()) > -1) {
+                node.removeAttribute(a.name);
+                continue;
+            }
+            if (this.attrib_clean.indexOf(a.name.toLowerCase()) > -1) {
+                this.cleanAttr(node,a.name,a.value); // fixme..
+                continue;
+            }
+            if (a.name == 'style') {
+                this.cleanStyle(node,a.name,a.value);
+                continue;
+            }
+            /// clean up MS crap..
+            // tecnically this should be a list of valid class'es..
+            
+            
+            if (a.name == 'class') {
+                if (a.value.match(/^Mso/)) {
+                    node.removeAttribute('class');
+                }
+                
+                if (a.value.match(/^body$/)) {
+                    node.removeAttribute('class');
+                }
+                continue;
             }
             
+            
+            // style cleanup!?
+            // class cleanup?
+            
         }
+        return true; // clean children
+    },
         
-        st +=  '<style type="text/css">' +
-            'IMG { cursor: pointer } ' +
-        '</style>';
-
-        var cls = 'roo-htmleditor-body';
+    cleanAttr: function(node, n,v)
+    {
         
-        if(this.bodyCls.length){
-            cls += ' ' + this.bodyCls;
+        if (v.match(/^\./) || v.match(/^\//)) {
+            return;
+        }
+        if (v.match(/^(http|https):\/\//)
+            || v.match(/^mailto:/) 
+            || v.match(/^ftp:/)
+            || v.match(/^data:/)
+            ) {
+            return;
+        }
+        if (v.match(/^#/)) {
+            return;
+        }
+        if (v.match(/^\{/)) { // allow template editing.
+            return;
         }
+//            Roo.log("(REMOVE TAG)"+ node.tagName +'.' + n + '=' + v);
+        node.removeAttribute(n);
         
-        return '<html><head>' + st  +
-            //<style type="text/css">' +
-            //'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
-            //'</style>' +
-            ' </head><body contenteditable="true" data-enable-grammerly="true" class="' +  cls + '"></body></html>';
     },
-
-    // private
-    onRender : function(ct, position)
+    cleanStyle : function(node,  n,v)
     {
-        var _t = this;
-        //Roo.HtmlEditorCore.superclass.onRender.call(this, ct, position);
-        this.el = this.owner.inputEl ? this.owner.inputEl() : this.owner.el;
-        
-        
-        this.el.dom.style.border = '0 none';
-        this.el.dom.setAttribute('tabIndex', -1);
-        this.el.addClass('x-hidden hide');
-        
-        
-        
-        if(Roo.isIE){ // fix IE 1px bogus margin
-            this.el.applyStyles('margin-top:-1px;margin-bottom:-1px;')
+        if (v.match(/expression/)) { //XSS?? should we even bother..
+            node.removeAttribute(n);
+            return;
         }
-       
         
-        this.frameId = Roo.id();
+        var parts = v.split(/;/);
+        var clean = [];
         
-         
+        Roo.each(parts, function(p) {
+            p = p.replace(/^\s+/g,'').replace(/\s+$/g,'');
+            if (!p.length) {
+                return true;
+            }
+            var l = p.split(':').shift().replace(/\s+/g,'');
+            l = l.replace(/^\s+/g,'').replace(/\s+$/g,'');
+            
+            if ( this.style_black.length && (this.style_black.indexOf(l) > -1 || this.style_black.indexOf(l.toLowerCase()) > -1)) {
+                return true;
+            }
+            //Roo.log()
+            // only allow 'c whitelisted system attributes'
+            if ( this.style_white.length &&  style_white.indexOf(l) < 0 && style_white.indexOf(l.toLowerCase()) < 0 ) {
+                return true;
+            }
+            
+            
+            clean.push(p);
+            return true;
+        },this);
+        if (clean.length) { 
+            node.setAttribute(n, clean.join(';'));
+        } else {
+            node.removeAttribute(n);
+        }
         
-        var iframe = this.owner.wrap.createChild({
-            tag: 'iframe',
-            cls: 'form-control', // bootstrap..
-            id: this.frameId,
-            name: this.frameId,
-            frameBorder : 'no',
-            'src' : Roo.SSL_SECURE_URL ? Roo.SSL_SECURE_URL  :  "javascript:false"
-        }, this.el
-        );
+    }
         
         
-        this.iframe = iframe.dom;
-
-         this.assignDocWin();
         
-        this.doc.designMode = 'on';
-       
-        this.doc.open();
-        this.doc.write(this.getDocMarkup());
-        this.doc.close();
+    
+});/**
+ * @class Roo.htmleditor.FilterBlack
+ * remove blacklisted elements.
+ * @constructor
+ * Run a new Blacklisted Filter
+ * @param {Object} config Configuration options
+ */
 
-        
-        var task = { // must defer to wait for browser to be ready
-            run : function(){
-                //console.log("run task?" + this.doc.readyState);
-                this.assignDocWin();
-                if(this.doc.body || this.doc.readyState == 'complete'){
-                    try {
-                        this.doc.designMode="on";
-                    } catch (e) {
-                        return;
-                    }
-                    Roo.TaskMgr.stop(task);
-                    this.initEditor.defer(10, this);
-                }
-            },
-            interval : 10,
-            duration: 10000,
-            scope: this
-        };
-        Roo.TaskMgr.start(task);
+Roo.htmleditor.FilterBlack = function(cfg)
+{
+    Roo.apply(this, cfg);
+    this.walk(cfg.node);
+}
 
-    },
+Roo.extend(Roo.htmleditor.FilterBlack, Roo.htmleditor.Filter,
+{
+    tag : true, // all elements.
+   
+    replaceTag : function(n)
+    {
+        n.parentNode.removeChild(n);
+    }
+});
+/**
+ * @class Roo.htmleditor.FilterComment
+ * remove comments.
+ * @constructor
+* Run a new Comments Filter
+* @param {Object} config Configuration options
+ */
+Roo.htmleditor.FilterComment = function(cfg)
+{
+    this.walk(cfg.node);
+}
 
-    // private
-    onResize : function(w, h)
+Roo.extend(Roo.htmleditor.FilterComment, Roo.htmleditor.Filter,
+{
+  
+    replaceComment : function(n)
     {
-         Roo.log('resize: ' +w + ',' + h );
-        //Roo.HtmlEditorCore.superclass.onResize.apply(this, arguments);
-        if(!this.iframe){
-            return;
-        }
-        if(typeof w == 'number'){
-            
-            this.iframe.style.width = w + 'px';
-        }
-        if(typeof h == 'number'){
-            
-            this.iframe.style.height = h + 'px';
-            if(this.doc){
-                (this.doc.body || this.doc.documentElement).style.height = (h - (this.iframePad*2)) + 'px';
-            }
-        }
-        
-    },
+        n.parentNode.removeChild(n);
+    }
+});/**
+ * @class Roo.htmleditor.FilterKeepChildren
+ * remove tags but keep children
+ * @constructor
+ * Run a new Keep Children Filter
+ * @param {Object} config Configuration options
+ */
 
-    /**
-     * Toggles the editor between standard and source edit mode.
-     * @param {Boolean} sourceEdit (optional) True for source edit, false for standard
-     */
-    toggleSourceEdit : function(sourceEditMode){
-        
-        this.sourceEditMode = sourceEditMode === true;
-        
-        if(this.sourceEditMode){
-            Roo.get(this.iframe).addClass(['x-hidden','hide']);     //FIXME - what's the BS styles for these
-            
-        }else{
-            Roo.get(this.iframe).removeClass(['x-hidden','hide']);
-            //this.iframe.className = '';
-            this.deferFocus();
-        }
-        //this.setSize(this.owner.wrap.getSize());
-        //this.fireEvent('editmodechange', this, this.sourceEditMode);
-    },
+Roo.htmleditor.FilterKeepChildren = function(cfg)
+{
+    Roo.apply(this, cfg);
+    if (this.tag === false) {
+        return; // dont walk.. (you can use this to use this just to do a child removal on a single tag )
+    }
+    this.walk(cfg.node);
+}
 
+Roo.extend(Roo.htmleditor.FilterKeepChildren, Roo.htmleditor.FilterBlack,
+{
     
   
-
-    /**
-     * Protected method that will not generally be called directly. If you need/want
-     * custom HTML cleanup, this is the method you should override.
-     * @param {String} html The HTML to be cleaned
-     * return {String} The cleaned HTML
-     */
-    cleanHtml : function(html){
-        html = String(html);
-        if(html.length > 5){
-            if(Roo.isSafari){ // strip safari nonsense
-                html = html.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi, '');
-            }
-        }
-        if(html == '&nbsp;'){
-            html = '';
-        }
-        return html;
-    },
-
-    /**
-     * HTML Editor -> Textarea
-     * Protected method that will not generally be called directly. Syncs the contents
-     * of the editor iframe with the textarea.
-     */
-    syncValue : function(){
-        if(this.initialized){
-            var bd = (this.doc.body || this.doc.documentElement);
-            //this.cleanUpPaste(); -- this is done else where and causes havoc..
-            var html = bd.innerHTML;
-            if(Roo.isSafari){
-                var bs = bd.getAttribute('style'); // Safari puts text-align styles on the body element!
-                var m = bs ? bs.match(/text-align:(.*?);/i) : false;
-                if(m && m[1]){
-                    html = '<div style="'+m[0]+'">' + html + '</div>';
+    replaceTag : function(node)
+    {
+        // walk children...
+        //Roo.log(node);
+        var ar = Array.from(node.childNodes);
+        //remove first..
+        for (var i = 0; i < ar.length; i++) {
+            if (ar[i].nodeType == 1) {
+                if (
+                    (typeof(this.tag) == 'object' && this.tag.indexOf(ar[i].tagName) > -1)
+                    || // array and it matches
+                    (typeof(this.tag) == 'string' && this.tag == ar[i].tagName)
+                ) {
+                    this.replaceTag(ar[i]); // child is blacklisted as well...
+                    continue;
                 }
             }
-            html = this.cleanHtml(html);
-            // fix up the special chars.. normaly like back quotes in word...
-            // however we do not want to do this with chinese..
-            html = html.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u0080-\uFFFF]/g, function(match) {
-                
-                var cc = match.charCodeAt();
-
-                // Get the character value, handling surrogate pairs
-                if (match.length == 2) {
-                    // It's a surrogate pair, calculate the Unicode code point
-                    var high = match.charCodeAt(0) - 0xD800;
-                    var low  = match.charCodeAt(1) - 0xDC00;
-                    cc = (high * 0x400) + low + 0x10000;
-                }  else if (
-                    (cc >= 0x4E00 && cc < 0xA000 ) ||
-                    (cc >= 0x3400 && cc < 0x4E00 ) ||
-                    (cc >= 0xf900 && cc < 0xfb00 )
-                ) {
-                        return match;
-                }  
+        }  
+        ar = Array.from(node.childNodes);
+        for (var i = 0; i < ar.length; i++) {
          
-                // No, use a numeric entity. Here we brazenly (and possibly mistakenly)
-                return "&#" + cc + ";";
+            node.removeChild(ar[i]);
+            // what if we need to walk these???
+            node.parentNode.insertBefore(ar[i], node);
+            if (this.tag !== false) {
+                this.walk(ar[i]);
                 
-                
-            });
-            
-            
-             
-            if(this.owner.fireEvent('beforesync', this, html) !== false){
-                this.el.dom.value = html;
-                this.owner.fireEvent('sync', this, html);
-            }
-        }
-    },
-
-    /**
-     * Protected method that will not generally be called directly. Pushes the value of the textarea
-     * into the iframe editor.
-     */
-    pushValue : function(){
-        if(this.initialized){
-            var v = this.el.dom.value.trim();
-            
-//            if(v.length < 1){
-//                v = '&#160;';
-//            }
-            
-            if(this.owner.fireEvent('beforepush', this, v) !== false){
-                var d = (this.doc.body || this.doc.documentElement);
-                d.innerHTML = v;
-                this.cleanUpPaste();
-                this.el.dom.value = d.innerHTML;
-                this.owner.fireEvent('push', this, v);
             }
         }
-    },
+        node.parentNode.removeChild(node);
+        return false; // don't walk children
+        
+        
+    }
+});/**
+ * @class Roo.htmleditor.FilterParagraph
+ * paragraphs cause a nightmare for shared content - this filter is designed to be called ? at various points when editing
+ * like on 'push' to remove the <p> tags and replace them with line breaks.
+ * @constructor
+ * Run a new Paragraph Filter
+ * @param {Object} config Configuration options
+ */
 
-    // private
-    deferFocus : function(){
-        this.focus.defer(10, this);
-    },
+Roo.htmleditor.FilterParagraph = function(cfg)
+{
+    // no need to apply config.
+    this.walk(cfg.node);
+}
 
-    // doc'ed in Field
-    focus : function(){
-        if(this.win && !this.sourceEditMode){
-            this.win.focus();
-        }else{
-            this.el.focus();
-        }
-    },
+Roo.extend(Roo.htmleditor.FilterParagraph, Roo.htmleditor.Filter,
+{
     
-    assignDocWin: function()
+     
+    tag : 'P',
+    
+     
+    replaceTag : function(node)
     {
-        var iframe = this.iframe;
         
-         if(Roo.isIE){
-            this.doc = iframe.contentWindow.document;
-            this.win = iframe.contentWindow;
-        } else {
-//            if (!Roo.get(this.frameId)) {
-//                return;
-//            }
-//            this.doc = (iframe.contentDocument || Roo.get(this.frameId).dom.document);
-//            this.win = Roo.get(this.frameId).dom.contentWindow;
-            
-            if (!Roo.get(this.frameId) && !iframe.contentDocument) {
-                return;
-            }
-            
-            this.doc = (iframe.contentDocument || Roo.get(this.frameId).dom.document);
-            this.win = (iframe.contentWindow || Roo.get(this.frameId).dom.contentWindow);
+        if (node.childNodes.length == 1 &&
+            node.childNodes[0].nodeType == 3 &&
+            node.childNodes[0].textContent.trim().length < 1
+            ) {
+            // remove and replace with '<BR>';
+            node.parentNode.replaceChild(node.ownerDocument.createElement('BR'),node);
+            return false; // no need to walk..
         }
-    },
-    
-    // private
-    initEditor : function(){
-        //console.log("INIT EDITOR");
-        this.assignDocWin();
-        
-        
-        
-        this.doc.designMode="on";
-        this.doc.open();
-        this.doc.write(this.getDocMarkup());
-        this.doc.close();
+        var ar = Array.from(node.childNodes);
+        for (var i = 0; i < ar.length; i++) {
+            node.removeChild(ar[i]);
+            // what if we need to walk these???
+            node.parentNode.insertBefore(ar[i], node);
+        }
+        // now what about this?
+        // <p> &nbsp; </p>
         
-        var dbody = (this.doc.body || this.doc.documentElement);
-        //var ss = this.el.getStyles('font-size', 'font-family', 'background-image', 'background-repeat');
-        // this copies styles from the containing element into thsi one..
-        // not sure why we need all of this..
-        //var ss = this.el.getStyles('font-size', 'background-image', 'background-repeat');
+        // double BR.
+        node.parentNode.insertBefore(node.ownerDocument.createElement('BR'), node);
+        node.parentNode.insertBefore(node.ownerDocument.createElement('BR'), node);
+        node.parentNode.removeChild(node);
         
-        //var ss = this.el.getStyles( 'background-image', 'background-repeat');
-        //ss['background-attachment'] = 'fixed'; // w3c
-        dbody.bgProperties = 'fixed'; // ie
-        //Roo.DomHelper.applyStyles(dbody, ss);
-        Roo.EventManager.on(this.doc, {
-            //'mousedown': this.onEditorEvent,
-            'mouseup': this.onEditorEvent,
-            'dblclick': this.onEditorEvent,
-            'click': this.onEditorEvent,
-            'keyup': this.onEditorEvent,
-            buffer:100,
-            scope: this
-        });
-        if(Roo.isGecko){
-            Roo.EventManager.on(this.doc, 'keypress', this.mozKeyPress, this);
-        }
-        if(Roo.isIE || Roo.isSafari || Roo.isOpera){
-            Roo.EventManager.on(this.doc, 'keydown', this.fixKeys, this);
-        }
-        this.initialized = true;
+        return false;
 
-        this.owner.fireEvent('initialize', this);
-        this.pushValue();
-    },
+    }
+    
+});/**
+ * @class Roo.htmleditor.FilterSpan
+ * filter span's with no attributes out..
+ * @constructor
+ * Run a new Span Filter
+ * @param {Object} config Configuration options
+ */
 
-    // private
-    onDestroy : function(){
-        
-        
-        
-        if(this.rendered){
-            
-            //for (var i =0; i < this.toolbars.length;i++) {
-            //    // fixme - ask toolbars for heights?
-            //    this.toolbars[i].onDestroy();
-           // }
-            
-            //this.wrap.dom.innerHTML = '';
-            //this.wrap.remove();
+Roo.htmleditor.FilterSpan = function(cfg)
+{
+    // no need to apply config.
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterSpan, Roo.htmleditor.FilterKeepChildren,
+{
+     
+    tag : 'SPAN',
+     
+    replaceTag : function(node)
+    {
+        if (node.attributes && node.attributes.length > 0) {
+            return true; // walk if there are any.
         }
-    },
+        Roo.htmleditor.FilterKeepChildren.prototype.replaceTag.call(this, node);
+        return false;
+     
+    }
+    
+});/**
+ * @class Roo.htmleditor.FilterTableWidth
+  try and remove table width data - as that frequently messes up other stuff.
+ * 
+ *      was cleanTableWidths.
+ *
+ * Quite often pasting from word etc.. results in tables with column and widths.
+ * This does not work well on fluid HTML layouts - like emails. - so this code should hunt an destroy them..
+ *
+ * @constructor
+ * Run a new Table Filter
+ * @param {Object} config Configuration options
+ */
 
-    // private
-    onFirstFocus : function(){
+Roo.htmleditor.FilterTableWidth = function(cfg)
+{
+    // no need to apply config.
+    this.tag = ['TABLE', 'TD', 'TR', 'TH', 'THEAD', 'TBODY' ];
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterTableWidth, Roo.htmleditor.Filter,
+{
+     
+     
+    
+    replaceTag: function(node) {
         
-        this.assignDocWin();
         
+      
+        if (node.hasAttribute('width')) {
+            node.removeAttribute('width');
+        }
         
-        this.activated = true;
          
-    
-        if(Roo.isGecko){ // prevent silly gecko errors
-            this.win.focus();
-            var s = this.win.getSelection();
-            if(!s.focusNode || s.focusNode.nodeType != 3){
-                var r = s.getRangeAt(0);
-                r.selectNodeContents((this.doc.body || this.doc.documentElement));
-                r.collapse(true);
-                this.deferFocus();
-            }
-            try{
-                this.execCmd('useCSS', true);
-                this.execCmd('styleWithCSS', false);
-            }catch(e){}
-        }
-        this.owner.fireEvent('activate', this);
-    },
-
-    // private
-    adjustFont: function(btn){
-        var adjust = btn.cmd == 'increasefontsize' ? 1 : -1;
-        //if(Roo.isSafari){ // safari
-        //    adjust *= 2;
-       // }
-        var v = parseInt(this.doc.queryCommandValue('FontSize')|| 3, 10);
-        if(Roo.isSafari){ // safari
-            var sm = { 10 : 1, 13: 2, 16:3, 18:4, 24: 5, 32:6, 48: 7 };
-            v =  (v < 10) ? 10 : v;
-            v =  (v > 48) ? 48 : v;
-            v = typeof(sm[v]) == 'undefined' ? 1 : sm[v];
+        if (node.hasAttribute("style")) {
+            // pretty basic...
             
+            var styles = node.getAttribute("style").split(";");
+            var nstyle = [];
+            Roo.each(styles, function(s) {
+                if (!s.match(/:/)) {
+                    return;
+                }
+                var kv = s.split(":");
+                if (kv[0].match(/^\s*(width|min-width)\s*$/)) {
+                    return;
+                }
+                // what ever is left... we allow.
+                nstyle.push(s);
+            });
+            node.setAttribute("style", nstyle.length ? nstyle.join(';') : '');
+            if (!nstyle.length) {
+                node.removeAttribute('style');
+            }
         }
         
-        
-        v = Math.max(1, v+adjust);
-        
-        this.execCmd('FontSize', v  );
-    },
+        return true; // continue doing children..
+    }
+});/**
+ * @class Roo.htmleditor.FilterWord
+ * try and clean up all the mess that Word generates.
+ * 
+ * This is the 'nice version' - see 'Heavy' that white lists a very short list of elements, and multi-filters 
+ * @constructor
+ * Run a new Span Filter
+ * @param {Object} config Configuration options
+ */
 
-    onEditorEvent : function(e)
-    {
-        this.owner.fireEvent('editorevent', this, e);
-      //  this.updateToolbar();
-        this.syncValue(); //we can not sync so often.. sync cleans, so this breaks stuff
-    },
+Roo.htmleditor.FilterWord = function(cfg)
+{
+    // no need to apply config.
+    this.walk(cfg.node);
+}
 
-    insertTag : function(tg)
+Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
+{
+    tag: true,
+     
+    
+    /**
+     * Clean up MS wordisms...
+     */
+    replaceTag : function(node)
     {
-        // could be a bit smarter... -> wrap the current selected tRoo..
-        if (tg.toLowerCase() == 'span' ||
-            tg.toLowerCase() == 'code' ||
-            tg.toLowerCase() == 'sup' ||
-            tg.toLowerCase() == 'sub' 
-            ) {
-            
-            range = this.createRange(this.getSelection());
-            var wrappingNode = this.doc.createElement(tg.toLowerCase());
-            wrappingNode.appendChild(range.extractContents());
-            range.insertNode(wrappingNode);
-
-            return;
-            
-            
+         
+        // no idea what this does - span with text, replaceds with just text.
+        if(
+                node.nodeName == 'SPAN' &&
+                !node.hasAttributes() &&
+                node.childNodes.length == 1 &&
+                node.firstChild.nodeName == "#text"  
+        ) {
+            var textNode = node.firstChild;
+            node.removeChild(textNode);
+            if (node.getAttribute('lang') != 'zh-CN') {   // do not space pad on chinese characters..
+                node.parentNode.insertBefore(node.ownerDocument.createTextNode(" "), node);
+            }
+            node.parentNode.insertBefore(textNode, node);
+            if (node.getAttribute('lang') != 'zh-CN') {   // do not space pad on chinese characters..
+                node.parentNode.insertBefore(node.ownerDocument.createTextNode(" ") , node);
+            }
             
+            node.parentNode.removeChild(node);
+            return false; // dont do chidren - we have remove our node - so no need to do chdhilren?
         }
-        this.execCmd("formatblock",   tg);
         
-    },
-    
-    insertText : function(txt)
-    {
+   
         
+        if (node.tagName.toLowerCase().match(/^(style|script|applet|embed|noframes|noscript)$/)) {
+            node.parentNode.removeChild(node);
+            return false; // dont do chidlren
+        }
+        //Roo.log(node.tagName);
+        // remove - but keep children..
+        if (node.tagName.toLowerCase().match(/^(meta|link|\\?xml:|st1:|o:|v:|font)/)) {
+            //Roo.log('-- removed');
+            while (node.childNodes.length) {
+                var cn = node.childNodes[0];
+                node.removeChild(cn);
+                node.parentNode.insertBefore(cn, node);
+                // move node to parent - and clean it..
+                this.replaceTag(cn);
+            }
+            node.parentNode.removeChild(node);
+            /// no need to iterate chidlren = it's got none..
+            //this.iterateChildren(node, this.cleanWord);
+            return false; // no need to iterate children.
+        }
+        // clean styles
+        if (node.className.length) {
+            
+            var cn = node.className.split(/\W+/);
+            var cna = [];
+            Roo.each(cn, function(cls) {
+                if (cls.match(/Mso[a-zA-Z]+/)) {
+                    return;
+                }
+                cna.push(cls);
+            });
+            node.className = cna.length ? cna.join(' ') : '';
+            if (!cna.length) {
+                node.removeAttribute("class");
+            }
+        }
         
-        var range = this.createRange();
-        range.deleteContents();
-               //alert(Sender.getAttribute('label'));
-               
-        range.insertNode(this.doc.createTextNode(txt));
-    } ,
-    
+        if (node.hasAttribute("lang")) {
+            node.removeAttribute("lang");
+        }
+        
+        if (node.hasAttribute("style")) {
+            
+            var styles = node.getAttribute("style").split(";");
+            var nstyle = [];
+            Roo.each(styles, function(s) {
+                if (!s.match(/:/)) {
+                    return;
+                }
+                var kv = s.split(":");
+                if (kv[0].match(/^(mso-|line|font|background|margin|padding|color)/)) {
+                    return;
+                }
+                // what ever is left... we allow.
+                nstyle.push(s);
+            });
+            node.setAttribute("style", nstyle.length ? nstyle.join(';') : '');
+            if (!nstyle.length) {
+                node.removeAttribute('style');
+            }
+        }
+        return true; // do children
+        
+        
+        
+    }
+});
+/**
+ * @class Roo.htmleditor.FilterStyleToTag
+ * part of the word stuff... - certain 'styles' should be converted to tags.
+ * eg.
+ *   font-weight: bold -> bold
+ *   ?? super / subscrit etc..
+ * 
+ * @constructor
+* Run a new style to tag filter.
+* @param {Object} config Configuration options
+ */
+Roo.htmleditor.FilterStyleToTag = function(cfg)
+{
+    
+    this.tags = {
+        B  : [ 'fontWeight' , 'bold'],
+        I :  [ 'fontStyle' , 'italic'],
+        //pre :  [ 'font-style' , 'italic'],
+        // h1.. h6 ?? font-size?
+        SUP : [ 'verticalAlign' , 'super' ],
+        SUB : [ 'verticalAlign' , 'sub' ]
+        
+        
+    };
+    
+    Roo.apply(this, cfg);
      
+    
+    this.walk(cfg.node);
+    
+    
+    
+}
 
-    /**
-     * Executes a Midas editor command on the editor document and performs necessary focus and
-     * toolbar updates. <b>This should only be called after the editor is initialized.</b>
-     * @param {String} cmd The Midas command
-     * @param {String/Boolean} value (optional) The value to pass to the command (defaults to null)
-     */
-    relayCmd : function(cmd, value){
-        this.win.focus();
-        this.execCmd(cmd, value);
-        this.owner.fireEvent('editorevent', this);
-        //this.updateToolbar();
-        this.owner.deferFocus();
-    },
 
-    /**
-     * Executes a Midas editor command directly on the editor document.
-     * For visual commands, you should use {@link #relayCmd} instead.
-     * <b>This should only be called after the editor is initialized.</b>
-     * @param {String} cmd The Midas command
-     * @param {String/Boolean} value (optional) The value to pass to the command (defaults to null)
-     */
-    execCmd : function(cmd, value){
-        this.doc.execCommand(cmd, false, value === undefined ? null : value);
-        this.syncValue();
-    },
-   
-    /**
-     * Inserts the passed text at the current cursor position. Note: the editor must be initialized and activated
-     * to insert tRoo.
-     * @param {String} text | dom node.. 
-     */
-    insertAtCursor : function(text)
+Roo.extend(Roo.htmleditor.FilterStyleToTag, Roo.htmleditor.Filter,
+{
+    tag: true, // all tags
+    
+    tags : false,
+    
+    
+    replaceTag : function(node)
     {
         
-        if(!this.activated){
-            return;
+        
+        if (node.getAttribute("style") === null) {
+            return true;
         }
-        /*
-        if(Roo.isIE){
-            this.win.focus();
-            var r = this.doc.selection.createRange();
-            if(r){
-                r.collapse(true);
-                r.pasteHTML(text);
-                this.syncValue();
-                this.deferFocus();
-            
+        var inject = [];
+        for (var k in this.tags) {
+            if (node.style[this.tags[k][0]] == this.tags[k][1]) {
+                inject.push(k);
+                node.style.removeProperty(this.tags[k][0]);
             }
-            return;
         }
-        */
-        if(Roo.isGecko || Roo.isOpera || Roo.isSafari){
-            this.win.focus();
-            
-            
-            // from jquery ui (MIT licenced)
-            var range, node;
-            var win = this.win;
-            
-            if (win.getSelection && win.getSelection().getRangeAt) {
-                range = win.getSelection().getRangeAt(0);
-                node = typeof(text) == 'string' ? range.createContextualFragment(text) : text;
-                range.insertNode(node);
-            } else if (win.document.selection && win.document.selection.createRange) {
-                // no firefox support
-                var txt = typeof(text) == 'string' ? text : text.outerHTML;
-                win.document.selection.createRange().pasteHTML(txt);
-            } else {
-                // no firefox support
-                var txt = typeof(text) == 'string' ? text : text.outerHTML;
-                this.execCmd('InsertHTML', txt);
-            } 
-            
-            this.syncValue();
-            
-            this.deferFocus();
+        if (!inject.length) {
+            return true; 
         }
-    },
- // private
-    mozKeyPress : function(e){
-        if(e.ctrlKey){
-            var c = e.getCharCode(), cmd;
-          
-            if(c > 0){
-                c = String.fromCharCode(c).toLowerCase();
-                switch(c){
-                    case 'b':
-                        cmd = 'bold';
-                        break;
-                    case 'i':
-                        cmd = 'italic';
-                        break;
-                    
-                    case 'u':
-                        cmd = 'underline';
-                        break;
-                    
-                    case 'v':
-                        this.cleanUpPaste.defer(100, this);
-                        return;
-                        
-                }
-                if(cmd){
-                    this.win.focus();
-                    this.execCmd(cmd);
-                    this.deferFocus();
-                    e.preventDefault();
-                }
-                
-            }
+        var cn = Array.from(node.childNodes);
+        var nn = node;
+        Roo.each(inject, function(t) {
+            var nc = node.ownerDocument.createElement(t);
+            nn.appendChild(nc);
+            nn = nc;
+        });
+        for(var i = 0;i < cn.length;cn++) {
+            node.removeChild(cn[i]);
+            nn.appendChild(cn[i]);
         }
-    },
+        return true /// iterate thru
+    }
+    
+})/**
+ * @class Roo.htmleditor.FilterLongBr
+ * BR/BR/BR - keep a maximum of 2...
+ * @constructor
+ * Run a new Long BR Filter
+ * @param {Object} config Configuration options
+ */
 
-    // private
-    fixKeys : function(){ // load time branching for fastest keydown performance
-        if(Roo.isIE){
-            return function(e){
-                var k = e.getKey(), r;
-                if(k == e.TAB){
-                    e.stopEvent();
-                    r = this.doc.selection.createRange();
-                    if(r){
-                        r.collapse(true);
-                        r.pasteHTML('&#160;&#160;&#160;&#160;');
-                        this.deferFocus();
-                    }
-                    return;
-                }
-                
-                if(k == e.ENTER){
-                    r = this.doc.selection.createRange();
-                    if(r){
-                        var target = r.parentElement();
-                        if(!target || target.tagName.toLowerCase() != 'li'){
-                            e.stopEvent();
-                            r.pasteHTML('<br />');
-                            r.collapse(false);
-                            r.select();
-                        }
-                    }
-                }
-                if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
-                    this.cleanUpPaste.defer(100, this);
-                    return;
-                }
-                
-                
-            };
-        }else if(Roo.isOpera){
-            return function(e){
-                var k = e.getKey();
-                if(k == e.TAB){
-                    e.stopEvent();
-                    this.win.focus();
-                    this.execCmd('InsertHTML','&#160;&#160;&#160;&#160;');
-                    this.deferFocus();
-                }
-                if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
-                    this.cleanUpPaste.defer(100, this);
-                    return;
-                }
-                
-            };
-        }else if(Roo.isSafari){
-            return function(e){
-                var k = e.getKey();
-                
-                if(k == e.TAB){
-                    e.stopEvent();
-                    this.execCmd('InsertText','\t');
-                    this.deferFocus();
-                    return;
-                }
-               if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
-                    this.cleanUpPaste.defer(100, this);
-                    return;
-                }
-                
-             };
-        }
-    }(),
+Roo.htmleditor.FilterLongBr = function(cfg)
+{
+    // no need to apply config.
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterLongBr, Roo.htmleditor.Filter,
+{
     
-    getAllAncestors: function()
+     
+    tag : 'BR',
+    
+     
+    replaceTag : function(node)
     {
-        var p = this.getSelectedNode();
-        var a = [];
-        if (!p) {
-            a.push(p); // push blank onto stack..
-            p = this.getParentElement();
+        
+        var ps = node.nextSibling;
+        while (ps && ps.nodeType == 3 && ps.nodeValue.trim().length < 1) {
+            ps = ps.nextSibling;
         }
         
+        if (!ps &&  [ 'TD', 'TH', 'LI', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6' ].indexOf(node.parentNode.tagName) > -1) { 
+            node.parentNode.removeChild(node); // remove last BR inside one fo these tags
+            return false;
+        }
         
-        while (p && (p.nodeType == 1) && (p.tagName.toLowerCase() != 'body')) {
-            a.push(p);
-            p = p.parentNode;
+        if (!ps || ps.nodeType != 1) {
+            return false;
         }
-        a.push(this.doc.body);
-        return a;
-    },
-    lastSel : false,
-    lastSelNode : false,
-    
-    
-    getSelection : function() 
-    {
-        this.assignDocWin();
-        return Roo.isIE ? this.doc.selection : this.win.getSelection();
-    },
-    
-    getSelectedNode: function() 
-    {
-        // this may only work on Gecko!!!
         
-        // should we cache this!!!!
+        if (!ps || ps.tagName != 'BR') {
+           
+            return false;
+        }
         
         
         
+        
+        
+        if (!node.previousSibling) {
+            return false;
+        }
+        var ps = node.previousSibling;
+        
+        while (ps && ps.nodeType == 3 && ps.nodeValue.trim().length < 1) {
+            ps = ps.previousSibling;
+        }
+        if (!ps || ps.nodeType != 1) {
+            return false;
+        }
+        // if header or BR before.. then it's a candidate for removal.. - as we only want '2' of these..
+        if (!ps || [ 'BR', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6' ].indexOf(ps.tagName) < 0) {
+            return false;
+        }
+        
+        node.parentNode.removeChild(node); // remove me...
+        
+        return false; // no need to do children
+
+    }
+    
+}); 
+
+/**
+ * @class Roo.htmleditor.FilterBlock
+ * removes id / data-block and contenteditable that are associated with blocks
+ * usage should be done on a cloned copy of the dom
+ * @constructor
+* Run a new Attribute Filter { node : xxxx }}
+* @param {Object} config Configuration options
+ */
+Roo.htmleditor.FilterBlock = function(cfg)
+{
+    Roo.apply(this, cfg);
+    var qa = cfg.node.querySelectorAll;
+    this.removeAttributes('data-block');
+    this.removeAttributes('contenteditable');
+    this.removeAttributes('id');
+    
+}
+
+Roo.apply(Roo.htmleditor.FilterBlock.prototype,
+{
+    node: true, // all tags
+     
+     
+    removeAttributes : function(attr)
+    {
+        var ar = this.node.querySelectorAll('*[' + attr + ']');
+        for (var i =0;i<ar.length;i++) {
+            ar[i].removeAttribute(attr);
+        }
+    }
+        
+        
+        
+    
+});
+/**
+ * @class Roo.htmleditor.KeyEnter
+ * Handle Enter press..
+ * @cfg {Roo.HtmlEditorCore} core the editor.
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+
+
+
+
+Roo.htmleditor.KeyEnter = function(cfg) {
+    Roo.apply(this, cfg);
+    // this does not actually call walk as it's really just a abstract class
+    Roo.get(this.core.doc.body).on('keypress', this.keypress, this);
+}
+
+//Roo.htmleditor.KeyEnter.i = 0;
+
+
+Roo.htmleditor.KeyEnter.prototype = {
+    
+    core : false,
+    
+    keypress : function(e)
+    {
+        if (e.charCode != 13 && e.charCode != 10) {
+            Roo.log([e.charCode,e]);
+            return true;
+        }
+        e.preventDefault();
+        // https://stackoverflow.com/questions/18552336/prevent-contenteditable-adding-div-on-enter-chrome
+        var doc = this.core.doc;
+          //add a new line
+       
+    
+        var sel = this.core.getSelection();
+        var range = sel.getRangeAt(0);
+        var n = range.commonAncestorContainer;
+        var pc = range.closest([ 'ol', 'ul']);
+        var pli = range.closest('li');
+        if (!pc || e.ctrlKey) {
+            sel.insertNode('br', 'after'); 
+         
+            this.core.undoManager.addEvent();
+            this.core.fireEditorEvent(e);
+            return false;
+        }
+        
+        // deal with <li> insetion
+        if (pli.innerText.trim() == '' &&
+            pli.previousSibling &&
+            pli.previousSibling.nodeName == 'LI' &&
+            pli.previousSibling.innerText.trim() ==  '') {
+            pli.parentNode.removeChild(pli.previousSibling);
+            sel.cursorAfter(pc);
+            this.core.undoManager.addEvent();
+            this.core.fireEditorEvent(e);
+            return false;
+        }
+    
+        var li = doc.createElement('LI');
+        li.innerHTML = '&nbsp;';
+        if (!pli || !pli.firstSibling) {
+            pc.appendChild(li);
+        } else {
+            pli.parentNode.insertBefore(li, pli.firstSibling);
+        }
+        sel.cursorText (li.firstChild);
+      
+        this.core.undoManager.addEvent();
+        this.core.fireEditorEvent(e);
+
+        return false;
+        
+    
+        
+        
+         
+    }
+};
+     
+/**
+ * @class Roo.htmleditor.Block
+ * Base class for html editor blocks - do not use it directly .. extend it..
+ * @cfg {DomElement} node The node to apply stuff to.
+ * @cfg {String} friendly_name the name that appears in the context bar about this block
+ * @cfg {Object} Context menu - see Roo.form.HtmlEditor.ToolbarContext
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.Block  = function(cfg)
+{
+    // do nothing .. should not be called really.
+}
+/**
+ * factory method to get the block from an element (using cache if necessary)
+ * @static
+ * @param {HtmlElement} the dom element
+ */
+Roo.htmleditor.Block.factory = function(node)
+{
+    var cc = Roo.htmleditor.Block.cache;
+    var id = Roo.get(node).id;
+    if (typeof(cc[id]) != 'undefined' && (!cc[id].node || cc[id].node.closest('body'))) {
+        Roo.htmleditor.Block.cache[id].readElement(node);
+        return Roo.htmleditor.Block.cache[id];
+    }
+    var db  = node.getAttribute('data-block');
+    if (!db) {
+        db = node.nodeName.toLowerCase().toUpperCaseFirst();
+    }
+    var cls = Roo.htmleditor['Block' + db];
+    if (typeof(cls) == 'undefined') {
+        //Roo.log(node.getAttribute('data-block'));
+        Roo.log("OOps missing block : " + 'Block' + db);
+        return false;
+    }
+    Roo.htmleditor.Block.cache[id] = new cls({ node: node });
+    return Roo.htmleditor.Block.cache[id];  /// should trigger update element
+};
+
+/**
+ * initalize all Elements from content that are 'blockable'
+ * @static
+ * @param the body element
+ */
+Roo.htmleditor.Block.initAll = function(body, type)
+{
+    if (typeof(type) == 'undefined') {
+        var ia = Roo.htmleditor.Block.initAll;
+        ia(body,'table');
+        ia(body,'td');
+        ia(body,'figure');
+        return;
+    }
+    Roo.each(Roo.get(body).query(type), function(e) {
+        Roo.htmleditor.Block.factory(e);    
+    },this);
+};
+// question goes here... do we need to clear out this cache sometimes?
+// or show we make it relivant to the htmleditor.
+Roo.htmleditor.Block.cache = {};
+
+Roo.htmleditor.Block.prototype = {
+    
+    node : false,
+    
+     // used by context menu
+    friendly_name : 'Based Block',
+    
+    // text for button to delete this element
+    deleteTitle : false,
+    
+    context : false,
+    /**
+     * Update a node with values from this object
+     * @param {DomElement} node
+     */
+    updateElement : function(node)
+    {
+        Roo.DomHelper.update(node === undefined ? this.node : node, this.toObject());
+    },
+     /**
+     * convert to plain HTML for calling insertAtCursor..
+     */
+    toHTML : function()
+    {
+        return Roo.DomHelper.markup(this.toObject());
+    },
+    /**
+     * used by readEleemnt to extract data from a node
+     * may need improving as it's pretty basic
+     
+     * @param {DomElement} node
+     * @param {String} tag - tag to find, eg. IMG ?? might be better to use DomQuery ?
+     * @param {String} attribute (use html - for contents, or style for using next param as style)
+     * @param {String} style the style property - eg. text-align
+     */
+    getVal : function(node, tag, attr, style)
+    {
+        var n = node;
+        if (tag !== true && n.tagName != tag.toUpperCase()) {
+            // in theory we could do figure[3] << 3rd figure? or some more complex search..?
+            // but kiss for now.
+            n = node.getElementsByTagName(tag).item(0);
+        }
+        if (!n) {
+            return '';
+        }
+        if (attr == 'html') {
+            return n.innerHTML;
+        }
+        if (attr == 'style') {
+            return n.style[style]; 
+        }
+        
+        return n.hasAttribute(attr) ? n.getAttribute(attr) : '';
+            
+    },
+    /**
+     * create a DomHelper friendly object - for use with 
+     * Roo.DomHelper.markup / overwrite / etc..
+     * (override this)
+     */
+    toObject : function()
+    {
+        return {};
+    },
+      /**
+     * Read a node that has a 'data-block' property - and extract the values from it.
+     * @param {DomElement} node - the node
+     */
+    readElement : function(node)
+    {
+        
+    } 
+    
+    
+};
+
+
+/**
+ * @class Roo.htmleditor.BlockFigure
+ * Block that has an image and a figcaption
+ * @cfg {String} image_src the url for the image
+ * @cfg {String} align (left|right) alignment for the block default left
+ * @cfg {String} caption the text to appear below  (and in the alt tag)
+ * @cfg {String} caption_display (block|none) display or not the caption
+ * @cfg {String|number} image_width the width of the image number or %?
+ * @cfg {String|number} image_height the height of the image number or %?
+ * 
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.BlockFigure = function(cfg)
+{
+    if (cfg.node) {
+        this.readElement(cfg.node);
+        this.updateElement(cfg.node);
+    }
+    Roo.apply(this, cfg);
+}
+Roo.extend(Roo.htmleditor.BlockFigure, Roo.htmleditor.Block, {
+    
+    // setable values.
+    image_src: '',
+    align: 'center',
+    caption : '',
+    caption_display : 'block',
+    width : '100%',
+    cls : '',
+    href: '',
+    video_url : '',
+    
+    // margin: '2%', not used
+    
+    text_align: 'left', //   (left|right) alignment for the text caption default left. - not used at present
+
+    
+    // used by context menu
+    friendly_name : 'Image with caption',
+    deleteTitle : "Delete Image and Caption",
+    
+    contextMenu : function(toolbar)
+    {
+        
+        var block = function() {
+            return Roo.htmleditor.Block.factory(toolbar.tb.selectedNode);
+        };
+        
+        
+        var rooui =  typeof(Roo.bootstrap) == 'undefined' ? Roo : Roo.bootstrap;
+        
+        var syncValue = toolbar.editorcore.syncValue;
+        
+        var fields = {};
+        
+        return [
+             {
+                xtype : 'TextItem',
+                text : "Source: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+            {
+                xtype : 'Button',
+                text: 'Change Image URL',
+                 
+                listeners : {
+                    click: function (btn, state)
+                    {
+                        var b = block();
+                        
+                        Roo.MessageBox.show({
+                            title : "Image Source URL",
+                            msg : "Enter the url for the image",
+                            buttons: Roo.MessageBox.OKCANCEL,
+                            fn: function(btn, val){
+                                if (btn != 'ok') {
+                                    return;
+                                }
+                                b.image_src = val;
+                                b.updateElement();
+                                syncValue();
+                                toolbar.editorcore.onEditorEvent();
+                            },
+                            minWidth:250,
+                            prompt:true,
+                            //multiline: multiline,
+                            modal : true,
+                            value : b.image_src
+                        });
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+         
+            {
+                xtype : 'Button',
+                text: 'Change Link URL',
+                 
+                listeners : {
+                    click: function (btn, state)
+                    {
+                        var b = block();
+                        
+                        Roo.MessageBox.show({
+                            title : "Link URL",
+                            msg : "Enter the url for the link - leave blank to have no link",
+                            buttons: Roo.MessageBox.OKCANCEL,
+                            fn: function(btn, val){
+                                if (btn != 'ok') {
+                                    return;
+                                }
+                                b.href = val;
+                                b.updateElement();
+                                syncValue();
+                                toolbar.editorcore.onEditorEvent();
+                            },
+                            minWidth:250,
+                            prompt:true,
+                            //multiline: multiline,
+                            modal : true,
+                            value : b.href
+                        });
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'Button',
+                text: 'Show Video URL',
+                 
+                listeners : {
+                    click: function (btn, state)
+                    {
+                        Roo.MessageBox.alert("Video URL",
+                            block().video_url == '' ? 'This image is not linked ot a video' :
+                                'The image is linked to: <a target="_new" href="' + block().video_url + '">' + block().video_url + '</a>');
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            
+            
+            {
+                xtype : 'TextItem',
+                text : "Width: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+            {
+                xtype : 'ComboBox',
+                allowBlank : false,
+                displayField : 'val',
+                editable : true,
+                listWidth : 100,
+                triggerAction : 'all',
+                typeAhead : true,
+                valueField : 'val',
+                width : 70,
+                name : 'width',
+                listeners : {
+                    select : function (combo, r, index)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        var b = block();
+                        b.width = r.get('val');
+                        b.updateElement();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.form,
+                store : {
+                    xtype : 'SimpleStore',
+                    data : [
+                        ['auto'],
+                        ['50%'],
+                        ['100%']
+                    ],
+                    fields : [ 'val'],
+                    xns : Roo.data
+                }
+            },
+            {
+                xtype : 'TextItem',
+                text : "Align: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+            {
+                xtype : 'ComboBox',
+                allowBlank : false,
+                displayField : 'val',
+                editable : true,
+                listWidth : 100,
+                triggerAction : 'all',
+                typeAhead : true,
+                valueField : 'val',
+                width : 70,
+                name : 'align',
+                listeners : {
+                    select : function (combo, r, index)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        var b = block();
+                        b.align = r.get('val');
+                        b.updateElement();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.form,
+                store : {
+                    xtype : 'SimpleStore',
+                    data : [
+                        ['left'],
+                        ['right'],
+                        ['center']
+                    ],
+                    fields : [ 'val'],
+                    xns : Roo.data
+                }
+            },
+            
+            
+            {
+                xtype : 'Button',
+                text: 'Hide Caption',
+                name : 'caption_display',
+                pressed : false,
+                enableToggle : true,
+                setValue : function(v) {
+                    this.toggle(v == 'block' ? false : true);
+                },
+                listeners : {
+                    toggle: function (btn, state)
+                    {
+                        var b  = block();
+                        b.caption_display = b.caption_display == 'block' ? 'none' : 'block';
+                        this.setText(b.caption_display == 'block' ? "Hide Caption" : "Show Caption");
+                        b.updateElement();
+                        syncValue();
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            }
+        ];
+        
+    },
+    /**
+     * create a DomHelper friendly object - for use with
+     * Roo.DomHelper.markup / overwrite / etc..
+     */
+    toObject : function()
+    {
+        var d = document.createElement('div');
+        d.innerHTML = this.caption;
+        
+        var m = this.width == '50%' && this.align == 'center' ? '0 auto' : 0; 
+        
+        var img =   {
+            tag : 'img',
+            contenteditable : 'false',
+            src : this.image_src,
+            alt : d.innerText.replace(/\n/g, " ").replace(/\s+/g, ' ').trim(), // removeHTML and reduce spaces..
+            style: {
+                width : 'auto',
+                'max-width': '100%',
+                margin : '0px' 
+                
+                
+            }
+        };
+        /*
+        '<div class="{0}" width="420" height="315" src="{1}" frameborder="0" allowfullscreen>' +
+                    '<a href="{2}">' + 
+                        '<img class="{0}-thumbnail" src="{3}/Images/{4}/{5}#image-{4}" />' + 
+                    '</a>' + 
+                '</div>',
+        */
+                
+        if (this.href.length > 0) {
+            img = {
+                tag : 'a',
+                href: this.href,
+                contenteditable : 'true',
+                cn : [
+                    img
+                ]
+            };
+        }
+        
+        
+        if (this.video_url.length > 0) {
+            img = {
+                tag : 'div',
+                cls : this.cls,
+                frameborder : 0,
+                allowfullscreen : true,
+                width : 420,  // these are for video tricks - that we replace the outer
+                height : 315,
+                src : this.video_url,
+                cn : [
+                    img
+                ]
+            };
+        }
+        
+        var captionhtml = this.caption_display == 'hidden' ? this.caption : (this.caption.length ? this.caption : "Caption");
+        
+        return  {
+            tag: 'figure',
+            'data-block' : 'Figure',
+            contenteditable : 'false',
+            style : {
+                display: 'block',
+                float :  this.align ,
+                'max-width':  this.width,
+                width : 'auto',
+                margin:  m,
+                padding: '10px'
+                
+            },
+           
+            
+            align : this.align,
+            cn : [
+                img,
+              
+                {
+                    tag: 'figcaption',
+                    
+                    style : {
+                        'text-align': 'left',
+                        'margin-top' : '16px',
+                        'font-size' : '16px',
+                        'line-height' : '24px',
+                         display : this.caption_display
+                    },
+                    cls : this.cls.length > 0 ? (this.cls  + '-thumbnail' ) : '',
+                    cn : [
+                        {
+                            // we can not rely on yahoo syndication to use CSS elements - so have to use  '<i>' to encase stuff.
+                            tag : 'i',
+                            contenteditable : true,
+                            html : captionhtml
+                        }
+                    ]
+                    
+                }
+            ]
+        };
+         
+    },
+    
+    readElement : function(node)
+    {
+        // this should not really come from the link...
+        this.video_url = this.getVal(node, 'div', 'src');
+        this.cls = this.getVal(node, 'div', 'class');
+        this.href = this.getVal(node, 'a', 'href');
+        
+        this.image_src = this.getVal(node, 'img', 'src');
+         
+        this.align = this.getVal(node, 'figure', 'align');
+        this.caption = this.getVal(node, 'figcaption', 'html');
+        // remove '<i>
+        if (this.caption.trim().match(/^<i[^>]*>/i)) {
+            this.caption = this.caption.trim().replace(/^<i[^>]*>/i, '').replace(/^<\/i>$/i, '');
+        }
+        //this.text_align = this.getVal(node, 'figcaption', 'style','text-align');
+        this.width = this.getVal(node, 'figure', 'style', 'max-width');
+        //this.margin = this.getVal(node, 'figure', 'style', 'margin');
+        
+    },
+    removeNode : function()
+    {
+        return this.node;
+    }
+    
+  
+   
+     
+    
+    
+    
+    
+})
+
+
+/**
+ * @class Roo.htmleditor.BlockTable
+ * Block that manages a table
+ * 
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.BlockTable = function(cfg)
+{
+    if (cfg.node) {
+        this.readElement(cfg.node);
+        this.updateElement(cfg.node);
+    }
+    Roo.apply(this, cfg);
+    if (!cfg.node) {
+        this.rows = [];
+        for(var r = 0; r < this.no_row; r++) {
+            this.rows[r] = [];
+            for(var c = 0; c < this.no_col; c++) {
+                this.rows[r][c] = this.emptyCell();
+            }
+        }
+    }
+    
+    
+}
+Roo.extend(Roo.htmleditor.BlockTable, Roo.htmleditor.Block, {
+    rows : false,
+    no_col : 1,
+    no_row : 1,
+    
+    
+    width: '100%',
+    
+    // used by context menu
+    friendly_name : 'Table',
+    deleteTitle : 'Delete Table',
+    // context menu is drawn once..
+    
+    contextMenu : function(toolbar)
+    {
+        
+        var block = function() {
+            return Roo.htmleditor.Block.factory(toolbar.tb.selectedNode);
+        };
+        
+        
+        var rooui =  typeof(Roo.bootstrap) == 'undefined' ? Roo : Roo.bootstrap;
+        
+        var syncValue = toolbar.editorcore.syncValue;
+        
+        var fields = {};
+        
+        return [
+            {
+                xtype : 'TextItem',
+                text : "Width: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+            {
+                xtype : 'ComboBox',
+                allowBlank : false,
+                displayField : 'val',
+                editable : true,
+                listWidth : 100,
+                triggerAction : 'all',
+                typeAhead : true,
+                valueField : 'val',
+                width : 100,
+                name : 'width',
+                listeners : {
+                    select : function (combo, r, index)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        var b = block();
+                        b.width = r.get('val');
+                        b.updateElement();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.form,
+                store : {
+                    xtype : 'SimpleStore',
+                    data : [
+                        ['100%'],
+                        ['auto']
+                    ],
+                    fields : [ 'val'],
+                    xns : Roo.data
+                }
+            },
+            // -------- Cols
+            
+            {
+                xtype : 'TextItem',
+                text : "Columns: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+         
+            {
+                xtype : 'Button',
+                text: '-',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        block().removeColumn();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'Button',
+                text: '+',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        block().addColumn();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            // -------- ROWS
+            {
+                xtype : 'TextItem',
+                text : "Rows: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+         
+            {
+                xtype : 'Button',
+                text: '-',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        block().removeRow();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'Button',
+                text: '+',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        block().addRow();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            // -------- ROWS
+            {
+                xtype : 'Button',
+                text: 'Reset Column Widths',
+                listeners : {
+                    
+                    click : function (_self, e)
+                    {
+                        block().resetWidths();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            } 
+            
+            
+            
+        ];
+        
+    },
+    
+    
+  /**
+     * create a DomHelper friendly object - for use with
+     * Roo.DomHelper.markup / overwrite / etc..
+     * ?? should it be called with option to hide all editing features?
+     */
+    toObject : function()
+    {
+        
+        var ret = {
+            tag : 'table',
+            contenteditable : 'false', // this stops cell selection from picking the table.
+            'data-block' : 'Table',
+            style : {
+                width:  this.width,
+                border : 'solid 1px #000', // ??? hard coded?
+                'border-collapse' : 'collapse' 
+            },
+            cn : [
+                { tag : 'tbody' , cn : [] }
+            ]
+        };
+        
+        // do we have a head = not really 
+        var ncols = 0;
+        Roo.each(this.rows, function( row ) {
+            var tr = {
+                tag: 'tr',
+                style : {
+                    margin: '6px',
+                    border : 'solid 1px #000',
+                    textAlign : 'left' 
+                },
+                cn : [ ]
+            };
+            
+            ret.cn[0].cn.push(tr);
+            // does the row have any properties? ?? height?
+            var nc = 0;
+            Roo.each(row, function( cell ) {
+                
+                var td = {
+                    tag : 'td',
+                    contenteditable :  'true',
+                    'data-block' : 'Td',
+                    html : cell.html,
+                    style : cell.style
+                };
+                if (cell.colspan > 1) {
+                    td.colspan = cell.colspan ;
+                    nc += cell.colspan;
+                } else {
+                    nc++;
+                }
+                if (cell.rowspan > 1) {
+                    td.rowspan = cell.rowspan ;
+                }
+                
+                
+                // widths ?
+                tr.cn.push(td);
+                    
+                
+            }, this);
+            ncols = Math.max(nc, ncols);
+            
+            
+        }, this);
+        // add the header row..
+        
+        ncols++;
+         
+        
+        return ret;
+         
+    },
+    
+    readElement : function(node)
+    {
+        node  = node ? node : this.node ;
+        this.width = this.getVal(node, true, 'style', 'width') || '100%';
+        
+        this.rows = [];
+        this.no_row = 0;
+        var trs = Array.from(node.rows);
+        trs.forEach(function(tr) {
+            var row =  [];
+            this.rows.push(row);
+            
+            this.no_row++;
+            var no_column = 0;
+            Array.from(tr.cells).forEach(function(td) {
+                
+                var add = {
+                    colspan : td.hasAttribute('colspan') ? td.getAttribute('colspan')*1 : 1,
+                    rowspan : td.hasAttribute('rowspan') ? td.getAttribute('rowspan')*1 : 1,
+                    style : td.hasAttribute('style') ? td.getAttribute('style') : '',
+                    html : td.innerHTML
+                };
+                no_column += add.colspan;
+                     
+                
+                row.push(add);
+                
+                
+            },this);
+            this.no_col = Math.max(this.no_col, no_column);
+            
+            
+        },this);
+        
+        
+    },
+    normalizeRows: function()
+    {
+        var ret= [];
+        var rid = -1;
+        this.rows.forEach(function(row) {
+            rid++;
+            ret[rid] = [];
+            row = this.normalizeRow(row);
+            var cid = 0;
+            row.forEach(function(c) {
+                while (typeof(ret[rid][cid]) != 'undefined') {
+                    cid++;
+                }
+                if (typeof(ret[rid]) == 'undefined') {
+                    ret[rid] = [];
+                }
+                ret[rid][cid] = c;
+                c.row = rid;
+                c.col = cid;
+                if (c.rowspan < 2) {
+                    return;
+                }
+                
+                for(var i = 1 ;i < c.rowspan; i++) {
+                    if (typeof(ret[rid+i]) == 'undefined') {
+                        ret[rid+i] = [];
+                    }
+                    ret[rid+i][cid] = c;
+                }
+            });
+        }, this);
+        return ret;
+    
+    },
+    
+    normalizeRow: function(row)
+    {
+        var ret= [];
+        row.forEach(function(c) {
+            if (c.colspan < 2) {
+                ret.push(c);
+                return;
+            }
+            for(var i =0 ;i < c.colspan; i++) {
+                ret.push(c);
+            }
+        });
+        return ret;
+    
+    },
+    
+    deleteColumn : function(sel)
+    {
+        if (!sel || sel.type != 'col') {
+            return;
+        }
+        if (this.no_col < 2) {
+            return;
+        }
+        
+        this.rows.forEach(function(row) {
+            var cols = this.normalizeRow(row);
+            var col = cols[sel.col];
+            if (col.colspan > 1) {
+                col.colspan --;
+            } else {
+                row.remove(col);
+            }
+            
+        }, this);
+        this.no_col--;
+        
+    },
+    removeColumn : function()
+    {
+        this.deleteColumn({
+            type: 'col',
+            col : this.no_col-1
+        });
+        this.updateElement();
+    },
+    
+     
+    addColumn : function()
+    {
+        
+        this.rows.forEach(function(row) {
+            row.push(this.emptyCell());
+           
+        }, this);
+        this.updateElement();
+    },
+    
+    deleteRow : function(sel)
+    {
+        if (!sel || sel.type != 'row') {
+            return;
+        }
+        
+        if (this.no_row < 2) {
+            return;
+        }
+        
+        var rows = this.normalizeRows();
+        
+        
+        rows[sel.row].forEach(function(col) {
+            if (col.rowspan > 1) {
+                col.rowspan--;
+            } else {
+                col.remove = 1; // flage it as removed.
+            }
+            
+        }, this);
+        var newrows = [];
+        this.rows.forEach(function(row) {
+            newrow = [];
+            row.forEach(function(c) {
+                if (typeof(c.remove) == 'undefined') {
+                    newrow.push(c);
+                }
+                
+            });
+            if (newrow.length > 0) {
+                newrows.push(row);
+            }
+        });
+        this.rows =  newrows;
+        
+        
+        
+        this.no_row--;
+        this.updateElement();
+        
+    },
+    removeRow : function()
+    {
+        this.deleteRow({
+            type: 'row',
+            row : this.no_row-1
+        });
+        
+    },
+    
+     
+    addRow : function()
+    {
+        
+        var row = [];
+        for (var i = 0; i < this.no_col; i++ ) {
+            
+            row.push(this.emptyCell());
+           
+        }
+        this.rows.push(row);
+        this.updateElement();
+        
+    },
+     
+    // the default cell object... at present...
+    emptyCell : function() {
+        return (new Roo.htmleditor.BlockTd({})).toObject();
+        
+     
+    },
+    
+    removeNode : function()
+    {
+        return this.node;
+    },
+    
+    
+    
+    resetWidths : function()
+    {
+        Array.from(this.node.getElementsByTagName('td')).forEach(function(n) {
+            var nn = Roo.htmleditor.Block.factory(n);
+            nn.width = '';
+            nn.updateElement(n);
+        });
+    }
+    
+    
+    
+    
+})
+
+/**
+ *
+ * editing a TD?
+ *
+ * since selections really work on the table cell, then editing really should work from there
+ *
+ * The original plan was to support merging etc... - but that may not be needed yet..
+ *
+ * So this simple version will support:
+ *   add/remove cols
+ *   adjust the width +/-
+ *   reset the width...
+ *   
+ *
+ */
+
+
+
+/**
+ * @class Roo.htmleditor.BlockTable
+ * Block that manages a table
+ * 
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.BlockTd = function(cfg)
+{
+    if (cfg.node) {
+        this.readElement(cfg.node);
+        this.updateElement(cfg.node);
+    }
+    Roo.apply(this, cfg);
+     
+    
+    
+}
+Roo.extend(Roo.htmleditor.BlockTd, Roo.htmleditor.Block, {
+    node : false,
+    
+    width: '',
+    textAlign : 'left',
+    valign : 'top',
+    
+    colspan : 1,
+    rowspan : 1,
+    
+    
+    // used by context menu
+    friendly_name : 'Table Cell',
+    deleteTitle : false, // use our customer delete
+    
+    // context menu is drawn once..
+    
+    contextMenu : function(toolbar)
+    {
+        
+        var cell = function() {
+            return Roo.htmleditor.Block.factory(toolbar.tb.selectedNode);
+        };
+        
+        var table = function() {
+            return Roo.htmleditor.Block.factory(toolbar.tb.selectedNode.closest('table'));
+        };
+        
+        var lr = false;
+        var saveSel = function()
+        {
+            lr = toolbar.editorcore.getSelection().getRangeAt(0);
+        }
+        var restoreSel = function()
+        {
+            if (lr) {
+                (function() {
+                    toolbar.editorcore.focus();
+                    var cr = toolbar.editorcore.getSelection();
+                    cr.removeAllRanges();
+                    cr.addRange(lr);
+                    toolbar.editorcore.onEditorEvent();
+                }).defer(10, this);
+                
+                
+            }
+        }
+        
+        var rooui =  typeof(Roo.bootstrap) == 'undefined' ? Roo : Roo.bootstrap;
+        
+        var syncValue = toolbar.editorcore.syncValue;
+        
+        var fields = {};
+        
+        return [
+            {
+                xtype : 'Button',
+                text : 'Edit Table',
+                listeners : {
+                    click : function() {
+                        var t = toolbar.tb.selectedNode.closest('table');
+                        toolbar.editorcore.selectNode(t);
+                        toolbar.editorcore.onEditorEvent();                        
+                    }
+                }
+                
+            },
+              
+           
+             
+            {
+                xtype : 'TextItem',
+                text : "Column Width: ",
+                 xns : rooui.Toolbar 
+               
+            },
+            {
+                xtype : 'Button',
+                text: '-',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        cell().shrinkColumn();
+                        syncValue();
+                         toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'Button',
+                text: '+',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        cell().growColumn();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            
+            {
+                xtype : 'TextItem',
+                text : "Vertical Align: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+            {
+                xtype : 'ComboBox',
+                allowBlank : false,
+                displayField : 'val',
+                editable : true,
+                listWidth : 100,
+                triggerAction : 'all',
+                typeAhead : true,
+                valueField : 'val',
+                width : 100,
+                name : 'valign',
+                listeners : {
+                    select : function (combo, r, index)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        var b = cell();
+                        b.valign = r.get('val');
+                        b.updateElement();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.form,
+                store : {
+                    xtype : 'SimpleStore',
+                    data : [
+                        ['top'],
+                        ['middle'],
+                        ['bottom'] // there are afew more... 
+                    ],
+                    fields : [ 'val'],
+                    xns : Roo.data
+                }
+            },
+            
+            {
+                xtype : 'TextItem',
+                text : "Merge Cells: ",
+                 xns : rooui.Toolbar 
+               
+            },
+            
+            
+            {
+                xtype : 'Button',
+                text: 'Right',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        cell().mergeRight();
+                        //block().growColumn();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+             
+            {
+                xtype : 'Button',
+                text: 'Below',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        cell().mergeBelow();
+                        //block().growColumn();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'TextItem',
+                text : "| ",
+                 xns : rooui.Toolbar 
+               
+            },
+            
+            {
+                xtype : 'Button',
+                text: 'Split',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        //toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        cell().split();
+                        syncValue();
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        toolbar.editorcore.onEditorEvent();
+                                             
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'Fill',
+                xns : rooui.Toolbar 
+               
+            },
+        
+          
+            {
+                xtype : 'Button',
+                text: 'Delete',
+                 
+                xns : rooui.Toolbar,
+                menu : {
+                    xtype : 'Menu',
+                    xns : rooui.menu,
+                    items : [
+                        {
+                            xtype : 'Item',
+                            html: 'Column',
+                            listeners : {
+                                click : function (_self, e)
+                                {
+                                    var t = table();
+                                    
+                                    cell().deleteColumn();
+                                    syncValue();
+                                    toolbar.editorcore.selectNode(t.node);
+                                    toolbar.editorcore.onEditorEvent();   
+                                }
+                            },
+                            xns : rooui.menu
+                        },
+                        {
+                            xtype : 'Item',
+                            html: 'Row',
+                            listeners : {
+                                click : function (_self, e)
+                                {
+                                    var t = table();
+                                    cell().deleteRow();
+                                    syncValue();
+                                    
+                                    toolbar.editorcore.selectNode(t.node);
+                                    toolbar.editorcore.onEditorEvent();   
+                                                         
+                                }
+                            },
+                            xns : rooui.menu
+                        },
+                       {
+                            xtype : 'Separator',
+                            xns : rooui.menu
+                        },
+                        {
+                            xtype : 'Item',
+                            html: 'Table',
+                            listeners : {
+                                click : function (_self, e)
+                                {
+                                    var t = table();
+                                    var nn = t.node.nextSibling || t.node.previousSibling;
+                                    t.node.parentNode.removeChild(t.node);
+                                    if (nn) { 
+                                        toolbar.editorcore.selectNode(nn, true);
+                                    }
+                                    toolbar.editorcore.onEditorEvent();   
+                                                         
+                                }
+                            },
+                            xns : rooui.menu
+                        }
+                    ]
+                }
+            }
+            
+            // align... << fixme
+            
+        ];
+        
+    },
+    
+    
+  /**
+     * create a DomHelper friendly object - for use with
+     * Roo.DomHelper.markup / overwrite / etc..
+     * ?? should it be called with option to hide all editing features?
+     */
+ /**
+     * create a DomHelper friendly object - for use with
+     * Roo.DomHelper.markup / overwrite / etc..
+     * ?? should it be called with option to hide all editing features?
+     */
+    toObject : function()
+    {
+        
+        var ret = {
+            tag : 'td',
+            contenteditable : 'true', // this stops cell selection from picking the table.
+            'data-block' : 'Td',
+            valign : this.valign,
+            style : {  
+                'text-align' :  this.textAlign,
+                border : 'solid 1px rgb(0, 0, 0)', // ??? hard coded?
+                'border-collapse' : 'collapse',
+                padding : '6px', // 8 for desktop / 4 for mobile
+                'vertical-align': this.valign
+            },
+            html : this.html
+        };
+        if (this.width != '') {
+            ret.width = this.width;
+            ret.style.width = this.width;
+        }
+        
+        
+        if (this.colspan > 1) {
+            ret.colspan = this.colspan ;
+        } 
+        if (this.rowspan > 1) {
+            ret.rowspan = this.rowspan ;
+        }
+        
+           
+        
+        return ret;
+         
+    },
+    
+    readElement : function(node)
+    {
+        node  = node ? node : this.node ;
+        this.width = node.style.width;
+        this.colspan = Math.max(1,1*node.getAttribute('colspan'));
+        this.rowspan = Math.max(1,1*node.getAttribute('rowspan'));
+        this.html = node.innerHTML;
+        
+        
+    },
+     
+    // the default cell object... at present...
+    emptyCell : function() {
+        return {
+            colspan :  1,
+            rowspan :  1,
+            textAlign : 'left',
+            html : "&nbsp;" // is this going to be editable now?
+        };
+     
+    },
+    
+    removeNode : function()
+    {
+        return this.node.closest('table');
+         
+    },
+    
+    cellData : false,
+    
+    colWidths : false,
+    
+    toTableArray  : function()
+    {
+        var ret = [];
+        var tab = this.node.closest('tr').closest('table');
+        Array.from(tab.rows).forEach(function(r, ri){
+            ret[ri] = [];
+        });
+        var rn = 0;
+        this.colWidths = [];
+        var all_auto = true;
+        Array.from(tab.rows).forEach(function(r, ri){
+            
+            var cn = 0;
+            Array.from(r.cells).forEach(function(ce, ci){
+                var c =  {
+                    cell : ce,
+                    row : rn,
+                    col: cn,
+                    colspan : ce.colSpan,
+                    rowspan : ce.rowSpan
+                };
+                if (ce.isEqualNode(this.node)) {
+                    this.cellData = c;
+                }
+                // if we have been filled up by a row?
+                if (typeof(ret[rn][cn]) != 'undefined') {
+                    while(typeof(ret[rn][cn]) != 'undefined') {
+                        cn++;
+                    }
+                    c.col = cn;
+                }
+                
+                if (typeof(this.colWidths[cn]) == 'undefined') {
+                    this.colWidths[cn] =   ce.style.width;
+                    if (this.colWidths[cn] != '') {
+                        all_auto = false;
+                    }
+                }
+                
+                
+                if (c.colspan < 2 && c.rowspan < 2 ) {
+                    ret[rn][cn] = c;
+                    cn++;
+                    return;
+                }
+                for(var j = 0; j < c.rowspan; j++) {
+                    if (typeof(ret[rn+j]) == 'undefined') {
+                        continue; // we have a problem..
+                    }
+                    ret[rn+j][cn] = c;
+                    for(var i = 0; i < c.colspan; i++) {
+                        ret[rn+j][cn+i] = c;
+                    }
+                }
+                
+                cn += c.colspan;
+            }, this);
+            rn++;
+        }, this);
+        
+        // initalize widths.?
+        // either all widths or no widths..
+        if (all_auto) {
+            this.colWidths[0] = false; // no widths flag.
+        }
+        
+        
+        return ret;
+        
+    },
+    
+    
+    
+    
+    mergeRight: function()
+    {
+         
+        // get the contents of the next cell along..
+        var tr = this.node.closest('tr');
+        var i = Array.prototype.indexOf.call(tr.childNodes, this.node);
+        if (i >= tr.childNodes.length - 1) {
+            return; // no cells on right to merge with.
+        }
+        var table = this.toTableArray();
+        
+        if (typeof(table[this.cellData.row][this.cellData.col+this.cellData.colspan]) == 'undefined') {
+            return; // nothing right?
+        }
+        var rc = table[this.cellData.row][this.cellData.col+this.cellData.colspan];
+        // right cell - must be same rowspan and on the same row.
+        if (rc.rowspan != this.cellData.rowspan || rc.row != this.cellData.row) {
+            return; // right hand side is not same rowspan.
+        }
+        
+        
+        
+        this.node.innerHTML += ' ' + rc.cell.innerHTML;
+        tr.removeChild(rc.cell);
+        this.colspan += rc.colspan;
+        this.node.setAttribute('colspan', this.colspan);
+
+    },
+    
+    
+    mergeBelow : function()
+    {
+        var table = this.toTableArray();
+        if (typeof(table[this.cellData.row+this.cellData.rowspan]) == 'undefined') {
+            return; // no row below
+        }
+        if (typeof(table[this.cellData.row+this.cellData.rowspan][this.cellData.col]) == 'undefined') {
+            return; // nothing right?
+        }
+        var rc = table[this.cellData.row+this.cellData.rowspan][this.cellData.col];
+        
+        if (rc.colspan != this.cellData.colspan || rc.col != this.cellData.col) {
+            return; // right hand side is not same rowspan.
+        }
+        this.node.innerHTML =  this.node.innerHTML + rc.cell.innerHTML ;
+        rc.cell.parentNode.removeChild(rc.cell);
+        this.rowspan += rc.rowspan;
+        this.node.setAttribute('rowspan', this.rowspan);
+    },
+    
+    split: function()
+    {
+        if (this.node.rowSpan < 2 && this.node.colSpan < 2) {
+            return;
+        }
+        var table = this.toTableArray();
+        var cd = this.cellData;
+        this.rowspan = 1;
+        this.colspan = 1;
+        
+        for(var r = cd.row; r < cd.row + cd.rowspan; r++) {
+            
+            
+            
+            for(var c = cd.col; c < cd.col + cd.colspan; c++) {
+                if (r == cd.row && c == cd.col) {
+                    this.node.removeAttribute('rowspan');
+                    this.node.removeAttribute('colspan');
+                    continue;
+                }
+                 
+                var ntd = this.node.cloneNode(); // which col/row should be 0..
+                ntd.removeAttribute('id'); //
+                //ntd.style.width  = '';
+                ntd.innerHTML = '';
+                table[r][c] = { cell : ntd, col : c, row: r , colspan : 1 , rowspan : 1   };
+            }
+            
+        }
+        this.redrawAllCells(table);
+        
+         
+        
+    },
+    
+    
+    
+    redrawAllCells: function(table)
+    {
+        
+         
+        var tab = this.node.closest('tr').closest('table');
+        var ctr = tab.rows[0].parentNode;
+        Array.from(tab.rows).forEach(function(r, ri){
+            
+            Array.from(r.cells).forEach(function(ce, ci){
+                ce.parentNode.removeChild(ce);
+            });
+            r.parentNode.removeChild(r);
+        });
+        for(var r = 0 ; r < table.length; r++) {
+            var re = tab.rows[r];
+            
+            var re = tab.ownerDocument.createElement('tr');
+            ctr.appendChild(re);
+            for(var c = 0 ; c < table[r].length; c++) {
+                if (table[r][c].cell === false) {
+                    continue;
+                }
+                
+                re.appendChild(table[r][c].cell);
+                 
+                table[r][c].cell = false;
+            }
+        }
+        
+    },
+    updateWidths : function(table)
+    {
+        for(var r = 0 ; r < table.length; r++) {
+           
+            for(var c = 0 ; c < table[r].length; c++) {
+                if (table[r][c].cell === false) {
+                    continue;
+                }
+                
+                if (this.colWidths[0] != false && table[r][c].colspan < 2) {
+                    var el = Roo.htmleditor.Block.factory(table[r][c].cell);
+                    el.width = Math.floor(this.colWidths[c])  +'%';
+                    el.updateElement(el.node);
+                }
+                table[r][c].cell = false; // done
+            }
+        }
+    },
+    normalizeWidths : function(table)
+    {
+    
+        if (this.colWidths[0] === false) {
+            var nw = 100.0 / this.colWidths.length;
+            this.colWidths.forEach(function(w,i) {
+                this.colWidths[i] = nw;
+            },this);
+            return;
+        }
+    
+        var t = 0, missing = [];
+        
+        this.colWidths.forEach(function(w,i) {
+            //if you mix % and
+            this.colWidths[i] = this.colWidths[i] == '' ? 0 : (this.colWidths[i]+'').replace(/[^0-9]+/g,'')*1;
+            var add =  this.colWidths[i];
+            if (add > 0) {
+                t+=add;
+                return;
+            }
+            missing.push(i);
+            
+            
+        },this);
+        var nc = this.colWidths.length;
+        if (missing.length) {
+            var mult = (nc - missing.length) / (1.0 * nc);
+            var t = mult * t;
+            var ew = (100 -t) / (1.0 * missing.length);
+            this.colWidths.forEach(function(w,i) {
+                if (w > 0) {
+                    this.colWidths[i] = w * mult;
+                    return;
+                }
+                
+                this.colWidths[i] = ew;
+            }, this);
+            // have to make up numbers..
+             
+        }
+        // now we should have all the widths..
+        
+    
+    },
+    
+    shrinkColumn : function()
+    {
+        var table = this.toTableArray();
+        this.normalizeWidths(table);
+        var col = this.cellData.col;
+        var nw = this.colWidths[col] * 0.8;
+        if (nw < 5) {
+            return;
+        }
+        var otherAdd = (this.colWidths[col]  * 0.2) / (this.colWidths.length -1);
+        this.colWidths.forEach(function(w,i) {
+            if (i == col) {
+                 this.colWidths[i] = nw;
+                return;
+            }
+            this.colWidths[i] += otherAdd
+        }, this);
+        this.updateWidths(table);
+         
+    },
+    growColumn : function()
+    {
+        var table = this.toTableArray();
+        this.normalizeWidths(table);
+        var col = this.cellData.col;
+        var nw = this.colWidths[col] * 1.2;
+        if (nw > 90) {
+            return;
+        }
+        var otherSub = (this.colWidths[col]  * 0.2) / (this.colWidths.length -1);
+        this.colWidths.forEach(function(w,i) {
+            if (i == col) {
+                this.colWidths[i] = nw;
+                return;
+            }
+            this.colWidths[i] -= otherSub
+        }, this);
+        this.updateWidths(table);
+         
+    },
+    deleteRow : function()
+    {
+        // delete this rows 'tr'
+        // if any of the cells in this row have a rowspan > 1 && row!= this row..
+        // then reduce the rowspan.
+        var table = this.toTableArray();
+        // this.cellData.row;
+        for (var i =0;i< table[this.cellData.row].length ; i++) {
+            var c = table[this.cellData.row][i];
+            if (c.row != this.cellData.row) {
+                
+                c.rowspan--;
+                c.cell.setAttribute('rowspan', c.rowspan);
+                continue;
+            }
+            if (c.rowspan > 1) {
+                c.rowspan--;
+                c.cell.setAttribute('rowspan', c.rowspan);
+            }
+        }
+        table.splice(this.cellData.row,1);
+        this.redrawAllCells(table);
+        
+    },
+    deleteColumn : function()
+    {
+        var table = this.toTableArray();
+        
+        for (var i =0;i< table.length ; i++) {
+            var c = table[i][this.cellData.col];
+            if (c.col != this.cellData.col) {
+                table[i][this.cellData.col].colspan--;
+            } else if (c.colspan > 1) {
+                c.colspan--;
+                c.cell.setAttribute('colspan', c.colspan);
+            }
+            table[i].splice(this.cellData.col,1);
+        }
+        
+        this.redrawAllCells(table);
+    }
+    
+    
+    
+    
+})
+
+//<script type="text/javascript">
+
+/*
+ * Based  Ext JS Library 1.1.1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * LGPL
+ *
+ */
+/**
+ * @class Roo.HtmlEditorCore
+ * @extends Roo.Component
+ * Provides a the editing component for the HTML editors in Roo. (bootstrap and Roo.form)
+ *
+ * any element that has display set to 'none' can cause problems in Safari and Firefox.<br/><br/>
+ */
+
+Roo.HtmlEditorCore = function(config){
+    
+    
+    Roo.HtmlEditorCore.superclass.constructor.call(this, config);
+    
+    
+    this.addEvents({
+        /**
+         * @event initialize
+         * Fires when the editor is fully initialized (including the iframe)
+         * @param {Roo.HtmlEditorCore} this
+         */
+        initialize: true,
+        /**
+         * @event activate
+         * Fires when the editor is first receives the focus. Any insertion must wait
+         * until after this event.
+         * @param {Roo.HtmlEditorCore} this
+         */
+        activate: true,
+         /**
+         * @event beforesync
+         * Fires before the textarea is updated with content from the editor iframe. Return false
+         * to cancel the sync.
+         * @param {Roo.HtmlEditorCore} this
+         * @param {String} html
+         */
+        beforesync: true,
+         /**
+         * @event beforepush
+         * Fires before the iframe editor is updated with content from the textarea. Return false
+         * to cancel the push.
+         * @param {Roo.HtmlEditorCore} this
+         * @param {String} html
+         */
+        beforepush: true,
+         /**
+         * @event sync
+         * Fires when the textarea is updated with content from the editor iframe.
+         * @param {Roo.HtmlEditorCore} this
+         * @param {String} html
+         */
+        sync: true,
+         /**
+         * @event push
+         * Fires when the iframe editor is updated with content from the textarea.
+         * @param {Roo.HtmlEditorCore} this
+         * @param {String} html
+         */
+        push: true,
+        
+        /**
+         * @event editorevent
+         * Fires when on any editor (mouse up/down cursor movement etc.) - used for toolbar hooks.
+         * @param {Roo.HtmlEditorCore} this
+         */
+        editorevent: true 
+         
+        
+    });
+    
+    // at this point this.owner is set, so we can start working out the whitelisted / blacklisted elements
+    
+    // defaults : white / black...
+    this.applyBlacklists();
+    
+    
+    
+};
+
+
+Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
+
+
+     /**
+     * @cfg {Roo.form.HtmlEditor|Roo.bootstrap.HtmlEditor} the owner field 
+     */
+    
+    owner : false,
+    
+     /**
+     * @cfg {String} resizable  's' or 'se' or 'e' - wrapps the element in a
+     *                        Roo.resizable.
+     */
+    resizable : false,
+     /**
+     * @cfg {Number} height (in pixels)
+     */   
+    height: 300,
+   /**
+     * @cfg {Number} width (in pixels)
+     */   
+    width: 500,
+     /**
+     * @cfg {boolean} autoClean - default true - loading and saving will remove quite a bit of formating,
+     *         if you are doing an email editor, this probably needs disabling, it's designed
+     */
+    autoClean: true,
+    
+    /**
+     * @cfg {boolean} enableBlocks - default true - if the block editor (table and figure should be enabled)
+     */
+    enableBlocks : true,
+    /**
+     * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets.
+     * 
+     */
+    stylesheets: false,
+     /**
+     * @cfg {String} language default en - language of text (usefull for rtl languages)
+     * 
+     */
+    language: 'en',
+    
+    /**
+     * @cfg {boolean} allowComments - default false - allow comments in HTML source
+     *          - by default they are stripped - if you are editing email you may need this.
+     */
+    allowComments: false,
+    // id of frame..
+    frameId: false,
+    
+    // private properties
+    validationEvent : false,
+    deferHeight: true,
+    initialized : false,
+    activated : false,
+    sourceEditMode : false,
+    onFocus : Roo.emptyFn,
+    iframePad:3,
+    hideMode:'offsets',
+    
+    clearUp: true,
+    
+    // blacklist + whitelisted elements..
+    black: false,
+    white: false,
+     
+    bodyCls : '',
+
+    
+    undoManager : false,
+    /**
+     * Protected method that will not generally be called directly. It
+     * is called when the editor initializes the iframe with HTML contents. Override this method if you
+     * want to change the initialization markup of the iframe (e.g. to add stylesheets).
+     */
+    getDocMarkup : function(){
+        // body styles..
+        var st = '';
+        
+        // inherit styels from page...?? 
+        if (this.stylesheets === false) {
+            
+            Roo.get(document.head).select('style').each(function(node) {
+                st += node.dom.outerHTML || new XMLSerializer().serializeToString(node.dom);
+            });
+            
+            Roo.get(document.head).select('link').each(function(node) { 
+                st += node.dom.outerHTML || new XMLSerializer().serializeToString(node.dom);
+            });
+            
+        } else if (!this.stylesheets.length) {
+                // simple..
+                st = '<style type="text/css">' +
+                    'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
+                   '</style>';
+        } else {
+            for (var i in this.stylesheets) {
+                if (typeof(this.stylesheets[i]) != 'string') {
+                    continue;
+                }
+                st += '<link rel="stylesheet" href="' + this.stylesheets[i] +'" type="text/css">';
+            }
+            
+        }
+        
+        st +=  '<style type="text/css">' +
+            'IMG { cursor: pointer } ' +
+        '</style>';
+        
+        st += '<meta name="google" content="notranslate">';
+        
+        var cls = 'notranslate roo-htmleditor-body';
+        
+        if(this.bodyCls.length){
+            cls += ' ' + this.bodyCls;
+        }
+        
+        return '<html  class="notranslate" translate="no"><head>' + st  +
+            //<style type="text/css">' +
+            //'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
+            //'</style>' +
+            ' </head><body contenteditable="true" data-enable-grammerly="true" class="' +  cls + '"></body></html>';
+    },
+
+    // private
+    onRender : function(ct, position)
+    {
+        var _t = this;
+        //Roo.HtmlEditorCore.superclass.onRender.call(this, ct, position);
+        this.el = this.owner.inputEl ? this.owner.inputEl() : this.owner.el;
+        
+        
+        this.el.dom.style.border = '0 none';
+        this.el.dom.setAttribute('tabIndex', -1);
+        this.el.addClass('x-hidden hide');
+        
+        
+        
+        if(Roo.isIE){ // fix IE 1px bogus margin
+            this.el.applyStyles('margin-top:-1px;margin-bottom:-1px;')
+        }
+       
+        
+        this.frameId = Roo.id();
+        
          
-        var range = this.createRange(this.getSelection()).cloneRange();
         
-        if (Roo.isIE) {
-            var parent = range.parentElement();
-            while (true) {
-                var testRange = range.duplicate();
-                testRange.moveToElementText(parent);
-                if (testRange.inRange(range)) {
-                    break;
+        var iframe = this.owner.wrap.createChild({
+            tag: 'iframe',
+            cls: 'form-control', // bootstrap..
+            id: this.frameId,
+            name: this.frameId,
+            frameBorder : 'no',
+            'src' : Roo.SSL_SECURE_URL ? Roo.SSL_SECURE_URL  :  "javascript:false"
+        }, this.el
+        );
+        
+        
+        this.iframe = iframe.dom;
+
+        this.assignDocWin();
+        
+        this.doc.designMode = 'on';
+       
+        this.doc.open();
+        this.doc.write(this.getDocMarkup());
+        this.doc.close();
+
+        
+        var task = { // must defer to wait for browser to be ready
+            run : function(){
+                //console.log("run task?" + this.doc.readyState);
+                this.assignDocWin();
+                if(this.doc.body || this.doc.readyState == 'complete'){
+                    try {
+                        this.doc.designMode="on";
+                        
+                    } catch (e) {
+                        return;
+                    }
+                    Roo.TaskMgr.stop(task);
+                    this.initEditor.defer(10, this);
                 }
-                if ((parent.nodeType != 1) || (parent.tagName.toLowerCase() == 'body')) {
-                    break;
+            },
+            interval : 10,
+            duration: 10000,
+            scope: this
+        };
+        Roo.TaskMgr.start(task);
+
+    },
+
+    // private
+    onResize : function(w, h)
+    {
+         Roo.log('resize: ' +w + ',' + h );
+        //Roo.HtmlEditorCore.superclass.onResize.apply(this, arguments);
+        if(!this.iframe){
+            return;
+        }
+        if(typeof w == 'number'){
+            
+            this.iframe.style.width = w + 'px';
+        }
+        if(typeof h == 'number'){
+            
+            this.iframe.style.height = h + 'px';
+            if(this.doc){
+                (this.doc.body || this.doc.documentElement).style.height = (h - (this.iframePad*2)) + 'px';
+            }
+        }
+        
+    },
+
+    /**
+     * Toggles the editor between standard and source edit mode.
+     * @param {Boolean} sourceEdit (optional) True for source edit, false for standard
+     */
+    toggleSourceEdit : function(sourceEditMode){
+        
+        this.sourceEditMode = sourceEditMode === true;
+        
+        if(this.sourceEditMode){
+            Roo.get(this.iframe).addClass(['x-hidden','hide', 'd-none']);     //FIXME - what's the BS styles for these
+            
+        }else{
+            Roo.get(this.iframe).removeClass(['x-hidden','hide', 'd-none']);
+            //this.iframe.className = '';
+            this.deferFocus();
+        }
+        //this.setSize(this.owner.wrap.getSize());
+        //this.fireEvent('editmodechange', this, this.sourceEditMode);
+    },
+
+    
+  
+
+    /**
+     * Protected method that will not generally be called directly. If you need/want
+     * custom HTML cleanup, this is the method you should override.
+     * @param {String} html The HTML to be cleaned
+     * return {String} The cleaned HTML
+     */
+    cleanHtml : function(html)
+    {
+        html = String(html);
+        if(html.length > 5){
+            if(Roo.isSafari){ // strip safari nonsense
+                html = html.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi, '');
+            }
+        }
+        if(html == '&nbsp;'){
+            html = '';
+        }
+        return html;
+    },
+
+    /**
+     * HTML Editor -> Textarea
+     * Protected method that will not generally be called directly. Syncs the contents
+     * of the editor iframe with the textarea.
+     */
+    syncValue : function()
+    {
+        //Roo.log("HtmlEditorCore:syncValue (EDITOR->TEXT)");
+        if(this.initialized){
+            
+            this.undoManager.addEvent();
+
+            
+            var bd = (this.doc.body || this.doc.documentElement);
+           
+            
+            var sel = this.win.getSelection();
+            
+            var div = document.createElement('div');
+            div.innerHTML = bd.innerHTML;
+            var gtx = div.getElementsByClassName('gtx-trans-icon'); // google translate - really annoying and difficult to get rid of.
+            if (gtx.length > 0) {
+                var rm = gtx.item(0).parentNode;
+                rm.parentNode.removeChild(rm);
+            }
+            
+           
+            if (this.enableBlocks) {
+                new Roo.htmleditor.FilterBlock({ node : div });
+            }
+            //?? tidy?
+            var tidy = new Roo.htmleditor.TidySerializer({
+                inner:  true
+            });
+            var html  = tidy.serialize(div);
+            
+            
+            if(Roo.isSafari){
+                var bs = bd.getAttribute('style'); // Safari puts text-align styles on the body element!
+                var m = bs ? bs.match(/text-align:(.*?);/i) : false;
+                if(m && m[1]){
+                    html = '<div style="'+m[0]+'">' + html + '</div>';
                 }
-                parent = parent.parentElement;
             }
-            return parent;
-        }
-        
-        // is ancestor a text element.
-        var ac =  range.commonAncestorContainer;
-        if (ac.nodeType == 3) {
-            ac = ac.parentNode;
-        }
-        
-        var ar = ac.childNodes;
+            html = this.cleanHtml(html);
+            // fix up the special chars.. normaly like back quotes in word...
+            // however we do not want to do this with chinese..
+            html = html.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u0080-\uFFFF]/g, function(match) {
+                
+                var cc = match.charCodeAt();
+
+                // Get the character value, handling surrogate pairs
+                if (match.length == 2) {
+                    // It's a surrogate pair, calculate the Unicode code point
+                    var high = match.charCodeAt(0) - 0xD800;
+                    var low  = match.charCodeAt(1) - 0xDC00;
+                    cc = (high * 0x400) + low + 0x10000;
+                }  else if (
+                    (cc >= 0x4E00 && cc < 0xA000 ) ||
+                    (cc >= 0x3400 && cc < 0x4E00 ) ||
+                    (cc >= 0xf900 && cc < 0xfb00 )
+                ) {
+                        return match;
+                }  
          
-        var nodes = [];
-        var other_nodes = [];
-        var has_other_nodes = false;
-        for (var i=0;i<ar.length;i++) {
-            if ((ar[i].nodeType == 3) && (!ar[i].data.length)) { // empty text ? 
-                continue;
-            }
-            // fullly contained node.
+                // No, use a numeric entity. Here we brazenly (and possibly mistakenly)
+                return "&#" + cc + ";";
+                
+                
+            });
             
-            if (this.rangeIntersectsNode(range,ar[i]) && this.rangeCompareNode(range,ar[i]) == 3) {
-                nodes.push(ar[i]);
-                continue;
+            
+             
+            if(this.owner.fireEvent('beforesync', this, html) !== false){
+                this.el.dom.value = html;
+                this.owner.fireEvent('sync', this, html);
             }
+        }
+    },
+
+    /**
+     * TEXTAREA -> EDITABLE
+     * Protected method that will not generally be called directly. Pushes the value of the textarea
+     * into the iframe editor.
+     */
+    pushValue : function()
+    {
+        //Roo.log("HtmlEditorCore:pushValue (TEXT->EDITOR)");
+        if(this.initialized){
+            var v = this.el.dom.value.trim();
             
-            // probably selected..
-            if ((ar[i].nodeType == 1) && this.rangeIntersectsNode(range,ar[i]) && (this.rangeCompareNode(range,ar[i]) > 0)) {
-                other_nodes.push(ar[i]);
-                continue;
+            
+            if(this.owner.fireEvent('beforepush', this, v) !== false){
+                var d = (this.doc.body || this.doc.documentElement);
+                d.innerHTML = v;
+                 
+                this.el.dom.value = d.innerHTML;
+                this.owner.fireEvent('push', this, v);
             }
-            // outer..
-            if (!this.rangeIntersectsNode(range,ar[i])|| (this.rangeCompareNode(range,ar[i]) == 0))  {
-                continue;
+            if (this.autoClean) {
+                new Roo.htmleditor.FilterParagraph({node : this.doc.body}); // paragraphs
+                new Roo.htmleditor.FilterSpan({node : this.doc.body}); // empty spans
+            }
+            if (this.enableBlocks) {
+                Roo.htmleditor.Block.initAll(this.doc.body);
+            }
+            
+            this.updateLanguage();
+            
+            var lc = this.doc.body.lastChild;
+            if (lc && lc.nodeType == 1 && lc.getAttribute("contenteditable") == "false") {
+                // add an extra line at the end.
+                this.doc.body.appendChild(this.doc.createElement('br'));
             }
             
             
-            has_other_nodes = true;
-        }
-        if (!nodes.length && other_nodes.length) {
-            nodes= other_nodes;
-        }
-        if (has_other_nodes || !nodes.length || (nodes.length > 1)) {
-            return false;
         }
-        
-        return nodes[0];
     },
-    createRange: function(sel)
-    {
-        // this has strange effects when using with 
-        // top toolbar - not sure if it's a great idea.
-        //this.editor.contentWindow.focus();
-        if (typeof sel != "undefined") {
-            try {
-                return sel.getRangeAt ? sel.getRangeAt(0) : sel.createRange();
-            } catch(e) {
-                return this.doc.createRange();
-            }
-        } else {
-            return this.doc.createRange();
+
+    // private
+    deferFocus : function(){
+        this.focus.defer(10, this);
+    },
+
+    // doc'ed in Field
+    focus : function(){
+        if(this.win && !this.sourceEditMode){
+            this.win.focus();
+        }else{
+            this.el.focus();
         }
     },
-    getParentElement: function()
+    
+    assignDocWin: function()
     {
+        var iframe = this.iframe;
         
-        this.assignDocWin();
-        var sel = Roo.isIE ? this.doc.selection : this.win.getSelection();
-        
-        var range = this.createRange(sel);
-         
-        try {
-            var p = range.commonAncestorContainer;
-            while (p.nodeType == 3) { // text node
-                p = p.parentNode;
+         if(Roo.isIE){
+            this.doc = iframe.contentWindow.document;
+            this.win = iframe.contentWindow;
+        } else {
+//            if (!Roo.get(this.frameId)) {
+//                return;
+//            }
+//            this.doc = (iframe.contentDocument || Roo.get(this.frameId).dom.document);
+//            this.win = Roo.get(this.frameId).dom.contentWindow;
+            
+            if (!Roo.get(this.frameId) && !iframe.contentDocument) {
+                return;
             }
-            return p;
-        } catch (e) {
-            return null;
+            
+            this.doc = (iframe.contentDocument || Roo.get(this.frameId).dom.document);
+            this.win = (iframe.contentWindow || Roo.get(this.frameId).dom.contentWindow);
         }
-    
     },
-    /***
-     *
-     * Range intersection.. the hard stuff...
-     *  '-1' = before
-     *  '0' = hits..
-     *  '1' = after.
-     *         [ -- selected range --- ]
-     *   [fail]                        [fail]
-     *
-     *    basically..
-     *      if end is before start or  hits it. fail.
-     *      if start is after end or hits it fail.
-     *
-     *   if either hits (but other is outside. - then it's not 
-     *   
-     *    
-     **/
-    
     
-    // @see http://www.thismuchiknow.co.uk/?p=64.
-    rangeIntersectsNode : function(range, node)
-    {
-        var nodeRange = node.ownerDocument.createRange();
-        try {
-            nodeRange.selectNode(node);
-        } catch (e) {
-            nodeRange.selectNodeContents(node);
+    // private
+    initEditor : function(){
+        //console.log("INIT EDITOR");
+        this.assignDocWin();
+        
+        
+        
+        this.doc.designMode="on";
+        this.doc.open();
+        this.doc.write(this.getDocMarkup());
+        this.doc.close();
+        
+        var dbody = (this.doc.body || this.doc.documentElement);
+        //var ss = this.el.getStyles('font-size', 'font-family', 'background-image', 'background-repeat');
+        // this copies styles from the containing element into thsi one..
+        // not sure why we need all of this..
+        //var ss = this.el.getStyles('font-size', 'background-image', 'background-repeat');
+        
+        //var ss = this.el.getStyles( 'background-image', 'background-repeat');
+        //ss['background-attachment'] = 'fixed'; // w3c
+        dbody.bgProperties = 'fixed'; // ie
+        dbody.setAttribute("translate", "no");
+        
+        //Roo.DomHelper.applyStyles(dbody, ss);
+        Roo.EventManager.on(this.doc, {
+             
+            'mouseup': this.onEditorEvent,
+            'dblclick': this.onEditorEvent,
+            'click': this.onEditorEvent,
+            'keyup': this.onEditorEvent,
+            
+            buffer:100,
+            scope: this
+        });
+        Roo.EventManager.on(this.doc, {
+            'paste': this.onPasteEvent,
+            scope : this
+        });
+        if(Roo.isGecko){
+            Roo.EventManager.on(this.doc, 'keypress', this.mozKeyPress, this);
         }
-    
-        var rangeStartRange = range.cloneRange();
-        rangeStartRange.collapse(true);
-    
-        var rangeEndRange = range.cloneRange();
-        rangeEndRange.collapse(false);
-    
-        var nodeStartRange = nodeRange.cloneRange();
-        nodeStartRange.collapse(true);
-    
-        var nodeEndRange = nodeRange.cloneRange();
-        nodeEndRange.collapse(false);
-    
-        return rangeStartRange.compareBoundaryPoints(
-                 Range.START_TO_START, nodeEndRange) == -1 &&
-               rangeEndRange.compareBoundaryPoints(
-                 Range.START_TO_START, nodeStartRange) == 1;
+        //??? needed???
+        if(Roo.isIE || Roo.isSafari || Roo.isOpera){
+            Roo.EventManager.on(this.doc, 'keydown', this.fixKeys, this);
+        }
+        this.initialized = true;
+
+        
+        // initialize special key events - enter
+        new Roo.htmleditor.KeyEnter({core : this});
         
          
+        
+        this.owner.fireEvent('initialize', this);
+        this.pushValue();
     },
-    rangeCompareNode : function(range, node)
+    // this is to prevent a href clicks resulting in a redirect?
+   
+    onPasteEvent : function(e,v)
     {
-        var nodeRange = node.ownerDocument.createRange();
-        try {
-            nodeRange.selectNode(node);
-        } catch (e) {
-            nodeRange.selectNodeContents(node);
+        // I think we better assume paste is going to be a dirty load of rubish from word..
+        
+        // even pasting into a 'email version' of this widget will have to clean up that mess.
+        var cd = (e.browserEvent.clipboardData || window.clipboardData);
+        
+        // check what type of paste - if it's an image, then handle it differently.
+        if (cd.files.length > 0) {
+            // pasting images?
+            var urlAPI = (window.createObjectURL && window) || 
+                (window.URL && URL.revokeObjectURL && URL) || 
+                (window.webkitURL && webkitURL);
+    
+            var url = urlAPI.createObjectURL( cd.files[0]);
+            this.insertAtCursor('<img src=" + url + ">');
+            return false;
         }
         
+        var html = cd.getData('text/html'); // clipboard event
+        var parser = new Roo.rtf.Parser(cd.getData('text/rtf'));
+        var images = parser.doc ? parser.doc.getElementsByType('pict') : [];
+        Roo.log(images);
+        //Roo.log(imgs);
+        // fixme..
+        images = images.filter(function(g) { return !g.path.match(/^rtf\/(head|pgdsctbl|listtable)/); }) // ignore headers
+                       .map(function(g) { return g.toDataURL(); })
+                       .filter(function(g) { return g != 'about:blank'; });
+        
+        
+        html = this.cleanWordChars(html);
+        
+        var d = (new DOMParser().parseFromString(html, 'text/html')).body;
         
-        range.collapse(true);
-    
-        nodeRange.collapse(true);
-     
-        var ss = range.compareBoundaryPoints( Range.START_TO_START, nodeRange);
-        var ee = range.compareBoundaryPoints(  Range.END_TO_END, nodeRange);
-         
-        //Roo.log(node.tagName + ': ss='+ss +', ee='+ee)
         
-        var nodeIsBefore   =  ss == 1;
-        var nodeIsAfter    = ee == -1;
+        var sn = this.getParentElement();
+        // check if d contains a table, and prevent nesting??
+        //Roo.log(d.getElementsByTagName('table'));
+        //Roo.log(sn);
+        //Roo.log(sn.closest('table'));
+        if (d.getElementsByTagName('table').length && sn && sn.closest('table')) {
+            e.preventDefault();
+            this.insertAtCursor("You can not nest tables");
+            //Roo.log("prevent?"); // fixme - 
+            return false;
+        }
         
-        if (nodeIsBefore && nodeIsAfter) {
-            return 0; // outer
+        if (images.length > 0) {
+            Roo.each(d.getElementsByTagName('img'), function(img, i) {
+                img.setAttribute('src', images[i]);
+            });
         }
-        if (!nodeIsBefore && nodeIsAfter) {
-            return 1; //right trailed.
+        if (this.autoClean) {
+            new Roo.htmleditor.FilterStyleToTag({ node : d });
+            new Roo.htmleditor.FilterAttributes({
+                node : d,
+                attrib_white : ['href', 'src', 'name', 'align'],
+                attrib_clean : ['href', 'src' ] 
+            });
+            new Roo.htmleditor.FilterBlack({ node : d, tag : this.black});
+            // should be fonts..
+            new Roo.htmleditor.FilterKeepChildren({node : d, tag : [ 'FONT', 'O:P' ]} );
+            new Roo.htmleditor.FilterParagraph({ node : d });
+            new Roo.htmleditor.FilterSpan({ node : d });
+            new Roo.htmleditor.FilterLongBr({ node : d });
         }
-        
-        if (nodeIsBefore && !nodeIsAfter) {
-            return 2;  // left trailed.
+        if (this.enableBlocks) {
+                
+            Array.from(d.getElementsByTagName('img')).forEach(function(img) {
+                if (img.closest('figure')) { // assume!! that it's aready
+                    return;
+                }
+                var fig  = new Roo.htmleditor.BlockFigure({
+                    image_src  : img.src
+                });
+                fig.updateElement(img); // replace it..
+                
+            });
         }
-        // fully contined.
-        return 3;
-    },
-
-    // private? - in a new class?
-    cleanUpPaste :  function()
-    {
-        // cleans up the whole document..
-        Roo.log('cleanuppaste');
         
-        this.cleanUpChildren(this.doc.body);
-        var clean = this.cleanWordChars(this.doc.body.innerHTML);
-        if (clean != this.doc.body.innerHTML) {
-            this.doc.body.innerHTML = clean;
+        
+        this.insertAtCursor(d.innerHTML.replace(/&nbsp;/g,' '));
+        if (this.enableBlocks) {
+            Roo.htmleditor.Block.initAll(this.doc.body);
         }
         
+        
+        e.preventDefault();
+        return false;
+        // default behaveiour should be our local cleanup paste? (optional?)
+        // for simple editor - we want to hammer the paste and get rid of everything... - so over-rideable..
+        //this.owner.fireEvent('paste', e, v);
     },
-    
-    cleanWordChars : function(input) {// change the chars to hex code
-        var he = Roo.HtmlEditorCore;
+    // private
+    onDestroy : function(){
         
-        var output = input;
-        Roo.each(he.swapCodes, function(sw) { 
-            var swapper = new RegExp("\\u" + sw[0].toString(16), "g"); // hex codes
-            
-            output = output.replace(swapper, sw[1]);
-        });
         
-        return output;
+        
+        if(this.rendered){
+            
+            //for (var i =0; i < this.toolbars.length;i++) {
+            //    // fixme - ask toolbars for heights?
+            //    this.toolbars[i].onDestroy();
+           // }
+            
+            //this.wrap.dom.innerHTML = '';
+            //this.wrap.remove();
+        }
     },
+
+    // private
+    onFirstFocus : function(){
+        
+        this.assignDocWin();
+        this.undoManager = new Roo.lib.UndoManager(100,(this.doc.body || this.doc.documentElement));
+        
+        this.activated = true;
+         
     
-    
-    cleanUpChildren : function (n)
-    {
-        if (!n.childNodes.length) {
-            return;
-        }
-        for (var i = n.childNodes.length-1; i > -1 ; i--) {
-           this.cleanUpChild(n.childNodes[i]);
+        if(Roo.isGecko){ // prevent silly gecko errors
+            this.win.focus();
+            var s = this.win.getSelection();
+            if(!s.focusNode || s.focusNode.nodeType != 3){
+                var r = s.getRangeAt(0);
+                r.selectNodeContents((this.doc.body || this.doc.documentElement));
+                r.collapse(true);
+                this.deferFocus();
+            }
+            try{
+                this.execCmd('useCSS', true);
+                this.execCmd('styleWithCSS', false);
+            }catch(e){}
         }
+        this.owner.fireEvent('activate', this);
     },
-    
-    
+
+    // private
+    adjustFont: function(btn){
+        var adjust = btn.cmd == 'increasefontsize' ? 1 : -1;
+        //if(Roo.isSafari){ // safari
+        //    adjust *= 2;
+       // }
+        var v = parseInt(this.doc.queryCommandValue('FontSize')|| 3, 10);
+        if(Roo.isSafari){ // safari
+            var sm = { 10 : 1, 13: 2, 16:3, 18:4, 24: 5, 32:6, 48: 7 };
+            v =  (v < 10) ? 10 : v;
+            v =  (v > 48) ? 48 : v;
+            v = typeof(sm[v]) == 'undefined' ? 1 : sm[v];
+            
+        }
         
-    
-    cleanUpChild : function (node)
+        
+        v = Math.max(1, v+adjust);
+        
+        this.execCmd('FontSize', v  );
+    },
+
+    onEditorEvent : function(e)
     {
-        var ed = this;
-        //console.log(node);
-        if (node.nodeName == "#text") {
-            // clean up silly Windows -- stuff?
-            return; 
+         
+        
+        if (e && (e.ctrlKey || e.metaKey) && e.keyCode === 90) {
+            return; // we do not handle this.. (undo manager does..)
         }
-        if (node.nodeName == "#comment") {
-            if (!this.allowComments) {
-                node.parentNode.removeChild(node);
+        // in theory this detects if the last element is not a br, then we try and do that.
+        // its so clicking in space at bottom triggers adding a br and moving the cursor.
+        if (e &&
+            e.target.nodeName == 'BODY' &&
+            e.type == "mouseup" &&
+            this.doc.body.lastChild
+           ) {
+            var lc = this.doc.body.lastChild;
+            // gtx-trans is google translate plugin adding crap.
+            while ((lc.nodeType == 3 && lc.nodeValue == '') || lc.id == 'gtx-trans') {
+                lc = lc.previousSibling;
+            }
+            if (lc.nodeType == 1 && lc.nodeName != 'BR') {
+            // if last element is <BR> - then dont do anything.
+            
+                var ns = this.doc.createElement('br');
+                this.doc.body.appendChild(ns);
+                range = this.doc.createRange();
+                range.setStartAfter(ns);
+                range.collapse(true);
+                var sel = this.win.getSelection();
+                sel.removeAllRanges();
+                sel.addRange(range);
             }
-            // clean up silly Windows -- stuff?
-            return; 
         }
-        var lcname = node.tagName.toLowerCase();
-        // we ignore whitelists... ?? = not really the way to go, but we probably have not got a full
-        // whitelist of tags..
         
-        if (this.black.indexOf(lcname) > -1 && this.clearUp ) {
-            // remove node.
-            node.parentNode.removeChild(node);
+        
+        
+        this.fireEditorEvent(e);
+      //  this.updateToolbar();
+        this.syncValue(); //we can not sync so often.. sync cleans, so this breaks stuff
+    },
+    
+    fireEditorEvent: function(e)
+    {
+        this.owner.fireEvent('editorevent', this, e);
+    },
+
+    insertTag : function(tg)
+    {
+        // could be a bit smarter... -> wrap the current selected tRoo..
+        if (tg.toLowerCase() == 'span' ||
+            tg.toLowerCase() == 'code' ||
+            tg.toLowerCase() == 'sup' ||
+            tg.toLowerCase() == 'sub' 
+            ) {
+            
+            range = this.createRange(this.getSelection());
+            var wrappingNode = this.doc.createElement(tg.toLowerCase());
+            wrappingNode.appendChild(range.extractContents());
+            range.insertNode(wrappingNode);
+
             return;
             
+            
+            
         }
+        this.execCmd("formatblock",   tg);
+        this.undoManager.addEvent(); 
+    },
+    
+    insertText : function(txt)
+    {
         
-        var remove_keep_children= Roo.HtmlEditorCore.remove.indexOf(node.tagName.toLowerCase()) > -1;
         
-        // spans with no attributes - just remove them..
-        if ((!node.attributes || !node.attributes.length) && lcname == 'span') { 
-            remove_keep_children = true;
-        }
+        var range = this.createRange();
+        range.deleteContents();
+               //alert(Sender.getAttribute('label'));
+               
+        range.insertNode(this.doc.createTextNode(txt));
+        this.undoManager.addEvent();
+    } ,
+    
+     
+
+    /**
+     * Executes a Midas editor command on the editor document and performs necessary focus and
+     * toolbar updates. <b>This should only be called after the editor is initialized.</b>
+     * @param {String} cmd The Midas command
+     * @param {String/Boolean} value (optional) The value to pass to the command (defaults to null)
+     */
+    relayCmd : function(cmd, value)
+    {
+        
+        switch (cmd) {
+            case 'justifyleft':
+            case 'justifyright':
+            case 'justifycenter':
+                // if we are in a cell, then we will adjust the
+                var n = this.getParentElement();
+                var td = n.closest('td');
+                if (td) {
+                    var bl = Roo.htmleditor.Block.factory(td);
+                    bl.textAlign = cmd.replace('justify','');
+                    bl.updateElement();
+                    this.owner.fireEvent('editorevent', this);
+                    return;
+                }
+                this.execCmd('styleWithCSS', true); // 
+                break;
+            case 'bold':
+            case 'italic':
+                // if there is no selection, then we insert, and set the curson inside it..
+                this.execCmd('styleWithCSS', false); 
+                break;
+                
         
-        // remove <a name=....> as rendering on yahoo mailer is borked with this.
-        // this will have to be flaged elsewhere - perhaps ablack=name... on the mailer..
+            default:
+                break;
+        }
         
-        //if (node.tagName.toLowerCase() == 'a' && !node.hasAttribute('href')) {
-        //    remove_keep_children = true;
-        //}
         
-        if (remove_keep_children) {
-            this.cleanUpChildren(node);
-            // inserts everything just before this node...
-            while (node.childNodes.length) {
-                var cn = node.childNodes[0];
-                node.removeChild(cn);
-                node.parentNode.insertBefore(cn, node);
-            }
-            node.parentNode.removeChild(node);
-            return;
-        }
+        this.win.focus();
+        this.execCmd(cmd, value);
+        this.owner.fireEvent('editorevent', this);
+        //this.updateToolbar();
+        this.owner.deferFocus();
+    },
+
+    /**
+     * Executes a Midas editor command directly on the editor document.
+     * For visual commands, you should use {@link #relayCmd} instead.
+     * <b>This should only be called after the editor is initialized.</b>
+     * @param {String} cmd The Midas command
+     * @param {String/Boolean} value (optional) The value to pass to the command (defaults to null)
+     */
+    execCmd : function(cmd, value){
+        this.doc.execCommand(cmd, false, value === undefined ? null : value);
+        this.syncValue();
+    },
+   
+    /**
+     * Inserts the passed text at the current cursor position. Note: the editor must be initialized and activated
+     * to insert tRoo.
+     * @param {String} text | dom node.. 
+     */
+    insertAtCursor : function(text)
+    {
         
-        if (!node.attributes || !node.attributes.length) {
-            
-          
-            
-            
-            this.cleanUpChildren(node);
+        if(!this.activated){
             return;
         }
-        
-        function cleanAttr(n,v)
-        {
+         
+        if(Roo.isGecko || Roo.isOpera || Roo.isSafari){
+            this.win.focus();
             
-            if (v.match(/^\./) || v.match(/^\//)) {
-                return;
-            }
-            if (v.match(/^(http|https):\/\//) || v.match(/^mailto:/) || v.match(/^ftp:/)) {
-                return;
-            }
-            if (v.match(/^#/)) {
-                return;
-            }
-            if (v.match(/^\{/)) { // allow template editing.
-                return;
-            }
-//            Roo.log("(REMOVE TAG)"+ node.tagName +'.' + n + '=' + v);
-            node.removeAttribute(n);
             
-        }
-        
-        var cwhite = this.cwhite;
-        var cblack = this.cblack;
+            // from jquery ui (MIT licenced)
+            var range, node;
+            var win = this.win;
             
-        function cleanStyle(n,v)
-        {
-            if (v.match(/expression/)) { //XSS?? should we even bother..
-                node.removeAttribute(n);
-                return;
-            }
+            if (win.getSelection && win.getSelection().getRangeAt) {
+                
+                // delete the existing?
+                
+                this.createRange(this.getSelection()).deleteContents();
+                range = win.getSelection().getRangeAt(0);
+                node = typeof(text) == 'string' ? range.createContextualFragment(text) : text;
+                range.insertNode(node);
+                range = range.cloneRange();
+                range.collapse(false);
+                 
+                win.getSelection().removeAllRanges();
+                win.getSelection().addRange(range);
+                
+                
+                
+            } else if (win.document.selection && win.document.selection.createRange) {
+                // no firefox support
+                var txt = typeof(text) == 'string' ? text : text.outerHTML;
+                win.document.selection.createRange().pasteHTML(txt);
             
-            var parts = v.split(/;/);
-            var clean = [];
+            } else {
+                // no firefox support
+                var txt = typeof(text) == 'string' ? text : text.outerHTML;
+                this.execCmd('InsertHTML', txt);
+            } 
+            this.syncValue();
             
-            Roo.each(parts, function(p) {
-                p = p.replace(/^\s+/g,'').replace(/\s+$/g,'');
-                if (!p.length) {
-                    return true;
-                }
-                var l = p.split(':').shift().replace(/\s+/g,'');
-                l = l.replace(/^\s+/g,'').replace(/\s+$/g,'');
-                
-                if ( cwhite.length && cblack.indexOf(l) > -1) {
-//                    Roo.log('(REMOVE CSS)' + node.tagName +'.' + n + ':'+l + '=' + v);
-                    //node.removeAttribute(n);
-                    return true;
+            this.deferFocus();
+        }
+    },
+ // private
+    mozKeyPress : function(e){
+        if(e.ctrlKey){
+            var c = e.getCharCode(), cmd;
+          
+            if(c > 0){
+                c = String.fromCharCode(c).toLowerCase();
+                switch(c){
+                    case 'b':
+                        cmd = 'bold';
+                        break;
+                    case 'i':
+                        cmd = 'italic';
+                        break;
+                    
+                    case 'u':
+                        cmd = 'underline';
+                        break;
+                    
+                    //case 'v':
+                      //  this.cleanUpPaste.defer(100, this);
+                      //  return;
+                        
                 }
-                //Roo.log()
-                // only allow 'c whitelisted system attributes'
-                if ( cwhite.length &&  cwhite.indexOf(l) < 0 && cwhite.indexOf(l.toLowerCase()) < 0 ) {
-//                    Roo.log('(REMOVE CSS)' + node.tagName +'.' + n + ':'+l + '=' + v);
-                    //node.removeAttribute(n);
-                    return true;
+                if(cmd){
+                    
+                    this.relayCmd(cmd);
+                    //this.win.focus();
+                    //this.execCmd(cmd);
+                    //this.deferFocus();
+                    e.preventDefault();
                 }
                 
-                
-                 
-                
-                clean.push(p);
-                return true;
-            });
-            if (clean.length) { 
-                node.setAttribute(n, clean.join(';'));
-            } else {
-                node.removeAttribute(n);
             }
-            
         }
+    },
+
+    // private
+    fixKeys : function(){ // load time branching for fastest keydown performance
         
         
-        for (var i = node.attributes.length-1; i > -1 ; i--) {
-            var a = node.attributes[i];
-            //console.log(a);
-            
-            if (a.name.toLowerCase().substr(0,2)=='on')  {
-                node.removeAttribute(a.name);
-                continue;
-            }
-            if (Roo.HtmlEditorCore.ablack.indexOf(a.name.toLowerCase()) > -1) {
-                node.removeAttribute(a.name);
-                continue;
-            }
-            if (Roo.HtmlEditorCore.aclean.indexOf(a.name.toLowerCase()) > -1) {
-                cleanAttr(a.name,a.value); // fixme..
-                continue;
-            }
-            if (a.name == 'style') {
-                cleanStyle(a.name,a.value);
-                continue;
-            }
-            /// clean up MS crap..
-            // tecnically this should be a list of valid class'es..
-            
-            
-            if (a.name == 'class') {
-                if (a.value.match(/^Mso/)) {
-                    node.removeAttribute('class');
+        if(Roo.isIE){
+            return function(e){
+                var k = e.getKey(), r;
+                if(k == e.TAB){
+                    e.stopEvent();
+                    r = this.doc.selection.createRange();
+                    if(r){
+                        r.collapse(true);
+                        r.pasteHTML('&#160;&#160;&#160;&#160;');
+                        this.deferFocus();
+                    }
+                    return;
+                }
+                /// this is handled by Roo.htmleditor.KeyEnter
+                 /*
+                if(k == e.ENTER){
+                    r = this.doc.selection.createRange();
+                    if(r){
+                        var target = r.parentElement();
+                        if(!target || target.tagName.toLowerCase() != 'li'){
+                            e.stopEvent();
+                            r.pasteHTML('<br/>');
+                            r.collapse(false);
+                            r.select();
+                        }
+                    }
                 }
+                */
+                //if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
+                //    this.cleanUpPaste.defer(100, this);
+                //    return;
+                //}
                 
-                if (a.value.match(/^body$/)) {
-                    node.removeAttribute('class');
+                
+            };
+        }else if(Roo.isOpera){
+            return function(e){
+                var k = e.getKey();
+                if(k == e.TAB){
+                    e.stopEvent();
+                    this.win.focus();
+                    this.execCmd('InsertHTML','&#160;&#160;&#160;&#160;');
+                    this.deferFocus();
                 }
-                continue;
-            }
-            
-            // style cleanup!?
-            // class cleanup?
-            
+               
+                //if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
+                //    this.cleanUpPaste.defer(100, this);
+                 //   return;
+                //}
+                
+            };
+        }else if(Roo.isSafari){
+            return function(e){
+                var k = e.getKey();
+                
+                if(k == e.TAB){
+                    e.stopEvent();
+                    this.execCmd('InsertText','\t');
+                    this.deferFocus();
+                    return;
+                }
+                 this.mozKeyPress(e);
+                
+               //if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
+                 //   this.cleanUpPaste.defer(100, this);
+                 //   return;
+               // }
+                
+             };
+        }
+    }(),
+    
+    getAllAncestors: function()
+    {
+        var p = this.getSelectedNode();
+        var a = [];
+        if (!p) {
+            a.push(p); // push blank onto stack..
+            p = this.getParentElement();
         }
         
         
-        this.cleanUpChildren(node);
-        
-        
+        while (p && (p.nodeType == 1) && (p.tagName.toLowerCase() != 'body')) {
+            a.push(p);
+            p = p.parentNode;
+        }
+        a.push(this.doc.body);
+        return a;
     },
+    lastSel : false,
+    lastSelNode : false,
     
+    
+    getSelection : function() 
+    {
+        this.assignDocWin();
+        return Roo.lib.Selection.wrap(Roo.isIE ? this.doc.selection : this.win.getSelection(), this.doc);
+    },
     /**
-     * Clean up MS wordisms...
+     * Select a dom node
+     * @param {DomElement} node the node to select
      */
-    cleanWord : function(node)
+    selectNode : function(node, collapse)
     {
-        if (!node) {
-            this.cleanWord(this.doc.body);
-            return;
-        }
-        
-        if(
-                node.nodeName == 'SPAN' &&
-                !node.hasAttributes() &&
-                node.childNodes.length == 1 &&
-                node.firstChild.nodeName == "#text"  
-        ) {
-            var textNode = node.firstChild;
-            node.removeChild(textNode);
-            if (node.getAttribute('lang') != 'zh-CN') {   // do not space pad on chinese characters..
-                node.parentNode.insertBefore(node.ownerDocument.createTextNode(" "), node);
-            }
-            node.parentNode.insertBefore(textNode, node);
-            if (node.getAttribute('lang') != 'zh-CN') {   // do not space pad on chinese characters..
-                node.parentNode.insertBefore(node.ownerDocument.createTextNode(" ") , node);
-            }
-            node.parentNode.removeChild(node);
-        }
-        
-        if (node.nodeName == "#text") {
-            // clean up silly Windows -- stuff?
-            return; 
+        var nodeRange = node.ownerDocument.createRange();
+        try {
+            nodeRange.selectNode(node);
+        } catch (e) {
+            nodeRange.selectNodeContents(node);
         }
-        if (node.nodeName == "#comment") {
-            node.parentNode.removeChild(node);
-            // clean up silly Windows -- stuff?
-            return; 
+        if (collapse === true) {
+            nodeRange.collapse(true);
         }
+        //
+        var s = this.win.getSelection();
+        s.removeAllRanges();
+        s.addRange(nodeRange);
+    },
+    
+    getSelectedNode: function() 
+    {
+        // this may only work on Gecko!!!
         
-        if (node.tagName.toLowerCase().match(/^(style|script|applet|embed|noframes|noscript)$/)) {
-            node.parentNode.removeChild(node);
-            return;
-        }
-        //Roo.log(node.tagName);
-        // remove - but keep children..
-        if (node.tagName.toLowerCase().match(/^(meta|link|\\?xml:|st1:|o:|v:|font)/)) {
-            //Roo.log('-- removed');
-            while (node.childNodes.length) {
-                var cn = node.childNodes[0];
-                node.removeChild(cn);
-                node.parentNode.insertBefore(cn, node);
-                // move node to parent - and clean it..
-                this.cleanWord(cn);
-            }
-            node.parentNode.removeChild(node);
-            /// no need to iterate chidlren = it's got none..
-            //this.iterateChildren(node, this.cleanWord);
-            return;
-        }
-        // clean styles
-        if (node.className.length) {
-            
-            var cn = node.className.split(/\W+/);
-            var cna = [];
-            Roo.each(cn, function(cls) {
-                if (cls.match(/Mso[a-zA-Z]+/)) {
-                    return;
-                }
-                cna.push(cls);
-            });
-            node.className = cna.length ? cna.join(' ') : '';
-            if (!cna.length) {
-                node.removeAttribute("class");
-            }
-        }
+        // should we cache this!!!!
         
-        if (node.hasAttribute("lang")) {
-            node.removeAttribute("lang");
-        }
+         
+         
+        var range = this.createRange(this.getSelection()).cloneRange();
         
-        if (node.hasAttribute("style")) {
-            
-            var styles = node.getAttribute("style").split(";");
-            var nstyle = [];
-            Roo.each(styles, function(s) {
-                if (!s.match(/:/)) {
-                    return;
-                }
-                var kv = s.split(":");
-                if (kv[0].match(/^(mso-|line|font|background|margin|padding|color)/)) {
-                    return;
-                }
-                // what ever is left... we allow.
-                nstyle.push(s);
-            });
-            node.setAttribute("style", nstyle.length ? nstyle.join(';') : '');
-            if (!nstyle.length) {
-                node.removeAttribute('style');
+        if (Roo.isIE) {
+            var parent = range.parentElement();
+            while (true) {
+                var testRange = range.duplicate();
+                testRange.moveToElementText(parent);
+                if (testRange.inRange(range)) {
+                    break;
+                }
+                if ((parent.nodeType != 1) || (parent.tagName.toLowerCase() == 'body')) {
+                    break;
+                }
+                parent = parent.parentElement;
             }
+            return parent;
         }
-        this.iterateChildren(node, this.cleanWord);
-        
         
+        // is ancestor a text element.
+        var ac =  range.commonAncestorContainer;
+        if (ac.nodeType == 3) {
+            ac = ac.parentNode;
+        }
         
-    },
-    /**
-     * iterateChildren of a Node, calling fn each time, using this as the scole..
-     * @param {DomNode} node node to iterate children of.
-     * @param {Function} fn method of this class to call on each item.
-     */
-    iterateChildren : function(node, fn)
-    {
-        if (!node.childNodes.length) {
-                return;
+        var ar = ac.childNodes;
+         
+        var nodes = [];
+        var other_nodes = [];
+        var has_other_nodes = false;
+        for (var i=0;i<ar.length;i++) {
+            if ((ar[i].nodeType == 3) && (!ar[i].data.length)) { // empty text ? 
+                continue;
+            }
+            // fullly contained node.
+            
+            if (this.rangeIntersectsNode(range,ar[i]) && this.rangeCompareNode(range,ar[i]) == 3) {
+                nodes.push(ar[i]);
+                continue;
+            }
+            
+            // probably selected..
+            if ((ar[i].nodeType == 1) && this.rangeIntersectsNode(range,ar[i]) && (this.rangeCompareNode(range,ar[i]) > 0)) {
+                other_nodes.push(ar[i]);
+                continue;
+            }
+            // outer..
+            if (!this.rangeIntersectsNode(range,ar[i])|| (this.rangeCompareNode(range,ar[i]) == 0))  {
+                continue;
+            }
+            
+            
+            has_other_nodes = true;
+        }
+        if (!nodes.length && other_nodes.length) {
+            nodes= other_nodes;
         }
-        for (var i = node.childNodes.length-1; i > -1 ; i--) {
-           fn.call(this, node.childNodes[i])
+        if (has_other_nodes || !nodes.length || (nodes.length > 1)) {
+            return false;
         }
+        
+        return nodes[0];
     },
     
     
-    /**
-     * cleanTableWidths.
-     *
-     * Quite often pasting from word etc.. results in tables with column and widths.
-     * This does not work well on fluid HTML layouts - like emails. - so this code should hunt an destroy them..
-     *
-     */
-    cleanTableWidths : function(node)
+    createRange: function(sel)
     {
-         
-         
-        if (!node) {
-            this.cleanTableWidths(this.doc.body);
-            return;
+        // this has strange effects when using with 
+        // top toolbar - not sure if it's a great idea.
+        //this.editor.contentWindow.focus();
+        if (typeof sel != "undefined") {
+            try {
+                return sel.getRangeAt ? sel.getRangeAt(0) : sel.createRange();
+            } catch(e) {
+                return this.doc.createRange();
+            }
+        } else {
+            return this.doc.createRange();
         }
+    },
+    getParentElement: function()
+    {
         
-        // ignore list...
-        if (node.nodeName == "#text" || node.nodeName == "#comment") {
-            return; 
-        }
-        Roo.log(node.tagName);
-        if (!node.tagName.toLowerCase().match(/^(table|td|tr)$/)) {
-            this.iterateChildren(node, this.cleanTableWidths);
-            return;
-        }
-        if (node.hasAttribute('width')) {
-            node.removeAttribute('width');
-        }
+        this.assignDocWin();
+        var sel = Roo.isIE ? this.doc.selection : this.win.getSelection();
         
+        var range = this.createRange(sel);
          
-        if (node.hasAttribute("style")) {
-            // pretty basic...
-            
-            var styles = node.getAttribute("style").split(";");
-            var nstyle = [];
-            Roo.each(styles, function(s) {
-                if (!s.match(/:/)) {
-                    return;
-                }
-                var kv = s.split(":");
-                if (kv[0].match(/^\s*(width|min-width)\s*$/)) {
-                    return;
-                }
-                // what ever is left... we allow.
-                nstyle.push(s);
-            });
-            node.setAttribute("style", nstyle.length ? nstyle.join(';') : '');
-            if (!nstyle.length) {
-                node.removeAttribute('style');
+        try {
+            var p = range.commonAncestorContainer;
+            while (p.nodeType == 3) { // text node
+                p = p.parentNode;
             }
+            return p;
+        } catch (e) {
+            return null;
         }
-        
-        this.iterateChildren(node, this.cleanTableWidths);
-        
-        
+    
     },
+    /***
+     *
+     * Range intersection.. the hard stuff...
+     *  '-1' = before
+     *  '0' = hits..
+     *  '1' = after.
+     *         [ -- selected range --- ]
+     *   [fail]                        [fail]
+     *
+     *    basically..
+     *      if end is before start or  hits it. fail.
+     *      if start is after end or hits it fail.
+     *
+     *   if either hits (but other is outside. - then it's not 
+     *   
+     *    
+     **/
+    
+    
+    // @see http://www.thismuchiknow.co.uk/?p=64.
+    rangeIntersectsNode : function(range, node)
+    {
+        var nodeRange = node.ownerDocument.createRange();
+        try {
+            nodeRange.selectNode(node);
+        } catch (e) {
+            nodeRange.selectNodeContents(node);
+        }
     
+        var rangeStartRange = range.cloneRange();
+        rangeStartRange.collapse(true);
     
+        var rangeEndRange = range.cloneRange();
+        rangeEndRange.collapse(false);
     
+        var nodeStartRange = nodeRange.cloneRange();
+        nodeStartRange.collapse(true);
     
-    domToHTML : function(currentElement, depth, nopadtext) {
-        
-        depth = depth || 0;
-        nopadtext = nopadtext || false;
+        var nodeEndRange = nodeRange.cloneRange();
+        nodeEndRange.collapse(false);
     
-        if (!currentElement) {
-            return this.domToHTML(this.doc.body);
+        return rangeStartRange.compareBoundaryPoints(
+                 Range.START_TO_START, nodeEndRange) == -1 &&
+               rangeEndRange.compareBoundaryPoints(
+                 Range.START_TO_START, nodeStartRange) == 1;
+        
+         
+    },
+    rangeCompareNode : function(range, node)
+    {
+        var nodeRange = node.ownerDocument.createRange();
+        try {
+            nodeRange.selectNode(node);
+        } catch (e) {
+            nodeRange.selectNodeContents(node);
         }
         
-        //Roo.log(currentElement);
-        var j;
-        var allText = false;
-        var nodeName = currentElement.nodeName;
-        var tagName = Roo.util.Format.htmlEncode(currentElement.tagName);
         
-        if  (nodeName == '#text') {
-            
-            return nopadtext ? currentElement.nodeValue : currentElement.nodeValue.trim();
-        }
+        range.collapse(true);
+    
+        nodeRange.collapse(true);
+     
+        var ss = range.compareBoundaryPoints( Range.START_TO_START, nodeRange);
+        var ee = range.compareBoundaryPoints(  Range.END_TO_END, nodeRange);
+         
+        //Roo.log(node.tagName + ': ss='+ss +', ee='+ee)
         
+        var nodeIsBefore   =  ss == 1;
+        var nodeIsAfter    = ee == -1;
         
-        var ret = '';
-        if (nodeName != 'BODY') {
-             
-            var i = 0;
-            // Prints the node tagName, such as <A>, <IMG>, etc
-            if (tagName) {
-                var attr = [];
-                for(i = 0; i < currentElement.attributes.length;i++) {
-                    // quoting?
-                    var aname = currentElement.attributes.item(i).name;
-                    if (!currentElement.attributes.item(i).value.length) {
-                        continue;
-                    }
-                    attr.push(aname + '="' + Roo.util.Format.htmlEncode(currentElement.attributes.item(i).value) + '"' );
-                }
-                
-                ret = "<"+currentElement.tagName+ ( attr.length ? (' ' + attr.join(' ') ) : '') + ">";
-            } 
-            else {
-                
-                // eack
-            }
-        } else {
-            tagName = false;
-        }
-        if (['IMG', 'BR', 'HR', 'INPUT'].indexOf(tagName) > -1) {
-            return ret;
+        if (nodeIsBefore && nodeIsAfter) {
+            return 0; // outer
         }
-        if (['PRE', 'TEXTAREA', 'TD', 'A', 'SPAN'].indexOf(tagName) > -1) { // or code?
-            nopadtext = true;
+        if (!nodeIsBefore && nodeIsAfter) {
+            return 1; //right trailed.
         }
         
+        if (nodeIsBefore && !nodeIsAfter) {
+            return 2;  // left trailed.
+        }
+        // fully contined.
+        return 3;
+    },
+    cleanWordChars : function(input) {// change the chars to hex code
         
-        // Traverse the tree
-        i = 0;
-        var currentElementChild = currentElement.childNodes.item(i);
-        var allText = true;
-        var innerHTML  = '';
-        lastnode = '';
-        while (currentElementChild) {
-            // Formatting code (indent the tree so it looks nice on the screen)
-            var nopad = nopadtext;
-            if (lastnode == 'SPAN') {
-                nopad  = true;
-            }
-            // text
-            if  (currentElementChild.nodeName == '#text') {
-                var toadd = Roo.util.Format.htmlEncode(currentElementChild.nodeValue);
-                toadd = nopadtext ? toadd : toadd.trim();
-                if (!nopad && toadd.length > 80) {
-                    innerHTML  += "\n" + (new Array( depth + 1 )).join( "  "  );
-                }
-                innerHTML  += toadd;
-                
-                i++;
-                currentElementChild = currentElement.childNodes.item(i);
-                lastNode = '';
-                continue;
-            }
-            allText = false;
+       var swapCodes  = [ 
+            [    8211, "&#8211;" ], 
+            [    8212, "&#8212;" ], 
+            [    8216,  "'" ],  
+            [    8217, "'" ],  
+            [    8220, '"' ],  
+            [    8221, '"' ],  
+            [    8226, "*" ],  
+            [    8230, "..." ]
+        ]; 
+        var output = input;
+        Roo.each(swapCodes, function(sw) { 
+            var swapper = new RegExp("\\u" + sw[0].toString(16), "g"); // hex codes
             
-            innerHTML  += nopad ? '' : "\n" + (new Array( depth + 1 )).join( "  "  );
-                
-            // Recursively traverse the tree structure of the child node
-            innerHTML   += this.domToHTML(currentElementChild, depth+1, nopadtext);
-            lastnode = currentElementChild.nodeName;
-            i++;
-            currentElementChild=currentElement.childNodes.item(i);
-        }
+            output = output.replace(swapper, sw[1]);
+        });
         
-        ret += innerHTML;
+        return output;
+    },
+    
+     
+    
         
-        if (!allText) {
-                // The remaining code is mostly for formatting the tree
-            ret+= nopadtext ? '' : "\n" + (new Array( depth  )).join( "  "  );
-        }
+    
+    cleanUpChild : function (node)
+    {
         
+        new Roo.htmleditor.FilterComment({node : node});
+        new Roo.htmleditor.FilterAttributes({
+                node : node,
+                attrib_black : this.ablack,
+                attrib_clean : this.aclean,
+                style_white : this.cwhite,
+                style_black : this.cblack
+        });
+        new Roo.htmleditor.FilterBlack({ node : node, tag : this.black});
+        new Roo.htmleditor.FilterKeepChildren({node : node, tag : this.tag_remove} );
+         
         
-        if (tagName) {
-            ret+= "</"+tagName+">";
-        }
-        return ret;
+    },
+    
+    /**
+     * Clean up MS wordisms...
+     * @deprecated - use filter directly
+     */
+    cleanWord : function(node)
+    {
+        new Roo.htmleditor.FilterWord({ node : node ? node : this.doc.body });
+        
+    },
+   
+    
+    /**
+
+     * @deprecated - use filters
+     */
+    cleanTableWidths : function(node)
+    {
+        new Roo.htmleditor.FilterTableWidth({ node : node ? node : this.doc.body});
         
     },
+    
+     
         
     applyBlacklists : function()
     {
         var w = typeof(this.owner.white) != 'undefined' && this.owner.white ? this.owner.white  : [];
         var b = typeof(this.owner.black) != 'undefined' && this.owner.black ? this.owner.black :  [];
         
+        this.aclean = typeof(this.owner.aclean) != 'undefined' && this.owner.aclean ? this.owner.aclean :  Roo.HtmlEditorCore.aclean;
+        this.ablack = typeof(this.owner.ablack) != 'undefined' && this.owner.ablack ? this.owner.ablack :  Roo.HtmlEditorCore.ablack;
+        this.tag_remove = typeof(this.owner.tag_remove) != 'undefined' && this.owner.tag_remove ? this.owner.tag_remove :  Roo.HtmlEditorCore.tag_remove;
+        
         this.white = [];
         this.black = [];
         Roo.each(Roo.HtmlEditorCore.white, function(tag) {
@@ -27586,6 +30052,16 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         
     },
     
+    
+    updateLanguage : function()
+    {
+        if (!this.iframe || !this.iframe.contentDocument) {
+            return;
+        }
+        Roo.get(this.iframe.contentDocument.body).attr("lang", this.language);
+    },
+    
+    
     removeStylesheets : function()
     {
         var _this = this;
@@ -27650,36 +30126,40 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
 });
 
 Roo.HtmlEditorCore.white = [
-        'area', 'br', 'img', 'input', 'hr', 'wbr',
+        'AREA', 'BR', 'IMG', 'INPUT', 'HR', 'WBR',
         
-       'address', 'blockquote', 'center', 'dd',      'dir',       'div', 
-       'dl',      'dt',         'h1',     'h2',      'h3',        'h4', 
-       'h5',      'h6',         'hr',     'isindex', 'listing',   'marquee', 
-       'menu',    'multicol',   'ol',     'p',       'plaintext', 'pre', 
-       'table',   'ul',         'xmp', 
+       'ADDRESS', 'BLOCKQUOTE', 'CENTER', 'DD',      'DIR',       'DIV', 
+       'DL',      'DT',         'H1',     'H2',      'H3',        'H4', 
+       'H5',      'H6',         'HR',     'ISINDEX', 'LISTING',   'MARQUEE', 
+       'MENU',    'MULTICOL',   'OL',     'P',       'PLAINTEXT', 'PRE', 
+       'TABLE',   'UL',         'XMP', 
        
-       'caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', 
-      'thead',   'tr', 
+       'CAPTION', 'COL', 'COLGROUP', 'TBODY', 'TD', 'TFOOT', 'TH', 
+      'THEAD',   'TR', 
      
-      'dir', 'menu', 'ol', 'ul', 'dl',
+      'DIR', 'MENU', 'OL', 'UL', 'DL',
        
-      'embed',  'object'
+      'EMBED',  'OBJECT'
 ];
 
 
 Roo.HtmlEditorCore.black = [
     //    'embed',  'object', // enable - backend responsiblity to clean thiese
-        'applet', // 
-        'base',   'basefont', 'bgsound', 'blink',  'body', 
-        'frame',  'frameset', 'head',    'html',   'ilayer', 
-        'iframe', 'layer',  'link',     'meta',    'object',   
-        'script', 'style' ,'title',  'xml' // clean later..
+        'APPLET', // 
+        'BASE',   'BASEFONT', 'BGSOUND', 'BLINK',  'BODY', 
+        'FRAME',  'FRAMESET', 'HEAD',    'HTML',   'ILAYER', 
+        'IFRAME', 'LAYER',  'LINK',     'META',    'OBJECT',   
+        'SCRIPT', 'STYLE' ,'TITLE',  'XML',
+        //'FONT' // CLEAN LATER..
+        'COLGROUP', 'COL'   // messy tables.
+        
+        
 ];
-Roo.HtmlEditorCore.clean = [
-    'script', 'style', 'title', 'xml'
+Roo.HtmlEditorCore.clean = [ // ?? needed???
+     'SCRIPT', 'STYLE', 'TITLE', 'XML'
 ];
-Roo.HtmlEditorCore.remove = [
-    'font'
+Roo.HtmlEditorCore.tag_remove = [
+    'FONT', 'TBODY'  
 ];
 // attributes..
 
@@ -27710,16 +30190,7 @@ Roo.HtmlEditorCore.cblack= [
 ];
 
 
-Roo.HtmlEditorCore.swapCodes   =[ 
-    [    8211, "&#8211;" ], 
-    [    8212, "&#8212;" ], 
-    [    8216,  "'" ],  
-    [    8217, "'" ],  
-    [    8220, '"' ],  
-    [    8221, '"' ],  
-    [    8226, "*" ],  
-    [    8230, "..." ]
-]; 
+
 
     /*
  * - LGPL
@@ -29251,7 +31722,7 @@ Roo.extend(Roo.bootstrap.Graph, Roo.bootstrap.Component,  {
 });
 
  
-/*
+Roo.bootstrap.dash = {};/*
  * - LGPL
  *
  * numberBox
index 29f8231..15d5c60 100644 (file)
@@ -1,3 +1,5 @@
+// Roo/bootstrap/namespace.js
+Roo.bootstrap={};
 // Roo/bootstrap/version.js
 Roo.bootstrap.version=(function(){var A=3;Roo.each(document.styleSheets,function(s){if(s.href&&s.href.match(/css-bootstrap4/)){A=4;}});if(A>3){Roo.Element.prototype.visibilityMode=Roo.Element.DISPLAY;}return A;})();
 // Roo/bootstrap/menu/namespace.js
@@ -1105,75 +1107,203 @@ pt.innerHTML=this.meterLabel+'&nbsp;'+this.pwdStrengths[B];this.errorMsg='';retu
 }break;case this.kDigit:if(A>='0'&&A<='9'){return true;}break;case this.kPunctuation:if('!@#$%^&*()_+-=\'";:[{]}|.>,</?`~'.indexOf(A)>=0){return true;}break;default:return false;}},IsLongEnough:function(A,B){return !(A==null||isNaN(B)||A.length<B);},SpansEnoughCharacterSets:function(A,nb){if(!this.IsLongEnough(A,nb)){return false;
 }var B=new Array(new this.CharacterSetChecks(this.kCapitalLetter),new this.CharacterSetChecks(this.kSmallLetter),new this.CharacterSetChecks(this.kDigit),new this.CharacterSetChecks(this.kPunctuation));for(var C=0;C<A.length;++C){for(var D=0;D<B.length;++D){if(!B[D].fResult&&this.isctype(A.charAt(C),B[D].type)){B[D].fResult=true;
 break;}}}var E=0;for(var D=0;D<B.length;++D){if(B[D].fResult){++E;}}if(E<nb){return false;}return true;},ClientSideStrongPassword:function(A){return this.IsLongEnough(A,8)&&this.SpansEnoughCharacterSets(A,3);},ClientSideMediumPassword:function(A){return this.IsLongEnough(A,7)&&this.SpansEnoughCharacterSets(A,2);
-},ClientSideWeakPassword:function(A){return this.IsLongEnough(A,6)||!this.IsLongEnough(A,0);}})
+},ClientSideWeakPassword:function(A){return this.IsLongEnough(A,6)||!this.IsLongEnough(A,0);}});
+// Roo/htmleditor/namespace.js
+Roo.htmleditor={};
+// Roo/htmleditor/Filter.js
+Roo.htmleditor.Filter=function(A){Roo.apply(this.cfg);};Roo.htmleditor.Filter.prototype={node:false,tag:false,replaceComment:false,replaceTag:false,walk:function(A){Roo.each(Array.from(A.childNodes),function(e){switch(true){case e.nodeType==8&&this.replaceComment!==false:this.replaceComment(e);
+return;case e.nodeType!=1:return;case this.tag===true:case typeof(this.tag)=='object'&&this.tag.indexOf(e.tagName)>-1:case typeof(this.tag)=='string'&&this.tag==e.tagName:if(this.replaceTag&&false===this.replaceTag(e)){return;}if(e.hasChildNodes()){this.walk(e);
+}return;default:if(e.hasChildNodes()){this.walk(e);}}},this);}};
+// Roo/htmleditor/FilterAttributes.js
+Roo.htmleditor.FilterAttributes=function(A){Roo.apply(this,A);this.attrib_black=this.attrib_black||[];this.attrib_white=this.attrib_white||[];this.attrib_clean=this.attrib_clean||[];this.style_white=this.style_white||[];this.style_black=this.style_black||[];
+this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterAttributes,Roo.htmleditor.Filter,{tag:true,attrib_black:false,attrib_clean:false,attrib_white:false,style_white:false,style_black:false,replaceTag:function(A){if(!A.attributes||!A.attributes.length){return true;
+}for(var i=A.attributes.length-1;i>-1;i--){var a=A.attributes[i];if(this.attrib_white.length&&this.attrib_white.indexOf(a.name.toLowerCase())<0){A.removeAttribute(a.name);continue;}if(a.name.toLowerCase().substr(0,2)=='on'){A.removeAttribute(a.name);continue;
+}if(this.attrib_black.indexOf(a.name.toLowerCase())>-1){A.removeAttribute(a.name);continue;}if(this.attrib_clean.indexOf(a.name.toLowerCase())>-1){this.cleanAttr(A,a.name,a.value);continue;}if(a.name=='style'){this.cleanStyle(A,a.name,a.value);continue;}if(a.name=='class'){if(a.value.match(/^Mso/)){A.removeAttribute('class');
+}if(a.value.match(/^body$/)){A.removeAttribute('class');}continue;}}return true;},cleanAttr:function(A,n,v){if(v.match(/^\./)||v.match(/^\//)){return;}if(v.match(/^(http|https):\/\//)||v.match(/^mailto:/)||v.match(/^ftp:/)||v.match(/^data:/)){return;}if(v.match(/^#/)){return;
+}if(v.match(/^\{/)){return;}A.removeAttribute(n);},cleanStyle:function(A,n,v){if(v.match(/expression/)){A.removeAttribute(n);return;}var B=v.split(/;/);var C=[];Roo.each(B,function(p){p=p.replace(/^\s+/g,'').replace(/\s+$/g,'');if(!p.length){return true;}
+var l=p.split(':').shift().replace(/\s+/g,'');l=l.replace(/^\s+/g,'').replace(/\s+$/g,'');if(this.style_black.length&&(this.style_black.indexOf(l)>-1||this.style_black.indexOf(l.toLowerCase())>-1)){return true;}if(this.style_white.length&&style_white.indexOf(l)<0&&style_white.indexOf(l.toLowerCase())<0){return true;
+}C.push(p);return true;},this);if(C.length){A.setAttribute(n,C.join(';'));}else{A.removeAttribute(n);}}});
+// Roo/htmleditor/FilterBlack.js
+Roo.htmleditor.FilterBlack=function(A){Roo.apply(this,A);this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterBlack,Roo.htmleditor.Filter,{tag:true,replaceTag:function(n){n.parentNode.removeChild(n);}});
+// Roo/htmleditor/FilterComment.js
+Roo.htmleditor.FilterComment=function(A){this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterComment,Roo.htmleditor.Filter,{replaceComment:function(n){n.parentNode.removeChild(n);}});
+// Roo/htmleditor/FilterKeepChildren.js
+Roo.htmleditor.FilterKeepChildren=function(A){Roo.apply(this,A);if(this.tag===false){return;}this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterKeepChildren,Roo.htmleditor.FilterBlack,{replaceTag:function(A){var ar=Array.from(A.childNodes);for(var i=0;i<ar.length;
+i++){if(ar[i].nodeType==1){if((typeof(this.tag)=='object'&&this.tag.indexOf(ar[i].tagName)>-1)||(typeof(this.tag)=='string'&&this.tag==ar[i].tagName)){this.replaceTag(ar[i]);continue;}}}ar=Array.from(A.childNodes);for(var i=0;i<ar.length;i++){A.removeChild(ar[i]);
+A.parentNode.insertBefore(ar[i],A);if(this.tag!==false){this.walk(ar[i]);}}A.parentNode.removeChild(A);return false;}});
+// Roo/htmleditor/FilterParagraph.js
+Roo.htmleditor.FilterParagraph=function(A){this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterParagraph,Roo.htmleditor.Filter,{tag:'P',replaceTag:function(A){if(A.childNodes.length==1&&A.childNodes[0].nodeType==3&&A.childNodes[0].textContent.trim().length<1){A.parentNode.replaceChild(A.ownerDocument.createElement('BR'),A);
+return false;}var ar=Array.from(A.childNodes);for(var i=0;i<ar.length;i++){A.removeChild(ar[i]);A.parentNode.insertBefore(ar[i],A);}A.parentNode.insertBefore(A.ownerDocument.createElement('BR'),A);A.parentNode.insertBefore(A.ownerDocument.createElement('BR'),A);
+A.parentNode.removeChild(A);return false;}});
+// Roo/htmleditor/FilterSpan.js
+Roo.htmleditor.FilterSpan=function(A){this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterSpan,Roo.htmleditor.FilterKeepChildren,{tag:'SPAN',replaceTag:function(A){if(A.attributes&&A.attributes.length>0){return true;}Roo.htmleditor.FilterKeepChildren.prototype.replaceTag.call(this,A);
+return false;}});
+// Roo/htmleditor/FilterTableWidth.js
+Roo.htmleditor.FilterTableWidth=function(A){this.tag=['TABLE','TD','TR','TH','THEAD','TBODY'];this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterTableWidth,Roo.htmleditor.Filter,{replaceTag:function(A){if(A.hasAttribute('width')){A.removeAttribute('width');
+}if(A.hasAttribute("style")){var B=A.getAttribute("style").split(";");var C=[];Roo.each(B,function(s){if(!s.match(/:/)){return;}var kv=s.split(":");if(kv[0].match(/^\s*(width|min-width)\s*$/)){return;}C.push(s);});A.setAttribute("style",C.length?C.join(';'):'');
+if(!C.length){A.removeAttribute('style');}}return true;}});
+// Roo/htmleditor/FilterWord.js
+Roo.htmleditor.FilterWord=function(A){this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterWord,Roo.htmleditor.Filter,{tag:true,replaceTag:function(A){if(A.nodeName=='SPAN'&&!A.hasAttributes()&&A.childNodes.length==1&&A.firstChild.nodeName=="#text"){var B=A.firstChild;
+A.removeChild(B);if(A.getAttribute('lang')!='zh-CN'){A.parentNode.insertBefore(A.ownerDocument.createTextNode(" "),A);}A.parentNode.insertBefore(B,A);if(A.getAttribute('lang')!='zh-CN'){A.parentNode.insertBefore(A.ownerDocument.createTextNode(" "),A);}A.parentNode.removeChild(A);
+return false;}if(A.tagName.toLowerCase().match(/^(style|script|applet|embed|noframes|noscript)$/)){A.parentNode.removeChild(A);return false;}if(A.tagName.toLowerCase().match(/^(meta|link|\\?xml:|st1:|o:|v:|font)/)){while(A.childNodes.length){var cn=A.childNodes[0];
+A.removeChild(cn);A.parentNode.insertBefore(cn,A);this.replaceTag(cn);}A.parentNode.removeChild(A);return false;}if(A.className.length){var cn=A.className.split(/\W+/);var C=[];Roo.each(cn,function(F){if(F.match(/Mso[a-zA-Z]+/)){return;}C.push(F);});A.className=C.length?C.join(' '):'';
+if(!C.length){A.removeAttribute("class");}}if(A.hasAttribute("lang")){A.removeAttribute("lang");}if(A.hasAttribute("style")){var D=A.getAttribute("style").split(";");var E=[];Roo.each(D,function(s){if(!s.match(/:/)){return;}var kv=s.split(":");if(kv[0].match(/^(mso-|line|font|background|margin|padding|color)/)){return;
+}E.push(s);});A.setAttribute("style",E.length?E.join(';'):'');if(!E.length){A.removeAttribute('style');}}return true;}});
+// Roo/htmleditor/FilterStyleToTag.js
+Roo.htmleditor.FilterStyleToTag=function(A){this.tags={B:['fontWeight','bold'],I:['fontStyle','italic'],SUP:['verticalAlign','super'],SUB:['verticalAlign','sub']};Roo.apply(this,A);this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterStyleToTag,Roo.htmleditor.Filter,{tag:true,tags:false,replaceTag:function(A){if(A.getAttribute("style")===null){return true;
+}var B=[];for(var k in this.tags){if(A.style[this.tags[k][0]]==this.tags[k][1]){B.push(k);A.style.removeProperty(this.tags[k][0]);}}if(!B.length){return true;}var cn=Array.from(A.childNodes);var nn=A;Roo.each(B,function(t){var nc=A.ownerDocument.createElement(t);
+nn.appendChild(nc);nn=nc;});for(var i=0;i<cn.length;cn++){A.removeChild(cn[i]);nn.appendChild(cn[i]);}return true}})
+// Roo/htmleditor/FilterLongBr.js
+Roo.htmleditor.FilterLongBr=function(A){this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterLongBr,Roo.htmleditor.Filter,{tag:'BR',replaceTag:function(A){var ps=A.nextSibling;while(ps&&ps.nodeType==3&&ps.nodeValue.trim().length<1){ps=ps.nextSibling;}if(!ps&&['TD','TH','LI','H1','H2','H3','H4','H5','H6'].indexOf(A.parentNode.tagName)>-1){A.parentNode.removeChild(A);
+return false;}if(!ps||ps.nodeType!=1){return false;}if(!ps||ps.tagName!='BR'){return false;}if(!A.previousSibling){return false;}var ps=A.previousSibling;while(ps&&ps.nodeType==3&&ps.nodeValue.trim().length<1){ps=ps.previousSibling;}if(!ps||ps.nodeType!=1){return false;
+}if(!ps||['BR','H1','H2','H3','H4','H5','H6'].indexOf(ps.tagName)<0){return false;}A.parentNode.removeChild(A);return false;}});
+// Roo/htmleditor/FilterBlock.js
+Roo.htmleditor.FilterBlock=function(A){Roo.apply(this,A);var qa=A.node.querySelectorAll;this.removeAttributes('data-block');this.removeAttributes('contenteditable');this.removeAttributes('id');};Roo.apply(Roo.htmleditor.FilterBlock.prototype,{node:true,removeAttributes:function(A){var ar=this.node.querySelectorAll('*['+A+']');
+for(var i=0;i<ar.length;i++){ar[i].removeAttribute(A);}}});
+// Roo/htmleditor/KeyEnter.js
+Roo.htmleditor.KeyEnter=function(A){Roo.apply(this,A);Roo.get(this.core.doc.body).on('keypress',this.keypress,this);};Roo.htmleditor.KeyEnter.prototype={core:false,keypress:function(e){if(e.charCode!=13&&e.charCode!=10){Roo.log([e.charCode,e]);return true;
+}e.preventDefault();var A=this.core.doc;var B=this.core.getSelection();var C=B.getRangeAt(0);var n=C.commonAncestorContainer;var pc=C.closest(['ol','ul']);var D=C.closest('li');if(!pc||e.ctrlKey){B.insertNode('br','after');this.core.undoManager.addEvent();
+this.core.fireEditorEvent(e);return false;}if(D.innerText.trim()==''&&D.previousSibling&&D.previousSibling.nodeName=='LI'&&D.previousSibling.innerText.trim()==''){D.parentNode.removeChild(D.previousSibling);B.cursorAfter(pc);this.core.undoManager.addEvent();
+this.core.fireEditorEvent(e);return false;}var li=A.createElement('LI');li.innerHTML='&nbsp;';if(!D||!D.firstSibling){pc.appendChild(li);}else{D.parentNode.insertBefore(li,D.firstSibling);}B.cursorText(li.firstChild);this.core.undoManager.addEvent();this.core.fireEditorEvent(e);
+return false;}};
+// Roo/htmleditor/Block.js
+Roo.htmleditor.Block=function(A){};Roo.htmleditor.Block.factory=function(A){var cc=Roo.htmleditor.Block.cache;var id=Roo.get(A).id;if(typeof(cc[id])!='undefined'&&(!cc[id].node||cc[id].node.closest('body'))){Roo.htmleditor.Block.cache[id].readElement(A);return Roo.htmleditor.Block.cache[id];
+}var db=A.getAttribute('data-block');if(!db){db=A.nodeName.toLowerCase().toUpperCaseFirst();}var B=Roo.htmleditor['Block'+db];if(typeof(B)=='undefined'){Roo.log("OOps missing block : "+'Block'+db);return false;}Roo.htmleditor.Block.cache[id]=new B({node:A}
+);return Roo.htmleditor.Block.cache[id];};Roo.htmleditor.Block.initAll=function(A,B){if(typeof(B)=='undefined'){var ia=Roo.htmleditor.Block.initAll;ia(A,'table');ia(A,'td');ia(A,'figure');return;}Roo.each(Roo.get(A).query(B),function(e){Roo.htmleditor.Block.factory(e);
+},this);};Roo.htmleditor.Block.cache={};Roo.htmleditor.Block.prototype={node:false,friendly_name:'Based Block',deleteTitle:false,context:false,updateElement:function(A){Roo.DomHelper.update(A===undefined?this.node:A,this.toObject());},toHTML:function(){return Roo.DomHelper.markup(this.toObject());
+},getVal:function(A,B,C,D){var n=A;if(B!==true&&n.tagName!=B.toUpperCase()){n=A.getElementsByTagName(B).item(0);}if(!n){return '';}if(C=='html'){return n.innerHTML;}if(C=='style'){return n.style[D];}return n.hasAttribute(C)?n.getAttribute(C):'';},toObject:function(){return {}
+;},readElement:function(A){}};
+// Roo/htmleditor/BlockFigure.js
+Roo.htmleditor.BlockFigure=function(A){if(A.node){this.readElement(A.node);this.updateElement(A.node);}Roo.apply(this,A);};Roo.extend(Roo.htmleditor.BlockFigure,Roo.htmleditor.Block,{image_src:'',align:'center',caption:'',caption_display:'block',width:'100%',cls:'',href:'',video_url:'',text_align:'left',friendly_name:'Image with caption',deleteTitle:"Delete Image and Caption",contextMenu:function(A){var B=function(){return Roo.htmleditor.Block.factory(A.tb.selectedNode);
+};var C=typeof(Roo.bootstrap)=='undefined'?Roo:Roo.bootstrap;var D=A.editorcore.syncValue;var E={};return [{xtype:'TextItem',text:"Source: ",xns:C.Toolbar},{xtype:'Button',text:'Change Image URL',listeners:{click:function(F,G){var b=B();Roo.MessageBox.show({title:"Image Source URL",msg:"Enter the url for the image",buttons:Roo.MessageBox.OKCANCEL,fn:function(H,I){if(H!='ok'){return;
+}b.image_src=I;b.updateElement();D();A.editorcore.onEditorEvent();},minWidth:250,prompt:true,modal:true,value:b.image_src});}},xns:C.Toolbar},{xtype:'Button',text:'Change Link URL',listeners:{click:function(F,G){var b=B();Roo.MessageBox.show({title:"Link URL",msg:"Enter the url for the link - leave blank to have no link",buttons:Roo.MessageBox.OKCANCEL,fn:function(H,I){if(H!='ok'){return;
+}b.href=I;b.updateElement();D();A.editorcore.onEditorEvent();},minWidth:250,prompt:true,modal:true,value:b.href});}},xns:C.Toolbar},{xtype:'Button',text:'Show Video URL',listeners:{click:function(F,G){Roo.MessageBox.alert("Video URL",B().video_url==''?'This image is not linked ot a video':'The image is linked to: <a target="_new" href="'+B().video_url+'">'+B().video_url+'</a>');
+}},xns:C.Toolbar},{xtype:'TextItem',text:"Width: ",xns:C.Toolbar},{xtype:'ComboBox',allowBlank:false,displayField:'val',editable:true,listWidth:100,triggerAction:'all',typeAhead:true,valueField:'val',width:70,name:'width',listeners:{select:function(F,r,G){A.editorcore.selectNode(A.tb.selectedNode);
+var b=B();b.width=r.get('val');b.updateElement();D();A.editorcore.onEditorEvent();}},xns:C.form,store:{xtype:'SimpleStore',data:[['auto'],['50%'],['100%']],fields:['val'],xns:Roo.data}},{xtype:'TextItem',text:"Align: ",xns:C.Toolbar},{xtype:'ComboBox',allowBlank:false,displayField:'val',editable:true,listWidth:100,triggerAction:'all',typeAhead:true,valueField:'val',width:70,name:'align',listeners:{select:function(F,r,G){A.editorcore.selectNode(A.tb.selectedNode);
+var b=B();b.align=r.get('val');b.updateElement();D();A.editorcore.onEditorEvent();}},xns:C.form,store:{xtype:'SimpleStore',data:[['left'],['right'],['center']],fields:['val'],xns:Roo.data}},{xtype:'Button',text:'Hide Caption',name:'caption_display',pressed:false,enableToggle:true,setValue:function(v){this.toggle(v=='block'?false:true);
+},listeners:{toggle:function(F,G){var b=B();b.caption_display=b.caption_display=='block'?'none':'block';this.setText(b.caption_display=='block'?"Hide Caption":"Show Caption");b.updateElement();D();A.editorcore.selectNode(A.tb.selectedNode);A.editorcore.onEditorEvent();
+}},xns:C.Toolbar}];},toObject:function(){var d=document.createElement('div');d.innerHTML=this.caption;var m=this.width=='50%'&&this.align=='center'?'0 auto':0;var A={tag:'img',contenteditable:'false',src:this.image_src,alt:d.innerText.replace(/\n/g," ").replace(/\s+/g,' ').trim(),style:{width:'auto','max-width':'100%',margin:'0px'}
+};if(this.href.length>0){A={tag:'a',href:this.href,contenteditable:'true',cn:[A]};}if(this.video_url.length>0){A={tag:'div',cls:this.cls,frameborder:0,allowfullscreen:true,width:420,height:315,src:this.video_url,cn:[A]};}var B=this.caption_display=='hidden'?this.caption:(this.caption.length?this.caption:"Caption");
+return {tag:'figure','data-block':'Figure',contenteditable:'false',style:{display:'block',float:this.align,'max-width':this.width,width:'auto',margin:m,padding:'10px'},align:this.align,cn:[A,{tag:'figcaption',style:{'text-align':'left','margin-top':'16px','font-size':'16px','line-height':'24px',display:this.caption_display}
+,cls:this.cls.length>0?(this.cls+'-thumbnail'):'',cn:[{tag:'i',contenteditable:true,html:B}]}]};},readElement:function(A){this.video_url=this.getVal(A,'div','src');this.cls=this.getVal(A,'div','class');this.href=this.getVal(A,'a','href');this.image_src=this.getVal(A,'img','src');
+this.align=this.getVal(A,'figure','align');this.caption=this.getVal(A,'figcaption','html');if(this.caption.trim().match(/^<i[^>]*>/i)){this.caption=this.caption.trim().replace(/^<i[^>]*>/i,'').replace(/^<\/i>$/i,'');}this.width=this.getVal(A,'figure','style','max-width');
+},removeNode:function(){return this.node;}})
+// Roo/htmleditor/BlockTable.js
+Roo.htmleditor.BlockTable=function(A){if(A.node){this.readElement(A.node);this.updateElement(A.node);}Roo.apply(this,A);if(!A.node){this.rows=[];for(var r=0;r<this.no_row;r++){this.rows[r]=[];for(var c=0;c<this.no_col;c++){this.rows[r][c]=this.emptyCell();
+}}}};Roo.extend(Roo.htmleditor.BlockTable,Roo.htmleditor.Block,{rows:false,no_col:1,no_row:1,width:'100%',friendly_name:'Table',deleteTitle:'Delete Table',contextMenu:function(A){var B=function(){return Roo.htmleditor.Block.factory(A.tb.selectedNode);};var C=typeof(Roo.bootstrap)=='undefined'?Roo:Roo.bootstrap;
+var D=A.editorcore.syncValue;var E={};return [{xtype:'TextItem',text:"Width: ",xns:C.Toolbar},{xtype:'ComboBox',allowBlank:false,displayField:'val',editable:true,listWidth:100,triggerAction:'all',typeAhead:true,valueField:'val',width:100,name:'width',listeners:{select:function(F,r,G){A.editorcore.selectNode(A.tb.selectedNode);
+var b=B();b.width=r.get('val');b.updateElement();D();A.editorcore.onEditorEvent();}},xns:C.form,store:{xtype:'SimpleStore',data:[['100%'],['auto']],fields:['val'],xns:Roo.data}},{xtype:'TextItem',text:"Columns: ",xns:C.Toolbar},{xtype:'Button',text:'-',listeners:{click:function(F,e){A.editorcore.selectNode(A.tb.selectedNode);
+B().removeColumn();D();A.editorcore.onEditorEvent();}},xns:C.Toolbar},{xtype:'Button',text:'+',listeners:{click:function(F,e){A.editorcore.selectNode(A.tb.selectedNode);B().addColumn();D();A.editorcore.onEditorEvent();}},xns:C.Toolbar},{xtype:'TextItem',text:"Rows: ",xns:C.Toolbar}
+,{xtype:'Button',text:'-',listeners:{click:function(F,e){A.editorcore.selectNode(A.tb.selectedNode);B().removeRow();D();A.editorcore.onEditorEvent();}},xns:C.Toolbar},{xtype:'Button',text:'+',listeners:{click:function(F,e){B().addRow();D();A.editorcore.onEditorEvent();
+}},xns:C.Toolbar},{xtype:'Button',text:'Reset Column Widths',listeners:{click:function(F,e){B().resetWidths();D();A.editorcore.onEditorEvent();}},xns:C.Toolbar}];},toObject:function(){var A={tag:'table',contenteditable:'false','data-block':'Table',style:{width:this.width,border:'solid 1px #000','border-collapse':'collapse'}
+,cn:[{tag:'tbody',cn:[]}]};var B=0;Roo.each(this.rows,function(C){var tr={tag:'tr',style:{margin:'6px',border:'solid 1px #000',textAlign:'left'},cn:[]};A.cn[0].cn.push(tr);var nc=0;Roo.each(C,function(D){var td={tag:'td',contenteditable:'true','data-block':'Td',html:D.html,style:D.style}
+;if(D.colspan>1){td.colspan=D.colspan;nc+=D.colspan;}else{nc++;}if(D.rowspan>1){td.rowspan=D.rowspan;}tr.cn.push(td);},this);B=Math.max(nc,B);},this);B++;return A;},readElement:function(A){A=A?A:this.node;this.width=this.getVal(A,true,'style','width')||'100%';
+this.rows=[];this.no_row=0;var B=Array.from(A.rows);B.forEach(function(tr){var C=[];this.rows.push(C);this.no_row++;var D=0;Array.from(tr.cells).forEach(function(td){var E={colspan:td.hasAttribute('colspan')?td.getAttribute('colspan')*1:1,rowspan:td.hasAttribute('rowspan')?td.getAttribute('rowspan')*1:1,style:td.hasAttribute('style')?td.getAttribute('style'):'',html:td.innerHTML}
+;D+=E.colspan;C.push(E);},this);this.no_col=Math.max(this.no_col,D);},this);},normalizeRows:function(){var A=[];var B=-1;this.rows.forEach(function(C){B++;A[B]=[];C=this.normalizeRow(C);var D=0;C.forEach(function(c){while(typeof(A[B][D])!='undefined'){D++;
+}if(typeof(A[B])=='undefined'){A[B]=[];}A[B][D]=c;c.row=B;c.col=D;if(c.rowspan<2){return;}for(var i=1;i<c.rowspan;i++){if(typeof(A[B+i])=='undefined'){A[B+i]=[];}A[B+i][D]=c;}});},this);return A;},normalizeRow:function(A){var B=[];A.forEach(function(c){if(c.colspan<2){B.push(c);
+return;}for(var i=0;i<c.colspan;i++){B.push(c);}});return B;},deleteColumn:function(A){if(!A||A.type!='col'){return;}if(this.no_col<2){return;}this.rows.forEach(function(B){var C=this.normalizeRow(B);var D=C[A.col];if(D.colspan>1){D.colspan--;}else{B.remove(D);
+}},this);this.no_col--;},removeColumn:function(){this.deleteColumn({type:'col',col:this.no_col-1});this.updateElement();},addColumn:function(){this.rows.forEach(function(A){A.push(this.emptyCell());},this);this.updateElement();},deleteRow:function(A){if(!A||A.type!='row'){return;
+}if(this.no_row<2){return;}var B=this.normalizeRows();B[A.row].forEach(function(D){if(D.rowspan>1){D.rowspan--;}else{D.remove=1;}},this);var C=[];this.rows.forEach(function(D){newrow=[];D.forEach(function(c){if(typeof(c.remove)=='undefined'){newrow.push(c);
+}});if(newrow.length>0){C.push(D);}});this.rows=C;this.no_row--;this.updateElement();},removeRow:function(){this.deleteRow({type:'row',row:this.no_row-1});},addRow:function(){var A=[];for(var i=0;i<this.no_col;i++){A.push(this.emptyCell());}this.rows.push(A);
+this.updateElement();},emptyCell:function(){return (new Roo.htmleditor.BlockTd({})).toObject();},removeNode:function(){return this.node;},resetWidths:function(){Array.from(this.node.getElementsByTagName('td')).forEach(function(n){var nn=Roo.htmleditor.Block.factory(n);
+nn.width='';nn.updateElement(n);});}})
+// Roo/htmleditor/BlockTd.js
+Roo.htmleditor.BlockTd=function(A){if(A.node){this.readElement(A.node);this.updateElement(A.node);}Roo.apply(this,A);};Roo.extend(Roo.htmleditor.BlockTd,Roo.htmleditor.Block,{node:false,width:'',textAlign:'left',valign:'top',colspan:1,rowspan:1,friendly_name:'Table Cell',deleteTitle:false,contextMenu:function(A){var B=function(){return Roo.htmleditor.Block.factory(A.tb.selectedNode);
+};var C=function(){return Roo.htmleditor.Block.factory(A.tb.selectedNode.closest('table'));};var lr=false;var D=function(){lr=A.editorcore.getSelection().getRangeAt(0);};var restoreSel=function(){if(lr){(function(){A.editorcore.focus();var cr=A.editorcore.getSelection();
+cr.removeAllRanges();cr.addRange(lr);A.editorcore.onEditorEvent();}).defer(10,this);}};var rooui=typeof(Roo.bootstrap)=='undefined'?Roo:Roo.bootstrap;var E=A.editorcore.syncValue;var F={};return [{xtype:'Button',text:'Edit Table',listeners:{click:function(){var t=A.tb.selectedNode.closest('table');
+A.editorcore.selectNode(t);A.editorcore.onEditorEvent();}}},{xtype:'TextItem',text:"Column Width: ",xns:rooui.Toolbar},{xtype:'Button',text:'-',listeners:{click:function(G,e){A.editorcore.selectNode(A.tb.selectedNode);B().shrinkColumn();E();A.editorcore.onEditorEvent();
+}},xns:rooui.Toolbar},{xtype:'Button',text:'+',listeners:{click:function(G,e){A.editorcore.selectNode(A.tb.selectedNode);B().growColumn();E();A.editorcore.onEditorEvent();}},xns:rooui.Toolbar},{xtype:'TextItem',text:"Vertical Align: ",xns:rooui.Toolbar},{xtype:'ComboBox',allowBlank:false,displayField:'val',editable:true,listWidth:100,triggerAction:'all',typeAhead:true,valueField:'val',width:100,name:'valign',listeners:{select:function(G,r,H){A.editorcore.selectNode(A.tb.selectedNode);
+var b=B();b.valign=r.get('val');b.updateElement();E();A.editorcore.onEditorEvent();}},xns:rooui.form,store:{xtype:'SimpleStore',data:[['top'],['middle'],['bottom']],fields:['val'],xns:Roo.data}},{xtype:'TextItem',text:"Merge Cells: ",xns:rooui.Toolbar},{xtype:'Button',text:'Right',listeners:{click:function(G,e){A.editorcore.selectNode(A.tb.selectedNode);
+B().mergeRight();E();A.editorcore.onEditorEvent();}},xns:rooui.Toolbar},{xtype:'Button',text:'Below',listeners:{click:function(G,e){A.editorcore.selectNode(A.tb.selectedNode);B().mergeBelow();E();A.editorcore.onEditorEvent();}},xns:rooui.Toolbar},{xtype:'TextItem',text:"| ",xns:rooui.Toolbar}
+,{xtype:'Button',text:'Split',listeners:{click:function(G,e){B().split();E();A.editorcore.selectNode(A.tb.selectedNode);A.editorcore.onEditorEvent();}},xns:rooui.Toolbar},{xtype:'Fill',xns:rooui.Toolbar},{xtype:'Button',text:'Delete',xns:rooui.Toolbar,menu:{xtype:'Menu',xns:rooui.menu,items:[{xtype:'Item',html:'Column',listeners:{click:function(G,e){var t=C();
+B().deleteColumn();E();A.editorcore.selectNode(t.node);A.editorcore.onEditorEvent();}},xns:rooui.menu},{xtype:'Item',html:'Row',listeners:{click:function(G,e){var t=C();B().deleteRow();E();A.editorcore.selectNode(t.node);A.editorcore.onEditorEvent();}},xns:rooui.menu}
+,{xtype:'Separator',xns:rooui.menu},{xtype:'Item',html:'Table',listeners:{click:function(G,e){var t=C();var nn=t.node.nextSibling||t.node.previousSibling;t.node.parentNode.removeChild(t.node);if(nn){A.editorcore.selectNode(nn,true);}A.editorcore.onEditorEvent();
+}},xns:rooui.menu}]}}];},toObject:function(){var A={tag:'td',contenteditable:'true','data-block':'Td',valign:this.valign,style:{'text-align':this.textAlign,border:'solid 1px rgb(0, 0, 0)','border-collapse':'collapse',padding:'6px','vertical-align':this.valign}
+,html:this.html};if(this.width!=''){A.width=this.width;A.style.width=this.width;}if(this.colspan>1){A.colspan=this.colspan;}if(this.rowspan>1){A.rowspan=this.rowspan;}return A;},readElement:function(A){A=A?A:this.node;this.width=A.style.width;this.colspan=Math.max(1,1*A.getAttribute('colspan'));
+this.rowspan=Math.max(1,1*A.getAttribute('rowspan'));this.html=A.innerHTML;},emptyCell:function(){return {colspan:1,rowspan:1,textAlign:'left',html:"&nbsp;"};},removeNode:function(){return this.node.closest('table');},cellData:false,colWidths:false,toTableArray:function(){var A=[];
+var B=this.node.closest('tr').closest('table');Array.from(B.rows).forEach(function(r,ri){A[ri]=[];});var rn=0;this.colWidths=[];var C=true;Array.from(B.rows).forEach(function(r,ri){var cn=0;Array.from(r.cells).forEach(function(ce,ci){var c={cell:ce,row:rn,col:cn,colspan:ce.colSpan,rowspan:ce.rowSpan}
+;if(ce.isEqualNode(this.node)){this.cellData=c;}if(typeof(A[rn][cn])!='undefined'){while(typeof(A[rn][cn])!='undefined'){cn++;}c.col=cn;}if(typeof(this.colWidths[cn])=='undefined'){this.colWidths[cn]=ce.style.width;if(this.colWidths[cn]!=''){C=false;}}if(c.colspan<2&&c.rowspan<2){A[rn][cn]=c;
+cn++;return;}for(var j=0;j<c.rowspan;j++){if(typeof(A[rn+j])=='undefined'){continue;}A[rn+j][cn]=c;for(var i=0;i<c.colspan;i++){A[rn+j][cn+i]=c;}}cn+=c.colspan;},this);rn++;},this);if(C){this.colWidths[0]=false;}return A;},mergeRight:function(){var tr=this.node.closest('tr');
+var i=Array.prototype.indexOf.call(tr.childNodes,this.node);if(i>=tr.childNodes.length-1){return;}var A=this.toTableArray();if(typeof(A[this.cellData.row][this.cellData.col+this.cellData.colspan])=='undefined'){return;}var rc=A[this.cellData.row][this.cellData.col+this.cellData.colspan];
+if(rc.rowspan!=this.cellData.rowspan||rc.row!=this.cellData.row){return;}this.node.innerHTML+=' '+rc.cell.innerHTML;tr.removeChild(rc.cell);this.colspan+=rc.colspan;this.node.setAttribute('colspan',this.colspan);},mergeBelow:function(){var A=this.toTableArray();
+if(typeof(A[this.cellData.row+this.cellData.rowspan])=='undefined'){return;}if(typeof(A[this.cellData.row+this.cellData.rowspan][this.cellData.col])=='undefined'){return;}var rc=A[this.cellData.row+this.cellData.rowspan][this.cellData.col];if(rc.colspan!=this.cellData.colspan||rc.col!=this.cellData.col){return;
+}this.node.innerHTML=this.node.innerHTML+rc.cell.innerHTML;rc.cell.parentNode.removeChild(rc.cell);this.rowspan+=rc.rowspan;this.node.setAttribute('rowspan',this.rowspan);},split:function(){if(this.node.rowSpan<2&&this.node.colSpan<2){return;}var A=this.toTableArray();
+var cd=this.cellData;this.rowspan=1;this.colspan=1;for(var r=cd.row;r<cd.row+cd.rowspan;r++){for(var c=cd.col;c<cd.col+cd.colspan;c++){if(r==cd.row&&c==cd.col){this.node.removeAttribute('rowspan');this.node.removeAttribute('colspan');continue;}var B=this.node.cloneNode();
+B.removeAttribute('id');B.innerHTML='';A[r][c]={cell:B,col:c,row:r,colspan:1,rowspan:1};}}this.redrawAllCells(A);},redrawAllCells:function(A){var B=this.node.closest('tr').closest('table');var C=B.rows[0].parentNode;Array.from(B.rows).forEach(function(r,ri){Array.from(r.cells).forEach(function(ce,ci){ce.parentNode.removeChild(ce);
+});r.parentNode.removeChild(r);});for(var r=0;r<A.length;r++){var re=B.rows[r];var re=B.ownerDocument.createElement('tr');C.appendChild(re);for(var c=0;c<A[r].length;c++){if(A[r][c].cell===false){continue;}re.appendChild(A[r][c].cell);A[r][c].cell=false;}
+}},updateWidths:function(A){for(var r=0;r<A.length;r++){for(var c=0;c<A[r].length;c++){if(A[r][c].cell===false){continue;}if(this.colWidths[0]!=false&&A[r][c].colspan<2){var el=Roo.htmleditor.Block.factory(A[r][c].cell);el.width=Math.floor(this.colWidths[c])+'%';
+el.updateElement(el.node);}A[r][c].cell=false;}}},normalizeWidths:function(A){if(this.colWidths[0]===false){var nw=100.0/this.colWidths.length;this.colWidths.forEach(function(w,i){this.colWidths[i]=nw;},this);return;}var t=0,B=[];this.colWidths.forEach(function(w,i){this.colWidths[i]=this.colWidths[i]==''?0:(this.colWidths[i]+'').replace(/[^0-9]+/g,'')*1;
+var D=this.colWidths[i];if(D>0){t+=D;return;}B.push(i);},this);var nc=this.colWidths.length;if(B.length){var C=(nc-B.length)/(1.0*nc);var t=C*t;var ew=(100-t)/(1.0*B.length);this.colWidths.forEach(function(w,i){if(w>0){this.colWidths[i]=w*C;return;}this.colWidths[i]=ew;
+},this);}},shrinkColumn:function(){var A=this.toTableArray();this.normalizeWidths(A);var B=this.cellData.col;var nw=this.colWidths[B]*0.8;if(nw<5){return;}var C=(this.colWidths[B]*0.2)/(this.colWidths.length-1);this.colWidths.forEach(function(w,i){if(i==B){this.colWidths[i]=nw;
+return;}this.colWidths[i]+=C},this);this.updateWidths(A);},growColumn:function(){var A=this.toTableArray();this.normalizeWidths(A);var B=this.cellData.col;var nw=this.colWidths[B]*1.2;if(nw>90){return;}var C=(this.colWidths[B]*0.2)/(this.colWidths.length-1);
+this.colWidths.forEach(function(w,i){if(i==B){this.colWidths[i]=nw;return;}this.colWidths[i]-=C},this);this.updateWidths(A);},deleteRow:function(){var A=this.toTableArray();for(var i=0;i<A[this.cellData.row].length;i++){var c=A[this.cellData.row][i];if(c.row!=this.cellData.row){c.rowspan--;
+c.cell.setAttribute('rowspan',c.rowspan);continue;}if(c.rowspan>1){c.rowspan--;c.cell.setAttribute('rowspan',c.rowspan);}}A.splice(this.cellData.row,1);this.redrawAllCells(A);},deleteColumn:function(){var A=this.toTableArray();for(var i=0;i<A.length;i++){var c=A[i][this.cellData.col];
+if(c.col!=this.cellData.col){A[i][this.cellData.col].colspan--;}else if(c.colspan>1){c.colspan--;c.cell.setAttribute('colspan',c.colspan);}A[i].splice(this.cellData.col,1);}this.redrawAllCells(A);}})
 // Roo/HtmlEditorCore.js
-Roo.HtmlEditorCore=function(A){Roo.HtmlEditorCore.superclass.constructor.call(this,A);this.addEvents({initialize:true,activate:true,beforesync:true,beforepush:true,sync:true,push:true,editorevent:true});this.applyBlacklists();};Roo.extend(Roo.HtmlEditorCore,Roo.Component,{owner:false,resizable:false,height:300,width:500,stylesheets:false,allowComments:false,frameId:false,validationEvent:false,deferHeight:true,initialized:false,activated:false,sourceEditMode:false,onFocus:Roo.emptyFn,iframePad:3,hideMode:'offsets',clearUp:true,black:false,white:false,bodyCls:'',getDocMarkup:function(){var st='';
+Roo.HtmlEditorCore=function(A){Roo.HtmlEditorCore.superclass.constructor.call(this,A);this.addEvents({initialize:true,activate:true,beforesync:true,beforepush:true,sync:true,push:true,editorevent:true});this.applyBlacklists();};Roo.extend(Roo.HtmlEditorCore,Roo.Component,{owner:false,resizable:false,height:300,width:500,autoClean:true,enableBlocks:true,stylesheets:false,language:'en',allowComments:false,frameId:false,validationEvent:false,deferHeight:true,initialized:false,activated:false,sourceEditMode:false,onFocus:Roo.emptyFn,iframePad:3,hideMode:'offsets',clearUp:true,black:false,white:false,bodyCls:'',undoManager:false,getDocMarkup:function(){var st='';
 if(this.stylesheets===false){Roo.get(document.head).select('style').each(function(B){st+=B.dom.outerHTML||new XMLSerializer().serializeToString(B.dom);});Roo.get(document.head).select('link').each(function(B){st+=B.dom.outerHTML||new XMLSerializer().serializeToString(B.dom);
-});}else if(!this.stylesheets.length){st='<style type="text/css">'+'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}'+'</style>';}else{for(var i in this.stylesheets){st+='<link rel="stylesheet" href="'+this.stylesheets[i]+'" type="text/css">';}
-}st+='<style type="text/css">'+'IMG { cursor: pointer } '+'</style>';var A='roo-htmleditor-body';if(this.bodyCls.length){A+=' '+this.bodyCls;}return '<html><head>'+st+' </head><body contenteditable="true" data-enable-grammerly="true" class="'+A+'"></body></html>';
+});}else if(!this.stylesheets.length){st='<style type="text/css">'+'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}'+'</style>';}else{for(var i in this.stylesheets){if(typeof(this.stylesheets[i])!='string'){continue;}st+='<link rel="stylesheet" href="'+this.stylesheets[i]+'" type="text/css">';
+}}st+='<style type="text/css">'+'IMG { cursor: pointer } '+'</style>';st+='<meta name="google" content="notranslate">';var A='notranslate roo-htmleditor-body';if(this.bodyCls.length){A+=' '+this.bodyCls;}return '<html  class="notranslate" translate="no"><head>'+st+' </head><body contenteditable="true" data-enable-grammerly="true" class="'+A+'"></body></html>';
 },onRender:function(ct,A){var _t=this;this.el=this.owner.inputEl?this.owner.inputEl():this.owner.el;this.el.dom.style.border='0 none';this.el.dom.setAttribute('tabIndex',-1);this.el.addClass('x-hidden hide');if(Roo.isIE){this.el.applyStyles('margin-top:-1px;margin-bottom:-1px;')}
 this.frameId=Roo.id();var B=this.owner.wrap.createChild({tag:'iframe',cls:'form-control',id:this.frameId,name:this.frameId,frameBorder:'no','src':Roo.SSL_SECURE_URL?Roo.SSL_SECURE_URL:"javascript:false"},this.el);this.iframe=B.dom;this.assignDocWin();this.doc.designMode='on';
 this.doc.open();this.doc.write(this.getDocMarkup());this.doc.close();var C={run:function(){this.assignDocWin();if(this.doc.body||this.doc.readyState=='complete'){try{this.doc.designMode="on";}catch(e){return;}Roo.TaskMgr.stop(C);this.initEditor.defer(10,this);
 }},interval:10,duration:10000,scope:this};Roo.TaskMgr.start(C);},onResize:function(w,h){Roo.log('resize: '+w+','+h);if(!this.iframe){return;}if(typeof w=='number'){this.iframe.style.width=w+'px';}if(typeof h=='number'){this.iframe.style.height=h+'px';if(this.doc){(this.doc.body||this.doc.documentElement).style.height=(h-(this.iframePad*2))+'px';
-}}},toggleSourceEdit:function(A){this.sourceEditMode=A===true;if(this.sourceEditMode){Roo.get(this.iframe).addClass(['x-hidden','hide']);}else{Roo.get(this.iframe).removeClass(['x-hidden','hide']);this.deferFocus();}},cleanHtml:function(A){A=String(A);if(A.length>5){if(Roo.isSafari){A=A.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,'');
-}}if(A=='&nbsp;'){A='';}return A;},syncValue:function(){if(this.initialized){var bd=(this.doc.body||this.doc.documentElement);var A=bd.innerHTML;if(Roo.isSafari){var bs=bd.getAttribute('style');var m=bs?bs.match(/text-align:(.*?);/i):false;if(m&&m[1]){A='<div style="'+m[0]+'">'+A+'</div>';
-}}A=this.cleanHtml(A);A=A.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u0080-\uFFFF]/g,function(B){var cc=B.charCodeAt();if(B.length==2){var C=B.charCodeAt(0)-0xD800;var D=B.charCodeAt(1)-0xDC00;cc=(C*0x400)+D+0x10000;}else if((cc>=0x4E00&&cc<0xA000)||(cc>=0x3400&&cc<0x4E00)||(cc>=0xf900&&cc<0xfb00)){return B;
-}return "&#"+cc+";";});if(this.owner.fireEvent('beforesync',this,A)!==false){this.el.dom.value=A;this.owner.fireEvent('sync',this,A);}}},pushValue:function(){if(this.initialized){var v=this.el.dom.value.trim();if(this.owner.fireEvent('beforepush',this,v)!==false){var d=(this.doc.body||this.doc.documentElement);
-d.innerHTML=v;this.cleanUpPaste();this.el.dom.value=d.innerHTML;this.owner.fireEvent('push',this,v);}}},deferFocus:function(){this.focus.defer(10,this);},focus:function(){if(this.win&&!this.sourceEditMode){this.win.focus();}else{this.el.focus();}},assignDocWin:function(){var A=this.iframe;
-if(Roo.isIE){this.doc=A.contentWindow.document;this.win=A.contentWindow;}else{if(!Roo.get(this.frameId)&&!A.contentDocument){return;}this.doc=(A.contentDocument||Roo.get(this.frameId).dom.document);this.win=(A.contentWindow||Roo.get(this.frameId).dom.contentWindow);
-}},initEditor:function(){this.assignDocWin();this.doc.designMode="on";this.doc.open();this.doc.write(this.getDocMarkup());this.doc.close();var A=(this.doc.body||this.doc.documentElement);A.bgProperties='fixed';Roo.EventManager.on(this.doc,{'mouseup':this.onEditorEvent,'dblclick':this.onEditorEvent,'click':this.onEditorEvent,'keyup':this.onEditorEvent,buffer:100,scope:this}
-);if(Roo.isGecko){Roo.EventManager.on(this.doc,'keypress',this.mozKeyPress,this);}if(Roo.isIE||Roo.isSafari||Roo.isOpera){Roo.EventManager.on(this.doc,'keydown',this.fixKeys,this);}this.initialized=true;this.owner.fireEvent('initialize',this);this.pushValue();
-},onDestroy:function(){if(this.rendered){}},onFirstFocus:function(){this.assignDocWin();this.activated=true;if(Roo.isGecko){this.win.focus();var s=this.win.getSelection();if(!s.focusNode||s.focusNode.nodeType!=3){var r=s.getRangeAt(0);r.selectNodeContents((this.doc.body||this.doc.documentElement));
-r.collapse(true);this.deferFocus();}try{this.execCmd('useCSS',true);this.execCmd('styleWithCSS',false);}catch(e){}}this.owner.fireEvent('activate',this);},adjustFont:function(A){var B=A.cmd=='increasefontsize'?1:-1;var v=parseInt(this.doc.queryCommandValue('FontSize')||3,10);
-if(Roo.isSafari){var sm={10:1,13:2,16:3,18:4,24:5,32:6,48:7};v=(v<10)?10:v;v=(v>48)?48:v;v=typeof(sm[v])=='undefined'?1:sm[v];}v=Math.max(1,v+B);this.execCmd('FontSize',v);},onEditorEvent:function(e){this.owner.fireEvent('editorevent',this,e);this.syncValue();
+}}},toggleSourceEdit:function(A){this.sourceEditMode=A===true;if(this.sourceEditMode){Roo.get(this.iframe).addClass(['x-hidden','hide','d-none']);}else{Roo.get(this.iframe).removeClass(['x-hidden','hide','d-none']);this.deferFocus();}},cleanHtml:function(A){A=String(A);
+if(A.length>5){if(Roo.isSafari){A=A.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,'');}}if(A=='&nbsp;'){A='';}return A;},syncValue:function(){if(this.initialized){this.undoManager.addEvent();var bd=(this.doc.body||this.doc.documentElement);
+var A=this.win.getSelection();var B=document.createElement('div');B.innerHTML=bd.innerHTML;var C=B.getElementsByClassName('gtx-trans-icon');if(C.length>0){var rm=C.item(0).parentNode;rm.parentNode.removeChild(rm);}if(this.enableBlocks){new Roo.htmleditor.FilterBlock({node:B}
+);}var D=new Roo.htmleditor.TidySerializer({inner:true});var E=D.serialize(B);if(Roo.isSafari){var bs=bd.getAttribute('style');var m=bs?bs.match(/text-align:(.*?);/i):false;if(m&&m[1]){E='<div style="'+m[0]+'">'+E+'</div>';}}E=this.cleanHtml(E);E=E.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u0080-\uFFFF]/g,function(F){var cc=F.charCodeAt();
+if(F.length==2){var G=F.charCodeAt(0)-0xD800;var H=F.charCodeAt(1)-0xDC00;cc=(G*0x400)+H+0x10000;}else if((cc>=0x4E00&&cc<0xA000)||(cc>=0x3400&&cc<0x4E00)||(cc>=0xf900&&cc<0xfb00)){return F;}return "&#"+cc+";";});if(this.owner.fireEvent('beforesync',this,E)!==false){this.el.dom.value=E;
+this.owner.fireEvent('sync',this,E);}}},pushValue:function(){if(this.initialized){var v=this.el.dom.value.trim();if(this.owner.fireEvent('beforepush',this,v)!==false){var d=(this.doc.body||this.doc.documentElement);d.innerHTML=v;this.el.dom.value=d.innerHTML;
+this.owner.fireEvent('push',this,v);}if(this.autoClean){new Roo.htmleditor.FilterParagraph({node:this.doc.body});new Roo.htmleditor.FilterSpan({node:this.doc.body});}if(this.enableBlocks){Roo.htmleditor.Block.initAll(this.doc.body);}this.updateLanguage();
+var lc=this.doc.body.lastChild;if(lc&&lc.nodeType==1&&lc.getAttribute("contenteditable")=="false"){this.doc.body.appendChild(this.doc.createElement('br'));}}},deferFocus:function(){this.focus.defer(10,this);},focus:function(){if(this.win&&!this.sourceEditMode){this.win.focus();
+}else{this.el.focus();}},assignDocWin:function(){var A=this.iframe;if(Roo.isIE){this.doc=A.contentWindow.document;this.win=A.contentWindow;}else{if(!Roo.get(this.frameId)&&!A.contentDocument){return;}this.doc=(A.contentDocument||Roo.get(this.frameId).dom.document);
+this.win=(A.contentWindow||Roo.get(this.frameId).dom.contentWindow);}},initEditor:function(){this.assignDocWin();this.doc.designMode="on";this.doc.open();this.doc.write(this.getDocMarkup());this.doc.close();var A=(this.doc.body||this.doc.documentElement);
+A.bgProperties='fixed';A.setAttribute("translate","no");Roo.EventManager.on(this.doc,{'mouseup':this.onEditorEvent,'dblclick':this.onEditorEvent,'click':this.onEditorEvent,'keyup':this.onEditorEvent,buffer:100,scope:this});Roo.EventManager.on(this.doc,{'paste':this.onPasteEvent,scope:this}
+);if(Roo.isGecko){Roo.EventManager.on(this.doc,'keypress',this.mozKeyPress,this);}if(Roo.isIE||Roo.isSafari||Roo.isOpera){Roo.EventManager.on(this.doc,'keydown',this.fixKeys,this);}this.initialized=true;new Roo.htmleditor.KeyEnter({core:this});this.owner.fireEvent('initialize',this);
+this.pushValue();},onPasteEvent:function(e,v){var cd=(e.browserEvent.clipboardData||window.clipboardData);if(cd.files.length>0){var A=(window.createObjectURL&&window)||(window.URL&&URL.revokeObjectURL&&URL)||(window.webkitURL&&webkitURL);var B=A.createObjectURL(cd.files[0]);
+this.insertAtCursor('<img src=" + url + ">');return false;}var C=cd.getData('text/html');var D=new Roo.rtf.Parser(cd.getData('text/rtf'));var E=D.doc?D.doc.getElementsByType('pict'):[];Roo.log(E);E=E.filter(function(g){return !g.path.match(/^rtf\/(head|pgdsctbl|listtable)/);
+}).map(function(g){return g.toDataURL();}).filter(function(g){return g!='about:blank';});C=this.cleanWordChars(C);var d=(new DOMParser().parseFromString(C,'text/html')).body;var sn=this.getParentElement();if(d.getElementsByTagName('table').length&&sn&&sn.closest('table')){e.preventDefault();
+this.insertAtCursor("You can not nest tables");return false;}if(E.length>0){Roo.each(d.getElementsByTagName('img'),function(F,i){F.setAttribute('src',E[i]);});}if(this.autoClean){new Roo.htmleditor.FilterStyleToTag({node:d});new Roo.htmleditor.FilterAttributes({node:d,attrib_white:['href','src','name','align'],attrib_clean:['href','src']}
+);new Roo.htmleditor.FilterBlack({node:d,tag:this.black});new Roo.htmleditor.FilterKeepChildren({node:d,tag:['FONT','O:P']});new Roo.htmleditor.FilterParagraph({node:d});new Roo.htmleditor.FilterSpan({node:d});new Roo.htmleditor.FilterLongBr({node:d});}if(this.enableBlocks){Array.from(d.getElementsByTagName('img')).forEach(function(F){if(F.closest('figure')){return;
+}var G=new Roo.htmleditor.BlockFigure({image_src:F.src});G.updateElement(F);});}this.insertAtCursor(d.innerHTML.replace(/&nbsp;/g,' '));if(this.enableBlocks){Roo.htmleditor.Block.initAll(this.doc.body);}e.preventDefault();return false;},onDestroy:function(){if(this.rendered){}
+},onFirstFocus:function(){this.assignDocWin();this.undoManager=new Roo.lib.UndoManager(100,(this.doc.body||this.doc.documentElement));this.activated=true;if(Roo.isGecko){this.win.focus();var s=this.win.getSelection();if(!s.focusNode||s.focusNode.nodeType!=3){var r=s.getRangeAt(0);
+r.selectNodeContents((this.doc.body||this.doc.documentElement));r.collapse(true);this.deferFocus();}try{this.execCmd('useCSS',true);this.execCmd('styleWithCSS',false);}catch(e){}}this.owner.fireEvent('activate',this);},adjustFont:function(A){var B=A.cmd=='increasefontsize'?1:-1;
+var v=parseInt(this.doc.queryCommandValue('FontSize')||3,10);if(Roo.isSafari){var sm={10:1,13:2,16:3,18:4,24:5,32:6,48:7};v=(v<10)?10:v;v=(v>48)?48:v;v=typeof(sm[v])=='undefined'?1:sm[v];}v=Math.max(1,v+B);this.execCmd('FontSize',v);},onEditorEvent:function(e){if(e&&(e.ctrlKey||e.metaKey)&&e.keyCode===90){return;
+}if(e&&e.target.nodeName=='BODY'&&e.type=="mouseup"&&this.doc.body.lastChild){var lc=this.doc.body.lastChild;while((lc.nodeType==3&&lc.nodeValue=='')||lc.id=='gtx-trans'){lc=lc.previousSibling;}if(lc.nodeType==1&&lc.nodeName!='BR'){var ns=this.doc.createElement('br');
+this.doc.body.appendChild(ns);range=this.doc.createRange();range.setStartAfter(ns);range.collapse(true);var A=this.win.getSelection();A.removeAllRanges();A.addRange(range);}}this.fireEditorEvent(e);this.syncValue();},fireEditorEvent:function(e){this.owner.fireEvent('editorevent',this,e);
 },insertTag:function(tg){if(tg.toLowerCase()=='span'||tg.toLowerCase()=='code'||tg.toLowerCase()=='sup'||tg.toLowerCase()=='sub'){range=this.createRange(this.getSelection());var A=this.doc.createElement(tg.toLowerCase());A.appendChild(range.extractContents());
-range.insertNode(A);return;}this.execCmd("formatblock",tg);},insertText:function(A){var B=this.createRange();B.deleteContents();B.insertNode(this.doc.createTextNode(A));},relayCmd:function(A,B){this.win.focus();this.execCmd(A,B);this.owner.fireEvent('editorevent',this);
-this.owner.deferFocus();},execCmd:function(A,B){this.doc.execCommand(A,false,B===undefined?null:B);this.syncValue();},insertAtCursor:function(A){if(!this.activated){return;}if(Roo.isGecko||Roo.isOpera||Roo.isSafari){this.win.focus();var B,C;var D=this.win;
-if(D.getSelection&&D.getSelection().getRangeAt){B=D.getSelection().getRangeAt(0);C=typeof(A)=='string'?B.createContextualFragment(A):A;B.insertNode(C);}else if(D.document.selection&&D.document.selection.createRange){var E=typeof(A)=='string'?A:A.outerHTML;
-D.document.selection.createRange().pasteHTML(E);}else{var E=typeof(A)=='string'?A:A.outerHTML;this.execCmd('InsertHTML',E);}this.syncValue();this.deferFocus();}},mozKeyPress:function(e){if(e.ctrlKey){var c=e.getCharCode(),A;if(c>0){c=String.fromCharCode(c).toLowerCase();
-switch(c){case 'b':A='bold';break;case 'i':A='italic';break;case 'u':A='underline';break;case 'v':this.cleanUpPaste.defer(100,this);return;}if(A){this.win.focus();this.execCmd(A);this.deferFocus();e.preventDefault();}}}},fixKeys:function(){if(Roo.isIE){return function(e){var k=e.getKey(),r;
-if(k==e.TAB){e.stopEvent();r=this.doc.selection.createRange();if(r){r.collapse(true);r.pasteHTML('&#160;&#160;&#160;&#160;');this.deferFocus();}return;}if(k==e.ENTER){r=this.doc.selection.createRange();if(r){var A=r.parentElement();if(!A||A.tagName.toLowerCase()!='li'){e.stopEvent();
-r.pasteHTML('<br />');r.collapse(false);r.select();}}}if(String.fromCharCode(k).toLowerCase()=='v'){this.cleanUpPaste.defer(100,this);return;}};}else if(Roo.isOpera){return function(e){var k=e.getKey();if(k==e.TAB){e.stopEvent();this.win.focus();this.execCmd('InsertHTML','&#160;&#160;&#160;&#160;');
-this.deferFocus();}if(String.fromCharCode(k).toLowerCase()=='v'){this.cleanUpPaste.defer(100,this);return;}};}else if(Roo.isSafari){return function(e){var k=e.getKey();if(k==e.TAB){e.stopEvent();this.execCmd('InsertText','\t');this.deferFocus();return;}if(String.fromCharCode(k).toLowerCase()=='v'){this.cleanUpPaste.defer(100,this);
-return;}};}}(),getAllAncestors:function(){var p=this.getSelectedNode();var a=[];if(!p){a.push(p);p=this.getParentElement();}while(p&&(p.nodeType==1)&&(p.tagName.toLowerCase()!='body')){a.push(p);p=p.parentNode;}a.push(this.doc.body);return a;},lastSel:false,lastSelNode:false,getSelection:function(){this.assignDocWin();
-return Roo.isIE?this.doc.selection:this.win.getSelection();},getSelectedNode:function(){var A=this.createRange(this.getSelection()).cloneRange();if(Roo.isIE){var B=A.parentElement();while(true){var C=A.duplicate();C.moveToElementText(B);if(C.inRange(A)){break;
-}if((B.nodeType!=1)||(B.tagName.toLowerCase()=='body')){break;}B=B.parentElement;}return B;}var ac=A.commonAncestorContainer;if(ac.nodeType==3){ac=ac.parentNode;}var ar=ac.childNodes;var D=[];var E=[];var F=false;for(var i=0;i<ar.length;i++){if((ar[i].nodeType==3)&&(!ar[i].data.length)){continue;
-}if(this.rangeIntersectsNode(A,ar[i])&&this.rangeCompareNode(A,ar[i])==3){D.push(ar[i]);continue;}if((ar[i].nodeType==1)&&this.rangeIntersectsNode(A,ar[i])&&(this.rangeCompareNode(A,ar[i])>0)){E.push(ar[i]);continue;}if(!this.rangeIntersectsNode(A,ar[i])||(this.rangeCompareNode(A,ar[i])==0)){continue;
-}F=true;}if(!D.length&&E.length){D=E;}if(F||!D.length||(D.length>1)){return false;}return D[0];},createRange:function(A){if(typeof A!="undefined"){try{return A.getRangeAt?A.getRangeAt(0):A.createRange();}catch(e){return this.doc.createRange();}}else{return this.doc.createRange();
-}},getParentElement:function(){this.assignDocWin();var A=Roo.isIE?this.doc.selection:this.win.getSelection();var B=this.createRange(A);try{var p=B.commonAncestorContainer;while(p.nodeType==3){p=p.parentNode;}return p;}catch(e){return null;}},rangeIntersectsNode:function(A,B){var C=B.ownerDocument.createRange();
-try{C.selectNode(B);}catch(e){C.selectNodeContents(B);}var D=A.cloneRange();D.collapse(true);var E=A.cloneRange();E.collapse(false);var F=C.cloneRange();F.collapse(true);var G=C.cloneRange();G.collapse(false);return D.compareBoundaryPoints(Range.START_TO_START,G)==-1&&E.compareBoundaryPoints(Range.START_TO_START,F)==1;
-},rangeCompareNode:function(A,B){var C=B.ownerDocument.createRange();try{C.selectNode(B);}catch(e){C.selectNodeContents(B);}A.collapse(true);C.collapse(true);var ss=A.compareBoundaryPoints(Range.START_TO_START,C);var ee=A.compareBoundaryPoints(Range.END_TO_END,C);
-var D=ss==1;var E=ee==-1;if(D&&E){return 0;}if(!D&&E){return 1;}if(D&&!E){return 2;}return 3;},cleanUpPaste:function(){Roo.log('cleanuppaste');this.cleanUpChildren(this.doc.body);var A=this.cleanWordChars(this.doc.body.innerHTML);if(A!=this.doc.body.innerHTML){this.doc.body.innerHTML=A;
-}},cleanWordChars:function(A){var he=Roo.HtmlEditorCore;var B=A;Roo.each(he.swapCodes,function(sw){var C=new RegExp("\\u"+sw[0].toString(16),"g");B=B.replace(C,sw[1]);});return B;},cleanUpChildren:function(n){if(!n.childNodes.length){return;}for(var i=n.childNodes.length-1;
-i>-1;i--){this.cleanUpChild(n.childNodes[i]);}},cleanUpChild:function(A){var ed=this;if(A.nodeName=="#text"){return;}if(A.nodeName=="#comment"){if(!this.allowComments){A.parentNode.removeChild(A);}return;}var B=A.tagName.toLowerCase();if(this.black.indexOf(B)>-1&&this.clearUp){A.parentNode.removeChild(A);
-return;}var C=Roo.HtmlEditorCore.remove.indexOf(A.tagName.toLowerCase())>-1;if((!A.attributes||!A.attributes.length)&&B=='span'){C=true;}if(C){this.cleanUpChildren(A);while(A.childNodes.length){var cn=A.childNodes[0];A.removeChild(cn);A.parentNode.insertBefore(cn,A);
-}A.parentNode.removeChild(A);return;}if(!A.attributes||!A.attributes.length){this.cleanUpChildren(A);return;}function cleanAttr(n,v){if(v.match(/^\./)||v.match(/^\//)){return;}if(v.match(/^(http|https):\/\//)||v.match(/^mailto:/)||v.match(/^ftp:/)){return;
-}if(v.match(/^#/)){return;}if(v.match(/^\{/)){return;}A.removeAttribute(n);}var D=this.cwhite;var E=this.cblack;function cleanStyle(n,v){if(v.match(/expression/)){A.removeAttribute(n);return;}var F=v.split(/;/);var G=[];Roo.each(F,function(p){p=p.replace(/^\s+/g,'').replace(/\s+$/g,'');
-if(!p.length){return true;}var l=p.split(':').shift().replace(/\s+/g,'');l=l.replace(/^\s+/g,'').replace(/\s+$/g,'');if(D.length&&E.indexOf(l)>-1){return true;}if(D.length&&D.indexOf(l)<0&&D.indexOf(l.toLowerCase())<0){return true;}G.push(p);return true;}
-);if(G.length){A.setAttribute(n,G.join(';'));}else{A.removeAttribute(n);}}for(var i=A.attributes.length-1;i>-1;i--){var a=A.attributes[i];if(a.name.toLowerCase().substr(0,2)=='on'){A.removeAttribute(a.name);continue;}if(Roo.HtmlEditorCore.ablack.indexOf(a.name.toLowerCase())>-1){A.removeAttribute(a.name);
-continue;}if(Roo.HtmlEditorCore.aclean.indexOf(a.name.toLowerCase())>-1){cleanAttr(a.name,a.value);continue;}if(a.name=='style'){cleanStyle(a.name,a.value);continue;}if(a.name=='class'){if(a.value.match(/^Mso/)){A.removeAttribute('class');}if(a.value.match(/^body$/)){A.removeAttribute('class');
-}continue;}}this.cleanUpChildren(A);},cleanWord:function(A){if(!A){this.cleanWord(this.doc.body);return;}if(A.nodeName=='SPAN'&&!A.hasAttributes()&&A.childNodes.length==1&&A.firstChild.nodeName=="#text"){var B=A.firstChild;A.removeChild(B);if(A.getAttribute('lang')!='zh-CN'){A.parentNode.insertBefore(A.ownerDocument.createTextNode(" "),A);
-}A.parentNode.insertBefore(B,A);if(A.getAttribute('lang')!='zh-CN'){A.parentNode.insertBefore(A.ownerDocument.createTextNode(" "),A);}A.parentNode.removeChild(A);}if(A.nodeName=="#text"){return;}if(A.nodeName=="#comment"){A.parentNode.removeChild(A);return;
-}if(A.tagName.toLowerCase().match(/^(style|script|applet|embed|noframes|noscript)$/)){A.parentNode.removeChild(A);return;}if(A.tagName.toLowerCase().match(/^(meta|link|\\?xml:|st1:|o:|v:|font)/)){while(A.childNodes.length){var cn=A.childNodes[0];A.removeChild(cn);
-A.parentNode.insertBefore(cn,A);this.cleanWord(cn);}A.parentNode.removeChild(A);return;}if(A.className.length){var cn=A.className.split(/\W+/);var C=[];Roo.each(cn,function(F){if(F.match(/Mso[a-zA-Z]+/)){return;}C.push(F);});A.className=C.length?C.join(' '):'';
-if(!C.length){A.removeAttribute("class");}}if(A.hasAttribute("lang")){A.removeAttribute("lang");}if(A.hasAttribute("style")){var D=A.getAttribute("style").split(";");var E=[];Roo.each(D,function(s){if(!s.match(/:/)){return;}var kv=s.split(":");if(kv[0].match(/^(mso-|line|font|background|margin|padding|color)/)){return;
-}E.push(s);});A.setAttribute("style",E.length?E.join(';'):'');if(!E.length){A.removeAttribute('style');}}this.iterateChildren(A,this.cleanWord);},iterateChildren:function(A,fn){if(!A.childNodes.length){return;}for(var i=A.childNodes.length-1;i>-1;i--){fn.call(this,A.childNodes[i])}
-},cleanTableWidths:function(A){if(!A){this.cleanTableWidths(this.doc.body);return;}if(A.nodeName=="#text"||A.nodeName=="#comment"){return;}Roo.log(A.tagName);if(!A.tagName.toLowerCase().match(/^(table|td|tr)$/)){this.iterateChildren(A,this.cleanTableWidths);
-return;}if(A.hasAttribute('width')){A.removeAttribute('width');}if(A.hasAttribute("style")){var B=A.getAttribute("style").split(";");var C=[];Roo.each(B,function(s){if(!s.match(/:/)){return;}var kv=s.split(":");if(kv[0].match(/^\s*(width|min-width)\s*$/)){return;
-}C.push(s);});A.setAttribute("style",C.length?C.join(';'):'');if(!C.length){A.removeAttribute('style');}}this.iterateChildren(A,this.cleanTableWidths);},domToHTML:function(A,B,C){B=B||0;C=C||false;if(!A){return this.domToHTML(this.doc.body);}var j;var D=false;
-var E=A.nodeName;var F=Roo.util.Format.htmlEncode(A.tagName);if(E=='#text'){return C?A.nodeValue:A.nodeValue.trim();}var G='';if(E!='BODY'){var i=0;if(F){var H=[];for(i=0;i<A.attributes.length;i++){var I=A.attributes.item(i).name;if(!A.attributes.item(i).value.length){continue;
-}H.push(I+'="'+Roo.util.Format.htmlEncode(A.attributes.item(i).value)+'"');}G="<"+A.tagName+(H.length?(' '+H.join(' ')):'')+">";}else{}}else{F=false;}if(['IMG','BR','HR','INPUT'].indexOf(F)>-1){return G;}if(['PRE','TEXTAREA','TD','A','SPAN'].indexOf(F)>-1){C=true;
-}i=0;var J=A.childNodes.item(i);var D=true;var K='';lastnode='';while(J){var L=C;if(lastnode=='SPAN'){L=true;}if(J.nodeName=='#text'){var M=Roo.util.Format.htmlEncode(J.nodeValue);M=C?M:M.trim();if(!L&&M.length>80){K+="\n"+(new Array(B+1)).join("  ");}K+=M;
-i++;J=A.childNodes.item(i);lastNode='';continue;}D=false;K+=L?'':"\n"+(new Array(B+1)).join("  ");K+=this.domToHTML(J,B+1,C);lastnode=J.nodeName;i++;J=A.childNodes.item(i);}G+=K;if(!D){G+=C?'':"\n"+(new Array(B)).join("  ");}if(F){G+="</"+F+">";}return G;
-},applyBlacklists:function(){var w=typeof(this.owner.white)!='undefined'&&this.owner.white?this.owner.white:[];var b=typeof(this.owner.black)!='undefined'&&this.owner.black?this.owner.black:[];this.white=[];this.black=[];Roo.each(Roo.HtmlEditorCore.white,function(A){if(b.indexOf(A)>-1){return;
-}this.white.push(A);},this);Roo.each(w,function(A){if(b.indexOf(A)>-1){return;}if(this.white.indexOf(A)>-1){return;}this.white.push(A);},this);Roo.each(Roo.HtmlEditorCore.black,function(A){if(w.indexOf(A)>-1){return;}this.black.push(A);},this);Roo.each(b,function(A){if(w.indexOf(A)>-1){return;
+range.insertNode(A);return;}this.execCmd("formatblock",tg);this.undoManager.addEvent();},insertText:function(A){var B=this.createRange();B.deleteContents();B.insertNode(this.doc.createTextNode(A));this.undoManager.addEvent();},relayCmd:function(A,B){switch(A){case 'justifyleft':case 'justifyright':case 'justifycenter':var n=this.getParentElement();
+var td=n.closest('td');if(td){var bl=Roo.htmleditor.Block.factory(td);bl.textAlign=A.replace('justify','');bl.updateElement();this.owner.fireEvent('editorevent',this);return;}this.execCmd('styleWithCSS',true);break;case 'bold':case 'italic':this.execCmd('styleWithCSS',false);
+break;default:break;}this.win.focus();this.execCmd(A,B);this.owner.fireEvent('editorevent',this);this.owner.deferFocus();},execCmd:function(A,B){this.doc.execCommand(A,false,B===undefined?null:B);this.syncValue();},insertAtCursor:function(A){if(!this.activated){return;
+}if(Roo.isGecko||Roo.isOpera||Roo.isSafari){this.win.focus();var B,C;var D=this.win;if(D.getSelection&&D.getSelection().getRangeAt){this.createRange(this.getSelection()).deleteContents();B=D.getSelection().getRangeAt(0);C=typeof(A)=='string'?B.createContextualFragment(A):A;
+B.insertNode(C);B=B.cloneRange();B.collapse(false);D.getSelection().removeAllRanges();D.getSelection().addRange(B);}else if(D.document.selection&&D.document.selection.createRange){var E=typeof(A)=='string'?A:A.outerHTML;D.document.selection.createRange().pasteHTML(E);
+}else{var E=typeof(A)=='string'?A:A.outerHTML;this.execCmd('InsertHTML',E);}this.syncValue();this.deferFocus();}},mozKeyPress:function(e){if(e.ctrlKey){var c=e.getCharCode(),A;if(c>0){c=String.fromCharCode(c).toLowerCase();switch(c){case 'b':A='bold';break;
+case 'i':A='italic';break;case 'u':A='underline';break;}if(A){this.relayCmd(A);e.preventDefault();}}}},fixKeys:function(){if(Roo.isIE){return function(e){var k=e.getKey(),r;if(k==e.TAB){e.stopEvent();r=this.doc.selection.createRange();if(r){r.collapse(true);
+r.pasteHTML('&#160;&#160;&#160;&#160;');this.deferFocus();}return;}};}else if(Roo.isOpera){return function(e){var k=e.getKey();if(k==e.TAB){e.stopEvent();this.win.focus();this.execCmd('InsertHTML','&#160;&#160;&#160;&#160;');this.deferFocus();}};}else if(Roo.isSafari){return function(e){var k=e.getKey();
+if(k==e.TAB){e.stopEvent();this.execCmd('InsertText','\t');this.deferFocus();return;}this.mozKeyPress(e);};}}(),getAllAncestors:function(){var p=this.getSelectedNode();var a=[];if(!p){a.push(p);p=this.getParentElement();}while(p&&(p.nodeType==1)&&(p.tagName.toLowerCase()!='body')){a.push(p);
+p=p.parentNode;}a.push(this.doc.body);return a;},lastSel:false,lastSelNode:false,getSelection:function(){this.assignDocWin();return Roo.lib.Selection.wrap(Roo.isIE?this.doc.selection:this.win.getSelection(),this.doc);},selectNode:function(A,B){var C=A.ownerDocument.createRange();
+try{C.selectNode(A);}catch(e){C.selectNodeContents(A);}if(B===true){C.collapse(true);}var s=this.win.getSelection();s.removeAllRanges();s.addRange(C);},getSelectedNode:function(){var A=this.createRange(this.getSelection()).cloneRange();if(Roo.isIE){var B=A.parentElement();
+while(true){var C=A.duplicate();C.moveToElementText(B);if(C.inRange(A)){break;}if((B.nodeType!=1)||(B.tagName.toLowerCase()=='body')){break;}B=B.parentElement;}return B;}var ac=A.commonAncestorContainer;if(ac.nodeType==3){ac=ac.parentNode;}var ar=ac.childNodes;
+var D=[];var E=[];var F=false;for(var i=0;i<ar.length;i++){if((ar[i].nodeType==3)&&(!ar[i].data.length)){continue;}if(this.rangeIntersectsNode(A,ar[i])&&this.rangeCompareNode(A,ar[i])==3){D.push(ar[i]);continue;}if((ar[i].nodeType==1)&&this.rangeIntersectsNode(A,ar[i])&&(this.rangeCompareNode(A,ar[i])>0)){E.push(ar[i]);
+continue;}if(!this.rangeIntersectsNode(A,ar[i])||(this.rangeCompareNode(A,ar[i])==0)){continue;}F=true;}if(!D.length&&E.length){D=E;}if(F||!D.length||(D.length>1)){return false;}return D[0];},createRange:function(A){if(typeof A!="undefined"){try{return A.getRangeAt?A.getRangeAt(0):A.createRange();
+}catch(e){return this.doc.createRange();}}else{return this.doc.createRange();}},getParentElement:function(){this.assignDocWin();var A=Roo.isIE?this.doc.selection:this.win.getSelection();var B=this.createRange(A);try{var p=B.commonAncestorContainer;while(p.nodeType==3){p=p.parentNode;
+}return p;}catch(e){return null;}},rangeIntersectsNode:function(A,B){var C=B.ownerDocument.createRange();try{C.selectNode(B);}catch(e){C.selectNodeContents(B);}var D=A.cloneRange();D.collapse(true);var E=A.cloneRange();E.collapse(false);var F=C.cloneRange();
+F.collapse(true);var G=C.cloneRange();G.collapse(false);return D.compareBoundaryPoints(Range.START_TO_START,G)==-1&&E.compareBoundaryPoints(Range.START_TO_START,F)==1;},rangeCompareNode:function(A,B){var C=B.ownerDocument.createRange();try{C.selectNode(B);
+}catch(e){C.selectNodeContents(B);}A.collapse(true);C.collapse(true);var ss=A.compareBoundaryPoints(Range.START_TO_START,C);var ee=A.compareBoundaryPoints(Range.END_TO_END,C);var D=ss==1;var E=ee==-1;if(D&&E){return 0;}if(!D&&E){return 1;}if(D&&!E){return 2;
+}return 3;},cleanWordChars:function(A){var B=[[8211,"&#8211;"],[8212,"&#8212;"],[8216,"'"],[8217,"'"],[8220,'"'],[8221,'"'],[8226,"*"],[8230,"..."]];var C=A;Roo.each(B,function(sw){var D=new RegExp("\\u"+sw[0].toString(16),"g");C=C.replace(D,sw[1]);});return C;
+},cleanUpChild:function(A){new Roo.htmleditor.FilterComment({node:A});new Roo.htmleditor.FilterAttributes({node:A,attrib_black:this.ablack,attrib_clean:this.aclean,style_white:this.cwhite,style_black:this.cblack});new Roo.htmleditor.FilterBlack({node:A,tag:this.black}
+);new Roo.htmleditor.FilterKeepChildren({node:A,tag:this.tag_remove});},cleanWord:function(A){new Roo.htmleditor.FilterWord({node:A?A:this.doc.body});},cleanTableWidths:function(A){new Roo.htmleditor.FilterTableWidth({node:A?A:this.doc.body});},applyBlacklists:function(){var w=typeof(this.owner.white)!='undefined'&&this.owner.white?this.owner.white:[];
+var b=typeof(this.owner.black)!='undefined'&&this.owner.black?this.owner.black:[];this.aclean=typeof(this.owner.aclean)!='undefined'&&this.owner.aclean?this.owner.aclean:Roo.HtmlEditorCore.aclean;this.ablack=typeof(this.owner.ablack)!='undefined'&&this.owner.ablack?this.owner.ablack:Roo.HtmlEditorCore.ablack;
+this.tag_remove=typeof(this.owner.tag_remove)!='undefined'&&this.owner.tag_remove?this.owner.tag_remove:Roo.HtmlEditorCore.tag_remove;this.white=[];this.black=[];Roo.each(Roo.HtmlEditorCore.white,function(A){if(b.indexOf(A)>-1){return;}this.white.push(A);
+},this);Roo.each(w,function(A){if(b.indexOf(A)>-1){return;}if(this.white.indexOf(A)>-1){return;}this.white.push(A);},this);Roo.each(Roo.HtmlEditorCore.black,function(A){if(w.indexOf(A)>-1){return;}this.black.push(A);},this);Roo.each(b,function(A){if(w.indexOf(A)>-1){return;
 }if(this.black.indexOf(A)>-1){return;}this.black.push(A);},this);w=typeof(this.owner.cwhite)!='undefined'&&this.owner.cwhite?this.owner.cwhite:[];b=typeof(this.owner.cblack)!='undefined'&&this.owner.cblack?this.owner.cblack:[];this.cwhite=[];this.cblack=[];
 Roo.each(Roo.HtmlEditorCore.cwhite,function(A){if(b.indexOf(A)>-1){return;}this.cwhite.push(A);},this);Roo.each(w,function(A){if(b.indexOf(A)>-1){return;}if(this.cwhite.indexOf(A)>-1){return;}this.cwhite.push(A);},this);Roo.each(Roo.HtmlEditorCore.cblack,function(A){if(w.indexOf(A)>-1){return;
 }this.cblack.push(A);},this);Roo.each(b,function(A){if(w.indexOf(A)>-1){return;}if(this.cblack.indexOf(A)>-1){return;}this.cblack.push(A);},this);},setStylesheets:function(A){if(typeof(A)=='string'){Roo.get(this.iframe.contentDocument.head).createChild({tag:'link',rel:'stylesheet',type:'text/css',href:A}
-);return;}var B=this;Roo.each(A,function(s){if(!s.length){return;}Roo.get(B.iframe.contentDocument.head).createChild({tag:'link',rel:'stylesheet',type:'text/css',href:s});});},removeStylesheets:function(){var A=this;Roo.each(Roo.get(A.iframe.contentDocument.head).select('link[rel=stylesheet]',true).elements,function(s){s.remove();
-});},setStyle:function(A){Roo.get(this.iframe.contentDocument.head).createChild({tag:'style',type:'text/css',html:A});return;}});Roo.HtmlEditorCore.white=['area','br','img','input','hr','wbr','address','blockquote','center','dd','dir','div','dl','dt','h1','h2','h3','h4','h5','h6','hr','isindex','listing','marquee','menu','multicol','ol','p','plaintext','pre','table','ul','xmp','caption','col','colgroup','tbody','td','tfoot','th','thead','tr','dir','menu','ol','ul','dl','embed','object'];
-Roo.HtmlEditorCore.black=['applet','base','basefont','bgsound','blink','body','frame','frameset','head','html','ilayer','iframe','layer','link','meta','object','script','style','title','xml'];Roo.HtmlEditorCore.clean=['script','style','title','xml'];Roo.HtmlEditorCore.remove=['font'];
-Roo.HtmlEditorCore.ablack=['on'];Roo.HtmlEditorCore.aclean=['action','background','codebase','dynsrc','href','lowsrc'];Roo.HtmlEditorCore.pwhite=['http','https','mailto'];Roo.HtmlEditorCore.cwhite=[];Roo.HtmlEditorCore.cblack=[];Roo.HtmlEditorCore.swapCodes=[[8211,"&#8211;"],[8212,"&#8212;"],[8216,"'"],[8217,"'"],[8220,'"'],[8221,'"'],[8226,"*"],[8230,"..."]];
+);return;}var B=this;Roo.each(A,function(s){if(!s.length){return;}Roo.get(B.iframe.contentDocument.head).createChild({tag:'link',rel:'stylesheet',type:'text/css',href:s});});},updateLanguage:function(){if(!this.iframe||!this.iframe.contentDocument){return;
+}Roo.get(this.iframe.contentDocument.body).attr("lang",this.language);},removeStylesheets:function(){var A=this;Roo.each(Roo.get(A.iframe.contentDocument.head).select('link[rel=stylesheet]',true).elements,function(s){s.remove();});},setStyle:function(A){Roo.get(this.iframe.contentDocument.head).createChild({tag:'style',type:'text/css',html:A}
+);return;}});Roo.HtmlEditorCore.white=['AREA','BR','IMG','INPUT','HR','WBR','ADDRESS','BLOCKQUOTE','CENTER','DD','DIR','DIV','DL','DT','H1','H2','H3','H4','H5','H6','HR','ISINDEX','LISTING','MARQUEE','MENU','MULTICOL','OL','P','PLAINTEXT','PRE','TABLE','UL','XMP','CAPTION','COL','COLGROUP','TBODY','TD','TFOOT','TH','THEAD','TR','DIR','MENU','OL','UL','DL','EMBED','OBJECT'];
+Roo.HtmlEditorCore.black=['APPLET','BASE','BASEFONT','BGSOUND','BLINK','BODY','FRAME','FRAMESET','HEAD','HTML','ILAYER','IFRAME','LAYER','LINK','META','OBJECT','SCRIPT','STYLE','TITLE','XML','COLGROUP','COL'];Roo.HtmlEditorCore.clean=['SCRIPT','STYLE','TITLE','XML'];
+Roo.HtmlEditorCore.tag_remove=['FONT','TBODY'];Roo.HtmlEditorCore.ablack=['on'];Roo.HtmlEditorCore.aclean=['action','background','codebase','dynsrc','href','lowsrc'];Roo.HtmlEditorCore.pwhite=['http','https','mailto'];Roo.HtmlEditorCore.cwhite=[];Roo.HtmlEditorCore.cblack=[];
 
 // Roo/bootstrap/form/HtmlEditor.js
 Roo.bootstrap.form.HtmlEditor=function(A){Roo.bootstrap.form.HtmlEditor.superclass.constructor.call(this,A);if(!this.toolbars){this.toolbars=[];}this.editorcore=new Roo.HtmlEditorCore(Roo.apply({owner:this},A));this.addEvents({initialize:true,activate:true,beforesync:true,beforepush:true,sync:true,push:true,editmodechange:true,editorevent:true,firstfocus:true,autosave:true,savedpreview:true}
@@ -1241,6 +1371,8 @@ return;}this.raphael=Raphael(this.el.dom);},load:function(A,B,C){this.raphael.cl
 ,500,"bounce");if(this.label){this.label[0].animate({r:5},500,"bounce");this.label[1].attr({"font-weight":400});}};switch(A){case 'bar':this.raphael.barchart(this.g_x,this.g_y,this.g_width,this.g_height,B,C).hover(D,E);break;case 'hbar':this.raphael.hbarchart(this.g_x,this.g_y,this.g_width,this.g_height,B,C).hover(D,E);
 break;case 'pie':this.raphael.piechart(this.g_x,this.g_y,this.g_r,B,C).hover(F,G);break;}if(this.title){this.raphael.text(this.title.x,this.title.y,this.title.text).attr(this.title.attr);}},setTitle:function(o){this.title=o;},initEvents:function(){if(!this.href){this.el.on('click',this.onClick,this);
 }},onClick:function(e){Roo.log('img onclick');this.fireEvent('click',this,e);}});
+// Roo/bootstrap/dash/namespace.js
+Roo.bootstrap.dash={};
 // Roo/bootstrap/dash/NumberBox.js
 Roo.bootstrap.dash=Roo.bootstrap.dash||{};Roo.bootstrap.dash.NumberBox=function(A){Roo.bootstrap.dash.NumberBox.superclass.constructor.call(this,A);};Roo.extend(Roo.bootstrap.dash.NumberBox,Roo.bootstrap.Component,{headline:'',content:'',icon:'',footer:'',fhref:'',ficon:'',getAutoCreate:function(){var A={tag:'div',cls:'small-box ',cn:[{tag:'div',cls:'inner',cn:[{tag:'h3',cls:'roo-headline',html:this.headline}
 ,{tag:'p',cls:'roo-content',html:this.content}]}]};if(this.icon){A.cn.push({tag:'div',cls:'icon',cn:[{tag:'i',cls:'ion '+this.icon}]});}if(this.footer){var B={tag:'a',cls:'small-box-footer',href:this.fhref||'#',html:this.footer};A.cn.push(B);}return A;},onRender:function(ct,A){Roo.bootstrap.dash.NumberBox.superclass.onRender.call(this,ct,A);
index d64393b..e655f12 100644 (file)
@@ -691,7 +691,7 @@ Roo.factory(conf, Roo.data);
                                        return 'xs'
                        }
                        
-               }
+               } 
         
     });
 
@@ -700,9 +700,8 @@ Roo.factory(conf, Roo.data);
 
 Roo.namespace("Roo", "Roo.util", "Roo.grid", "Roo.dd", "Roo.tree", "Roo.data",
                 "Roo.form", "Roo.menu", "Roo.state", "Roo.lib", "Roo.layout",
-                "Roo.app", "Roo.ux",
-                "Roo.bootstrap",
-                "Roo.bootstrap.dash");
+                "Roo.app", "Roo.ux" 
+               );
 /*
  * Based on:
  * Ext JS Library 1.1.1
@@ -955,6 +954,16 @@ String.prototype.unicodeClean = function () {
     );
 };
   
+
+/**
+  * Make the first letter of a string uppercase
+  *
+  * @return {String} The new string.
+  */
+String.prototype.toUpperCaseFirst = function () {
+    return this.charAt(0).toUpperCase() + this.slice(1);
+};  
+  
 /*
  * Based on:
  * Ext JS Library 1.1.1
@@ -1046,30 +1055,50 @@ Roo.applyIf(Array.prototype, {
      */
     equals : function(b)
     {
-        // https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
-       if (this === b) {
-           return true;
-        }
-       if (b == null) {
-           return false;
-       }
-       if (this.length !== b.length) {
-           return false;
-       }
-      
-       // sort?? a.sort().equals(b.sort());
+            // https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
+        if (this === b) {
+            return true;
+        }
+        if (b == null) {
+            return false;
+        }
+        if (this.length !== b.length) {
+            return false;
+        }
+          
+        // sort?? a.sort().equals(b.sort());
+          
+        for (var i = 0; i < this.length; ++i) {
+            if (this[i] !== b[i]) {
+            return false;
+            }
+        }
+        return true;
+    } 
+    
+    
+    
+    
+});
+
+Roo.applyIf(Array, {
+ /**
+     * from
+     * @static
+     * @param {Array} o Or Array like object (eg. nodelist)
+     * @returns {Array} 
+     */
+    from : function(o)
+    {
+        var ret= [];
+    
+        for (var i =0; i < o.length; i++) { 
+            ret[i] = o[i];
+        }
+        return ret;
       
-       for (var i = 0; i < this.length; ++i) {
-           if (this[i] !== b[i]) {
-               return false;
-           }
-       }
-       return true;
     }
 });
-
-
 /*
  * Based on:
  * Ext JS Library 1.1.1
@@ -1373,17 +1402,17 @@ Date.createParser = function(format) {
     }
 
     code += "if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"
-        + "{v = new Date(y, m, d, h, i, s);}\n"
+        + "{v = new Date(y, m, d, h, i, s); v.setFullYear(y);}\n"
         + "else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"
-        + "{v = new Date(y, m, d, h, i);}\n"
+        + "{v = new Date(y, m, d, h, i); v.setFullYear(y);}\n"
         + "else if (y >= 0 && m >= 0 && d > 0 && h >= 0)\n"
-        + "{v = new Date(y, m, d, h);}\n"
+        + "{v = new Date(y, m, d, h); v.setFullYear(y);}\n"
         + "else if (y >= 0 && m >= 0 && d > 0)\n"
-        + "{v = new Date(y, m, d);}\n"
+        + "{v = new Date(y, m, d); v.setFullYear(y);}\n"
         + "else if (y >= 0 && m >= 0)\n"
-        + "{v = new Date(y, m);}\n"
+        + "{v = new Date(y, m); v.setFullYear(y);}\n"
         + "else if (y >= 0)\n"
-        + "{v = new Date(y);}\n"
+        + "{v = new Date(y); v.setFullYear(y);}\n"
         + "}return (v && (z || o))?\n" // favour UTC offset over GMT offset
         + "    ((z)? v.add(Date.SECOND, (v.getTimezoneOffset() * 60) + (z*1)) :\n" // reset to UTC, then add offset
         + "        v.add(Date.HOUR, (v.getGMTOffset() / 100) + (o / -100))) : v\n" // reset to GMT, then add offset
@@ -1443,7 +1472,7 @@ Date.formatCodeToRegex = function(character, currentGroup) {
             s:"(\\d{1,2})"}; // Numeric representation of a month, without leading zeros
     case "m":
         return {g:1,
-            c:"m = parseInt(results[" + currentGroup + "], 10) - 1;\n",
+            c:"m = Math.max(0,parseInt(results[" + currentGroup + "], 10) - 1);\n",
             s:"(\\d{2})"}; // Numeric representation of a month, with leading zeros
     case "t":
         return {g:0,
@@ -4878,7 +4907,468 @@ Roo.lib.Easing = {
             }
         };
     })();
-/*
+/**
+ * Originally based of this code... - refactored for Roo...
+ * https://github.com/aaalsaleh/undo-manager
+ * undo-manager.js
+ * @author  Abdulrahman Alsaleh 
+ * @copyright 2015 Abdulrahman Alsaleh 
+ * @license  MIT License (c) 
+ *
+ * Hackily modifyed by alan@roojs.com
+ *
+ *
+ *  
+ *
+ *  TOTALLY UNTESTED...
+ *
+ *  Documentation to be done....
+ */
+
+/**
+* @class Roo.lib.UndoManager
+* An undo manager implementation in JavaScript. It follows the W3C UndoManager and DOM Transaction
+* Draft and the undocumented and disabled Mozilla Firefox's UndoManager implementation.
+
+ * Usage:
+ * <pre><code>
+
+
+editor.undoManager = new Roo.lib.UndoManager(1000, editor);
+</code></pre>
+
+* For more information see this blog post with examples:
+*  <a href="http://www.cnitblog.com/seeyeah/archive/2011/12/30/38728.html/">DomHelper
+     - Create Elements using DOM, HTML fragments and Templates</a>. 
+* @constructor
+* @param {Number} limit how far back to go ... use 1000?
+* @param {Object} scope usually use document..
+*/
+
+Roo.lib.UndoManager = function (limit, undoScopeHost)
+{
+    this.stack = [];
+    this.limit = limit;
+    this.scope = undoScopeHost;
+    this.fireEvent = typeof CustomEvent != 'undefined' && undoScopeHost && undoScopeHost.dispatchEvent;
+    if (this.fireEvent) {
+        this.bindEvents();
+    }
+    this.reset();
+    
+};
+        
+Roo.lib.UndoManager.prototype = {
+    
+    limit : false,
+    stack : false,
+    scope :  false,
+    fireEvent : false,
+    position : 0,
+    length : 0,
+    
+    
+     /**
+     * To push and execute a transaction, the method undoManager.transact
+     * must be called by passing a transaction object as the first argument, and a merge
+     * flag as the second argument. A transaction object has the following properties:
+     *
+     * Usage:
+<pre><code>
+undoManager.transact({
+    label: 'Typing',
+    execute: function() { ... },
+    undo: function() { ... },
+    // redo same as execute
+    redo: function() { this.execute(); }
+}, false);
+
+// merge transaction
+undoManager.transact({
+    label: 'Typing',
+    execute: function() { ... },  // this will be run...
+    undo: function() { ... }, // what to do when undo is run.
+    // redo same as execute
+    redo: function() { this.execute(); }
+}, true); 
+</code></pre> 
+     *
+     * 
+     * @param {Object} transaction The transaction to add to the stack.
+     * @return {String} The HTML fragment
+     */
+    
+    
+    transact : function (transaction, merge)
+    {
+        if (arguments.length < 2) {
+            throw new TypeError('Not enough arguments to UndoManager.transact.');
+        }
+
+        transaction.execute();
+
+        this.stack.splice(0, this.position);
+        if (merge && this.length) {
+            this.stack[0].push(transaction);
+        } else {
+            this.stack.unshift([transaction]);
+        }
+    
+        this.position = 0;
+
+        if (this.limit && this.stack.length > this.limit) {
+            this.length = this.stack.length = this.limit;
+        } else {
+            this.length = this.stack.length;
+        }
+
+        if (this.fireEvent) {
+            this.scope.dispatchEvent(
+                new CustomEvent('DOMTransaction', {
+                    detail: {
+                        transactions: this.stack[0].slice()
+                    },
+                    bubbles: true,
+                    cancelable: false
+                })
+            );
+        }
+        
+        //Roo.log("transaction: pos:" + this.position + " len: " + this.length + " slen:" + this.stack.length);
+      
+        
+    },
+
+    undo : function ()
+    {
+        //Roo.log("undo: pos:" + this.position + " len: " + this.length + " slen:" + this.stack.length);
+        
+        if (this.position < this.length) {
+            for (var i = this.stack[this.position].length - 1; i >= 0; i--) {
+                this.stack[this.position][i].undo();
+            }
+            this.position++;
+
+            if (this.fireEvent) {
+                this.scope.dispatchEvent(
+                    new CustomEvent('undo', {
+                        detail: {
+                            transactions: this.stack[this.position - 1].slice()
+                        },
+                        bubbles: true,
+                        cancelable: false
+                    })
+                );
+            }
+        }
+    },
+
+    redo : function ()
+    {
+        if (this.position > 0) {
+            for (var i = 0, n = this.stack[this.position - 1].length; i < n; i++) {
+                this.stack[this.position - 1][i].redo();
+            }
+            this.position--;
+
+            if (this.fireEvent) {
+                this.scope.dispatchEvent(
+                    new CustomEvent('redo', {
+                        detail: {
+                            transactions: this.stack[this.position].slice()
+                        },
+                        bubbles: true,
+                        cancelable: false
+                    })
+                );
+            }
+        }
+    },
+
+    item : function (index)
+    {
+        if (index >= 0 && index < this.length) {
+            return this.stack[index].slice();
+        }
+        return null;
+    },
+
+    clearUndo : function () {
+        this.stack.length = this.length = this.position;
+    },
+
+    clearRedo : function () {
+        this.stack.splice(0, this.position);
+        this.position = 0;
+        this.length = this.stack.length;
+    },
+    /**
+     * Reset the undo - probaly done on load to clear all history.
+     */
+    reset : function()
+    {
+        this.stack = [];
+        this.position = 0;
+        this.length = 0;
+        this.current_html = this.scope.innerHTML;
+        if (this.timer !== false) {
+            clearTimeout(this.timer);
+        }
+        this.timer = false;
+        this.merge = false;
+        this.addEvent();
+        
+    },
+    current_html : '',
+    timer : false,
+    merge : false,
+    
+    
+    // this will handle the undo/redo on the element.?
+    bindEvents : function()
+    {
+        var el  = this.scope;
+        el.undoManager = this;
+        
+        
+        this.scope.addEventListener('keydown', function(e) {
+            if ((e.ctrlKey || e.metaKey) && e.keyCode === 90) {
+                if (e.shiftKey) {
+                    el.undoManager.redo(); // Ctrl/Command + Shift + Z
+                } else {
+                    el.undoManager.undo(); // Ctrl/Command + Z
+                }
+        
+                e.preventDefault();
+            }
+        });
+        /// ignore keyup..
+        this.scope.addEventListener('keyup', function(e) {
+            if ((e.ctrlKey || e.metaKey) && e.keyCode === 90) {
+                e.preventDefault();
+            }
+        });
+        
+        
+        
+        var t = this;
+        
+        el.addEventListener('input', function(e) {
+            if(el.innerHTML == t.current_html) {
+                return;
+            }
+            // only record events every second.
+            if (t.timer !== false) {
+               clearTimeout(t.timer);
+               t.timer = false;
+            }
+            t.timer = setTimeout(function() { t.merge = false; }, 1000);
+            
+            t.addEvent(t.merge);
+            t.merge = true; // ignore changes happening every second..
+        });
+       },
+    /**
+     * Manually add an event.
+     * Normall called without arguements - and it will just get added to the stack.
+     * 
+     */
+    
+    addEvent : function(merge)
+    {
+        //Roo.log("undomanager +" + (merge ? 'Y':'n'));
+        // not sure if this should clear the timer 
+        merge = typeof(merge) == 'undefined' ? false : merge; 
+        
+        this.scope.undoManager.transact({
+            scope : this.scope,
+            oldHTML: this.current_html,
+            newHTML: this.scope.innerHTML,
+            // nothing to execute (content already changed when input is fired)
+            execute: function() { },
+            undo: function() {
+                this.scope.innerHTML = this.current_html = this.oldHTML;
+            },
+            redo: function() {
+                this.scope.innerHTML = this.current_html = this.newHTML;
+            }
+        }, false); //merge);
+        
+        this.merge = merge;
+        
+        this.current_html = this.scope.innerHTML;
+    }
+    
+    
+     
+    
+    
+    
+};
+/**
+ * @class Roo.lib.Range
+ * @constructor
+ * This is a toolkit, normally used to copy features into a Dom Range element
+ * Roo.lib.Range.wrap(x);
+ *
+ *
+ *
+ */
+Roo.lib.Range = function() { };
+
+/**
+ * Wrap a Dom Range object, to give it new features...
+ * @static
+ * @param {Range} the range to wrap
+ */
+Roo.lib.Range.wrap = function(r) {
+    return Roo.apply(r, Roo.lib.Range.prototype);
+};
+/**
+ * find a parent node eg. LI / OL
+ * @param {string|Array} node name or array of nodenames
+ * @return {DomElement|false}
+ */
+Roo.apply(Roo.lib.Range.prototype,
+{
+    
+    closest : function(str)
+    {
+        if (typeof(str) != 'string') {
+            // assume it's a array.
+            for(var i = 0;i < str.length;i++) {
+                var r = this.closest(str[i]);
+                if (r !== false) {
+                    return r;
+                }
+                
+            }
+            return false;
+        }
+        str = str.toLowerCase();
+        var n = this.commonAncestorContainer; // might not be a node
+        while (n.nodeType != 1) {
+            n = n.parentNode;
+        }
+        
+        if (n.nodeName.toLowerCase() == str ) {
+            return n;
+        }
+        if (n.nodeName.toLowerCase() == 'body') {
+            return false;
+        }
+            
+        return n.closest(str) || false;
+        
+    },
+    cloneRange : function()
+    {
+        return Roo.lib.Range.wrap(Range.prototype.cloneRange.call(this));
+    }
+});/**
+ * @class Roo.lib.Selection
+ * @constructor
+ * This is a toolkit, normally used to copy features into a Dom Selection element
+ * Roo.lib.Selection.wrap(x);
+ *
+ *
+ *
+ */
+Roo.lib.Selection = function() { };
+
+/**
+ * Wrap a Dom Range object, to give it new features...
+ * @static
+ * @param {Range} the range to wrap
+ */
+Roo.lib.Selection.wrap = function(r, doc) {
+    Roo.apply(r, Roo.lib.Selection.prototype);
+    r.ownerDocument = doc; // usefull so we dont have to keep referening to it.
+    return r;
+};
+/**
+ * find a parent node eg. LI / OL
+ * @param {string|Array} node name or array of nodenames
+ * @return {DomElement|false}
+ */
+Roo.apply(Roo.lib.Selection.prototype,
+{
+    /**
+     * the owner document
+     */
+    ownerDocument : false,
+    
+    getRangeAt : function(n)
+    {
+        return Roo.lib.Range.wrap(Selection.prototype.getRangeAt.call(this,n));
+    },
+    
+    /**
+     * insert node at selection 
+     * @param {DomElement|string} node
+     * @param {string} cursor (after|in|none) where to place the cursor after inserting.
+     */
+    insertNode: function(node, cursor)
+    {
+        if (typeof(node) == 'string') {
+            node = this.ownerDocument.createElement(node);
+            if (cursor == 'in') {
+                node.innerHTML = '&nbsp;';
+            }
+        }
+        
+        var range = this.getRangeAt(0);
+        
+        if (this.type != 'Caret') {
+            range.deleteContents();
+        }
+        var sn = node.childNodes[0]; // select the contents.
+
+        
+        
+        range.insertNode(node);
+        if (cursor == 'after') {
+            node.insertAdjacentHTML('afterend', '&nbsp;');
+            sn = node.nextSibling;
+        }
+        
+        if (cursor == 'none') {
+            return;
+        }
+        
+        this.cursorText(sn);
+    },
+    
+    cursorText : function(n)
+    {
+       
+        //var range = this.getRangeAt(0);
+        range = Roo.lib.Range.wrap(new Range());
+        //range.selectNode(n);
+        
+        var ix = Array.from(n.parentNode.childNodes).indexOf(n);
+        range.setStart(n.parentNode,ix);
+        range.setEnd(n.parentNode,ix+1);
+        //range.collapse(false);
+         
+        this.removeAllRanges();
+        this.addRange(range);
+        
+        Roo.log([n, range, this,this.baseOffset,this.extentOffset, this.type]);
+    },
+    cursorAfter : function(n)
+    {
+        if (!n.nextSibling || n.nextSibling.nodeValue != '&nbsp;') {
+            n.insertAdjacentHTML('afterend', '&nbsp;');
+        }
+        this.cursorText (n.nextSibling);
+    }
+        
+    
+});/*
  * Based on:
  * Ext JS Library 1.1.1
  * Copyright(c) 2006-2007, Ext JS, LLC.
@@ -5125,212 +5615,320 @@ Roo.DomHelper = function(){
         el.insertBefore(node, before);
         return node;
     };
+    
+    // this is a bit like the react update code...
+    // 
+    
+    var updateNode = function(from, to)
+    {
+        // should we handle non-standard elements?
+        Roo.log(["UpdateNode" , from, to]);
+        if (from.nodeType != to.nodeType) {
+            Roo.log(["ReplaceChild - mismatch notType" , to, from ]);
+            from.parentNode.replaceChild(to, from);
+        }
+        
+        if (from.nodeType == 3) {
+            // assume it's text?!
+            if (from.data == to.data) {
+                return;
+            }
+            from.data = to.data;
+            return;
+        }
+        if (!from.parentNode) {
+            // not sure why this is happening?
+            return;
+        }
+        // assume 'to' doesnt have '1/3 nodetypes!
+        // not sure why, by from, parent node might not exist?
+        if (from.nodeType !=1 || from.tagName != to.tagName) {
+            Roo.log(["ReplaceChild" , from, to ]);
+            
+            from.parentNode.replaceChild(to, from);
+            return;
+        }
+        // compare attributes
+        var ar = Array.from(from.attributes);
+        for(var i = 0; i< ar.length;i++) {
+            if (to.hasAttribute(ar[i].name)) {
+                continue;
+            }
+            if (ar[i].name == 'id') { // always keep ids?
+               continue;
+            }
+            //if (ar[i].name == 'style') {
+            //   throw "style removed?";
+            //}
+            Roo.log("removeAttribute" + ar[i].name);
+            from.removeAttribute(ar[i].name);
+        }
+        ar = to.attributes;
+        for(var i = 0; i< ar.length;i++) {
+            if (from.getAttribute(ar[i].name) == to.getAttribute(ar[i].name)) {
+                Roo.log("skipAttribute " + ar[i].name  + '=' + to.getAttribute(ar[i].name));
+                continue;
+            }
+            Roo.log("updateAttribute " + ar[i].name + '=>' + to.getAttribute(ar[i].name));
+            from.setAttribute(ar[i].name, to.getAttribute(ar[i].name));
+        }
+        // children
+        var far = Array.from(from.childNodes);
+        var tar = Array.from(to.childNodes);
+        // if the lengths are different.. then it's probably a editable content change, rather than
+        // a change of the block definition..
+        
+        // this did notwork , as our rebuilt nodes did not include ID's so did not match at all.
+         /*if (from.innerHTML == to.innerHTML) {
+            return;
+        }
+        if (far.length != tar.length) {
+            from.innerHTML = to.innerHTML;
+            return;
+        }
+        */
+        
+        for(var i = 0; i < Math.max(tar.length, far.length); i++) {
+            if (i >= far.length) {
+                from.appendChild(tar[i]);
+                Roo.log(["add", tar[i]]);
+                
+            } else if ( i  >= tar.length) {
+                from.removeChild(far[i]);
+                Roo.log(["remove", far[i]]);
+            } else {
+                
+                updateNode(far[i], tar[i]);
+            }    
+        }
+        
+        
+        
+        
+    };
+    
+    
 
     return {
-    /** True to force the use of DOM instead of html fragments @type Boolean */
-    useDom : false,
-
-    /**
-     * Returns the markup for the passed Element(s) config
-     * @param {Object} o The Dom object spec (and children)
-     * @return {String}
-     */
-    markup : function(o){
-        return createHtml(o);
-    },
-
-    /**
-     * Applies a style specification to an element
-     * @param {String/HTMLElement} el The element to apply styles to
-     * @param {String/Object/Function} styles A style specification string eg "width:100px", or object in the form {width:"100px"}, or
-     * a function which returns such a specification.
-     */
-    applyStyles : function(el, styles){
-        if(styles){
-           el = Roo.fly(el);
-           if(typeof styles == "string"){
-               var re = /\s?([a-z\-]*)\:\s?([^;]*);?/gi;
-               var matches;
-               while ((matches = re.exec(styles)) != null){
-                   el.setStyle(matches[1], matches[2]);
-               }
-           }else if (typeof styles == "object"){
-               for (var style in styles){
-                  el.setStyle(style, styles[style]);
+        /** True to force the use of DOM instead of html fragments @type Boolean */
+        useDom : false,
+    
+        /**
+         * Returns the markup for the passed Element(s) config
+         * @param {Object} o The Dom object spec (and children)
+         * @return {String}
+         */
+        markup : function(o){
+            return createHtml(o);
+        },
+    
+        /**
+         * Applies a style specification to an element
+         * @param {String/HTMLElement} el The element to apply styles to
+         * @param {String/Object/Function} styles A style specification string eg "width:100px", or object in the form {width:"100px"}, or
+         * a function which returns such a specification.
+         */
+        applyStyles : function(el, styles){
+            if(styles){
+               el = Roo.fly(el);
+               if(typeof styles == "string"){
+                   var re = /\s?([a-z\-]*)\:\s?([^;]*);?/gi;
+                   var matches;
+                   while ((matches = re.exec(styles)) != null){
+                       el.setStyle(matches[1], matches[2]);
+                   }
+               }else if (typeof styles == "object"){
+                   for (var style in styles){
+                      el.setStyle(style, styles[style]);
+                   }
+               }else if (typeof styles == "function"){
+                    Roo.DomHelper.applyStyles(el, styles.call());
                }
-           }else if (typeof styles == "function"){
-                Roo.DomHelper.applyStyles(el, styles.call());
-           }
-        }
-    },
-
-    /**
-     * Inserts an HTML fragment into the Dom
-     * @param {String} where Where to insert the html in relation to el - beforeBegin, afterBegin, beforeEnd, afterEnd.
-     * @param {HTMLElement} el The context element
-     * @param {String} html The HTML fragmenet
-     * @return {HTMLElement} The new node
-     */
-    insertHtml : function(where, el, html){
-        where = where.toLowerCase();
-        if(el.insertAdjacentHTML){
-            if(tableRe.test(el.tagName)){
-                var rs;
-                if(rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html)){
-                    return rs;
-                }
             }
+        },
+    
+        /**
+         * Inserts an HTML fragment into the Dom
+         * @param {String} where Where to insert the html in relation to el - beforeBegin, afterBegin, beforeEnd, afterEnd.
+         * @param {HTMLElement} el The context element
+         * @param {String} html The HTML fragmenet
+         * @return {HTMLElement} The new node
+         */
+        insertHtml : function(where, el, html){
+            where = where.toLowerCase();
+            if(el.insertAdjacentHTML){
+                if(tableRe.test(el.tagName)){
+                    var rs;
+                    if(rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html)){
+                        return rs;
+                    }
+                }
+                switch(where){
+                    case "beforebegin":
+                        el.insertAdjacentHTML('BeforeBegin', html);
+                        return el.previousSibling;
+                    case "afterbegin":
+                        el.insertAdjacentHTML('AfterBegin', html);
+                        return el.firstChild;
+                    case "beforeend":
+                        el.insertAdjacentHTML('BeforeEnd', html);
+                        return el.lastChild;
+                    case "afterend":
+                        el.insertAdjacentHTML('AfterEnd', html);
+                        return el.nextSibling;
+                }
+                throw 'Illegal insertion point -> "' + where + '"';
+            }
+            var range = el.ownerDocument.createRange();
+            var frag;
             switch(where){
-                case "beforebegin":
-                    el.insertAdjacentHTML('BeforeBegin', html);
+                 case "beforebegin":
+                    range.setStartBefore(el);
+                    frag = range.createContextualFragment(html);
+                    el.parentNode.insertBefore(frag, el);
                     return el.previousSibling;
-                case "afterbegin":
-                    el.insertAdjacentHTML('AfterBegin', html);
-                    return el.firstChild;
+                 case "afterbegin":
+                    if(el.firstChild){
+                        range.setStartBefore(el.firstChild);
+                        frag = range.createContextualFragment(html);
+                        el.insertBefore(frag, el.firstChild);
+                        return el.firstChild;
+                    }else{
+                        el.innerHTML = html;
+                        return el.firstChild;
+                    }
                 case "beforeend":
-                    el.insertAdjacentHTML('BeforeEnd', html);
-                    return el.lastChild;
+                    if(el.lastChild){
+                        range.setStartAfter(el.lastChild);
+                        frag = range.createContextualFragment(html);
+                        el.appendChild(frag);
+                        return el.lastChild;
+                    }else{
+                        el.innerHTML = html;
+                        return el.lastChild;
+                    }
                 case "afterend":
-                    el.insertAdjacentHTML('AfterEnd', html);
-                    return el.nextSibling;
-            }
-            throw 'Illegal insertion point -> "' + where + '"';
-        }
-        var range = el.ownerDocument.createRange();
-        var frag;
-        switch(where){
-             case "beforebegin":
-                range.setStartBefore(el);
-                frag = range.createContextualFragment(html);
-                el.parentNode.insertBefore(frag, el);
-                return el.previousSibling;
-             case "afterbegin":
-                if(el.firstChild){
-                    range.setStartBefore(el.firstChild);
+                    range.setStartAfter(el);
                     frag = range.createContextualFragment(html);
-                    el.insertBefore(frag, el.firstChild);
-                    return el.firstChild;
-                }else{
-                    el.innerHTML = html;
-                    return el.firstChild;
+                    el.parentNode.insertBefore(frag, el.nextSibling);
+                    return el.nextSibling;
                 }
-            case "beforeend":
-                if(el.lastChild){
-                    range.setStartAfter(el.lastChild);
-                    frag = range.createContextualFragment(html);
-                    el.appendChild(frag);
-                    return el.lastChild;
-                }else{
-                    el.innerHTML = html;
-                    return el.lastChild;
+                throw 'Illegal insertion point -> "' + where + '"';
+        },
+    
+        /**
+         * Creates new Dom element(s) and inserts them before el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        insertBefore : function(el, o, returnElement){
+            return this.doInsert(el, o, returnElement, "beforeBegin");
+        },
+    
+        /**
+         * Creates new Dom element(s) and inserts them after el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object} o The Dom object spec (and children)
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        insertAfter : function(el, o, returnElement){
+            return this.doInsert(el, o, returnElement, "afterEnd", "nextSibling");
+        },
+    
+        /**
+         * Creates new Dom element(s) and inserts them as the first child of el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        insertFirst : function(el, o, returnElement){
+            return this.doInsert(el, o, returnElement, "afterBegin");
+        },
+    
+        // private
+        doInsert : function(el, o, returnElement, pos, sibling){
+            el = Roo.getDom(el);
+            var newNode;
+            if(this.useDom || o.ns){
+                newNode = createDom(o, null);
+                el.parentNode.insertBefore(newNode, sibling ? el[sibling] : el);
+            }else{
+                var html = createHtml(o);
+                newNode = this.insertHtml(pos, el, html);
+            }
+            return returnElement ? Roo.get(newNode, true) : newNode;
+        },
+    
+        /**
+         * Creates new Dom element(s) and appends them to el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        append : function(el, o, returnElement){
+            el = Roo.getDom(el);
+            var newNode;
+            if(this.useDom || o.ns){
+                newNode = createDom(o, null);
+                el.appendChild(newNode);
+            }else{
+                var html = createHtml(o);
+                newNode = this.insertHtml("beforeEnd", el, html);
+            }
+            return returnElement ? Roo.get(newNode, true) : newNode;
+        },
+    
+        /**
+         * Creates new Dom element(s) and overwrites the contents of el with them
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        overwrite : function(el, o, returnElement)
+        {
+            el = Roo.getDom(el);
+            if (o.ns) {
+              
+                while (el.childNodes.length) {
+                    el.removeChild(el.firstChild);
                 }
-            case "afterend":
-                range.setStartAfter(el);
-                frag = range.createContextualFragment(html);
-                el.parentNode.insertBefore(frag, el.nextSibling);
-                return el.nextSibling;
+                createDom(o, el);
+            } else {
+                el.innerHTML = createHtml(o);   
             }
-            throw 'Illegal insertion point -> "' + where + '"';
-    },
-
-    /**
-     * Creates new Dom element(s) and inserts them before el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    insertBefore : function(el, o, returnElement){
-        return this.doInsert(el, o, returnElement, "beforeBegin");
-    },
-
-    /**
-     * Creates new Dom element(s) and inserts them after el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object} o The Dom object spec (and children)
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    insertAfter : function(el, o, returnElement){
-        return this.doInsert(el, o, returnElement, "afterEnd", "nextSibling");
-    },
-
-    /**
-     * Creates new Dom element(s) and inserts them as the first child of el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    insertFirst : function(el, o, returnElement){
-        return this.doInsert(el, o, returnElement, "afterBegin");
-    },
-
-    // private
-    doInsert : function(el, o, returnElement, pos, sibling){
-        el = Roo.getDom(el);
-        var newNode;
-        if(this.useDom || o.ns){
-            newNode = createDom(o, null);
-            el.parentNode.insertBefore(newNode, sibling ? el[sibling] : el);
-        }else{
-            var html = createHtml(o);
-            newNode = this.insertHtml(pos, el, html);
-        }
-        return returnElement ? Roo.get(newNode, true) : newNode;
-    },
-
-    /**
-     * Creates new Dom element(s) and appends them to el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    append : function(el, o, returnElement){
-        el = Roo.getDom(el);
-        var newNode;
-        if(this.useDom || o.ns){
-            newNode = createDom(o, null);
-            el.appendChild(newNode);
-        }else{
+            
+            return returnElement ? Roo.get(el.firstChild, true) : el.firstChild;
+        },
+    
+        /**
+         * Creates a new Roo.DomHelper.Template from the Dom object spec
+         * @param {Object} o The Dom object spec (and children)
+         * @return {Roo.DomHelper.Template} The new template
+         */
+        createTemplate : function(o){
             var html = createHtml(o);
-            newNode = this.insertHtml("beforeEnd", el, html);
-        }
-        return returnElement ? Roo.get(newNode, true) : newNode;
-    },
-
-    /**
-     * Creates new Dom element(s) and overwrites the contents of el with them
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    overwrite : function(el, o, returnElement){
-        el = Roo.getDom(el);
-        if (o.ns) {
-          
-            while (el.childNodes.length) {
-                el.removeChild(el.firstChild);
-            }
-            createDom(o, el);
-        } else {
-            el.innerHTML = createHtml(o);   
+            return new Roo.Template(html);
+        },
+         /**
+         * Updates the first element with the spec from the o (replacing if necessary)
+         * This iterates through the children, and updates attributes / children etc..
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         */
+        
+        update : function(el, o)
+        {
+            updateNode(Roo.getDom(el), createDom(o));
+            
         }
         
-        return returnElement ? Roo.get(el.firstChild, true) : el.firstChild;
-    },
-
-    /**
-     * Creates a new Roo.DomHelper.Template from the Dom object spec
-     * @param {Object} o The Dom object spec (and children)
-     * @return {Roo.DomHelper.Template} The new template
-     */
-    createTemplate : function(o){
-        var html = createHtml(o);
-        return new Roo.Template(html);
-    }
+        
     };
 }();
 /*
index 279a52a..051147b 100644 (file)
@@ -18,7 +18,7 @@ i<l;i++){var a=as[i];if(a instanceof Array){r=r.concat(a);}else if(a.length!==un
 },destroy:function(){for(var i=0,a=arguments,S=a.length;i<S;i++){var as=a[i];if(as){if(as.dom){as.removeAllListeners();as.remove();continue;}if(typeof as.purgeListeners=='function'){as.purgeListeners();}if(typeof as.destroy=='function'){as.destroy();}}}},type:function(o){if(o===undefined||o===null){return false;
 }if(o.htmlElement){return 'element';}var t=typeof o;if(t=='object'&&o.nodeName){switch(o.nodeType){case 1:return 'element';case 3:return (/\S/).test(o.nodeValue)?'textnode':'whitespace';}}if(t=='object'||t=='function'){switch(o.constructor){case Array:return 'array';
 case RegExp:return 'regexp';}if(typeof o.length=='number'&&typeof o.item=='function'){return 'nodelist';}}return t;},isEmpty:function(v,S){return v===null||v===undefined||(!S?v==='':false);},isOpera:C,isSafari:D,isFirefox:E,isIE:F,isIE7:G,isIE11:H,isEdge:I,isGecko:J,isBorderBox:K,isWindows:L,isLinux:N,isMac:M,isIOS:P,isAndroid:Q,isTouch:R,useShims:((F&&!G)||(J&&M)),selectNode:function(S,T){var U=Roo.DomQuery.selectNode(S,T);
-return U?Roo.get(U):new Roo.Element(false);},getGridSize:function(){var w=Roo.lib.Dom.getViewWidth();switch(true){case w>1200:return 'xl';case w>992:return 'lg';case w>768:return 'md';case w>576:return 'sm';default:return 'xs'}}});})();Roo.namespace("Roo","Roo.util","Roo.grid","Roo.dd","Roo.tree","Roo.data","Roo.form","Roo.menu","Roo.state","Roo.lib","Roo.layout","Roo.app","Roo.ux","Roo.bootstrap","Roo.bootstrap.dash");
+return U?Roo.get(U):new Roo.Element(false);},getGridSize:function(){var w=Roo.lib.Dom.getViewWidth();switch(true){case w>1200:return 'xl';case w>992:return 'lg';case w>768:return 'md';case w>576:return 'sm';default:return 'xs'}}});})();Roo.namespace("Roo","Roo.util","Roo.grid","Roo.dd","Roo.tree","Roo.data","Roo.form","Roo.menu","Roo.state","Roo.lib","Roo.layout","Roo.app","Roo.ux");
 
 // Function.js
 (function(){if(Roo.isIE){function fnCleanUp(){var p=Function.prototype;delete p.createSequence;delete p.defer;delete p.createDelegate;delete p.createCallback;delete p.createInterceptor;window.detachEvent("onunload",fnCleanUp);}window.attachEvent("onunload",fnCleanUp);
@@ -29,13 +29,13 @@ E=E.concat(B);}else if(typeof C=="number"){E=Array.prototype.slice.call(argument
 // String.js
 Roo.applyIf(String,{escape:function(A){return A.replace(/('|\\)/g,"\\$1");},leftPad:function(A,B,ch){var C=new String(A);if(ch===null||ch===undefined||ch===''){ch=" ";}while(C.length<B){C=ch+C;}return C;},format:function(A){var B=Array.prototype.slice.call(arguments,1);
 return A.replace(/\{(\d+)\}/g,function(m,i){return Roo.util.Format.htmlEncode(B[i]);});}});String.prototype.toggle=function(A,B){return this==A?B:A;};String.prototype.unicodeClean=function(){return this.replace(/[\s\S]/g,function(A){if(A.charCodeAt()<256){return A;
-}try{encodeURIComponent(A);}catch(e){return '';}return A;});};
+}try{encodeURIComponent(A);}catch(e){return '';}return A;});};String.prototype.toUpperCaseFirst=function(){return this.charAt(0).toUpperCase()+this.slice(1);};
 // Number.js
 Roo.applyIf(Number.prototype,{constrain:function(A,B){return Math.min(Math.max(this,A),B);}});
 // Array.js
 Roo.applyIf(Array.prototype,{indexOf:function(o){for(var i=0,A=this.length;i<A;i++){if(this[i]==o){return i;}}return -1;},remove:function(o){var A=this.indexOf(o);if(A!=-1){this.splice(A,1);}},map:function(A){var B=this.length>>>0;if(typeof A!="function"){throw new TypeError();
 }var C=new Array(B);var D=arguments[1];for(var i=0;i<B;i++){if(i in this){C[i]=A.call(D,this[i],i,this);}}return C;},equals:function(b){if(this===b){return true;}if(b==null){return false;}if(this.length!==b.length){return false;}for(var i=0;i<this.length;
-++i){if(this[i]!==b[i]){return false;}}return true;}});
+++i){if(this[i]!==b[i]){return false;}}return true;}});Roo.applyIf(Array,{from:function(o){var A=[];for(var i=0;i<o.length;i++){A[i]=o[i];}return A;}});
 // Date.js
 Date.prototype.getElapsed=function(A){return Math.abs((A||new Date()).getTime()-this.getTime());};Date.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(A){if(Date.formatFunctions[A]==null){Date.createNewFormat(A);
 }var B=Date.formatFunctions[A];return this[B]();};Date.prototype.format=Date.prototype.dateFormat;Date.createNewFormat=function(A){var B="format"+Date.formatFunctions.count++;Date.formatFunctions[A]=B;var C="Date.prototype."+B+" = function(){return ";var D=false;
@@ -47,10 +47,10 @@ case "g":return "((this.getHours() % 12) ? this.getHours() % 12 : 12) + ";case "
 case "i":return "String.leftPad(this.getMinutes(), 2, '0') + ";case "s":return "String.leftPad(this.getSeconds(), 2, '0') + ";case "O":return "this.getGMTOffset() + ";case "P":return "this.getGMTColonOffset() + ";case "T":return "this.getTimezone() + ";case "Z":return "(this.getTimezoneOffset() * -60) + ";
 default:return "'"+String.escape(A)+"' + ";}};Date.parseDate=function(A,B){if(Date.parseFunctions[B]==null){Date.createParser(B);}var C=Date.parseFunctions[B];return Date[C](A);};Date.createParser=function(A){var B="parse"+Date.parseFunctions.count++;var C=Date.parseRegexes.length;
 var D=1;Date.parseFunctions[A]=B;var E="Date."+B+" = function(input){\n"+"var y = -1, m = -1, d = -1, h = -1, i = -1, s = -1, o, z, v;\n"+"var d = new Date();\n"+"y = d.getFullYear();\n"+"m = d.getMonth();\n"+"d = d.getDate();\n"+"if (typeof(input) !== 'string') { input = input.toString(); }\n"+"var results = input.match(Date.parseRegexes["+C+"]);\n"+"if (results && results.length > 0) {";
-var F="";var G=false;var ch='';for(var i=0;i<A.length;++i){ch=A.charAt(i);if(!G&&ch=="\\"){G=true;}else if(G){G=false;F+=String.escape(ch);}else{var H=Date.formatCodeToRegex(ch,D);D+=H.g;F+=H.s;if(H.g&&H.c){E+=H.c;}}}E+="if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"+"{v = new Date(y, m, d, h, i, s);}\n"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"+"{v = new Date(y, m, d, h, i);}\n"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0)\n"+"{v = new Date(y, m, d, h);}\n"+"else if (y >= 0 && m >= 0 && d > 0)\n"+"{v = new Date(y, m, d);}\n"+"else if (y >= 0 && m >= 0)\n"+"{v = new Date(y, m);}\n"+"else if (y >= 0)\n"+"{v = new Date(y);}\n"+"}return (v && (z || o))?\n"+"    ((z)? v.add(Date.SECOND, (v.getTimezoneOffset() * 60) + (z*1)) :\n"+"        v.add(Date.HOUR, (v.getGMTOffset() / 100) + (o / -100))) : v\n"+";}";
+var F="";var G=false;var ch='';for(var i=0;i<A.length;++i){ch=A.charAt(i);if(!G&&ch=="\\"){G=true;}else if(G){G=false;F+=String.escape(ch);}else{var H=Date.formatCodeToRegex(ch,D);D+=H.g;F+=H.s;if(H.g&&H.c){E+=H.c;}}}E+="if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"+"{v = new Date(y, m, d, h, i, s); v.setFullYear(y);}\n"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"+"{v = new Date(y, m, d, h, i); v.setFullYear(y);}\n"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0)\n"+"{v = new Date(y, m, d, h); v.setFullYear(y);}\n"+"else if (y >= 0 && m >= 0 && d > 0)\n"+"{v = new Date(y, m, d); v.setFullYear(y);}\n"+"else if (y >= 0 && m >= 0)\n"+"{v = new Date(y, m); v.setFullYear(y);}\n"+"else if (y >= 0)\n"+"{v = new Date(y); v.setFullYear(y);}\n"+"}return (v && (z || o))?\n"+"    ((z)? v.add(Date.SECOND, (v.getTimezoneOffset() * 60) + (z*1)) :\n"+"        v.add(Date.HOUR, (v.getGMTOffset() / 100) + (o / -100))) : v\n"+";}";
 Date.parseRegexes[C]=new RegExp("^"+F+"$");eval(E);};Date.formatCodeToRegex=function(A,B){switch(A){case "D":return {g:0,c:null,s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};case "j":return {g:1,c:"d = parseInt(results["+B+"], 10);\n",s:"(\\d{1,2})"};case "d":return {g:1,c:"d = parseInt(results["+B+"], 10);\n",s:"(\\d{2})"}
 ;case "l":return {g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case "S":return {g:0,c:null,s:"(?:st|nd|rd|th)"};case "w":return {g:0,c:null,s:"\\d"};case "z":return {g:0,c:null,s:"(?:\\d{1,3})"};case "W":return {g:0,c:null,s:"(?:\\d{2})"};case "F":return {g:1,c:"m = parseInt(Date.monthNumbers[results["+B+"].substring(0, 3)], 10);\n",s:"("+Date.monthNames.join("|")+")"}
-;case "M":return {g:1,c:"m = parseInt(Date.monthNumbers[results["+B+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case "n":return {g:1,c:"m = parseInt(results["+B+"], 10) - 1;\n",s:"(\\d{1,2})"};case "m":return {g:1,c:"m = parseInt(results["+B+"], 10) - 1;\n",s:"(\\d{2})"}
+;case "M":return {g:1,c:"m = parseInt(Date.monthNumbers[results["+B+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case "n":return {g:1,c:"m = parseInt(results["+B+"], 10) - 1;\n",s:"(\\d{1,2})"};case "m":return {g:1,c:"m = Math.max(0,parseInt(results["+B+"], 10) - 1);\n",s:"(\\d{2})"}
 ;case "t":return {g:0,c:null,s:"\\d{1,2}"};case "L":return {g:0,c:null,s:"(?:1|0)"};case "Y":return {g:1,c:"y = parseInt(results["+B+"], 10);\n",s:"(\\d{4})"};case "y":return {g:1,c:"var ty = parseInt(results["+B+"], 10);\n"+"y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"}
 ;case "a":return {g:1,c:"if (results["+B+"] == 'am') {\n"+"if (h == 12) { h = 0; }\n"+"} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case "A":return {g:1,c:"if (results["+B+"] == 'AM') {\n"+"if (h == 12) { h = 0; }\n"+"} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"}
 ;case "g":case "G":return {g:1,c:"h = parseInt(results["+B+"], 10);\n",s:"(\\d{1,2})"};case "h":case "H":return {g:1,c:"h = parseInt(results["+B+"], 10);\n",s:"(\\d{2})"};case "i":return {g:1,c:"i = parseInt(results["+B+"], 10);\n",s:"(\\d{2})"};case "s":return {g:1,c:"s = parseInt(results["+B+"], 10);\n",s:"(\\d{2})"}
@@ -209,28 +209,52 @@ i<J;++i){H[i]=[G[0]+H[i][0],G[1]+H[i][1]];}}this.runtimeAttributes[E]=[G];if(H.l
 var id=el.id||el.tagName;return ("Scroll "+id);};B.doMethod=function(C,D,E){var F=null;if(C=='scroll'){F=[this.method(this.currentFrame,D[0],E[0]-D[0],this.totalFrames),this.method(this.currentFrame,D[1],E[1]-D[1],this.totalFrames)];}else{F=A.doMethod.call(this,C,D,E);
 }return F;};B.getAttribute=function(C){var D=null;var el=this.getEl();if(C=='scroll'){D=[el.scrollLeft,el.scrollTop];}else{D=A.getAttribute.call(this,C);}return D;};B.setAttribute=function(C,D,E){var el=this.getEl();if(C=='scroll'){el.scrollLeft=D[0];el.scrollTop=D[1];
 }else{A.setAttribute.call(this,C,D,E);}};})();
+// Roo/lib/UndoManager.js
+Roo.lib.UndoManager=function(A,B){this.stack=[];this.limit=A;this.scope=B;this.fireEvent=typeof CustomEvent!='undefined'&&B&&B.dispatchEvent;if(this.fireEvent){this.bindEvents();}this.reset();};Roo.lib.UndoManager.prototype={limit:false,stack:false,scope:false,fireEvent:false,position:0,length:0,transact:function(A,B){if(arguments.length<2){throw new TypeError('Not enough arguments to UndoManager.transact.');
+}A.execute();this.stack.splice(0,this.position);if(B&&this.length){this.stack[0].push(A);}else{this.stack.unshift([A]);}this.position=0;if(this.limit&&this.stack.length>this.limit){this.length=this.stack.length=this.limit;}else{this.length=this.stack.length;
+}if(this.fireEvent){this.scope.dispatchEvent(new CustomEvent('DOMTransaction',{detail:{transactions:this.stack[0].slice()},bubbles:true,cancelable:false}));}},undo:function(){if(this.position<this.length){for(var i=this.stack[this.position].length-1;i>=0;
+i--){this.stack[this.position][i].undo();}this.position++;if(this.fireEvent){this.scope.dispatchEvent(new CustomEvent('undo',{detail:{transactions:this.stack[this.position-1].slice()},bubbles:true,cancelable:false}));}}},redo:function(){if(this.position>0){for(var i=0,n=this.stack[this.position-1].length;
+i<n;i++){this.stack[this.position-1][i].redo();}this.position--;if(this.fireEvent){this.scope.dispatchEvent(new CustomEvent('redo',{detail:{transactions:this.stack[this.position].slice()},bubbles:true,cancelable:false}));}}},item:function(A){if(A>=0&&A<this.length){return this.stack[A].slice();
+}return null;},clearUndo:function(){this.stack.length=this.length=this.position;},clearRedo:function(){this.stack.splice(0,this.position);this.position=0;this.length=this.stack.length;},reset:function(){this.stack=[];this.position=0;this.length=0;this.current_html=this.scope.innerHTML;
+if(this.timer!==false){clearTimeout(this.timer);}this.timer=false;this.merge=false;this.addEvent();},current_html:'',timer:false,merge:false,bindEvents:function(){var el=this.scope;el.undoManager=this;this.scope.addEventListener('keydown',function(e){if((e.ctrlKey||e.metaKey)&&e.keyCode===90){if(e.shiftKey){el.undoManager.redo();
+}else{el.undoManager.undo();}e.preventDefault();}});this.scope.addEventListener('keyup',function(e){if((e.ctrlKey||e.metaKey)&&e.keyCode===90){e.preventDefault();}});var t=this;el.addEventListener('input',function(e){if(el.innerHTML==t.current_html){return;
+}if(t.timer!==false){clearTimeout(t.timer);t.timer=false;}t.timer=setTimeout(function(){t.merge=false;},1000);t.addEvent(t.merge);t.merge=true;});},addEvent:function(A){A=typeof(A)=='undefined'?false:A;this.scope.undoManager.transact({scope:this.scope,oldHTML:this.current_html,newHTML:this.scope.innerHTML,execute:function(){}
+,undo:function(){this.scope.innerHTML=this.current_html=this.oldHTML;},redo:function(){this.scope.innerHTML=this.current_html=this.newHTML;}},false);this.merge=A;this.current_html=this.scope.innerHTML;}};
+// Roo/lib/Range.js
+Roo.lib.Range=function(){};Roo.lib.Range.wrap=function(r){return Roo.apply(r,Roo.lib.Range.prototype);};Roo.apply(Roo.lib.Range.prototype,{closest:function(A){if(typeof(A)!='string'){for(var i=0;i<A.length;i++){var r=this.closest(A[i]);if(r!==false){return r;
+}}return false;}A=A.toLowerCase();var n=this.commonAncestorContainer;while(n.nodeType!=1){n=n.parentNode;}if(n.nodeName.toLowerCase()==A){return n;}if(n.nodeName.toLowerCase()=='body'){return false;}return n.closest(A)||false;},cloneRange:function(){return Roo.lib.Range.wrap(Range.prototype.cloneRange.call(this));
+}});
+// Roo/lib/Selection.js
+Roo.lib.Selection=function(){};Roo.lib.Selection.wrap=function(r,A){Roo.apply(r,Roo.lib.Selection.prototype);r.ownerDocument=A;return r;};Roo.apply(Roo.lib.Selection.prototype,{ownerDocument:false,getRangeAt:function(n){return Roo.lib.Range.wrap(Selection.prototype.getRangeAt.call(this,n));
+},insertNode:function(A,B){if(typeof(A)=='string'){A=this.ownerDocument.createElement(A);if(B=='in'){A.innerHTML='&nbsp;';}}var C=this.getRangeAt(0);if(this.type!='Caret'){C.deleteContents();}var sn=A.childNodes[0];C.insertNode(A);if(B=='after'){A.insertAdjacentHTML('afterend','&nbsp;');
+sn=A.nextSibling;}if(B=='none'){return;}this.cursorText(sn);},cursorText:function(n){range=Roo.lib.Range.wrap(new Range());var ix=Array.from(n.parentNode.childNodes).indexOf(n);range.setStart(n.parentNode,ix);range.setEnd(n.parentNode,ix+1);this.removeAllRanges();
+this.addRange(range);Roo.log([n,range,this,this.baseOffset,this.extentOffset,this.type]);},cursorAfter:function(n){if(!n.nextSibling||n.nextSibling.nodeValue!='&nbsp;'){n.insertAdjacentHTML('afterend','&nbsp;');}this.cursorText(n.nextSibling);}});
 // Roo/DomHelper.js
 if(typeof Range!="undefined"&&typeof Range.prototype.createContextualFragment=="undefined"){Range.prototype.createContextualFragment=function(A){var B=window.document;var C=B.createElement("div");C.innerHTML=A;var D=B.createDocumentFragment(),n;while((n=C.firstChild)){D.appendChild(n);
 }return D;};}Roo.DomHelper=function(){var A=null;var B=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i;var C=/^table|tbody|tr|td$/i;var D={};var E=function(o){if(typeof o=='string'){return o;}var b="";if(!o.tag){o.tag="div";}b+="<"+o.tag;
-for(var M in o){if(M=="tag"||M=="children"||M=="cn"||M=="html"||typeof o[M]=="function"){continue;}if(M=="style"){var s=o["style"];if(typeof s=="function"){s=s.call();}if(typeof s=="string"){b+=' style="'+s+'"';}else if(typeof s=="object"){b+=' style="';for(var N in s){if(typeof s[N]!="function"){b+=N+":"+s[N]+";";
-}}b+='"';}}else{if(M=="cls"){b+=' class="'+o["cls"]+'"';}else if(M=="htmlFor"){b+=' for="'+o["htmlFor"]+'"';}else{b+=" "+M+'="'+o[M]+'"';}}}if(B.test(o.tag)){b+="/>";}else{b+=">";var cn=o.children||o.cn;if(cn){if((cn instanceof Array)||(Roo.isSafari&&typeof(cn.join)=="function")){for(var i=0,O=cn.length;
-i<O;i++){b+=E(cn[i],b);}}else{b+=E(cn,b);}}if(o.html){b+=o.html;}b+="</"+o.tag+">";}return b;};var F=function(o,M){var ns=false;if(o.ns&&o.ns!='html'){if(o.xmlns&&typeof(D[o.ns])=='undefined'){D[o.ns]=o.xmlns;ns=o.xmlns;}if(typeof(D[o.ns])=='undefined'){console.log("Trying to create namespace element "+o.ns+", however no xmlns was sent to builder previously");
-}ns=D[o.ns];}if(typeof(o)=='string'){return M.appendChild(document.createTextNode(o));}o.tag=o.tag||div;if(o.ns&&Roo.isIE){ns=false;o.tag=o.ns+':'+o.tag;}var el=ns?document.createElementNS(ns,o.tag||'div'):document.createElement(o.tag||'div');var N=el.setAttribute?true:false;
-for(var O in o){if(O=="tag"||O=="ns"||O=="xmlns"||O=="children"||O=="cn"||O=="html"||O=="style"||typeof o[O]=="function"){continue;}if(O=="cls"&&Roo.isIE){el.className=o["cls"];}else{if(N){el.setAttribute(O=="cls"?'class':O,o[O]);}else{el[O]=o[O];}}}Roo.DomHelper.applyStyles(el,o.style);
-var cn=o.children||o.cn;if(cn){if((cn instanceof Array)||(Roo.isSafari&&typeof(cn.join)=="function")){for(var i=0,P=cn.length;i<P;i++){F(cn[i],el);}}else{F(cn,el);}}if(o.html){el.innerHTML=o.html;}if(M){M.appendChild(el);}return el;};var G=function(M,s,h,e){A.innerHTML=[s,h,e].join('');
-var i=-1,el=A;while(++i<M&&el.firstChild){el=el.firstChild;}return el;};var ts='<table>',te='</table>',H=ts+'<tbody>',I='</tbody>'+te,J=H+'<tr>',K='</tr>'+I;var L=function(M,N,el,O){if(!A){A=document.createElement('div');}var P;var Q=null;if(M=='td'){if(N=='afterbegin'||N=='beforeend'){return;
-}if(N=='beforebegin'){Q=el;el=el.parentNode;}else{Q=el.nextSibling;el=el.parentNode;}P=G(4,J,O,K);}else if(M=='tr'){if(N=='beforebegin'){Q=el;el=el.parentNode;P=G(3,H,O,I);}else if(N=='afterend'){Q=el.nextSibling;el=el.parentNode;P=G(3,H,O,I);}else{if(N=='afterbegin'){Q=el.firstChild;
-}P=G(4,J,O,K);}}else if(M=='tbody'){if(N=='beforebegin'){Q=el;el=el.parentNode;P=G(2,ts,O,te);}else if(N=='afterend'){Q=el.nextSibling;el=el.parentNode;P=G(2,ts,O,te);}else{if(N=='afterbegin'){Q=el.firstChild;}P=G(3,H,O,I);}}else{if(N=='beforebegin'||N=='afterend'){return;
-}if(N=='afterbegin'){Q=el.firstChild;}P=G(2,ts,O,te);}el.insertBefore(P,Q);return P;};return {useDom:false,markup:function(o){return E(o);},applyStyles:function(el,M){if(M){el=Roo.fly(el);if(typeof M=="string"){var re=/\s?([a-z\-]*)\:\s?([^;]*);?/gi;var N;
-while((N=re.exec(M))!=null){el.setStyle(N[1],N[2]);}}else if(typeof M=="object"){for(var O in M){el.setStyle(O,M[O]);}}else if(typeof M=="function"){Roo.DomHelper.applyStyles(el,M.call());}}},insertHtml:function(M,el,N){M=M.toLowerCase();if(el.insertAdjacentHTML){if(C.test(el.tagName)){var rs;
-if(rs=L(el.tagName.toLowerCase(),M,el,N)){return rs;}}switch(M){case "beforebegin":el.insertAdjacentHTML('BeforeBegin',N);return el.previousSibling;case "afterbegin":el.insertAdjacentHTML('AfterBegin',N);return el.firstChild;case "beforeend":el.insertAdjacentHTML('BeforeEnd',N);
-return el.lastChild;case "afterend":el.insertAdjacentHTML('AfterEnd',N);return el.nextSibling;}throw 'Illegal insertion point -> "'+M+'"';}var O=el.ownerDocument.createRange();var P;switch(M){case "beforebegin":O.setStartBefore(el);P=O.createContextualFragment(N);
-el.parentNode.insertBefore(P,el);return el.previousSibling;case "afterbegin":if(el.firstChild){O.setStartBefore(el.firstChild);P=O.createContextualFragment(N);el.insertBefore(P,el.firstChild);return el.firstChild;}else{el.innerHTML=N;return el.firstChild;
-}case "beforeend":if(el.lastChild){O.setStartAfter(el.lastChild);P=O.createContextualFragment(N);el.appendChild(P);return el.lastChild;}else{el.innerHTML=N;return el.lastChild;}case "afterend":O.setStartAfter(el);P=O.createContextualFragment(N);el.parentNode.insertBefore(P,el.nextSibling);
-return el.nextSibling;}throw 'Illegal insertion point -> "'+M+'"';},insertBefore:function(el,o,M){return this.doInsert(el,o,M,"beforeBegin");},insertAfter:function(el,o,M){return this.doInsert(el,o,M,"afterEnd","nextSibling");},insertFirst:function(el,o,M){return this.doInsert(el,o,M,"afterBegin");
-},doInsert:function(el,o,M,N,O){el=Roo.getDom(el);var P;if(this.useDom||o.ns){P=F(o,null);el.parentNode.insertBefore(P,O?el[O]:el);}else{var Q=E(o);P=this.insertHtml(N,el,Q);}return M?Roo.get(P,true):P;},append:function(el,o,M){el=Roo.getDom(el);var N;if(this.useDom||o.ns){N=F(o,null);
-el.appendChild(N);}else{var O=E(o);N=this.insertHtml("beforeEnd",el,O);}return M?Roo.get(N,true):N;},overwrite:function(el,o,M){el=Roo.getDom(el);if(o.ns){while(el.childNodes.length){el.removeChild(el.firstChild);}F(o,el);}else{el.innerHTML=E(o);}return M?Roo.get(el.firstChild,true):el.firstChild;
-},createTemplate:function(o){var M=E(o);return new Roo.Template(M);}};}();
+for(var N in o){if(N=="tag"||N=="children"||N=="cn"||N=="html"||typeof o[N]=="function"){continue;}if(N=="style"){var s=o["style"];if(typeof s=="function"){s=s.call();}if(typeof s=="string"){b+=' style="'+s+'"';}else if(typeof s=="object"){b+=' style="';for(var O in s){if(typeof s[O]!="function"){b+=O+":"+s[O]+";";
+}}b+='"';}}else{if(N=="cls"){b+=' class="'+o["cls"]+'"';}else if(N=="htmlFor"){b+=' for="'+o["htmlFor"]+'"';}else{b+=" "+N+'="'+o[N]+'"';}}}if(B.test(o.tag)){b+="/>";}else{b+=">";var cn=o.children||o.cn;if(cn){if((cn instanceof Array)||(Roo.isSafari&&typeof(cn.join)=="function")){for(var i=0,P=cn.length;
+i<P;i++){b+=E(cn[i],b);}}else{b+=E(cn,b);}}if(o.html){b+=o.html;}b+="</"+o.tag+">";}return b;};var F=function(o,N){var ns=false;if(o.ns&&o.ns!='html'){if(o.xmlns&&typeof(D[o.ns])=='undefined'){D[o.ns]=o.xmlns;ns=o.xmlns;}if(typeof(D[o.ns])=='undefined'){console.log("Trying to create namespace element "+o.ns+", however no xmlns was sent to builder previously");
+}ns=D[o.ns];}if(typeof(o)=='string'){return N.appendChild(document.createTextNode(o));}o.tag=o.tag||div;if(o.ns&&Roo.isIE){ns=false;o.tag=o.ns+':'+o.tag;}var el=ns?document.createElementNS(ns,o.tag||'div'):document.createElement(o.tag||'div');var O=el.setAttribute?true:false;
+for(var P in o){if(P=="tag"||P=="ns"||P=="xmlns"||P=="children"||P=="cn"||P=="html"||P=="style"||typeof o[P]=="function"){continue;}if(P=="cls"&&Roo.isIE){el.className=o["cls"];}else{if(O){el.setAttribute(P=="cls"?'class':P,o[P]);}else{el[P]=o[P];}}}Roo.DomHelper.applyStyles(el,o.style);
+var cn=o.children||o.cn;if(cn){if((cn instanceof Array)||(Roo.isSafari&&typeof(cn.join)=="function")){for(var i=0,Q=cn.length;i<Q;i++){F(cn[i],el);}}else{F(cn,el);}}if(o.html){el.innerHTML=o.html;}if(N){N.appendChild(el);}return el;};var G=function(N,s,h,e){A.innerHTML=[s,h,e].join('');
+var i=-1,el=A;while(++i<N&&el.firstChild){el=el.firstChild;}return el;};var ts='<table>',te='</table>',H=ts+'<tbody>',I='</tbody>'+te,J=H+'<tr>',K='</tr>'+I;var L=function(N,O,el,P){if(!A){A=document.createElement('div');}var Q;var R=null;if(N=='td'){if(O=='afterbegin'||O=='beforeend'){return;
+}if(O=='beforebegin'){R=el;el=el.parentNode;}else{R=el.nextSibling;el=el.parentNode;}Q=G(4,J,P,K);}else if(N=='tr'){if(O=='beforebegin'){R=el;el=el.parentNode;Q=G(3,H,P,I);}else if(O=='afterend'){R=el.nextSibling;el=el.parentNode;Q=G(3,H,P,I);}else{if(O=='afterbegin'){R=el.firstChild;
+}Q=G(4,J,P,K);}}else if(N=='tbody'){if(O=='beforebegin'){R=el;el=el.parentNode;Q=G(2,ts,P,te);}else if(O=='afterend'){R=el.nextSibling;el=el.parentNode;Q=G(2,ts,P,te);}else{if(O=='afterbegin'){R=el.firstChild;}Q=G(3,H,P,I);}}else{if(O=='beforebegin'||O=='afterend'){return;
+}if(O=='afterbegin'){R=el.firstChild;}Q=G(2,ts,P,te);}el.insertBefore(Q,R);return Q;};var M=function(N,to){Roo.log(["UpdateNode",N,to]);if(N.nodeType!=to.nodeType){Roo.log(["ReplaceChild - mismatch notType",to,N]);N.parentNode.replaceChild(to,N);}if(N.nodeType==3){if(N.data==to.data){return;
+}N.data=to.data;return;}if(!N.parentNode){return;}if(N.nodeType!=1||N.tagName!=to.tagName){Roo.log(["ReplaceChild",N,to]);N.parentNode.replaceChild(to,N);return;}var ar=Array.from(N.attributes);for(var i=0;i<ar.length;i++){if(to.hasAttribute(ar[i].name)){continue;
+}if(ar[i].name=='id'){continue;}Roo.log("removeAttribute"+ar[i].name);N.removeAttribute(ar[i].name);}ar=to.attributes;for(var i=0;i<ar.length;i++){if(N.getAttribute(ar[i].name)==to.getAttribute(ar[i].name)){Roo.log("skipAttribute "+ar[i].name+'='+to.getAttribute(ar[i].name));
+continue;}Roo.log("updateAttribute "+ar[i].name+'=>'+to.getAttribute(ar[i].name));N.setAttribute(ar[i].name,to.getAttribute(ar[i].name));}var O=Array.from(N.childNodes);var P=Array.from(to.childNodes);for(var i=0;i<Math.max(P.length,O.length);i++){if(i>=O.length){N.appendChild(P[i]);
+Roo.log(["add",P[i]]);}else if(i>=P.length){N.removeChild(O[i]);Roo.log(["remove",O[i]]);}else{M(O[i],P[i]);}}};return {useDom:false,markup:function(o){return E(o);},applyStyles:function(el,N){if(N){el=Roo.fly(el);if(typeof N=="string"){var re=/\s?([a-z\-]*)\:\s?([^;]*);?/gi;
+var O;while((O=re.exec(N))!=null){el.setStyle(O[1],O[2]);}}else if(typeof N=="object"){for(var P in N){el.setStyle(P,N[P]);}}else if(typeof N=="function"){Roo.DomHelper.applyStyles(el,N.call());}}},insertHtml:function(N,el,O){N=N.toLowerCase();if(el.insertAdjacentHTML){if(C.test(el.tagName)){var rs;
+if(rs=L(el.tagName.toLowerCase(),N,el,O)){return rs;}}switch(N){case "beforebegin":el.insertAdjacentHTML('BeforeBegin',O);return el.previousSibling;case "afterbegin":el.insertAdjacentHTML('AfterBegin',O);return el.firstChild;case "beforeend":el.insertAdjacentHTML('BeforeEnd',O);
+return el.lastChild;case "afterend":el.insertAdjacentHTML('AfterEnd',O);return el.nextSibling;}throw 'Illegal insertion point -> "'+N+'"';}var P=el.ownerDocument.createRange();var Q;switch(N){case "beforebegin":P.setStartBefore(el);Q=P.createContextualFragment(O);
+el.parentNode.insertBefore(Q,el);return el.previousSibling;case "afterbegin":if(el.firstChild){P.setStartBefore(el.firstChild);Q=P.createContextualFragment(O);el.insertBefore(Q,el.firstChild);return el.firstChild;}else{el.innerHTML=O;return el.firstChild;
+}case "beforeend":if(el.lastChild){P.setStartAfter(el.lastChild);Q=P.createContextualFragment(O);el.appendChild(Q);return el.lastChild;}else{el.innerHTML=O;return el.lastChild;}case "afterend":P.setStartAfter(el);Q=P.createContextualFragment(O);el.parentNode.insertBefore(Q,el.nextSibling);
+return el.nextSibling;}throw 'Illegal insertion point -> "'+N+'"';},insertBefore:function(el,o,N){return this.doInsert(el,o,N,"beforeBegin");},insertAfter:function(el,o,N){return this.doInsert(el,o,N,"afterEnd","nextSibling");},insertFirst:function(el,o,N){return this.doInsert(el,o,N,"afterBegin");
+},doInsert:function(el,o,N,O,P){el=Roo.getDom(el);var Q;if(this.useDom||o.ns){Q=F(o,null);el.parentNode.insertBefore(Q,P?el[P]:el);}else{var R=E(o);Q=this.insertHtml(O,el,R);}return N?Roo.get(Q,true):Q;},append:function(el,o,N){el=Roo.getDom(el);var O;if(this.useDom||o.ns){O=F(o,null);
+el.appendChild(O);}else{var P=E(o);O=this.insertHtml("beforeEnd",el,P);}return N?Roo.get(O,true):O;},overwrite:function(el,o,N){el=Roo.getDom(el);if(o.ns){while(el.childNodes.length){el.removeChild(el.firstChild);}F(o,el);}else{el.innerHTML=E(o);}return N?Roo.get(el.firstChild,true):el.firstChild;
+},createTemplate:function(o){var N=E(o);return new Roo.Template(N);},update:function(el,o){M(Roo.getDom(el),F(o));}};}();
 // Roo/Template.js
 Roo.Template=function(A){if(A instanceof Array){A=A.join("");}else if(arguments.length>1){A=Array.prototype.join.call(arguments,"");}if(typeof(A)=='object'){Roo.apply(this,A)}else{this.html=A;}if(this.url){this.load();}};Roo.Template.prototype={onLoad:false,url:false,html:'',compiled:false,loaded:false,applyTemplate:function(A){try{if(this.compiled){return this.compiled(A);
 }var B=this.disableFormats!==true;var fm=Roo.util.Format,C=this;var fn=function(m,D,E,F){if(E&&B){if(E.substr(0,5)=="this."){return C.call(E.substr(5),A[D],A);}else{if(F){var re=/^\s*['"](.*)["']\s*$/;F=F.split(',');for(var i=0,G=F.length;i<G;i++){F[i]=F[i].replace(re,"$1");
index 7b48a1d..d2b15cc 100644 (file)
@@ -691,7 +691,7 @@ Roo.factory(conf, Roo.data);
                                        return 'xs'
                        }
                        
-               }
+               } 
         
     });
 
@@ -700,9 +700,8 @@ Roo.factory(conf, Roo.data);
 
 Roo.namespace("Roo", "Roo.util", "Roo.grid", "Roo.dd", "Roo.tree", "Roo.data",
                 "Roo.form", "Roo.menu", "Roo.state", "Roo.lib", "Roo.layout",
-                "Roo.app", "Roo.ux",
-                "Roo.bootstrap",
-                "Roo.bootstrap.dash");
+                "Roo.app", "Roo.ux" 
+               );
 /*
  * Based on:
  * Ext JS Library 1.1.1
@@ -955,6 +954,16 @@ String.prototype.unicodeClean = function () {
     );
 };
   
+
+/**
+  * Make the first letter of a string uppercase
+  *
+  * @return {String} The new string.
+  */
+String.prototype.toUpperCaseFirst = function () {
+    return this.charAt(0).toUpperCase() + this.slice(1);
+};  
+  
 /*
  * Based on:
  * Ext JS Library 1.1.1
@@ -1046,30 +1055,50 @@ Roo.applyIf(Array.prototype, {
      */
     equals : function(b)
     {
-        // https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
-       if (this === b) {
-           return true;
-        }
-       if (b == null) {
-           return false;
-       }
-       if (this.length !== b.length) {
-           return false;
-       }
-      
-       // sort?? a.sort().equals(b.sort());
+            // https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
+        if (this === b) {
+            return true;
+        }
+        if (b == null) {
+            return false;
+        }
+        if (this.length !== b.length) {
+            return false;
+        }
+          
+        // sort?? a.sort().equals(b.sort());
+          
+        for (var i = 0; i < this.length; ++i) {
+            if (this[i] !== b[i]) {
+            return false;
+            }
+        }
+        return true;
+    } 
+    
+    
+    
+    
+});
+
+Roo.applyIf(Array, {
+ /**
+     * from
+     * @static
+     * @param {Array} o Or Array like object (eg. nodelist)
+     * @returns {Array} 
+     */
+    from : function(o)
+    {
+        var ret= [];
+    
+        for (var i =0; i < o.length; i++) { 
+            ret[i] = o[i];
+        }
+        return ret;
       
-       for (var i = 0; i < this.length; ++i) {
-           if (this[i] !== b[i]) {
-               return false;
-           }
-       }
-       return true;
     }
 });
-
-
 /*
  * Based on:
  * Ext JS Library 1.1.1
@@ -1373,17 +1402,17 @@ Date.createParser = function(format) {
     }
 
     code += "if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"
-        + "{v = new Date(y, m, d, h, i, s);}\n"
+        + "{v = new Date(y, m, d, h, i, s); v.setFullYear(y);}\n"
         + "else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"
-        + "{v = new Date(y, m, d, h, i);}\n"
+        + "{v = new Date(y, m, d, h, i); v.setFullYear(y);}\n"
         + "else if (y >= 0 && m >= 0 && d > 0 && h >= 0)\n"
-        + "{v = new Date(y, m, d, h);}\n"
+        + "{v = new Date(y, m, d, h); v.setFullYear(y);}\n"
         + "else if (y >= 0 && m >= 0 && d > 0)\n"
-        + "{v = new Date(y, m, d);}\n"
+        + "{v = new Date(y, m, d); v.setFullYear(y);}\n"
         + "else if (y >= 0 && m >= 0)\n"
-        + "{v = new Date(y, m);}\n"
+        + "{v = new Date(y, m); v.setFullYear(y);}\n"
         + "else if (y >= 0)\n"
-        + "{v = new Date(y);}\n"
+        + "{v = new Date(y); v.setFullYear(y);}\n"
         + "}return (v && (z || o))?\n" // favour UTC offset over GMT offset
         + "    ((z)? v.add(Date.SECOND, (v.getTimezoneOffset() * 60) + (z*1)) :\n" // reset to UTC, then add offset
         + "        v.add(Date.HOUR, (v.getGMTOffset() / 100) + (o / -100))) : v\n" // reset to GMT, then add offset
@@ -1443,7 +1472,7 @@ Date.formatCodeToRegex = function(character, currentGroup) {
             s:"(\\d{1,2})"}; // Numeric representation of a month, without leading zeros
     case "m":
         return {g:1,
-            c:"m = parseInt(results[" + currentGroup + "], 10) - 1;\n",
+            c:"m = Math.max(0,parseInt(results[" + currentGroup + "], 10) - 1);\n",
             s:"(\\d{2})"}; // Numeric representation of a month, with leading zeros
     case "t":
         return {g:0,
@@ -4878,7 +4907,468 @@ Roo.lib.Easing = {
             }
         };
     })();
-/*
+/**
+ * Originally based of this code... - refactored for Roo...
+ * https://github.com/aaalsaleh/undo-manager
+ * undo-manager.js
+ * @author  Abdulrahman Alsaleh 
+ * @copyright 2015 Abdulrahman Alsaleh 
+ * @license  MIT License (c) 
+ *
+ * Hackily modifyed by alan@roojs.com
+ *
+ *
+ *  
+ *
+ *  TOTALLY UNTESTED...
+ *
+ *  Documentation to be done....
+ */
+
+/**
+* @class Roo.lib.UndoManager
+* An undo manager implementation in JavaScript. It follows the W3C UndoManager and DOM Transaction
+* Draft and the undocumented and disabled Mozilla Firefox's UndoManager implementation.
+
+ * Usage:
+ * <pre><code>
+
+
+editor.undoManager = new Roo.lib.UndoManager(1000, editor);
+</code></pre>
+
+* For more information see this blog post with examples:
+*  <a href="http://www.cnitblog.com/seeyeah/archive/2011/12/30/38728.html/">DomHelper
+     - Create Elements using DOM, HTML fragments and Templates</a>. 
+* @constructor
+* @param {Number} limit how far back to go ... use 1000?
+* @param {Object} scope usually use document..
+*/
+
+Roo.lib.UndoManager = function (limit, undoScopeHost)
+{
+    this.stack = [];
+    this.limit = limit;
+    this.scope = undoScopeHost;
+    this.fireEvent = typeof CustomEvent != 'undefined' && undoScopeHost && undoScopeHost.dispatchEvent;
+    if (this.fireEvent) {
+        this.bindEvents();
+    }
+    this.reset();
+    
+};
+        
+Roo.lib.UndoManager.prototype = {
+    
+    limit : false,
+    stack : false,
+    scope :  false,
+    fireEvent : false,
+    position : 0,
+    length : 0,
+    
+    
+     /**
+     * To push and execute a transaction, the method undoManager.transact
+     * must be called by passing a transaction object as the first argument, and a merge
+     * flag as the second argument. A transaction object has the following properties:
+     *
+     * Usage:
+<pre><code>
+undoManager.transact({
+    label: 'Typing',
+    execute: function() { ... },
+    undo: function() { ... },
+    // redo same as execute
+    redo: function() { this.execute(); }
+}, false);
+
+// merge transaction
+undoManager.transact({
+    label: 'Typing',
+    execute: function() { ... },  // this will be run...
+    undo: function() { ... }, // what to do when undo is run.
+    // redo same as execute
+    redo: function() { this.execute(); }
+}, true); 
+</code></pre> 
+     *
+     * 
+     * @param {Object} transaction The transaction to add to the stack.
+     * @return {String} The HTML fragment
+     */
+    
+    
+    transact : function (transaction, merge)
+    {
+        if (arguments.length < 2) {
+            throw new TypeError('Not enough arguments to UndoManager.transact.');
+        }
+
+        transaction.execute();
+
+        this.stack.splice(0, this.position);
+        if (merge && this.length) {
+            this.stack[0].push(transaction);
+        } else {
+            this.stack.unshift([transaction]);
+        }
+    
+        this.position = 0;
+
+        if (this.limit && this.stack.length > this.limit) {
+            this.length = this.stack.length = this.limit;
+        } else {
+            this.length = this.stack.length;
+        }
+
+        if (this.fireEvent) {
+            this.scope.dispatchEvent(
+                new CustomEvent('DOMTransaction', {
+                    detail: {
+                        transactions: this.stack[0].slice()
+                    },
+                    bubbles: true,
+                    cancelable: false
+                })
+            );
+        }
+        
+        //Roo.log("transaction: pos:" + this.position + " len: " + this.length + " slen:" + this.stack.length);
+      
+        
+    },
+
+    undo : function ()
+    {
+        //Roo.log("undo: pos:" + this.position + " len: " + this.length + " slen:" + this.stack.length);
+        
+        if (this.position < this.length) {
+            for (var i = this.stack[this.position].length - 1; i >= 0; i--) {
+                this.stack[this.position][i].undo();
+            }
+            this.position++;
+
+            if (this.fireEvent) {
+                this.scope.dispatchEvent(
+                    new CustomEvent('undo', {
+                        detail: {
+                            transactions: this.stack[this.position - 1].slice()
+                        },
+                        bubbles: true,
+                        cancelable: false
+                    })
+                );
+            }
+        }
+    },
+
+    redo : function ()
+    {
+        if (this.position > 0) {
+            for (var i = 0, n = this.stack[this.position - 1].length; i < n; i++) {
+                this.stack[this.position - 1][i].redo();
+            }
+            this.position--;
+
+            if (this.fireEvent) {
+                this.scope.dispatchEvent(
+                    new CustomEvent('redo', {
+                        detail: {
+                            transactions: this.stack[this.position].slice()
+                        },
+                        bubbles: true,
+                        cancelable: false
+                    })
+                );
+            }
+        }
+    },
+
+    item : function (index)
+    {
+        if (index >= 0 && index < this.length) {
+            return this.stack[index].slice();
+        }
+        return null;
+    },
+
+    clearUndo : function () {
+        this.stack.length = this.length = this.position;
+    },
+
+    clearRedo : function () {
+        this.stack.splice(0, this.position);
+        this.position = 0;
+        this.length = this.stack.length;
+    },
+    /**
+     * Reset the undo - probaly done on load to clear all history.
+     */
+    reset : function()
+    {
+        this.stack = [];
+        this.position = 0;
+        this.length = 0;
+        this.current_html = this.scope.innerHTML;
+        if (this.timer !== false) {
+            clearTimeout(this.timer);
+        }
+        this.timer = false;
+        this.merge = false;
+        this.addEvent();
+        
+    },
+    current_html : '',
+    timer : false,
+    merge : false,
+    
+    
+    // this will handle the undo/redo on the element.?
+    bindEvents : function()
+    {
+        var el  = this.scope;
+        el.undoManager = this;
+        
+        
+        this.scope.addEventListener('keydown', function(e) {
+            if ((e.ctrlKey || e.metaKey) && e.keyCode === 90) {
+                if (e.shiftKey) {
+                    el.undoManager.redo(); // Ctrl/Command + Shift + Z
+                } else {
+                    el.undoManager.undo(); // Ctrl/Command + Z
+                }
+        
+                e.preventDefault();
+            }
+        });
+        /// ignore keyup..
+        this.scope.addEventListener('keyup', function(e) {
+            if ((e.ctrlKey || e.metaKey) && e.keyCode === 90) {
+                e.preventDefault();
+            }
+        });
+        
+        
+        
+        var t = this;
+        
+        el.addEventListener('input', function(e) {
+            if(el.innerHTML == t.current_html) {
+                return;
+            }
+            // only record events every second.
+            if (t.timer !== false) {
+               clearTimeout(t.timer);
+               t.timer = false;
+            }
+            t.timer = setTimeout(function() { t.merge = false; }, 1000);
+            
+            t.addEvent(t.merge);
+            t.merge = true; // ignore changes happening every second..
+        });
+       },
+    /**
+     * Manually add an event.
+     * Normall called without arguements - and it will just get added to the stack.
+     * 
+     */
+    
+    addEvent : function(merge)
+    {
+        //Roo.log("undomanager +" + (merge ? 'Y':'n'));
+        // not sure if this should clear the timer 
+        merge = typeof(merge) == 'undefined' ? false : merge; 
+        
+        this.scope.undoManager.transact({
+            scope : this.scope,
+            oldHTML: this.current_html,
+            newHTML: this.scope.innerHTML,
+            // nothing to execute (content already changed when input is fired)
+            execute: function() { },
+            undo: function() {
+                this.scope.innerHTML = this.current_html = this.oldHTML;
+            },
+            redo: function() {
+                this.scope.innerHTML = this.current_html = this.newHTML;
+            }
+        }, false); //merge);
+        
+        this.merge = merge;
+        
+        this.current_html = this.scope.innerHTML;
+    }
+    
+    
+     
+    
+    
+    
+};
+/**
+ * @class Roo.lib.Range
+ * @constructor
+ * This is a toolkit, normally used to copy features into a Dom Range element
+ * Roo.lib.Range.wrap(x);
+ *
+ *
+ *
+ */
+Roo.lib.Range = function() { };
+
+/**
+ * Wrap a Dom Range object, to give it new features...
+ * @static
+ * @param {Range} the range to wrap
+ */
+Roo.lib.Range.wrap = function(r) {
+    return Roo.apply(r, Roo.lib.Range.prototype);
+};
+/**
+ * find a parent node eg. LI / OL
+ * @param {string|Array} node name or array of nodenames
+ * @return {DomElement|false}
+ */
+Roo.apply(Roo.lib.Range.prototype,
+{
+    
+    closest : function(str)
+    {
+        if (typeof(str) != 'string') {
+            // assume it's a array.
+            for(var i = 0;i < str.length;i++) {
+                var r = this.closest(str[i]);
+                if (r !== false) {
+                    return r;
+                }
+                
+            }
+            return false;
+        }
+        str = str.toLowerCase();
+        var n = this.commonAncestorContainer; // might not be a node
+        while (n.nodeType != 1) {
+            n = n.parentNode;
+        }
+        
+        if (n.nodeName.toLowerCase() == str ) {
+            return n;
+        }
+        if (n.nodeName.toLowerCase() == 'body') {
+            return false;
+        }
+            
+        return n.closest(str) || false;
+        
+    },
+    cloneRange : function()
+    {
+        return Roo.lib.Range.wrap(Range.prototype.cloneRange.call(this));
+    }
+});/**
+ * @class Roo.lib.Selection
+ * @constructor
+ * This is a toolkit, normally used to copy features into a Dom Selection element
+ * Roo.lib.Selection.wrap(x);
+ *
+ *
+ *
+ */
+Roo.lib.Selection = function() { };
+
+/**
+ * Wrap a Dom Range object, to give it new features...
+ * @static
+ * @param {Range} the range to wrap
+ */
+Roo.lib.Selection.wrap = function(r, doc) {
+    Roo.apply(r, Roo.lib.Selection.prototype);
+    r.ownerDocument = doc; // usefull so we dont have to keep referening to it.
+    return r;
+};
+/**
+ * find a parent node eg. LI / OL
+ * @param {string|Array} node name or array of nodenames
+ * @return {DomElement|false}
+ */
+Roo.apply(Roo.lib.Selection.prototype,
+{
+    /**
+     * the owner document
+     */
+    ownerDocument : false,
+    
+    getRangeAt : function(n)
+    {
+        return Roo.lib.Range.wrap(Selection.prototype.getRangeAt.call(this,n));
+    },
+    
+    /**
+     * insert node at selection 
+     * @param {DomElement|string} node
+     * @param {string} cursor (after|in|none) where to place the cursor after inserting.
+     */
+    insertNode: function(node, cursor)
+    {
+        if (typeof(node) == 'string') {
+            node = this.ownerDocument.createElement(node);
+            if (cursor == 'in') {
+                node.innerHTML = '&nbsp;';
+            }
+        }
+        
+        var range = this.getRangeAt(0);
+        
+        if (this.type != 'Caret') {
+            range.deleteContents();
+        }
+        var sn = node.childNodes[0]; // select the contents.
+
+        
+        
+        range.insertNode(node);
+        if (cursor == 'after') {
+            node.insertAdjacentHTML('afterend', '&nbsp;');
+            sn = node.nextSibling;
+        }
+        
+        if (cursor == 'none') {
+            return;
+        }
+        
+        this.cursorText(sn);
+    },
+    
+    cursorText : function(n)
+    {
+       
+        //var range = this.getRangeAt(0);
+        range = Roo.lib.Range.wrap(new Range());
+        //range.selectNode(n);
+        
+        var ix = Array.from(n.parentNode.childNodes).indexOf(n);
+        range.setStart(n.parentNode,ix);
+        range.setEnd(n.parentNode,ix+1);
+        //range.collapse(false);
+         
+        this.removeAllRanges();
+        this.addRange(range);
+        
+        Roo.log([n, range, this,this.baseOffset,this.extentOffset, this.type]);
+    },
+    cursorAfter : function(n)
+    {
+        if (!n.nextSibling || n.nextSibling.nodeValue != '&nbsp;') {
+            n.insertAdjacentHTML('afterend', '&nbsp;');
+        }
+        this.cursorText (n.nextSibling);
+    }
+        
+    
+});/*
  * Based on:
  * Ext JS Library 1.1.1
  * Copyright(c) 2006-2007, Ext JS, LLC.
@@ -5125,212 +5615,320 @@ Roo.DomHelper = function(){
         el.insertBefore(node, before);
         return node;
     };
+    
+    // this is a bit like the react update code...
+    // 
+    
+    var updateNode = function(from, to)
+    {
+        // should we handle non-standard elements?
+        Roo.log(["UpdateNode" , from, to]);
+        if (from.nodeType != to.nodeType) {
+            Roo.log(["ReplaceChild - mismatch notType" , to, from ]);
+            from.parentNode.replaceChild(to, from);
+        }
+        
+        if (from.nodeType == 3) {
+            // assume it's text?!
+            if (from.data == to.data) {
+                return;
+            }
+            from.data = to.data;
+            return;
+        }
+        if (!from.parentNode) {
+            // not sure why this is happening?
+            return;
+        }
+        // assume 'to' doesnt have '1/3 nodetypes!
+        // not sure why, by from, parent node might not exist?
+        if (from.nodeType !=1 || from.tagName != to.tagName) {
+            Roo.log(["ReplaceChild" , from, to ]);
+            
+            from.parentNode.replaceChild(to, from);
+            return;
+        }
+        // compare attributes
+        var ar = Array.from(from.attributes);
+        for(var i = 0; i< ar.length;i++) {
+            if (to.hasAttribute(ar[i].name)) {
+                continue;
+            }
+            if (ar[i].name == 'id') { // always keep ids?
+               continue;
+            }
+            //if (ar[i].name == 'style') {
+            //   throw "style removed?";
+            //}
+            Roo.log("removeAttribute" + ar[i].name);
+            from.removeAttribute(ar[i].name);
+        }
+        ar = to.attributes;
+        for(var i = 0; i< ar.length;i++) {
+            if (from.getAttribute(ar[i].name) == to.getAttribute(ar[i].name)) {
+                Roo.log("skipAttribute " + ar[i].name  + '=' + to.getAttribute(ar[i].name));
+                continue;
+            }
+            Roo.log("updateAttribute " + ar[i].name + '=>' + to.getAttribute(ar[i].name));
+            from.setAttribute(ar[i].name, to.getAttribute(ar[i].name));
+        }
+        // children
+        var far = Array.from(from.childNodes);
+        var tar = Array.from(to.childNodes);
+        // if the lengths are different.. then it's probably a editable content change, rather than
+        // a change of the block definition..
+        
+        // this did notwork , as our rebuilt nodes did not include ID's so did not match at all.
+         /*if (from.innerHTML == to.innerHTML) {
+            return;
+        }
+        if (far.length != tar.length) {
+            from.innerHTML = to.innerHTML;
+            return;
+        }
+        */
+        
+        for(var i = 0; i < Math.max(tar.length, far.length); i++) {
+            if (i >= far.length) {
+                from.appendChild(tar[i]);
+                Roo.log(["add", tar[i]]);
+                
+            } else if ( i  >= tar.length) {
+                from.removeChild(far[i]);
+                Roo.log(["remove", far[i]]);
+            } else {
+                
+                updateNode(far[i], tar[i]);
+            }    
+        }
+        
+        
+        
+        
+    };
+    
+    
 
     return {
-    /** True to force the use of DOM instead of html fragments @type Boolean */
-    useDom : false,
-
-    /**
-     * Returns the markup for the passed Element(s) config
-     * @param {Object} o The Dom object spec (and children)
-     * @return {String}
-     */
-    markup : function(o){
-        return createHtml(o);
-    },
-
-    /**
-     * Applies a style specification to an element
-     * @param {String/HTMLElement} el The element to apply styles to
-     * @param {String/Object/Function} styles A style specification string eg "width:100px", or object in the form {width:"100px"}, or
-     * a function which returns such a specification.
-     */
-    applyStyles : function(el, styles){
-        if(styles){
-           el = Roo.fly(el);
-           if(typeof styles == "string"){
-               var re = /\s?([a-z\-]*)\:\s?([^;]*);?/gi;
-               var matches;
-               while ((matches = re.exec(styles)) != null){
-                   el.setStyle(matches[1], matches[2]);
-               }
-           }else if (typeof styles == "object"){
-               for (var style in styles){
-                  el.setStyle(style, styles[style]);
+        /** True to force the use of DOM instead of html fragments @type Boolean */
+        useDom : false,
+    
+        /**
+         * Returns the markup for the passed Element(s) config
+         * @param {Object} o The Dom object spec (and children)
+         * @return {String}
+         */
+        markup : function(o){
+            return createHtml(o);
+        },
+    
+        /**
+         * Applies a style specification to an element
+         * @param {String/HTMLElement} el The element to apply styles to
+         * @param {String/Object/Function} styles A style specification string eg "width:100px", or object in the form {width:"100px"}, or
+         * a function which returns such a specification.
+         */
+        applyStyles : function(el, styles){
+            if(styles){
+               el = Roo.fly(el);
+               if(typeof styles == "string"){
+                   var re = /\s?([a-z\-]*)\:\s?([^;]*);?/gi;
+                   var matches;
+                   while ((matches = re.exec(styles)) != null){
+                       el.setStyle(matches[1], matches[2]);
+                   }
+               }else if (typeof styles == "object"){
+                   for (var style in styles){
+                      el.setStyle(style, styles[style]);
+                   }
+               }else if (typeof styles == "function"){
+                    Roo.DomHelper.applyStyles(el, styles.call());
                }
-           }else if (typeof styles == "function"){
-                Roo.DomHelper.applyStyles(el, styles.call());
-           }
-        }
-    },
-
-    /**
-     * Inserts an HTML fragment into the Dom
-     * @param {String} where Where to insert the html in relation to el - beforeBegin, afterBegin, beforeEnd, afterEnd.
-     * @param {HTMLElement} el The context element
-     * @param {String} html The HTML fragmenet
-     * @return {HTMLElement} The new node
-     */
-    insertHtml : function(where, el, html){
-        where = where.toLowerCase();
-        if(el.insertAdjacentHTML){
-            if(tableRe.test(el.tagName)){
-                var rs;
-                if(rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html)){
-                    return rs;
+            }
+        },
+    
+        /**
+         * Inserts an HTML fragment into the Dom
+         * @param {String} where Where to insert the html in relation to el - beforeBegin, afterBegin, beforeEnd, afterEnd.
+         * @param {HTMLElement} el The context element
+         * @param {String} html The HTML fragmenet
+         * @return {HTMLElement} The new node
+         */
+        insertHtml : function(where, el, html){
+            where = where.toLowerCase();
+            if(el.insertAdjacentHTML){
+                if(tableRe.test(el.tagName)){
+                    var rs;
+                    if(rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html)){
+                        return rs;
+                    }
                 }
+                switch(where){
+                    case "beforebegin":
+                        el.insertAdjacentHTML('BeforeBegin', html);
+                        return el.previousSibling;
+                    case "afterbegin":
+                        el.insertAdjacentHTML('AfterBegin', html);
+                        return el.firstChild;
+                    case "beforeend":
+                        el.insertAdjacentHTML('BeforeEnd', html);
+                        return el.lastChild;
+                    case "afterend":
+                        el.insertAdjacentHTML('AfterEnd', html);
+                        return el.nextSibling;
+                }
+                throw 'Illegal insertion point -> "' + where + '"';
             }
+            var range = el.ownerDocument.createRange();
+            var frag;
             switch(where){
-                case "beforebegin":
-                    el.insertAdjacentHTML('BeforeBegin', html);
+                 case "beforebegin":
+                    range.setStartBefore(el);
+                    frag = range.createContextualFragment(html);
+                    el.parentNode.insertBefore(frag, el);
                     return el.previousSibling;
-                case "afterbegin":
-                    el.insertAdjacentHTML('AfterBegin', html);
-                    return el.firstChild;
+                 case "afterbegin":
+                    if(el.firstChild){
+                        range.setStartBefore(el.firstChild);
+                        frag = range.createContextualFragment(html);
+                        el.insertBefore(frag, el.firstChild);
+                        return el.firstChild;
+                    }else{
+                        el.innerHTML = html;
+                        return el.firstChild;
+                    }
                 case "beforeend":
-                    el.insertAdjacentHTML('BeforeEnd', html);
-                    return el.lastChild;
+                    if(el.lastChild){
+                        range.setStartAfter(el.lastChild);
+                        frag = range.createContextualFragment(html);
+                        el.appendChild(frag);
+                        return el.lastChild;
+                    }else{
+                        el.innerHTML = html;
+                        return el.lastChild;
+                    }
                 case "afterend":
-                    el.insertAdjacentHTML('AfterEnd', html);
-                    return el.nextSibling;
-            }
-            throw 'Illegal insertion point -> "' + where + '"';
-        }
-        var range = el.ownerDocument.createRange();
-        var frag;
-        switch(where){
-             case "beforebegin":
-                range.setStartBefore(el);
-                frag = range.createContextualFragment(html);
-                el.parentNode.insertBefore(frag, el);
-                return el.previousSibling;
-             case "afterbegin":
-                if(el.firstChild){
-                    range.setStartBefore(el.firstChild);
+                    range.setStartAfter(el);
                     frag = range.createContextualFragment(html);
-                    el.insertBefore(frag, el.firstChild);
-                    return el.firstChild;
-                }else{
-                    el.innerHTML = html;
-                    return el.firstChild;
+                    el.parentNode.insertBefore(frag, el.nextSibling);
+                    return el.nextSibling;
                 }
-            case "beforeend":
-                if(el.lastChild){
-                    range.setStartAfter(el.lastChild);
-                    frag = range.createContextualFragment(html);
-                    el.appendChild(frag);
-                    return el.lastChild;
-                }else{
-                    el.innerHTML = html;
-                    return el.lastChild;
+                throw 'Illegal insertion point -> "' + where + '"';
+        },
+    
+        /**
+         * Creates new Dom element(s) and inserts them before el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        insertBefore : function(el, o, returnElement){
+            return this.doInsert(el, o, returnElement, "beforeBegin");
+        },
+    
+        /**
+         * Creates new Dom element(s) and inserts them after el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object} o The Dom object spec (and children)
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        insertAfter : function(el, o, returnElement){
+            return this.doInsert(el, o, returnElement, "afterEnd", "nextSibling");
+        },
+    
+        /**
+         * Creates new Dom element(s) and inserts them as the first child of el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        insertFirst : function(el, o, returnElement){
+            return this.doInsert(el, o, returnElement, "afterBegin");
+        },
+    
+        // private
+        doInsert : function(el, o, returnElement, pos, sibling){
+            el = Roo.getDom(el);
+            var newNode;
+            if(this.useDom || o.ns){
+                newNode = createDom(o, null);
+                el.parentNode.insertBefore(newNode, sibling ? el[sibling] : el);
+            }else{
+                var html = createHtml(o);
+                newNode = this.insertHtml(pos, el, html);
+            }
+            return returnElement ? Roo.get(newNode, true) : newNode;
+        },
+    
+        /**
+         * Creates new Dom element(s) and appends them to el
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        append : function(el, o, returnElement){
+            el = Roo.getDom(el);
+            var newNode;
+            if(this.useDom || o.ns){
+                newNode = createDom(o, null);
+                el.appendChild(newNode);
+            }else{
+                var html = createHtml(o);
+                newNode = this.insertHtml("beforeEnd", el, html);
+            }
+            return returnElement ? Roo.get(newNode, true) : newNode;
+        },
+    
+        /**
+         * Creates new Dom element(s) and overwrites the contents of el with them
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         * @param {Boolean} returnElement (optional) true to return a Roo.Element
+         * @return {HTMLElement/Roo.Element} The new node
+         */
+        overwrite : function(el, o, returnElement)
+        {
+            el = Roo.getDom(el);
+            if (o.ns) {
+              
+                while (el.childNodes.length) {
+                    el.removeChild(el.firstChild);
                 }
-            case "afterend":
-                range.setStartAfter(el);
-                frag = range.createContextualFragment(html);
-                el.parentNode.insertBefore(frag, el.nextSibling);
-                return el.nextSibling;
+                createDom(o, el);
+            } else {
+                el.innerHTML = createHtml(o);   
             }
-            throw 'Illegal insertion point -> "' + where + '"';
-    },
-
-    /**
-     * Creates new Dom element(s) and inserts them before el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    insertBefore : function(el, o, returnElement){
-        return this.doInsert(el, o, returnElement, "beforeBegin");
-    },
-
-    /**
-     * Creates new Dom element(s) and inserts them after el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object} o The Dom object spec (and children)
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    insertAfter : function(el, o, returnElement){
-        return this.doInsert(el, o, returnElement, "afterEnd", "nextSibling");
-    },
-
-    /**
-     * Creates new Dom element(s) and inserts them as the first child of el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    insertFirst : function(el, o, returnElement){
-        return this.doInsert(el, o, returnElement, "afterBegin");
-    },
-
-    // private
-    doInsert : function(el, o, returnElement, pos, sibling){
-        el = Roo.getDom(el);
-        var newNode;
-        if(this.useDom || o.ns){
-            newNode = createDom(o, null);
-            el.parentNode.insertBefore(newNode, sibling ? el[sibling] : el);
-        }else{
-            var html = createHtml(o);
-            newNode = this.insertHtml(pos, el, html);
-        }
-        return returnElement ? Roo.get(newNode, true) : newNode;
-    },
-
-    /**
-     * Creates new Dom element(s) and appends them to el
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    append : function(el, o, returnElement){
-        el = Roo.getDom(el);
-        var newNode;
-        if(this.useDom || o.ns){
-            newNode = createDom(o, null);
-            el.appendChild(newNode);
-        }else{
+            
+            return returnElement ? Roo.get(el.firstChild, true) : el.firstChild;
+        },
+    
+        /**
+         * Creates a new Roo.DomHelper.Template from the Dom object spec
+         * @param {Object} o The Dom object spec (and children)
+         * @return {Roo.DomHelper.Template} The new template
+         */
+        createTemplate : function(o){
             var html = createHtml(o);
-            newNode = this.insertHtml("beforeEnd", el, html);
-        }
-        return returnElement ? Roo.get(newNode, true) : newNode;
-    },
-
-    /**
-     * Creates new Dom element(s) and overwrites the contents of el with them
-     * @param {String/HTMLElement/Element} el The context element
-     * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
-     * @param {Boolean} returnElement (optional) true to return a Roo.Element
-     * @return {HTMLElement/Roo.Element} The new node
-     */
-    overwrite : function(el, o, returnElement){
-        el = Roo.getDom(el);
-        if (o.ns) {
-          
-            while (el.childNodes.length) {
-                el.removeChild(el.firstChild);
-            }
-            createDom(o, el);
-        } else {
-            el.innerHTML = createHtml(o);   
+            return new Roo.Template(html);
+        },
+         /**
+         * Updates the first element with the spec from the o (replacing if necessary)
+         * This iterates through the children, and updates attributes / children etc..
+         * @param {String/HTMLElement/Element} el The context element
+         * @param {Object/String} o The Dom object spec (and children) or raw HTML blob
+         */
+        
+        update : function(el, o)
+        {
+            updateNode(Roo.getDom(el), createDom(o));
+            
         }
         
-        return returnElement ? Roo.get(el.firstChild, true) : el.firstChild;
-    },
-
-    /**
-     * Creates a new Roo.DomHelper.Template from the Dom object spec
-     * @param {Object} o The Dom object spec (and children)
-     * @return {Roo.DomHelper.Template} The new template
-     */
-    createTemplate : function(o){
-        var html = createHtml(o);
-        return new Roo.Template(html);
-    }
+        
     };
 }();
 /*
@@ -24537,6 +25135,16 @@ Roo.extend(Roo.data.Store, Roo.util.Observable, {
      * <p>
      * @param {Object} options An object containing properties which control loading options:<ul>
      * <li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>
+     * <li>params.data {Object} if you are using a MemoryProxy / JsonReader, use this as the data to load stuff..
+     * <pre>
+                {
+                    data : data,  // array of key=>value data like JsonReader
+                    total : data.length,
+                    success : true
+                    
+                }
+        </pre>
+            }.</li>
      * <li>callback {Function} A function to be called after the Records have been loaded. The callback is
      * passed the following arguments:<ul>
      * <li>r : Roo.data.Record[]</li>
@@ -30877,7 +31485,7 @@ Roo.MenuButton = Roo.SplitButton;/*
 
 /**
  * @class Roo.Toolbar
- * @children   Roo.Toolbar.Item Roo.form.Field
+ * @children   Roo.Toolbar.Item Roo.Toolbar.Button Roo.Toolbar.SplitButton Roo.form.Field 
  * Basic Toolbar class.
  * @constructor
  * Creates a new Toolbar
@@ -31413,7 +32021,23 @@ Roo.extend(Roo.Toolbar.TextItem, Roo.Toolbar.Item, {
      
     enable:Roo.emptyFn,
     disable:Roo.emptyFn,
-    focus:Roo.emptyFn
+    focus:Roo.emptyFn,
+     /**
+     * Shows this button
+     */
+    show: function(){
+        this.hidden = false;
+        this.el.style.display = "";
+    },
+    
+    /**
+     * Hides this button
+     */
+    hide: function(){
+        this.hidden = true;
+        this.el.style.display = "none";
+    }
+    
 });
 
 /**
@@ -31536,7 +32160,7 @@ Roo.Toolbar.MenuButton = Roo.Toolbar.SplitButton;/*
 /**
  * @class Roo.PagingToolbar
  * @extends Roo.Toolbar
- * @children   Roo.Toolbar.Item Roo.form.Field
+ * @children   Roo.Toolbar.Item Roo.Toolbar.Button Roo.Toolbar.SplitButton Roo.form.Field
  * A specialized toolbar that is bound to a {@link Roo.data.Store} and provides automatic paging controls.
  * @constructor
  * Create a new PagingToolbar
@@ -31779,7 +32403,11 @@ Roo.extend(Roo.PagingToolbar, Roo.Toolbar, {
             this.loading.disable();
         }
     },
-
+    /**
+     * event that occurs when you click on the navigation buttons - can be used to trigger load of a grid.
+     * @param {String} which (first|prev|next|last|refresh)  which button to press.
+     *
+     */
     // private
     onClick : function(which){
         var ds = this.ds;
@@ -32869,6 +33497,7 @@ Roo.extend(Roo.Editor, Roo.Component, {
 /**
  * @class Roo.BasicDialog
  * @extends Roo.util.Observable
+ * @parent none builder
  * Lightweight Dialog Class.  The code below shows the creation of a typical dialog using existing HTML markup:
  * <pre><code>
 var dlg = new Roo.BasicDialog("my-dlg", {
@@ -34146,6 +34775,7 @@ Roo.extend(Roo.LayoutDialog, Roo.BasicDialog, {
  
 /**
  * @class Roo.MessageBox
+ * @static
  * Utility class for generating different styles of message boxes.  The alias Roo.Msg can also be used.
  * Example usage:
  *<pre><code>
@@ -34255,6 +34885,7 @@ Roo.MessageBox = function(){
                         }
                     }
                 });
+              
                 dlg.on("hide", handleHide);
                 mask = dlg.mask;
                 dlg.addKeyListener(27, handleEsc);
@@ -34498,6 +35129,7 @@ Roo.Msg.show({
                 d.animateTarget = null;
                 d.show(options.animEl);
             }
+            dlg.toFront();
             return this;
         },
 
@@ -38279,7 +38911,7 @@ Roo.extend(Roo.tree.ColumnTree, Roo.tree.TreePanel, {
 /**
  * @class Roo.menu.Menu
  * @extends Roo.util.Observable
- * @children Roo.menu.BaseItem
+ * @children Roo.menu.Item Roo.menu.Separator Roo.menu.TextItem
  * A menu object.  This is the container to which you add all other menu items.  Menu can also serve a as a base class
  * when you want a specialzed menu based off of another component (like {@link Roo.menu.DateMenu} for example).
  * @constructor
@@ -39364,7 +39996,7 @@ Roo.extend(Roo.menu.Item, Roo.menu.BaseItem, {
      */
     text: '',
      /**
-     * @cfg {String} HTML to render in menu
+     * @cfg {String} html to render in menu
      * The text to show on the menu item (HTML version).
      */
     html: '',
@@ -41437,6 +42069,16 @@ Roo.extend(Roo.form.DateField, Roo.form.TriggerField,  {
      * The tooltip text to display when the date falls on a disabled date (defaults to 'Disabled')
      */
     disabledDatesText : "Disabled",
+       
+       
+       /**
+     * @cfg {Date/String} zeroValue
+     * if the date is less that this number, then the field is rendered as empty
+     * default is 1800
+     */
+       zeroValue : '1800-01-01',
+       
+       
     /**
      * @cfg {Date/String} minValue
      * The minimum allowed date. Can be either a Javascript date object or a string date in a
@@ -41613,6 +42255,15 @@ dateField.setValue('2006-5-4');
 
     // private
     parseDate : function(value){
+               
+               if (value instanceof Date) {
+                       if (value < Date.parseDate(this.zeroValue, 'Y-m-d') ) {
+                               return  '';
+                       }
+                       return value;
+               }
+               
+               
         if(!value || value instanceof Date){
             return value;
         }
@@ -41628,6 +42279,9 @@ dateField.setValue('2006-5-4');
                 v = Date.parseDate(value, this.altFormatsArray[i]);
             }
         }
+               if (v < Date.parseDate(this.zeroValue, 'Y-m-d') ) {
+                       v = '';
+               }
         return v;
     },
 
@@ -44412,269 +45066,4663 @@ Roo.extend(Roo.form.Radio, Roo.form.Checkbox, {
     } 
     
     
-});//<script type="text/javascript">
-
-/*
- * Based  Ext JS Library 1.1.1
- * Copyright(c) 2006-2007, Ext JS, LLC.
- * LGPL
- *
- */
-/**
- * @class Roo.HtmlEditorCore
- * @extends Roo.Component
- * Provides a the editing component for the HTML editors in Roo. (bootstrap and Roo.form)
- *
- * any element that has display set to 'none' can cause problems in Safari and Firefox.<br/><br/>
- */
+});Roo.rtf = {}; // namespace
+Roo.rtf.Hex = function(hex)
+{
+    this.hexstr = hex;
+};
+Roo.rtf.Paragraph = function(opts)
+{
+    this.content = []; ///??? is that used?
+};Roo.rtf.Span = function(opts)
+{
+    this.value = opts.value;
+};
 
-Roo.HtmlEditorCore = function(config){
-    
-    
-    Roo.HtmlEditorCore.superclass.constructor.call(this, config);
-    
+Roo.rtf.Group = function(parent)
+{
+    // we dont want to acutally store parent - it will make debug a nightmare..
+    this.content = [];
+    this.cn  = [];
+     
+       
     
-    this.addEvents({
-        /**
-         * @event initialize
-         * Fires when the editor is fully initialized (including the iframe)
-         * @param {Roo.HtmlEditorCore} this
-         */
-        initialize: true,
-        /**
-         * @event activate
-         * Fires when the editor is first receives the focus. Any insertion must wait
-         * until after this event.
-         * @param {Roo.HtmlEditorCore} this
-         */
-        activate: true,
-         /**
-         * @event beforesync
-         * Fires before the textarea is updated with content from the editor iframe. Return false
-         * to cancel the sync.
-         * @param {Roo.HtmlEditorCore} this
-         * @param {String} html
-         */
-        beforesync: true,
-         /**
-         * @event beforepush
-         * Fires before the iframe editor is updated with content from the textarea. Return false
-         * to cancel the push.
-         * @param {Roo.HtmlEditorCore} this
-         * @param {String} html
-         */
-        beforepush: true,
-         /**
-         * @event sync
-         * Fires when the textarea is updated with content from the editor iframe.
-         * @param {Roo.HtmlEditorCore} this
-         * @param {String} html
-         */
-        sync: true,
-         /**
-         * @event push
-         * Fires when the iframe editor is updated with content from the textarea.
-         * @param {Roo.HtmlEditorCore} this
-         * @param {String} html
-         */
-        push: true,
+};
+
+Roo.rtf.Group.prototype = {
+    ignorable : false,
+    content: false,
+    cn: false,
+    addContent : function(node) {
+        // could set styles...
+        this.content.push(node);
+    },
+    addChild : function(cn)
+    {
+        this.cn.push(cn);
+    },
+    // only for images really...
+    toDataURL : function()
+    {
+        var mimetype = false;
+        switch(true) {
+            case this.content.filter(function(a) { return a.value == 'pngblip' } ).length > 0: 
+                mimetype = "image/png";
+                break;
+             case this.content.filter(function(a) { return a.value == 'jpegblip' } ).length > 0:
+                mimetype = "image/jpeg";
+                break;
+            default :
+                return 'about:blank'; // ?? error?
+        }
         
-        /**
-         * @event editorevent
-         * Fires when on any editor (mouse up/down cursor movement etc.) - used for toolbar hooks.
-         * @param {Roo.HtmlEditorCore} this
-         */
-        editorevent: true
         
-    });
-    
-    // at this point this.owner is set, so we can start working out the whitelisted / blacklisted elements
+        var hexstring = this.content[this.content.length-1].value;
+        
+        return 'data:' + mimetype + ';base64,' + btoa(hexstring.match(/\w{2}/g).map(function(a) {
+            return String.fromCharCode(parseInt(a, 16));
+        }).join(""));
+    }
     
-    // defaults : white / black...
-    this.applyBlacklists();
+};
+// this looks like it's normally the {rtf{ .... }}
+Roo.rtf.Document = function()
+{
+    // we dont want to acutally store parent - it will make debug a nightmare..
+    this.rtlch  = [];
+    this.content = [];
+    this.cn = [];
     
+};
+Roo.extend(Roo.rtf.Document, Roo.rtf.Group, { 
+    addChild : function(cn)
+    {
+        this.cn.push(cn);
+        switch(cn.type) {
+            case 'rtlch': // most content seems to be inside this??
+            case 'listtext':
+            case 'shpinst':
+                this.rtlch.push(cn);
+                return;
+            default:
+                this[cn.type] = cn;
+        }
+        
+    },
     
+    getElementsByType : function(type)
+    {
+        var ret =  [];
+        this._getElementsByType(type, ret, this.cn, 'rtf');
+        return ret;
+    },
+    _getElementsByType : function (type, ret, search_array, path)
+    {
+        search_array.forEach(function(n,i) {
+            if (n.type == type) {
+                n.path = path + '/' + n.type + ':' + i;
+                ret.push(n);
+            }
+            if (n.cn.length > 0) {
+                this._getElementsByType(type, ret, n.cn, path + '/' + n.type+':'+i);
+            }
+        },this);
+    }
     
+});
+Roo.rtf.Ctrl = function(opts)
+{
+    this.value = opts.value;
+    this.param = opts.param;
 };
+/**
+ *
+ *
+ * based on this https://github.com/iarna/rtf-parser
+ * it's really only designed to extract pict from pasted RTF 
+ *
+ * usage:
+ *
+ *  var images = new Roo.rtf.Parser().parse(a_string).filter(function(g) { return g.type == 'pict'; });
+ *  
+ *
+ */
 
 
-Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
 
 
-     /**
-     * @cfg {Roo.form.HtmlEditor|Roo.bootstrap.HtmlEditor} the owner field 
-     */
+Roo.rtf.Parser = function(text) {
+    //super({objectMode: true})
+    this.text = '';
+    this.parserState = this.parseText;
     
-    owner : false,
+    // these are for interpeter...
+    this.doc = {};
+    ///this.parserState = this.parseTop
+    this.groupStack = [];
+    this.hexStore = [];
+    this.doc = false;
     
-     /**
-     * @cfg {String} resizable  's' or 'se' or 'e' - wrapps the element in a
-     *                        Roo.resizable.
-     */
-    resizable : false,
-     /**
-     * @cfg {Number} height (in pixels)
-     */   
-    height: 300,
-   /**
-     * @cfg {Number} width (in pixels)
-     */   
-    width: 500,
+    this.groups = []; // where we put the return.
     
-    /**
-     * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets.
-     * 
-     */
-    stylesheets: false,
+    for (var ii = 0; ii < text.length; ++ii) {
+        ++this.cpos;
+        
+        if (text[ii] === '\n') {
+            ++this.row;
+            this.col = 1;
+        } else {
+            ++this.col;
+        }
+        this.parserState(text[ii]);
+    }
     
-    /**
-     * @cfg {boolean} allowComments - default false - allow comments in HTML source - by default they are stripped - if you are editing email you may need this.
-     */
-    allowComments: false,
-    // id of frame..
-    frameId: false,
     
-    // private properties
-    validationEvent : false,
-    deferHeight: true,
-    initialized : false,
-    activated : false,
-    sourceEditMode : false,
-    onFocus : Roo.emptyFn,
-    iframePad:3,
-    hideMode:'offsets',
     
-    clearUp: true,
+};
+Roo.rtf.Parser.prototype = {
+    text : '', // string being parsed..
+    controlWord : '',
+    controlWordParam :  '',
+    hexChar : '',
+    doc : false,
+    group: false,
+    groupStack : false,
+    hexStore : false,
     
-    // blacklist + whitelisted elements..
-    black: false,
-    white: false,
-     
-    bodyCls : '',
+    
+    cpos : 0, 
+    row : 1, // reportin?
+    col : 1, //
 
-    /**
-     * Protected method that will not generally be called directly. It
-     * is called when the editor initializes the iframe with HTML contents. Override this method if you
-     * want to change the initialization markup of the iframe (e.g. to add stylesheets).
-     */
-    getDocMarkup : function(){
-        // body styles..
-        var st = '';
-        
-        // inherit styels from page...?? 
-        if (this.stylesheets === false) {
-            
-            Roo.get(document.head).select('style').each(function(node) {
-                st += node.dom.outerHTML || new XMLSerializer().serializeToString(node.dom);
-            });
-            
-            Roo.get(document.head).select('link').each(function(node) { 
-                st += node.dom.outerHTML || new XMLSerializer().serializeToString(node.dom);
-            });
-            
-        } else if (!this.stylesheets.length) {
-                // simple..
-                st = '<style type="text/css">' +
-                    'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
-                   '</style>';
-        } else {
-            for (var i in this.stylesheets) { 
-                st += '<link rel="stylesheet" href="' + this.stylesheets[i] +'" type="text/css">';
-            }
-            
+     
+    push : function (el)
+    {
+        var m = 'cmd'+ el.type;
+        if (typeof(this[m]) == 'undefined') {
+            Roo.log('invalid cmd:' + el.type);
+            return;
+        }
+        this[m](el);
+        //Roo.log(el);
+    },
+    flushHexStore : function()
+    {
+        if (this.hexStore.length < 1) {
+            return;
         }
+        var hexstr = this.hexStore.map(
+            function(cmd) {
+                return cmd.value;
+        }).join('');
         
-        st +=  '<style type="text/css">' +
-            'IMG { cursor: pointer } ' +
-        '</style>';
-
-        var cls = 'roo-htmleditor-body';
+        this.group.addContent( new Roo.rtf.Hex( hexstr ));
+              
+            
+        this.hexStore.splice(0)
         
-        if(this.bodyCls.length){
-            cls += ' ' + this.bodyCls;
+    },
+    
+    cmdgroupstart : function()
+    {
+        this.flushHexStore();
+        if (this.group) {
+            this.groupStack.push(this.group);
         }
-        
-        return '<html><head>' + st  +
-            //<style type="text/css">' +
-            //'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
-            //'</style>' +
-            ' </head><body contenteditable="true" data-enable-grammerly="true" class="' +  cls + '"></body></html>';
+         // parent..
+        if (this.doc === false) {
+            this.group = this.doc = new Roo.rtf.Document();
+            return;
+            
+        }
+        this.group = new Roo.rtf.Group(this.group);
     },
-
-    // private
-    onRender : function(ct, position)
+    cmdignorable : function()
     {
-        var _t = this;
-        //Roo.HtmlEditorCore.superclass.onRender.call(this, ct, position);
-        this.el = this.owner.inputEl ? this.owner.inputEl() : this.owner.el;
-        
-        
-        this.el.dom.style.border = '0 none';
-        this.el.dom.setAttribute('tabIndex', -1);
-        this.el.addClass('x-hidden hide');
-        
+        this.flushHexStore();
+        this.group.ignorable = true;
+    },
+    cmdendparagraph : function()
+    {
+        this.flushHexStore();
+        this.group.addContent(new Roo.rtf.Paragraph());
+    },
+    cmdgroupend : function ()
+    {
+        this.flushHexStore();
+        var endingGroup = this.group;
         
         
-        if(Roo.isIE){ // fix IE 1px bogus margin
-            this.el.applyStyles('margin-top:-1px;margin-bottom:-1px;')
+        this.group = this.groupStack.pop();
+        if (this.group) {
+            this.group.addChild(endingGroup);
         }
-       
-        
-        this.frameId = Roo.id();
-        
-         
-        
-        var iframe = this.owner.wrap.createChild({
-            tag: 'iframe',
-            cls: 'form-control', // bootstrap..
-            id: this.frameId,
-            name: this.frameId,
-            frameBorder : 'no',
-            'src' : Roo.SSL_SECURE_URL ? Roo.SSL_SECURE_URL  :  "javascript:false"
-        }, this.el
-        );
         
         
-        this.iframe = iframe.dom;
-
-         this.assignDocWin();
-        
-        this.doc.designMode = 'on';
-       
-        this.doc.open();
-        this.doc.write(this.getDocMarkup());
-        this.doc.close();
-
         
-        var task = { // must defer to wait for browser to be ready
-            run : function(){
-                //console.log("run task?" + this.doc.readyState);
-                this.assignDocWin();
-                if(this.doc.body || this.doc.readyState == 'complete'){
-                    try {
-                        this.doc.designMode="on";
-                    } catch (e) {
-                        return;
-                    }
-                    Roo.TaskMgr.stop(task);
-                    this.initEditor.defer(10, this);
-                }
-            },
-            interval : 10,
-            duration: 10000,
-            scope: this
-        };
-        Roo.TaskMgr.start(task);
-
+        var doc = this.group || this.doc;
+        //if (endingGroup instanceof FontTable) {
+        //  doc.fonts = endingGroup.table
+        //} else if (endingGroup instanceof ColorTable) {
+        //  doc.colors = endingGroup.table
+        //} else if (endingGroup !== this.doc && !endingGroup.get('ignorable')) {
+        if (endingGroup.ignorable === false) {
+            //code
+            this.groups.push(endingGroup);
+           // Roo.log( endingGroup );
+        }
+            //Roo.each(endingGroup.content, function(item)) {
+            //    doc.addContent(item);
+            //}
+            //process.emit('debug', 'GROUP END', endingGroup.type, endingGroup.get('ignorable'))
+        //}
     },
-
-    // private
-    onResize : function(w, h)
+    cmdtext : function (cmd)
     {
-         Roo.log('resize: ' +w + ',' + h );
-        //Roo.HtmlEditorCore.superclass.onResize.apply(this, arguments);
-        if(!this.iframe){
+        this.flushHexStore();
+        if (!this.group) { // an RTF fragment, missing the {\rtf1 header
+            //this.group = this.doc
+        }
+        this.group.addContent(new Roo.rtf.Span(cmd));
+    },
+    cmdcontrolword : function (cmd)
+    {
+        this.flushHexStore();
+        if (!this.group.type) {
+            this.group.type = cmd.value;
+            return;
+        }
+        this.group.addContent(new Roo.rtf.Ctrl(cmd));
+        // we actually don't care about ctrl words...
+        return ;
+        /*
+        var method = 'ctrl$' + cmd.value.replace(/-(.)/g, (_, char) => char.toUpperCase())
+        if (this[method]) {
+            this[method](cmd.param)
+        } else {
+            if (!this.group.get('ignorable')) process.emit('debug', method, cmd.param)
+        }
+        */
+    },
+    cmdhexchar : function(cmd) {
+        this.hexStore.push(cmd);
+    },
+    cmderror : function(cmd) {
+        throw new Exception (cmd.value);
+    },
+    
+    /*
+      _flush (done) {
+        if (this.text !== '\u0000') this.emitText()
+        done()
+      }
+      */
+      
+      
+    parseText : function(c)
+    {
+        if (c === '\\') {
+            this.parserState = this.parseEscapes;
+        } else if (c === '{') {
+            this.emitStartGroup();
+        } else if (c === '}') {
+            this.emitEndGroup();
+        } else if (c === '\x0A' || c === '\x0D') {
+            // cr/lf are noise chars
+        } else {
+            this.text += c;
+        }
+    },
+    
+    parseEscapes: function (c)
+    {
+        if (c === '\\' || c === '{' || c === '}') {
+            this.text += c;
+            this.parserState = this.parseText;
+        } else {
+            this.parserState = this.parseControlSymbol;
+            this.parseControlSymbol(c);
+        }
+    },
+    parseControlSymbol: function(c)
+    {
+        if (c === '~') {
+            this.text += '\u00a0'; // nbsp
+            this.parserState = this.parseText
+        } else if (c === '-') {
+             this.text += '\u00ad'; // soft hyphen
+        } else if (c === '_') {
+            this.text += '\u2011'; // non-breaking hyphen
+        } else if (c === '*') {
+            this.emitIgnorable();
+            this.parserState = this.parseText;
+        } else if (c === "'") {
+            this.parserState = this.parseHexChar;
+        } else if (c === '|') { // formula cacter
+            this.emitFormula();
+            this.parserState = this.parseText;
+        } else if (c === ':') { // subentry in an index entry
+            this.emitIndexSubEntry();
+            this.parserState = this.parseText;
+        } else if (c === '\x0a') {
+            this.emitEndParagraph();
+            this.parserState = this.parseText;
+        } else if (c === '\x0d') {
+            this.emitEndParagraph();
+            this.parserState = this.parseText;
+        } else {
+            this.parserState = this.parseControlWord;
+            this.parseControlWord(c);
+        }
+    },
+    parseHexChar: function (c)
+    {
+        if (/^[A-Fa-f0-9]$/.test(c)) {
+            this.hexChar += c;
+            if (this.hexChar.length >= 2) {
+              this.emitHexChar();
+              this.parserState = this.parseText;
+            }
+            return;
+        }
+        this.emitError("Invalid character \"" + c + "\" in hex literal.");
+        this.parserState = this.parseText;
+        
+    },
+    parseControlWord : function(c)
+    {
+        if (c === ' ') {
+            this.emitControlWord();
+            this.parserState = this.parseText;
+        } else if (/^[-\d]$/.test(c)) {
+            this.parserState = this.parseControlWordParam;
+            this.controlWordParam += c;
+        } else if (/^[A-Za-z]$/.test(c)) {
+          this.controlWord += c;
+        } else {
+          this.emitControlWord();
+          this.parserState = this.parseText;
+          this.parseText(c);
+        }
+    },
+    parseControlWordParam : function (c) {
+        if (/^\d$/.test(c)) {
+          this.controlWordParam += c;
+        } else if (c === ' ') {
+          this.emitControlWord();
+          this.parserState = this.parseText;
+        } else {
+          this.emitControlWord();
+          this.parserState = this.parseText;
+          this.parseText(c);
+        }
+    },
+    
+    
+    
+    
+    emitText : function () {
+        if (this.text === '') {
+            return;
+        }
+        this.push({
+            type: 'text',
+            value: this.text,
+            pos: this.cpos,
+            row: this.row,
+            col: this.col
+        });
+        this.text = ''
+    },
+    emitControlWord : function ()
+    {
+        this.emitText();
+        if (this.controlWord === '') {
+            this.emitError('empty control word');
+        } else {
+            this.push({
+                  type: 'controlword',
+                  value: this.controlWord,
+                  param: this.controlWordParam !== '' && Number(this.controlWordParam),
+                  pos: this.cpos,
+                  row: this.row,
+                  col: this.col
+            });
+        }
+        this.controlWord = '';
+        this.controlWordParam = '';
+    },
+    emitStartGroup : function ()
+    {
+        this.emitText();
+        this.push({
+            type: 'groupstart',
+            pos: this.cpos,
+            row: this.row,
+            col: this.col
+        });
+    },
+    emitEndGroup : function ()
+    {
+        this.emitText();
+        this.push({
+            type: 'groupend',
+            pos: this.cpos,
+            row: this.row,
+            col: this.col
+        });
+    },
+    emitIgnorable : function ()
+    {
+        this.emitText();
+        this.push({
+            type: 'ignorable',
+            pos: this.cpos,
+            row: this.row,
+            col: this.col
+        });
+    },
+    emitHexChar : function ()
+    {
+        this.emitText();
+        this.push({
+            type: 'hexchar',
+            value: this.hexChar,
+            pos: this.cpos,
+            row: this.row,
+            col: this.col
+        });
+        this.hexChar = ''
+    },
+    emitError : function (message)
+    {
+      this.emitText();
+      this.push({
+            type: 'error',
+            value: message,
+            row: this.row,
+            col: this.col,
+            char: this.cpos //,
+            //stack: new Error().stack
+        });
+    },
+    emitEndParagraph : function () {
+        this.emitText();
+        this.push({
+            type: 'endparagraph',
+            pos: this.cpos,
+            row: this.row,
+            col: this.col
+        });
+    }
+     
+} ;
+Roo.htmleditor = {};
+/**
+ * @class Roo.htmleditor.Filter
+ * Base Class for filtering htmleditor stuff. - do not use this directly - extend it.
+ * @cfg {DomElement} node The node to iterate and filter
+ * @cfg {boolean|String|Array} tag Tags to replace 
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+
+
+Roo.htmleditor.Filter = function(cfg) {
+    Roo.apply(this.cfg);
+    // this does not actually call walk as it's really just a abstract class
+}
+
+
+Roo.htmleditor.Filter.prototype = {
+    
+    node: false,
+    
+    tag: false,
+
+    // overrride to do replace comments.
+    replaceComment : false,
+    
+    // overrride to do replace or do stuff with tags..
+    replaceTag : false,
+    
+    walk : function(dom)
+    {
+        Roo.each( Array.from(dom.childNodes), function( e ) {
+            switch(true) {
+                
+                case e.nodeType == 8 &&  this.replaceComment  !== false: // comment
+                    this.replaceComment(e);
+                    return;
+                
+                case e.nodeType != 1: //not a node.
+                    return;
+                
+                case this.tag === true: // everything
+                case typeof(this.tag) == 'object' && this.tag.indexOf(e.tagName) > -1: // array and it matches.
+                case typeof(this.tag) == 'string' && this.tag == e.tagName: // array and it matches.
+                    if (this.replaceTag && false === this.replaceTag(e)) {
+                        return;
+                    }
+                    if (e.hasChildNodes()) {
+                        this.walk(e);
+                    }
+                    return;
+                
+                default:    // tags .. that do not match.
+                    if (e.hasChildNodes()) {
+                        this.walk(e);
+                    }
+            }
+            
+        }, this);
+        
+    }
+}; 
+
+/**
+ * @class Roo.htmleditor.FilterAttributes
+ * clean attributes and  styles including http:// etc.. in attribute
+ * @constructor
+* Run a new Attribute Filter
+* @param {Object} config Configuration options
+ */
+Roo.htmleditor.FilterAttributes = function(cfg)
+{
+    Roo.apply(this, cfg);
+    this.attrib_black = this.attrib_black || [];
+    this.attrib_white = this.attrib_white || [];
+
+    this.attrib_clean = this.attrib_clean || [];
+    this.style_white = this.style_white || [];
+    this.style_black = this.style_black || [];
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterAttributes, Roo.htmleditor.Filter,
+{
+    tag: true, // all tags
+    
+    attrib_black : false, // array
+    attrib_clean : false,
+    attrib_white : false,
+
+    style_white : false,
+    style_black : false,
+     
+     
+    replaceTag : function(node)
+    {
+        if (!node.attributes || !node.attributes.length) {
+            return true;
+        }
+        
+        for (var i = node.attributes.length-1; i > -1 ; i--) {
+            var a = node.attributes[i];
+            //console.log(a);
+            if (this.attrib_white.length && this.attrib_white.indexOf(a.name.toLowerCase()) < 0) {
+                node.removeAttribute(a.name);
+                continue;
+            }
+            
+            
+            
+            if (a.name.toLowerCase().substr(0,2)=='on')  {
+                node.removeAttribute(a.name);
+                continue;
+            }
+            
+            
+            if (this.attrib_black.indexOf(a.name.toLowerCase()) > -1) {
+                node.removeAttribute(a.name);
+                continue;
+            }
+            if (this.attrib_clean.indexOf(a.name.toLowerCase()) > -1) {
+                this.cleanAttr(node,a.name,a.value); // fixme..
+                continue;
+            }
+            if (a.name == 'style') {
+                this.cleanStyle(node,a.name,a.value);
+                continue;
+            }
+            /// clean up MS crap..
+            // tecnically this should be a list of valid class'es..
+            
+            
+            if (a.name == 'class') {
+                if (a.value.match(/^Mso/)) {
+                    node.removeAttribute('class');
+                }
+                
+                if (a.value.match(/^body$/)) {
+                    node.removeAttribute('class');
+                }
+                continue;
+            }
+            
+            
+            // style cleanup!?
+            // class cleanup?
+            
+        }
+        return true; // clean children
+    },
+        
+    cleanAttr: function(node, n,v)
+    {
+        
+        if (v.match(/^\./) || v.match(/^\//)) {
+            return;
+        }
+        if (v.match(/^(http|https):\/\//)
+            || v.match(/^mailto:/) 
+            || v.match(/^ftp:/)
+            || v.match(/^data:/)
+            ) {
+            return;
+        }
+        if (v.match(/^#/)) {
+            return;
+        }
+        if (v.match(/^\{/)) { // allow template editing.
+            return;
+        }
+//            Roo.log("(REMOVE TAG)"+ node.tagName +'.' + n + '=' + v);
+        node.removeAttribute(n);
+        
+    },
+    cleanStyle : function(node,  n,v)
+    {
+        if (v.match(/expression/)) { //XSS?? should we even bother..
+            node.removeAttribute(n);
+            return;
+        }
+        
+        var parts = v.split(/;/);
+        var clean = [];
+        
+        Roo.each(parts, function(p) {
+            p = p.replace(/^\s+/g,'').replace(/\s+$/g,'');
+            if (!p.length) {
+                return true;
+            }
+            var l = p.split(':').shift().replace(/\s+/g,'');
+            l = l.replace(/^\s+/g,'').replace(/\s+$/g,'');
+            
+            if ( this.style_black.length && (this.style_black.indexOf(l) > -1 || this.style_black.indexOf(l.toLowerCase()) > -1)) {
+                return true;
+            }
+            //Roo.log()
+            // only allow 'c whitelisted system attributes'
+            if ( this.style_white.length &&  style_white.indexOf(l) < 0 && style_white.indexOf(l.toLowerCase()) < 0 ) {
+                return true;
+            }
+            
+            
+            clean.push(p);
+            return true;
+        },this);
+        if (clean.length) { 
+            node.setAttribute(n, clean.join(';'));
+        } else {
+            node.removeAttribute(n);
+        }
+        
+    }
+        
+        
+        
+    
+});/**
+ * @class Roo.htmleditor.FilterBlack
+ * remove blacklisted elements.
+ * @constructor
+ * Run a new Blacklisted Filter
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.FilterBlack = function(cfg)
+{
+    Roo.apply(this, cfg);
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterBlack, Roo.htmleditor.Filter,
+{
+    tag : true, // all elements.
+   
+    replaceTag : function(n)
+    {
+        n.parentNode.removeChild(n);
+    }
+});
+/**
+ * @class Roo.htmleditor.FilterComment
+ * remove comments.
+ * @constructor
+* Run a new Comments Filter
+* @param {Object} config Configuration options
+ */
+Roo.htmleditor.FilterComment = function(cfg)
+{
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterComment, Roo.htmleditor.Filter,
+{
+  
+    replaceComment : function(n)
+    {
+        n.parentNode.removeChild(n);
+    }
+});/**
+ * @class Roo.htmleditor.FilterKeepChildren
+ * remove tags but keep children
+ * @constructor
+ * Run a new Keep Children Filter
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.FilterKeepChildren = function(cfg)
+{
+    Roo.apply(this, cfg);
+    if (this.tag === false) {
+        return; // dont walk.. (you can use this to use this just to do a child removal on a single tag )
+    }
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterKeepChildren, Roo.htmleditor.FilterBlack,
+{
+    
+  
+    replaceTag : function(node)
+    {
+        // walk children...
+        //Roo.log(node);
+        var ar = Array.from(node.childNodes);
+        //remove first..
+        for (var i = 0; i < ar.length; i++) {
+            if (ar[i].nodeType == 1) {
+                if (
+                    (typeof(this.tag) == 'object' && this.tag.indexOf(ar[i].tagName) > -1)
+                    || // array and it matches
+                    (typeof(this.tag) == 'string' && this.tag == ar[i].tagName)
+                ) {
+                    this.replaceTag(ar[i]); // child is blacklisted as well...
+                    continue;
+                }
+            }
+        }  
+        ar = Array.from(node.childNodes);
+        for (var i = 0; i < ar.length; i++) {
+         
+            node.removeChild(ar[i]);
+            // what if we need to walk these???
+            node.parentNode.insertBefore(ar[i], node);
+            if (this.tag !== false) {
+                this.walk(ar[i]);
+                
+            }
+        }
+        node.parentNode.removeChild(node);
+        return false; // don't walk children
+        
+        
+    }
+});/**
+ * @class Roo.htmleditor.FilterParagraph
+ * paragraphs cause a nightmare for shared content - this filter is designed to be called ? at various points when editing
+ * like on 'push' to remove the <p> tags and replace them with line breaks.
+ * @constructor
+ * Run a new Paragraph Filter
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.FilterParagraph = function(cfg)
+{
+    // no need to apply config.
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterParagraph, Roo.htmleditor.Filter,
+{
+    
+     
+    tag : 'P',
+    
+     
+    replaceTag : function(node)
+    {
+        
+        if (node.childNodes.length == 1 &&
+            node.childNodes[0].nodeType == 3 &&
+            node.childNodes[0].textContent.trim().length < 1
+            ) {
+            // remove and replace with '<BR>';
+            node.parentNode.replaceChild(node.ownerDocument.createElement('BR'),node);
+            return false; // no need to walk..
+        }
+        var ar = Array.from(node.childNodes);
+        for (var i = 0; i < ar.length; i++) {
+            node.removeChild(ar[i]);
+            // what if we need to walk these???
+            node.parentNode.insertBefore(ar[i], node);
+        }
+        // now what about this?
+        // <p> &nbsp; </p>
+        
+        // double BR.
+        node.parentNode.insertBefore(node.ownerDocument.createElement('BR'), node);
+        node.parentNode.insertBefore(node.ownerDocument.createElement('BR'), node);
+        node.parentNode.removeChild(node);
+        
+        return false;
+
+    }
+    
+});/**
+ * @class Roo.htmleditor.FilterSpan
+ * filter span's with no attributes out..
+ * @constructor
+ * Run a new Span Filter
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.FilterSpan = function(cfg)
+{
+    // no need to apply config.
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterSpan, Roo.htmleditor.FilterKeepChildren,
+{
+     
+    tag : 'SPAN',
+     
+    replaceTag : function(node)
+    {
+        if (node.attributes && node.attributes.length > 0) {
+            return true; // walk if there are any.
+        }
+        Roo.htmleditor.FilterKeepChildren.prototype.replaceTag.call(this, node);
+        return false;
+     
+    }
+    
+});/**
+ * @class Roo.htmleditor.FilterTableWidth
+  try and remove table width data - as that frequently messes up other stuff.
+ * 
+ *      was cleanTableWidths.
+ *
+ * Quite often pasting from word etc.. results in tables with column and widths.
+ * This does not work well on fluid HTML layouts - like emails. - so this code should hunt an destroy them..
+ *
+ * @constructor
+ * Run a new Table Filter
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.FilterTableWidth = function(cfg)
+{
+    // no need to apply config.
+    this.tag = ['TABLE', 'TD', 'TR', 'TH', 'THEAD', 'TBODY' ];
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterTableWidth, Roo.htmleditor.Filter,
+{
+     
+     
+    
+    replaceTag: function(node) {
+        
+        
+      
+        if (node.hasAttribute('width')) {
+            node.removeAttribute('width');
+        }
+        
+         
+        if (node.hasAttribute("style")) {
+            // pretty basic...
+            
+            var styles = node.getAttribute("style").split(";");
+            var nstyle = [];
+            Roo.each(styles, function(s) {
+                if (!s.match(/:/)) {
+                    return;
+                }
+                var kv = s.split(":");
+                if (kv[0].match(/^\s*(width|min-width)\s*$/)) {
+                    return;
+                }
+                // what ever is left... we allow.
+                nstyle.push(s);
+            });
+            node.setAttribute("style", nstyle.length ? nstyle.join(';') : '');
+            if (!nstyle.length) {
+                node.removeAttribute('style');
+            }
+        }
+        
+        return true; // continue doing children..
+    }
+});/**
+ * @class Roo.htmleditor.FilterWord
+ * try and clean up all the mess that Word generates.
+ * 
+ * This is the 'nice version' - see 'Heavy' that white lists a very short list of elements, and multi-filters 
+ * @constructor
+ * Run a new Span Filter
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.FilterWord = function(cfg)
+{
+    // no need to apply config.
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
+{
+    tag: true,
+     
+    
+    /**
+     * Clean up MS wordisms...
+     */
+    replaceTag : function(node)
+    {
+         
+        // no idea what this does - span with text, replaceds with just text.
+        if(
+                node.nodeName == 'SPAN' &&
+                !node.hasAttributes() &&
+                node.childNodes.length == 1 &&
+                node.firstChild.nodeName == "#text"  
+        ) {
+            var textNode = node.firstChild;
+            node.removeChild(textNode);
+            if (node.getAttribute('lang') != 'zh-CN') {   // do not space pad on chinese characters..
+                node.parentNode.insertBefore(node.ownerDocument.createTextNode(" "), node);
+            }
+            node.parentNode.insertBefore(textNode, node);
+            if (node.getAttribute('lang') != 'zh-CN') {   // do not space pad on chinese characters..
+                node.parentNode.insertBefore(node.ownerDocument.createTextNode(" ") , node);
+            }
+            
+            node.parentNode.removeChild(node);
+            return false; // dont do chidren - we have remove our node - so no need to do chdhilren?
+        }
+        
+   
+        
+        if (node.tagName.toLowerCase().match(/^(style|script|applet|embed|noframes|noscript)$/)) {
+            node.parentNode.removeChild(node);
+            return false; // dont do chidlren
+        }
+        //Roo.log(node.tagName);
+        // remove - but keep children..
+        if (node.tagName.toLowerCase().match(/^(meta|link|\\?xml:|st1:|o:|v:|font)/)) {
+            //Roo.log('-- removed');
+            while (node.childNodes.length) {
+                var cn = node.childNodes[0];
+                node.removeChild(cn);
+                node.parentNode.insertBefore(cn, node);
+                // move node to parent - and clean it..
+                this.replaceTag(cn);
+            }
+            node.parentNode.removeChild(node);
+            /// no need to iterate chidlren = it's got none..
+            //this.iterateChildren(node, this.cleanWord);
+            return false; // no need to iterate children.
+        }
+        // clean styles
+        if (node.className.length) {
+            
+            var cn = node.className.split(/\W+/);
+            var cna = [];
+            Roo.each(cn, function(cls) {
+                if (cls.match(/Mso[a-zA-Z]+/)) {
+                    return;
+                }
+                cna.push(cls);
+            });
+            node.className = cna.length ? cna.join(' ') : '';
+            if (!cna.length) {
+                node.removeAttribute("class");
+            }
+        }
+        
+        if (node.hasAttribute("lang")) {
+            node.removeAttribute("lang");
+        }
+        
+        if (node.hasAttribute("style")) {
+            
+            var styles = node.getAttribute("style").split(";");
+            var nstyle = [];
+            Roo.each(styles, function(s) {
+                if (!s.match(/:/)) {
+                    return;
+                }
+                var kv = s.split(":");
+                if (kv[0].match(/^(mso-|line|font|background|margin|padding|color)/)) {
+                    return;
+                }
+                // what ever is left... we allow.
+                nstyle.push(s);
+            });
+            node.setAttribute("style", nstyle.length ? nstyle.join(';') : '');
+            if (!nstyle.length) {
+                node.removeAttribute('style');
+            }
+        }
+        return true; // do children
+        
+        
+        
+    }
+});
+/**
+ * @class Roo.htmleditor.FilterStyleToTag
+ * part of the word stuff... - certain 'styles' should be converted to tags.
+ * eg.
+ *   font-weight: bold -> bold
+ *   ?? super / subscrit etc..
+ * 
+ * @constructor
+* Run a new style to tag filter.
+* @param {Object} config Configuration options
+ */
+Roo.htmleditor.FilterStyleToTag = function(cfg)
+{
+    
+    this.tags = {
+        B  : [ 'fontWeight' , 'bold'],
+        I :  [ 'fontStyle' , 'italic'],
+        //pre :  [ 'font-style' , 'italic'],
+        // h1.. h6 ?? font-size?
+        SUP : [ 'verticalAlign' , 'super' ],
+        SUB : [ 'verticalAlign' , 'sub' ]
+        
+        
+    };
+    
+    Roo.apply(this, cfg);
+     
+    
+    this.walk(cfg.node);
+    
+    
+    
+}
+
+
+Roo.extend(Roo.htmleditor.FilterStyleToTag, Roo.htmleditor.Filter,
+{
+    tag: true, // all tags
+    
+    tags : false,
+    
+    
+    replaceTag : function(node)
+    {
+        
+        
+        if (node.getAttribute("style") === null) {
+            return true;
+        }
+        var inject = [];
+        for (var k in this.tags) {
+            if (node.style[this.tags[k][0]] == this.tags[k][1]) {
+                inject.push(k);
+                node.style.removeProperty(this.tags[k][0]);
+            }
+        }
+        if (!inject.length) {
+            return true; 
+        }
+        var cn = Array.from(node.childNodes);
+        var nn = node;
+        Roo.each(inject, function(t) {
+            var nc = node.ownerDocument.createElement(t);
+            nn.appendChild(nc);
+            nn = nc;
+        });
+        for(var i = 0;i < cn.length;cn++) {
+            node.removeChild(cn[i]);
+            nn.appendChild(cn[i]);
+        }
+        return true /// iterate thru
+    }
+    
+})/**
+ * @class Roo.htmleditor.FilterLongBr
+ * BR/BR/BR - keep a maximum of 2...
+ * @constructor
+ * Run a new Long BR Filter
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.FilterLongBr = function(cfg)
+{
+    // no need to apply config.
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterLongBr, Roo.htmleditor.Filter,
+{
+    
+     
+    tag : 'BR',
+    
+     
+    replaceTag : function(node)
+    {
+        
+        var ps = node.nextSibling;
+        while (ps && ps.nodeType == 3 && ps.nodeValue.trim().length < 1) {
+            ps = ps.nextSibling;
+        }
+        
+        if (!ps &&  [ 'TD', 'TH', 'LI', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6' ].indexOf(node.parentNode.tagName) > -1) { 
+            node.parentNode.removeChild(node); // remove last BR inside one fo these tags
+            return false;
+        }
+        
+        if (!ps || ps.nodeType != 1) {
+            return false;
+        }
+        
+        if (!ps || ps.tagName != 'BR') {
+           
+            return false;
+        }
+        
+        
+        
+        
+        
+        if (!node.previousSibling) {
+            return false;
+        }
+        var ps = node.previousSibling;
+        
+        while (ps && ps.nodeType == 3 && ps.nodeValue.trim().length < 1) {
+            ps = ps.previousSibling;
+        }
+        if (!ps || ps.nodeType != 1) {
+            return false;
+        }
+        // if header or BR before.. then it's a candidate for removal.. - as we only want '2' of these..
+        if (!ps || [ 'BR', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6' ].indexOf(ps.tagName) < 0) {
+            return false;
+        }
+        
+        node.parentNode.removeChild(node); // remove me...
+        
+        return false; // no need to do children
+
+    }
+    
+}); 
+
+/**
+ * @class Roo.htmleditor.FilterBlock
+ * removes id / data-block and contenteditable that are associated with blocks
+ * usage should be done on a cloned copy of the dom
+ * @constructor
+* Run a new Attribute Filter { node : xxxx }}
+* @param {Object} config Configuration options
+ */
+Roo.htmleditor.FilterBlock = function(cfg)
+{
+    Roo.apply(this, cfg);
+    var qa = cfg.node.querySelectorAll;
+    this.removeAttributes('data-block');
+    this.removeAttributes('contenteditable');
+    this.removeAttributes('id');
+    
+}
+
+Roo.apply(Roo.htmleditor.FilterBlock.prototype,
+{
+    node: true, // all tags
+     
+     
+    removeAttributes : function(attr)
+    {
+        var ar = this.node.querySelectorAll('*[' + attr + ']');
+        for (var i =0;i<ar.length;i++) {
+            ar[i].removeAttribute(attr);
+        }
+    }
+        
+        
+        
+    
+});
+/***
+ * This is based loosely on tinymce 
+ * @class Roo.htmleditor.TidySerializer
+ * https://github.com/thorn0/tinymce.html/blob/master/tinymce.html.js
+ * @constructor
+ * @method Serializer
+ * @param {Object} settings Name/value settings object.
+ */
+
+
+Roo.htmleditor.TidySerializer = function(settings)
+{
+    Roo.apply(this, settings);
+    
+    this.writer = new Roo.htmleditor.TidyWriter(settings);
+    
+    
+
+};
+Roo.htmleditor.TidySerializer.prototype = {
+    
+    /**
+     * @param {boolean} inner do the inner of the node.
+     */
+    inner : false,
+    
+    writer : false,
+    
+    /**
+    * Serializes the specified node into a string.
+    *
+    * @example
+    * new tinymce.html.Serializer().serialize(new tinymce.html.DomParser().parse('<p>text</p>'));
+    * @method serialize
+    * @param {DomElement} node Node instance to serialize.
+    * @return {String} String with HTML based on DOM tree.
+    */
+    serialize : function(node) {
+        
+        // = settings.validate;
+        var writer = this.writer;
+        var self  = this;
+        this.handlers = {
+            // #text
+            3: function(node) {
+                
+                writer.text(node.nodeValue, node);
+            },
+            // #comment
+            8: function(node) {
+                writer.comment(node.nodeValue);
+            },
+            // Processing instruction
+            7: function(node) {
+                writer.pi(node.name, node.nodeValue);
+            },
+            // Doctype
+            10: function(node) {
+                writer.doctype(node.nodeValue);
+            },
+            // CDATA
+            4: function(node) {
+                writer.cdata(node.nodeValue);
+            },
+            // Document fragment
+            11: function(node) {
+                node = node.firstChild;
+                if (!node) {
+                    return;
+                }
+                while(node) {
+                    self.walk(node);
+                    node = node.nextSibling
+                }
+            }
+        };
+        writer.reset();
+        1 != node.nodeType || this.inner ? this.handlers[11](node) : this.walk(node);
+        return writer.getContent();
+    },
+
+    walk: function(node)
+    {
+        var attrName, attrValue, sortedAttrs, i, l, elementRule,
+            handler = this.handlers[node.nodeType];
+            
+        if (handler) {
+            handler(node);
+            return;
+        }
+    
+        var name = node.nodeName;
+        var isEmpty = node.childNodes.length < 1;
+      
+        var writer = this.writer;
+        var attrs = node.attributes;
+        // Sort attributes
+        
+        writer.start(node.nodeName, attrs, isEmpty, node);
+        if (isEmpty) {
+            return;
+        }
+        node = node.firstChild;
+        if (!node) {
+            writer.end(name);
+            return;
+        }
+        while (node) {
+            this.walk(node);
+            node = node.nextSibling;
+        }
+        writer.end(name);
+        
+    
+    }
+    // Serialize element and treat all non elements as fragments
+   
+}; 
+
+/***
+ * This is based loosely on tinymce 
+ * @class Roo.htmleditor.TidyWriter
+ * https://github.com/thorn0/tinymce.html/blob/master/tinymce.html.js
+ *
+ * Known issues?
+ * - not tested much with 'PRE' formated elements.
+ * 
+ *
+ *
+ */
+
+Roo.htmleditor.TidyWriter = function(settings)
+{
+    
+    // indent, indentBefore, indentAfter, encode, htmlOutput, html = [];
+    Roo.apply(this, settings);
+    this.html = [];
+    this.state = [];
+     
+    this.encode = Roo.htmleditor.TidyEntities.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);
+  
+}
+Roo.htmleditor.TidyWriter.prototype = {
+
+    state : false,
+    
+    indent :  '  ',
+    
+    // part of state...
+    indentstr : '',
+    in_pre: false,
+    in_inline : false,
+    last_inline : false,
+    encode : false,
+     
+    
+            /**
+    * Writes the a start element such as <p id="a">.
+    *
+    * @method start
+    * @param {String} name Name of the element.
+    * @param {Array} attrs Optional attribute array or undefined if it hasn't any.
+    * @param {Boolean} empty Optional empty state if the tag should end like <br />.
+    */
+    start: function(name, attrs, empty, node)
+    {
+        var i, l, attr, value;
+        
+        // there are some situations where adding line break && indentation will not work. will not work.
+        // <span / b / i ... formating?
+        
+        var in_inline = this.in_inline || Roo.htmleditor.TidyWriter.inline_elements.indexOf(name) > -1;
+        var in_pre    = this.in_pre    || Roo.htmleditor.TidyWriter.whitespace_elements.indexOf(name) > -1;
+        
+        var is_short   = empty ? Roo.htmleditor.TidyWriter.shortend_elements.indexOf(name) > -1 : false;
+        
+        var add_lb = name == 'BR' ? false : in_inline;
+        
+        if (!add_lb && !this.in_pre && this.lastElementEndsWS()) {
+            i_inline = false;
+        }
+
+        var indentstr =  this.indentstr;
+        
+        // e_inline = elements that can be inline, but still allow \n before and after?
+        // only 'BR' ??? any others?
+        
+        // ADD LINE BEFORE tage
+        if (!this.in_pre) {
+            if (in_inline) {
+                //code
+                if (name == 'BR') {
+                    this.addLine();
+                } else if (this.lastElementEndsWS()) {
+                    this.addLine();
+                } else{
+                    // otherwise - no new line. (and dont indent.)
+                    indentstr = '';
+                }
+                
+            } else {
+                this.addLine();
+            }
+        } else {
+            indentstr = '';
+        }
+        
+        this.html.push(indentstr + '<', name.toLowerCase());
+        
+        if (attrs) {
+            for (i = 0, l = attrs.length; i < l; i++) {
+                attr = attrs[i];
+                this.html.push(' ', attr.name, '="', this.encode(attr.value, true), '"');
+            }
+        }
+     
+        if (empty) {
+            if (is_short) {
+                this.html[this.html.length] = '/>';
+            } else {
+                this.html[this.html.length] = '></' + name.toLowerCase() + '>';
+            }
+            var e_inline = name == 'BR' ? false : this.in_inline;
+            
+            if (!e_inline && !this.in_pre) {
+                this.addLine();
+            }
+            return;
+        
+        }
+        // not empty..
+        this.html[this.html.length] = '>';
+        
+        // there is a special situation, where we need to turn on in_inline - if any of the imediate chidlren are one of these.
+        /*
+        if (!in_inline && !in_pre) {
+            var cn = node.firstChild;
+            while(cn) {
+                if (Roo.htmleditor.TidyWriter.inline_elements.indexOf(cn.nodeName) > -1) {
+                    in_inline = true
+                    break;
+                }
+                cn = cn.nextSibling;
+            }
+             
+        }
+        */
+        
+        
+        this.pushState({
+            indentstr : in_pre   ? '' : (this.indentstr + this.indent),
+            in_pre : in_pre,
+            in_inline :  in_inline
+        });
+        // add a line after if we are not in a
+        
+        if (!in_inline && !in_pre) {
+            this.addLine();
+        }
+        
+            
+         
+        
+    },
+    
+    lastElementEndsWS : function()
+    {
+        var value = this.html.length > 0 ? this.html[this.html.length-1] : false;
+        if (value === false) {
+            return true;
+        }
+        return value.match(/\s+$/);
+        
+    },
+    
+    /**
+     * Writes the a end element such as </p>.
+     *
+     * @method end
+     * @param {String} name Name of the element.
+     */
+    end: function(name) {
+        var value;
+        this.popState();
+        var indentstr = '';
+        var in_inline = this.in_inline || Roo.htmleditor.TidyWriter.inline_elements.indexOf(name) > -1;
+        
+        if (!this.in_pre && !in_inline) {
+            this.addLine();
+            indentstr  = this.indentstr;
+        }
+        this.html.push(indentstr + '</', name.toLowerCase(), '>');
+        this.last_inline = in_inline;
+        
+        // pop the indent state..
+    },
+    /**
+     * Writes a text node.
+     *
+     * In pre - we should not mess with the contents.
+     * 
+     *
+     * @method text
+     * @param {String} text String to write out.
+     * @param {Boolean} raw Optional raw state if true the contents wont get encoded.
+     */
+    text: function(text, node)
+    {
+        // if not in whitespace critical
+        if (text.length < 1) {
+            return;
+        }
+        if (this.in_pre) {
+            this.html[this.html.length] =  text;
+            return;   
+        }
+        
+        if (this.in_inline) {
+            text = text.replace(/\s+/g,' '); // all white space inc line breaks to a slingle' '
+            if (text != ' ') {
+                text = text.replace(/\s+/,' ');  // all white space to single white space
+                
+                    
+                // if next tag is '<BR>', then we can trim right..
+                if (node.nextSibling &&
+                    node.nextSibling.nodeType == 1 &&
+                    node.nextSibling.nodeName == 'BR' )
+                {
+                    text = text.replace(/\s+$/g,'');
+                }
+                // if previous tag was a BR, we can also trim..
+                if (node.previousSibling &&
+                    node.previousSibling.nodeType == 1 &&
+                    node.previousSibling.nodeName == 'BR' )
+                {
+                    text = this.indentstr +  text.replace(/^\s+/g,'');
+                }
+                if (text.match(/\n/)) {
+                    text = text.replace(
+                        /(?![^\n]{1,64}$)([^\n]{1,64})\s/g, '$1\n' + this.indentstr
+                    );
+                    // remoeve the last whitespace / line break.
+                    text = text.replace(/\n\s+$/,'');
+                }
+                // repace long lines
+                
+            }
+             
+            this.html[this.html.length] =  text;
+            return;   
+        }
+        // see if previous element was a inline element.
+        var indentstr = this.indentstr;
+   
+        text = text.replace(/\s+/g," "); // all whitespace into single white space.
+        
+        // should trim left?
+        if (node.previousSibling &&
+            node.previousSibling.nodeType == 1 &&
+            Roo.htmleditor.TidyWriter.inline_elements.indexOf(node.previousSibling.nodeName) > -1)
+        {
+            indentstr = '';
+            
+        } else {
+            this.addLine();
+            text = text.replace(/^\s+/,''); // trim left
+          
+        }
+        // should trim right?
+        if (node.nextSibling &&
+            node.nextSibling.nodeType == 1 &&
+            Roo.htmleditor.TidyWriter.inline_elements.indexOf(node.nextSibling.nodeName) > -1)
+        {
+          // noop
+            
+        }  else {
+            text = text.replace(/\s+$/,''); // trim right
+        }
+         
+              
+        
+        
+        
+        if (text.length < 1) {
+            return;
+        }
+        if (!text.match(/\n/)) {
+            this.html.push(indentstr + text);
+            return;
+        }
+        
+        text = this.indentstr + text.replace(
+            /(?![^\n]{1,64}$)([^\n]{1,64})\s/g, '$1\n' + this.indentstr
+        );
+        // remoeve the last whitespace / line break.
+        text = text.replace(/\s+$/,''); 
+        
+        this.html.push(text);
+        
+        // split and indent..
+        
+        
+    },
+    /**
+     * Writes a cdata node such as <![CDATA[data]]>.
+     *
+     * @method cdata
+     * @param {String} text String to write out inside the cdata.
+     */
+    cdata: function(text) {
+        this.html.push('<![CDATA[', text, ']]>');
+    },
+    /**
+    * Writes a comment node such as <!-- Comment -->.
+    *
+    * @method cdata
+    * @param {String} text String to write out inside the comment.
+    */
+   comment: function(text) {
+       this.html.push('<!--', text, '-->');
+   },
+    /**
+     * Writes a PI node such as <?xml attr="value" ?>.
+     *
+     * @method pi
+     * @param {String} name Name of the pi.
+     * @param {String} text String to write out inside the pi.
+     */
+    pi: function(name, text) {
+        text ? this.html.push('<?', name, ' ', this.encode(text), '?>') : this.html.push('<?', name, '?>');
+        this.indent != '' && this.html.push('\n');
+    },
+    /**
+     * Writes a doctype node such as <!DOCTYPE data>.
+     *
+     * @method doctype
+     * @param {String} text String to write out inside the doctype.
+     */
+    doctype: function(text) {
+        this.html.push('<!DOCTYPE', text, '>', this.indent != '' ? '\n' : '');
+    },
+    /**
+     * Resets the internal buffer if one wants to reuse the writer.
+     *
+     * @method reset
+     */
+    reset: function() {
+        this.html.length = 0;
+        this.state = [];
+        this.pushState({
+            indentstr : '',
+            in_pre : false, 
+            in_inline : false
+        })
+    },
+    /**
+     * Returns the contents that got serialized.
+     *
+     * @method getContent
+     * @return {String} HTML contents that got written down.
+     */
+    getContent: function() {
+        return this.html.join('').replace(/\n$/, '');
+    },
+    
+    pushState : function(cfg)
+    {
+        this.state.push(cfg);
+        Roo.apply(this, cfg);
+    },
+    
+    popState : function()
+    {
+        if (this.state.length < 1) {
+            return; // nothing to push
+        }
+        var cfg = {
+            in_pre: false,
+            indentstr : ''
+        };
+        this.state.pop();
+        if (this.state.length > 0) {
+            cfg = this.state[this.state.length-1]; 
+        }
+        Roo.apply(this, cfg);
+    },
+    
+    addLine: function()
+    {
+        if (this.html.length < 1) {
+            return;
+        }
+        
+        
+        var value = this.html[this.html.length - 1];
+        if (value.length > 0 && '\n' !== value) {
+            this.html.push('\n');
+        }
+    }
+    
+    
+//'pre script noscript style textarea video audio iframe object code'
+// shortended... 'area base basefont br col frame hr img input isindex link  meta param embed source wbr track');
+// inline 
+};
+
+Roo.htmleditor.TidyWriter.inline_elements = [
+        'SPAN','STRONG','B','EM','I','FONT','STRIKE','U','VAR',
+        'CITE','DFN','CODE','MARK','Q','SUP','SUB','SAMP', 'A'
+];
+Roo.htmleditor.TidyWriter.shortend_elements = [
+    'AREA','BASE','BASEFONT','BR','COL','FRAME','HR','IMG','INPUT',
+    'ISINDEX','LINK','','META','PARAM','EMBED','SOURCE','WBR','TRACK'
+];
+
+Roo.htmleditor.TidyWriter.whitespace_elements = [
+    'PRE','SCRIPT','NOSCRIPT','STYLE','TEXTAREA','VIDEO','AUDIO','IFRAME','OBJECT','CODE'
+];/***
+ * This is based loosely on tinymce 
+ * @class Roo.htmleditor.TidyEntities
+ * @static
+ * https://github.com/thorn0/tinymce.html/blob/master/tinymce.html.js
+ *
+ * Not 100% sure this is actually used or needed.
+ */
+
+Roo.htmleditor.TidyEntities = {
+    
+    /**
+     * initialize data..
+     */
+    init : function (){
+     
+        this.namedEntities = this.buildEntitiesLookup(this.namedEntitiesData, 32);
+       
+    },
+
+
+    buildEntitiesLookup: function(items, radix) {
+        var i, chr, entity, lookup = {};
+        if (!items) {
+            return {};
+        }
+        items = typeof(items) == 'string' ? items.split(',') : items;
+        radix = radix || 10;
+        // Build entities lookup table
+        for (i = 0; i < items.length; i += 2) {
+            chr = String.fromCharCode(parseInt(items[i], radix));
+            // Only add non base entities
+            if (!this.baseEntities[chr]) {
+                entity = '&' + items[i + 1] + ';';
+                lookup[chr] = entity;
+                lookup[entity] = chr;
+            }
+        }
+        return lookup;
+        
+    },
+    
+    asciiMap : {
+            128: '€',
+            130: '‚',
+            131: 'ƒ',
+            132: '„',
+            133: '…',
+            134: '†',
+            135: '‡',
+            136: 'ˆ',
+            137: '‰',
+            138: 'Š',
+            139: '‹',
+            140: 'Œ',
+            142: 'Ž',
+            145: '‘',
+            146: '’',
+            147: '“',
+            148: '”',
+            149: '•',
+            150: '–',
+            151: '—',
+            152: '˜',
+            153: '™',
+            154: 'š',
+            155: '›',
+            156: 'œ',
+            158: 'ž',
+            159: 'Ÿ'
+    },
+    // Raw entities
+    baseEntities : {
+        '"': '&quot;',
+        // Needs to be escaped since the YUI compressor would otherwise break the code
+        '\'': '&#39;',
+        '<': '&lt;',
+        '>': '&gt;',
+        '&': '&amp;',
+        '`': '&#96;'
+    },
+    // Reverse lookup table for raw entities
+    reverseEntities : {
+        '&lt;': '<',
+        '&gt;': '>',
+        '&amp;': '&',
+        '&quot;': '"',
+        '&apos;': '\''
+    },
+    
+    attrsCharsRegExp : /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
+    textCharsRegExp : /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
+    rawCharsRegExp : /[<>&\"\']/g,
+    entityRegExp : /&#([a-z0-9]+);?|&([a-z0-9]+);/gi,
+    namedEntities  : false,
+    namedEntitiesData : [ 
+        '50',
+        'nbsp',
+        '51',
+        'iexcl',
+        '52',
+        'cent',
+        '53',
+        'pound',
+        '54',
+        'curren',
+        '55',
+        'yen',
+        '56',
+        'brvbar',
+        '57',
+        'sect',
+        '58',
+        'uml',
+        '59',
+        'copy',
+        '5a',
+        'ordf',
+        '5b',
+        'laquo',
+        '5c',
+        'not',
+        '5d',
+        'shy',
+        '5e',
+        'reg',
+        '5f',
+        'macr',
+        '5g',
+        'deg',
+        '5h',
+        'plusmn',
+        '5i',
+        'sup2',
+        '5j',
+        'sup3',
+        '5k',
+        'acute',
+        '5l',
+        'micro',
+        '5m',
+        'para',
+        '5n',
+        'middot',
+        '5o',
+        'cedil',
+        '5p',
+        'sup1',
+        '5q',
+        'ordm',
+        '5r',
+        'raquo',
+        '5s',
+        'frac14',
+        '5t',
+        'frac12',
+        '5u',
+        'frac34',
+        '5v',
+        'iquest',
+        '60',
+        'Agrave',
+        '61',
+        'Aacute',
+        '62',
+        'Acirc',
+        '63',
+        'Atilde',
+        '64',
+        'Auml',
+        '65',
+        'Aring',
+        '66',
+        'AElig',
+        '67',
+        'Ccedil',
+        '68',
+        'Egrave',
+        '69',
+        'Eacute',
+        '6a',
+        'Ecirc',
+        '6b',
+        'Euml',
+        '6c',
+        'Igrave',
+        '6d',
+        'Iacute',
+        '6e',
+        'Icirc',
+        '6f',
+        'Iuml',
+        '6g',
+        'ETH',
+        '6h',
+        'Ntilde',
+        '6i',
+        'Ograve',
+        '6j',
+        'Oacute',
+        '6k',
+        'Ocirc',
+        '6l',
+        'Otilde',
+        '6m',
+        'Ouml',
+        '6n',
+        'times',
+        '6o',
+        'Oslash',
+        '6p',
+        'Ugrave',
+        '6q',
+        'Uacute',
+        '6r',
+        'Ucirc',
+        '6s',
+        'Uuml',
+        '6t',
+        'Yacute',
+        '6u',
+        'THORN',
+        '6v',
+        'szlig',
+        '70',
+        'agrave',
+        '71',
+        'aacute',
+        '72',
+        'acirc',
+        '73',
+        'atilde',
+        '74',
+        'auml',
+        '75',
+        'aring',
+        '76',
+        'aelig',
+        '77',
+        'ccedil',
+        '78',
+        'egrave',
+        '79',
+        'eacute',
+        '7a',
+        'ecirc',
+        '7b',
+        'euml',
+        '7c',
+        'igrave',
+        '7d',
+        'iacute',
+        '7e',
+        'icirc',
+        '7f',
+        'iuml',
+        '7g',
+        'eth',
+        '7h',
+        'ntilde',
+        '7i',
+        'ograve',
+        '7j',
+        'oacute',
+        '7k',
+        'ocirc',
+        '7l',
+        'otilde',
+        '7m',
+        'ouml',
+        '7n',
+        'divide',
+        '7o',
+        'oslash',
+        '7p',
+        'ugrave',
+        '7q',
+        'uacute',
+        '7r',
+        'ucirc',
+        '7s',
+        'uuml',
+        '7t',
+        'yacute',
+        '7u',
+        'thorn',
+        '7v',
+        'yuml',
+        'ci',
+        'fnof',
+        'sh',
+        'Alpha',
+        'si',
+        'Beta',
+        'sj',
+        'Gamma',
+        'sk',
+        'Delta',
+        'sl',
+        'Epsilon',
+        'sm',
+        'Zeta',
+        'sn',
+        'Eta',
+        'so',
+        'Theta',
+        'sp',
+        'Iota',
+        'sq',
+        'Kappa',
+        'sr',
+        'Lambda',
+        'ss',
+        'Mu',
+        'st',
+        'Nu',
+        'su',
+        'Xi',
+        'sv',
+        'Omicron',
+        't0',
+        'Pi',
+        't1',
+        'Rho',
+        't3',
+        'Sigma',
+        't4',
+        'Tau',
+        't5',
+        'Upsilon',
+        't6',
+        'Phi',
+        't7',
+        'Chi',
+        't8',
+        'Psi',
+        't9',
+        'Omega',
+        'th',
+        'alpha',
+        'ti',
+        'beta',
+        'tj',
+        'gamma',
+        'tk',
+        'delta',
+        'tl',
+        'epsilon',
+        'tm',
+        'zeta',
+        'tn',
+        'eta',
+        'to',
+        'theta',
+        'tp',
+        'iota',
+        'tq',
+        'kappa',
+        'tr',
+        'lambda',
+        'ts',
+        'mu',
+        'tt',
+        'nu',
+        'tu',
+        'xi',
+        'tv',
+        'omicron',
+        'u0',
+        'pi',
+        'u1',
+        'rho',
+        'u2',
+        'sigmaf',
+        'u3',
+        'sigma',
+        'u4',
+        'tau',
+        'u5',
+        'upsilon',
+        'u6',
+        'phi',
+        'u7',
+        'chi',
+        'u8',
+        'psi',
+        'u9',
+        'omega',
+        'uh',
+        'thetasym',
+        'ui',
+        'upsih',
+        'um',
+        'piv',
+        '812',
+        'bull',
+        '816',
+        'hellip',
+        '81i',
+        'prime',
+        '81j',
+        'Prime',
+        '81u',
+        'oline',
+        '824',
+        'frasl',
+        '88o',
+        'weierp',
+        '88h',
+        'image',
+        '88s',
+        'real',
+        '892',
+        'trade',
+        '89l',
+        'alefsym',
+        '8cg',
+        'larr',
+        '8ch',
+        'uarr',
+        '8ci',
+        'rarr',
+        '8cj',
+        'darr',
+        '8ck',
+        'harr',
+        '8dl',
+        'crarr',
+        '8eg',
+        'lArr',
+        '8eh',
+        'uArr',
+        '8ei',
+        'rArr',
+        '8ej',
+        'dArr',
+        '8ek',
+        'hArr',
+        '8g0',
+        'forall',
+        '8g2',
+        'part',
+        '8g3',
+        'exist',
+        '8g5',
+        'empty',
+        '8g7',
+        'nabla',
+        '8g8',
+        'isin',
+        '8g9',
+        'notin',
+        '8gb',
+        'ni',
+        '8gf',
+        'prod',
+        '8gh',
+        'sum',
+        '8gi',
+        'minus',
+        '8gn',
+        'lowast',
+        '8gq',
+        'radic',
+        '8gt',
+        'prop',
+        '8gu',
+        'infin',
+        '8h0',
+        'ang',
+        '8h7',
+        'and',
+        '8h8',
+        'or',
+        '8h9',
+        'cap',
+        '8ha',
+        'cup',
+        '8hb',
+        'int',
+        '8hk',
+        'there4',
+        '8hs',
+        'sim',
+        '8i5',
+        'cong',
+        '8i8',
+        'asymp',
+        '8j0',
+        'ne',
+        '8j1',
+        'equiv',
+        '8j4',
+        'le',
+        '8j5',
+        'ge',
+        '8k2',
+        'sub',
+        '8k3',
+        'sup',
+        '8k4',
+        'nsub',
+        '8k6',
+        'sube',
+        '8k7',
+        'supe',
+        '8kl',
+        'oplus',
+        '8kn',
+        'otimes',
+        '8l5',
+        'perp',
+        '8m5',
+        'sdot',
+        '8o8',
+        'lceil',
+        '8o9',
+        'rceil',
+        '8oa',
+        'lfloor',
+        '8ob',
+        'rfloor',
+        '8p9',
+        'lang',
+        '8pa',
+        'rang',
+        '9ea',
+        'loz',
+        '9j0',
+        'spades',
+        '9j3',
+        'clubs',
+        '9j5',
+        'hearts',
+        '9j6',
+        'diams',
+        'ai',
+        'OElig',
+        'aj',
+        'oelig',
+        'b0',
+        'Scaron',
+        'b1',
+        'scaron',
+        'bo',
+        'Yuml',
+        'm6',
+        'circ',
+        'ms',
+        'tilde',
+        '802',
+        'ensp',
+        '803',
+        'emsp',
+        '809',
+        'thinsp',
+        '80c',
+        'zwnj',
+        '80d',
+        'zwj',
+        '80e',
+        'lrm',
+        '80f',
+        'rlm',
+        '80j',
+        'ndash',
+        '80k',
+        'mdash',
+        '80o',
+        'lsquo',
+        '80p',
+        'rsquo',
+        '80q',
+        'sbquo',
+        '80s',
+        'ldquo',
+        '80t',
+        'rdquo',
+        '80u',
+        'bdquo',
+        '810',
+        'dagger',
+        '811',
+        'Dagger',
+        '81g',
+        'permil',
+        '81p',
+        'lsaquo',
+        '81q',
+        'rsaquo',
+        '85c',
+        'euro'
+    ],
+
+         
+    /**
+     * Encodes the specified string using raw entities. This means only the required XML base entities will be encoded.
+     *
+     * @method encodeRaw
+     * @param {String} text Text to encode.
+     * @param {Boolean} attr Optional flag to specify if the text is attribute contents.
+     * @return {String} Entity encoded text.
+     */
+    encodeRaw: function(text, attr)
+    {
+        var t = this;
+        return text.replace(attr ? this.attrsCharsRegExp : this.textCharsRegExp, function(chr) {
+            return t.baseEntities[chr] || chr;
+        });
+    },
+    /**
+     * Encoded the specified text with both the attributes and text entities. This function will produce larger text contents
+     * since it doesn't know if the context is within a attribute or text node. This was added for compatibility
+     * and is exposed as the DOMUtils.encode function.
+     *
+     * @method encodeAllRaw
+     * @param {String} text Text to encode.
+     * @return {String} Entity encoded text.
+     */
+    encodeAllRaw: function(text) {
+        var t = this;
+        return ('' + text).replace(this.rawCharsRegExp, function(chr) {
+            return t.baseEntities[chr] || chr;
+        });
+    },
+    /**
+     * Encodes the specified string using numeric entities. The core entities will be
+     * encoded as named ones but all non lower ascii characters will be encoded into numeric entities.
+     *
+     * @method encodeNumeric
+     * @param {String} text Text to encode.
+     * @param {Boolean} attr Optional flag to specify if the text is attribute contents.
+     * @return {String} Entity encoded text.
+     */
+    encodeNumeric: function(text, attr) {
+        var t = this;
+        return text.replace(attr ? this.attrsCharsRegExp : this.textCharsRegExp, function(chr) {
+            // Multi byte sequence convert it to a single entity
+            if (chr.length > 1) {
+                return '&#' + (1024 * (chr.charCodeAt(0) - 55296) + (chr.charCodeAt(1) - 56320) + 65536) + ';';
+            }
+            return t.baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';
+        });
+    },
+    /**
+     * Encodes the specified string using named entities. The core entities will be encoded
+     * as named ones but all non lower ascii characters will be encoded into named entities.
+     *
+     * @method encodeNamed
+     * @param {String} text Text to encode.
+     * @param {Boolean} attr Optional flag to specify if the text is attribute contents.
+     * @param {Object} entities Optional parameter with entities to use.
+     * @return {String} Entity encoded text.
+     */
+    encodeNamed: function(text, attr, entities) {
+        var t = this;
+        entities = entities || this.namedEntities;
+        return text.replace(attr ? this.attrsCharsRegExp : this.textCharsRegExp, function(chr) {
+            return t.baseEntities[chr] || entities[chr] || chr;
+        });
+    },
+    /**
+     * Returns an encode function based on the name(s) and it's optional entities.
+     *
+     * @method getEncodeFunc
+     * @param {String} name Comma separated list of encoders for example named,numeric.
+     * @param {String} entities Optional parameter with entities to use instead of the built in set.
+     * @return {function} Encode function to be used.
+     */
+    getEncodeFunc: function(name, entities) {
+        entities = this.buildEntitiesLookup(entities) || this.namedEntities;
+        var t = this;
+        function encodeNamedAndNumeric(text, attr) {
+            return text.replace(attr ? t.attrsCharsRegExp : t.textCharsRegExp, function(chr) {
+                return t.baseEntities[chr] || entities[chr] || '&#' + chr.charCodeAt(0) + ';' || chr;
+            });
+        }
+
+        function encodeCustomNamed(text, attr) {
+            return t.encodeNamed(text, attr, entities);
+        }
+        // Replace + with , to be compatible with previous TinyMCE versions
+        name = this.makeMap(name.replace(/\+/g, ','));
+        // Named and numeric encoder
+        if (name.named && name.numeric) {
+            return this.encodeNamedAndNumeric;
+        }
+        // Named encoder
+        if (name.named) {
+            // Custom names
+            if (entities) {
+                return encodeCustomNamed;
+            }
+            return this.encodeNamed;
+        }
+        // Numeric
+        if (name.numeric) {
+            return this.encodeNumeric;
+        }
+        // Raw encoder
+        return this.encodeRaw;
+    },
+    /**
+     * Decodes the specified string, this will replace entities with raw UTF characters.
+     *
+     * @method decode
+     * @param {String} text Text to entity decode.
+     * @return {String} Entity decoded string.
+     */
+    decode: function(text)
+    {
+        var  t = this;
+        return text.replace(this.entityRegExp, function(all, numeric) {
+            if (numeric) {
+                numeric = 'x' === numeric.charAt(0).toLowerCase() ? parseInt(numeric.substr(1), 16) : parseInt(numeric, 10);
+                // Support upper UTF
+                if (numeric > 65535) {
+                    numeric -= 65536;
+                    return String.fromCharCode(55296 + (numeric >> 10), 56320 + (1023 & numeric));
+                }
+                return t.asciiMap[numeric] || String.fromCharCode(numeric);
+            }
+            return t.reverseEntities[all] || t.namedEntities[all] || t.nativeDecode(all);
+        });
+    },
+    nativeDecode : function (text) {
+        return text;
+    },
+    makeMap : function (items, delim, map) {
+               var i;
+               items = items || [];
+               delim = delim || ',';
+               if (typeof items == "string") {
+                       items = items.split(delim);
+               }
+               map = map || {};
+               i = items.length;
+               while (i--) {
+                       map[items[i]] = {};
+               }
+               return map;
+       }
+};
+    
+    
+    
+Roo.htmleditor.TidyEntities.init();
+/**
+ * @class Roo.htmleditor.KeyEnter
+ * Handle Enter press..
+ * @cfg {Roo.HtmlEditorCore} core the editor.
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+
+
+
+
+Roo.htmleditor.KeyEnter = function(cfg) {
+    Roo.apply(this, cfg);
+    // this does not actually call walk as it's really just a abstract class
+    Roo.get(this.core.doc.body).on('keypress', this.keypress, this);
+}
+
+//Roo.htmleditor.KeyEnter.i = 0;
+
+
+Roo.htmleditor.KeyEnter.prototype = {
+    
+    core : false,
+    
+    keypress : function(e)
+    {
+        if (e.charCode != 13 && e.charCode != 10) {
+            Roo.log([e.charCode,e]);
+            return true;
+        }
+        e.preventDefault();
+        // https://stackoverflow.com/questions/18552336/prevent-contenteditable-adding-div-on-enter-chrome
+        var doc = this.core.doc;
+          //add a new line
+       
+    
+        var sel = this.core.getSelection();
+        var range = sel.getRangeAt(0);
+        var n = range.commonAncestorContainer;
+        var pc = range.closest([ 'ol', 'ul']);
+        var pli = range.closest('li');
+        if (!pc || e.ctrlKey) {
+            sel.insertNode('br', 'after'); 
+         
+            this.core.undoManager.addEvent();
+            this.core.fireEditorEvent(e);
+            return false;
+        }
+        
+        // deal with <li> insetion
+        if (pli.innerText.trim() == '' &&
+            pli.previousSibling &&
+            pli.previousSibling.nodeName == 'LI' &&
+            pli.previousSibling.innerText.trim() ==  '') {
+            pli.parentNode.removeChild(pli.previousSibling);
+            sel.cursorAfter(pc);
+            this.core.undoManager.addEvent();
+            this.core.fireEditorEvent(e);
+            return false;
+        }
+    
+        var li = doc.createElement('LI');
+        li.innerHTML = '&nbsp;';
+        if (!pli || !pli.firstSibling) {
+            pc.appendChild(li);
+        } else {
+            pli.parentNode.insertBefore(li, pli.firstSibling);
+        }
+        sel.cursorText (li.firstChild);
+      
+        this.core.undoManager.addEvent();
+        this.core.fireEditorEvent(e);
+
+        return false;
+        
+    
+        
+        
+         
+    }
+};
+     
+/**
+ * @class Roo.htmleditor.Block
+ * Base class for html editor blocks - do not use it directly .. extend it..
+ * @cfg {DomElement} node The node to apply stuff to.
+ * @cfg {String} friendly_name the name that appears in the context bar about this block
+ * @cfg {Object} Context menu - see Roo.form.HtmlEditor.ToolbarContext
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.Block  = function(cfg)
+{
+    // do nothing .. should not be called really.
+}
+/**
+ * factory method to get the block from an element (using cache if necessary)
+ * @static
+ * @param {HtmlElement} the dom element
+ */
+Roo.htmleditor.Block.factory = function(node)
+{
+    var cc = Roo.htmleditor.Block.cache;
+    var id = Roo.get(node).id;
+    if (typeof(cc[id]) != 'undefined' && (!cc[id].node || cc[id].node.closest('body'))) {
+        Roo.htmleditor.Block.cache[id].readElement(node);
+        return Roo.htmleditor.Block.cache[id];
+    }
+    var db  = node.getAttribute('data-block');
+    if (!db) {
+        db = node.nodeName.toLowerCase().toUpperCaseFirst();
+    }
+    var cls = Roo.htmleditor['Block' + db];
+    if (typeof(cls) == 'undefined') {
+        //Roo.log(node.getAttribute('data-block'));
+        Roo.log("OOps missing block : " + 'Block' + db);
+        return false;
+    }
+    Roo.htmleditor.Block.cache[id] = new cls({ node: node });
+    return Roo.htmleditor.Block.cache[id];  /// should trigger update element
+};
+
+/**
+ * initalize all Elements from content that are 'blockable'
+ * @static
+ * @param the body element
+ */
+Roo.htmleditor.Block.initAll = function(body, type)
+{
+    if (typeof(type) == 'undefined') {
+        var ia = Roo.htmleditor.Block.initAll;
+        ia(body,'table');
+        ia(body,'td');
+        ia(body,'figure');
+        return;
+    }
+    Roo.each(Roo.get(body).query(type), function(e) {
+        Roo.htmleditor.Block.factory(e);    
+    },this);
+};
+// question goes here... do we need to clear out this cache sometimes?
+// or show we make it relivant to the htmleditor.
+Roo.htmleditor.Block.cache = {};
+
+Roo.htmleditor.Block.prototype = {
+    
+    node : false,
+    
+     // used by context menu
+    friendly_name : 'Based Block',
+    
+    // text for button to delete this element
+    deleteTitle : false,
+    
+    context : false,
+    /**
+     * Update a node with values from this object
+     * @param {DomElement} node
+     */
+    updateElement : function(node)
+    {
+        Roo.DomHelper.update(node === undefined ? this.node : node, this.toObject());
+    },
+     /**
+     * convert to plain HTML for calling insertAtCursor..
+     */
+    toHTML : function()
+    {
+        return Roo.DomHelper.markup(this.toObject());
+    },
+    /**
+     * used by readEleemnt to extract data from a node
+     * may need improving as it's pretty basic
+     
+     * @param {DomElement} node
+     * @param {String} tag - tag to find, eg. IMG ?? might be better to use DomQuery ?
+     * @param {String} attribute (use html - for contents, or style for using next param as style)
+     * @param {String} style the style property - eg. text-align
+     */
+    getVal : function(node, tag, attr, style)
+    {
+        var n = node;
+        if (tag !== true && n.tagName != tag.toUpperCase()) {
+            // in theory we could do figure[3] << 3rd figure? or some more complex search..?
+            // but kiss for now.
+            n = node.getElementsByTagName(tag).item(0);
+        }
+        if (!n) {
+            return '';
+        }
+        if (attr == 'html') {
+            return n.innerHTML;
+        }
+        if (attr == 'style') {
+            return n.style[style]; 
+        }
+        
+        return n.hasAttribute(attr) ? n.getAttribute(attr) : '';
+            
+    },
+    /**
+     * create a DomHelper friendly object - for use with 
+     * Roo.DomHelper.markup / overwrite / etc..
+     * (override this)
+     */
+    toObject : function()
+    {
+        return {};
+    },
+      /**
+     * Read a node that has a 'data-block' property - and extract the values from it.
+     * @param {DomElement} node - the node
+     */
+    readElement : function(node)
+    {
+        
+    } 
+    
+    
+};
+
+
+/**
+ * @class Roo.htmleditor.BlockFigure
+ * Block that has an image and a figcaption
+ * @cfg {String} image_src the url for the image
+ * @cfg {String} align (left|right) alignment for the block default left
+ * @cfg {String} caption the text to appear below  (and in the alt tag)
+ * @cfg {String} caption_display (block|none) display or not the caption
+ * @cfg {String|number} image_width the width of the image number or %?
+ * @cfg {String|number} image_height the height of the image number or %?
+ * 
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.BlockFigure = function(cfg)
+{
+    if (cfg.node) {
+        this.readElement(cfg.node);
+        this.updateElement(cfg.node);
+    }
+    Roo.apply(this, cfg);
+}
+Roo.extend(Roo.htmleditor.BlockFigure, Roo.htmleditor.Block, {
+    
+    // setable values.
+    image_src: '',
+    align: 'center',
+    caption : '',
+    caption_display : 'block',
+    width : '100%',
+    cls : '',
+    href: '',
+    video_url : '',
+    
+    // margin: '2%', not used
+    
+    text_align: 'left', //   (left|right) alignment for the text caption default left. - not used at present
+
+    
+    // used by context menu
+    friendly_name : 'Image with caption',
+    deleteTitle : "Delete Image and Caption",
+    
+    contextMenu : function(toolbar)
+    {
+        
+        var block = function() {
+            return Roo.htmleditor.Block.factory(toolbar.tb.selectedNode);
+        };
+        
+        
+        var rooui =  typeof(Roo.bootstrap) == 'undefined' ? Roo : Roo.bootstrap;
+        
+        var syncValue = toolbar.editorcore.syncValue;
+        
+        var fields = {};
+        
+        return [
+             {
+                xtype : 'TextItem',
+                text : "Source: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+            {
+                xtype : 'Button',
+                text: 'Change Image URL',
+                 
+                listeners : {
+                    click: function (btn, state)
+                    {
+                        var b = block();
+                        
+                        Roo.MessageBox.show({
+                            title : "Image Source URL",
+                            msg : "Enter the url for the image",
+                            buttons: Roo.MessageBox.OKCANCEL,
+                            fn: function(btn, val){
+                                if (btn != 'ok') {
+                                    return;
+                                }
+                                b.image_src = val;
+                                b.updateElement();
+                                syncValue();
+                                toolbar.editorcore.onEditorEvent();
+                            },
+                            minWidth:250,
+                            prompt:true,
+                            //multiline: multiline,
+                            modal : true,
+                            value : b.image_src
+                        });
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+         
+            {
+                xtype : 'Button',
+                text: 'Change Link URL',
+                 
+                listeners : {
+                    click: function (btn, state)
+                    {
+                        var b = block();
+                        
+                        Roo.MessageBox.show({
+                            title : "Link URL",
+                            msg : "Enter the url for the link - leave blank to have no link",
+                            buttons: Roo.MessageBox.OKCANCEL,
+                            fn: function(btn, val){
+                                if (btn != 'ok') {
+                                    return;
+                                }
+                                b.href = val;
+                                b.updateElement();
+                                syncValue();
+                                toolbar.editorcore.onEditorEvent();
+                            },
+                            minWidth:250,
+                            prompt:true,
+                            //multiline: multiline,
+                            modal : true,
+                            value : b.href
+                        });
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'Button',
+                text: 'Show Video URL',
+                 
+                listeners : {
+                    click: function (btn, state)
+                    {
+                        Roo.MessageBox.alert("Video URL",
+                            block().video_url == '' ? 'This image is not linked ot a video' :
+                                'The image is linked to: <a target="_new" href="' + block().video_url + '">' + block().video_url + '</a>');
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            
+            
+            {
+                xtype : 'TextItem',
+                text : "Width: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+            {
+                xtype : 'ComboBox',
+                allowBlank : false,
+                displayField : 'val',
+                editable : true,
+                listWidth : 100,
+                triggerAction : 'all',
+                typeAhead : true,
+                valueField : 'val',
+                width : 70,
+                name : 'width',
+                listeners : {
+                    select : function (combo, r, index)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        var b = block();
+                        b.width = r.get('val');
+                        b.updateElement();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.form,
+                store : {
+                    xtype : 'SimpleStore',
+                    data : [
+                        ['auto'],
+                        ['50%'],
+                        ['100%']
+                    ],
+                    fields : [ 'val'],
+                    xns : Roo.data
+                }
+            },
+            {
+                xtype : 'TextItem',
+                text : "Align: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+            {
+                xtype : 'ComboBox',
+                allowBlank : false,
+                displayField : 'val',
+                editable : true,
+                listWidth : 100,
+                triggerAction : 'all',
+                typeAhead : true,
+                valueField : 'val',
+                width : 70,
+                name : 'align',
+                listeners : {
+                    select : function (combo, r, index)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        var b = block();
+                        b.align = r.get('val');
+                        b.updateElement();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.form,
+                store : {
+                    xtype : 'SimpleStore',
+                    data : [
+                        ['left'],
+                        ['right'],
+                        ['center']
+                    ],
+                    fields : [ 'val'],
+                    xns : Roo.data
+                }
+            },
+            
+            
+            {
+                xtype : 'Button',
+                text: 'Hide Caption',
+                name : 'caption_display',
+                pressed : false,
+                enableToggle : true,
+                setValue : function(v) {
+                    this.toggle(v == 'block' ? false : true);
+                },
+                listeners : {
+                    toggle: function (btn, state)
+                    {
+                        var b  = block();
+                        b.caption_display = b.caption_display == 'block' ? 'none' : 'block';
+                        this.setText(b.caption_display == 'block' ? "Hide Caption" : "Show Caption");
+                        b.updateElement();
+                        syncValue();
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            }
+        ];
+        
+    },
+    /**
+     * create a DomHelper friendly object - for use with
+     * Roo.DomHelper.markup / overwrite / etc..
+     */
+    toObject : function()
+    {
+        var d = document.createElement('div');
+        d.innerHTML = this.caption;
+        
+        var m = this.width == '50%' && this.align == 'center' ? '0 auto' : 0; 
+        
+        var img =   {
+            tag : 'img',
+            contenteditable : 'false',
+            src : this.image_src,
+            alt : d.innerText.replace(/\n/g, " ").replace(/\s+/g, ' ').trim(), // removeHTML and reduce spaces..
+            style: {
+                width : 'auto',
+                'max-width': '100%',
+                margin : '0px' 
+                
+                
+            }
+        };
+        /*
+        '<div class="{0}" width="420" height="315" src="{1}" frameborder="0" allowfullscreen>' +
+                    '<a href="{2}">' + 
+                        '<img class="{0}-thumbnail" src="{3}/Images/{4}/{5}#image-{4}" />' + 
+                    '</a>' + 
+                '</div>',
+        */
+                
+        if (this.href.length > 0) {
+            img = {
+                tag : 'a',
+                href: this.href,
+                contenteditable : 'true',
+                cn : [
+                    img
+                ]
+            };
+        }
+        
+        
+        if (this.video_url.length > 0) {
+            img = {
+                tag : 'div',
+                cls : this.cls,
+                frameborder : 0,
+                allowfullscreen : true,
+                width : 420,  // these are for video tricks - that we replace the outer
+                height : 315,
+                src : this.video_url,
+                cn : [
+                    img
+                ]
+            };
+        }
+        
+        var captionhtml = this.caption_display == 'hidden' ? this.caption : (this.caption.length ? this.caption : "Caption");
+        
+        return  {
+            tag: 'figure',
+            'data-block' : 'Figure',
+            contenteditable : 'false',
+            style : {
+                display: 'block',
+                float :  this.align ,
+                'max-width':  this.width,
+                width : 'auto',
+                margin:  m,
+                padding: '10px'
+                
+            },
+           
+            
+            align : this.align,
+            cn : [
+                img,
+              
+                {
+                    tag: 'figcaption',
+                    
+                    style : {
+                        'text-align': 'left',
+                        'margin-top' : '16px',
+                        'font-size' : '16px',
+                        'line-height' : '24px',
+                         display : this.caption_display
+                    },
+                    cls : this.cls.length > 0 ? (this.cls  + '-thumbnail' ) : '',
+                    cn : [
+                        {
+                            // we can not rely on yahoo syndication to use CSS elements - so have to use  '<i>' to encase stuff.
+                            tag : 'i',
+                            contenteditable : true,
+                            html : captionhtml
+                        }
+                    ]
+                    
+                }
+            ]
+        };
+         
+    },
+    
+    readElement : function(node)
+    {
+        // this should not really come from the link...
+        this.video_url = this.getVal(node, 'div', 'src');
+        this.cls = this.getVal(node, 'div', 'class');
+        this.href = this.getVal(node, 'a', 'href');
+        
+        this.image_src = this.getVal(node, 'img', 'src');
+         
+        this.align = this.getVal(node, 'figure', 'align');
+        this.caption = this.getVal(node, 'figcaption', 'html');
+        // remove '<i>
+        if (this.caption.trim().match(/^<i[^>]*>/i)) {
+            this.caption = this.caption.trim().replace(/^<i[^>]*>/i, '').replace(/^<\/i>$/i, '');
+        }
+        //this.text_align = this.getVal(node, 'figcaption', 'style','text-align');
+        this.width = this.getVal(node, 'figure', 'style', 'max-width');
+        //this.margin = this.getVal(node, 'figure', 'style', 'margin');
+        
+    },
+    removeNode : function()
+    {
+        return this.node;
+    }
+    
+  
+   
+     
+    
+    
+    
+    
+})
+
+
+/**
+ * @class Roo.htmleditor.BlockTable
+ * Block that manages a table
+ * 
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.BlockTable = function(cfg)
+{
+    if (cfg.node) {
+        this.readElement(cfg.node);
+        this.updateElement(cfg.node);
+    }
+    Roo.apply(this, cfg);
+    if (!cfg.node) {
+        this.rows = [];
+        for(var r = 0; r < this.no_row; r++) {
+            this.rows[r] = [];
+            for(var c = 0; c < this.no_col; c++) {
+                this.rows[r][c] = this.emptyCell();
+            }
+        }
+    }
+    
+    
+}
+Roo.extend(Roo.htmleditor.BlockTable, Roo.htmleditor.Block, {
+    rows : false,
+    no_col : 1,
+    no_row : 1,
+    
+    
+    width: '100%',
+    
+    // used by context menu
+    friendly_name : 'Table',
+    deleteTitle : 'Delete Table',
+    // context menu is drawn once..
+    
+    contextMenu : function(toolbar)
+    {
+        
+        var block = function() {
+            return Roo.htmleditor.Block.factory(toolbar.tb.selectedNode);
+        };
+        
+        
+        var rooui =  typeof(Roo.bootstrap) == 'undefined' ? Roo : Roo.bootstrap;
+        
+        var syncValue = toolbar.editorcore.syncValue;
+        
+        var fields = {};
+        
+        return [
+            {
+                xtype : 'TextItem',
+                text : "Width: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+            {
+                xtype : 'ComboBox',
+                allowBlank : false,
+                displayField : 'val',
+                editable : true,
+                listWidth : 100,
+                triggerAction : 'all',
+                typeAhead : true,
+                valueField : 'val',
+                width : 100,
+                name : 'width',
+                listeners : {
+                    select : function (combo, r, index)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        var b = block();
+                        b.width = r.get('val');
+                        b.updateElement();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.form,
+                store : {
+                    xtype : 'SimpleStore',
+                    data : [
+                        ['100%'],
+                        ['auto']
+                    ],
+                    fields : [ 'val'],
+                    xns : Roo.data
+                }
+            },
+            // -------- Cols
+            
+            {
+                xtype : 'TextItem',
+                text : "Columns: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+         
+            {
+                xtype : 'Button',
+                text: '-',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        block().removeColumn();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'Button',
+                text: '+',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        block().addColumn();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            // -------- ROWS
+            {
+                xtype : 'TextItem',
+                text : "Rows: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+         
+            {
+                xtype : 'Button',
+                text: '-',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        block().removeRow();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'Button',
+                text: '+',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        block().addRow();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            // -------- ROWS
+            {
+                xtype : 'Button',
+                text: 'Reset Column Widths',
+                listeners : {
+                    
+                    click : function (_self, e)
+                    {
+                        block().resetWidths();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            } 
+            
+            
+            
+        ];
+        
+    },
+    
+    
+  /**
+     * create a DomHelper friendly object - for use with
+     * Roo.DomHelper.markup / overwrite / etc..
+     * ?? should it be called with option to hide all editing features?
+     */
+    toObject : function()
+    {
+        
+        var ret = {
+            tag : 'table',
+            contenteditable : 'false', // this stops cell selection from picking the table.
+            'data-block' : 'Table',
+            style : {
+                width:  this.width,
+                border : 'solid 1px #000', // ??? hard coded?
+                'border-collapse' : 'collapse' 
+            },
+            cn : [
+                { tag : 'tbody' , cn : [] }
+            ]
+        };
+        
+        // do we have a head = not really 
+        var ncols = 0;
+        Roo.each(this.rows, function( row ) {
+            var tr = {
+                tag: 'tr',
+                style : {
+                    margin: '6px',
+                    border : 'solid 1px #000',
+                    textAlign : 'left' 
+                },
+                cn : [ ]
+            };
+            
+            ret.cn[0].cn.push(tr);
+            // does the row have any properties? ?? height?
+            var nc = 0;
+            Roo.each(row, function( cell ) {
+                
+                var td = {
+                    tag : 'td',
+                    contenteditable :  'true',
+                    'data-block' : 'Td',
+                    html : cell.html,
+                    style : cell.style
+                };
+                if (cell.colspan > 1) {
+                    td.colspan = cell.colspan ;
+                    nc += cell.colspan;
+                } else {
+                    nc++;
+                }
+                if (cell.rowspan > 1) {
+                    td.rowspan = cell.rowspan ;
+                }
+                
+                
+                // widths ?
+                tr.cn.push(td);
+                    
+                
+            }, this);
+            ncols = Math.max(nc, ncols);
+            
+            
+        }, this);
+        // add the header row..
+        
+        ncols++;
+         
+        
+        return ret;
+         
+    },
+    
+    readElement : function(node)
+    {
+        node  = node ? node : this.node ;
+        this.width = this.getVal(node, true, 'style', 'width') || '100%';
+        
+        this.rows = [];
+        this.no_row = 0;
+        var trs = Array.from(node.rows);
+        trs.forEach(function(tr) {
+            var row =  [];
+            this.rows.push(row);
+            
+            this.no_row++;
+            var no_column = 0;
+            Array.from(tr.cells).forEach(function(td) {
+                
+                var add = {
+                    colspan : td.hasAttribute('colspan') ? td.getAttribute('colspan')*1 : 1,
+                    rowspan : td.hasAttribute('rowspan') ? td.getAttribute('rowspan')*1 : 1,
+                    style : td.hasAttribute('style') ? td.getAttribute('style') : '',
+                    html : td.innerHTML
+                };
+                no_column += add.colspan;
+                     
+                
+                row.push(add);
+                
+                
+            },this);
+            this.no_col = Math.max(this.no_col, no_column);
+            
+            
+        },this);
+        
+        
+    },
+    normalizeRows: function()
+    {
+        var ret= [];
+        var rid = -1;
+        this.rows.forEach(function(row) {
+            rid++;
+            ret[rid] = [];
+            row = this.normalizeRow(row);
+            var cid = 0;
+            row.forEach(function(c) {
+                while (typeof(ret[rid][cid]) != 'undefined') {
+                    cid++;
+                }
+                if (typeof(ret[rid]) == 'undefined') {
+                    ret[rid] = [];
+                }
+                ret[rid][cid] = c;
+                c.row = rid;
+                c.col = cid;
+                if (c.rowspan < 2) {
+                    return;
+                }
+                
+                for(var i = 1 ;i < c.rowspan; i++) {
+                    if (typeof(ret[rid+i]) == 'undefined') {
+                        ret[rid+i] = [];
+                    }
+                    ret[rid+i][cid] = c;
+                }
+            });
+        }, this);
+        return ret;
+    
+    },
+    
+    normalizeRow: function(row)
+    {
+        var ret= [];
+        row.forEach(function(c) {
+            if (c.colspan < 2) {
+                ret.push(c);
+                return;
+            }
+            for(var i =0 ;i < c.colspan; i++) {
+                ret.push(c);
+            }
+        });
+        return ret;
+    
+    },
+    
+    deleteColumn : function(sel)
+    {
+        if (!sel || sel.type != 'col') {
+            return;
+        }
+        if (this.no_col < 2) {
+            return;
+        }
+        
+        this.rows.forEach(function(row) {
+            var cols = this.normalizeRow(row);
+            var col = cols[sel.col];
+            if (col.colspan > 1) {
+                col.colspan --;
+            } else {
+                row.remove(col);
+            }
+            
+        }, this);
+        this.no_col--;
+        
+    },
+    removeColumn : function()
+    {
+        this.deleteColumn({
+            type: 'col',
+            col : this.no_col-1
+        });
+        this.updateElement();
+    },
+    
+     
+    addColumn : function()
+    {
+        
+        this.rows.forEach(function(row) {
+            row.push(this.emptyCell());
+           
+        }, this);
+        this.updateElement();
+    },
+    
+    deleteRow : function(sel)
+    {
+        if (!sel || sel.type != 'row') {
+            return;
+        }
+        
+        if (this.no_row < 2) {
+            return;
+        }
+        
+        var rows = this.normalizeRows();
+        
+        
+        rows[sel.row].forEach(function(col) {
+            if (col.rowspan > 1) {
+                col.rowspan--;
+            } else {
+                col.remove = 1; // flage it as removed.
+            }
+            
+        }, this);
+        var newrows = [];
+        this.rows.forEach(function(row) {
+            newrow = [];
+            row.forEach(function(c) {
+                if (typeof(c.remove) == 'undefined') {
+                    newrow.push(c);
+                }
+                
+            });
+            if (newrow.length > 0) {
+                newrows.push(row);
+            }
+        });
+        this.rows =  newrows;
+        
+        
+        
+        this.no_row--;
+        this.updateElement();
+        
+    },
+    removeRow : function()
+    {
+        this.deleteRow({
+            type: 'row',
+            row : this.no_row-1
+        });
+        
+    },
+    
+     
+    addRow : function()
+    {
+        
+        var row = [];
+        for (var i = 0; i < this.no_col; i++ ) {
+            
+            row.push(this.emptyCell());
+           
+        }
+        this.rows.push(row);
+        this.updateElement();
+        
+    },
+     
+    // the default cell object... at present...
+    emptyCell : function() {
+        return (new Roo.htmleditor.BlockTd({})).toObject();
+        
+     
+    },
+    
+    removeNode : function()
+    {
+        return this.node;
+    },
+    
+    
+    
+    resetWidths : function()
+    {
+        Array.from(this.node.getElementsByTagName('td')).forEach(function(n) {
+            var nn = Roo.htmleditor.Block.factory(n);
+            nn.width = '';
+            nn.updateElement(n);
+        });
+    }
+    
+    
+    
+    
+})
+
+/**
+ *
+ * editing a TD?
+ *
+ * since selections really work on the table cell, then editing really should work from there
+ *
+ * The original plan was to support merging etc... - but that may not be needed yet..
+ *
+ * So this simple version will support:
+ *   add/remove cols
+ *   adjust the width +/-
+ *   reset the width...
+ *   
+ *
+ */
+
+
+
+/**
+ * @class Roo.htmleditor.BlockTable
+ * Block that manages a table
+ * 
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.BlockTd = function(cfg)
+{
+    if (cfg.node) {
+        this.readElement(cfg.node);
+        this.updateElement(cfg.node);
+    }
+    Roo.apply(this, cfg);
+     
+    
+    
+}
+Roo.extend(Roo.htmleditor.BlockTd, Roo.htmleditor.Block, {
+    node : false,
+    
+    width: '',
+    textAlign : 'left',
+    valign : 'top',
+    
+    colspan : 1,
+    rowspan : 1,
+    
+    
+    // used by context menu
+    friendly_name : 'Table Cell',
+    deleteTitle : false, // use our customer delete
+    
+    // context menu is drawn once..
+    
+    contextMenu : function(toolbar)
+    {
+        
+        var cell = function() {
+            return Roo.htmleditor.Block.factory(toolbar.tb.selectedNode);
+        };
+        
+        var table = function() {
+            return Roo.htmleditor.Block.factory(toolbar.tb.selectedNode.closest('table'));
+        };
+        
+        var lr = false;
+        var saveSel = function()
+        {
+            lr = toolbar.editorcore.getSelection().getRangeAt(0);
+        }
+        var restoreSel = function()
+        {
+            if (lr) {
+                (function() {
+                    toolbar.editorcore.focus();
+                    var cr = toolbar.editorcore.getSelection();
+                    cr.removeAllRanges();
+                    cr.addRange(lr);
+                    toolbar.editorcore.onEditorEvent();
+                }).defer(10, this);
+                
+                
+            }
+        }
+        
+        var rooui =  typeof(Roo.bootstrap) == 'undefined' ? Roo : Roo.bootstrap;
+        
+        var syncValue = toolbar.editorcore.syncValue;
+        
+        var fields = {};
+        
+        return [
+            {
+                xtype : 'Button',
+                text : 'Edit Table',
+                listeners : {
+                    click : function() {
+                        var t = toolbar.tb.selectedNode.closest('table');
+                        toolbar.editorcore.selectNode(t);
+                        toolbar.editorcore.onEditorEvent();                        
+                    }
+                }
+                
+            },
+              
+           
+             
+            {
+                xtype : 'TextItem',
+                text : "Column Width: ",
+                 xns : rooui.Toolbar 
+               
+            },
+            {
+                xtype : 'Button',
+                text: '-',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        cell().shrinkColumn();
+                        syncValue();
+                         toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'Button',
+                text: '+',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        cell().growColumn();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            
+            {
+                xtype : 'TextItem',
+                text : "Vertical Align: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+            {
+                xtype : 'ComboBox',
+                allowBlank : false,
+                displayField : 'val',
+                editable : true,
+                listWidth : 100,
+                triggerAction : 'all',
+                typeAhead : true,
+                valueField : 'val',
+                width : 100,
+                name : 'valign',
+                listeners : {
+                    select : function (combo, r, index)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        var b = cell();
+                        b.valign = r.get('val');
+                        b.updateElement();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.form,
+                store : {
+                    xtype : 'SimpleStore',
+                    data : [
+                        ['top'],
+                        ['middle'],
+                        ['bottom'] // there are afew more... 
+                    ],
+                    fields : [ 'val'],
+                    xns : Roo.data
+                }
+            },
+            
+            {
+                xtype : 'TextItem',
+                text : "Merge Cells: ",
+                 xns : rooui.Toolbar 
+               
+            },
+            
+            
+            {
+                xtype : 'Button',
+                text: 'Right',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        cell().mergeRight();
+                        //block().growColumn();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+             
+            {
+                xtype : 'Button',
+                text: 'Below',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        cell().mergeBelow();
+                        //block().growColumn();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'TextItem',
+                text : "| ",
+                 xns : rooui.Toolbar 
+               
+            },
+            
+            {
+                xtype : 'Button',
+                text: 'Split',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        //toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        cell().split();
+                        syncValue();
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        toolbar.editorcore.onEditorEvent();
+                                             
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'Fill',
+                xns : rooui.Toolbar 
+               
+            },
+        
+          
+            {
+                xtype : 'Button',
+                text: 'Delete',
+                 
+                xns : rooui.Toolbar,
+                menu : {
+                    xtype : 'Menu',
+                    xns : rooui.menu,
+                    items : [
+                        {
+                            xtype : 'Item',
+                            html: 'Column',
+                            listeners : {
+                                click : function (_self, e)
+                                {
+                                    var t = table();
+                                    
+                                    cell().deleteColumn();
+                                    syncValue();
+                                    toolbar.editorcore.selectNode(t.node);
+                                    toolbar.editorcore.onEditorEvent();   
+                                }
+                            },
+                            xns : rooui.menu
+                        },
+                        {
+                            xtype : 'Item',
+                            html: 'Row',
+                            listeners : {
+                                click : function (_self, e)
+                                {
+                                    var t = table();
+                                    cell().deleteRow();
+                                    syncValue();
+                                    
+                                    toolbar.editorcore.selectNode(t.node);
+                                    toolbar.editorcore.onEditorEvent();   
+                                                         
+                                }
+                            },
+                            xns : rooui.menu
+                        },
+                       {
+                            xtype : 'Separator',
+                            xns : rooui.menu
+                        },
+                        {
+                            xtype : 'Item',
+                            html: 'Table',
+                            listeners : {
+                                click : function (_self, e)
+                                {
+                                    var t = table();
+                                    var nn = t.node.nextSibling || t.node.previousSibling;
+                                    t.node.parentNode.removeChild(t.node);
+                                    if (nn) { 
+                                        toolbar.editorcore.selectNode(nn, true);
+                                    }
+                                    toolbar.editorcore.onEditorEvent();   
+                                                         
+                                }
+                            },
+                            xns : rooui.menu
+                        }
+                    ]
+                }
+            }
+            
+            // align... << fixme
+            
+        ];
+        
+    },
+    
+    
+  /**
+     * create a DomHelper friendly object - for use with
+     * Roo.DomHelper.markup / overwrite / etc..
+     * ?? should it be called with option to hide all editing features?
+     */
+ /**
+     * create a DomHelper friendly object - for use with
+     * Roo.DomHelper.markup / overwrite / etc..
+     * ?? should it be called with option to hide all editing features?
+     */
+    toObject : function()
+    {
+        
+        var ret = {
+            tag : 'td',
+            contenteditable : 'true', // this stops cell selection from picking the table.
+            'data-block' : 'Td',
+            valign : this.valign,
+            style : {  
+                'text-align' :  this.textAlign,
+                border : 'solid 1px rgb(0, 0, 0)', // ??? hard coded?
+                'border-collapse' : 'collapse',
+                padding : '6px', // 8 for desktop / 4 for mobile
+                'vertical-align': this.valign
+            },
+            html : this.html
+        };
+        if (this.width != '') {
+            ret.width = this.width;
+            ret.style.width = this.width;
+        }
+        
+        
+        if (this.colspan > 1) {
+            ret.colspan = this.colspan ;
+        } 
+        if (this.rowspan > 1) {
+            ret.rowspan = this.rowspan ;
+        }
+        
+           
+        
+        return ret;
+         
+    },
+    
+    readElement : function(node)
+    {
+        node  = node ? node : this.node ;
+        this.width = node.style.width;
+        this.colspan = Math.max(1,1*node.getAttribute('colspan'));
+        this.rowspan = Math.max(1,1*node.getAttribute('rowspan'));
+        this.html = node.innerHTML;
+        
+        
+    },
+     
+    // the default cell object... at present...
+    emptyCell : function() {
+        return {
+            colspan :  1,
+            rowspan :  1,
+            textAlign : 'left',
+            html : "&nbsp;" // is this going to be editable now?
+        };
+     
+    },
+    
+    removeNode : function()
+    {
+        return this.node.closest('table');
+         
+    },
+    
+    cellData : false,
+    
+    colWidths : false,
+    
+    toTableArray  : function()
+    {
+        var ret = [];
+        var tab = this.node.closest('tr').closest('table');
+        Array.from(tab.rows).forEach(function(r, ri){
+            ret[ri] = [];
+        });
+        var rn = 0;
+        this.colWidths = [];
+        var all_auto = true;
+        Array.from(tab.rows).forEach(function(r, ri){
+            
+            var cn = 0;
+            Array.from(r.cells).forEach(function(ce, ci){
+                var c =  {
+                    cell : ce,
+                    row : rn,
+                    col: cn,
+                    colspan : ce.colSpan,
+                    rowspan : ce.rowSpan
+                };
+                if (ce.isEqualNode(this.node)) {
+                    this.cellData = c;
+                }
+                // if we have been filled up by a row?
+                if (typeof(ret[rn][cn]) != 'undefined') {
+                    while(typeof(ret[rn][cn]) != 'undefined') {
+                        cn++;
+                    }
+                    c.col = cn;
+                }
+                
+                if (typeof(this.colWidths[cn]) == 'undefined') {
+                    this.colWidths[cn] =   ce.style.width;
+                    if (this.colWidths[cn] != '') {
+                        all_auto = false;
+                    }
+                }
+                
+                
+                if (c.colspan < 2 && c.rowspan < 2 ) {
+                    ret[rn][cn] = c;
+                    cn++;
+                    return;
+                }
+                for(var j = 0; j < c.rowspan; j++) {
+                    if (typeof(ret[rn+j]) == 'undefined') {
+                        continue; // we have a problem..
+                    }
+                    ret[rn+j][cn] = c;
+                    for(var i = 0; i < c.colspan; i++) {
+                        ret[rn+j][cn+i] = c;
+                    }
+                }
+                
+                cn += c.colspan;
+            }, this);
+            rn++;
+        }, this);
+        
+        // initalize widths.?
+        // either all widths or no widths..
+        if (all_auto) {
+            this.colWidths[0] = false; // no widths flag.
+        }
+        
+        
+        return ret;
+        
+    },
+    
+    
+    
+    
+    mergeRight: function()
+    {
+         
+        // get the contents of the next cell along..
+        var tr = this.node.closest('tr');
+        var i = Array.prototype.indexOf.call(tr.childNodes, this.node);
+        if (i >= tr.childNodes.length - 1) {
+            return; // no cells on right to merge with.
+        }
+        var table = this.toTableArray();
+        
+        if (typeof(table[this.cellData.row][this.cellData.col+this.cellData.colspan]) == 'undefined') {
+            return; // nothing right?
+        }
+        var rc = table[this.cellData.row][this.cellData.col+this.cellData.colspan];
+        // right cell - must be same rowspan and on the same row.
+        if (rc.rowspan != this.cellData.rowspan || rc.row != this.cellData.row) {
+            return; // right hand side is not same rowspan.
+        }
+        
+        
+        
+        this.node.innerHTML += ' ' + rc.cell.innerHTML;
+        tr.removeChild(rc.cell);
+        this.colspan += rc.colspan;
+        this.node.setAttribute('colspan', this.colspan);
+
+    },
+    
+    
+    mergeBelow : function()
+    {
+        var table = this.toTableArray();
+        if (typeof(table[this.cellData.row+this.cellData.rowspan]) == 'undefined') {
+            return; // no row below
+        }
+        if (typeof(table[this.cellData.row+this.cellData.rowspan][this.cellData.col]) == 'undefined') {
+            return; // nothing right?
+        }
+        var rc = table[this.cellData.row+this.cellData.rowspan][this.cellData.col];
+        
+        if (rc.colspan != this.cellData.colspan || rc.col != this.cellData.col) {
+            return; // right hand side is not same rowspan.
+        }
+        this.node.innerHTML =  this.node.innerHTML + rc.cell.innerHTML ;
+        rc.cell.parentNode.removeChild(rc.cell);
+        this.rowspan += rc.rowspan;
+        this.node.setAttribute('rowspan', this.rowspan);
+    },
+    
+    split: function()
+    {
+        if (this.node.rowSpan < 2 && this.node.colSpan < 2) {
+            return;
+        }
+        var table = this.toTableArray();
+        var cd = this.cellData;
+        this.rowspan = 1;
+        this.colspan = 1;
+        
+        for(var r = cd.row; r < cd.row + cd.rowspan; r++) {
+            
+            
+            
+            for(var c = cd.col; c < cd.col + cd.colspan; c++) {
+                if (r == cd.row && c == cd.col) {
+                    this.node.removeAttribute('rowspan');
+                    this.node.removeAttribute('colspan');
+                    continue;
+                }
+                 
+                var ntd = this.node.cloneNode(); // which col/row should be 0..
+                ntd.removeAttribute('id'); //
+                //ntd.style.width  = '';
+                ntd.innerHTML = '';
+                table[r][c] = { cell : ntd, col : c, row: r , colspan : 1 , rowspan : 1   };
+            }
+            
+        }
+        this.redrawAllCells(table);
+        
+         
+        
+    },
+    
+    
+    
+    redrawAllCells: function(table)
+    {
+        
+         
+        var tab = this.node.closest('tr').closest('table');
+        var ctr = tab.rows[0].parentNode;
+        Array.from(tab.rows).forEach(function(r, ri){
+            
+            Array.from(r.cells).forEach(function(ce, ci){
+                ce.parentNode.removeChild(ce);
+            });
+            r.parentNode.removeChild(r);
+        });
+        for(var r = 0 ; r < table.length; r++) {
+            var re = tab.rows[r];
+            
+            var re = tab.ownerDocument.createElement('tr');
+            ctr.appendChild(re);
+            for(var c = 0 ; c < table[r].length; c++) {
+                if (table[r][c].cell === false) {
+                    continue;
+                }
+                
+                re.appendChild(table[r][c].cell);
+                 
+                table[r][c].cell = false;
+            }
+        }
+        
+    },
+    updateWidths : function(table)
+    {
+        for(var r = 0 ; r < table.length; r++) {
+           
+            for(var c = 0 ; c < table[r].length; c++) {
+                if (table[r][c].cell === false) {
+                    continue;
+                }
+                
+                if (this.colWidths[0] != false && table[r][c].colspan < 2) {
+                    var el = Roo.htmleditor.Block.factory(table[r][c].cell);
+                    el.width = Math.floor(this.colWidths[c])  +'%';
+                    el.updateElement(el.node);
+                }
+                table[r][c].cell = false; // done
+            }
+        }
+    },
+    normalizeWidths : function(table)
+    {
+    
+        if (this.colWidths[0] === false) {
+            var nw = 100.0 / this.colWidths.length;
+            this.colWidths.forEach(function(w,i) {
+                this.colWidths[i] = nw;
+            },this);
+            return;
+        }
+    
+        var t = 0, missing = [];
+        
+        this.colWidths.forEach(function(w,i) {
+            //if you mix % and
+            this.colWidths[i] = this.colWidths[i] == '' ? 0 : (this.colWidths[i]+'').replace(/[^0-9]+/g,'')*1;
+            var add =  this.colWidths[i];
+            if (add > 0) {
+                t+=add;
+                return;
+            }
+            missing.push(i);
+            
+            
+        },this);
+        var nc = this.colWidths.length;
+        if (missing.length) {
+            var mult = (nc - missing.length) / (1.0 * nc);
+            var t = mult * t;
+            var ew = (100 -t) / (1.0 * missing.length);
+            this.colWidths.forEach(function(w,i) {
+                if (w > 0) {
+                    this.colWidths[i] = w * mult;
+                    return;
+                }
+                
+                this.colWidths[i] = ew;
+            }, this);
+            // have to make up numbers..
+             
+        }
+        // now we should have all the widths..
+        
+    
+    },
+    
+    shrinkColumn : function()
+    {
+        var table = this.toTableArray();
+        this.normalizeWidths(table);
+        var col = this.cellData.col;
+        var nw = this.colWidths[col] * 0.8;
+        if (nw < 5) {
+            return;
+        }
+        var otherAdd = (this.colWidths[col]  * 0.2) / (this.colWidths.length -1);
+        this.colWidths.forEach(function(w,i) {
+            if (i == col) {
+                 this.colWidths[i] = nw;
+                return;
+            }
+            this.colWidths[i] += otherAdd
+        }, this);
+        this.updateWidths(table);
+         
+    },
+    growColumn : function()
+    {
+        var table = this.toTableArray();
+        this.normalizeWidths(table);
+        var col = this.cellData.col;
+        var nw = this.colWidths[col] * 1.2;
+        if (nw > 90) {
+            return;
+        }
+        var otherSub = (this.colWidths[col]  * 0.2) / (this.colWidths.length -1);
+        this.colWidths.forEach(function(w,i) {
+            if (i == col) {
+                this.colWidths[i] = nw;
+                return;
+            }
+            this.colWidths[i] -= otherSub
+        }, this);
+        this.updateWidths(table);
+         
+    },
+    deleteRow : function()
+    {
+        // delete this rows 'tr'
+        // if any of the cells in this row have a rowspan > 1 && row!= this row..
+        // then reduce the rowspan.
+        var table = this.toTableArray();
+        // this.cellData.row;
+        for (var i =0;i< table[this.cellData.row].length ; i++) {
+            var c = table[this.cellData.row][i];
+            if (c.row != this.cellData.row) {
+                
+                c.rowspan--;
+                c.cell.setAttribute('rowspan', c.rowspan);
+                continue;
+            }
+            if (c.rowspan > 1) {
+                c.rowspan--;
+                c.cell.setAttribute('rowspan', c.rowspan);
+            }
+        }
+        table.splice(this.cellData.row,1);
+        this.redrawAllCells(table);
+        
+    },
+    deleteColumn : function()
+    {
+        var table = this.toTableArray();
+        
+        for (var i =0;i< table.length ; i++) {
+            var c = table[i][this.cellData.col];
+            if (c.col != this.cellData.col) {
+                table[i][this.cellData.col].colspan--;
+            } else if (c.colspan > 1) {
+                c.colspan--;
+                c.cell.setAttribute('colspan', c.colspan);
+            }
+            table[i].splice(this.cellData.col,1);
+        }
+        
+        this.redrawAllCells(table);
+    }
+    
+    
+    
+    
+})
+
+//<script type="text/javascript">
+
+/*
+ * Based  Ext JS Library 1.1.1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * LGPL
+ *
+ */
+/**
+ * @class Roo.HtmlEditorCore
+ * @extends Roo.Component
+ * Provides a the editing component for the HTML editors in Roo. (bootstrap and Roo.form)
+ *
+ * any element that has display set to 'none' can cause problems in Safari and Firefox.<br/><br/>
+ */
+
+Roo.HtmlEditorCore = function(config){
+    
+    
+    Roo.HtmlEditorCore.superclass.constructor.call(this, config);
+    
+    
+    this.addEvents({
+        /**
+         * @event initialize
+         * Fires when the editor is fully initialized (including the iframe)
+         * @param {Roo.HtmlEditorCore} this
+         */
+        initialize: true,
+        /**
+         * @event activate
+         * Fires when the editor is first receives the focus. Any insertion must wait
+         * until after this event.
+         * @param {Roo.HtmlEditorCore} this
+         */
+        activate: true,
+         /**
+         * @event beforesync
+         * Fires before the textarea is updated with content from the editor iframe. Return false
+         * to cancel the sync.
+         * @param {Roo.HtmlEditorCore} this
+         * @param {String} html
+         */
+        beforesync: true,
+         /**
+         * @event beforepush
+         * Fires before the iframe editor is updated with content from the textarea. Return false
+         * to cancel the push.
+         * @param {Roo.HtmlEditorCore} this
+         * @param {String} html
+         */
+        beforepush: true,
+         /**
+         * @event sync
+         * Fires when the textarea is updated with content from the editor iframe.
+         * @param {Roo.HtmlEditorCore} this
+         * @param {String} html
+         */
+        sync: true,
+         /**
+         * @event push
+         * Fires when the iframe editor is updated with content from the textarea.
+         * @param {Roo.HtmlEditorCore} this
+         * @param {String} html
+         */
+        push: true,
+        
+        /**
+         * @event editorevent
+         * Fires when on any editor (mouse up/down cursor movement etc.) - used for toolbar hooks.
+         * @param {Roo.HtmlEditorCore} this
+         */
+        editorevent: true 
+         
+        
+    });
+    
+    // at this point this.owner is set, so we can start working out the whitelisted / blacklisted elements
+    
+    // defaults : white / black...
+    this.applyBlacklists();
+    
+    
+    
+};
+
+
+Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
+
+
+     /**
+     * @cfg {Roo.form.HtmlEditor|Roo.bootstrap.HtmlEditor} the owner field 
+     */
+    
+    owner : false,
+    
+     /**
+     * @cfg {String} resizable  's' or 'se' or 'e' - wrapps the element in a
+     *                        Roo.resizable.
+     */
+    resizable : false,
+     /**
+     * @cfg {Number} height (in pixels)
+     */   
+    height: 300,
+   /**
+     * @cfg {Number} width (in pixels)
+     */   
+    width: 500,
+     /**
+     * @cfg {boolean} autoClean - default true - loading and saving will remove quite a bit of formating,
+     *         if you are doing an email editor, this probably needs disabling, it's designed
+     */
+    autoClean: true,
+    
+    /**
+     * @cfg {boolean} enableBlocks - default true - if the block editor (table and figure should be enabled)
+     */
+    enableBlocks : true,
+    /**
+     * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets.
+     * 
+     */
+    stylesheets: false,
+     /**
+     * @cfg {String} language default en - language of text (usefull for rtl languages)
+     * 
+     */
+    language: 'en',
+    
+    /**
+     * @cfg {boolean} allowComments - default false - allow comments in HTML source
+     *          - by default they are stripped - if you are editing email you may need this.
+     */
+    allowComments: false,
+    // id of frame..
+    frameId: false,
+    
+    // private properties
+    validationEvent : false,
+    deferHeight: true,
+    initialized : false,
+    activated : false,
+    sourceEditMode : false,
+    onFocus : Roo.emptyFn,
+    iframePad:3,
+    hideMode:'offsets',
+    
+    clearUp: true,
+    
+    // blacklist + whitelisted elements..
+    black: false,
+    white: false,
+     
+    bodyCls : '',
+
+    
+    undoManager : false,
+    /**
+     * Protected method that will not generally be called directly. It
+     * is called when the editor initializes the iframe with HTML contents. Override this method if you
+     * want to change the initialization markup of the iframe (e.g. to add stylesheets).
+     */
+    getDocMarkup : function(){
+        // body styles..
+        var st = '';
+        
+        // inherit styels from page...?? 
+        if (this.stylesheets === false) {
+            
+            Roo.get(document.head).select('style').each(function(node) {
+                st += node.dom.outerHTML || new XMLSerializer().serializeToString(node.dom);
+            });
+            
+            Roo.get(document.head).select('link').each(function(node) { 
+                st += node.dom.outerHTML || new XMLSerializer().serializeToString(node.dom);
+            });
+            
+        } else if (!this.stylesheets.length) {
+                // simple..
+                st = '<style type="text/css">' +
+                    'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
+                   '</style>';
+        } else {
+            for (var i in this.stylesheets) {
+                if (typeof(this.stylesheets[i]) != 'string') {
+                    continue;
+                }
+                st += '<link rel="stylesheet" href="' + this.stylesheets[i] +'" type="text/css">';
+            }
+            
+        }
+        
+        st +=  '<style type="text/css">' +
+            'IMG { cursor: pointer } ' +
+        '</style>';
+        
+        st += '<meta name="google" content="notranslate">';
+        
+        var cls = 'notranslate roo-htmleditor-body';
+        
+        if(this.bodyCls.length){
+            cls += ' ' + this.bodyCls;
+        }
+        
+        return '<html  class="notranslate" translate="no"><head>' + st  +
+            //<style type="text/css">' +
+            //'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
+            //'</style>' +
+            ' </head><body contenteditable="true" data-enable-grammerly="true" class="' +  cls + '"></body></html>';
+    },
+
+    // private
+    onRender : function(ct, position)
+    {
+        var _t = this;
+        //Roo.HtmlEditorCore.superclass.onRender.call(this, ct, position);
+        this.el = this.owner.inputEl ? this.owner.inputEl() : this.owner.el;
+        
+        
+        this.el.dom.style.border = '0 none';
+        this.el.dom.setAttribute('tabIndex', -1);
+        this.el.addClass('x-hidden hide');
+        
+        
+        
+        if(Roo.isIE){ // fix IE 1px bogus margin
+            this.el.applyStyles('margin-top:-1px;margin-bottom:-1px;')
+        }
+       
+        
+        this.frameId = Roo.id();
+        
+         
+        
+        var iframe = this.owner.wrap.createChild({
+            tag: 'iframe',
+            cls: 'form-control', // bootstrap..
+            id: this.frameId,
+            name: this.frameId,
+            frameBorder : 'no',
+            'src' : Roo.SSL_SECURE_URL ? Roo.SSL_SECURE_URL  :  "javascript:false"
+        }, this.el
+        );
+        
+        
+        this.iframe = iframe.dom;
+
+        this.assignDocWin();
+        
+        this.doc.designMode = 'on';
+       
+        this.doc.open();
+        this.doc.write(this.getDocMarkup());
+        this.doc.close();
+
+        
+        var task = { // must defer to wait for browser to be ready
+            run : function(){
+                //console.log("run task?" + this.doc.readyState);
+                this.assignDocWin();
+                if(this.doc.body || this.doc.readyState == 'complete'){
+                    try {
+                        this.doc.designMode="on";
+                        
+                    } catch (e) {
+                        return;
+                    }
+                    Roo.TaskMgr.stop(task);
+                    this.initEditor.defer(10, this);
+                }
+            },
+            interval : 10,
+            duration: 10000,
+            scope: this
+        };
+        Roo.TaskMgr.start(task);
+
+    },
+
+    // private
+    onResize : function(w, h)
+    {
+         Roo.log('resize: ' +w + ',' + h );
+        //Roo.HtmlEditorCore.superclass.onResize.apply(this, arguments);
+        if(!this.iframe){
             return;
         }
         if(typeof w == 'number'){
@@ -44701,10 +49749,10 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         
         if(this.sourceEditMode){
  
-            Roo.get(this.iframe).addClass(['x-hidden','hide']);     //FIXME - what's the BS styles for these
+            Roo.get(this.iframe).addClass(['x-hidden','hide', 'd-none']);     //FIXME - what's the BS styles for these
             
         }else{
-            Roo.get(this.iframe).removeClass(['x-hidden','hide']);
+            Roo.get(this.iframe).removeClass(['x-hidden','hide', 'd-none']);
             //this.iframe.className = '';
             this.deferFocus();
         }
@@ -44721,7 +49769,8 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
      * @param {String} html The HTML to be cleaned
      * return {String} The cleaned HTML
      */
-    cleanHtml : function(html){
+    cleanHtml : function(html)
+    {
         html = String(html);
         if(html.length > 5){
             if(Roo.isSafari){ // strip safari nonsense
@@ -44739,11 +49788,38 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
      * Protected method that will not generally be called directly. Syncs the contents
      * of the editor iframe with the textarea.
      */
-    syncValue : function(){
+    syncValue : function()
+    {
+        //Roo.log("HtmlEditorCore:syncValue (EDITOR->TEXT)");
         if(this.initialized){
+            
+            this.undoManager.addEvent();
+
+            
             var bd = (this.doc.body || this.doc.documentElement);
-            //this.cleanUpPaste(); -- this is done else where and causes havoc..
-            var html = bd.innerHTML;
+           
+            
+            var sel = this.win.getSelection();
+            
+            var div = document.createElement('div');
+            div.innerHTML = bd.innerHTML;
+            var gtx = div.getElementsByClassName('gtx-trans-icon'); // google translate - really annoying and difficult to get rid of.
+            if (gtx.length > 0) {
+                var rm = gtx.item(0).parentNode;
+                rm.parentNode.removeChild(rm);
+            }
+            
+           
+            if (this.enableBlocks) {
+                new Roo.htmleditor.FilterBlock({ node : div });
+            }
+            //?? tidy?
+            var tidy = new Roo.htmleditor.TidySerializer({
+                inner:  true
+            });
+            var html  = tidy.serialize(div);
+            
+            
             if(Roo.isSafari){
                 var bs = bd.getAttribute('style'); // Safari puts text-align styles on the body element!
                 var m = bs ? bs.match(/text-align:(.*?);/i) : false;
@@ -44788,24 +49864,41 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
     },
 
     /**
+     * TEXTAREA -> EDITABLE
      * Protected method that will not generally be called directly. Pushes the value of the textarea
      * into the iframe editor.
      */
-    pushValue : function(){
+    pushValue : function()
+    {
+        //Roo.log("HtmlEditorCore:pushValue (TEXT->EDITOR)");
         if(this.initialized){
             var v = this.el.dom.value.trim();
             
-//            if(v.length < 1){
-//                v = '&#160;';
-//            }
             
             if(this.owner.fireEvent('beforepush', this, v) !== false){
                 var d = (this.doc.body || this.doc.documentElement);
                 d.innerHTML = v;
-                this.cleanUpPaste();
+                 
                 this.el.dom.value = d.innerHTML;
                 this.owner.fireEvent('push', this, v);
             }
+            if (this.autoClean) {
+                new Roo.htmleditor.FilterParagraph({node : this.doc.body}); // paragraphs
+                new Roo.htmleditor.FilterSpan({node : this.doc.body}); // empty spans
+            }
+            if (this.enableBlocks) {
+                Roo.htmleditor.Block.initAll(this.doc.body);
+            }
+            
+            this.updateLanguage();
+            
+            var lc = this.doc.body.lastChild;
+            if (lc && lc.nodeType == 1 && lc.getAttribute("contenteditable") == "false") {
+                // add an extra line at the end.
+                this.doc.body.appendChild(this.doc.createElement('br'));
+            }
+            
+            
         }
     },
 
@@ -44867,28 +49960,136 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         //var ss = this.el.getStyles( 'background-image', 'background-repeat');
         //ss['background-attachment'] = 'fixed'; // w3c
         dbody.bgProperties = 'fixed'; // ie
+        dbody.setAttribute("translate", "no");
+        
         //Roo.DomHelper.applyStyles(dbody, ss);
         Roo.EventManager.on(this.doc, {
-            //'mousedown': this.onEditorEvent,
+             
             'mouseup': this.onEditorEvent,
             'dblclick': this.onEditorEvent,
             'click': this.onEditorEvent,
             'keyup': this.onEditorEvent,
+            
             buffer:100,
             scope: this
         });
+        Roo.EventManager.on(this.doc, {
+            'paste': this.onPasteEvent,
+            scope : this
+        });
         if(Roo.isGecko){
             Roo.EventManager.on(this.doc, 'keypress', this.mozKeyPress, this);
         }
+        //??? needed???
         if(Roo.isIE || Roo.isSafari || Roo.isOpera){
             Roo.EventManager.on(this.doc, 'keydown', this.fixKeys, this);
         }
         this.initialized = true;
 
+        
+        // initialize special key events - enter
+        new Roo.htmleditor.KeyEnter({core : this});
+        
+         
+        
         this.owner.fireEvent('initialize', this);
         this.pushValue();
     },
-
+    // this is to prevent a href clicks resulting in a redirect?
+   
+    onPasteEvent : function(e,v)
+    {
+        // I think we better assume paste is going to be a dirty load of rubish from word..
+        
+        // even pasting into a 'email version' of this widget will have to clean up that mess.
+        var cd = (e.browserEvent.clipboardData || window.clipboardData);
+        
+        // check what type of paste - if it's an image, then handle it differently.
+        if (cd.files.length > 0) {
+            // pasting images?
+            var urlAPI = (window.createObjectURL && window) || 
+                (window.URL && URL.revokeObjectURL && URL) || 
+                (window.webkitURL && webkitURL);
+    
+            var url = urlAPI.createObjectURL( cd.files[0]);
+            this.insertAtCursor('<img src=" + url + ">');
+            return false;
+        }
+        
+        var html = cd.getData('text/html'); // clipboard event
+        var parser = new Roo.rtf.Parser(cd.getData('text/rtf'));
+        var images = parser.doc ? parser.doc.getElementsByType('pict') : [];
+        Roo.log(images);
+        //Roo.log(imgs);
+        // fixme..
+        images = images.filter(function(g) { return !g.path.match(/^rtf\/(head|pgdsctbl|listtable)/); }) // ignore headers
+                       .map(function(g) { return g.toDataURL(); })
+                       .filter(function(g) { return g != 'about:blank'; });
+        
+        
+        html = this.cleanWordChars(html);
+        
+        var d = (new DOMParser().parseFromString(html, 'text/html')).body;
+        
+        
+        var sn = this.getParentElement();
+        // check if d contains a table, and prevent nesting??
+        //Roo.log(d.getElementsByTagName('table'));
+        //Roo.log(sn);
+        //Roo.log(sn.closest('table'));
+        if (d.getElementsByTagName('table').length && sn && sn.closest('table')) {
+            e.preventDefault();
+            this.insertAtCursor("You can not nest tables");
+            //Roo.log("prevent?"); // fixme - 
+            return false;
+        }
+        
+        if (images.length > 0) {
+            Roo.each(d.getElementsByTagName('img'), function(img, i) {
+                img.setAttribute('src', images[i]);
+            });
+        }
+        if (this.autoClean) {
+            new Roo.htmleditor.FilterStyleToTag({ node : d });
+            new Roo.htmleditor.FilterAttributes({
+                node : d,
+                attrib_white : ['href', 'src', 'name', 'align'],
+                attrib_clean : ['href', 'src' ] 
+            });
+            new Roo.htmleditor.FilterBlack({ node : d, tag : this.black});
+            // should be fonts..
+            new Roo.htmleditor.FilterKeepChildren({node : d, tag : [ 'FONT', 'O:P' ]} );
+            new Roo.htmleditor.FilterParagraph({ node : d });
+            new Roo.htmleditor.FilterSpan({ node : d });
+            new Roo.htmleditor.FilterLongBr({ node : d });
+        }
+        if (this.enableBlocks) {
+                
+            Array.from(d.getElementsByTagName('img')).forEach(function(img) {
+                if (img.closest('figure')) { // assume!! that it's aready
+                    return;
+                }
+                var fig  = new Roo.htmleditor.BlockFigure({
+                    image_src  : img.src
+                });
+                fig.updateElement(img); // replace it..
+                
+            });
+        }
+        
+        
+        this.insertAtCursor(d.innerHTML.replace(/&nbsp;/g,' '));
+        if (this.enableBlocks) {
+            Roo.htmleditor.Block.initAll(this.doc.body);
+        }
+        
+        
+        e.preventDefault();
+        return false;
+        // default behaveiour should be our local cleanup paste? (optional?)
+        // for simple editor - we want to hammer the paste and get rid of everything... - so over-rideable..
+        //this.owner.fireEvent('paste', e, v);
+    },
     // private
     onDestroy : function(){
         
@@ -44910,7 +50111,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
     onFirstFocus : function(){
         
         this.assignDocWin();
-        
+        this.undoManager = new Roo.lib.UndoManager(100,(this.doc.body || this.doc.documentElement));
         
         this.activated = true;
          
@@ -44955,10 +50156,48 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
 
     onEditorEvent : function(e)
     {
-        this.owner.fireEvent('editorevent', this, e);
+         
+        
+        if (e && (e.ctrlKey || e.metaKey) && e.keyCode === 90) {
+            return; // we do not handle this.. (undo manager does..)
+        }
+        // in theory this detects if the last element is not a br, then we try and do that.
+        // its so clicking in space at bottom triggers adding a br and moving the cursor.
+        if (e &&
+            e.target.nodeName == 'BODY' &&
+            e.type == "mouseup" &&
+            this.doc.body.lastChild
+           ) {
+            var lc = this.doc.body.lastChild;
+            // gtx-trans is google translate plugin adding crap.
+            while ((lc.nodeType == 3 && lc.nodeValue == '') || lc.id == 'gtx-trans') {
+                lc = lc.previousSibling;
+            }
+            if (lc.nodeType == 1 && lc.nodeName != 'BR') {
+            // if last element is <BR> - then dont do anything.
+            
+                var ns = this.doc.createElement('br');
+                this.doc.body.appendChild(ns);
+                range = this.doc.createRange();
+                range.setStartAfter(ns);
+                range.collapse(true);
+                var sel = this.win.getSelection();
+                sel.removeAllRanges();
+                sel.addRange(range);
+            }
+        }
+        
+        
+        
+        this.fireEditorEvent(e);
       //  this.updateToolbar();
         this.syncValue(); //we can not sync so often.. sync cleans, so this breaks stuff
     },
+    
+    fireEditorEvent: function(e)
+    {
+        this.owner.fireEvent('editorevent', this, e);
+    },
 
     insertTag : function(tg)
     {
@@ -44980,7 +50219,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
             
         }
         this.execCmd("formatblock",   tg);
-        
+        this.undoManager.addEvent(); 
     },
     
     insertText : function(txt)
@@ -44992,6 +50231,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                //alert(Sender.getAttribute('label'));
                
         range.insertNode(this.doc.createTextNode(txt));
+        this.undoManager.addEvent();
     } ,
     
      
@@ -45002,7 +50242,37 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
      * @param {String} cmd The Midas command
      * @param {String/Boolean} value (optional) The value to pass to the command (defaults to null)
      */
-    relayCmd : function(cmd, value){
+    relayCmd : function(cmd, value)
+    {
+        
+        switch (cmd) {
+            case 'justifyleft':
+            case 'justifyright':
+            case 'justifycenter':
+                // if we are in a cell, then we will adjust the
+                var n = this.getParentElement();
+                var td = n.closest('td');
+                if (td) {
+                    var bl = Roo.htmleditor.Block.factory(td);
+                    bl.textAlign = cmd.replace('justify','');
+                    bl.updateElement();
+                    this.owner.fireEvent('editorevent', this);
+                    return;
+                }
+                this.execCmd('styleWithCSS', true); // 
+                break;
+            case 'bold':
+            case 'italic':
+                // if there is no selection, then we insert, and set the curson inside it..
+                this.execCmd('styleWithCSS', false); 
+                break;
+                
+        
+            default:
+                break;
+        }
+        
+        
         this.win.focus();
         this.execCmd(cmd, value);
         this.owner.fireEvent('editorevent', this);
@@ -45035,20 +50305,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         if(!this.activated){
             return;
         }
-        /*
-        if(Roo.isIE){
-            this.win.focus();
-            var r = this.doc.selection.createRange();
-            if(r){
-                r.collapse(true);
-                r.pasteHTML(text);
-                this.syncValue();
-                this.deferFocus();
-            
-            }
-            return;
-        }
-        */
+         
         if(Roo.isGecko || Roo.isOpera || Roo.isSafari){
             this.win.focus();
             
@@ -45058,19 +50315,31 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
             var win = this.win;
             
             if (win.getSelection && win.getSelection().getRangeAt) {
+                
+                // delete the existing?
+                
+                this.createRange(this.getSelection()).deleteContents();
                 range = win.getSelection().getRangeAt(0);
                 node = typeof(text) == 'string' ? range.createContextualFragment(text) : text;
                 range.insertNode(node);
+                range = range.cloneRange();
+                range.collapse(false);
+                 
+                win.getSelection().removeAllRanges();
+                win.getSelection().addRange(range);
+                
+                
+                
             } else if (win.document.selection && win.document.selection.createRange) {
                 // no firefox support
                 var txt = typeof(text) == 'string' ? text : text.outerHTML;
                 win.document.selection.createRange().pasteHTML(txt);
+            
             } else {
                 // no firefox support
                 var txt = typeof(text) == 'string' ? text : text.outerHTML;
                 this.execCmd('InsertHTML', txt);
             } 
-            
             this.syncValue();
             
             this.deferFocus();
@@ -45095,15 +50364,17 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                         cmd = 'underline';
                         break;
                     
-                    case 'v':
-                        this.cleanUpPaste.defer(100, this);
-                        return;
+                    //case 'v':
+                      //  this.cleanUpPaste.defer(100, this);
+                      //  return;
                         
                 }
                 if(cmd){
-                    this.win.focus();
-                    this.execCmd(cmd);
-                    this.deferFocus();
+                    
+                    this.relayCmd(cmd);
+                    //this.win.focus();
+                    //this.execCmd(cmd);
+                    //this.deferFocus();
                     e.preventDefault();
                 }
                 
@@ -45113,6 +50384,8 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
 
     // private
     fixKeys : function(){ // load time branching for fastest keydown performance
+        
+        
         if(Roo.isIE){
             return function(e){
                 var k = e.getKey(), r;
@@ -45126,23 +50399,25 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                     }
                     return;
                 }
-                
+                /// this is handled by Roo.htmleditor.KeyEnter
+                 /*
                 if(k == e.ENTER){
                     r = this.doc.selection.createRange();
                     if(r){
                         var target = r.parentElement();
                         if(!target || target.tagName.toLowerCase() != 'li'){
                             e.stopEvent();
-                            r.pasteHTML('<br />');
+                            r.pasteHTML('<br/>');
                             r.collapse(false);
                             r.select();
                         }
                     }
                 }
-                if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
-                    this.cleanUpPaste.defer(100, this);
-                    return;
-                }
+                */
+                //if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
+                //    this.cleanUpPaste.defer(100, this);
+                //    return;
+                //}
                 
                 
             };
@@ -45155,10 +50430,11 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                     this.execCmd('InsertHTML','&#160;&#160;&#160;&#160;');
                     this.deferFocus();
                 }
-                if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
-                    this.cleanUpPaste.defer(100, this);
-                    return;
-                }
+               
+                //if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
+                //    this.cleanUpPaste.defer(100, this);
+                 //   return;
+                //}
                 
             };
         }else if(Roo.isSafari){
@@ -45171,10 +50447,12 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                     this.deferFocus();
                     return;
                 }
-               if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
-                    this.cleanUpPaste.defer(100, this);
-                    return;
-                }
+                 this.mozKeyPress(e);
+                
+               //if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
+                 //   this.cleanUpPaste.defer(100, this);
+                 //   return;
+               // }
                 
              };
         }
@@ -45204,7 +50482,27 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
     getSelection : function() 
     {
         this.assignDocWin();
-        return Roo.isIE ? this.doc.selection : this.win.getSelection();
+        return Roo.lib.Selection.wrap(Roo.isIE ? this.doc.selection : this.win.getSelection(), this.doc);
+    },
+    /**
+     * Select a dom node
+     * @param {DomElement} node the node to select
+     */
+    selectNode : function(node, collapse)
+    {
+        var nodeRange = node.ownerDocument.createRange();
+        try {
+            nodeRange.selectNode(node);
+        } catch (e) {
+            nodeRange.selectNodeContents(node);
+        }
+        if (collapse === true) {
+            nodeRange.collapse(true);
+        }
+        //
+        var s = this.win.getSelection();
+        s.removeAllRanges();
+        s.addRange(nodeRange);
     },
     
     getSelectedNode: function() 
@@ -45213,8 +50511,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         
         // should we cache this!!!!
         
-        
-        
+         
          
         var range = this.createRange(this.getSelection()).cloneRange();
         
@@ -45278,6 +50575,8 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         
         return nodes[0];
     },
+    
+    
     createRange: function(sel)
     {
         // this has strange effects when using with 
@@ -45395,26 +50694,21 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         // fully contined.
         return 3;
     },
-
-    // private? - in a new class?
-    cleanUpPaste :  function()
-    {
-        // cleans up the whole document..
-        Roo.log('cleanuppaste');
-        
-        this.cleanUpChildren(this.doc.body);
-        var clean = this.cleanWordChars(this.doc.body.innerHTML);
-        if (clean != this.doc.body.innerHTML) {
-            this.doc.body.innerHTML = clean;
-        }
-        
-    },
-    
     cleanWordChars : function(input) {// change the chars to hex code
-        var he = Roo.HtmlEditorCore;
         
+       var swapCodes  = [ 
+            [    8211, "&#8211;" ], 
+            [    8212, "&#8212;" ], 
+            [    8216,  "'" ],  
+            [    8217, "'" ],  
+            [    8220, '"' ],  
+            [    8221, '"' ],  
+            [    8226, "*" ],  
+            [    8230, "..." ]
+        ]; 
         var output = input;
-        Roo.each(he.swapCodes, function(sw) { 
+        Roo.each(swapCodes, function(sw) { 
             var swapper = new RegExp("\\u" + sw[0].toString(16), "g"); // hex codes
             
             output = output.replace(swapper, sw[1]);
@@ -45423,487 +50717,60 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         return output;
     },
     
-    
-    cleanUpChildren : function (n)
-    {
-        if (!n.childNodes.length) {
-            return;
-        }
-        for (var i = n.childNodes.length-1; i > -1 ; i--) {
-           this.cleanUpChild(n.childNodes[i]);
-        }
-    },
-    
+     
     
         
     
     cleanUpChild : function (node)
     {
-        var ed = this;
-        //console.log(node);
-        if (node.nodeName == "#text") {
-            // clean up silly Windows -- stuff?
-            return; 
-        }
-        if (node.nodeName == "#comment") {
-            if (!this.allowComments) {
-                node.parentNode.removeChild(node);
-            }
-            // clean up silly Windows -- stuff?
-            return; 
-        }
-        var lcname = node.tagName.toLowerCase();
-        // we ignore whitelists... ?? = not really the way to go, but we probably have not got a full
-        // whitelist of tags..
-        
-        if (this.black.indexOf(lcname) > -1 && this.clearUp ) {
-            // remove node.
-            node.parentNode.removeChild(node);
-            return;
-            
-        }
-        
-        var remove_keep_children= Roo.HtmlEditorCore.remove.indexOf(node.tagName.toLowerCase()) > -1;
-        
-        // spans with no attributes - just remove them..
-        if ((!node.attributes || !node.attributes.length) && lcname == 'span') { 
-            remove_keep_children = true;
-        }
-        
-        // remove <a name=....> as rendering on yahoo mailer is borked with this.
-        // this will have to be flaged elsewhere - perhaps ablack=name... on the mailer..
-        
-        //if (node.tagName.toLowerCase() == 'a' && !node.hasAttribute('href')) {
-        //    remove_keep_children = true;
-        //}
-        
-        if (remove_keep_children) {
-            this.cleanUpChildren(node);
-            // inserts everything just before this node...
-            while (node.childNodes.length) {
-                var cn = node.childNodes[0];
-                node.removeChild(cn);
-                node.parentNode.insertBefore(cn, node);
-            }
-            node.parentNode.removeChild(node);
-            return;
-        }
-        
-        if (!node.attributes || !node.attributes.length) {
-            
-          
-            
-            
-            this.cleanUpChildren(node);
-            return;
-        }
-        
-        function cleanAttr(n,v)
-        {
-            
-            if (v.match(/^\./) || v.match(/^\//)) {
-                return;
-            }
-            if (v.match(/^(http|https):\/\//) || v.match(/^mailto:/) || v.match(/^ftp:/)) {
-                return;
-            }
-            if (v.match(/^#/)) {
-                return;
-            }
-            if (v.match(/^\{/)) { // allow template editing.
-                return;
-            }
-//            Roo.log("(REMOVE TAG)"+ node.tagName +'.' + n + '=' + v);
-            node.removeAttribute(n);
-            
-        }
-        
-        var cwhite = this.cwhite;
-        var cblack = this.cblack;
-            
-        function cleanStyle(n,v)
-        {
-            if (v.match(/expression/)) { //XSS?? should we even bother..
-                node.removeAttribute(n);
-                return;
-            }
-            
-            var parts = v.split(/;/);
-            var clean = [];
-            
-            Roo.each(parts, function(p) {
-                p = p.replace(/^\s+/g,'').replace(/\s+$/g,'');
-                if (!p.length) {
-                    return true;
-                }
-                var l = p.split(':').shift().replace(/\s+/g,'');
-                l = l.replace(/^\s+/g,'').replace(/\s+$/g,'');
-                
-                if ( cwhite.length && cblack.indexOf(l) > -1) {
-//                    Roo.log('(REMOVE CSS)' + node.tagName +'.' + n + ':'+l + '=' + v);
-                    //node.removeAttribute(n);
-                    return true;
-                }
-                //Roo.log()
-                // only allow 'c whitelisted system attributes'
-                if ( cwhite.length &&  cwhite.indexOf(l) < 0 && cwhite.indexOf(l.toLowerCase()) < 0 ) {
-//                    Roo.log('(REMOVE CSS)' + node.tagName +'.' + n + ':'+l + '=' + v);
-                    //node.removeAttribute(n);
-                    return true;
-                }
-                
-                
-                 
-                
-                clean.push(p);
-                return true;
-            });
-            if (clean.length) { 
-                node.setAttribute(n, clean.join(';'));
-            } else {
-                node.removeAttribute(n);
-            }
-            
-        }
-        
-        
-        for (var i = node.attributes.length-1; i > -1 ; i--) {
-            var a = node.attributes[i];
-            //console.log(a);
-            
-            if (a.name.toLowerCase().substr(0,2)=='on')  {
-                node.removeAttribute(a.name);
-                continue;
-            }
-            if (Roo.HtmlEditorCore.ablack.indexOf(a.name.toLowerCase()) > -1) {
-                node.removeAttribute(a.name);
-                continue;
-            }
-            if (Roo.HtmlEditorCore.aclean.indexOf(a.name.toLowerCase()) > -1) {
-                cleanAttr(a.name,a.value); // fixme..
-                continue;
-            }
-            if (a.name == 'style') {
-                cleanStyle(a.name,a.value);
-                continue;
-            }
-            /// clean up MS crap..
-            // tecnically this should be a list of valid class'es..
-            
-            
-            if (a.name == 'class') {
-                if (a.value.match(/^Mso/)) {
-                    node.removeAttribute('class');
-                }
-                
-                if (a.value.match(/^body$/)) {
-                    node.removeAttribute('class');
-                }
-                continue;
-            }
-            
-            // style cleanup!?
-            // class cleanup?
-            
-        }
-        
-        
-        this.cleanUpChildren(node);
         
+        new Roo.htmleditor.FilterComment({node : node});
+        new Roo.htmleditor.FilterAttributes({
+                node : node,
+                attrib_black : this.ablack,
+                attrib_clean : this.aclean,
+                style_white : this.cwhite,
+                style_black : this.cblack
+        });
+        new Roo.htmleditor.FilterBlack({ node : node, tag : this.black});
+        new Roo.htmleditor.FilterKeepChildren({node : node, tag : this.tag_remove} );
+         
         
     },
     
     /**
      * Clean up MS wordisms...
+     * @deprecated - use filter directly
      */
     cleanWord : function(node)
     {
-        if (!node) {
-            this.cleanWord(this.doc.body);
-            return;
-        }
-        
-        if(
-                node.nodeName == 'SPAN' &&
-                !node.hasAttributes() &&
-                node.childNodes.length == 1 &&
-                node.firstChild.nodeName == "#text"  
-        ) {
-            var textNode = node.firstChild;
-            node.removeChild(textNode);
-            if (node.getAttribute('lang') != 'zh-CN') {   // do not space pad on chinese characters..
-                node.parentNode.insertBefore(node.ownerDocument.createTextNode(" "), node);
-            }
-            node.parentNode.insertBefore(textNode, node);
-            if (node.getAttribute('lang') != 'zh-CN') {   // do not space pad on chinese characters..
-                node.parentNode.insertBefore(node.ownerDocument.createTextNode(" ") , node);
-            }
-            node.parentNode.removeChild(node);
-        }
-        
-        if (node.nodeName == "#text") {
-            // clean up silly Windows -- stuff?
-            return; 
-        }
-        if (node.nodeName == "#comment") {
-            node.parentNode.removeChild(node);
-            // clean up silly Windows -- stuff?
-            return; 
-        }
-        
-        if (node.tagName.toLowerCase().match(/^(style|script|applet|embed|noframes|noscript)$/)) {
-            node.parentNode.removeChild(node);
-            return;
-        }
-        //Roo.log(node.tagName);
-        // remove - but keep children..
-        if (node.tagName.toLowerCase().match(/^(meta|link|\\?xml:|st1:|o:|v:|font)/)) {
-            //Roo.log('-- removed');
-            while (node.childNodes.length) {
-                var cn = node.childNodes[0];
-                node.removeChild(cn);
-                node.parentNode.insertBefore(cn, node);
-                // move node to parent - and clean it..
-                this.cleanWord(cn);
-            }
-            node.parentNode.removeChild(node);
-            /// no need to iterate chidlren = it's got none..
-            //this.iterateChildren(node, this.cleanWord);
-            return;
-        }
-        // clean styles
-        if (node.className.length) {
-            
-            var cn = node.className.split(/\W+/);
-            var cna = [];
-            Roo.each(cn, function(cls) {
-                if (cls.match(/Mso[a-zA-Z]+/)) {
-                    return;
-                }
-                cna.push(cls);
-            });
-            node.className = cna.length ? cna.join(' ') : '';
-            if (!cna.length) {
-                node.removeAttribute("class");
-            }
-        }
-        
-        if (node.hasAttribute("lang")) {
-            node.removeAttribute("lang");
-        }
-        
-        if (node.hasAttribute("style")) {
-            
-            var styles = node.getAttribute("style").split(";");
-            var nstyle = [];
-            Roo.each(styles, function(s) {
-                if (!s.match(/:/)) {
-                    return;
-                }
-                var kv = s.split(":");
-                if (kv[0].match(/^(mso-|line|font|background|margin|padding|color)/)) {
-                    return;
-                }
-                // what ever is left... we allow.
-                nstyle.push(s);
-            });
-            node.setAttribute("style", nstyle.length ? nstyle.join(';') : '');
-            if (!nstyle.length) {
-                node.removeAttribute('style');
-            }
-        }
-        this.iterateChildren(node, this.cleanWord);
-        
+        new Roo.htmleditor.FilterWord({ node : node ? node : this.doc.body });
         
-        
-    },
-    /**
-     * iterateChildren of a Node, calling fn each time, using this as the scole..
-     * @param {DomNode} node node to iterate children of.
-     * @param {Function} fn method of this class to call on each item.
-     */
-    iterateChildren : function(node, fn)
-    {
-        if (!node.childNodes.length) {
-                return;
-        }
-        for (var i = node.childNodes.length-1; i > -1 ; i--) {
-           fn.call(this, node.childNodes[i])
-        }
     },
-    
+   
     
     /**
-     * cleanTableWidths.
-     *
-     * Quite often pasting from word etc.. results in tables with column and widths.
-     * This does not work well on fluid HTML layouts - like emails. - so this code should hunt an destroy them..
-     *
+
+     * @deprecated - use filters
      */
     cleanTableWidths : function(node)
     {
-         
-         
-        if (!node) {
-            this.cleanTableWidths(this.doc.body);
-            return;
-        }
-        
-        // ignore list...
-        if (node.nodeName == "#text" || node.nodeName == "#comment") {
-            return; 
-        }
-        Roo.log(node.tagName);
-        if (!node.tagName.toLowerCase().match(/^(table|td|tr)$/)) {
-            this.iterateChildren(node, this.cleanTableWidths);
-            return;
-        }
-        if (node.hasAttribute('width')) {
-            node.removeAttribute('width');
-        }
-        
-         
-        if (node.hasAttribute("style")) {
-            // pretty basic...
-            
-            var styles = node.getAttribute("style").split(";");
-            var nstyle = [];
-            Roo.each(styles, function(s) {
-                if (!s.match(/:/)) {
-                    return;
-                }
-                var kv = s.split(":");
-                if (kv[0].match(/^\s*(width|min-width)\s*$/)) {
-                    return;
-                }
-                // what ever is left... we allow.
-                nstyle.push(s);
-            });
-            node.setAttribute("style", nstyle.length ? nstyle.join(';') : '');
-            if (!nstyle.length) {
-                node.removeAttribute('style');
-            }
-        }
-        
-        this.iterateChildren(node, this.cleanTableWidths);
-        
+        new Roo.htmleditor.FilterTableWidth({ node : node ? node : this.doc.body});
         
     },
     
-    
-    
-    
-    domToHTML : function(currentElement, depth, nopadtext) {
-        
-        depth = depth || 0;
-        nopadtext = nopadtext || false;
-    
-        if (!currentElement) {
-            return this.domToHTML(this.doc.body);
-        }
-        
-        //Roo.log(currentElement);
-        var j;
-        var allText = false;
-        var nodeName = currentElement.nodeName;
-        var tagName = Roo.util.Format.htmlEncode(currentElement.tagName);
-        
-        if  (nodeName == '#text') {
-            
-            return nopadtext ? currentElement.nodeValue : currentElement.nodeValue.trim();
-        }
-        
-        
-        var ret = '';
-        if (nodeName != 'BODY') {
-             
-            var i = 0;
-            // Prints the node tagName, such as <A>, <IMG>, etc
-            if (tagName) {
-                var attr = [];
-                for(i = 0; i < currentElement.attributes.length;i++) {
-                    // quoting?
-                    var aname = currentElement.attributes.item(i).name;
-                    if (!currentElement.attributes.item(i).value.length) {
-                        continue;
-                    }
-                    attr.push(aname + '="' + Roo.util.Format.htmlEncode(currentElement.attributes.item(i).value) + '"' );
-                }
-                
-                ret = "<"+currentElement.tagName+ ( attr.length ? (' ' + attr.join(' ') ) : '') + ">";
-            } 
-            else {
-                
-                // eack
-            }
-        } else {
-            tagName = false;
-        }
-        if (['IMG', 'BR', 'HR', 'INPUT'].indexOf(tagName) > -1) {
-            return ret;
-        }
-        if (['PRE', 'TEXTAREA', 'TD', 'A', 'SPAN'].indexOf(tagName) > -1) { // or code?
-            nopadtext = true;
-        }
-        
-        
-        // Traverse the tree
-        i = 0;
-        var currentElementChild = currentElement.childNodes.item(i);
-        var allText = true;
-        var innerHTML  = '';
-        lastnode = '';
-        while (currentElementChild) {
-            // Formatting code (indent the tree so it looks nice on the screen)
-            var nopad = nopadtext;
-            if (lastnode == 'SPAN') {
-                nopad  = true;
-            }
-            // text
-            if  (currentElementChild.nodeName == '#text') {
-                var toadd = Roo.util.Format.htmlEncode(currentElementChild.nodeValue);
-                toadd = nopadtext ? toadd : toadd.trim();
-                if (!nopad && toadd.length > 80) {
-                    innerHTML  += "\n" + (new Array( depth + 1 )).join( "  "  );
-                }
-                innerHTML  += toadd;
-                
-                i++;
-                currentElementChild = currentElement.childNodes.item(i);
-                lastNode = '';
-                continue;
-            }
-            allText = false;
-            
-            innerHTML  += nopad ? '' : "\n" + (new Array( depth + 1 )).join( "  "  );
-                
-            // Recursively traverse the tree structure of the child node
-            innerHTML   += this.domToHTML(currentElementChild, depth+1, nopadtext);
-            lastnode = currentElementChild.nodeName;
-            i++;
-            currentElementChild=currentElement.childNodes.item(i);
-        }
-        
-        ret += innerHTML;
-        
-        if (!allText) {
-                // The remaining code is mostly for formatting the tree
-            ret+= nopadtext ? '' : "\n" + (new Array( depth  )).join( "  "  );
-        }
-        
-        
-        if (tagName) {
-            ret+= "</"+tagName+">";
-        }
-        return ret;
-        
-    },
+     
         
     applyBlacklists : function()
     {
         var w = typeof(this.owner.white) != 'undefined' && this.owner.white ? this.owner.white  : [];
         var b = typeof(this.owner.black) != 'undefined' && this.owner.black ? this.owner.black :  [];
         
+        this.aclean = typeof(this.owner.aclean) != 'undefined' && this.owner.aclean ? this.owner.aclean :  Roo.HtmlEditorCore.aclean;
+        this.ablack = typeof(this.owner.ablack) != 'undefined' && this.owner.ablack ? this.owner.ablack :  Roo.HtmlEditorCore.ablack;
+        this.tag_remove = typeof(this.owner.tag_remove) != 'undefined' && this.owner.tag_remove ? this.owner.tag_remove :  Roo.HtmlEditorCore.tag_remove;
+        
         this.white = [];
         this.black = [];
         Roo.each(Roo.HtmlEditorCore.white, function(tag) {
@@ -46021,6 +50888,16 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         
     },
     
+    
+    updateLanguage : function()
+    {
+        if (!this.iframe || !this.iframe.contentDocument) {
+            return;
+        }
+        Roo.get(this.iframe.contentDocument.body).attr("lang", this.language);
+    },
+    
+    
     removeStylesheets : function()
     {
         var _this = this;
@@ -46085,36 +50962,40 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
 });
 
 Roo.HtmlEditorCore.white = [
-        'area', 'br', 'img', 'input', 'hr', 'wbr',
+        'AREA', 'BR', 'IMG', 'INPUT', 'HR', 'WBR',
         
-       'address', 'blockquote', 'center', 'dd',      'dir',       'div', 
-       'dl',      'dt',         'h1',     'h2',      'h3',        'h4', 
-       'h5',      'h6',         'hr',     'isindex', 'listing',   'marquee', 
-       'menu',    'multicol',   'ol',     'p',       'plaintext', 'pre', 
-       'table',   'ul',         'xmp', 
+       'ADDRESS', 'BLOCKQUOTE', 'CENTER', 'DD',      'DIR',       'DIV', 
+       'DL',      'DT',         'H1',     'H2',      'H3',        'H4', 
+       'H5',      'H6',         'HR',     'ISINDEX', 'LISTING',   'MARQUEE', 
+       'MENU',    'MULTICOL',   'OL',     'P',       'PLAINTEXT', 'PRE', 
+       'TABLE',   'UL',         'XMP', 
        
-       'caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', 
-      'thead',   'tr', 
+       'CAPTION', 'COL', 'COLGROUP', 'TBODY', 'TD', 'TFOOT', 'TH', 
+      'THEAD',   'TR', 
      
-      'dir', 'menu', 'ol', 'ul', 'dl',
+      'DIR', 'MENU', 'OL', 'UL', 'DL',
        
-      'embed',  'object'
+      'EMBED',  'OBJECT'
 ];
 
 
 Roo.HtmlEditorCore.black = [
     //    'embed',  'object', // enable - backend responsiblity to clean thiese
-        'applet', // 
-        'base',   'basefont', 'bgsound', 'blink',  'body', 
-        'frame',  'frameset', 'head',    'html',   'ilayer', 
-        'iframe', 'layer',  'link',     'meta',    'object',   
-        'script', 'style' ,'title',  'xml' // clean later..
+        'APPLET', // 
+        'BASE',   'BASEFONT', 'BGSOUND', 'BLINK',  'BODY', 
+        'FRAME',  'FRAMESET', 'HEAD',    'HTML',   'ILAYER', 
+        'IFRAME', 'LAYER',  'LINK',     'META',    'OBJECT',   
+        'SCRIPT', 'STYLE' ,'TITLE',  'XML',
+        //'FONT' // CLEAN LATER..
+        'COLGROUP', 'COL'   // messy tables.
+        
+        
 ];
-Roo.HtmlEditorCore.clean = [
-    'script', 'style', 'title', 'xml'
+Roo.HtmlEditorCore.clean = [ // ?? needed???
+     'SCRIPT', 'STYLE', 'TITLE', 'XML'
 ];
-Roo.HtmlEditorCore.remove = [
-    'font'
+Roo.HtmlEditorCore.tag_remove = [
+    'FONT', 'TBODY'  
 ];
 // attributes..
 
@@ -46145,16 +51026,7 @@ Roo.HtmlEditorCore.cblack= [
 ];
 
 
-Roo.HtmlEditorCore.swapCodes   =[ 
-    [    8211, "&#8211;" ], 
-    [    8212, "&#8212;" ], 
-    [    8216,  "'" ],  
-    [    8217, "'" ],  
-    [    8220, '"' ],  
-    [    8221, '"' ],  
-    [    8226, "*" ],  
-    [    8230, "..." ]
-]; 
+
 
     //<script type="text/javascript">
 
@@ -46217,7 +51089,7 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
     width: 500,
     
     /**
-     * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets.
+     * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets - this is usally a good idea  rootURL + '/roojs1/css/undoreset.css',   .
      * 
      */
     stylesheets: false,
@@ -46248,7 +51120,27 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
      * @cfg {boolean} allowComments - default false - allow comments in HTML source - by default they are stripped - if you are editing email you may need this.
      */
     allowComments: false,
+    /**
+     * @cfg {boolean} enableBlocks - default true - if the block editor (table and figure should be enabled)
+     */
+    enableBlocks : true,
     
+    /**
+     * @cfg {boolean} autoClean - default true - loading and saving will remove quite a bit of formating,
+     *         if you are doing an email editor, this probably needs disabling, it's designed
+     */
+    autoClean: true,
+    /**
+     * @cfg {string} bodyCls default '' default classes to add to body of editable area - usually undoreset is a good start..
+     */
+    bodyCls : '',
+    /**
+     * @cfg {String} language default en - language of text (usefull for rtl languages)
+     * 
+     */
+    language: 'en',
+    
+     
     // id of frame..
     frameId: false,
     
@@ -46353,7 +51245,13 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
             * Fires when press the Sytlesheets button
             * @param {Roo.HtmlEditorCore} this
             */
-            stylesheetsclick: true
+            stylesheetsclick: true,
+            /**
+            * @event paste
+            * Fires when press user pastes into the editor
+            * @param {Roo.HtmlEditorCore} this
+            */
+            paste: true 
         });
         this.defaultAutoCreate =  {
             tag: "textarea",
@@ -46384,8 +51282,19 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
          
         
     },
-
-     
+    /**
+     * get the Context selected node
+     * @returns {DomElement|boolean} selected node if active or false if none
+     * 
+     */
+    getSelectedNode : function()
+    {
+        if (this.toolbars.length < 2 || !this.toolbars[1].tb) {
+            return false;
+        }
+        return this.toolbars[1].tb.selectedNode;
+    
+    },
     // private
     onRender : function(ct, position)
     {
@@ -46606,6 +51515,8 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
             this.el.removeClass('x-hidden');
             this.el.dom.removeAttribute('tabIndex');
             this.el.focus();
+            this.el.dom.scrollTop = 0;
+            
             
             for (var i = 0; i < this.toolbars.length; i++) {
                 if(this.toolbars[i] instanceof Roo.form.HtmlEditor.ToolbarContext){
@@ -46673,7 +51584,17 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
         this.editorcore.pushValue();
     },
 
+    /**
+     * update the language in the body - really done by core
+     * @param {String} language - eg. en / ar / zh-CN etc..
+     */
+    updateLanguage : function(lang)
+    {
+        this.language = lang;
+        this.editorcore.language = lang;
+        this.editorcore.updateLanguage();
      
+    },
     // private
     deferFocus : function(){
         this.focus.defer(10, this);
@@ -46778,8 +51699,7 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
      */
 });
  
-    // <script type="text/javascript">
-/*
+    /*
  * Based on
  * Ext JS Library 1.1.1
  * Copyright(c) 2006-2007, Ext JS, LLC.
@@ -46788,9 +51708,9 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
  */
 
 /**
- * @class Roo.form.HtmlEditorToolbar1
+ * @class Roo.form.HtmlEditor.ToolbarStandard
  * Basic Toolbar
- * 
+
  * Usage:
  *
  new Roo.form.HtmlEditor({
@@ -46804,7 +51724,7 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
      
  * 
  * @cfg {Object} disable List of elements to disable..
- * @cfg {Array} btns List of additional buttons.
+ * @cfg {Roo.Toolbar.Item|Roo.Toolbar.Button|Roo.Toolbar.SplitButton|Roo.form.Field} btns[] List of additional buttons.
  * 
  * 
  * NEEDS Extra CSS? 
@@ -46829,7 +51749,7 @@ Roo.form.HtmlEditor.ToolbarStandard = function(config)
     // dont call parent... till later.
 }
 
-Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
+Roo.form.HtmlEditor.ToolbarStandard.prototype = {
     
     tb: false,
     
@@ -47175,7 +52095,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
                     tabIndex:-1
                 });
             }
-             cmenu.menu.items.push({
+            cmenu.menu.items.push({
                 actiontype : 'tablewidths',
                 html: 'Remove Table Widths',
                 handler: function(a,b) {
@@ -47227,7 +52147,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
                 actiontype : 'tidy',
                 html: 'Tidy HTML Source',
                 handler: function(a,b) {
-                    editorcore.doc.body.innerHTML = editorcore.domToHTML();
+                    new Roo.htmleditor.Tidy(editorcore.doc.body);
                     editorcore.syncValue();
                 },
                 tabIndex:-1
@@ -47264,7 +52184,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
         
         if (this.btns) {
             for(var i =0; i< this.btns.length;i++) {
-                var b = Roo.factory(this.btns[i],Roo.form);
+                var b = Roo.factory(this.btns[i],this.btns[i].xns || Roo.form);
                 b.cls =  'x-edit-none';
                 
                 if(typeof(this.btns[i].cls) != 'undefined' && this.btns[i].cls.indexOf('x-init-enable') !== -1){
@@ -47305,11 +52225,45 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
     },
     // private used internally
     createLink : function(){
-        Roo.log("create link?");
-        var url = prompt(this.createLinkText, this.defaultLinkValue);
-        if(url && url != 'http:/'+'/'){
-            this.editorcore.relayCmd('createlink', url);
+        //Roo.log("create link?");
+        var ec = this.editorcore;
+        var ar = ec.getAllAncestors();
+        var n = false;
+        for(var i = 0;i< ar.length;i++) {
+            if (ar[i] && ar[i].nodeName == 'A') {
+                n = ar[i];
+                break;
+            }
         }
+        
+        (function() {
+            
+            Roo.MessageBox.show({
+                title : "Add / Edit Link URL",
+                msg : "Enter the url for the link",
+                buttons: Roo.MessageBox.OKCANCEL,
+                fn: function(btn, url){
+                    if (btn != 'ok') {
+                        return;
+                    }
+                    if(url && url != 'http:/'+'/'){
+                        if (n) {
+                            n.setAttribute('href', url);
+                        } else {
+                            ec.relayCmd('createlink', url);
+                        }
+                    }
+                },
+                minWidth:250,
+                prompt:true,
+                //multiline: multiline,
+                modal : true,
+                value :  n  ? n.getAttribute('href') : '' 
+            });
+            
+             
+        }).defer(100, this); // we have to defer this , otherwise the mouse click gives focus to the main window.
+        
     },
 
     
@@ -47422,6 +52376,11 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
                 this.tb.items.each(function(item){
                     item.enable();
                 });
+                // initialize 'blocks'
+                Roo.each(Roo.get(this.editorcore.doc.body).query('*[data-block]'), function(e) {
+                    Roo.htmleditor.Block.factory(e).updateElement(e);
+                },this);
+            
             }
             
         }
@@ -47548,7 +52507,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
            item.enable();
         });
     }
-});
+};
 
 
 
@@ -47596,189 +52555,138 @@ Roo.form.HtmlEditor.ToolbarContext = function(config)
  
 
 Roo.form.HtmlEditor.ToolbarContext.types = {
-    'IMG' : {
-        width : {
+    'IMG' : [
+        {
+            name : 'width',
             title: "Width",
             width: 40
         },
-        height:  {
+        {
+            name : 'height',
             title: "Height",
             width: 40
         },
-        align: {
+        {
+            name : 'align',
             title: "Align",
             opts : [ [""],[ "left"],[ "right"],[ "center"],[ "top"]],
             width : 80
             
         },
-        border: {
+        {
+            name : 'border',
             title: "Border",
             width: 40
         },
-        alt: {
+        {
+            name : 'alt',
             title: "Alt",
             width: 120
         },
-        src : {
+        {
+            name : 'src',
             title: "Src",
             width: 220
         }
         
-    },
-    'A' : {
-        name : {
+    ],
+    
+    'FIGURE' : [
+        {
+            name : 'align',
+            title: "Align",
+            opts : [ [""],[ "left"],[ "right"],[ "center"],[ "top"]],
+            width : 80  
+        }
+    ],
+    'A' : [
+        {
+            name : 'name',
             title: "Name",
             width: 50
         },
-        target:  {
+        {
+            name : 'target',
             title: "Target",
             width: 120
         },
-        href:  {
+        {
+            name : 'href',
             title: "Href",
             width: 220
         } // border?
         
-    },
-    'TABLE' : {
-        rows : {
-            title: "Rows",
-            width: 20
-        },
-        cols : {
-            title: "Cols",
-            width: 20
-        },
-        width : {
-            title: "Width",
-            width: 40
-        },
-        height : {
-            title: "Height",
-            width: 40
-        },
-        border : {
-            title: "Border",
-            width: 20
-        }
-    },
-    'TD' : {
-        width : {
-            title: "Width",
-            width: 40
-        },
-        height : {
-            title: "Height",
-            width: 40
-        },   
-        align: {
-            title: "Align",
-            opts : [[""],[ "left"],[ "center"],[ "right"],[ "justify"],[ "char"]],
-            width: 80
-        },
-        valign: {
-            title: "Valign",
-            opts : [[""],[ "top"],[ "middle"],[ "bottom"],[ "baseline"]],
-            width: 80
-        },
-        colspan: {
-            title: "Colspan",
-            width: 20
-            
-        },
-         'font-family'  : {
-            title : "Font",
-            style : 'fontFamily',
-            displayField: 'display',
-            optname : 'font-family',
-            width: 140
-        }
-    },
-    'INPUT' : {
-        name : {
+    ],
+    
+    'INPUT' : [
+        {
+            name : 'name',
             title: "name",
             width: 120
         },
-        value : {
+        {
+            name : 'value',
             title: "Value",
             width: 120
         },
-        width : {
+        {
+            name : 'width',
             title: "Width",
             width: 40
         }
-    },
-    'LABEL' : {
-        'for' : {
+    ],
+    'LABEL' : [
+         {
+            name : 'for',
             title: "For",
             width: 120
         }
-    },
-    'TEXTAREA' : {
-          name : {
+    ],
+    'TEXTAREA' : [
+        {
+            name : 'name',
             title: "name",
             width: 120
         },
-        rows : {
+        {
+            name : 'rows',
             title: "Rows",
             width: 20
         },
-        cols : {
+        {
+            name : 'cols',
             title: "Cols",
             width: 20
         }
-    },
-    'SELECT' : {
-        name : {
+    ],
+    'SELECT' : [
+        {
+            name : 'name',
             title: "name",
             width: 120
         },
-        selectoptions : {
+        {
+            name : 'selectoptions',
             title: "Options",
             width: 200
         }
-    },
+    ],
     
     // should we really allow this??
     // should this just be 
-    'BODY' : {
-        title : {
+    'BODY' : [
+        
+        {
+            name : 'title',
             title: "Title",
             width: 200,
             disabled : true
         }
-    },
-    'SPAN' : {
-        'font-family'  : {
-            title : "Font",
-            style : 'fontFamily',
-            displayField: 'display',
-            optname : 'font-family',
-            width: 140
-        }
-    },
-    'DIV' : {
-        'font-family'  : {
-            title : "Font",
-            style : 'fontFamily',
-            displayField: 'display',
-            optname : 'font-family',
-            width: 140
-        }
-    },
-     'P' : {
-        'font-family'  : {
-            title : "Font",
-            style : 'fontFamily',
-            displayField: 'display',
-            optname : 'font-family',
-            width: 140
-        }
-    },
-    
-    '*' : {
-        // empty..
-    }
+    ],
+    '*' : [
+        // empty.
+    ]
 
 };
 
@@ -47864,9 +52772,9 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         // disable everything...
         var ty= Roo.form.HtmlEditor.ToolbarContext.types;
         this.toolbars = {};
-           
+        // block toolbars are built in updateToolbar when needed.
         for (var i in  ty) {
-          
+            
             this.toolbars[i] = this.buildToolbar(ty[i],i);
         }
         this.tb = this.toolbars.BODY;
@@ -47893,8 +52801,13 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
      *
      * Note you can force an update by calling on('editorevent', scope, false)
      */
-    updateToolbar: function(editor,ev,sel){
-
+    updateToolbar: function(editor ,ev, sel)
+    {
+        
+        if (ev) {
+            ev.stopEvent(); // se if we can stop this looping with mutiple events.
+        }
+        
         //Roo.log(ev);
         // capture mouse up - this is handy for selecting images..
         // perhaps should go somewhere else...
@@ -47902,38 +52815,40 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
              this.editor.onFirstFocus();
             return;
         }
-        
+        //Roo.log(ev ? ev.target : 'NOTARGET');
         
         
         // http://developer.yahoo.com/yui/docs/simple-editor.js.html
         // selectNode - might want to handle IE?
+        
+        
+        
         if (ev &&
             (ev.type == 'mouseup' || ev.type == 'click' ) &&
-            ev.target && ev.target.tagName == 'IMG') {
+            ev.target && ev.target.tagName != 'BODY' ) { // && ev.target.tagName == 'IMG') {
             // they have click on an image...
             // let's see if we can change the selection...
             sel = ev.target;
-         
-              var nodeRange = sel.ownerDocument.createRange();
-            try {
-                nodeRange.selectNode(sel);
-            } catch (e) {
-                nodeRange.selectNodeContents(sel);
-            }
-            //nodeRange.collapse(true);
-            var s = this.editorcore.win.getSelection();
-            s.removeAllRanges();
-            s.addRange(nodeRange);
-        }  
+            
+            // this triggers looping?
+            //this.editorcore.selectNode(sel);
+             
+        }
         
+        // this forces an id..
+        Array.from(this.editorcore.doc.body.querySelectorAll('.roo-ed-selection')).forEach(function(e) {
+             e.classList.remove('roo-ed-selection');
+        });
+        //Roo.select('.roo-ed-selection', false, this.editorcore.doc).removeClass('roo-ed-selection');
+        //Roo.get(node).addClass('roo-ed-selection');
       
-        var updateFooter = sel ? false : true;
+        //var updateFooter = sel ? false : true; 
         
         
         var ans = this.editorcore.getAllAncestors();
         
         // pick
-        var ty= Roo.form.HtmlEditor.ToolbarContext.types;
+        var ty = Roo.form.HtmlEditor.ToolbarContext.types;
         
         if (!sel) { 
             sel = ans.length ? (ans[0] ?  ans[0]  : ans[1]) : this.editorcore.doc.body;
@@ -47941,86 +52856,145 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
             sel = sel.tagName.length ? sel : this.editorcore.doc.body;
             
         }
-        // pick a menu that exists..
-        var tn = sel.tagName.toUpperCase();
-        //sel = typeof(ty[tn]) != 'undefined' ? sel : this.editor.doc.body;
-        
-        tn = sel.tagName.toUpperCase();
         
+        var tn = sel.tagName.toUpperCase();
         var lastSel = this.tb.selectedNode;
-        
         this.tb.selectedNode = sel;
+        var left_label = tn;
         
-        // if current menu does not match..
+        // ok see if we are editing a block?
         
-        if ((this.tb.name != tn) || (lastSel != this.tb.selectedNode) || ev === false) {
-                
-            this.tb.el.hide();
-            ///console.log("show: " + tn);
-            this.tb =  typeof(ty[tn]) != 'undefined' ? this.toolbars[tn] : this.toolbars['*'];
-            this.tb.el.show();
-            // update name
-            this.tb.items.first().el.innerHTML = tn + ':&nbsp;';
-            
-            
-            // update attributes
-            if (this.tb.fields) {
-                this.tb.fields.each(function(e) {
-                    if (e.stylename) {
-                        e.setValue(sel.style[e.stylename]);
-                        return;
-                    } 
-                   e.setValue(sel.getAttribute(e.attrname));
-                });
-            }
+        var db = false;
+        // you are not actually selecting the block.
+        if (sel && sel.hasAttribute('data-block')) {
+            db = sel;
+        } else if (sel && sel.closest('[data-block]')) {
             
-            var hasStyles = false;
-            for(var i in this.styles) {
-                hasStyles = true;
-                break;
-            }
+            db = sel.closest('[data-block]');
+            //var cepar = sel.closest('[contenteditable=true]');
+            //if (db && cepar && cepar.tagName != 'BODY') {
+            //   db = false; // we are inside an editable block.. = not sure how we are going to handle nested blocks!?
+            //}   
+        }
+        
+        
+        var block = false;
+        //if (db && !sel.hasAttribute('contenteditable') && sel.getAttribute('contenteditable') != 'true' ) {
+        if (db && this.editorcore.enableBlocks) {
+            block = Roo.htmleditor.Block.factory(db);
             
-            // update styles
-            if (hasStyles) { 
-                var st = this.tb.fields.item(0);
-                
-                st.store.removeAll();
-               
-                
-                var cn = sel.className.split(/\s+/);
+            
+            if (block) {
+                 db.className = (
+                        db.classList.length > 0  ? db.className + ' ' : ''
+                    )  + 'roo-ed-selection';
+                 
+                 // since we removed it earlier... its not there..
+                tn = 'BLOCK.' + db.getAttribute('data-block');
                 
-                var avs = [];
-                if (this.styles['*']) {
-                    
-                    Roo.each(this.styles['*'], function(v) {
-                        avs.push( [ v , cn.indexOf(v) > -1 ? 1 : 0 ] );         
-                    });
-                }
-                if (this.styles[tn]) { 
-                    Roo.each(this.styles[tn], function(v) {
-                        avs.push( [ v , cn.indexOf(v) > -1 ? 1 : 0 ] );         
-                    });
+                //this.editorcore.selectNode(db);
+                if (typeof(this.toolbars[tn]) == 'undefined') {
+                   this.toolbars[tn] = this.buildToolbar( false  ,tn ,block.friendly_name, block);
                 }
-                
-                st.store.loadData(avs);
-                st.collapse();
-                st.setValue(cn);
+                this.toolbars[tn].selectedNode = db;
+                left_label = block.friendly_name;
+                ans = this.editorcore.getAllAncestors();
             }
-            // flag our selected Node.
-            this.tb.selectedNode = sel;
-           
-           
-            Roo.menu.MenuMgr.hideAll();
-
+            
+                
+            
         }
         
-        if (!updateFooter) {
-            //this.footDisp.dom.innerHTML = ''; 
-            return;
+        
+        if (this.tb.name == tn && lastSel == this.tb.selectedNode && ev !== false) {
+            return; // no change?
+        }
+        
+        
+          
+        this.tb.el.hide();
+        ///console.log("show: " + tn);
+        this.tb =  typeof(this.toolbars[tn]) != 'undefined' ? this.toolbars[tn] : this.toolbars['*'];
+        
+        this.tb.el.show();
+        // update name
+        this.tb.items.first().el.innerHTML = left_label + ':&nbsp;';
+        
+        
+        // update attributes
+        if (block && this.tb.fields) {
+             
+            this.tb.fields.each(function(e) {
+                e.setValue(block[e.name]);
+            });
+            
+            
+        } else  if (this.tb.fields && this.tb.selectedNode) {
+            this.tb.fields.each( function(e) {
+                if (e.stylename) {
+                    e.setValue(this.tb.selectedNode.style[e.stylename]);
+                    return;
+                } 
+                e.setValue(this.tb.selectedNode.getAttribute(e.attrname));
+            }, this);
+            this.updateToolbarStyles(this.tb.selectedNode);  
         }
+        
+        
+       
+        Roo.menu.MenuMgr.hideAll();
+
+        
+        
+    
         // update the footer
         //
+        this.updateFooter(ans);
+             
+    },
+    
+    updateToolbarStyles : function(sel)
+    {
+        var hasStyles = false;
+        for(var i in this.styles) {
+            hasStyles = true;
+            break;
+        }
+        
+        // update styles
+        if (hasStyles && this.tb.hasStyles) { 
+            var st = this.tb.fields.item(0);
+            
+            st.store.removeAll();
+            var cn = sel.className.split(/\s+/);
+            
+            var avs = [];
+            if (this.styles['*']) {
+                
+                Roo.each(this.styles['*'], function(v) {
+                    avs.push( [ v , cn.indexOf(v) > -1 ? 1 : 0 ] );         
+                });
+            }
+            if (this.styles[tn]) { 
+                Roo.each(this.styles[tn], function(v) {
+                    avs.push( [ v , cn.indexOf(v) > -1 ? 1 : 0 ] );         
+                });
+            }
+            
+            st.store.loadData(avs);
+            st.collapse();
+            st.setValue(cn);
+        }
+    },
+    
+     
+    updateFooter : function(ans)
+    {
         var html = '';
+        if (ans === false) {
+            this.footDisp.dom.innerHTML = '';
+            return;
+        }
         
         this.footerEls = ans.reverse();
         Roo.each(this.footerEls, function(a,i) {
@@ -48040,10 +53014,8 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         
         this.footDisp.dom.innerHTML = html;
             
-        //this.editorsyncValue();
+        
     },
-     
-    
    
        
     // private
@@ -48068,7 +53040,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
            item.enable();
         });
     },
-    buildToolbar: function(tlist, nm)
+    buildToolbar: function(tlist, nm, friendly_name, block)
     {
         var editor = this.editor;
         var editorcore = this.editorcore;
@@ -48079,18 +53051,22 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         
        
         var tb = new Roo.Toolbar(wdiv);
-        // add the name..
+        ///this.tb = tb; // << this sets the active toolbar..
+        if (tlist === false && block) {
+            tlist = block.contextMenu(this);
+        }
         
-        tb.add(nm+ ":&nbsp;");
+        tb.hasStyles = false;
+        tb.name = nm;
+        
+        tb.add((typeof(friendly_name) == 'undefined' ? nm : friendly_name) + ":&nbsp;");
+        
+        var styles = Array.from(this.styles);
         
-        var styles = [];
-        for(var i in this.styles) {
-            styles.push(i);
-        }
         
         // styles...
         if (styles && styles.length) {
-            
+            tb.hasStyles = true;
             // this needs a multi-select checkbox...
             tb.addField( new Roo.form.ComboBox({
                 store: new Roo.data.SimpleStore({
@@ -48120,9 +53096,18 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         }
         
         var tbc = Roo.form.HtmlEditor.ToolbarContext;
-        var tbops = tbc.options;
         
-        for (var i in tlist) {
+        
+        for (var i = 0; i < tlist.length; i++) {
+            
+            // newer versions will use xtype cfg to create menus.
+            if (typeof(tlist[i].xtype) != 'undefined') {
+                
+                tb[typeof(tlist[i].name)== 'undefined' ? 'add' : 'addField'](Roo.factory(tlist[i]));
+                
+                
+                continue;
+            }
             
             var item = tlist[i];
             tb.add(item.title + ":&nbsp;");
@@ -48130,8 +53115,8 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
             
             //optname == used so you can configure the options available..
             var opts = item.opts ? item.opts : false;
-            if (item.optname) {
-                opts = tbops[item.optname];
+            if (item.optname) { // use the b
+                opts = Roo.form.HtmlEditor.ToolbarContext.options[item.optname];
            
             }
             
@@ -48143,13 +53128,15 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
                         fields: ['val', 'display'],
                         data : opts  
                     }),
-                    name : '-roo-edit-' + i,
-                    attrname : i,
+                    name : '-roo-edit-' + tlist[i].name,
+                    
+                    attrname : tlist[i].name,
                     stylename : item.style ? item.style : false,
+                    
                     displayField: item.displayField ? item.displayField : 'val',
                     valueField :  'val',
                     typeAhead: false,
-                    mode: typeof(tbc.stores[i]) != 'undefined'  ? 'remote' : 'local',
+                    mode: typeof(tbc.stores[tlist[i].name]) != 'undefined'  ? 'remote' : 'local',
                     editable : false,
                     triggerAction: 'all',
                     emptyText:'Select',
@@ -48157,11 +53144,20 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
                     width: item.width ? item.width  : 130,
                     listeners : {
                         'select': function(c, r, i) {
+                             
+                            
                             if (c.stylename) {
                                 tb.selectedNode.style[c.stylename] =  r.get('val');
+                                editorcore.syncValue();
+                                return;
+                            }
+                            if (r === false) {
+                                tb.selectedNode.removeAttribute(c.attrname);
+                                editorcore.syncValue();
                                 return;
                             }
                             tb.selectedNode.setAttribute(c.attrname, r.get('val'));
+                            editorcore.syncValue();
                         }
                     }
 
@@ -48169,7 +53165,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
                 continue;
                     
                  
-                
+                /*
                 tb.addField( new Roo.form.TextField({
                     name: i,
                     width: 100,
@@ -48177,16 +53173,19 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
                     value: ''
                 }));
                 continue;
+                */
             }
             tb.addField( new Roo.form.TextField({
-                name: '-roo-edit-' + i,
-                attrname : i,
+                name: '-roo-edit-' + tlist[i].name,
+                attrname : tlist[i].name,
                 
                 width: item.width,
                 //allowBlank:true,
                 value: '',
                 listeners: {
                     'change' : function(f, nv, ov) {
+                        
+                         
                         tb.selectedNode.setAttribute(f.attrname, nv);
                         editorcore.syncValue();
                     }
@@ -48196,8 +53195,9 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         }
         
         var _this = this;
-        
+        var show_delete = !block || block.deleteTitle !== false;
         if(nm == 'BODY'){
+            show_delete = false;
             tb.addSeparator();
         
             tb.addButton( {
@@ -48213,60 +53213,61 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         }
         
         tb.addFill();
-        tb.addButton( {
-            text: 'Remove Tag',
-    
-            listeners : {
-                click : function ()
-                {
-                    // remove
-                    // undo does not work.
-                     
-                    var sn = tb.selectedNode;
-                    
-                    var pn = sn.parentNode;
-                    
-                    var stn =  sn.childNodes[0];
-                    var en = sn.childNodes[sn.childNodes.length - 1 ];
-                    while (sn.childNodes.length) {
-                        var node = sn.childNodes[0];
-                        sn.removeChild(node);
-                        //Roo.log(node);
-                        pn.insertBefore(node, sn);
+        if (show_delete) {
+            tb.addButton({
+                text: block && block.deleteTitle ? block.deleteTitle  : 'Remove Block or Formating', // remove the tag, and puts the children outside...
+        
+                listeners : {
+                    click : function ()
+                    {
+                        var sn = tb.selectedNode;
+                        if (block) {
+                            sn = Roo.htmleditor.Block.factory(tb.selectedNode).removeNode();
+                            
+                        }
+                        if (!sn) {
+                            return;
+                        }
+                        var stn =  sn.childNodes[0] || sn.nextSibling || sn.previousSibling || sn.parentNode;
+                        if (sn.hasAttribute('data-block')) {
+                            stn =  sn.nextSibling || sn.previousSibling || sn.parentNode;
+                            sn.parentNode.removeChild(sn);
+                            
+                        } else if (sn && sn.tagName != 'BODY') {
+                            // remove and keep parents.
+                            a = new Roo.htmleditor.FilterKeepChildren({tag : false});
+                            a.replaceTag(sn);
+                        }
+                        
+                        
+                        var range = editorcore.createRange();
+            
+                        range.setStart(stn,0);
+                        range.setEnd(stn,0); 
+                        var selection = editorcore.getSelection();
+                        selection.removeAllRanges();
+                        selection.addRange(range);
+                        
+                        
+                        //_this.updateToolbar(null, null, pn);
+                        _this.updateToolbar(null, null, null);
+                        _this.updateFooter(false);
                         
                     }
-                    pn.removeChild(sn);
-                    var range = editorcore.createRange();
-        
-                    range.setStart(stn,0);
-                    range.setEnd(en,0); //????
-                    //range.selectNode(sel);
-                    
-                    
-                    var selection = editorcore.getSelection();
-                    selection.removeAllRanges();
-                    selection.addRange(range);
-                    
-                    
-                    
-                    //_this.updateToolbar(null, null, pn);
-                    _this.updateToolbar(null, null, null);
-                    _this.footDisp.dom.innerHTML = ''; 
                 }
-            }
-            
+                
+                        
                     
                 
-            
-        });
-        
+            });
+        }    
         
         tb.el.on('click', function(e){
             e.preventDefault(); // what does this do?
         });
         tb.el.setVisibilityMode( Roo.Element.DISPLAY);
         tb.el.hide();
-        tb.name = nm;
+        
         // dont need to disable them... as they will get hidden
         return tb;
          
@@ -48310,6 +53311,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         
         
     },
+    // when the footer contect changes
     onContextClick : function (ev,dom)
     {
         ev.preventDefault();
@@ -48322,17 +53324,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         var ans = this.footerEls;
         var sel = ans[n];
         
-         // pick
-        var range = this.editorcore.createRange();
-        
-        range.selectNodeContents(sel);
-        //range.selectNode(sel);
-        
-        
-        var selection = this.editorcore.getSelection();
-        selection.removeAllRanges();
-        selection.addRange(range);
-        
+        this.editorcore.selectNode(sel);
         
         
         this.updateToolbar(null, null, sel);
@@ -48901,11 +53893,12 @@ clientValidation  Boolean          Applies to submit only.  Pass true to call fo
      * @param {Boolean} asString
      * @return {Object}
      */
-    getValues : function(asString){
+    getValues : function(asString)
+    {
         if (this.childForms) {
             // copy values from the child forms
             Roo.each(this.childForms, function (f) {
-                this.setValues(f.getValues());
+                this.setValues(f.getFieldValues()); // get the full set of data, as we might be copying comboboxes from external into this one.
             }, this);
         }
         
@@ -48938,21 +53931,31 @@ clientValidation  Boolean          Applies to submit only.  Pass true to call fo
     /**
      * Returns the fields in this form as an object with key/value pairs. 
      * This differs from getValues as it calls getValue on each child item, rather than using dom data.
+     * Normally this will not return readOnly data 
+     * @param {Boolean} with_readonly return readonly field data.
      * @return {Object}
      */
-    getFieldValues : function(with_hidden)
+    getFieldValues : function(with_readonly)
     {
         if (this.childForms) {
             // copy values from the child forms
             // should this call getFieldValues - probably not as we do not currently copy
             // hidden fields when we generate..
             Roo.each(this.childForms, function (f) {
-                this.setValues(f.getValues());
+                this.setValues(f.getFieldValues());
             }, this);
         }
         
         var ret = {};
         this.items.each(function(f){
+            
+            if (f.readOnly && with_readonly !== true) {
+                return; // skip read only values. - this is in theory to stop 'old' values being copied over new ones
+                        // if a subform contains a copy of them.
+                        // if you have subforms with the same editable data, you will need to copy the data back
+                        // and forth.
+            }
+            
             if (!f.getName()) {
                 return;
             }
@@ -50042,7 +55045,7 @@ Roo.form.Action.ACTION_TYPES = {
 /**
  * @class Roo.form.Layout
  * @extends Roo.Component
- * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem
+ * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem Roo.form.FieldSet
  * Creates a container for layout and rendering of fields in an {@link Roo.form.Form}.
  * @constructor
  * @param {Object} config Configuration options
@@ -50193,6 +55196,7 @@ Roo.extend(Roo.form.Layout, Roo.Component, {
 /**
  * @class Roo.form.Column
  * @extends Roo.form.Layout
+ * @children Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem Roo.form.FieldSet
  * Creates a column container for layout and rendering of fields in an {@link Roo.form.Form}.
  * @constructor
  * @param {Object} config Configuration options
@@ -50227,7 +55231,7 @@ Roo.extend(Roo.form.Column, Roo.form.Layout, {
 /**
  * @class Roo.form.Row
  * @extends Roo.form.Layout
- * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem
+ * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem Roo.form.FieldSet
  * Creates a row container for layout and rendering of fields in an {@link Roo.form.Form}.
  * @constructor
  * @param {Object} config Configuration options
@@ -55153,7 +60157,7 @@ Roo.LayoutStateManager.prototype = {
  * @class Roo.ContentPanel
  * @extends Roo.util.Observable
  * @children Roo.form.Form Roo.JsonView Roo.View
- * @parent Roo.BorderLayout Roo.LayoutDialog builder-top
+ * @parent Roo.BorderLayout Roo.LayoutDialog builder
  * A basic ContentPanel element.
  * @cfg {Boolean}   fitToFrame    True for this panel to adjust its size to fit when the region resizes  (defaults to false)
  * @cfg {Boolean}   fitContainer   When using {@link #fitToFrame} and {@link #resizeEl}, you can also fit the parent container  (defaults to false)
@@ -55166,7 +60170,7 @@ Roo.LayoutStateManager.prototype = {
  * @cfg {String} title          The title for this panel
  * @cfg {Array} adjustments     Values to <b>add</b> to the width/height when doing a {@link #fitToFrame} (default is [0, 0])
  * @cfg {String} url            Calls {@link #setUrl} with this value
- * @cfg {String} region [required]   (center|north|south|east|west) which region to put this panel on (when used with xtype constructors)
+ * @cfg {String} region (center|north|south|east|west) [required] which region to put this panel on (when used with xtype constructors)
  * @cfg {String|Object} params  When used with {@link #url}, calls {@link #setUrl} with this value
  * @cfg {Boolean} loadOnce      When used with {@link #url}, calls {@link #setUrl} with this value
  * @cfg {String}    content        Raw content to fill content panel with (uses setContent on construction.)
@@ -55601,17 +60605,32 @@ layout.addxtype({
     }
 });
 
+
+
+
+
+
+
+
+
+
+
+
 /**
  * @class Roo.GridPanel
  * @extends Roo.ContentPanel
+ * @parent Roo.BorderLayout Roo.LayoutDialog builder
  * @constructor
  * Create a new GridPanel.
- * @param {Roo.grid.Grid} grid The grid for this panel
- * @param {String/Object} config A string to set only the panel's title, or a config object
+ * @cfg {Roo.grid.Grid} grid The grid for this panel
  */
 Roo.GridPanel = function(grid, config){
     
-  
+    // universal ctor...
+    if (typeof(grid.grid) != 'undefined') {
+        config = grid;
+        grid = config.grid;
+    }
     this.wrapper = Roo.DomHelper.append(document.body, // wrapper for IE7 strict & safari scroll issue
         {tag: "div", cls: "x-layout-grid-wrapper x-layout-inactive-content"}, true);
         
@@ -55679,6 +60698,10 @@ Roo.extend(Roo.GridPanel, Roo.ContentPanel, {
 /**
  * @class Roo.NestedLayoutPanel
  * @extends Roo.ContentPanel
+ * @parent Roo.BorderLayout Roo.LayoutDialog builder
+ * @cfg {Roo.BorderLayout} layout   [required] The layout for this panel
+ *
+ * 
  * @constructor
  * Create a new NestedLayoutPanel.
  * 
@@ -55715,6 +60738,8 @@ Roo.NestedLayoutPanel = function(layout, config)
 
 Roo.extend(Roo.NestedLayoutPanel, Roo.ContentPanel, {
 
+    layout : false,
+
     setSize : function(width, height){
         if(!this.ignoreResize(width, height)){
             var size = this.adjustForComponents(width, height);
@@ -55765,7 +60790,7 @@ Roo.extend(Roo.NestedLayoutPanel, Roo.ContentPanel, {
     
     /**
      * Returns the nested BorderLayout for this panel
-     * @return {Roo.BorderLayout} 
+     * @return {Roo.BorderLayout}
      */
     getLayout : function(){
         return this.layout;
@@ -55867,6 +60892,7 @@ Roo.extend(Roo.ScrollPanel, Roo.ContentPanel, {
 /**
  * @class Roo.TreePanel
  * @extends Roo.ContentPanel
+ * @parent Roo.BorderLayout Roo.LayoutDialog builder
  * Treepanel component
  * 
  * @constructor
@@ -55921,17 +60947,6 @@ Roo.extend(Roo.TreePanel, Roo.ContentPanel, {
     tree : false
 
 });
-
-
-
-
-
-
-
-
-
-
-
 /*
  * Based on:
  * Ext JS Library 1.1.1
@@ -56480,8 +61495,10 @@ Roo.extend(Roo.grid.Grid, Roo.util.Observable, {
     * @cfg {Roo.dd.DropTarget} dropTarget An {@link Roo.dd.DropTarget} config
     */
     dropTarget: false,
-    
-   
+     /**
+    * @cfg {boolean} sortColMenu Sort the column order menu when it shows (usefull for long lists..) default false
+    */ 
+    sortColMenu : false,
     
     // private
     rendered : false,
@@ -58543,13 +63560,28 @@ Roo.extend(Roo.grid.GridView, Roo.grid.AbstractGridView, {
     beforeColMenuShow : function(){
         var cm = this.cm,  colCount = cm.getColumnCount();
         this.colMenu.removeAll();
+        
+        var items = [];
         for(var i = 0; i < colCount; i++){
-            this.colMenu.add(new Roo.menu.CheckItem({
+            items.push({
                 id: "col-"+cm.getColumnId(i),
                 text: cm.getColumnHeader(i),
                 checked: !cm.isHidden(i),
                 hideOnClick:false
-            }));
+            });
+        }
+        
+        if (this.grid.sortColMenu) {
+            items.sort(function(a,b) {
+                if (a.text == b.text) {
+                    return 0;
+                }
+                return a.text.toUpperCase() > b.text.toUpperCase() ? 1 : -1;
+            });
+        }
+        
+        for(var i = 0; i < colCount; i++){
+            this.colMenu.add(new Roo.menu.CheckItem(items[i]));
         }
     },
 
index 724119a..ab5d290 100644 (file)
@@ -666,6 +666,16 @@ Roo.extend(Roo.data.Store, Roo.util.Observable, {
      * <p>
      * @param {Object} options An object containing properties which control loading options:<ul>
      * <li>params {Object} An object containing properties to pass as HTTP parameters to a remote data source.</li>
+     * <li>params.data {Object} if you are using a MemoryProxy / JsonReader, use this as the data to load stuff..
+     * <pre>
+                {
+                    data : data,  // array of key=>value data like JsonReader
+                    total : data.length,
+                    success : true
+                    
+                }
+        </pre>
+            }.</li>
      * <li>callback {Function} A function to be called after the Records have been loaded. The callback is
      * passed the following arguments:<ul>
      * <li>r : Roo.data.Record[]</li>
@@ -7006,7 +7016,7 @@ Roo.MenuButton = Roo.SplitButton;/*
 
 /**
  * @class Roo.Toolbar
- * @children   Roo.Toolbar.Item Roo.form.Field
+ * @children   Roo.Toolbar.Item Roo.Toolbar.Button Roo.Toolbar.SplitButton Roo.form.Field 
  * Basic Toolbar class.
  * @constructor
  * Creates a new Toolbar
@@ -7542,7 +7552,23 @@ Roo.extend(Roo.Toolbar.TextItem, Roo.Toolbar.Item, {
      
     enable:Roo.emptyFn,
     disable:Roo.emptyFn,
-    focus:Roo.emptyFn
+    focus:Roo.emptyFn,
+     /**
+     * Shows this button
+     */
+    show: function(){
+        this.hidden = false;
+        this.el.style.display = "";
+    },
+    
+    /**
+     * Hides this button
+     */
+    hide: function(){
+        this.hidden = true;
+        this.el.style.display = "none";
+    }
+    
 });
 
 /**
@@ -7665,7 +7691,7 @@ Roo.Toolbar.MenuButton = Roo.Toolbar.SplitButton;/*
 /**
  * @class Roo.PagingToolbar
  * @extends Roo.Toolbar
- * @children   Roo.Toolbar.Item Roo.form.Field
+ * @children   Roo.Toolbar.Item Roo.Toolbar.Button Roo.Toolbar.SplitButton Roo.form.Field
  * A specialized toolbar that is bound to a {@link Roo.data.Store} and provides automatic paging controls.
  * @constructor
  * Create a new PagingToolbar
@@ -7908,7 +7934,11 @@ Roo.extend(Roo.PagingToolbar, Roo.Toolbar, {
             this.loading.disable();
         }
     },
-
+    /**
+     * event that occurs when you click on the navigation buttons - can be used to trigger load of a grid.
+     * @param {String} which (first|prev|next|last|refresh)  which button to press.
+     *
+     */
     // private
     onClick : function(which){
         var ds = this.ds;
@@ -8998,6 +9028,7 @@ Roo.extend(Roo.Editor, Roo.Component, {
 /**
  * @class Roo.BasicDialog
  * @extends Roo.util.Observable
+ * @parent none builder
  * Lightweight Dialog Class.  The code below shows the creation of a typical dialog using existing HTML markup:
  * <pre><code>
 var dlg = new Roo.BasicDialog("my-dlg", {
@@ -10275,6 +10306,7 @@ Roo.extend(Roo.LayoutDialog, Roo.BasicDialog, {
  
 /**
  * @class Roo.MessageBox
+ * @static
  * Utility class for generating different styles of message boxes.  The alias Roo.Msg can also be used.
  * Example usage:
  *<pre><code>
@@ -10384,6 +10416,7 @@ Roo.MessageBox = function(){
                         }
                     }
                 });
+              
                 dlg.on("hide", handleHide);
                 mask = dlg.mask;
                 dlg.addKeyListener(27, handleEsc);
@@ -10627,6 +10660,7 @@ Roo.Msg.show({
                 d.animateTarget = null;
                 d.show(options.animEl);
             }
+            dlg.toFront();
             return this;
         },
 
@@ -14408,7 +14442,7 @@ Roo.extend(Roo.tree.ColumnTree, Roo.tree.TreePanel, {
 /**
  * @class Roo.menu.Menu
  * @extends Roo.util.Observable
- * @children Roo.menu.BaseItem
+ * @children Roo.menu.Item Roo.menu.Separator Roo.menu.TextItem
  * A menu object.  This is the container to which you add all other menu items.  Menu can also serve a as a base class
  * when you want a specialzed menu based off of another component (like {@link Roo.menu.DateMenu} for example).
  * @constructor
@@ -15493,7 +15527,7 @@ Roo.extend(Roo.menu.Item, Roo.menu.BaseItem, {
      */
     text: '',
      /**
-     * @cfg {String} HTML to render in menu
+     * @cfg {String} html to render in menu
      * The text to show on the menu item (HTML version).
      */
     html: '',
@@ -17566,6 +17600,16 @@ Roo.extend(Roo.form.DateField, Roo.form.TriggerField,  {
      * The tooltip text to display when the date falls on a disabled date (defaults to 'Disabled')
      */
     disabledDatesText : "Disabled",
+       
+       
+       /**
+     * @cfg {Date/String} zeroValue
+     * if the date is less that this number, then the field is rendered as empty
+     * default is 1800
+     */
+       zeroValue : '1800-01-01',
+       
+       
     /**
      * @cfg {Date/String} minValue
      * The minimum allowed date. Can be either a Javascript date object or a string date in a
@@ -17742,6 +17786,15 @@ dateField.setValue('2006-5-4');
 
     // private
     parseDate : function(value){
+               
+               if (value instanceof Date) {
+                       if (value < Date.parseDate(this.zeroValue, 'Y-m-d') ) {
+                               return  '';
+                       }
+                       return value;
+               }
+               
+               
         if(!value || value instanceof Date){
             return value;
         }
@@ -17757,6 +17810,9 @@ dateField.setValue('2006-5-4');
                 v = Date.parseDate(value, this.altFormatsArray[i]);
             }
         }
+               if (v < Date.parseDate(this.zeroValue, 'Y-m-d') ) {
+                       v = '';
+               }
         return v;
     },
 
@@ -20541,445 +20597,4884 @@ Roo.extend(Roo.form.Radio, Roo.form.Checkbox, {
     } 
     
     
-});//<script type="text/javascript">
-
-/*
- * Based  Ext JS Library 1.1.1
- * Copyright(c) 2006-2007, Ext JS, LLC.
- * LGPL
- *
- */
-/**
- * @class Roo.HtmlEditorCore
- * @extends Roo.Component
- * Provides a the editing component for the HTML editors in Roo. (bootstrap and Roo.form)
- *
- * any element that has display set to 'none' can cause problems in Safari and Firefox.<br/><br/>
- */
+});Roo.rtf = {}; // namespace
+Roo.rtf.Hex = function(hex)
+{
+    this.hexstr = hex;
+};
+Roo.rtf.Paragraph = function(opts)
+{
+    this.content = []; ///??? is that used?
+};Roo.rtf.Span = function(opts)
+{
+    this.value = opts.value;
+};
 
-Roo.HtmlEditorCore = function(config){
-    
-    
-    Roo.HtmlEditorCore.superclass.constructor.call(this, config);
-    
+Roo.rtf.Group = function(parent)
+{
+    // we dont want to acutally store parent - it will make debug a nightmare..
+    this.content = [];
+    this.cn  = [];
+     
+       
     
-    this.addEvents({
-        /**
-         * @event initialize
-         * Fires when the editor is fully initialized (including the iframe)
-         * @param {Roo.HtmlEditorCore} this
-         */
-        initialize: true,
-        /**
-         * @event activate
-         * Fires when the editor is first receives the focus. Any insertion must wait
-         * until after this event.
-         * @param {Roo.HtmlEditorCore} this
-         */
-        activate: true,
-         /**
-         * @event beforesync
-         * Fires before the textarea is updated with content from the editor iframe. Return false
-         * to cancel the sync.
-         * @param {Roo.HtmlEditorCore} this
-         * @param {String} html
-         */
-        beforesync: true,
-         /**
-         * @event beforepush
-         * Fires before the iframe editor is updated with content from the textarea. Return false
-         * to cancel the push.
-         * @param {Roo.HtmlEditorCore} this
-         * @param {String} html
-         */
-        beforepush: true,
-         /**
-         * @event sync
-         * Fires when the textarea is updated with content from the editor iframe.
-         * @param {Roo.HtmlEditorCore} this
-         * @param {String} html
-         */
-        sync: true,
-         /**
-         * @event push
-         * Fires when the iframe editor is updated with content from the textarea.
-         * @param {Roo.HtmlEditorCore} this
-         * @param {String} html
-         */
-        push: true,
+};
+
+Roo.rtf.Group.prototype = {
+    ignorable : false,
+    content: false,
+    cn: false,
+    addContent : function(node) {
+        // could set styles...
+        this.content.push(node);
+    },
+    addChild : function(cn)
+    {
+        this.cn.push(cn);
+    },
+    // only for images really...
+    toDataURL : function()
+    {
+        var mimetype = false;
+        switch(true) {
+            case this.content.filter(function(a) { return a.value == 'pngblip' } ).length > 0: 
+                mimetype = "image/png";
+                break;
+             case this.content.filter(function(a) { return a.value == 'jpegblip' } ).length > 0:
+                mimetype = "image/jpeg";
+                break;
+            default :
+                return 'about:blank'; // ?? error?
+        }
         
-        /**
-         * @event editorevent
-         * Fires when on any editor (mouse up/down cursor movement etc.) - used for toolbar hooks.
-         * @param {Roo.HtmlEditorCore} this
-         */
-        editorevent: true
         
-    });
-    
-    // at this point this.owner is set, so we can start working out the whitelisted / blacklisted elements
+        var hexstring = this.content[this.content.length-1].value;
+        
+        return 'data:' + mimetype + ';base64,' + btoa(hexstring.match(/\w{2}/g).map(function(a) {
+            return String.fromCharCode(parseInt(a, 16));
+        }).join(""));
+    }
     
-    // defaults : white / black...
-    this.applyBlacklists();
+};
+// this looks like it's normally the {rtf{ .... }}
+Roo.rtf.Document = function()
+{
+    // we dont want to acutally store parent - it will make debug a nightmare..
+    this.rtlch  = [];
+    this.content = [];
+    this.cn = [];
     
+};
+Roo.extend(Roo.rtf.Document, Roo.rtf.Group, { 
+    addChild : function(cn)
+    {
+        this.cn.push(cn);
+        switch(cn.type) {
+            case 'rtlch': // most content seems to be inside this??
+            case 'listtext':
+            case 'shpinst':
+                this.rtlch.push(cn);
+                return;
+            default:
+                this[cn.type] = cn;
+        }
+        
+    },
     
+    getElementsByType : function(type)
+    {
+        var ret =  [];
+        this._getElementsByType(type, ret, this.cn, 'rtf');
+        return ret;
+    },
+    _getElementsByType : function (type, ret, search_array, path)
+    {
+        search_array.forEach(function(n,i) {
+            if (n.type == type) {
+                n.path = path + '/' + n.type + ':' + i;
+                ret.push(n);
+            }
+            if (n.cn.length > 0) {
+                this._getElementsByType(type, ret, n.cn, path + '/' + n.type+':'+i);
+            }
+        },this);
+    }
     
+});
+Roo.rtf.Ctrl = function(opts)
+{
+    this.value = opts.value;
+    this.param = opts.param;
 };
+/**
+ *
+ *
+ * based on this https://github.com/iarna/rtf-parser
+ * it's really only designed to extract pict from pasted RTF 
+ *
+ * usage:
+ *
+ *  var images = new Roo.rtf.Parser().parse(a_string).filter(function(g) { return g.type == 'pict'; });
+ *  
+ *
+ */
 
 
-Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
 
 
-     /**
-     * @cfg {Roo.form.HtmlEditor|Roo.bootstrap.HtmlEditor} the owner field 
-     */
+Roo.rtf.Parser = function(text) {
+    //super({objectMode: true})
+    this.text = '';
+    this.parserState = this.parseText;
     
-    owner : false,
+    // these are for interpeter...
+    this.doc = {};
+    ///this.parserState = this.parseTop
+    this.groupStack = [];
+    this.hexStore = [];
+    this.doc = false;
     
-     /**
-     * @cfg {String} resizable  's' or 'se' or 'e' - wrapps the element in a
-     *                        Roo.resizable.
-     */
-    resizable : false,
-     /**
-     * @cfg {Number} height (in pixels)
-     */   
-    height: 300,
-   /**
-     * @cfg {Number} width (in pixels)
-     */   
-    width: 500,
+    this.groups = []; // where we put the return.
     
-    /**
-     * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets.
-     * 
-     */
-    stylesheets: false,
+    for (var ii = 0; ii < text.length; ++ii) {
+        ++this.cpos;
+        
+        if (text[ii] === '\n') {
+            ++this.row;
+            this.col = 1;
+        } else {
+            ++this.col;
+        }
+        this.parserState(text[ii]);
+    }
     
-    /**
-     * @cfg {boolean} allowComments - default false - allow comments in HTML source - by default they are stripped - if you are editing email you may need this.
-     */
-    allowComments: false,
-    // id of frame..
-    frameId: false,
     
-    // private properties
-    validationEvent : false,
-    deferHeight: true,
-    initialized : false,
-    activated : false,
-    sourceEditMode : false,
-    onFocus : Roo.emptyFn,
-    iframePad:3,
-    hideMode:'offsets',
     
-    clearUp: true,
+};
+Roo.rtf.Parser.prototype = {
+    text : '', // string being parsed..
+    controlWord : '',
+    controlWordParam :  '',
+    hexChar : '',
+    doc : false,
+    group: false,
+    groupStack : false,
+    hexStore : false,
     
-    // blacklist + whitelisted elements..
-    black: false,
-    white: false,
-     
-    bodyCls : '',
+    
+    cpos : 0, 
+    row : 1, // reportin?
+    col : 1, //
 
-    /**
-     * Protected method that will not generally be called directly. It
-     * is called when the editor initializes the iframe with HTML contents. Override this method if you
-     * want to change the initialization markup of the iframe (e.g. to add stylesheets).
-     */
-    getDocMarkup : function(){
-        // body styles..
-        var st = '';
-        
-        // inherit styels from page...?? 
-        if (this.stylesheets === false) {
-            
-            Roo.get(document.head).select('style').each(function(node) {
-                st += node.dom.outerHTML || new XMLSerializer().serializeToString(node.dom);
-            });
-            
-            Roo.get(document.head).select('link').each(function(node) { 
-                st += node.dom.outerHTML || new XMLSerializer().serializeToString(node.dom);
-            });
-            
-        } else if (!this.stylesheets.length) {
-                // simple..
-                st = '<style type="text/css">' +
-                    'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
-                   '</style>';
-        } else {
-            for (var i in this.stylesheets) { 
-                st += '<link rel="stylesheet" href="' + this.stylesheets[i] +'" type="text/css">';
-            }
-            
+     
+    push : function (el)
+    {
+        var m = 'cmd'+ el.type;
+        if (typeof(this[m]) == 'undefined') {
+            Roo.log('invalid cmd:' + el.type);
+            return;
         }
+        this[m](el);
+        //Roo.log(el);
+    },
+    flushHexStore : function()
+    {
+        if (this.hexStore.length < 1) {
+            return;
+        }
+        var hexstr = this.hexStore.map(
+            function(cmd) {
+                return cmd.value;
+        }).join('');
         
-        st +=  '<style type="text/css">' +
-            'IMG { cursor: pointer } ' +
-        '</style>';
-
-        var cls = 'roo-htmleditor-body';
+        this.group.addContent( new Roo.rtf.Hex( hexstr ));
+              
+            
+        this.hexStore.splice(0)
         
-        if(this.bodyCls.length){
-            cls += ' ' + this.bodyCls;
+    },
+    
+    cmdgroupstart : function()
+    {
+        this.flushHexStore();
+        if (this.group) {
+            this.groupStack.push(this.group);
         }
-        
-        return '<html><head>' + st  +
-            //<style type="text/css">' +
-            //'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
-            //'</style>' +
-            ' </head><body contenteditable="true" data-enable-grammerly="true" class="' +  cls + '"></body></html>';
+         // parent..
+        if (this.doc === false) {
+            this.group = this.doc = new Roo.rtf.Document();
+            return;
+            
+        }
+        this.group = new Roo.rtf.Group(this.group);
     },
-
-    // private
-    onRender : function(ct, position)
+    cmdignorable : function()
     {
-        var _t = this;
-        //Roo.HtmlEditorCore.superclass.onRender.call(this, ct, position);
-        this.el = this.owner.inputEl ? this.owner.inputEl() : this.owner.el;
-        
-        
-        this.el.dom.style.border = '0 none';
-        this.el.dom.setAttribute('tabIndex', -1);
-        this.el.addClass('x-hidden hide');
-        
+        this.flushHexStore();
+        this.group.ignorable = true;
+    },
+    cmdendparagraph : function()
+    {
+        this.flushHexStore();
+        this.group.addContent(new Roo.rtf.Paragraph());
+    },
+    cmdgroupend : function ()
+    {
+        this.flushHexStore();
+        var endingGroup = this.group;
         
         
-        if(Roo.isIE){ // fix IE 1px bogus margin
-            this.el.applyStyles('margin-top:-1px;margin-bottom:-1px;')
+        this.group = this.groupStack.pop();
+        if (this.group) {
+            this.group.addChild(endingGroup);
         }
-       
-        
-        this.frameId = Roo.id();
-        
-         
-        
-        var iframe = this.owner.wrap.createChild({
-            tag: 'iframe',
-            cls: 'form-control', // bootstrap..
-            id: this.frameId,
-            name: this.frameId,
-            frameBorder : 'no',
-            'src' : Roo.SSL_SECURE_URL ? Roo.SSL_SECURE_URL  :  "javascript:false"
-        }, this.el
-        );
-        
         
-        this.iframe = iframe.dom;
-
-         this.assignDocWin();
         
-        this.doc.designMode = 'on';
-       
-        this.doc.open();
-        this.doc.write(this.getDocMarkup());
-        this.doc.close();
-
         
-        var task = { // must defer to wait for browser to be ready
-            run : function(){
-                //console.log("run task?" + this.doc.readyState);
-                this.assignDocWin();
-                if(this.doc.body || this.doc.readyState == 'complete'){
-                    try {
-                        this.doc.designMode="on";
-                    } catch (e) {
-                        return;
-                    }
-                    Roo.TaskMgr.stop(task);
-                    this.initEditor.defer(10, this);
-                }
-            },
-            interval : 10,
-            duration: 10000,
-            scope: this
-        };
-        Roo.TaskMgr.start(task);
-
+        var doc = this.group || this.doc;
+        //if (endingGroup instanceof FontTable) {
+        //  doc.fonts = endingGroup.table
+        //} else if (endingGroup instanceof ColorTable) {
+        //  doc.colors = endingGroup.table
+        //} else if (endingGroup !== this.doc && !endingGroup.get('ignorable')) {
+        if (endingGroup.ignorable === false) {
+            //code
+            this.groups.push(endingGroup);
+           // Roo.log( endingGroup );
+        }
+            //Roo.each(endingGroup.content, function(item)) {
+            //    doc.addContent(item);
+            //}
+            //process.emit('debug', 'GROUP END', endingGroup.type, endingGroup.get('ignorable'))
+        //}
     },
-
-    // private
-    onResize : function(w, h)
+    cmdtext : function (cmd)
     {
-         Roo.log('resize: ' +w + ',' + h );
-        //Roo.HtmlEditorCore.superclass.onResize.apply(this, arguments);
-        if(!this.iframe){
-            return;
+        this.flushHexStore();
+        if (!this.group) { // an RTF fragment, missing the {\rtf1 header
+            //this.group = this.doc
         }
-        if(typeof w == 'number'){
-            
-            this.iframe.style.width = w + 'px';
+        this.group.addContent(new Roo.rtf.Span(cmd));
+    },
+    cmdcontrolword : function (cmd)
+    {
+        this.flushHexStore();
+        if (!this.group.type) {
+            this.group.type = cmd.value;
+            return;
         }
-        if(typeof h == 'number'){
-            
-            this.iframe.style.height = h + 'px';
-            if(this.doc){
-                (this.doc.body || this.doc.documentElement).style.height = (h - (this.iframePad*2)) + 'px';
-            }
+        this.group.addContent(new Roo.rtf.Ctrl(cmd));
+        // we actually don't care about ctrl words...
+        return ;
+        /*
+        var method = 'ctrl$' + cmd.value.replace(/-(.)/g, (_, char) => char.toUpperCase())
+        if (this[method]) {
+            this[method](cmd.param)
+        } else {
+            if (!this.group.get('ignorable')) process.emit('debug', method, cmd.param)
         }
-        
+        */
     },
-
-    /**
-     * Toggles the editor between standard and source edit mode.
-     * @param {Boolean} sourceEdit (optional) True for source edit, false for standard
-     */
-    toggleSourceEdit : function(sourceEditMode){
-        
-        this.sourceEditMode = sourceEditMode === true;
-        
-        if(this.sourceEditMode){
-            Roo.get(this.iframe).addClass(['x-hidden','hide']);     //FIXME - what's the BS styles for these
-            
-        }else{
-            Roo.get(this.iframe).removeClass(['x-hidden','hide']);
-            //this.iframe.className = '';
-            this.deferFocus();
-        }
-        //this.setSize(this.owner.wrap.getSize());
-        //this.fireEvent('editmodechange', this, this.sourceEditMode);
+    cmdhexchar : function(cmd) {
+        this.hexStore.push(cmd);
+    },
+    cmderror : function(cmd) {
+        throw new Exception (cmd.value);
     },
-
     
-  
-
-    /**
-     * Protected method that will not generally be called directly. If you need/want
-     * custom HTML cleanup, this is the method you should override.
-     * @param {String} html The HTML to be cleaned
-     * return {String} The cleaned HTML
-     */
-    cleanHtml : function(html){
-        html = String(html);
-        if(html.length > 5){
-            if(Roo.isSafari){ // strip safari nonsense
-                html = html.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi, '');
-            }
+    /*
+      _flush (done) {
+        if (this.text !== '\u0000') this.emitText()
+        done()
+      }
+      */
+      
+      
+    parseText : function(c)
+    {
+        if (c === '\\') {
+            this.parserState = this.parseEscapes;
+        } else if (c === '{') {
+            this.emitStartGroup();
+        } else if (c === '}') {
+            this.emitEndGroup();
+        } else if (c === '\x0A' || c === '\x0D') {
+            // cr/lf are noise chars
+        } else {
+            this.text += c;
         }
-        if(html == '&nbsp;'){
-            html = '';
+    },
+    
+    parseEscapes: function (c)
+    {
+        if (c === '\\' || c === '{' || c === '}') {
+            this.text += c;
+            this.parserState = this.parseText;
+        } else {
+            this.parserState = this.parseControlSymbol;
+            this.parseControlSymbol(c);
         }
-        return html;
     },
-
-    /**
-     * HTML Editor -> Textarea
-     * Protected method that will not generally be called directly. Syncs the contents
-     * of the editor iframe with the textarea.
-     */
-    syncValue : function(){
-        if(this.initialized){
-            var bd = (this.doc.body || this.doc.documentElement);
-            //this.cleanUpPaste(); -- this is done else where and causes havoc..
-            var html = bd.innerHTML;
-            if(Roo.isSafari){
-                var bs = bd.getAttribute('style'); // Safari puts text-align styles on the body element!
-                var m = bs ? bs.match(/text-align:(.*?);/i) : false;
-                if(m && m[1]){
-                    html = '<div style="'+m[0]+'">' + html + '</div>';
-                }
-            }
-            html = this.cleanHtml(html);
-            // fix up the special chars.. normaly like back quotes in word...
-            // however we do not want to do this with chinese..
-            html = html.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u0080-\uFFFF]/g, function(match) {
-                
-                var cc = match.charCodeAt();
-
-                // Get the character value, handling surrogate pairs
-                if (match.length == 2) {
-                    // It's a surrogate pair, calculate the Unicode code point
-                    var high = match.charCodeAt(0) - 0xD800;
-                    var low  = match.charCodeAt(1) - 0xDC00;
-                    cc = (high * 0x400) + low + 0x10000;
-                }  else if (
-                    (cc >= 0x4E00 && cc < 0xA000 ) ||
-                    (cc >= 0x3400 && cc < 0x4E00 ) ||
-                    (cc >= 0xf900 && cc < 0xfb00 )
-                ) {
-                        return match;
-                }  
-         
-                // No, use a numeric entity. Here we brazenly (and possibly mistakenly)
-                return "&#" + cc + ";";
-                
-                
-            });
-            
-            
-             
-            if(this.owner.fireEvent('beforesync', this, html) !== false){
-                this.el.dom.value = html;
-                this.owner.fireEvent('sync', this, html);
-            }
+    parseControlSymbol: function(c)
+    {
+        if (c === '~') {
+            this.text += '\u00a0'; // nbsp
+            this.parserState = this.parseText
+        } else if (c === '-') {
+             this.text += '\u00ad'; // soft hyphen
+        } else if (c === '_') {
+            this.text += '\u2011'; // non-breaking hyphen
+        } else if (c === '*') {
+            this.emitIgnorable();
+            this.parserState = this.parseText;
+        } else if (c === "'") {
+            this.parserState = this.parseHexChar;
+        } else if (c === '|') { // formula cacter
+            this.emitFormula();
+            this.parserState = this.parseText;
+        } else if (c === ':') { // subentry in an index entry
+            this.emitIndexSubEntry();
+            this.parserState = this.parseText;
+        } else if (c === '\x0a') {
+            this.emitEndParagraph();
+            this.parserState = this.parseText;
+        } else if (c === '\x0d') {
+            this.emitEndParagraph();
+            this.parserState = this.parseText;
+        } else {
+            this.parserState = this.parseControlWord;
+            this.parseControlWord(c);
         }
     },
-
-    /**
-     * Protected method that will not generally be called directly. Pushes the value of the textarea
-     * into the iframe editor.
-     */
-    pushValue : function(){
-        if(this.initialized){
-            var v = this.el.dom.value.trim();
-            
-//            if(v.length < 1){
-//                v = '&#160;';
-//            }
-            
-            if(this.owner.fireEvent('beforepush', this, v) !== false){
-                var d = (this.doc.body || this.doc.documentElement);
-                d.innerHTML = v;
-                this.cleanUpPaste();
-                this.el.dom.value = d.innerHTML;
-                this.owner.fireEvent('push', this, v);
+    parseHexChar: function (c)
+    {
+        if (/^[A-Fa-f0-9]$/.test(c)) {
+            this.hexChar += c;
+            if (this.hexChar.length >= 2) {
+              this.emitHexChar();
+              this.parserState = this.parseText;
             }
+            return;
         }
+        this.emitError("Invalid character \"" + c + "\" in hex literal.");
+        this.parserState = this.parseText;
+        
     },
-
-    // private
-    deferFocus : function(){
-        this.focus.defer(10, this);
+    parseControlWord : function(c)
+    {
+        if (c === ' ') {
+            this.emitControlWord();
+            this.parserState = this.parseText;
+        } else if (/^[-\d]$/.test(c)) {
+            this.parserState = this.parseControlWordParam;
+            this.controlWordParam += c;
+        } else if (/^[A-Za-z]$/.test(c)) {
+          this.controlWord += c;
+        } else {
+          this.emitControlWord();
+          this.parserState = this.parseText;
+          this.parseText(c);
+        }
     },
-
-    // doc'ed in Field
-    focus : function(){
-        if(this.win && !this.sourceEditMode){
-            this.win.focus();
-        }else{
-            this.el.focus();
+    parseControlWordParam : function (c) {
+        if (/^\d$/.test(c)) {
+          this.controlWordParam += c;
+        } else if (c === ' ') {
+          this.emitControlWord();
+          this.parserState = this.parseText;
+        } else {
+          this.emitControlWord();
+          this.parserState = this.parseText;
+          this.parseText(c);
         }
     },
     
-    assignDocWin: function()
+    
+    
+    
+    emitText : function () {
+        if (this.text === '') {
+            return;
+        }
+        this.push({
+            type: 'text',
+            value: this.text,
+            pos: this.cpos,
+            row: this.row,
+            col: this.col
+        });
+        this.text = ''
+    },
+    emitControlWord : function ()
     {
-        var iframe = this.iframe;
-        
-         if(Roo.isIE){
-            this.doc = iframe.contentWindow.document;
-            this.win = iframe.contentWindow;
+        this.emitText();
+        if (this.controlWord === '') {
+            this.emitError('empty control word');
         } else {
-//            if (!Roo.get(this.frameId)) {
-//                return;
-//            }
-//            this.doc = (iframe.contentDocument || Roo.get(this.frameId).dom.document);
-//            this.win = Roo.get(this.frameId).dom.contentWindow;
-            
-            if (!Roo.get(this.frameId) && !iframe.contentDocument) {
-                return;
-            }
-            
-            this.doc = (iframe.contentDocument || Roo.get(this.frameId).dom.document);
-            this.win = (iframe.contentWindow || Roo.get(this.frameId).dom.contentWindow);
+            this.push({
+                  type: 'controlword',
+                  value: this.controlWord,
+                  param: this.controlWordParam !== '' && Number(this.controlWordParam),
+                  pos: this.cpos,
+                  row: this.row,
+                  col: this.col
+            });
         }
+        this.controlWord = '';
+        this.controlWordParam = '';
     },
-    
-    // private
-    initEditor : function(){
-        //console.log("INIT EDITOR");
-        this.assignDocWin();
-        
+    emitStartGroup : function ()
+    {
+        this.emitText();
+        this.push({
+            type: 'groupstart',
+            pos: this.cpos,
+            row: this.row,
+            col: this.col
+        });
+    },
+    emitEndGroup : function ()
+    {
+        this.emitText();
+        this.push({
+            type: 'groupend',
+            pos: this.cpos,
+            row: this.row,
+            col: this.col
+        });
+    },
+    emitIgnorable : function ()
+    {
+        this.emitText();
+        this.push({
+            type: 'ignorable',
+            pos: this.cpos,
+            row: this.row,
+            col: this.col
+        });
+    },
+    emitHexChar : function ()
+    {
+        this.emitText();
+        this.push({
+            type: 'hexchar',
+            value: this.hexChar,
+            pos: this.cpos,
+            row: this.row,
+            col: this.col
+        });
+        this.hexChar = ''
+    },
+    emitError : function (message)
+    {
+      this.emitText();
+      this.push({
+            type: 'error',
+            value: message,
+            row: this.row,
+            col: this.col,
+            char: this.cpos //,
+            //stack: new Error().stack
+        });
+    },
+    emitEndParagraph : function () {
+        this.emitText();
+        this.push({
+            type: 'endparagraph',
+            pos: this.cpos,
+            row: this.row,
+            col: this.col
+        });
+    }
+     
+} ;
+Roo.htmleditor = {};
+/**
+ * @class Roo.htmleditor.Filter
+ * Base Class for filtering htmleditor stuff. - do not use this directly - extend it.
+ * @cfg {DomElement} node The node to iterate and filter
+ * @cfg {boolean|String|Array} tag Tags to replace 
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+
+
+Roo.htmleditor.Filter = function(cfg) {
+    Roo.apply(this.cfg);
+    // this does not actually call walk as it's really just a abstract class
+}
+
+
+Roo.htmleditor.Filter.prototype = {
+    
+    node: false,
+    
+    tag: false,
+
+    // overrride to do replace comments.
+    replaceComment : false,
+    
+    // overrride to do replace or do stuff with tags..
+    replaceTag : false,
+    
+    walk : function(dom)
+    {
+        Roo.each( Array.from(dom.childNodes), function( e ) {
+            switch(true) {
+                
+                case e.nodeType == 8 &&  this.replaceComment  !== false: // comment
+                    this.replaceComment(e);
+                    return;
+                
+                case e.nodeType != 1: //not a node.
+                    return;
+                
+                case this.tag === true: // everything
+                case typeof(this.tag) == 'object' && this.tag.indexOf(e.tagName) > -1: // array and it matches.
+                case typeof(this.tag) == 'string' && this.tag == e.tagName: // array and it matches.
+                    if (this.replaceTag && false === this.replaceTag(e)) {
+                        return;
+                    }
+                    if (e.hasChildNodes()) {
+                        this.walk(e);
+                    }
+                    return;
+                
+                default:    // tags .. that do not match.
+                    if (e.hasChildNodes()) {
+                        this.walk(e);
+                    }
+            }
+            
+        }, this);
+        
+    }
+}; 
+
+/**
+ * @class Roo.htmleditor.FilterAttributes
+ * clean attributes and  styles including http:// etc.. in attribute
+ * @constructor
+* Run a new Attribute Filter
+* @param {Object} config Configuration options
+ */
+Roo.htmleditor.FilterAttributes = function(cfg)
+{
+    Roo.apply(this, cfg);
+    this.attrib_black = this.attrib_black || [];
+    this.attrib_white = this.attrib_white || [];
+
+    this.attrib_clean = this.attrib_clean || [];
+    this.style_white = this.style_white || [];
+    this.style_black = this.style_black || [];
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterAttributes, Roo.htmleditor.Filter,
+{
+    tag: true, // all tags
+    
+    attrib_black : false, // array
+    attrib_clean : false,
+    attrib_white : false,
+
+    style_white : false,
+    style_black : false,
+     
+     
+    replaceTag : function(node)
+    {
+        if (!node.attributes || !node.attributes.length) {
+            return true;
+        }
+        
+        for (var i = node.attributes.length-1; i > -1 ; i--) {
+            var a = node.attributes[i];
+            //console.log(a);
+            if (this.attrib_white.length && this.attrib_white.indexOf(a.name.toLowerCase()) < 0) {
+                node.removeAttribute(a.name);
+                continue;
+            }
+            
+            
+            
+            if (a.name.toLowerCase().substr(0,2)=='on')  {
+                node.removeAttribute(a.name);
+                continue;
+            }
+            
+            
+            if (this.attrib_black.indexOf(a.name.toLowerCase()) > -1) {
+                node.removeAttribute(a.name);
+                continue;
+            }
+            if (this.attrib_clean.indexOf(a.name.toLowerCase()) > -1) {
+                this.cleanAttr(node,a.name,a.value); // fixme..
+                continue;
+            }
+            if (a.name == 'style') {
+                this.cleanStyle(node,a.name,a.value);
+                continue;
+            }
+            /// clean up MS crap..
+            // tecnically this should be a list of valid class'es..
+            
+            
+            if (a.name == 'class') {
+                if (a.value.match(/^Mso/)) {
+                    node.removeAttribute('class');
+                }
+                
+                if (a.value.match(/^body$/)) {
+                    node.removeAttribute('class');
+                }
+                continue;
+            }
+            
+            
+            // style cleanup!?
+            // class cleanup?
+            
+        }
+        return true; // clean children
+    },
+        
+    cleanAttr: function(node, n,v)
+    {
+        
+        if (v.match(/^\./) || v.match(/^\//)) {
+            return;
+        }
+        if (v.match(/^(http|https):\/\//)
+            || v.match(/^mailto:/) 
+            || v.match(/^ftp:/)
+            || v.match(/^data:/)
+            ) {
+            return;
+        }
+        if (v.match(/^#/)) {
+            return;
+        }
+        if (v.match(/^\{/)) { // allow template editing.
+            return;
+        }
+//            Roo.log("(REMOVE TAG)"+ node.tagName +'.' + n + '=' + v);
+        node.removeAttribute(n);
+        
+    },
+    cleanStyle : function(node,  n,v)
+    {
+        if (v.match(/expression/)) { //XSS?? should we even bother..
+            node.removeAttribute(n);
+            return;
+        }
+        
+        var parts = v.split(/;/);
+        var clean = [];
+        
+        Roo.each(parts, function(p) {
+            p = p.replace(/^\s+/g,'').replace(/\s+$/g,'');
+            if (!p.length) {
+                return true;
+            }
+            var l = p.split(':').shift().replace(/\s+/g,'');
+            l = l.replace(/^\s+/g,'').replace(/\s+$/g,'');
+            
+            if ( this.style_black.length && (this.style_black.indexOf(l) > -1 || this.style_black.indexOf(l.toLowerCase()) > -1)) {
+                return true;
+            }
+            //Roo.log()
+            // only allow 'c whitelisted system attributes'
+            if ( this.style_white.length &&  style_white.indexOf(l) < 0 && style_white.indexOf(l.toLowerCase()) < 0 ) {
+                return true;
+            }
+            
+            
+            clean.push(p);
+            return true;
+        },this);
+        if (clean.length) { 
+            node.setAttribute(n, clean.join(';'));
+        } else {
+            node.removeAttribute(n);
+        }
+        
+    }
+        
+        
+        
+    
+});/**
+ * @class Roo.htmleditor.FilterBlack
+ * remove blacklisted elements.
+ * @constructor
+ * Run a new Blacklisted Filter
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.FilterBlack = function(cfg)
+{
+    Roo.apply(this, cfg);
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterBlack, Roo.htmleditor.Filter,
+{
+    tag : true, // all elements.
+   
+    replaceTag : function(n)
+    {
+        n.parentNode.removeChild(n);
+    }
+});
+/**
+ * @class Roo.htmleditor.FilterComment
+ * remove comments.
+ * @constructor
+* Run a new Comments Filter
+* @param {Object} config Configuration options
+ */
+Roo.htmleditor.FilterComment = function(cfg)
+{
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterComment, Roo.htmleditor.Filter,
+{
+  
+    replaceComment : function(n)
+    {
+        n.parentNode.removeChild(n);
+    }
+});/**
+ * @class Roo.htmleditor.FilterKeepChildren
+ * remove tags but keep children
+ * @constructor
+ * Run a new Keep Children Filter
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.FilterKeepChildren = function(cfg)
+{
+    Roo.apply(this, cfg);
+    if (this.tag === false) {
+        return; // dont walk.. (you can use this to use this just to do a child removal on a single tag )
+    }
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterKeepChildren, Roo.htmleditor.FilterBlack,
+{
+    
+  
+    replaceTag : function(node)
+    {
+        // walk children...
+        //Roo.log(node);
+        var ar = Array.from(node.childNodes);
+        //remove first..
+        for (var i = 0; i < ar.length; i++) {
+            if (ar[i].nodeType == 1) {
+                if (
+                    (typeof(this.tag) == 'object' && this.tag.indexOf(ar[i].tagName) > -1)
+                    || // array and it matches
+                    (typeof(this.tag) == 'string' && this.tag == ar[i].tagName)
+                ) {
+                    this.replaceTag(ar[i]); // child is blacklisted as well...
+                    continue;
+                }
+            }
+        }  
+        ar = Array.from(node.childNodes);
+        for (var i = 0; i < ar.length; i++) {
+         
+            node.removeChild(ar[i]);
+            // what if we need to walk these???
+            node.parentNode.insertBefore(ar[i], node);
+            if (this.tag !== false) {
+                this.walk(ar[i]);
+                
+            }
+        }
+        node.parentNode.removeChild(node);
+        return false; // don't walk children
+        
+        
+    }
+});/**
+ * @class Roo.htmleditor.FilterParagraph
+ * paragraphs cause a nightmare for shared content - this filter is designed to be called ? at various points when editing
+ * like on 'push' to remove the <p> tags and replace them with line breaks.
+ * @constructor
+ * Run a new Paragraph Filter
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.FilterParagraph = function(cfg)
+{
+    // no need to apply config.
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterParagraph, Roo.htmleditor.Filter,
+{
+    
+     
+    tag : 'P',
+    
+     
+    replaceTag : function(node)
+    {
+        
+        if (node.childNodes.length == 1 &&
+            node.childNodes[0].nodeType == 3 &&
+            node.childNodes[0].textContent.trim().length < 1
+            ) {
+            // remove and replace with '<BR>';
+            node.parentNode.replaceChild(node.ownerDocument.createElement('BR'),node);
+            return false; // no need to walk..
+        }
+        var ar = Array.from(node.childNodes);
+        for (var i = 0; i < ar.length; i++) {
+            node.removeChild(ar[i]);
+            // what if we need to walk these???
+            node.parentNode.insertBefore(ar[i], node);
+        }
+        // now what about this?
+        // <p> &nbsp; </p>
+        
+        // double BR.
+        node.parentNode.insertBefore(node.ownerDocument.createElement('BR'), node);
+        node.parentNode.insertBefore(node.ownerDocument.createElement('BR'), node);
+        node.parentNode.removeChild(node);
+        
+        return false;
+
+    }
+    
+});/**
+ * @class Roo.htmleditor.FilterSpan
+ * filter span's with no attributes out..
+ * @constructor
+ * Run a new Span Filter
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.FilterSpan = function(cfg)
+{
+    // no need to apply config.
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterSpan, Roo.htmleditor.FilterKeepChildren,
+{
+     
+    tag : 'SPAN',
+     
+    replaceTag : function(node)
+    {
+        if (node.attributes && node.attributes.length > 0) {
+            return true; // walk if there are any.
+        }
+        Roo.htmleditor.FilterKeepChildren.prototype.replaceTag.call(this, node);
+        return false;
+     
+    }
+    
+});/**
+ * @class Roo.htmleditor.FilterTableWidth
+  try and remove table width data - as that frequently messes up other stuff.
+ * 
+ *      was cleanTableWidths.
+ *
+ * Quite often pasting from word etc.. results in tables with column and widths.
+ * This does not work well on fluid HTML layouts - like emails. - so this code should hunt an destroy them..
+ *
+ * @constructor
+ * Run a new Table Filter
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.FilterTableWidth = function(cfg)
+{
+    // no need to apply config.
+    this.tag = ['TABLE', 'TD', 'TR', 'TH', 'THEAD', 'TBODY' ];
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterTableWidth, Roo.htmleditor.Filter,
+{
+     
+     
+    
+    replaceTag: function(node) {
+        
+        
+      
+        if (node.hasAttribute('width')) {
+            node.removeAttribute('width');
+        }
+        
+         
+        if (node.hasAttribute("style")) {
+            // pretty basic...
+            
+            var styles = node.getAttribute("style").split(";");
+            var nstyle = [];
+            Roo.each(styles, function(s) {
+                if (!s.match(/:/)) {
+                    return;
+                }
+                var kv = s.split(":");
+                if (kv[0].match(/^\s*(width|min-width)\s*$/)) {
+                    return;
+                }
+                // what ever is left... we allow.
+                nstyle.push(s);
+            });
+            node.setAttribute("style", nstyle.length ? nstyle.join(';') : '');
+            if (!nstyle.length) {
+                node.removeAttribute('style');
+            }
+        }
+        
+        return true; // continue doing children..
+    }
+});/**
+ * @class Roo.htmleditor.FilterWord
+ * try and clean up all the mess that Word generates.
+ * 
+ * This is the 'nice version' - see 'Heavy' that white lists a very short list of elements, and multi-filters 
+ * @constructor
+ * Run a new Span Filter
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.FilterWord = function(cfg)
+{
+    // no need to apply config.
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
+{
+    tag: true,
+     
+    
+    /**
+     * Clean up MS wordisms...
+     */
+    replaceTag : function(node)
+    {
+         
+        // no idea what this does - span with text, replaceds with just text.
+        if(
+                node.nodeName == 'SPAN' &&
+                !node.hasAttributes() &&
+                node.childNodes.length == 1 &&
+                node.firstChild.nodeName == "#text"  
+        ) {
+            var textNode = node.firstChild;
+            node.removeChild(textNode);
+            if (node.getAttribute('lang') != 'zh-CN') {   // do not space pad on chinese characters..
+                node.parentNode.insertBefore(node.ownerDocument.createTextNode(" "), node);
+            }
+            node.parentNode.insertBefore(textNode, node);
+            if (node.getAttribute('lang') != 'zh-CN') {   // do not space pad on chinese characters..
+                node.parentNode.insertBefore(node.ownerDocument.createTextNode(" ") , node);
+            }
+            
+            node.parentNode.removeChild(node);
+            return false; // dont do chidren - we have remove our node - so no need to do chdhilren?
+        }
+        
+   
+        
+        if (node.tagName.toLowerCase().match(/^(style|script|applet|embed|noframes|noscript)$/)) {
+            node.parentNode.removeChild(node);
+            return false; // dont do chidlren
+        }
+        //Roo.log(node.tagName);
+        // remove - but keep children..
+        if (node.tagName.toLowerCase().match(/^(meta|link|\\?xml:|st1:|o:|v:|font)/)) {
+            //Roo.log('-- removed');
+            while (node.childNodes.length) {
+                var cn = node.childNodes[0];
+                node.removeChild(cn);
+                node.parentNode.insertBefore(cn, node);
+                // move node to parent - and clean it..
+                this.replaceTag(cn);
+            }
+            node.parentNode.removeChild(node);
+            /// no need to iterate chidlren = it's got none..
+            //this.iterateChildren(node, this.cleanWord);
+            return false; // no need to iterate children.
+        }
+        // clean styles
+        if (node.className.length) {
+            
+            var cn = node.className.split(/\W+/);
+            var cna = [];
+            Roo.each(cn, function(cls) {
+                if (cls.match(/Mso[a-zA-Z]+/)) {
+                    return;
+                }
+                cna.push(cls);
+            });
+            node.className = cna.length ? cna.join(' ') : '';
+            if (!cna.length) {
+                node.removeAttribute("class");
+            }
+        }
+        
+        if (node.hasAttribute("lang")) {
+            node.removeAttribute("lang");
+        }
+        
+        if (node.hasAttribute("style")) {
+            
+            var styles = node.getAttribute("style").split(";");
+            var nstyle = [];
+            Roo.each(styles, function(s) {
+                if (!s.match(/:/)) {
+                    return;
+                }
+                var kv = s.split(":");
+                if (kv[0].match(/^(mso-|line|font|background|margin|padding|color)/)) {
+                    return;
+                }
+                // what ever is left... we allow.
+                nstyle.push(s);
+            });
+            node.setAttribute("style", nstyle.length ? nstyle.join(';') : '');
+            if (!nstyle.length) {
+                node.removeAttribute('style');
+            }
+        }
+        return true; // do children
+        
+        
+        
+    }
+});
+/**
+ * @class Roo.htmleditor.FilterStyleToTag
+ * part of the word stuff... - certain 'styles' should be converted to tags.
+ * eg.
+ *   font-weight: bold -> bold
+ *   ?? super / subscrit etc..
+ * 
+ * @constructor
+* Run a new style to tag filter.
+* @param {Object} config Configuration options
+ */
+Roo.htmleditor.FilterStyleToTag = function(cfg)
+{
+    
+    this.tags = {
+        B  : [ 'fontWeight' , 'bold'],
+        I :  [ 'fontStyle' , 'italic'],
+        //pre :  [ 'font-style' , 'italic'],
+        // h1.. h6 ?? font-size?
+        SUP : [ 'verticalAlign' , 'super' ],
+        SUB : [ 'verticalAlign' , 'sub' ]
+        
+        
+    };
+    
+    Roo.apply(this, cfg);
+     
+    
+    this.walk(cfg.node);
+    
+    
+    
+}
+
+
+Roo.extend(Roo.htmleditor.FilterStyleToTag, Roo.htmleditor.Filter,
+{
+    tag: true, // all tags
+    
+    tags : false,
+    
+    
+    replaceTag : function(node)
+    {
+        
+        
+        if (node.getAttribute("style") === null) {
+            return true;
+        }
+        var inject = [];
+        for (var k in this.tags) {
+            if (node.style[this.tags[k][0]] == this.tags[k][1]) {
+                inject.push(k);
+                node.style.removeProperty(this.tags[k][0]);
+            }
+        }
+        if (!inject.length) {
+            return true; 
+        }
+        var cn = Array.from(node.childNodes);
+        var nn = node;
+        Roo.each(inject, function(t) {
+            var nc = node.ownerDocument.createElement(t);
+            nn.appendChild(nc);
+            nn = nc;
+        });
+        for(var i = 0;i < cn.length;cn++) {
+            node.removeChild(cn[i]);
+            nn.appendChild(cn[i]);
+        }
+        return true /// iterate thru
+    }
+    
+})/**
+ * @class Roo.htmleditor.FilterLongBr
+ * BR/BR/BR - keep a maximum of 2...
+ * @constructor
+ * Run a new Long BR Filter
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.FilterLongBr = function(cfg)
+{
+    // no need to apply config.
+    this.walk(cfg.node);
+}
+
+Roo.extend(Roo.htmleditor.FilterLongBr, Roo.htmleditor.Filter,
+{
+    
+     
+    tag : 'BR',
+    
+     
+    replaceTag : function(node)
+    {
+        
+        var ps = node.nextSibling;
+        while (ps && ps.nodeType == 3 && ps.nodeValue.trim().length < 1) {
+            ps = ps.nextSibling;
+        }
+        
+        if (!ps &&  [ 'TD', 'TH', 'LI', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6' ].indexOf(node.parentNode.tagName) > -1) { 
+            node.parentNode.removeChild(node); // remove last BR inside one fo these tags
+            return false;
+        }
+        
+        if (!ps || ps.nodeType != 1) {
+            return false;
+        }
+        
+        if (!ps || ps.tagName != 'BR') {
+           
+            return false;
+        }
+        
+        
+        
+        
+        
+        if (!node.previousSibling) {
+            return false;
+        }
+        var ps = node.previousSibling;
+        
+        while (ps && ps.nodeType == 3 && ps.nodeValue.trim().length < 1) {
+            ps = ps.previousSibling;
+        }
+        if (!ps || ps.nodeType != 1) {
+            return false;
+        }
+        // if header or BR before.. then it's a candidate for removal.. - as we only want '2' of these..
+        if (!ps || [ 'BR', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6' ].indexOf(ps.tagName) < 0) {
+            return false;
+        }
+        
+        node.parentNode.removeChild(node); // remove me...
+        
+        return false; // no need to do children
+
+    }
+    
+}); 
+
+/**
+ * @class Roo.htmleditor.FilterBlock
+ * removes id / data-block and contenteditable that are associated with blocks
+ * usage should be done on a cloned copy of the dom
+ * @constructor
+* Run a new Attribute Filter { node : xxxx }}
+* @param {Object} config Configuration options
+ */
+Roo.htmleditor.FilterBlock = function(cfg)
+{
+    Roo.apply(this, cfg);
+    var qa = cfg.node.querySelectorAll;
+    this.removeAttributes('data-block');
+    this.removeAttributes('contenteditable');
+    this.removeAttributes('id');
+    
+}
+
+Roo.apply(Roo.htmleditor.FilterBlock.prototype,
+{
+    node: true, // all tags
+     
+     
+    removeAttributes : function(attr)
+    {
+        var ar = this.node.querySelectorAll('*[' + attr + ']');
+        for (var i =0;i<ar.length;i++) {
+            ar[i].removeAttribute(attr);
+        }
+    }
+        
+        
+        
+    
+});
+/***
+ * This is based loosely on tinymce 
+ * @class Roo.htmleditor.TidySerializer
+ * https://github.com/thorn0/tinymce.html/blob/master/tinymce.html.js
+ * @constructor
+ * @method Serializer
+ * @param {Object} settings Name/value settings object.
+ */
+
+
+Roo.htmleditor.TidySerializer = function(settings)
+{
+    Roo.apply(this, settings);
+    
+    this.writer = new Roo.htmleditor.TidyWriter(settings);
+    
+    
+
+};
+Roo.htmleditor.TidySerializer.prototype = {
+    
+    /**
+     * @param {boolean} inner do the inner of the node.
+     */
+    inner : false,
+    
+    writer : false,
+    
+    /**
+    * Serializes the specified node into a string.
+    *
+    * @example
+    * new tinymce.html.Serializer().serialize(new tinymce.html.DomParser().parse('<p>text</p>'));
+    * @method serialize
+    * @param {DomElement} node Node instance to serialize.
+    * @return {String} String with HTML based on DOM tree.
+    */
+    serialize : function(node) {
+        
+        // = settings.validate;
+        var writer = this.writer;
+        var self  = this;
+        this.handlers = {
+            // #text
+            3: function(node) {
+                
+                writer.text(node.nodeValue, node);
+            },
+            // #comment
+            8: function(node) {
+                writer.comment(node.nodeValue);
+            },
+            // Processing instruction
+            7: function(node) {
+                writer.pi(node.name, node.nodeValue);
+            },
+            // Doctype
+            10: function(node) {
+                writer.doctype(node.nodeValue);
+            },
+            // CDATA
+            4: function(node) {
+                writer.cdata(node.nodeValue);
+            },
+            // Document fragment
+            11: function(node) {
+                node = node.firstChild;
+                if (!node) {
+                    return;
+                }
+                while(node) {
+                    self.walk(node);
+                    node = node.nextSibling
+                }
+            }
+        };
+        writer.reset();
+        1 != node.nodeType || this.inner ? this.handlers[11](node) : this.walk(node);
+        return writer.getContent();
+    },
+
+    walk: function(node)
+    {
+        var attrName, attrValue, sortedAttrs, i, l, elementRule,
+            handler = this.handlers[node.nodeType];
+            
+        if (handler) {
+            handler(node);
+            return;
+        }
+    
+        var name = node.nodeName;
+        var isEmpty = node.childNodes.length < 1;
+      
+        var writer = this.writer;
+        var attrs = node.attributes;
+        // Sort attributes
+        
+        writer.start(node.nodeName, attrs, isEmpty, node);
+        if (isEmpty) {
+            return;
+        }
+        node = node.firstChild;
+        if (!node) {
+            writer.end(name);
+            return;
+        }
+        while (node) {
+            this.walk(node);
+            node = node.nextSibling;
+        }
+        writer.end(name);
+        
+    
+    }
+    // Serialize element and treat all non elements as fragments
+   
+}; 
+
+/***
+ * This is based loosely on tinymce 
+ * @class Roo.htmleditor.TidyWriter
+ * https://github.com/thorn0/tinymce.html/blob/master/tinymce.html.js
+ *
+ * Known issues?
+ * - not tested much with 'PRE' formated elements.
+ * 
+ *
+ *
+ */
+
+Roo.htmleditor.TidyWriter = function(settings)
+{
+    
+    // indent, indentBefore, indentAfter, encode, htmlOutput, html = [];
+    Roo.apply(this, settings);
+    this.html = [];
+    this.state = [];
+     
+    this.encode = Roo.htmleditor.TidyEntities.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);
+  
+}
+Roo.htmleditor.TidyWriter.prototype = {
+
+    state : false,
+    
+    indent :  '  ',
+    
+    // part of state...
+    indentstr : '',
+    in_pre: false,
+    in_inline : false,
+    last_inline : false,
+    encode : false,
+     
+    
+            /**
+    * Writes the a start element such as <p id="a">.
+    *
+    * @method start
+    * @param {String} name Name of the element.
+    * @param {Array} attrs Optional attribute array or undefined if it hasn't any.
+    * @param {Boolean} empty Optional empty state if the tag should end like <br />.
+    */
+    start: function(name, attrs, empty, node)
+    {
+        var i, l, attr, value;
+        
+        // there are some situations where adding line break && indentation will not work. will not work.
+        // <span / b / i ... formating?
+        
+        var in_inline = this.in_inline || Roo.htmleditor.TidyWriter.inline_elements.indexOf(name) > -1;
+        var in_pre    = this.in_pre    || Roo.htmleditor.TidyWriter.whitespace_elements.indexOf(name) > -1;
+        
+        var is_short   = empty ? Roo.htmleditor.TidyWriter.shortend_elements.indexOf(name) > -1 : false;
+        
+        var add_lb = name == 'BR' ? false : in_inline;
+        
+        if (!add_lb && !this.in_pre && this.lastElementEndsWS()) {
+            i_inline = false;
+        }
+
+        var indentstr =  this.indentstr;
+        
+        // e_inline = elements that can be inline, but still allow \n before and after?
+        // only 'BR' ??? any others?
+        
+        // ADD LINE BEFORE tage
+        if (!this.in_pre) {
+            if (in_inline) {
+                //code
+                if (name == 'BR') {
+                    this.addLine();
+                } else if (this.lastElementEndsWS()) {
+                    this.addLine();
+                } else{
+                    // otherwise - no new line. (and dont indent.)
+                    indentstr = '';
+                }
+                
+            } else {
+                this.addLine();
+            }
+        } else {
+            indentstr = '';
+        }
+        
+        this.html.push(indentstr + '<', name.toLowerCase());
+        
+        if (attrs) {
+            for (i = 0, l = attrs.length; i < l; i++) {
+                attr = attrs[i];
+                this.html.push(' ', attr.name, '="', this.encode(attr.value, true), '"');
+            }
+        }
+     
+        if (empty) {
+            if (is_short) {
+                this.html[this.html.length] = '/>';
+            } else {
+                this.html[this.html.length] = '></' + name.toLowerCase() + '>';
+            }
+            var e_inline = name == 'BR' ? false : this.in_inline;
+            
+            if (!e_inline && !this.in_pre) {
+                this.addLine();
+            }
+            return;
+        
+        }
+        // not empty..
+        this.html[this.html.length] = '>';
+        
+        // there is a special situation, where we need to turn on in_inline - if any of the imediate chidlren are one of these.
+        /*
+        if (!in_inline && !in_pre) {
+            var cn = node.firstChild;
+            while(cn) {
+                if (Roo.htmleditor.TidyWriter.inline_elements.indexOf(cn.nodeName) > -1) {
+                    in_inline = true
+                    break;
+                }
+                cn = cn.nextSibling;
+            }
+             
+        }
+        */
+        
+        
+        this.pushState({
+            indentstr : in_pre   ? '' : (this.indentstr + this.indent),
+            in_pre : in_pre,
+            in_inline :  in_inline
+        });
+        // add a line after if we are not in a
+        
+        if (!in_inline && !in_pre) {
+            this.addLine();
+        }
+        
+            
+         
+        
+    },
+    
+    lastElementEndsWS : function()
+    {
+        var value = this.html.length > 0 ? this.html[this.html.length-1] : false;
+        if (value === false) {
+            return true;
+        }
+        return value.match(/\s+$/);
+        
+    },
+    
+    /**
+     * Writes the a end element such as </p>.
+     *
+     * @method end
+     * @param {String} name Name of the element.
+     */
+    end: function(name) {
+        var value;
+        this.popState();
+        var indentstr = '';
+        var in_inline = this.in_inline || Roo.htmleditor.TidyWriter.inline_elements.indexOf(name) > -1;
+        
+        if (!this.in_pre && !in_inline) {
+            this.addLine();
+            indentstr  = this.indentstr;
+        }
+        this.html.push(indentstr + '</', name.toLowerCase(), '>');
+        this.last_inline = in_inline;
+        
+        // pop the indent state..
+    },
+    /**
+     * Writes a text node.
+     *
+     * In pre - we should not mess with the contents.
+     * 
+     *
+     * @method text
+     * @param {String} text String to write out.
+     * @param {Boolean} raw Optional raw state if true the contents wont get encoded.
+     */
+    text: function(text, node)
+    {
+        // if not in whitespace critical
+        if (text.length < 1) {
+            return;
+        }
+        if (this.in_pre) {
+            this.html[this.html.length] =  text;
+            return;   
+        }
+        
+        if (this.in_inline) {
+            text = text.replace(/\s+/g,' '); // all white space inc line breaks to a slingle' '
+            if (text != ' ') {
+                text = text.replace(/\s+/,' ');  // all white space to single white space
+                
+                    
+                // if next tag is '<BR>', then we can trim right..
+                if (node.nextSibling &&
+                    node.nextSibling.nodeType == 1 &&
+                    node.nextSibling.nodeName == 'BR' )
+                {
+                    text = text.replace(/\s+$/g,'');
+                }
+                // if previous tag was a BR, we can also trim..
+                if (node.previousSibling &&
+                    node.previousSibling.nodeType == 1 &&
+                    node.previousSibling.nodeName == 'BR' )
+                {
+                    text = this.indentstr +  text.replace(/^\s+/g,'');
+                }
+                if (text.match(/\n/)) {
+                    text = text.replace(
+                        /(?![^\n]{1,64}$)([^\n]{1,64})\s/g, '$1\n' + this.indentstr
+                    );
+                    // remoeve the last whitespace / line break.
+                    text = text.replace(/\n\s+$/,'');
+                }
+                // repace long lines
+                
+            }
+             
+            this.html[this.html.length] =  text;
+            return;   
+        }
+        // see if previous element was a inline element.
+        var indentstr = this.indentstr;
+   
+        text = text.replace(/\s+/g," "); // all whitespace into single white space.
+        
+        // should trim left?
+        if (node.previousSibling &&
+            node.previousSibling.nodeType == 1 &&
+            Roo.htmleditor.TidyWriter.inline_elements.indexOf(node.previousSibling.nodeName) > -1)
+        {
+            indentstr = '';
+            
+        } else {
+            this.addLine();
+            text = text.replace(/^\s+/,''); // trim left
+          
+        }
+        // should trim right?
+        if (node.nextSibling &&
+            node.nextSibling.nodeType == 1 &&
+            Roo.htmleditor.TidyWriter.inline_elements.indexOf(node.nextSibling.nodeName) > -1)
+        {
+          // noop
+            
+        }  else {
+            text = text.replace(/\s+$/,''); // trim right
+        }
+         
+              
+        
+        
+        
+        if (text.length < 1) {
+            return;
+        }
+        if (!text.match(/\n/)) {
+            this.html.push(indentstr + text);
+            return;
+        }
+        
+        text = this.indentstr + text.replace(
+            /(?![^\n]{1,64}$)([^\n]{1,64})\s/g, '$1\n' + this.indentstr
+        );
+        // remoeve the last whitespace / line break.
+        text = text.replace(/\s+$/,''); 
+        
+        this.html.push(text);
+        
+        // split and indent..
+        
+        
+    },
+    /**
+     * Writes a cdata node such as <![CDATA[data]]>.
+     *
+     * @method cdata
+     * @param {String} text String to write out inside the cdata.
+     */
+    cdata: function(text) {
+        this.html.push('<![CDATA[', text, ']]>');
+    },
+    /**
+    * Writes a comment node such as <!-- Comment -->.
+    *
+    * @method cdata
+    * @param {String} text String to write out inside the comment.
+    */
+   comment: function(text) {
+       this.html.push('<!--', text, '-->');
+   },
+    /**
+     * Writes a PI node such as <?xml attr="value" ?>.
+     *
+     * @method pi
+     * @param {String} name Name of the pi.
+     * @param {String} text String to write out inside the pi.
+     */
+    pi: function(name, text) {
+        text ? this.html.push('<?', name, ' ', this.encode(text), '?>') : this.html.push('<?', name, '?>');
+        this.indent != '' && this.html.push('\n');
+    },
+    /**
+     * Writes a doctype node such as <!DOCTYPE data>.
+     *
+     * @method doctype
+     * @param {String} text String to write out inside the doctype.
+     */
+    doctype: function(text) {
+        this.html.push('<!DOCTYPE', text, '>', this.indent != '' ? '\n' : '');
+    },
+    /**
+     * Resets the internal buffer if one wants to reuse the writer.
+     *
+     * @method reset
+     */
+    reset: function() {
+        this.html.length = 0;
+        this.state = [];
+        this.pushState({
+            indentstr : '',
+            in_pre : false, 
+            in_inline : false
+        })
+    },
+    /**
+     * Returns the contents that got serialized.
+     *
+     * @method getContent
+     * @return {String} HTML contents that got written down.
+     */
+    getContent: function() {
+        return this.html.join('').replace(/\n$/, '');
+    },
+    
+    pushState : function(cfg)
+    {
+        this.state.push(cfg);
+        Roo.apply(this, cfg);
+    },
+    
+    popState : function()
+    {
+        if (this.state.length < 1) {
+            return; // nothing to push
+        }
+        var cfg = {
+            in_pre: false,
+            indentstr : ''
+        };
+        this.state.pop();
+        if (this.state.length > 0) {
+            cfg = this.state[this.state.length-1]; 
+        }
+        Roo.apply(this, cfg);
+    },
+    
+    addLine: function()
+    {
+        if (this.html.length < 1) {
+            return;
+        }
+        
+        
+        var value = this.html[this.html.length - 1];
+        if (value.length > 0 && '\n' !== value) {
+            this.html.push('\n');
+        }
+    }
+    
+    
+//'pre script noscript style textarea video audio iframe object code'
+// shortended... 'area base basefont br col frame hr img input isindex link  meta param embed source wbr track');
+// inline 
+};
+
+Roo.htmleditor.TidyWriter.inline_elements = [
+        'SPAN','STRONG','B','EM','I','FONT','STRIKE','U','VAR',
+        'CITE','DFN','CODE','MARK','Q','SUP','SUB','SAMP', 'A'
+];
+Roo.htmleditor.TidyWriter.shortend_elements = [
+    'AREA','BASE','BASEFONT','BR','COL','FRAME','HR','IMG','INPUT',
+    'ISINDEX','LINK','','META','PARAM','EMBED','SOURCE','WBR','TRACK'
+];
+
+Roo.htmleditor.TidyWriter.whitespace_elements = [
+    'PRE','SCRIPT','NOSCRIPT','STYLE','TEXTAREA','VIDEO','AUDIO','IFRAME','OBJECT','CODE'
+];/***
+ * This is based loosely on tinymce 
+ * @class Roo.htmleditor.TidyEntities
+ * @static
+ * https://github.com/thorn0/tinymce.html/blob/master/tinymce.html.js
+ *
+ * Not 100% sure this is actually used or needed.
+ */
+
+Roo.htmleditor.TidyEntities = {
+    
+    /**
+     * initialize data..
+     */
+    init : function (){
+     
+        this.namedEntities = this.buildEntitiesLookup(this.namedEntitiesData, 32);
+       
+    },
+
+
+    buildEntitiesLookup: function(items, radix) {
+        var i, chr, entity, lookup = {};
+        if (!items) {
+            return {};
+        }
+        items = typeof(items) == 'string' ? items.split(',') : items;
+        radix = radix || 10;
+        // Build entities lookup table
+        for (i = 0; i < items.length; i += 2) {
+            chr = String.fromCharCode(parseInt(items[i], radix));
+            // Only add non base entities
+            if (!this.baseEntities[chr]) {
+                entity = '&' + items[i + 1] + ';';
+                lookup[chr] = entity;
+                lookup[entity] = chr;
+            }
+        }
+        return lookup;
+        
+    },
+    
+    asciiMap : {
+            128: '€',
+            130: '‚',
+            131: 'ƒ',
+            132: '„',
+            133: '…',
+            134: '†',
+            135: '‡',
+            136: 'ˆ',
+            137: '‰',
+            138: 'Š',
+            139: '‹',
+            140: 'Œ',
+            142: 'Ž',
+            145: '‘',
+            146: '’',
+            147: '“',
+            148: '”',
+            149: '•',
+            150: '–',
+            151: '—',
+            152: '˜',
+            153: '™',
+            154: 'š',
+            155: '›',
+            156: 'œ',
+            158: 'ž',
+            159: 'Ÿ'
+    },
+    // Raw entities
+    baseEntities : {
+        '"': '&quot;',
+        // Needs to be escaped since the YUI compressor would otherwise break the code
+        '\'': '&#39;',
+        '<': '&lt;',
+        '>': '&gt;',
+        '&': '&amp;',
+        '`': '&#96;'
+    },
+    // Reverse lookup table for raw entities
+    reverseEntities : {
+        '&lt;': '<',
+        '&gt;': '>',
+        '&amp;': '&',
+        '&quot;': '"',
+        '&apos;': '\''
+    },
+    
+    attrsCharsRegExp : /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
+    textCharsRegExp : /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
+    rawCharsRegExp : /[<>&\"\']/g,
+    entityRegExp : /&#([a-z0-9]+);?|&([a-z0-9]+);/gi,
+    namedEntities  : false,
+    namedEntitiesData : [ 
+        '50',
+        'nbsp',
+        '51',
+        'iexcl',
+        '52',
+        'cent',
+        '53',
+        'pound',
+        '54',
+        'curren',
+        '55',
+        'yen',
+        '56',
+        'brvbar',
+        '57',
+        'sect',
+        '58',
+        'uml',
+        '59',
+        'copy',
+        '5a',
+        'ordf',
+        '5b',
+        'laquo',
+        '5c',
+        'not',
+        '5d',
+        'shy',
+        '5e',
+        'reg',
+        '5f',
+        'macr',
+        '5g',
+        'deg',
+        '5h',
+        'plusmn',
+        '5i',
+        'sup2',
+        '5j',
+        'sup3',
+        '5k',
+        'acute',
+        '5l',
+        'micro',
+        '5m',
+        'para',
+        '5n',
+        'middot',
+        '5o',
+        'cedil',
+        '5p',
+        'sup1',
+        '5q',
+        'ordm',
+        '5r',
+        'raquo',
+        '5s',
+        'frac14',
+        '5t',
+        'frac12',
+        '5u',
+        'frac34',
+        '5v',
+        'iquest',
+        '60',
+        'Agrave',
+        '61',
+        'Aacute',
+        '62',
+        'Acirc',
+        '63',
+        'Atilde',
+        '64',
+        'Auml',
+        '65',
+        'Aring',
+        '66',
+        'AElig',
+        '67',
+        'Ccedil',
+        '68',
+        'Egrave',
+        '69',
+        'Eacute',
+        '6a',
+        'Ecirc',
+        '6b',
+        'Euml',
+        '6c',
+        'Igrave',
+        '6d',
+        'Iacute',
+        '6e',
+        'Icirc',
+        '6f',
+        'Iuml',
+        '6g',
+        'ETH',
+        '6h',
+        'Ntilde',
+        '6i',
+        'Ograve',
+        '6j',
+        'Oacute',
+        '6k',
+        'Ocirc',
+        '6l',
+        'Otilde',
+        '6m',
+        'Ouml',
+        '6n',
+        'times',
+        '6o',
+        'Oslash',
+        '6p',
+        'Ugrave',
+        '6q',
+        'Uacute',
+        '6r',
+        'Ucirc',
+        '6s',
+        'Uuml',
+        '6t',
+        'Yacute',
+        '6u',
+        'THORN',
+        '6v',
+        'szlig',
+        '70',
+        'agrave',
+        '71',
+        'aacute',
+        '72',
+        'acirc',
+        '73',
+        'atilde',
+        '74',
+        'auml',
+        '75',
+        'aring',
+        '76',
+        'aelig',
+        '77',
+        'ccedil',
+        '78',
+        'egrave',
+        '79',
+        'eacute',
+        '7a',
+        'ecirc',
+        '7b',
+        'euml',
+        '7c',
+        'igrave',
+        '7d',
+        'iacute',
+        '7e',
+        'icirc',
+        '7f',
+        'iuml',
+        '7g',
+        'eth',
+        '7h',
+        'ntilde',
+        '7i',
+        'ograve',
+        '7j',
+        'oacute',
+        '7k',
+        'ocirc',
+        '7l',
+        'otilde',
+        '7m',
+        'ouml',
+        '7n',
+        'divide',
+        '7o',
+        'oslash',
+        '7p',
+        'ugrave',
+        '7q',
+        'uacute',
+        '7r',
+        'ucirc',
+        '7s',
+        'uuml',
+        '7t',
+        'yacute',
+        '7u',
+        'thorn',
+        '7v',
+        'yuml',
+        'ci',
+        'fnof',
+        'sh',
+        'Alpha',
+        'si',
+        'Beta',
+        'sj',
+        'Gamma',
+        'sk',
+        'Delta',
+        'sl',
+        'Epsilon',
+        'sm',
+        'Zeta',
+        'sn',
+        'Eta',
+        'so',
+        'Theta',
+        'sp',
+        'Iota',
+        'sq',
+        'Kappa',
+        'sr',
+        'Lambda',
+        'ss',
+        'Mu',
+        'st',
+        'Nu',
+        'su',
+        'Xi',
+        'sv',
+        'Omicron',
+        't0',
+        'Pi',
+        't1',
+        'Rho',
+        't3',
+        'Sigma',
+        't4',
+        'Tau',
+        't5',
+        'Upsilon',
+        't6',
+        'Phi',
+        't7',
+        'Chi',
+        't8',
+        'Psi',
+        't9',
+        'Omega',
+        'th',
+        'alpha',
+        'ti',
+        'beta',
+        'tj',
+        'gamma',
+        'tk',
+        'delta',
+        'tl',
+        'epsilon',
+        'tm',
+        'zeta',
+        'tn',
+        'eta',
+        'to',
+        'theta',
+        'tp',
+        'iota',
+        'tq',
+        'kappa',
+        'tr',
+        'lambda',
+        'ts',
+        'mu',
+        'tt',
+        'nu',
+        'tu',
+        'xi',
+        'tv',
+        'omicron',
+        'u0',
+        'pi',
+        'u1',
+        'rho',
+        'u2',
+        'sigmaf',
+        'u3',
+        'sigma',
+        'u4',
+        'tau',
+        'u5',
+        'upsilon',
+        'u6',
+        'phi',
+        'u7',
+        'chi',
+        'u8',
+        'psi',
+        'u9',
+        'omega',
+        'uh',
+        'thetasym',
+        'ui',
+        'upsih',
+        'um',
+        'piv',
+        '812',
+        'bull',
+        '816',
+        'hellip',
+        '81i',
+        'prime',
+        '81j',
+        'Prime',
+        '81u',
+        'oline',
+        '824',
+        'frasl',
+        '88o',
+        'weierp',
+        '88h',
+        'image',
+        '88s',
+        'real',
+        '892',
+        'trade',
+        '89l',
+        'alefsym',
+        '8cg',
+        'larr',
+        '8ch',
+        'uarr',
+        '8ci',
+        'rarr',
+        '8cj',
+        'darr',
+        '8ck',
+        'harr',
+        '8dl',
+        'crarr',
+        '8eg',
+        'lArr',
+        '8eh',
+        'uArr',
+        '8ei',
+        'rArr',
+        '8ej',
+        'dArr',
+        '8ek',
+        'hArr',
+        '8g0',
+        'forall',
+        '8g2',
+        'part',
+        '8g3',
+        'exist',
+        '8g5',
+        'empty',
+        '8g7',
+        'nabla',
+        '8g8',
+        'isin',
+        '8g9',
+        'notin',
+        '8gb',
+        'ni',
+        '8gf',
+        'prod',
+        '8gh',
+        'sum',
+        '8gi',
+        'minus',
+        '8gn',
+        'lowast',
+        '8gq',
+        'radic',
+        '8gt',
+        'prop',
+        '8gu',
+        'infin',
+        '8h0',
+        'ang',
+        '8h7',
+        'and',
+        '8h8',
+        'or',
+        '8h9',
+        'cap',
+        '8ha',
+        'cup',
+        '8hb',
+        'int',
+        '8hk',
+        'there4',
+        '8hs',
+        'sim',
+        '8i5',
+        'cong',
+        '8i8',
+        'asymp',
+        '8j0',
+        'ne',
+        '8j1',
+        'equiv',
+        '8j4',
+        'le',
+        '8j5',
+        'ge',
+        '8k2',
+        'sub',
+        '8k3',
+        'sup',
+        '8k4',
+        'nsub',
+        '8k6',
+        'sube',
+        '8k7',
+        'supe',
+        '8kl',
+        'oplus',
+        '8kn',
+        'otimes',
+        '8l5',
+        'perp',
+        '8m5',
+        'sdot',
+        '8o8',
+        'lceil',
+        '8o9',
+        'rceil',
+        '8oa',
+        'lfloor',
+        '8ob',
+        'rfloor',
+        '8p9',
+        'lang',
+        '8pa',
+        'rang',
+        '9ea',
+        'loz',
+        '9j0',
+        'spades',
+        '9j3',
+        'clubs',
+        '9j5',
+        'hearts',
+        '9j6',
+        'diams',
+        'ai',
+        'OElig',
+        'aj',
+        'oelig',
+        'b0',
+        'Scaron',
+        'b1',
+        'scaron',
+        'bo',
+        'Yuml',
+        'm6',
+        'circ',
+        'ms',
+        'tilde',
+        '802',
+        'ensp',
+        '803',
+        'emsp',
+        '809',
+        'thinsp',
+        '80c',
+        'zwnj',
+        '80d',
+        'zwj',
+        '80e',
+        'lrm',
+        '80f',
+        'rlm',
+        '80j',
+        'ndash',
+        '80k',
+        'mdash',
+        '80o',
+        'lsquo',
+        '80p',
+        'rsquo',
+        '80q',
+        'sbquo',
+        '80s',
+        'ldquo',
+        '80t',
+        'rdquo',
+        '80u',
+        'bdquo',
+        '810',
+        'dagger',
+        '811',
+        'Dagger',
+        '81g',
+        'permil',
+        '81p',
+        'lsaquo',
+        '81q',
+        'rsaquo',
+        '85c',
+        'euro'
+    ],
+
+         
+    /**
+     * Encodes the specified string using raw entities. This means only the required XML base entities will be encoded.
+     *
+     * @method encodeRaw
+     * @param {String} text Text to encode.
+     * @param {Boolean} attr Optional flag to specify if the text is attribute contents.
+     * @return {String} Entity encoded text.
+     */
+    encodeRaw: function(text, attr)
+    {
+        var t = this;
+        return text.replace(attr ? this.attrsCharsRegExp : this.textCharsRegExp, function(chr) {
+            return t.baseEntities[chr] || chr;
+        });
+    },
+    /**
+     * Encoded the specified text with both the attributes and text entities. This function will produce larger text contents
+     * since it doesn't know if the context is within a attribute or text node. This was added for compatibility
+     * and is exposed as the DOMUtils.encode function.
+     *
+     * @method encodeAllRaw
+     * @param {String} text Text to encode.
+     * @return {String} Entity encoded text.
+     */
+    encodeAllRaw: function(text) {
+        var t = this;
+        return ('' + text).replace(this.rawCharsRegExp, function(chr) {
+            return t.baseEntities[chr] || chr;
+        });
+    },
+    /**
+     * Encodes the specified string using numeric entities. The core entities will be
+     * encoded as named ones but all non lower ascii characters will be encoded into numeric entities.
+     *
+     * @method encodeNumeric
+     * @param {String} text Text to encode.
+     * @param {Boolean} attr Optional flag to specify if the text is attribute contents.
+     * @return {String} Entity encoded text.
+     */
+    encodeNumeric: function(text, attr) {
+        var t = this;
+        return text.replace(attr ? this.attrsCharsRegExp : this.textCharsRegExp, function(chr) {
+            // Multi byte sequence convert it to a single entity
+            if (chr.length > 1) {
+                return '&#' + (1024 * (chr.charCodeAt(0) - 55296) + (chr.charCodeAt(1) - 56320) + 65536) + ';';
+            }
+            return t.baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';
+        });
+    },
+    /**
+     * Encodes the specified string using named entities. The core entities will be encoded
+     * as named ones but all non lower ascii characters will be encoded into named entities.
+     *
+     * @method encodeNamed
+     * @param {String} text Text to encode.
+     * @param {Boolean} attr Optional flag to specify if the text is attribute contents.
+     * @param {Object} entities Optional parameter with entities to use.
+     * @return {String} Entity encoded text.
+     */
+    encodeNamed: function(text, attr, entities) {
+        var t = this;
+        entities = entities || this.namedEntities;
+        return text.replace(attr ? this.attrsCharsRegExp : this.textCharsRegExp, function(chr) {
+            return t.baseEntities[chr] || entities[chr] || chr;
+        });
+    },
+    /**
+     * Returns an encode function based on the name(s) and it's optional entities.
+     *
+     * @method getEncodeFunc
+     * @param {String} name Comma separated list of encoders for example named,numeric.
+     * @param {String} entities Optional parameter with entities to use instead of the built in set.
+     * @return {function} Encode function to be used.
+     */
+    getEncodeFunc: function(name, entities) {
+        entities = this.buildEntitiesLookup(entities) || this.namedEntities;
+        var t = this;
+        function encodeNamedAndNumeric(text, attr) {
+            return text.replace(attr ? t.attrsCharsRegExp : t.textCharsRegExp, function(chr) {
+                return t.baseEntities[chr] || entities[chr] || '&#' + chr.charCodeAt(0) + ';' || chr;
+            });
+        }
+
+        function encodeCustomNamed(text, attr) {
+            return t.encodeNamed(text, attr, entities);
+        }
+        // Replace + with , to be compatible with previous TinyMCE versions
+        name = this.makeMap(name.replace(/\+/g, ','));
+        // Named and numeric encoder
+        if (name.named && name.numeric) {
+            return this.encodeNamedAndNumeric;
+        }
+        // Named encoder
+        if (name.named) {
+            // Custom names
+            if (entities) {
+                return encodeCustomNamed;
+            }
+            return this.encodeNamed;
+        }
+        // Numeric
+        if (name.numeric) {
+            return this.encodeNumeric;
+        }
+        // Raw encoder
+        return this.encodeRaw;
+    },
+    /**
+     * Decodes the specified string, this will replace entities with raw UTF characters.
+     *
+     * @method decode
+     * @param {String} text Text to entity decode.
+     * @return {String} Entity decoded string.
+     */
+    decode: function(text)
+    {
+        var  t = this;
+        return text.replace(this.entityRegExp, function(all, numeric) {
+            if (numeric) {
+                numeric = 'x' === numeric.charAt(0).toLowerCase() ? parseInt(numeric.substr(1), 16) : parseInt(numeric, 10);
+                // Support upper UTF
+                if (numeric > 65535) {
+                    numeric -= 65536;
+                    return String.fromCharCode(55296 + (numeric >> 10), 56320 + (1023 & numeric));
+                }
+                return t.asciiMap[numeric] || String.fromCharCode(numeric);
+            }
+            return t.reverseEntities[all] || t.namedEntities[all] || t.nativeDecode(all);
+        });
+    },
+    nativeDecode : function (text) {
+        return text;
+    },
+    makeMap : function (items, delim, map) {
+               var i;
+               items = items || [];
+               delim = delim || ',';
+               if (typeof items == "string") {
+                       items = items.split(delim);
+               }
+               map = map || {};
+               i = items.length;
+               while (i--) {
+                       map[items[i]] = {};
+               }
+               return map;
+       }
+};
+    
+    
+    
+Roo.htmleditor.TidyEntities.init();
+/**
+ * @class Roo.htmleditor.KeyEnter
+ * Handle Enter press..
+ * @cfg {Roo.HtmlEditorCore} core the editor.
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+
+
+
+
+Roo.htmleditor.KeyEnter = function(cfg) {
+    Roo.apply(this, cfg);
+    // this does not actually call walk as it's really just a abstract class
+    Roo.get(this.core.doc.body).on('keypress', this.keypress, this);
+}
+
+//Roo.htmleditor.KeyEnter.i = 0;
+
+
+Roo.htmleditor.KeyEnter.prototype = {
+    
+    core : false,
+    
+    keypress : function(e)
+    {
+        if (e.charCode != 13 && e.charCode != 10) {
+            Roo.log([e.charCode,e]);
+            return true;
+        }
+        e.preventDefault();
+        // https://stackoverflow.com/questions/18552336/prevent-contenteditable-adding-div-on-enter-chrome
+        var doc = this.core.doc;
+          //add a new line
+       
+    
+        var sel = this.core.getSelection();
+        var range = sel.getRangeAt(0);
+        var n = range.commonAncestorContainer;
+        var pc = range.closest([ 'ol', 'ul']);
+        var pli = range.closest('li');
+        if (!pc || e.ctrlKey) {
+            sel.insertNode('br', 'after'); 
+         
+            this.core.undoManager.addEvent();
+            this.core.fireEditorEvent(e);
+            return false;
+        }
+        
+        // deal with <li> insetion
+        if (pli.innerText.trim() == '' &&
+            pli.previousSibling &&
+            pli.previousSibling.nodeName == 'LI' &&
+            pli.previousSibling.innerText.trim() ==  '') {
+            pli.parentNode.removeChild(pli.previousSibling);
+            sel.cursorAfter(pc);
+            this.core.undoManager.addEvent();
+            this.core.fireEditorEvent(e);
+            return false;
+        }
+    
+        var li = doc.createElement('LI');
+        li.innerHTML = '&nbsp;';
+        if (!pli || !pli.firstSibling) {
+            pc.appendChild(li);
+        } else {
+            pli.parentNode.insertBefore(li, pli.firstSibling);
+        }
+        sel.cursorText (li.firstChild);
+      
+        this.core.undoManager.addEvent();
+        this.core.fireEditorEvent(e);
+
+        return false;
+        
+    
+        
+        
+         
+    }
+};
+     
+/**
+ * @class Roo.htmleditor.Block
+ * Base class for html editor blocks - do not use it directly .. extend it..
+ * @cfg {DomElement} node The node to apply stuff to.
+ * @cfg {String} friendly_name the name that appears in the context bar about this block
+ * @cfg {Object} Context menu - see Roo.form.HtmlEditor.ToolbarContext
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.Block  = function(cfg)
+{
+    // do nothing .. should not be called really.
+}
+/**
+ * factory method to get the block from an element (using cache if necessary)
+ * @static
+ * @param {HtmlElement} the dom element
+ */
+Roo.htmleditor.Block.factory = function(node)
+{
+    var cc = Roo.htmleditor.Block.cache;
+    var id = Roo.get(node).id;
+    if (typeof(cc[id]) != 'undefined' && (!cc[id].node || cc[id].node.closest('body'))) {
+        Roo.htmleditor.Block.cache[id].readElement(node);
+        return Roo.htmleditor.Block.cache[id];
+    }
+    var db  = node.getAttribute('data-block');
+    if (!db) {
+        db = node.nodeName.toLowerCase().toUpperCaseFirst();
+    }
+    var cls = Roo.htmleditor['Block' + db];
+    if (typeof(cls) == 'undefined') {
+        //Roo.log(node.getAttribute('data-block'));
+        Roo.log("OOps missing block : " + 'Block' + db);
+        return false;
+    }
+    Roo.htmleditor.Block.cache[id] = new cls({ node: node });
+    return Roo.htmleditor.Block.cache[id];  /// should trigger update element
+};
+
+/**
+ * initalize all Elements from content that are 'blockable'
+ * @static
+ * @param the body element
+ */
+Roo.htmleditor.Block.initAll = function(body, type)
+{
+    if (typeof(type) == 'undefined') {
+        var ia = Roo.htmleditor.Block.initAll;
+        ia(body,'table');
+        ia(body,'td');
+        ia(body,'figure');
+        return;
+    }
+    Roo.each(Roo.get(body).query(type), function(e) {
+        Roo.htmleditor.Block.factory(e);    
+    },this);
+};
+// question goes here... do we need to clear out this cache sometimes?
+// or show we make it relivant to the htmleditor.
+Roo.htmleditor.Block.cache = {};
+
+Roo.htmleditor.Block.prototype = {
+    
+    node : false,
+    
+     // used by context menu
+    friendly_name : 'Based Block',
+    
+    // text for button to delete this element
+    deleteTitle : false,
+    
+    context : false,
+    /**
+     * Update a node with values from this object
+     * @param {DomElement} node
+     */
+    updateElement : function(node)
+    {
+        Roo.DomHelper.update(node === undefined ? this.node : node, this.toObject());
+    },
+     /**
+     * convert to plain HTML for calling insertAtCursor..
+     */
+    toHTML : function()
+    {
+        return Roo.DomHelper.markup(this.toObject());
+    },
+    /**
+     * used by readEleemnt to extract data from a node
+     * may need improving as it's pretty basic
+     
+     * @param {DomElement} node
+     * @param {String} tag - tag to find, eg. IMG ?? might be better to use DomQuery ?
+     * @param {String} attribute (use html - for contents, or style for using next param as style)
+     * @param {String} style the style property - eg. text-align
+     */
+    getVal : function(node, tag, attr, style)
+    {
+        var n = node;
+        if (tag !== true && n.tagName != tag.toUpperCase()) {
+            // in theory we could do figure[3] << 3rd figure? or some more complex search..?
+            // but kiss for now.
+            n = node.getElementsByTagName(tag).item(0);
+        }
+        if (!n) {
+            return '';
+        }
+        if (attr == 'html') {
+            return n.innerHTML;
+        }
+        if (attr == 'style') {
+            return n.style[style]; 
+        }
+        
+        return n.hasAttribute(attr) ? n.getAttribute(attr) : '';
+            
+    },
+    /**
+     * create a DomHelper friendly object - for use with 
+     * Roo.DomHelper.markup / overwrite / etc..
+     * (override this)
+     */
+    toObject : function()
+    {
+        return {};
+    },
+      /**
+     * Read a node that has a 'data-block' property - and extract the values from it.
+     * @param {DomElement} node - the node
+     */
+    readElement : function(node)
+    {
+        
+    } 
+    
+    
+};
+
+
+/**
+ * @class Roo.htmleditor.BlockFigure
+ * Block that has an image and a figcaption
+ * @cfg {String} image_src the url for the image
+ * @cfg {String} align (left|right) alignment for the block default left
+ * @cfg {String} caption the text to appear below  (and in the alt tag)
+ * @cfg {String} caption_display (block|none) display or not the caption
+ * @cfg {String|number} image_width the width of the image number or %?
+ * @cfg {String|number} image_height the height of the image number or %?
+ * 
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.BlockFigure = function(cfg)
+{
+    if (cfg.node) {
+        this.readElement(cfg.node);
+        this.updateElement(cfg.node);
+    }
+    Roo.apply(this, cfg);
+}
+Roo.extend(Roo.htmleditor.BlockFigure, Roo.htmleditor.Block, {
+    
+    // setable values.
+    image_src: '',
+    align: 'center',
+    caption : '',
+    caption_display : 'block',
+    width : '100%',
+    cls : '',
+    href: '',
+    video_url : '',
+    
+    // margin: '2%', not used
+    
+    text_align: 'left', //   (left|right) alignment for the text caption default left. - not used at present
+
+    
+    // used by context menu
+    friendly_name : 'Image with caption',
+    deleteTitle : "Delete Image and Caption",
+    
+    contextMenu : function(toolbar)
+    {
+        
+        var block = function() {
+            return Roo.htmleditor.Block.factory(toolbar.tb.selectedNode);
+        };
+        
+        
+        var rooui =  typeof(Roo.bootstrap) == 'undefined' ? Roo : Roo.bootstrap;
+        
+        var syncValue = toolbar.editorcore.syncValue;
+        
+        var fields = {};
+        
+        return [
+             {
+                xtype : 'TextItem',
+                text : "Source: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+            {
+                xtype : 'Button',
+                text: 'Change Image URL',
+                 
+                listeners : {
+                    click: function (btn, state)
+                    {
+                        var b = block();
+                        
+                        Roo.MessageBox.show({
+                            title : "Image Source URL",
+                            msg : "Enter the url for the image",
+                            buttons: Roo.MessageBox.OKCANCEL,
+                            fn: function(btn, val){
+                                if (btn != 'ok') {
+                                    return;
+                                }
+                                b.image_src = val;
+                                b.updateElement();
+                                syncValue();
+                                toolbar.editorcore.onEditorEvent();
+                            },
+                            minWidth:250,
+                            prompt:true,
+                            //multiline: multiline,
+                            modal : true,
+                            value : b.image_src
+                        });
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+         
+            {
+                xtype : 'Button',
+                text: 'Change Link URL',
+                 
+                listeners : {
+                    click: function (btn, state)
+                    {
+                        var b = block();
+                        
+                        Roo.MessageBox.show({
+                            title : "Link URL",
+                            msg : "Enter the url for the link - leave blank to have no link",
+                            buttons: Roo.MessageBox.OKCANCEL,
+                            fn: function(btn, val){
+                                if (btn != 'ok') {
+                                    return;
+                                }
+                                b.href = val;
+                                b.updateElement();
+                                syncValue();
+                                toolbar.editorcore.onEditorEvent();
+                            },
+                            minWidth:250,
+                            prompt:true,
+                            //multiline: multiline,
+                            modal : true,
+                            value : b.href
+                        });
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'Button',
+                text: 'Show Video URL',
+                 
+                listeners : {
+                    click: function (btn, state)
+                    {
+                        Roo.MessageBox.alert("Video URL",
+                            block().video_url == '' ? 'This image is not linked ot a video' :
+                                'The image is linked to: <a target="_new" href="' + block().video_url + '">' + block().video_url + '</a>');
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            
+            
+            {
+                xtype : 'TextItem',
+                text : "Width: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+            {
+                xtype : 'ComboBox',
+                allowBlank : false,
+                displayField : 'val',
+                editable : true,
+                listWidth : 100,
+                triggerAction : 'all',
+                typeAhead : true,
+                valueField : 'val',
+                width : 70,
+                name : 'width',
+                listeners : {
+                    select : function (combo, r, index)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        var b = block();
+                        b.width = r.get('val');
+                        b.updateElement();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.form,
+                store : {
+                    xtype : 'SimpleStore',
+                    data : [
+                        ['auto'],
+                        ['50%'],
+                        ['100%']
+                    ],
+                    fields : [ 'val'],
+                    xns : Roo.data
+                }
+            },
+            {
+                xtype : 'TextItem',
+                text : "Align: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+            {
+                xtype : 'ComboBox',
+                allowBlank : false,
+                displayField : 'val',
+                editable : true,
+                listWidth : 100,
+                triggerAction : 'all',
+                typeAhead : true,
+                valueField : 'val',
+                width : 70,
+                name : 'align',
+                listeners : {
+                    select : function (combo, r, index)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        var b = block();
+                        b.align = r.get('val');
+                        b.updateElement();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.form,
+                store : {
+                    xtype : 'SimpleStore',
+                    data : [
+                        ['left'],
+                        ['right'],
+                        ['center']
+                    ],
+                    fields : [ 'val'],
+                    xns : Roo.data
+                }
+            },
+            
+            
+            {
+                xtype : 'Button',
+                text: 'Hide Caption',
+                name : 'caption_display',
+                pressed : false,
+                enableToggle : true,
+                setValue : function(v) {
+                    this.toggle(v == 'block' ? false : true);
+                },
+                listeners : {
+                    toggle: function (btn, state)
+                    {
+                        var b  = block();
+                        b.caption_display = b.caption_display == 'block' ? 'none' : 'block';
+                        this.setText(b.caption_display == 'block' ? "Hide Caption" : "Show Caption");
+                        b.updateElement();
+                        syncValue();
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            }
+        ];
+        
+    },
+    /**
+     * create a DomHelper friendly object - for use with
+     * Roo.DomHelper.markup / overwrite / etc..
+     */
+    toObject : function()
+    {
+        var d = document.createElement('div');
+        d.innerHTML = this.caption;
+        
+        var m = this.width == '50%' && this.align == 'center' ? '0 auto' : 0; 
+        
+        var img =   {
+            tag : 'img',
+            contenteditable : 'false',
+            src : this.image_src,
+            alt : d.innerText.replace(/\n/g, " ").replace(/\s+/g, ' ').trim(), // removeHTML and reduce spaces..
+            style: {
+                width : 'auto',
+                'max-width': '100%',
+                margin : '0px' 
+                
+                
+            }
+        };
+        /*
+        '<div class="{0}" width="420" height="315" src="{1}" frameborder="0" allowfullscreen>' +
+                    '<a href="{2}">' + 
+                        '<img class="{0}-thumbnail" src="{3}/Images/{4}/{5}#image-{4}" />' + 
+                    '</a>' + 
+                '</div>',
+        */
+                
+        if (this.href.length > 0) {
+            img = {
+                tag : 'a',
+                href: this.href,
+                contenteditable : 'true',
+                cn : [
+                    img
+                ]
+            };
+        }
+        
+        
+        if (this.video_url.length > 0) {
+            img = {
+                tag : 'div',
+                cls : this.cls,
+                frameborder : 0,
+                allowfullscreen : true,
+                width : 420,  // these are for video tricks - that we replace the outer
+                height : 315,
+                src : this.video_url,
+                cn : [
+                    img
+                ]
+            };
+        }
+        
+        var captionhtml = this.caption_display == 'hidden' ? this.caption : (this.caption.length ? this.caption : "Caption");
+        
+        return  {
+            tag: 'figure',
+            'data-block' : 'Figure',
+            contenteditable : 'false',
+            style : {
+                display: 'block',
+                float :  this.align ,
+                'max-width':  this.width,
+                width : 'auto',
+                margin:  m,
+                padding: '10px'
+                
+            },
+           
+            
+            align : this.align,
+            cn : [
+                img,
+              
+                {
+                    tag: 'figcaption',
+                    
+                    style : {
+                        'text-align': 'left',
+                        'margin-top' : '16px',
+                        'font-size' : '16px',
+                        'line-height' : '24px',
+                         display : this.caption_display
+                    },
+                    cls : this.cls.length > 0 ? (this.cls  + '-thumbnail' ) : '',
+                    cn : [
+                        {
+                            // we can not rely on yahoo syndication to use CSS elements - so have to use  '<i>' to encase stuff.
+                            tag : 'i',
+                            contenteditable : true,
+                            html : captionhtml
+                        }
+                    ]
+                    
+                }
+            ]
+        };
+         
+    },
+    
+    readElement : function(node)
+    {
+        // this should not really come from the link...
+        this.video_url = this.getVal(node, 'div', 'src');
+        this.cls = this.getVal(node, 'div', 'class');
+        this.href = this.getVal(node, 'a', 'href');
+        
+        this.image_src = this.getVal(node, 'img', 'src');
+         
+        this.align = this.getVal(node, 'figure', 'align');
+        this.caption = this.getVal(node, 'figcaption', 'html');
+        // remove '<i>
+        if (this.caption.trim().match(/^<i[^>]*>/i)) {
+            this.caption = this.caption.trim().replace(/^<i[^>]*>/i, '').replace(/^<\/i>$/i, '');
+        }
+        //this.text_align = this.getVal(node, 'figcaption', 'style','text-align');
+        this.width = this.getVal(node, 'figure', 'style', 'max-width');
+        //this.margin = this.getVal(node, 'figure', 'style', 'margin');
+        
+    },
+    removeNode : function()
+    {
+        return this.node;
+    }
+    
+  
+   
+     
+    
+    
+    
+    
+})
+
+
+/**
+ * @class Roo.htmleditor.BlockTable
+ * Block that manages a table
+ * 
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.BlockTable = function(cfg)
+{
+    if (cfg.node) {
+        this.readElement(cfg.node);
+        this.updateElement(cfg.node);
+    }
+    Roo.apply(this, cfg);
+    if (!cfg.node) {
+        this.rows = [];
+        for(var r = 0; r < this.no_row; r++) {
+            this.rows[r] = [];
+            for(var c = 0; c < this.no_col; c++) {
+                this.rows[r][c] = this.emptyCell();
+            }
+        }
+    }
+    
+    
+}
+Roo.extend(Roo.htmleditor.BlockTable, Roo.htmleditor.Block, {
+    rows : false,
+    no_col : 1,
+    no_row : 1,
+    
+    
+    width: '100%',
+    
+    // used by context menu
+    friendly_name : 'Table',
+    deleteTitle : 'Delete Table',
+    // context menu is drawn once..
+    
+    contextMenu : function(toolbar)
+    {
+        
+        var block = function() {
+            return Roo.htmleditor.Block.factory(toolbar.tb.selectedNode);
+        };
+        
+        
+        var rooui =  typeof(Roo.bootstrap) == 'undefined' ? Roo : Roo.bootstrap;
+        
+        var syncValue = toolbar.editorcore.syncValue;
+        
+        var fields = {};
+        
+        return [
+            {
+                xtype : 'TextItem',
+                text : "Width: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+            {
+                xtype : 'ComboBox',
+                allowBlank : false,
+                displayField : 'val',
+                editable : true,
+                listWidth : 100,
+                triggerAction : 'all',
+                typeAhead : true,
+                valueField : 'val',
+                width : 100,
+                name : 'width',
+                listeners : {
+                    select : function (combo, r, index)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        var b = block();
+                        b.width = r.get('val');
+                        b.updateElement();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.form,
+                store : {
+                    xtype : 'SimpleStore',
+                    data : [
+                        ['100%'],
+                        ['auto']
+                    ],
+                    fields : [ 'val'],
+                    xns : Roo.data
+                }
+            },
+            // -------- Cols
+            
+            {
+                xtype : 'TextItem',
+                text : "Columns: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+         
+            {
+                xtype : 'Button',
+                text: '-',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        block().removeColumn();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'Button',
+                text: '+',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        block().addColumn();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            // -------- ROWS
+            {
+                xtype : 'TextItem',
+                text : "Rows: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+         
+            {
+                xtype : 'Button',
+                text: '-',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        block().removeRow();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'Button',
+                text: '+',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        block().addRow();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            // -------- ROWS
+            {
+                xtype : 'Button',
+                text: 'Reset Column Widths',
+                listeners : {
+                    
+                    click : function (_self, e)
+                    {
+                        block().resetWidths();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            } 
+            
+            
+            
+        ];
+        
+    },
+    
+    
+  /**
+     * create a DomHelper friendly object - for use with
+     * Roo.DomHelper.markup / overwrite / etc..
+     * ?? should it be called with option to hide all editing features?
+     */
+    toObject : function()
+    {
+        
+        var ret = {
+            tag : 'table',
+            contenteditable : 'false', // this stops cell selection from picking the table.
+            'data-block' : 'Table',
+            style : {
+                width:  this.width,
+                border : 'solid 1px #000', // ??? hard coded?
+                'border-collapse' : 'collapse' 
+            },
+            cn : [
+                { tag : 'tbody' , cn : [] }
+            ]
+        };
+        
+        // do we have a head = not really 
+        var ncols = 0;
+        Roo.each(this.rows, function( row ) {
+            var tr = {
+                tag: 'tr',
+                style : {
+                    margin: '6px',
+                    border : 'solid 1px #000',
+                    textAlign : 'left' 
+                },
+                cn : [ ]
+            };
+            
+            ret.cn[0].cn.push(tr);
+            // does the row have any properties? ?? height?
+            var nc = 0;
+            Roo.each(row, function( cell ) {
+                
+                var td = {
+                    tag : 'td',
+                    contenteditable :  'true',
+                    'data-block' : 'Td',
+                    html : cell.html,
+                    style : cell.style
+                };
+                if (cell.colspan > 1) {
+                    td.colspan = cell.colspan ;
+                    nc += cell.colspan;
+                } else {
+                    nc++;
+                }
+                if (cell.rowspan > 1) {
+                    td.rowspan = cell.rowspan ;
+                }
+                
+                
+                // widths ?
+                tr.cn.push(td);
+                    
+                
+            }, this);
+            ncols = Math.max(nc, ncols);
+            
+            
+        }, this);
+        // add the header row..
+        
+        ncols++;
+         
+        
+        return ret;
+         
+    },
+    
+    readElement : function(node)
+    {
+        node  = node ? node : this.node ;
+        this.width = this.getVal(node, true, 'style', 'width') || '100%';
+        
+        this.rows = [];
+        this.no_row = 0;
+        var trs = Array.from(node.rows);
+        trs.forEach(function(tr) {
+            var row =  [];
+            this.rows.push(row);
+            
+            this.no_row++;
+            var no_column = 0;
+            Array.from(tr.cells).forEach(function(td) {
+                
+                var add = {
+                    colspan : td.hasAttribute('colspan') ? td.getAttribute('colspan')*1 : 1,
+                    rowspan : td.hasAttribute('rowspan') ? td.getAttribute('rowspan')*1 : 1,
+                    style : td.hasAttribute('style') ? td.getAttribute('style') : '',
+                    html : td.innerHTML
+                };
+                no_column += add.colspan;
+                     
+                
+                row.push(add);
+                
+                
+            },this);
+            this.no_col = Math.max(this.no_col, no_column);
+            
+            
+        },this);
+        
+        
+    },
+    normalizeRows: function()
+    {
+        var ret= [];
+        var rid = -1;
+        this.rows.forEach(function(row) {
+            rid++;
+            ret[rid] = [];
+            row = this.normalizeRow(row);
+            var cid = 0;
+            row.forEach(function(c) {
+                while (typeof(ret[rid][cid]) != 'undefined') {
+                    cid++;
+                }
+                if (typeof(ret[rid]) == 'undefined') {
+                    ret[rid] = [];
+                }
+                ret[rid][cid] = c;
+                c.row = rid;
+                c.col = cid;
+                if (c.rowspan < 2) {
+                    return;
+                }
+                
+                for(var i = 1 ;i < c.rowspan; i++) {
+                    if (typeof(ret[rid+i]) == 'undefined') {
+                        ret[rid+i] = [];
+                    }
+                    ret[rid+i][cid] = c;
+                }
+            });
+        }, this);
+        return ret;
+    
+    },
+    
+    normalizeRow: function(row)
+    {
+        var ret= [];
+        row.forEach(function(c) {
+            if (c.colspan < 2) {
+                ret.push(c);
+                return;
+            }
+            for(var i =0 ;i < c.colspan; i++) {
+                ret.push(c);
+            }
+        });
+        return ret;
+    
+    },
+    
+    deleteColumn : function(sel)
+    {
+        if (!sel || sel.type != 'col') {
+            return;
+        }
+        if (this.no_col < 2) {
+            return;
+        }
+        
+        this.rows.forEach(function(row) {
+            var cols = this.normalizeRow(row);
+            var col = cols[sel.col];
+            if (col.colspan > 1) {
+                col.colspan --;
+            } else {
+                row.remove(col);
+            }
+            
+        }, this);
+        this.no_col--;
+        
+    },
+    removeColumn : function()
+    {
+        this.deleteColumn({
+            type: 'col',
+            col : this.no_col-1
+        });
+        this.updateElement();
+    },
+    
+     
+    addColumn : function()
+    {
+        
+        this.rows.forEach(function(row) {
+            row.push(this.emptyCell());
+           
+        }, this);
+        this.updateElement();
+    },
+    
+    deleteRow : function(sel)
+    {
+        if (!sel || sel.type != 'row') {
+            return;
+        }
+        
+        if (this.no_row < 2) {
+            return;
+        }
+        
+        var rows = this.normalizeRows();
+        
+        
+        rows[sel.row].forEach(function(col) {
+            if (col.rowspan > 1) {
+                col.rowspan--;
+            } else {
+                col.remove = 1; // flage it as removed.
+            }
+            
+        }, this);
+        var newrows = [];
+        this.rows.forEach(function(row) {
+            newrow = [];
+            row.forEach(function(c) {
+                if (typeof(c.remove) == 'undefined') {
+                    newrow.push(c);
+                }
+                
+            });
+            if (newrow.length > 0) {
+                newrows.push(row);
+            }
+        });
+        this.rows =  newrows;
+        
+        
+        
+        this.no_row--;
+        this.updateElement();
+        
+    },
+    removeRow : function()
+    {
+        this.deleteRow({
+            type: 'row',
+            row : this.no_row-1
+        });
+        
+    },
+    
+     
+    addRow : function()
+    {
+        
+        var row = [];
+        for (var i = 0; i < this.no_col; i++ ) {
+            
+            row.push(this.emptyCell());
+           
+        }
+        this.rows.push(row);
+        this.updateElement();
+        
+    },
+     
+    // the default cell object... at present...
+    emptyCell : function() {
+        return (new Roo.htmleditor.BlockTd({})).toObject();
+        
+     
+    },
+    
+    removeNode : function()
+    {
+        return this.node;
+    },
+    
+    
+    
+    resetWidths : function()
+    {
+        Array.from(this.node.getElementsByTagName('td')).forEach(function(n) {
+            var nn = Roo.htmleditor.Block.factory(n);
+            nn.width = '';
+            nn.updateElement(n);
+        });
+    }
+    
+    
+    
+    
+})
+
+/**
+ *
+ * editing a TD?
+ *
+ * since selections really work on the table cell, then editing really should work from there
+ *
+ * The original plan was to support merging etc... - but that may not be needed yet..
+ *
+ * So this simple version will support:
+ *   add/remove cols
+ *   adjust the width +/-
+ *   reset the width...
+ *   
+ *
+ */
+
+
+
+/**
+ * @class Roo.htmleditor.BlockTable
+ * Block that manages a table
+ * 
+ * @constructor
+ * Create a new Filter.
+ * @param {Object} config Configuration options
+ */
+
+Roo.htmleditor.BlockTd = function(cfg)
+{
+    if (cfg.node) {
+        this.readElement(cfg.node);
+        this.updateElement(cfg.node);
+    }
+    Roo.apply(this, cfg);
+     
+    
+    
+}
+Roo.extend(Roo.htmleditor.BlockTd, Roo.htmleditor.Block, {
+    node : false,
+    
+    width: '',
+    textAlign : 'left',
+    valign : 'top',
+    
+    colspan : 1,
+    rowspan : 1,
+    
+    
+    // used by context menu
+    friendly_name : 'Table Cell',
+    deleteTitle : false, // use our customer delete
+    
+    // context menu is drawn once..
+    
+    contextMenu : function(toolbar)
+    {
+        
+        var cell = function() {
+            return Roo.htmleditor.Block.factory(toolbar.tb.selectedNode);
+        };
+        
+        var table = function() {
+            return Roo.htmleditor.Block.factory(toolbar.tb.selectedNode.closest('table'));
+        };
+        
+        var lr = false;
+        var saveSel = function()
+        {
+            lr = toolbar.editorcore.getSelection().getRangeAt(0);
+        }
+        var restoreSel = function()
+        {
+            if (lr) {
+                (function() {
+                    toolbar.editorcore.focus();
+                    var cr = toolbar.editorcore.getSelection();
+                    cr.removeAllRanges();
+                    cr.addRange(lr);
+                    toolbar.editorcore.onEditorEvent();
+                }).defer(10, this);
+                
+                
+            }
+        }
+        
+        var rooui =  typeof(Roo.bootstrap) == 'undefined' ? Roo : Roo.bootstrap;
+        
+        var syncValue = toolbar.editorcore.syncValue;
+        
+        var fields = {};
+        
+        return [
+            {
+                xtype : 'Button',
+                text : 'Edit Table',
+                listeners : {
+                    click : function() {
+                        var t = toolbar.tb.selectedNode.closest('table');
+                        toolbar.editorcore.selectNode(t);
+                        toolbar.editorcore.onEditorEvent();                        
+                    }
+                }
+                
+            },
+              
+           
+             
+            {
+                xtype : 'TextItem',
+                text : "Column Width: ",
+                 xns : rooui.Toolbar 
+               
+            },
+            {
+                xtype : 'Button',
+                text: '-',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        cell().shrinkColumn();
+                        syncValue();
+                         toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'Button',
+                text: '+',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        cell().growColumn();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            
+            {
+                xtype : 'TextItem',
+                text : "Vertical Align: ",
+                xns : rooui.Toolbar  //Boostrap?
+            },
+            {
+                xtype : 'ComboBox',
+                allowBlank : false,
+                displayField : 'val',
+                editable : true,
+                listWidth : 100,
+                triggerAction : 'all',
+                typeAhead : true,
+                valueField : 'val',
+                width : 100,
+                name : 'valign',
+                listeners : {
+                    select : function (combo, r, index)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        var b = cell();
+                        b.valign = r.get('val');
+                        b.updateElement();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.form,
+                store : {
+                    xtype : 'SimpleStore',
+                    data : [
+                        ['top'],
+                        ['middle'],
+                        ['bottom'] // there are afew more... 
+                    ],
+                    fields : [ 'val'],
+                    xns : Roo.data
+                }
+            },
+            
+            {
+                xtype : 'TextItem',
+                text : "Merge Cells: ",
+                 xns : rooui.Toolbar 
+               
+            },
+            
+            
+            {
+                xtype : 'Button',
+                text: 'Right',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        cell().mergeRight();
+                        //block().growColumn();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+             
+            {
+                xtype : 'Button',
+                text: 'Below',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        cell().mergeBelow();
+                        //block().growColumn();
+                        syncValue();
+                        toolbar.editorcore.onEditorEvent();
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'TextItem',
+                text : "| ",
+                 xns : rooui.Toolbar 
+               
+            },
+            
+            {
+                xtype : 'Button',
+                text: 'Split',
+                listeners : {
+                    click : function (_self, e)
+                    {
+                        //toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        cell().split();
+                        syncValue();
+                        toolbar.editorcore.selectNode(toolbar.tb.selectedNode);
+                        toolbar.editorcore.onEditorEvent();
+                                             
+                    }
+                },
+                xns : rooui.Toolbar
+            },
+            {
+                xtype : 'Fill',
+                xns : rooui.Toolbar 
+               
+            },
+        
+          
+            {
+                xtype : 'Button',
+                text: 'Delete',
+                 
+                xns : rooui.Toolbar,
+                menu : {
+                    xtype : 'Menu',
+                    xns : rooui.menu,
+                    items : [
+                        {
+                            xtype : 'Item',
+                            html: 'Column',
+                            listeners : {
+                                click : function (_self, e)
+                                {
+                                    var t = table();
+                                    
+                                    cell().deleteColumn();
+                                    syncValue();
+                                    toolbar.editorcore.selectNode(t.node);
+                                    toolbar.editorcore.onEditorEvent();   
+                                }
+                            },
+                            xns : rooui.menu
+                        },
+                        {
+                            xtype : 'Item',
+                            html: 'Row',
+                            listeners : {
+                                click : function (_self, e)
+                                {
+                                    var t = table();
+                                    cell().deleteRow();
+                                    syncValue();
+                                    
+                                    toolbar.editorcore.selectNode(t.node);
+                                    toolbar.editorcore.onEditorEvent();   
+                                                         
+                                }
+                            },
+                            xns : rooui.menu
+                        },
+                       {
+                            xtype : 'Separator',
+                            xns : rooui.menu
+                        },
+                        {
+                            xtype : 'Item',
+                            html: 'Table',
+                            listeners : {
+                                click : function (_self, e)
+                                {
+                                    var t = table();
+                                    var nn = t.node.nextSibling || t.node.previousSibling;
+                                    t.node.parentNode.removeChild(t.node);
+                                    if (nn) { 
+                                        toolbar.editorcore.selectNode(nn, true);
+                                    }
+                                    toolbar.editorcore.onEditorEvent();   
+                                                         
+                                }
+                            },
+                            xns : rooui.menu
+                        }
+                    ]
+                }
+            }
+            
+            // align... << fixme
+            
+        ];
+        
+    },
+    
+    
+  /**
+     * create a DomHelper friendly object - for use with
+     * Roo.DomHelper.markup / overwrite / etc..
+     * ?? should it be called with option to hide all editing features?
+     */
+ /**
+     * create a DomHelper friendly object - for use with
+     * Roo.DomHelper.markup / overwrite / etc..
+     * ?? should it be called with option to hide all editing features?
+     */
+    toObject : function()
+    {
+        
+        var ret = {
+            tag : 'td',
+            contenteditable : 'true', // this stops cell selection from picking the table.
+            'data-block' : 'Td',
+            valign : this.valign,
+            style : {  
+                'text-align' :  this.textAlign,
+                border : 'solid 1px rgb(0, 0, 0)', // ??? hard coded?
+                'border-collapse' : 'collapse',
+                padding : '6px', // 8 for desktop / 4 for mobile
+                'vertical-align': this.valign
+            },
+            html : this.html
+        };
+        if (this.width != '') {
+            ret.width = this.width;
+            ret.style.width = this.width;
+        }
+        
+        
+        if (this.colspan > 1) {
+            ret.colspan = this.colspan ;
+        } 
+        if (this.rowspan > 1) {
+            ret.rowspan = this.rowspan ;
+        }
+        
+           
+        
+        return ret;
+         
+    },
+    
+    readElement : function(node)
+    {
+        node  = node ? node : this.node ;
+        this.width = node.style.width;
+        this.colspan = Math.max(1,1*node.getAttribute('colspan'));
+        this.rowspan = Math.max(1,1*node.getAttribute('rowspan'));
+        this.html = node.innerHTML;
+        
+        
+    },
+     
+    // the default cell object... at present...
+    emptyCell : function() {
+        return {
+            colspan :  1,
+            rowspan :  1,
+            textAlign : 'left',
+            html : "&nbsp;" // is this going to be editable now?
+        };
+     
+    },
+    
+    removeNode : function()
+    {
+        return this.node.closest('table');
+         
+    },
+    
+    cellData : false,
+    
+    colWidths : false,
+    
+    toTableArray  : function()
+    {
+        var ret = [];
+        var tab = this.node.closest('tr').closest('table');
+        Array.from(tab.rows).forEach(function(r, ri){
+            ret[ri] = [];
+        });
+        var rn = 0;
+        this.colWidths = [];
+        var all_auto = true;
+        Array.from(tab.rows).forEach(function(r, ri){
+            
+            var cn = 0;
+            Array.from(r.cells).forEach(function(ce, ci){
+                var c =  {
+                    cell : ce,
+                    row : rn,
+                    col: cn,
+                    colspan : ce.colSpan,
+                    rowspan : ce.rowSpan
+                };
+                if (ce.isEqualNode(this.node)) {
+                    this.cellData = c;
+                }
+                // if we have been filled up by a row?
+                if (typeof(ret[rn][cn]) != 'undefined') {
+                    while(typeof(ret[rn][cn]) != 'undefined') {
+                        cn++;
+                    }
+                    c.col = cn;
+                }
+                
+                if (typeof(this.colWidths[cn]) == 'undefined') {
+                    this.colWidths[cn] =   ce.style.width;
+                    if (this.colWidths[cn] != '') {
+                        all_auto = false;
+                    }
+                }
+                
+                
+                if (c.colspan < 2 && c.rowspan < 2 ) {
+                    ret[rn][cn] = c;
+                    cn++;
+                    return;
+                }
+                for(var j = 0; j < c.rowspan; j++) {
+                    if (typeof(ret[rn+j]) == 'undefined') {
+                        continue; // we have a problem..
+                    }
+                    ret[rn+j][cn] = c;
+                    for(var i = 0; i < c.colspan; i++) {
+                        ret[rn+j][cn+i] = c;
+                    }
+                }
+                
+                cn += c.colspan;
+            }, this);
+            rn++;
+        }, this);
+        
+        // initalize widths.?
+        // either all widths or no widths..
+        if (all_auto) {
+            this.colWidths[0] = false; // no widths flag.
+        }
+        
+        
+        return ret;
+        
+    },
+    
+    
+    
+    
+    mergeRight: function()
+    {
+         
+        // get the contents of the next cell along..
+        var tr = this.node.closest('tr');
+        var i = Array.prototype.indexOf.call(tr.childNodes, this.node);
+        if (i >= tr.childNodes.length - 1) {
+            return; // no cells on right to merge with.
+        }
+        var table = this.toTableArray();
+        
+        if (typeof(table[this.cellData.row][this.cellData.col+this.cellData.colspan]) == 'undefined') {
+            return; // nothing right?
+        }
+        var rc = table[this.cellData.row][this.cellData.col+this.cellData.colspan];
+        // right cell - must be same rowspan and on the same row.
+        if (rc.rowspan != this.cellData.rowspan || rc.row != this.cellData.row) {
+            return; // right hand side is not same rowspan.
+        }
+        
+        
+        
+        this.node.innerHTML += ' ' + rc.cell.innerHTML;
+        tr.removeChild(rc.cell);
+        this.colspan += rc.colspan;
+        this.node.setAttribute('colspan', this.colspan);
+
+    },
+    
+    
+    mergeBelow : function()
+    {
+        var table = this.toTableArray();
+        if (typeof(table[this.cellData.row+this.cellData.rowspan]) == 'undefined') {
+            return; // no row below
+        }
+        if (typeof(table[this.cellData.row+this.cellData.rowspan][this.cellData.col]) == 'undefined') {
+            return; // nothing right?
+        }
+        var rc = table[this.cellData.row+this.cellData.rowspan][this.cellData.col];
+        
+        if (rc.colspan != this.cellData.colspan || rc.col != this.cellData.col) {
+            return; // right hand side is not same rowspan.
+        }
+        this.node.innerHTML =  this.node.innerHTML + rc.cell.innerHTML ;
+        rc.cell.parentNode.removeChild(rc.cell);
+        this.rowspan += rc.rowspan;
+        this.node.setAttribute('rowspan', this.rowspan);
+    },
+    
+    split: function()
+    {
+        if (this.node.rowSpan < 2 && this.node.colSpan < 2) {
+            return;
+        }
+        var table = this.toTableArray();
+        var cd = this.cellData;
+        this.rowspan = 1;
+        this.colspan = 1;
+        
+        for(var r = cd.row; r < cd.row + cd.rowspan; r++) {
+            
+            
+            
+            for(var c = cd.col; c < cd.col + cd.colspan; c++) {
+                if (r == cd.row && c == cd.col) {
+                    this.node.removeAttribute('rowspan');
+                    this.node.removeAttribute('colspan');
+                    continue;
+                }
+                 
+                var ntd = this.node.cloneNode(); // which col/row should be 0..
+                ntd.removeAttribute('id'); //
+                //ntd.style.width  = '';
+                ntd.innerHTML = '';
+                table[r][c] = { cell : ntd, col : c, row: r , colspan : 1 , rowspan : 1   };
+            }
+            
+        }
+        this.redrawAllCells(table);
+        
+         
+        
+    },
+    
+    
+    
+    redrawAllCells: function(table)
+    {
+        
+         
+        var tab = this.node.closest('tr').closest('table');
+        var ctr = tab.rows[0].parentNode;
+        Array.from(tab.rows).forEach(function(r, ri){
+            
+            Array.from(r.cells).forEach(function(ce, ci){
+                ce.parentNode.removeChild(ce);
+            });
+            r.parentNode.removeChild(r);
+        });
+        for(var r = 0 ; r < table.length; r++) {
+            var re = tab.rows[r];
+            
+            var re = tab.ownerDocument.createElement('tr');
+            ctr.appendChild(re);
+            for(var c = 0 ; c < table[r].length; c++) {
+                if (table[r][c].cell === false) {
+                    continue;
+                }
+                
+                re.appendChild(table[r][c].cell);
+                 
+                table[r][c].cell = false;
+            }
+        }
+        
+    },
+    updateWidths : function(table)
+    {
+        for(var r = 0 ; r < table.length; r++) {
+           
+            for(var c = 0 ; c < table[r].length; c++) {
+                if (table[r][c].cell === false) {
+                    continue;
+                }
+                
+                if (this.colWidths[0] != false && table[r][c].colspan < 2) {
+                    var el = Roo.htmleditor.Block.factory(table[r][c].cell);
+                    el.width = Math.floor(this.colWidths[c])  +'%';
+                    el.updateElement(el.node);
+                }
+                table[r][c].cell = false; // done
+            }
+        }
+    },
+    normalizeWidths : function(table)
+    {
+    
+        if (this.colWidths[0] === false) {
+            var nw = 100.0 / this.colWidths.length;
+            this.colWidths.forEach(function(w,i) {
+                this.colWidths[i] = nw;
+            },this);
+            return;
+        }
+    
+        var t = 0, missing = [];
+        
+        this.colWidths.forEach(function(w,i) {
+            //if you mix % and
+            this.colWidths[i] = this.colWidths[i] == '' ? 0 : (this.colWidths[i]+'').replace(/[^0-9]+/g,'')*1;
+            var add =  this.colWidths[i];
+            if (add > 0) {
+                t+=add;
+                return;
+            }
+            missing.push(i);
+            
+            
+        },this);
+        var nc = this.colWidths.length;
+        if (missing.length) {
+            var mult = (nc - missing.length) / (1.0 * nc);
+            var t = mult * t;
+            var ew = (100 -t) / (1.0 * missing.length);
+            this.colWidths.forEach(function(w,i) {
+                if (w > 0) {
+                    this.colWidths[i] = w * mult;
+                    return;
+                }
+                
+                this.colWidths[i] = ew;
+            }, this);
+            // have to make up numbers..
+             
+        }
+        // now we should have all the widths..
+        
+    
+    },
+    
+    shrinkColumn : function()
+    {
+        var table = this.toTableArray();
+        this.normalizeWidths(table);
+        var col = this.cellData.col;
+        var nw = this.colWidths[col] * 0.8;
+        if (nw < 5) {
+            return;
+        }
+        var otherAdd = (this.colWidths[col]  * 0.2) / (this.colWidths.length -1);
+        this.colWidths.forEach(function(w,i) {
+            if (i == col) {
+                 this.colWidths[i] = nw;
+                return;
+            }
+            this.colWidths[i] += otherAdd
+        }, this);
+        this.updateWidths(table);
+         
+    },
+    growColumn : function()
+    {
+        var table = this.toTableArray();
+        this.normalizeWidths(table);
+        var col = this.cellData.col;
+        var nw = this.colWidths[col] * 1.2;
+        if (nw > 90) {
+            return;
+        }
+        var otherSub = (this.colWidths[col]  * 0.2) / (this.colWidths.length -1);
+        this.colWidths.forEach(function(w,i) {
+            if (i == col) {
+                this.colWidths[i] = nw;
+                return;
+            }
+            this.colWidths[i] -= otherSub
+        }, this);
+        this.updateWidths(table);
+         
+    },
+    deleteRow : function()
+    {
+        // delete this rows 'tr'
+        // if any of the cells in this row have a rowspan > 1 && row!= this row..
+        // then reduce the rowspan.
+        var table = this.toTableArray();
+        // this.cellData.row;
+        for (var i =0;i< table[this.cellData.row].length ; i++) {
+            var c = table[this.cellData.row][i];
+            if (c.row != this.cellData.row) {
+                
+                c.rowspan--;
+                c.cell.setAttribute('rowspan', c.rowspan);
+                continue;
+            }
+            if (c.rowspan > 1) {
+                c.rowspan--;
+                c.cell.setAttribute('rowspan', c.rowspan);
+            }
+        }
+        table.splice(this.cellData.row,1);
+        this.redrawAllCells(table);
+        
+    },
+    deleteColumn : function()
+    {
+        var table = this.toTableArray();
+        
+        for (var i =0;i< table.length ; i++) {
+            var c = table[i][this.cellData.col];
+            if (c.col != this.cellData.col) {
+                table[i][this.cellData.col].colspan--;
+            } else if (c.colspan > 1) {
+                c.colspan--;
+                c.cell.setAttribute('colspan', c.colspan);
+            }
+            table[i].splice(this.cellData.col,1);
+        }
+        
+        this.redrawAllCells(table);
+    }
+    
+    
+    
+    
+})
+
+//<script type="text/javascript">
+
+/*
+ * Based  Ext JS Library 1.1.1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ * LGPL
+ *
+ */
+/**
+ * @class Roo.HtmlEditorCore
+ * @extends Roo.Component
+ * Provides a the editing component for the HTML editors in Roo. (bootstrap and Roo.form)
+ *
+ * any element that has display set to 'none' can cause problems in Safari and Firefox.<br/><br/>
+ */
+
+Roo.HtmlEditorCore = function(config){
+    
+    
+    Roo.HtmlEditorCore.superclass.constructor.call(this, config);
+    
+    
+    this.addEvents({
+        /**
+         * @event initialize
+         * Fires when the editor is fully initialized (including the iframe)
+         * @param {Roo.HtmlEditorCore} this
+         */
+        initialize: true,
+        /**
+         * @event activate
+         * Fires when the editor is first receives the focus. Any insertion must wait
+         * until after this event.
+         * @param {Roo.HtmlEditorCore} this
+         */
+        activate: true,
+         /**
+         * @event beforesync
+         * Fires before the textarea is updated with content from the editor iframe. Return false
+         * to cancel the sync.
+         * @param {Roo.HtmlEditorCore} this
+         * @param {String} html
+         */
+        beforesync: true,
+         /**
+         * @event beforepush
+         * Fires before the iframe editor is updated with content from the textarea. Return false
+         * to cancel the push.
+         * @param {Roo.HtmlEditorCore} this
+         * @param {String} html
+         */
+        beforepush: true,
+         /**
+         * @event sync
+         * Fires when the textarea is updated with content from the editor iframe.
+         * @param {Roo.HtmlEditorCore} this
+         * @param {String} html
+         */
+        sync: true,
+         /**
+         * @event push
+         * Fires when the iframe editor is updated with content from the textarea.
+         * @param {Roo.HtmlEditorCore} this
+         * @param {String} html
+         */
+        push: true,
+        
+        /**
+         * @event editorevent
+         * Fires when on any editor (mouse up/down cursor movement etc.) - used for toolbar hooks.
+         * @param {Roo.HtmlEditorCore} this
+         */
+        editorevent: true 
+         
+        
+    });
+    
+    // at this point this.owner is set, so we can start working out the whitelisted / blacklisted elements
+    
+    // defaults : white / black...
+    this.applyBlacklists();
+    
+    
+    
+};
+
+
+Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
+
+
+     /**
+     * @cfg {Roo.form.HtmlEditor|Roo.bootstrap.HtmlEditor} the owner field 
+     */
+    
+    owner : false,
+    
+     /**
+     * @cfg {String} resizable  's' or 'se' or 'e' - wrapps the element in a
+     *                        Roo.resizable.
+     */
+    resizable : false,
+     /**
+     * @cfg {Number} height (in pixels)
+     */   
+    height: 300,
+   /**
+     * @cfg {Number} width (in pixels)
+     */   
+    width: 500,
+     /**
+     * @cfg {boolean} autoClean - default true - loading and saving will remove quite a bit of formating,
+     *         if you are doing an email editor, this probably needs disabling, it's designed
+     */
+    autoClean: true,
+    
+    /**
+     * @cfg {boolean} enableBlocks - default true - if the block editor (table and figure should be enabled)
+     */
+    enableBlocks : true,
+    /**
+     * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets.
+     * 
+     */
+    stylesheets: false,
+     /**
+     * @cfg {String} language default en - language of text (usefull for rtl languages)
+     * 
+     */
+    language: 'en',
+    
+    /**
+     * @cfg {boolean} allowComments - default false - allow comments in HTML source
+     *          - by default they are stripped - if you are editing email you may need this.
+     */
+    allowComments: false,
+    // id of frame..
+    frameId: false,
+    
+    // private properties
+    validationEvent : false,
+    deferHeight: true,
+    initialized : false,
+    activated : false,
+    sourceEditMode : false,
+    onFocus : Roo.emptyFn,
+    iframePad:3,
+    hideMode:'offsets',
+    
+    clearUp: true,
+    
+    // blacklist + whitelisted elements..
+    black: false,
+    white: false,
+     
+    bodyCls : '',
+
+    
+    undoManager : false,
+    /**
+     * Protected method that will not generally be called directly. It
+     * is called when the editor initializes the iframe with HTML contents. Override this method if you
+     * want to change the initialization markup of the iframe (e.g. to add stylesheets).
+     */
+    getDocMarkup : function(){
+        // body styles..
+        var st = '';
+        
+        // inherit styels from page...?? 
+        if (this.stylesheets === false) {
+            
+            Roo.get(document.head).select('style').each(function(node) {
+                st += node.dom.outerHTML || new XMLSerializer().serializeToString(node.dom);
+            });
+            
+            Roo.get(document.head).select('link').each(function(node) { 
+                st += node.dom.outerHTML || new XMLSerializer().serializeToString(node.dom);
+            });
+            
+        } else if (!this.stylesheets.length) {
+                // simple..
+                st = '<style type="text/css">' +
+                    'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
+                   '</style>';
+        } else {
+            for (var i in this.stylesheets) {
+                if (typeof(this.stylesheets[i]) != 'string') {
+                    continue;
+                }
+                st += '<link rel="stylesheet" href="' + this.stylesheets[i] +'" type="text/css">';
+            }
+            
+        }
+        
+        st +=  '<style type="text/css">' +
+            'IMG { cursor: pointer } ' +
+        '</style>';
+        
+        st += '<meta name="google" content="notranslate">';
+        
+        var cls = 'notranslate roo-htmleditor-body';
+        
+        if(this.bodyCls.length){
+            cls += ' ' + this.bodyCls;
+        }
+        
+        return '<html  class="notranslate" translate="no"><head>' + st  +
+            //<style type="text/css">' +
+            //'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}' +
+            //'</style>' +
+            ' </head><body contenteditable="true" data-enable-grammerly="true" class="' +  cls + '"></body></html>';
+    },
+
+    // private
+    onRender : function(ct, position)
+    {
+        var _t = this;
+        //Roo.HtmlEditorCore.superclass.onRender.call(this, ct, position);
+        this.el = this.owner.inputEl ? this.owner.inputEl() : this.owner.el;
+        
+        
+        this.el.dom.style.border = '0 none';
+        this.el.dom.setAttribute('tabIndex', -1);
+        this.el.addClass('x-hidden hide');
+        
+        
+        
+        if(Roo.isIE){ // fix IE 1px bogus margin
+            this.el.applyStyles('margin-top:-1px;margin-bottom:-1px;')
+        }
+       
+        
+        this.frameId = Roo.id();
+        
+         
+        
+        var iframe = this.owner.wrap.createChild({
+            tag: 'iframe',
+            cls: 'form-control', // bootstrap..
+            id: this.frameId,
+            name: this.frameId,
+            frameBorder : 'no',
+            'src' : Roo.SSL_SECURE_URL ? Roo.SSL_SECURE_URL  :  "javascript:false"
+        }, this.el
+        );
+        
+        
+        this.iframe = iframe.dom;
+
+        this.assignDocWin();
+        
+        this.doc.designMode = 'on';
+       
+        this.doc.open();
+        this.doc.write(this.getDocMarkup());
+        this.doc.close();
+
+        
+        var task = { // must defer to wait for browser to be ready
+            run : function(){
+                //console.log("run task?" + this.doc.readyState);
+                this.assignDocWin();
+                if(this.doc.body || this.doc.readyState == 'complete'){
+                    try {
+                        this.doc.designMode="on";
+                        
+                    } catch (e) {
+                        return;
+                    }
+                    Roo.TaskMgr.stop(task);
+                    this.initEditor.defer(10, this);
+                }
+            },
+            interval : 10,
+            duration: 10000,
+            scope: this
+        };
+        Roo.TaskMgr.start(task);
+
+    },
+
+    // private
+    onResize : function(w, h)
+    {
+         Roo.log('resize: ' +w + ',' + h );
+        //Roo.HtmlEditorCore.superclass.onResize.apply(this, arguments);
+        if(!this.iframe){
+            return;
+        }
+        if(typeof w == 'number'){
+            
+            this.iframe.style.width = w + 'px';
+        }
+        if(typeof h == 'number'){
+            
+            this.iframe.style.height = h + 'px';
+            if(this.doc){
+                (this.doc.body || this.doc.documentElement).style.height = (h - (this.iframePad*2)) + 'px';
+            }
+        }
+        
+    },
+
+    /**
+     * Toggles the editor between standard and source edit mode.
+     * @param {Boolean} sourceEdit (optional) True for source edit, false for standard
+     */
+    toggleSourceEdit : function(sourceEditMode){
+        
+        this.sourceEditMode = sourceEditMode === true;
+        
+        if(this.sourceEditMode){
+            Roo.get(this.iframe).addClass(['x-hidden','hide', 'd-none']);     //FIXME - what's the BS styles for these
+            
+        }else{
+            Roo.get(this.iframe).removeClass(['x-hidden','hide', 'd-none']);
+            //this.iframe.className = '';
+            this.deferFocus();
+        }
+        //this.setSize(this.owner.wrap.getSize());
+        //this.fireEvent('editmodechange', this, this.sourceEditMode);
+    },
+
+    
+  
+
+    /**
+     * Protected method that will not generally be called directly. If you need/want
+     * custom HTML cleanup, this is the method you should override.
+     * @param {String} html The HTML to be cleaned
+     * return {String} The cleaned HTML
+     */
+    cleanHtml : function(html)
+    {
+        html = String(html);
+        if(html.length > 5){
+            if(Roo.isSafari){ // strip safari nonsense
+                html = html.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi, '');
+            }
+        }
+        if(html == '&nbsp;'){
+            html = '';
+        }
+        return html;
+    },
+
+    /**
+     * HTML Editor -> Textarea
+     * Protected method that will not generally be called directly. Syncs the contents
+     * of the editor iframe with the textarea.
+     */
+    syncValue : function()
+    {
+        //Roo.log("HtmlEditorCore:syncValue (EDITOR->TEXT)");
+        if(this.initialized){
+            
+            this.undoManager.addEvent();
+
+            
+            var bd = (this.doc.body || this.doc.documentElement);
+           
+            
+            var sel = this.win.getSelection();
+            
+            var div = document.createElement('div');
+            div.innerHTML = bd.innerHTML;
+            var gtx = div.getElementsByClassName('gtx-trans-icon'); // google translate - really annoying and difficult to get rid of.
+            if (gtx.length > 0) {
+                var rm = gtx.item(0).parentNode;
+                rm.parentNode.removeChild(rm);
+            }
+            
+           
+            if (this.enableBlocks) {
+                new Roo.htmleditor.FilterBlock({ node : div });
+            }
+            //?? tidy?
+            var tidy = new Roo.htmleditor.TidySerializer({
+                inner:  true
+            });
+            var html  = tidy.serialize(div);
+            
+            
+            if(Roo.isSafari){
+                var bs = bd.getAttribute('style'); // Safari puts text-align styles on the body element!
+                var m = bs ? bs.match(/text-align:(.*?);/i) : false;
+                if(m && m[1]){
+                    html = '<div style="'+m[0]+'">' + html + '</div>';
+                }
+            }
+            html = this.cleanHtml(html);
+            // fix up the special chars.. normaly like back quotes in word...
+            // however we do not want to do this with chinese..
+            html = html.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u0080-\uFFFF]/g, function(match) {
+                
+                var cc = match.charCodeAt();
+
+                // Get the character value, handling surrogate pairs
+                if (match.length == 2) {
+                    // It's a surrogate pair, calculate the Unicode code point
+                    var high = match.charCodeAt(0) - 0xD800;
+                    var low  = match.charCodeAt(1) - 0xDC00;
+                    cc = (high * 0x400) + low + 0x10000;
+                }  else if (
+                    (cc >= 0x4E00 && cc < 0xA000 ) ||
+                    (cc >= 0x3400 && cc < 0x4E00 ) ||
+                    (cc >= 0xf900 && cc < 0xfb00 )
+                ) {
+                        return match;
+                }  
+         
+                // No, use a numeric entity. Here we brazenly (and possibly mistakenly)
+                return "&#" + cc + ";";
+                
+                
+            });
+            
+            
+             
+            if(this.owner.fireEvent('beforesync', this, html) !== false){
+                this.el.dom.value = html;
+                this.owner.fireEvent('sync', this, html);
+            }
+        }
+    },
+
+    /**
+     * TEXTAREA -> EDITABLE
+     * Protected method that will not generally be called directly. Pushes the value of the textarea
+     * into the iframe editor.
+     */
+    pushValue : function()
+    {
+        //Roo.log("HtmlEditorCore:pushValue (TEXT->EDITOR)");
+        if(this.initialized){
+            var v = this.el.dom.value.trim();
+            
+            
+            if(this.owner.fireEvent('beforepush', this, v) !== false){
+                var d = (this.doc.body || this.doc.documentElement);
+                d.innerHTML = v;
+                 
+                this.el.dom.value = d.innerHTML;
+                this.owner.fireEvent('push', this, v);
+            }
+            if (this.autoClean) {
+                new Roo.htmleditor.FilterParagraph({node : this.doc.body}); // paragraphs
+                new Roo.htmleditor.FilterSpan({node : this.doc.body}); // empty spans
+            }
+            if (this.enableBlocks) {
+                Roo.htmleditor.Block.initAll(this.doc.body);
+            }
+            
+            this.updateLanguage();
+            
+            var lc = this.doc.body.lastChild;
+            if (lc && lc.nodeType == 1 && lc.getAttribute("contenteditable") == "false") {
+                // add an extra line at the end.
+                this.doc.body.appendChild(this.doc.createElement('br'));
+            }
+            
+            
+        }
+    },
+
+    // private
+    deferFocus : function(){
+        this.focus.defer(10, this);
+    },
+
+    // doc'ed in Field
+    focus : function(){
+        if(this.win && !this.sourceEditMode){
+            this.win.focus();
+        }else{
+            this.el.focus();
+        }
+    },
+    
+    assignDocWin: function()
+    {
+        var iframe = this.iframe;
+        
+         if(Roo.isIE){
+            this.doc = iframe.contentWindow.document;
+            this.win = iframe.contentWindow;
+        } else {
+//            if (!Roo.get(this.frameId)) {
+//                return;
+//            }
+//            this.doc = (iframe.contentDocument || Roo.get(this.frameId).dom.document);
+//            this.win = Roo.get(this.frameId).dom.contentWindow;
+            
+            if (!Roo.get(this.frameId) && !iframe.contentDocument) {
+                return;
+            }
+            
+            this.doc = (iframe.contentDocument || Roo.get(this.frameId).dom.document);
+            this.win = (iframe.contentWindow || Roo.get(this.frameId).dom.contentWindow);
+        }
+    },
+    
+    // private
+    initEditor : function(){
+        //console.log("INIT EDITOR");
+        this.assignDocWin();
+        
         
         
         this.doc.designMode="on";
@@ -20996,28 +25491,136 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         //var ss = this.el.getStyles( 'background-image', 'background-repeat');
         //ss['background-attachment'] = 'fixed'; // w3c
         dbody.bgProperties = 'fixed'; // ie
+        dbody.setAttribute("translate", "no");
+        
         //Roo.DomHelper.applyStyles(dbody, ss);
         Roo.EventManager.on(this.doc, {
-            //'mousedown': this.onEditorEvent,
+             
             'mouseup': this.onEditorEvent,
             'dblclick': this.onEditorEvent,
             'click': this.onEditorEvent,
             'keyup': this.onEditorEvent,
+            
             buffer:100,
             scope: this
         });
+        Roo.EventManager.on(this.doc, {
+            'paste': this.onPasteEvent,
+            scope : this
+        });
         if(Roo.isGecko){
             Roo.EventManager.on(this.doc, 'keypress', this.mozKeyPress, this);
         }
+        //??? needed???
         if(Roo.isIE || Roo.isSafari || Roo.isOpera){
             Roo.EventManager.on(this.doc, 'keydown', this.fixKeys, this);
         }
         this.initialized = true;
 
+        
+        // initialize special key events - enter
+        new Roo.htmleditor.KeyEnter({core : this});
+        
+         
+        
         this.owner.fireEvent('initialize', this);
         this.pushValue();
     },
-
+    // this is to prevent a href clicks resulting in a redirect?
+   
+    onPasteEvent : function(e,v)
+    {
+        // I think we better assume paste is going to be a dirty load of rubish from word..
+        
+        // even pasting into a 'email version' of this widget will have to clean up that mess.
+        var cd = (e.browserEvent.clipboardData || window.clipboardData);
+        
+        // check what type of paste - if it's an image, then handle it differently.
+        if (cd.files.length > 0) {
+            // pasting images?
+            var urlAPI = (window.createObjectURL && window) || 
+                (window.URL && URL.revokeObjectURL && URL) || 
+                (window.webkitURL && webkitURL);
+    
+            var url = urlAPI.createObjectURL( cd.files[0]);
+            this.insertAtCursor('<img src=" + url + ">');
+            return false;
+        }
+        
+        var html = cd.getData('text/html'); // clipboard event
+        var parser = new Roo.rtf.Parser(cd.getData('text/rtf'));
+        var images = parser.doc ? parser.doc.getElementsByType('pict') : [];
+        Roo.log(images);
+        //Roo.log(imgs);
+        // fixme..
+        images = images.filter(function(g) { return !g.path.match(/^rtf\/(head|pgdsctbl|listtable)/); }) // ignore headers
+                       .map(function(g) { return g.toDataURL(); })
+                       .filter(function(g) { return g != 'about:blank'; });
+        
+        
+        html = this.cleanWordChars(html);
+        
+        var d = (new DOMParser().parseFromString(html, 'text/html')).body;
+        
+        
+        var sn = this.getParentElement();
+        // check if d contains a table, and prevent nesting??
+        //Roo.log(d.getElementsByTagName('table'));
+        //Roo.log(sn);
+        //Roo.log(sn.closest('table'));
+        if (d.getElementsByTagName('table').length && sn && sn.closest('table')) {
+            e.preventDefault();
+            this.insertAtCursor("You can not nest tables");
+            //Roo.log("prevent?"); // fixme - 
+            return false;
+        }
+        
+        if (images.length > 0) {
+            Roo.each(d.getElementsByTagName('img'), function(img, i) {
+                img.setAttribute('src', images[i]);
+            });
+        }
+        if (this.autoClean) {
+            new Roo.htmleditor.FilterStyleToTag({ node : d });
+            new Roo.htmleditor.FilterAttributes({
+                node : d,
+                attrib_white : ['href', 'src', 'name', 'align'],
+                attrib_clean : ['href', 'src' ] 
+            });
+            new Roo.htmleditor.FilterBlack({ node : d, tag : this.black});
+            // should be fonts..
+            new Roo.htmleditor.FilterKeepChildren({node : d, tag : [ 'FONT', 'O:P' ]} );
+            new Roo.htmleditor.FilterParagraph({ node : d });
+            new Roo.htmleditor.FilterSpan({ node : d });
+            new Roo.htmleditor.FilterLongBr({ node : d });
+        }
+        if (this.enableBlocks) {
+                
+            Array.from(d.getElementsByTagName('img')).forEach(function(img) {
+                if (img.closest('figure')) { // assume!! that it's aready
+                    return;
+                }
+                var fig  = new Roo.htmleditor.BlockFigure({
+                    image_src  : img.src
+                });
+                fig.updateElement(img); // replace it..
+                
+            });
+        }
+        
+        
+        this.insertAtCursor(d.innerHTML.replace(/&nbsp;/g,' '));
+        if (this.enableBlocks) {
+            Roo.htmleditor.Block.initAll(this.doc.body);
+        }
+        
+        
+        e.preventDefault();
+        return false;
+        // default behaveiour should be our local cleanup paste? (optional?)
+        // for simple editor - we want to hammer the paste and get rid of everything... - so over-rideable..
+        //this.owner.fireEvent('paste', e, v);
+    },
     // private
     onDestroy : function(){
         
@@ -21039,7 +25642,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
     onFirstFocus : function(){
         
         this.assignDocWin();
-        
+        this.undoManager = new Roo.lib.UndoManager(100,(this.doc.body || this.doc.documentElement));
         
         this.activated = true;
          
@@ -21084,10 +25687,48 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
 
     onEditorEvent : function(e)
     {
-        this.owner.fireEvent('editorevent', this, e);
+         
+        
+        if (e && (e.ctrlKey || e.metaKey) && e.keyCode === 90) {
+            return; // we do not handle this.. (undo manager does..)
+        }
+        // in theory this detects if the last element is not a br, then we try and do that.
+        // its so clicking in space at bottom triggers adding a br and moving the cursor.
+        if (e &&
+            e.target.nodeName == 'BODY' &&
+            e.type == "mouseup" &&
+            this.doc.body.lastChild
+           ) {
+            var lc = this.doc.body.lastChild;
+            // gtx-trans is google translate plugin adding crap.
+            while ((lc.nodeType == 3 && lc.nodeValue == '') || lc.id == 'gtx-trans') {
+                lc = lc.previousSibling;
+            }
+            if (lc.nodeType == 1 && lc.nodeName != 'BR') {
+            // if last element is <BR> - then dont do anything.
+            
+                var ns = this.doc.createElement('br');
+                this.doc.body.appendChild(ns);
+                range = this.doc.createRange();
+                range.setStartAfter(ns);
+                range.collapse(true);
+                var sel = this.win.getSelection();
+                sel.removeAllRanges();
+                sel.addRange(range);
+            }
+        }
+        
+        
+        
+        this.fireEditorEvent(e);
       //  this.updateToolbar();
         this.syncValue(); //we can not sync so often.. sync cleans, so this breaks stuff
     },
+    
+    fireEditorEvent: function(e)
+    {
+        this.owner.fireEvent('editorevent', this, e);
+    },
 
     insertTag : function(tg)
     {
@@ -21109,7 +25750,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
             
         }
         this.execCmd("formatblock",   tg);
-        
+        this.undoManager.addEvent(); 
     },
     
     insertText : function(txt)
@@ -21121,6 +25762,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                //alert(Sender.getAttribute('label'));
                
         range.insertNode(this.doc.createTextNode(txt));
+        this.undoManager.addEvent();
     } ,
     
      
@@ -21131,7 +25773,37 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
      * @param {String} cmd The Midas command
      * @param {String/Boolean} value (optional) The value to pass to the command (defaults to null)
      */
-    relayCmd : function(cmd, value){
+    relayCmd : function(cmd, value)
+    {
+        
+        switch (cmd) {
+            case 'justifyleft':
+            case 'justifyright':
+            case 'justifycenter':
+                // if we are in a cell, then we will adjust the
+                var n = this.getParentElement();
+                var td = n.closest('td');
+                if (td) {
+                    var bl = Roo.htmleditor.Block.factory(td);
+                    bl.textAlign = cmd.replace('justify','');
+                    bl.updateElement();
+                    this.owner.fireEvent('editorevent', this);
+                    return;
+                }
+                this.execCmd('styleWithCSS', true); // 
+                break;
+            case 'bold':
+            case 'italic':
+                // if there is no selection, then we insert, and set the curson inside it..
+                this.execCmd('styleWithCSS', false); 
+                break;
+                
+        
+            default:
+                break;
+        }
+        
+        
         this.win.focus();
         this.execCmd(cmd, value);
         this.owner.fireEvent('editorevent', this);
@@ -21164,20 +25836,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         if(!this.activated){
             return;
         }
-        /*
-        if(Roo.isIE){
-            this.win.focus();
-            var r = this.doc.selection.createRange();
-            if(r){
-                r.collapse(true);
-                r.pasteHTML(text);
-                this.syncValue();
-                this.deferFocus();
-            
-            }
-            return;
-        }
-        */
+         
         if(Roo.isGecko || Roo.isOpera || Roo.isSafari){
             this.win.focus();
             
@@ -21187,19 +25846,31 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
             var win = this.win;
             
             if (win.getSelection && win.getSelection().getRangeAt) {
+                
+                // delete the existing?
+                
+                this.createRange(this.getSelection()).deleteContents();
                 range = win.getSelection().getRangeAt(0);
                 node = typeof(text) == 'string' ? range.createContextualFragment(text) : text;
                 range.insertNode(node);
+                range = range.cloneRange();
+                range.collapse(false);
+                 
+                win.getSelection().removeAllRanges();
+                win.getSelection().addRange(range);
+                
+                
+                
             } else if (win.document.selection && win.document.selection.createRange) {
                 // no firefox support
                 var txt = typeof(text) == 'string' ? text : text.outerHTML;
                 win.document.selection.createRange().pasteHTML(txt);
+            
             } else {
                 // no firefox support
                 var txt = typeof(text) == 'string' ? text : text.outerHTML;
                 this.execCmd('InsertHTML', txt);
             } 
-            
             this.syncValue();
             
             this.deferFocus();
@@ -21224,15 +25895,17 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                         cmd = 'underline';
                         break;
                     
-                    case 'v':
-                        this.cleanUpPaste.defer(100, this);
-                        return;
+                    //case 'v':
+                      //  this.cleanUpPaste.defer(100, this);
+                      //  return;
                         
                 }
                 if(cmd){
-                    this.win.focus();
-                    this.execCmd(cmd);
-                    this.deferFocus();
+                    
+                    this.relayCmd(cmd);
+                    //this.win.focus();
+                    //this.execCmd(cmd);
+                    //this.deferFocus();
                     e.preventDefault();
                 }
                 
@@ -21242,6 +25915,8 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
 
     // private
     fixKeys : function(){ // load time branching for fastest keydown performance
+        
+        
         if(Roo.isIE){
             return function(e){
                 var k = e.getKey(), r;
@@ -21255,23 +25930,25 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                     }
                     return;
                 }
-                
+                /// this is handled by Roo.htmleditor.KeyEnter
+                 /*
                 if(k == e.ENTER){
                     r = this.doc.selection.createRange();
                     if(r){
                         var target = r.parentElement();
                         if(!target || target.tagName.toLowerCase() != 'li'){
                             e.stopEvent();
-                            r.pasteHTML('<br />');
+                            r.pasteHTML('<br/>');
                             r.collapse(false);
                             r.select();
                         }
                     }
                 }
-                if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
-                    this.cleanUpPaste.defer(100, this);
-                    return;
-                }
+                */
+                //if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
+                //    this.cleanUpPaste.defer(100, this);
+                //    return;
+                //}
                 
                 
             };
@@ -21284,10 +25961,11 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                     this.execCmd('InsertHTML','&#160;&#160;&#160;&#160;');
                     this.deferFocus();
                 }
-                if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
-                    this.cleanUpPaste.defer(100, this);
-                    return;
-                }
+               
+                //if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
+                //    this.cleanUpPaste.defer(100, this);
+                 //   return;
+                //}
                 
             };
         }else if(Roo.isSafari){
@@ -21300,10 +25978,12 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
                     this.deferFocus();
                     return;
                 }
-               if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
-                    this.cleanUpPaste.defer(100, this);
-                    return;
-                }
+                 this.mozKeyPress(e);
+                
+               //if (String.fromCharCode(k).toLowerCase() == 'v') { // paste
+                 //   this.cleanUpPaste.defer(100, this);
+                 //   return;
+               // }
                 
              };
         }
@@ -21333,7 +26013,27 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
     getSelection : function() 
     {
         this.assignDocWin();
-        return Roo.isIE ? this.doc.selection : this.win.getSelection();
+        return Roo.lib.Selection.wrap(Roo.isIE ? this.doc.selection : this.win.getSelection(), this.doc);
+    },
+    /**
+     * Select a dom node
+     * @param {DomElement} node the node to select
+     */
+    selectNode : function(node, collapse)
+    {
+        var nodeRange = node.ownerDocument.createRange();
+        try {
+            nodeRange.selectNode(node);
+        } catch (e) {
+            nodeRange.selectNodeContents(node);
+        }
+        if (collapse === true) {
+            nodeRange.collapse(true);
+        }
+        //
+        var s = this.win.getSelection();
+        s.removeAllRanges();
+        s.addRange(nodeRange);
     },
     
     getSelectedNode: function() 
@@ -21342,8 +26042,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         
         // should we cache this!!!!
         
-        
-        
+         
          
         var range = this.createRange(this.getSelection()).cloneRange();
         
@@ -21407,6 +26106,8 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         
         return nodes[0];
     },
+    
+    
     createRange: function(sel)
     {
         // this has strange effects when using with 
@@ -21524,26 +26225,21 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         // fully contined.
         return 3;
     },
-
-    // private? - in a new class?
-    cleanUpPaste :  function()
-    {
-        // cleans up the whole document..
-        Roo.log('cleanuppaste');
-        
-        this.cleanUpChildren(this.doc.body);
-        var clean = this.cleanWordChars(this.doc.body.innerHTML);
-        if (clean != this.doc.body.innerHTML) {
-            this.doc.body.innerHTML = clean;
-        }
-        
-    },
-    
     cleanWordChars : function(input) {// change the chars to hex code
-        var he = Roo.HtmlEditorCore;
         
+       var swapCodes  = [ 
+            [    8211, "&#8211;" ], 
+            [    8212, "&#8212;" ], 
+            [    8216,  "'" ],  
+            [    8217, "'" ],  
+            [    8220, '"' ],  
+            [    8221, '"' ],  
+            [    8226, "*" ],  
+            [    8230, "..." ]
+        ]; 
         var output = input;
-        Roo.each(he.swapCodes, function(sw) { 
+        Roo.each(swapCodes, function(sw) { 
             var swapper = new RegExp("\\u" + sw[0].toString(16), "g"); // hex codes
             
             output = output.replace(swapper, sw[1]);
@@ -21552,487 +26248,60 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         return output;
     },
     
-    
-    cleanUpChildren : function (n)
-    {
-        if (!n.childNodes.length) {
-            return;
-        }
-        for (var i = n.childNodes.length-1; i > -1 ; i--) {
-           this.cleanUpChild(n.childNodes[i]);
-        }
-    },
-    
+     
     
         
     
     cleanUpChild : function (node)
     {
-        var ed = this;
-        //console.log(node);
-        if (node.nodeName == "#text") {
-            // clean up silly Windows -- stuff?
-            return; 
-        }
-        if (node.nodeName == "#comment") {
-            if (!this.allowComments) {
-                node.parentNode.removeChild(node);
-            }
-            // clean up silly Windows -- stuff?
-            return; 
-        }
-        var lcname = node.tagName.toLowerCase();
-        // we ignore whitelists... ?? = not really the way to go, but we probably have not got a full
-        // whitelist of tags..
-        
-        if (this.black.indexOf(lcname) > -1 && this.clearUp ) {
-            // remove node.
-            node.parentNode.removeChild(node);
-            return;
-            
-        }
-        
-        var remove_keep_children= Roo.HtmlEditorCore.remove.indexOf(node.tagName.toLowerCase()) > -1;
-        
-        // spans with no attributes - just remove them..
-        if ((!node.attributes || !node.attributes.length) && lcname == 'span') { 
-            remove_keep_children = true;
-        }
-        
-        // remove <a name=....> as rendering on yahoo mailer is borked with this.
-        // this will have to be flaged elsewhere - perhaps ablack=name... on the mailer..
-        
-        //if (node.tagName.toLowerCase() == 'a' && !node.hasAttribute('href')) {
-        //    remove_keep_children = true;
-        //}
-        
-        if (remove_keep_children) {
-            this.cleanUpChildren(node);
-            // inserts everything just before this node...
-            while (node.childNodes.length) {
-                var cn = node.childNodes[0];
-                node.removeChild(cn);
-                node.parentNode.insertBefore(cn, node);
-            }
-            node.parentNode.removeChild(node);
-            return;
-        }
-        
-        if (!node.attributes || !node.attributes.length) {
-            
-          
-            
-            
-            this.cleanUpChildren(node);
-            return;
-        }
-        
-        function cleanAttr(n,v)
-        {
-            
-            if (v.match(/^\./) || v.match(/^\//)) {
-                return;
-            }
-            if (v.match(/^(http|https):\/\//) || v.match(/^mailto:/) || v.match(/^ftp:/)) {
-                return;
-            }
-            if (v.match(/^#/)) {
-                return;
-            }
-            if (v.match(/^\{/)) { // allow template editing.
-                return;
-            }
-//            Roo.log("(REMOVE TAG)"+ node.tagName +'.' + n + '=' + v);
-            node.removeAttribute(n);
-            
-        }
-        
-        var cwhite = this.cwhite;
-        var cblack = this.cblack;
-            
-        function cleanStyle(n,v)
-        {
-            if (v.match(/expression/)) { //XSS?? should we even bother..
-                node.removeAttribute(n);
-                return;
-            }
-            
-            var parts = v.split(/;/);
-            var clean = [];
-            
-            Roo.each(parts, function(p) {
-                p = p.replace(/^\s+/g,'').replace(/\s+$/g,'');
-                if (!p.length) {
-                    return true;
-                }
-                var l = p.split(':').shift().replace(/\s+/g,'');
-                l = l.replace(/^\s+/g,'').replace(/\s+$/g,'');
-                
-                if ( cwhite.length && cblack.indexOf(l) > -1) {
-//                    Roo.log('(REMOVE CSS)' + node.tagName +'.' + n + ':'+l + '=' + v);
-                    //node.removeAttribute(n);
-                    return true;
-                }
-                //Roo.log()
-                // only allow 'c whitelisted system attributes'
-                if ( cwhite.length &&  cwhite.indexOf(l) < 0 && cwhite.indexOf(l.toLowerCase()) < 0 ) {
-//                    Roo.log('(REMOVE CSS)' + node.tagName +'.' + n + ':'+l + '=' + v);
-                    //node.removeAttribute(n);
-                    return true;
-                }
-                
-                
-                 
-                
-                clean.push(p);
-                return true;
-            });
-            if (clean.length) { 
-                node.setAttribute(n, clean.join(';'));
-            } else {
-                node.removeAttribute(n);
-            }
-            
-        }
-        
-        
-        for (var i = node.attributes.length-1; i > -1 ; i--) {
-            var a = node.attributes[i];
-            //console.log(a);
-            
-            if (a.name.toLowerCase().substr(0,2)=='on')  {
-                node.removeAttribute(a.name);
-                continue;
-            }
-            if (Roo.HtmlEditorCore.ablack.indexOf(a.name.toLowerCase()) > -1) {
-                node.removeAttribute(a.name);
-                continue;
-            }
-            if (Roo.HtmlEditorCore.aclean.indexOf(a.name.toLowerCase()) > -1) {
-                cleanAttr(a.name,a.value); // fixme..
-                continue;
-            }
-            if (a.name == 'style') {
-                cleanStyle(a.name,a.value);
-                continue;
-            }
-            /// clean up MS crap..
-            // tecnically this should be a list of valid class'es..
-            
-            
-            if (a.name == 'class') {
-                if (a.value.match(/^Mso/)) {
-                    node.removeAttribute('class');
-                }
-                
-                if (a.value.match(/^body$/)) {
-                    node.removeAttribute('class');
-                }
-                continue;
-            }
-            
-            // style cleanup!?
-            // class cleanup?
-            
-        }
-        
-        
-        this.cleanUpChildren(node);
         
+        new Roo.htmleditor.FilterComment({node : node});
+        new Roo.htmleditor.FilterAttributes({
+                node : node,
+                attrib_black : this.ablack,
+                attrib_clean : this.aclean,
+                style_white : this.cwhite,
+                style_black : this.cblack
+        });
+        new Roo.htmleditor.FilterBlack({ node : node, tag : this.black});
+        new Roo.htmleditor.FilterKeepChildren({node : node, tag : this.tag_remove} );
+         
         
     },
     
     /**
      * Clean up MS wordisms...
+     * @deprecated - use filter directly
      */
     cleanWord : function(node)
     {
-        if (!node) {
-            this.cleanWord(this.doc.body);
-            return;
-        }
-        
-        if(
-                node.nodeName == 'SPAN' &&
-                !node.hasAttributes() &&
-                node.childNodes.length == 1 &&
-                node.firstChild.nodeName == "#text"  
-        ) {
-            var textNode = node.firstChild;
-            node.removeChild(textNode);
-            if (node.getAttribute('lang') != 'zh-CN') {   // do not space pad on chinese characters..
-                node.parentNode.insertBefore(node.ownerDocument.createTextNode(" "), node);
-            }
-            node.parentNode.insertBefore(textNode, node);
-            if (node.getAttribute('lang') != 'zh-CN') {   // do not space pad on chinese characters..
-                node.parentNode.insertBefore(node.ownerDocument.createTextNode(" ") , node);
-            }
-            node.parentNode.removeChild(node);
-        }
-        
-        if (node.nodeName == "#text") {
-            // clean up silly Windows -- stuff?
-            return; 
-        }
-        if (node.nodeName == "#comment") {
-            node.parentNode.removeChild(node);
-            // clean up silly Windows -- stuff?
-            return; 
-        }
-        
-        if (node.tagName.toLowerCase().match(/^(style|script|applet|embed|noframes|noscript)$/)) {
-            node.parentNode.removeChild(node);
-            return;
-        }
-        //Roo.log(node.tagName);
-        // remove - but keep children..
-        if (node.tagName.toLowerCase().match(/^(meta|link|\\?xml:|st1:|o:|v:|font)/)) {
-            //Roo.log('-- removed');
-            while (node.childNodes.length) {
-                var cn = node.childNodes[0];
-                node.removeChild(cn);
-                node.parentNode.insertBefore(cn, node);
-                // move node to parent - and clean it..
-                this.cleanWord(cn);
-            }
-            node.parentNode.removeChild(node);
-            /// no need to iterate chidlren = it's got none..
-            //this.iterateChildren(node, this.cleanWord);
-            return;
-        }
-        // clean styles
-        if (node.className.length) {
-            
-            var cn = node.className.split(/\W+/);
-            var cna = [];
-            Roo.each(cn, function(cls) {
-                if (cls.match(/Mso[a-zA-Z]+/)) {
-                    return;
-                }
-                cna.push(cls);
-            });
-            node.className = cna.length ? cna.join(' ') : '';
-            if (!cna.length) {
-                node.removeAttribute("class");
-            }
-        }
+        new Roo.htmleditor.FilterWord({ node : node ? node : this.doc.body });
         
-        if (node.hasAttribute("lang")) {
-            node.removeAttribute("lang");
-        }
-        
-        if (node.hasAttribute("style")) {
-            
-            var styles = node.getAttribute("style").split(";");
-            var nstyle = [];
-            Roo.each(styles, function(s) {
-                if (!s.match(/:/)) {
-                    return;
-                }
-                var kv = s.split(":");
-                if (kv[0].match(/^(mso-|line|font|background|margin|padding|color)/)) {
-                    return;
-                }
-                // what ever is left... we allow.
-                nstyle.push(s);
-            });
-            node.setAttribute("style", nstyle.length ? nstyle.join(';') : '');
-            if (!nstyle.length) {
-                node.removeAttribute('style');
-            }
-        }
-        this.iterateChildren(node, this.cleanWord);
-        
-        
-        
-    },
-    /**
-     * iterateChildren of a Node, calling fn each time, using this as the scole..
-     * @param {DomNode} node node to iterate children of.
-     * @param {Function} fn method of this class to call on each item.
-     */
-    iterateChildren : function(node, fn)
-    {
-        if (!node.childNodes.length) {
-                return;
-        }
-        for (var i = node.childNodes.length-1; i > -1 ; i--) {
-           fn.call(this, node.childNodes[i])
-        }
     },
-    
+   
     
     /**
-     * cleanTableWidths.
-     *
-     * Quite often pasting from word etc.. results in tables with column and widths.
-     * This does not work well on fluid HTML layouts - like emails. - so this code should hunt an destroy them..
-     *
+
+     * @deprecated - use filters
      */
     cleanTableWidths : function(node)
     {
-         
-         
-        if (!node) {
-            this.cleanTableWidths(this.doc.body);
-            return;
-        }
-        
-        // ignore list...
-        if (node.nodeName == "#text" || node.nodeName == "#comment") {
-            return; 
-        }
-        Roo.log(node.tagName);
-        if (!node.tagName.toLowerCase().match(/^(table|td|tr)$/)) {
-            this.iterateChildren(node, this.cleanTableWidths);
-            return;
-        }
-        if (node.hasAttribute('width')) {
-            node.removeAttribute('width');
-        }
-        
-         
-        if (node.hasAttribute("style")) {
-            // pretty basic...
-            
-            var styles = node.getAttribute("style").split(";");
-            var nstyle = [];
-            Roo.each(styles, function(s) {
-                if (!s.match(/:/)) {
-                    return;
-                }
-                var kv = s.split(":");
-                if (kv[0].match(/^\s*(width|min-width)\s*$/)) {
-                    return;
-                }
-                // what ever is left... we allow.
-                nstyle.push(s);
-            });
-            node.setAttribute("style", nstyle.length ? nstyle.join(';') : '');
-            if (!nstyle.length) {
-                node.removeAttribute('style');
-            }
-        }
-        
-        this.iterateChildren(node, this.cleanTableWidths);
-        
+        new Roo.htmleditor.FilterTableWidth({ node : node ? node : this.doc.body});
         
     },
     
-    
-    
-    
-    domToHTML : function(currentElement, depth, nopadtext) {
-        
-        depth = depth || 0;
-        nopadtext = nopadtext || false;
-    
-        if (!currentElement) {
-            return this.domToHTML(this.doc.body);
-        }
-        
-        //Roo.log(currentElement);
-        var j;
-        var allText = false;
-        var nodeName = currentElement.nodeName;
-        var tagName = Roo.util.Format.htmlEncode(currentElement.tagName);
-        
-        if  (nodeName == '#text') {
-            
-            return nopadtext ? currentElement.nodeValue : currentElement.nodeValue.trim();
-        }
-        
-        
-        var ret = '';
-        if (nodeName != 'BODY') {
-             
-            var i = 0;
-            // Prints the node tagName, such as <A>, <IMG>, etc
-            if (tagName) {
-                var attr = [];
-                for(i = 0; i < currentElement.attributes.length;i++) {
-                    // quoting?
-                    var aname = currentElement.attributes.item(i).name;
-                    if (!currentElement.attributes.item(i).value.length) {
-                        continue;
-                    }
-                    attr.push(aname + '="' + Roo.util.Format.htmlEncode(currentElement.attributes.item(i).value) + '"' );
-                }
-                
-                ret = "<"+currentElement.tagName+ ( attr.length ? (' ' + attr.join(' ') ) : '') + ">";
-            } 
-            else {
-                
-                // eack
-            }
-        } else {
-            tagName = false;
-        }
-        if (['IMG', 'BR', 'HR', 'INPUT'].indexOf(tagName) > -1) {
-            return ret;
-        }
-        if (['PRE', 'TEXTAREA', 'TD', 'A', 'SPAN'].indexOf(tagName) > -1) { // or code?
-            nopadtext = true;
-        }
-        
-        
-        // Traverse the tree
-        i = 0;
-        var currentElementChild = currentElement.childNodes.item(i);
-        var allText = true;
-        var innerHTML  = '';
-        lastnode = '';
-        while (currentElementChild) {
-            // Formatting code (indent the tree so it looks nice on the screen)
-            var nopad = nopadtext;
-            if (lastnode == 'SPAN') {
-                nopad  = true;
-            }
-            // text
-            if  (currentElementChild.nodeName == '#text') {
-                var toadd = Roo.util.Format.htmlEncode(currentElementChild.nodeValue);
-                toadd = nopadtext ? toadd : toadd.trim();
-                if (!nopad && toadd.length > 80) {
-                    innerHTML  += "\n" + (new Array( depth + 1 )).join( "  "  );
-                }
-                innerHTML  += toadd;
-                
-                i++;
-                currentElementChild = currentElement.childNodes.item(i);
-                lastNode = '';
-                continue;
-            }
-            allText = false;
-            
-            innerHTML  += nopad ? '' : "\n" + (new Array( depth + 1 )).join( "  "  );
-                
-            // Recursively traverse the tree structure of the child node
-            innerHTML   += this.domToHTML(currentElementChild, depth+1, nopadtext);
-            lastnode = currentElementChild.nodeName;
-            i++;
-            currentElementChild=currentElement.childNodes.item(i);
-        }
-        
-        ret += innerHTML;
-        
-        if (!allText) {
-                // The remaining code is mostly for formatting the tree
-            ret+= nopadtext ? '' : "\n" + (new Array( depth  )).join( "  "  );
-        }
-        
-        
-        if (tagName) {
-            ret+= "</"+tagName+">";
-        }
-        return ret;
-        
-    },
+     
         
     applyBlacklists : function()
     {
         var w = typeof(this.owner.white) != 'undefined' && this.owner.white ? this.owner.white  : [];
         var b = typeof(this.owner.black) != 'undefined' && this.owner.black ? this.owner.black :  [];
         
+        this.aclean = typeof(this.owner.aclean) != 'undefined' && this.owner.aclean ? this.owner.aclean :  Roo.HtmlEditorCore.aclean;
+        this.ablack = typeof(this.owner.ablack) != 'undefined' && this.owner.ablack ? this.owner.ablack :  Roo.HtmlEditorCore.ablack;
+        this.tag_remove = typeof(this.owner.tag_remove) != 'undefined' && this.owner.tag_remove ? this.owner.tag_remove :  Roo.HtmlEditorCore.tag_remove;
+        
         this.white = [];
         this.black = [];
         Roo.each(Roo.HtmlEditorCore.white, function(tag) {
@@ -22150,6 +26419,16 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
         
     },
     
+    
+    updateLanguage : function()
+    {
+        if (!this.iframe || !this.iframe.contentDocument) {
+            return;
+        }
+        Roo.get(this.iframe.contentDocument.body).attr("lang", this.language);
+    },
+    
+    
     removeStylesheets : function()
     {
         var _this = this;
@@ -22214,36 +26493,40 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
 });
 
 Roo.HtmlEditorCore.white = [
-        'area', 'br', 'img', 'input', 'hr', 'wbr',
+        'AREA', 'BR', 'IMG', 'INPUT', 'HR', 'WBR',
         
-       'address', 'blockquote', 'center', 'dd',      'dir',       'div', 
-       'dl',      'dt',         'h1',     'h2',      'h3',        'h4', 
-       'h5',      'h6',         'hr',     'isindex', 'listing',   'marquee', 
-       'menu',    'multicol',   'ol',     'p',       'plaintext', 'pre', 
-       'table',   'ul',         'xmp', 
+       'ADDRESS', 'BLOCKQUOTE', 'CENTER', 'DD',      'DIR',       'DIV', 
+       'DL',      'DT',         'H1',     'H2',      'H3',        'H4', 
+       'H5',      'H6',         'HR',     'ISINDEX', 'LISTING',   'MARQUEE', 
+       'MENU',    'MULTICOL',   'OL',     'P',       'PLAINTEXT', 'PRE', 
+       'TABLE',   'UL',         'XMP', 
        
-       'caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', 
-      'thead',   'tr', 
+       'CAPTION', 'COL', 'COLGROUP', 'TBODY', 'TD', 'TFOOT', 'TH', 
+      'THEAD',   'TR', 
      
-      'dir', 'menu', 'ol', 'ul', 'dl',
+      'DIR', 'MENU', 'OL', 'UL', 'DL',
        
-      'embed',  'object'
+      'EMBED',  'OBJECT'
 ];
 
 
 Roo.HtmlEditorCore.black = [
     //    'embed',  'object', // enable - backend responsiblity to clean thiese
-        'applet', // 
-        'base',   'basefont', 'bgsound', 'blink',  'body', 
-        'frame',  'frameset', 'head',    'html',   'ilayer', 
-        'iframe', 'layer',  'link',     'meta',    'object',   
-        'script', 'style' ,'title',  'xml' // clean later..
+        'APPLET', // 
+        'BASE',   'BASEFONT', 'BGSOUND', 'BLINK',  'BODY', 
+        'FRAME',  'FRAMESET', 'HEAD',    'HTML',   'ILAYER', 
+        'IFRAME', 'LAYER',  'LINK',     'META',    'OBJECT',   
+        'SCRIPT', 'STYLE' ,'TITLE',  'XML',
+        //'FONT' // CLEAN LATER..
+        'COLGROUP', 'COL'   // messy tables.
+        
+        
 ];
-Roo.HtmlEditorCore.clean = [
-    'script', 'style', 'title', 'xml'
+Roo.HtmlEditorCore.clean = [ // ?? needed???
+     'SCRIPT', 'STYLE', 'TITLE', 'XML'
 ];
-Roo.HtmlEditorCore.remove = [
-    'font'
+Roo.HtmlEditorCore.tag_remove = [
+    'FONT', 'TBODY'  
 ];
 // attributes..
 
@@ -22274,16 +26557,7 @@ Roo.HtmlEditorCore.cblack= [
 ];
 
 
-Roo.HtmlEditorCore.swapCodes   =[ 
-    [    8211, "&#8211;" ], 
-    [    8212, "&#8212;" ], 
-    [    8216,  "'" ],  
-    [    8217, "'" ],  
-    [    8220, '"' ],  
-    [    8221, '"' ],  
-    [    8226, "*" ],  
-    [    8230, "..." ]
-]; 
+
 
     //<script type="text/javascript">
 
@@ -22346,7 +26620,7 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
     width: 500,
     
     /**
-     * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets.
+     * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets - this is usally a good idea  rootURL + '/roojs1/css/undoreset.css',   .
      * 
      */
     stylesheets: false,
@@ -22377,7 +26651,27 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
      * @cfg {boolean} allowComments - default false - allow comments in HTML source - by default they are stripped - if you are editing email you may need this.
      */
     allowComments: false,
+    /**
+     * @cfg {boolean} enableBlocks - default true - if the block editor (table and figure should be enabled)
+     */
+    enableBlocks : true,
+    
+    /**
+     * @cfg {boolean} autoClean - default true - loading and saving will remove quite a bit of formating,
+     *         if you are doing an email editor, this probably needs disabling, it's designed
+     */
+    autoClean: true,
+    /**
+     * @cfg {string} bodyCls default '' default classes to add to body of editable area - usually undoreset is a good start..
+     */
+    bodyCls : '',
+    /**
+     * @cfg {String} language default en - language of text (usefull for rtl languages)
+     * 
+     */
+    language: 'en',
     
+     
     // id of frame..
     frameId: false,
     
@@ -22482,7 +26776,13 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
             * Fires when press the Sytlesheets button
             * @param {Roo.HtmlEditorCore} this
             */
-            stylesheetsclick: true
+            stylesheetsclick: true,
+            /**
+            * @event paste
+            * Fires when press user pastes into the editor
+            * @param {Roo.HtmlEditorCore} this
+            */
+            paste: true 
         });
         this.defaultAutoCreate =  {
             tag: "textarea",
@@ -22513,8 +26813,19 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
          
         
     },
-
-     
+    /**
+     * get the Context selected node
+     * @returns {DomElement|boolean} selected node if active or false if none
+     * 
+     */
+    getSelectedNode : function()
+    {
+        if (this.toolbars.length < 2 || !this.toolbars[1].tb) {
+            return false;
+        }
+        return this.toolbars[1].tb.selectedNode;
+    
+    },
     // private
     onRender : function(ct, position)
     {
@@ -22735,6 +27046,8 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
             this.el.removeClass('x-hidden');
             this.el.dom.removeAttribute('tabIndex');
             this.el.focus();
+            this.el.dom.scrollTop = 0;
+            
             
             for (var i = 0; i < this.toolbars.length; i++) {
                 if(this.toolbars[i] instanceof Roo.form.HtmlEditor.ToolbarContext){
@@ -22802,7 +27115,17 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
         this.editorcore.pushValue();
     },
 
+    /**
+     * update the language in the body - really done by core
+     * @param {String} language - eg. en / ar / zh-CN etc..
+     */
+    updateLanguage : function(lang)
+    {
+        this.language = lang;
+        this.editorcore.language = lang;
+        this.editorcore.updateLanguage();
      
+    },
     // private
     deferFocus : function(){
         this.focus.defer(10, this);
@@ -22907,8 +27230,7 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
      */
 });
  
-    // <script type="text/javascript">
-/*
+    /*
  * Based on
  * Ext JS Library 1.1.1
  * Copyright(c) 2006-2007, Ext JS, LLC.
@@ -22917,9 +27239,9 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
  */
 
 /**
- * @class Roo.form.HtmlEditorToolbar1
+ * @class Roo.form.HtmlEditor.ToolbarStandard
  * Basic Toolbar
- * 
+
  * Usage:
  *
  new Roo.form.HtmlEditor({
@@ -22933,7 +27255,7 @@ Roo.extend(Roo.form.HtmlEditor, Roo.form.Field, {
      
  * 
  * @cfg {Object} disable List of elements to disable..
- * @cfg {Array} btns List of additional buttons.
+ * @cfg {Roo.Toolbar.Item|Roo.Toolbar.Button|Roo.Toolbar.SplitButton|Roo.form.Field} btns[] List of additional buttons.
  * 
  * 
  * NEEDS Extra CSS? 
@@ -22958,7 +27280,7 @@ Roo.form.HtmlEditor.ToolbarStandard = function(config)
     // dont call parent... till later.
 }
 
-Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
+Roo.form.HtmlEditor.ToolbarStandard.prototype = {
     
     tb: false,
     
@@ -23304,7 +27626,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
                     tabIndex:-1
                 });
             }
-             cmenu.menu.items.push({
+            cmenu.menu.items.push({
                 actiontype : 'tablewidths',
                 html: 'Remove Table Widths',
                 handler: function(a,b) {
@@ -23356,7 +27678,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
                 actiontype : 'tidy',
                 html: 'Tidy HTML Source',
                 handler: function(a,b) {
-                    editorcore.doc.body.innerHTML = editorcore.domToHTML();
+                    new Roo.htmleditor.Tidy(editorcore.doc.body);
                     editorcore.syncValue();
                 },
                 tabIndex:-1
@@ -23393,7 +27715,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
         
         if (this.btns) {
             for(var i =0; i< this.btns.length;i++) {
-                var b = Roo.factory(this.btns[i],Roo.form);
+                var b = Roo.factory(this.btns[i],this.btns[i].xns || Roo.form);
                 b.cls =  'x-edit-none';
                 
                 if(typeof(this.btns[i].cls) != 'undefined' && this.btns[i].cls.indexOf('x-init-enable') !== -1){
@@ -23434,11 +27756,45 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
     },
     // private used internally
     createLink : function(){
-        Roo.log("create link?");
-        var url = prompt(this.createLinkText, this.defaultLinkValue);
-        if(url && url != 'http:/'+'/'){
-            this.editorcore.relayCmd('createlink', url);
+        //Roo.log("create link?");
+        var ec = this.editorcore;
+        var ar = ec.getAllAncestors();
+        var n = false;
+        for(var i = 0;i< ar.length;i++) {
+            if (ar[i] && ar[i].nodeName == 'A') {
+                n = ar[i];
+                break;
+            }
         }
+        
+        (function() {
+            
+            Roo.MessageBox.show({
+                title : "Add / Edit Link URL",
+                msg : "Enter the url for the link",
+                buttons: Roo.MessageBox.OKCANCEL,
+                fn: function(btn, url){
+                    if (btn != 'ok') {
+                        return;
+                    }
+                    if(url && url != 'http:/'+'/'){
+                        if (n) {
+                            n.setAttribute('href', url);
+                        } else {
+                            ec.relayCmd('createlink', url);
+                        }
+                    }
+                },
+                minWidth:250,
+                prompt:true,
+                //multiline: multiline,
+                modal : true,
+                value :  n  ? n.getAttribute('href') : '' 
+            });
+            
+             
+        }).defer(100, this); // we have to defer this , otherwise the mouse click gives focus to the main window.
+        
     },
 
     
@@ -23551,6 +27907,11 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
                 this.tb.items.each(function(item){
                     item.enable();
                 });
+                // initialize 'blocks'
+                Roo.each(Roo.get(this.editorcore.doc.body).query('*[data-block]'), function(e) {
+                    Roo.htmleditor.Block.factory(e).updateElement(e);
+                },this);
+            
             }
             
         }
@@ -23677,7 +28038,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,  {
            item.enable();
         });
     }
-});
+};
 
 
 
@@ -23725,189 +28086,138 @@ Roo.form.HtmlEditor.ToolbarContext = function(config)
  
 
 Roo.form.HtmlEditor.ToolbarContext.types = {
-    'IMG' : {
-        width : {
+    'IMG' : [
+        {
+            name : 'width',
             title: "Width",
             width: 40
         },
-        height:  {
+        {
+            name : 'height',
             title: "Height",
             width: 40
         },
-        align: {
+        {
+            name : 'align',
             title: "Align",
             opts : [ [""],[ "left"],[ "right"],[ "center"],[ "top"]],
             width : 80
             
         },
-        border: {
+        {
+            name : 'border',
             title: "Border",
             width: 40
         },
-        alt: {
+        {
+            name : 'alt',
             title: "Alt",
             width: 120
         },
-        src : {
+        {
+            name : 'src',
             title: "Src",
             width: 220
         }
         
-    },
-    'A' : {
-        name : {
+    ],
+    
+    'FIGURE' : [
+        {
+            name : 'align',
+            title: "Align",
+            opts : [ [""],[ "left"],[ "right"],[ "center"],[ "top"]],
+            width : 80  
+        }
+    ],
+    'A' : [
+        {
+            name : 'name',
             title: "Name",
             width: 50
         },
-        target:  {
+        {
+            name : 'target',
             title: "Target",
             width: 120
         },
-        href:  {
+        {
+            name : 'href',
             title: "Href",
             width: 220
         } // border?
         
-    },
-    'TABLE' : {
-        rows : {
-            title: "Rows",
-            width: 20
-        },
-        cols : {
-            title: "Cols",
-            width: 20
-        },
-        width : {
-            title: "Width",
-            width: 40
-        },
-        height : {
-            title: "Height",
-            width: 40
-        },
-        border : {
-            title: "Border",
-            width: 20
-        }
-    },
-    'TD' : {
-        width : {
-            title: "Width",
-            width: 40
-        },
-        height : {
-            title: "Height",
-            width: 40
-        },   
-        align: {
-            title: "Align",
-            opts : [[""],[ "left"],[ "center"],[ "right"],[ "justify"],[ "char"]],
-            width: 80
-        },
-        valign: {
-            title: "Valign",
-            opts : [[""],[ "top"],[ "middle"],[ "bottom"],[ "baseline"]],
-            width: 80
-        },
-        colspan: {
-            title: "Colspan",
-            width: 20
-            
-        },
-         'font-family'  : {
-            title : "Font",
-            style : 'fontFamily',
-            displayField: 'display',
-            optname : 'font-family',
-            width: 140
-        }
-    },
-    'INPUT' : {
-        name : {
+    ],
+    
+    'INPUT' : [
+        {
+            name : 'name',
             title: "name",
             width: 120
         },
-        value : {
+        {
+            name : 'value',
             title: "Value",
             width: 120
         },
-        width : {
+        {
+            name : 'width',
             title: "Width",
             width: 40
         }
-    },
-    'LABEL' : {
-        'for' : {
+    ],
+    'LABEL' : [
+         {
+            name : 'for',
             title: "For",
             width: 120
         }
-    },
-    'TEXTAREA' : {
-          name : {
+    ],
+    'TEXTAREA' : [
+        {
+            name : 'name',
             title: "name",
             width: 120
         },
-        rows : {
+        {
+            name : 'rows',
             title: "Rows",
             width: 20
         },
-        cols : {
+        {
+            name : 'cols',
             title: "Cols",
             width: 20
         }
-    },
-    'SELECT' : {
-        name : {
+    ],
+    'SELECT' : [
+        {
+            name : 'name',
             title: "name",
             width: 120
         },
-        selectoptions : {
+        {
+            name : 'selectoptions',
             title: "Options",
             width: 200
         }
-    },
+    ],
     
     // should we really allow this??
     // should this just be 
-    'BODY' : {
-        title : {
+    'BODY' : [
+        
+        {
+            name : 'title',
             title: "Title",
             width: 200,
             disabled : true
         }
-    },
-    'SPAN' : {
-        'font-family'  : {
-            title : "Font",
-            style : 'fontFamily',
-            displayField: 'display',
-            optname : 'font-family',
-            width: 140
-        }
-    },
-    'DIV' : {
-        'font-family'  : {
-            title : "Font",
-            style : 'fontFamily',
-            displayField: 'display',
-            optname : 'font-family',
-            width: 140
-        }
-    },
-     'P' : {
-        'font-family'  : {
-            title : "Font",
-            style : 'fontFamily',
-            displayField: 'display',
-            optname : 'font-family',
-            width: 140
-        }
-    },
-    
-    '*' : {
-        // empty..
-    }
+    ],
+    '*' : [
+        // empty.
+    ]
 
 };
 
@@ -23993,9 +28303,9 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         // disable everything...
         var ty= Roo.form.HtmlEditor.ToolbarContext.types;
         this.toolbars = {};
-           
+        // block toolbars are built in updateToolbar when needed.
         for (var i in  ty) {
-          
+            
             this.toolbars[i] = this.buildToolbar(ty[i],i);
         }
         this.tb = this.toolbars.BODY;
@@ -24022,8 +28332,13 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
      *
      * Note you can force an update by calling on('editorevent', scope, false)
      */
-    updateToolbar: function(editor,ev,sel){
-
+    updateToolbar: function(editor ,ev, sel)
+    {
+        
+        if (ev) {
+            ev.stopEvent(); // se if we can stop this looping with mutiple events.
+        }
+        
         //Roo.log(ev);
         // capture mouse up - this is handy for selecting images..
         // perhaps should go somewhere else...
@@ -24031,38 +28346,40 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
              this.editor.onFirstFocus();
             return;
         }
-        
+        //Roo.log(ev ? ev.target : 'NOTARGET');
         
         
         // http://developer.yahoo.com/yui/docs/simple-editor.js.html
         // selectNode - might want to handle IE?
+        
+        
+        
         if (ev &&
             (ev.type == 'mouseup' || ev.type == 'click' ) &&
-            ev.target && ev.target.tagName == 'IMG') {
+            ev.target && ev.target.tagName != 'BODY' ) { // && ev.target.tagName == 'IMG') {
             // they have click on an image...
             // let's see if we can change the selection...
             sel = ev.target;
-         
-              var nodeRange = sel.ownerDocument.createRange();
-            try {
-                nodeRange.selectNode(sel);
-            } catch (e) {
-                nodeRange.selectNodeContents(sel);
-            }
-            //nodeRange.collapse(true);
-            var s = this.editorcore.win.getSelection();
-            s.removeAllRanges();
-            s.addRange(nodeRange);
-        }  
+            
+            // this triggers looping?
+            //this.editorcore.selectNode(sel);
+             
+        }
         
+        // this forces an id..
+        Array.from(this.editorcore.doc.body.querySelectorAll('.roo-ed-selection')).forEach(function(e) {
+             e.classList.remove('roo-ed-selection');
+        });
+        //Roo.select('.roo-ed-selection', false, this.editorcore.doc).removeClass('roo-ed-selection');
+        //Roo.get(node).addClass('roo-ed-selection');
       
-        var updateFooter = sel ? false : true;
+        //var updateFooter = sel ? false : true; 
         
         
         var ans = this.editorcore.getAllAncestors();
         
         // pick
-        var ty= Roo.form.HtmlEditor.ToolbarContext.types;
+        var ty = Roo.form.HtmlEditor.ToolbarContext.types;
         
         if (!sel) { 
             sel = ans.length ? (ans[0] ?  ans[0]  : ans[1]) : this.editorcore.doc.body;
@@ -24070,86 +28387,145 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
             sel = sel.tagName.length ? sel : this.editorcore.doc.body;
             
         }
-        // pick a menu that exists..
-        var tn = sel.tagName.toUpperCase();
-        //sel = typeof(ty[tn]) != 'undefined' ? sel : this.editor.doc.body;
-        
-        tn = sel.tagName.toUpperCase();
         
+        var tn = sel.tagName.toUpperCase();
         var lastSel = this.tb.selectedNode;
-        
         this.tb.selectedNode = sel;
+        var left_label = tn;
         
-        // if current menu does not match..
+        // ok see if we are editing a block?
         
-        if ((this.tb.name != tn) || (lastSel != this.tb.selectedNode) || ev === false) {
-                
-            this.tb.el.hide();
-            ///console.log("show: " + tn);
-            this.tb =  typeof(ty[tn]) != 'undefined' ? this.toolbars[tn] : this.toolbars['*'];
-            this.tb.el.show();
-            // update name
-            this.tb.items.first().el.innerHTML = tn + ':&nbsp;';
-            
-            
-            // update attributes
-            if (this.tb.fields) {
-                this.tb.fields.each(function(e) {
-                    if (e.stylename) {
-                        e.setValue(sel.style[e.stylename]);
-                        return;
-                    } 
-                   e.setValue(sel.getAttribute(e.attrname));
-                });
-            }
+        var db = false;
+        // you are not actually selecting the block.
+        if (sel && sel.hasAttribute('data-block')) {
+            db = sel;
+        } else if (sel && sel.closest('[data-block]')) {
             
-            var hasStyles = false;
-            for(var i in this.styles) {
-                hasStyles = true;
-                break;
-            }
+            db = sel.closest('[data-block]');
+            //var cepar = sel.closest('[contenteditable=true]');
+            //if (db && cepar && cepar.tagName != 'BODY') {
+            //   db = false; // we are inside an editable block.. = not sure how we are going to handle nested blocks!?
+            //}   
+        }
+        
+        
+        var block = false;
+        //if (db && !sel.hasAttribute('contenteditable') && sel.getAttribute('contenteditable') != 'true' ) {
+        if (db && this.editorcore.enableBlocks) {
+            block = Roo.htmleditor.Block.factory(db);
             
-            // update styles
-            if (hasStyles) { 
-                var st = this.tb.fields.item(0);
-                
-                st.store.removeAll();
-               
-                
-                var cn = sel.className.split(/\s+/);
+            
+            if (block) {
+                 db.className = (
+                        db.classList.length > 0  ? db.className + ' ' : ''
+                    )  + 'roo-ed-selection';
+                 
+                 // since we removed it earlier... its not there..
+                tn = 'BLOCK.' + db.getAttribute('data-block');
                 
-                var avs = [];
-                if (this.styles['*']) {
-                    
-                    Roo.each(this.styles['*'], function(v) {
-                        avs.push( [ v , cn.indexOf(v) > -1 ? 1 : 0 ] );         
-                    });
-                }
-                if (this.styles[tn]) { 
-                    Roo.each(this.styles[tn], function(v) {
-                        avs.push( [ v , cn.indexOf(v) > -1 ? 1 : 0 ] );         
-                    });
+                //this.editorcore.selectNode(db);
+                if (typeof(this.toolbars[tn]) == 'undefined') {
+                   this.toolbars[tn] = this.buildToolbar( false  ,tn ,block.friendly_name, block);
                 }
-                
-                st.store.loadData(avs);
-                st.collapse();
-                st.setValue(cn);
+                this.toolbars[tn].selectedNode = db;
+                left_label = block.friendly_name;
+                ans = this.editorcore.getAllAncestors();
             }
-            // flag our selected Node.
-            this.tb.selectedNode = sel;
-           
-           
-            Roo.menu.MenuMgr.hideAll();
-
+            
+                
+            
         }
         
-        if (!updateFooter) {
-            //this.footDisp.dom.innerHTML = ''; 
-            return;
+        
+        if (this.tb.name == tn && lastSel == this.tb.selectedNode && ev !== false) {
+            return; // no change?
+        }
+        
+        
+          
+        this.tb.el.hide();
+        ///console.log("show: " + tn);
+        this.tb =  typeof(this.toolbars[tn]) != 'undefined' ? this.toolbars[tn] : this.toolbars['*'];
+        
+        this.tb.el.show();
+        // update name
+        this.tb.items.first().el.innerHTML = left_label + ':&nbsp;';
+        
+        
+        // update attributes
+        if (block && this.tb.fields) {
+             
+            this.tb.fields.each(function(e) {
+                e.setValue(block[e.name]);
+            });
+            
+            
+        } else  if (this.tb.fields && this.tb.selectedNode) {
+            this.tb.fields.each( function(e) {
+                if (e.stylename) {
+                    e.setValue(this.tb.selectedNode.style[e.stylename]);
+                    return;
+                } 
+                e.setValue(this.tb.selectedNode.getAttribute(e.attrname));
+            }, this);
+            this.updateToolbarStyles(this.tb.selectedNode);  
         }
+        
+        
+       
+        Roo.menu.MenuMgr.hideAll();
+
+        
+        
+    
         // update the footer
         //
+        this.updateFooter(ans);
+             
+    },
+    
+    updateToolbarStyles : function(sel)
+    {
+        var hasStyles = false;
+        for(var i in this.styles) {
+            hasStyles = true;
+            break;
+        }
+        
+        // update styles
+        if (hasStyles && this.tb.hasStyles) { 
+            var st = this.tb.fields.item(0);
+            
+            st.store.removeAll();
+            var cn = sel.className.split(/\s+/);
+            
+            var avs = [];
+            if (this.styles['*']) {
+                
+                Roo.each(this.styles['*'], function(v) {
+                    avs.push( [ v , cn.indexOf(v) > -1 ? 1 : 0 ] );         
+                });
+            }
+            if (this.styles[tn]) { 
+                Roo.each(this.styles[tn], function(v) {
+                    avs.push( [ v , cn.indexOf(v) > -1 ? 1 : 0 ] );         
+                });
+            }
+            
+            st.store.loadData(avs);
+            st.collapse();
+            st.setValue(cn);
+        }
+    },
+    
+     
+    updateFooter : function(ans)
+    {
         var html = '';
+        if (ans === false) {
+            this.footDisp.dom.innerHTML = '';
+            return;
+        }
         
         this.footerEls = ans.reverse();
         Roo.each(this.footerEls, function(a,i) {
@@ -24169,10 +28545,8 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         
         this.footDisp.dom.innerHTML = html;
             
-        //this.editorsyncValue();
+        
     },
-     
-    
    
        
     // private
@@ -24197,7 +28571,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
            item.enable();
         });
     },
-    buildToolbar: function(tlist, nm)
+    buildToolbar: function(tlist, nm, friendly_name, block)
     {
         var editor = this.editor;
         var editorcore = this.editorcore;
@@ -24208,18 +28582,22 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         
        
         var tb = new Roo.Toolbar(wdiv);
-        // add the name..
+        ///this.tb = tb; // << this sets the active toolbar..
+        if (tlist === false && block) {
+            tlist = block.contextMenu(this);
+        }
         
-        tb.add(nm+ ":&nbsp;");
+        tb.hasStyles = false;
+        tb.name = nm;
+        
+        tb.add((typeof(friendly_name) == 'undefined' ? nm : friendly_name) + ":&nbsp;");
+        
+        var styles = Array.from(this.styles);
         
-        var styles = [];
-        for(var i in this.styles) {
-            styles.push(i);
-        }
         
         // styles...
         if (styles && styles.length) {
-            
+            tb.hasStyles = true;
             // this needs a multi-select checkbox...
             tb.addField( new Roo.form.ComboBox({
                 store: new Roo.data.SimpleStore({
@@ -24249,9 +28627,18 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         }
         
         var tbc = Roo.form.HtmlEditor.ToolbarContext;
-        var tbops = tbc.options;
         
-        for (var i in tlist) {
+        
+        for (var i = 0; i < tlist.length; i++) {
+            
+            // newer versions will use xtype cfg to create menus.
+            if (typeof(tlist[i].xtype) != 'undefined') {
+                
+                tb[typeof(tlist[i].name)== 'undefined' ? 'add' : 'addField'](Roo.factory(tlist[i]));
+                
+                
+                continue;
+            }
             
             var item = tlist[i];
             tb.add(item.title + ":&nbsp;");
@@ -24259,8 +28646,8 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
             
             //optname == used so you can configure the options available..
             var opts = item.opts ? item.opts : false;
-            if (item.optname) {
-                opts = tbops[item.optname];
+            if (item.optname) { // use the b
+                opts = Roo.form.HtmlEditor.ToolbarContext.options[item.optname];
            
             }
             
@@ -24272,13 +28659,15 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
                         fields: ['val', 'display'],
                         data : opts  
                     }),
-                    name : '-roo-edit-' + i,
-                    attrname : i,
+                    name : '-roo-edit-' + tlist[i].name,
+                    
+                    attrname : tlist[i].name,
                     stylename : item.style ? item.style : false,
+                    
                     displayField: item.displayField ? item.displayField : 'val',
                     valueField :  'val',
                     typeAhead: false,
-                    mode: typeof(tbc.stores[i]) != 'undefined'  ? 'remote' : 'local',
+                    mode: typeof(tbc.stores[tlist[i].name]) != 'undefined'  ? 'remote' : 'local',
                     editable : false,
                     triggerAction: 'all',
                     emptyText:'Select',
@@ -24286,11 +28675,20 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
                     width: item.width ? item.width  : 130,
                     listeners : {
                         'select': function(c, r, i) {
+                             
+                            
                             if (c.stylename) {
                                 tb.selectedNode.style[c.stylename] =  r.get('val');
+                                editorcore.syncValue();
+                                return;
+                            }
+                            if (r === false) {
+                                tb.selectedNode.removeAttribute(c.attrname);
+                                editorcore.syncValue();
                                 return;
                             }
                             tb.selectedNode.setAttribute(c.attrname, r.get('val'));
+                            editorcore.syncValue();
                         }
                     }
 
@@ -24298,7 +28696,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
                 continue;
                     
                  
-                
+                /*
                 tb.addField( new Roo.form.TextField({
                     name: i,
                     width: 100,
@@ -24306,16 +28704,19 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
                     value: ''
                 }));
                 continue;
+                */
             }
             tb.addField( new Roo.form.TextField({
-                name: '-roo-edit-' + i,
-                attrname : i,
+                name: '-roo-edit-' + tlist[i].name,
+                attrname : tlist[i].name,
                 
                 width: item.width,
                 //allowBlank:true,
                 value: '',
                 listeners: {
                     'change' : function(f, nv, ov) {
+                        
+                         
                         tb.selectedNode.setAttribute(f.attrname, nv);
                         editorcore.syncValue();
                     }
@@ -24325,8 +28726,9 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         }
         
         var _this = this;
-        
+        var show_delete = !block || block.deleteTitle !== false;
         if(nm == 'BODY'){
+            show_delete = false;
             tb.addSeparator();
         
             tb.addButton( {
@@ -24342,60 +28744,61 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         }
         
         tb.addFill();
-        tb.addButton( {
-            text: 'Remove Tag',
-    
-            listeners : {
-                click : function ()
-                {
-                    // remove
-                    // undo does not work.
-                     
-                    var sn = tb.selectedNode;
-                    
-                    var pn = sn.parentNode;
-                    
-                    var stn =  sn.childNodes[0];
-                    var en = sn.childNodes[sn.childNodes.length - 1 ];
-                    while (sn.childNodes.length) {
-                        var node = sn.childNodes[0];
-                        sn.removeChild(node);
-                        //Roo.log(node);
-                        pn.insertBefore(node, sn);
+        if (show_delete) {
+            tb.addButton({
+                text: block && block.deleteTitle ? block.deleteTitle  : 'Remove Block or Formating', // remove the tag, and puts the children outside...
+        
+                listeners : {
+                    click : function ()
+                    {
+                        var sn = tb.selectedNode;
+                        if (block) {
+                            sn = Roo.htmleditor.Block.factory(tb.selectedNode).removeNode();
+                            
+                        }
+                        if (!sn) {
+                            return;
+                        }
+                        var stn =  sn.childNodes[0] || sn.nextSibling || sn.previousSibling || sn.parentNode;
+                        if (sn.hasAttribute('data-block')) {
+                            stn =  sn.nextSibling || sn.previousSibling || sn.parentNode;
+                            sn.parentNode.removeChild(sn);
+                            
+                        } else if (sn && sn.tagName != 'BODY') {
+                            // remove and keep parents.
+                            a = new Roo.htmleditor.FilterKeepChildren({tag : false});
+                            a.replaceTag(sn);
+                        }
+                        
+                        
+                        var range = editorcore.createRange();
+            
+                        range.setStart(stn,0);
+                        range.setEnd(stn,0); 
+                        var selection = editorcore.getSelection();
+                        selection.removeAllRanges();
+                        selection.addRange(range);
+                        
+                        
+                        //_this.updateToolbar(null, null, pn);
+                        _this.updateToolbar(null, null, null);
+                        _this.updateFooter(false);
                         
                     }
-                    pn.removeChild(sn);
-                    var range = editorcore.createRange();
-        
-                    range.setStart(stn,0);
-                    range.setEnd(en,0); //????
-                    //range.selectNode(sel);
-                    
-                    
-                    var selection = editorcore.getSelection();
-                    selection.removeAllRanges();
-                    selection.addRange(range);
-                    
-                    
-                    
-                    //_this.updateToolbar(null, null, pn);
-                    _this.updateToolbar(null, null, null);
-                    _this.footDisp.dom.innerHTML = ''; 
                 }
-            }
-            
+                
+                        
                     
                 
-            
-        });
-        
+            });
+        }    
         
         tb.el.on('click', function(e){
             e.preventDefault(); // what does this do?
         });
         tb.el.setVisibilityMode( Roo.Element.DISPLAY);
         tb.el.hide();
-        tb.name = nm;
+        
         // dont need to disable them... as they will get hidden
         return tb;
          
@@ -24439,6 +28842,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         
         
     },
+    // when the footer contect changes
     onContextClick : function (ev,dom)
     {
         ev.preventDefault();
@@ -24451,17 +28855,7 @@ Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,  {
         var ans = this.footerEls;
         var sel = ans[n];
         
-         // pick
-        var range = this.editorcore.createRange();
-        
-        range.selectNodeContents(sel);
-        //range.selectNode(sel);
-        
-        
-        var selection = this.editorcore.getSelection();
-        selection.removeAllRanges();
-        selection.addRange(range);
-        
+        this.editorcore.selectNode(sel);
         
         
         this.updateToolbar(null, null, sel);
@@ -25030,11 +29424,12 @@ clientValidation  Boolean          Applies to submit only.  Pass true to call fo
      * @param {Boolean} asString
      * @return {Object}
      */
-    getValues : function(asString){
+    getValues : function(asString)
+    {
         if (this.childForms) {
             // copy values from the child forms
             Roo.each(this.childForms, function (f) {
-                this.setValues(f.getValues());
+                this.setValues(f.getFieldValues()); // get the full set of data, as we might be copying comboboxes from external into this one.
             }, this);
         }
         
@@ -25067,21 +29462,31 @@ clientValidation  Boolean          Applies to submit only.  Pass true to call fo
     /**
      * Returns the fields in this form as an object with key/value pairs. 
      * This differs from getValues as it calls getValue on each child item, rather than using dom data.
+     * Normally this will not return readOnly data 
+     * @param {Boolean} with_readonly return readonly field data.
      * @return {Object}
      */
-    getFieldValues : function(with_hidden)
+    getFieldValues : function(with_readonly)
     {
         if (this.childForms) {
             // copy values from the child forms
             // should this call getFieldValues - probably not as we do not currently copy
             // hidden fields when we generate..
             Roo.each(this.childForms, function (f) {
-                this.setValues(f.getValues());
+                this.setValues(f.getFieldValues());
             }, this);
         }
         
         var ret = {};
         this.items.each(function(f){
+            
+            if (f.readOnly && with_readonly !== true) {
+                return; // skip read only values. - this is in theory to stop 'old' values being copied over new ones
+                        // if a subform contains a copy of them.
+                        // if you have subforms with the same editable data, you will need to copy the data back
+                        // and forth.
+            }
+            
             if (!f.getName()) {
                 return;
             }
@@ -26171,7 +30576,7 @@ Roo.form.Action.ACTION_TYPES = {
 /**
  * @class Roo.form.Layout
  * @extends Roo.Component
- * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem
+ * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem Roo.form.FieldSet
  * Creates a container for layout and rendering of fields in an {@link Roo.form.Form}.
  * @constructor
  * @param {Object} config Configuration options
@@ -26322,6 +30727,7 @@ Roo.extend(Roo.form.Layout, Roo.Component, {
 /**
  * @class Roo.form.Column
  * @extends Roo.form.Layout
+ * @children Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem Roo.form.FieldSet
  * Creates a column container for layout and rendering of fields in an {@link Roo.form.Form}.
  * @constructor
  * @param {Object} config Configuration options
@@ -26356,7 +30762,7 @@ Roo.extend(Roo.form.Column, Roo.form.Layout, {
 /**
  * @class Roo.form.Row
  * @extends Roo.form.Layout
- * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem
+ * @children Roo.form.Column Roo.form.Row Roo.form.Field Roo.Button Roo.form.TextItem Roo.form.FieldSet
  * Creates a row container for layout and rendering of fields in an {@link Roo.form.Form}.
  * @constructor
  * @param {Object} config Configuration options
@@ -31282,7 +35688,7 @@ Roo.LayoutStateManager.prototype = {
  * @class Roo.ContentPanel
  * @extends Roo.util.Observable
  * @children Roo.form.Form Roo.JsonView Roo.View
- * @parent Roo.BorderLayout Roo.LayoutDialog builder-top
+ * @parent Roo.BorderLayout Roo.LayoutDialog builder
  * A basic ContentPanel element.
  * @cfg {Boolean}   fitToFrame    True for this panel to adjust its size to fit when the region resizes  (defaults to false)
  * @cfg {Boolean}   fitContainer   When using {@link #fitToFrame} and {@link #resizeEl}, you can also fit the parent container  (defaults to false)
@@ -31295,7 +35701,7 @@ Roo.LayoutStateManager.prototype = {
  * @cfg {String} title          The title for this panel
  * @cfg {Array} adjustments     Values to <b>add</b> to the width/height when doing a {@link #fitToFrame} (default is [0, 0])
  * @cfg {String} url            Calls {@link #setUrl} with this value
- * @cfg {String} region [required]   (center|north|south|east|west) which region to put this panel on (when used with xtype constructors)
+ * @cfg {String} region (center|north|south|east|west) [required] which region to put this panel on (when used with xtype constructors)
  * @cfg {String|Object} params  When used with {@link #url}, calls {@link #setUrl} with this value
  * @cfg {Boolean} loadOnce      When used with {@link #url}, calls {@link #setUrl} with this value
  * @cfg {String}    content        Raw content to fill content panel with (uses setContent on construction.)
@@ -31730,17 +36136,32 @@ layout.addxtype({
     }
 });
 
+
+
+
+
+
+
+
+
+
+
+
 /**
  * @class Roo.GridPanel
  * @extends Roo.ContentPanel
+ * @parent Roo.BorderLayout Roo.LayoutDialog builder
  * @constructor
  * Create a new GridPanel.
- * @param {Roo.grid.Grid} grid The grid for this panel
- * @param {String/Object} config A string to set only the panel's title, or a config object
+ * @cfg {Roo.grid.Grid} grid The grid for this panel
  */
 Roo.GridPanel = function(grid, config){
     
-  
+    // universal ctor...
+    if (typeof(grid.grid) != 'undefined') {
+        config = grid;
+        grid = config.grid;
+    }
     this.wrapper = Roo.DomHelper.append(document.body, // wrapper for IE7 strict & safari scroll issue
         {tag: "div", cls: "x-layout-grid-wrapper x-layout-inactive-content"}, true);
         
@@ -31808,6 +36229,10 @@ Roo.extend(Roo.GridPanel, Roo.ContentPanel, {
 /**
  * @class Roo.NestedLayoutPanel
  * @extends Roo.ContentPanel
+ * @parent Roo.BorderLayout Roo.LayoutDialog builder
+ * @cfg {Roo.BorderLayout} layout   [required] The layout for this panel
+ *
+ * 
  * @constructor
  * Create a new NestedLayoutPanel.
  * 
@@ -31844,6 +36269,8 @@ Roo.NestedLayoutPanel = function(layout, config)
 
 Roo.extend(Roo.NestedLayoutPanel, Roo.ContentPanel, {
 
+    layout : false,
+
     setSize : function(width, height){
         if(!this.ignoreResize(width, height)){
             var size = this.adjustForComponents(width, height);
@@ -31894,7 +36321,7 @@ Roo.extend(Roo.NestedLayoutPanel, Roo.ContentPanel, {
     
     /**
      * Returns the nested BorderLayout for this panel
-     * @return {Roo.BorderLayout} 
+     * @return {Roo.BorderLayout}
      */
     getLayout : function(){
         return this.layout;
@@ -31996,6 +36423,7 @@ Roo.extend(Roo.ScrollPanel, Roo.ContentPanel, {
 /**
  * @class Roo.TreePanel
  * @extends Roo.ContentPanel
+ * @parent Roo.BorderLayout Roo.LayoutDialog builder
  * Treepanel component
  * 
  * @constructor
@@ -32050,17 +36478,6 @@ Roo.extend(Roo.TreePanel, Roo.ContentPanel, {
     tree : false
 
 });
-
-
-
-
-
-
-
-
-
-
-
 /*
  * Based on:
  * Ext JS Library 1.1.1
@@ -32609,8 +37026,10 @@ Roo.extend(Roo.grid.Grid, Roo.util.Observable, {
     * @cfg {Roo.dd.DropTarget} dropTarget An {@link Roo.dd.DropTarget} config
     */
     dropTarget: false,
-    
-   
+     /**
+    * @cfg {boolean} sortColMenu Sort the column order menu when it shows (usefull for long lists..) default false
+    */ 
+    sortColMenu : false,
     
     // private
     rendered : false,
@@ -34672,13 +39091,28 @@ Roo.extend(Roo.grid.GridView, Roo.grid.AbstractGridView, {
     beforeColMenuShow : function(){
         var cm = this.cm,  colCount = cm.getColumnCount();
         this.colMenu.removeAll();
+        
+        var items = [];
         for(var i = 0; i < colCount; i++){
-            this.colMenu.add(new Roo.menu.CheckItem({
+            items.push({
                 id: "col-"+cm.getColumnId(i),
                 text: cm.getColumnHeader(i),
                 checked: !cm.isHidden(i),
                 hideOnClick:false
-            }));
+            });
+        }
+        
+        if (this.grid.sortColMenu) {
+            items.sort(function(a,b) {
+                if (a.text == b.text) {
+                    return 0;
+                }
+                return a.text.toUpperCase() > b.text.toUpperCase() ? 1 : -1;
+            });
+        }
+        
+        for(var i = 0; i < colCount; i++){
+            this.colMenu.add(new Roo.menu.CheckItem(items[i]));
         }
     },
 
index 2480ad2..fc04b21 100644 (file)
@@ -305,12 +305,12 @@ A.render(td);var ti=new Roo.Toolbar.Item(td.firstChild);ti.render(td);this.items
 this.disabled=false;this.el.disabled=false;}});Roo.Toolbar.Separator=function(A){var s=document.createElement("span");s.className="ytb-sep";if(A){A.el=s;}Roo.Toolbar.Separator.superclass.constructor.call(this,A||s);};Roo.extend(Roo.Toolbar.Separator,Roo.Toolbar.Item,{enable:Roo.emptyFn,disable:Roo.emptyFn,focus:Roo.emptyFn}
 );Roo.Toolbar.Spacer=function(A){var s=document.createElement("div");s.className="ytb-spacer";if(A){A.el=s;}Roo.Toolbar.Spacer.superclass.constructor.call(this,A||s);};Roo.extend(Roo.Toolbar.Spacer,Roo.Toolbar.Item,{enable:Roo.emptyFn,disable:Roo.emptyFn,focus:Roo.emptyFn}
 );Roo.Toolbar.Fill=Roo.extend(Roo.Toolbar.Spacer,{render:function(td){td.style.width='100%';Roo.Toolbar.Fill.superclass.render.call(this,td);}});Roo.Toolbar.TextItem=function(A){var B=A||"";if(typeof(A)=='object'){B=A.text||"";}else{A=null;}var s=document.createElement("span");
-s.className="ytb-text";s.innerHTML=B;if(A){A.el=s;}Roo.Toolbar.TextItem.superclass.constructor.call(this,A||s);};Roo.extend(Roo.Toolbar.TextItem,Roo.Toolbar.Item,{enable:Roo.emptyFn,disable:Roo.emptyFn,focus:Roo.emptyFn});Roo.Toolbar.Button=function(A){Roo.Toolbar.Button.superclass.constructor.call(this,null,A);
-};Roo.extend(Roo.Toolbar.Button,Roo.Button,{render:function(td){this.td=td;Roo.Toolbar.Button.superclass.render.call(this,td);},destroy:function(){Roo.Toolbar.Button.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;
-this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";},disable:function(){Roo.fly(this.td).addClass("x-item-disabled");this.disabled=true;},enable:function(){Roo.fly(this.td).removeClass("x-item-disabled");this.disabled=false;
-}});Roo.ToolbarButton=Roo.Toolbar.Button;Roo.Toolbar.SplitButton=function(A){Roo.Toolbar.SplitButton.superclass.constructor.call(this,null,A);};Roo.extend(Roo.Toolbar.SplitButton,Roo.SplitButton,{render:function(td){this.td=td;Roo.Toolbar.SplitButton.superclass.render.call(this,td);
-},destroy:function(){Roo.Toolbar.SplitButton.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";}});Roo.Toolbar.MenuButton=Roo.Toolbar.SplitButton;
-
+s.className="ytb-text";s.innerHTML=B;if(A){A.el=s;}Roo.Toolbar.TextItem.superclass.constructor.call(this,A||s);};Roo.extend(Roo.Toolbar.TextItem,Roo.Toolbar.Item,{enable:Roo.emptyFn,disable:Roo.emptyFn,focus:Roo.emptyFn,show:function(){this.hidden=false;this.el.style.display="";
+},hide:function(){this.hidden=true;this.el.style.display="none";}});Roo.Toolbar.Button=function(A){Roo.Toolbar.Button.superclass.constructor.call(this,null,A);};Roo.extend(Roo.Toolbar.Button,Roo.Button,{render:function(td){this.td=td;Roo.Toolbar.Button.superclass.render.call(this,td);
+},destroy:function(){Roo.Toolbar.Button.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";},disable:function(){Roo.fly(this.td).addClass("x-item-disabled");
+this.disabled=true;},enable:function(){Roo.fly(this.td).removeClass("x-item-disabled");this.disabled=false;}});Roo.ToolbarButton=Roo.Toolbar.Button;Roo.Toolbar.SplitButton=function(A){Roo.Toolbar.SplitButton.superclass.constructor.call(this,null,A);};Roo.extend(Roo.Toolbar.SplitButton,Roo.SplitButton,{render:function(td){this.td=td;
+Roo.Toolbar.SplitButton.superclass.render.call(this,td);},destroy:function(){Roo.Toolbar.SplitButton.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;
+this.td.style.display="none";}});Roo.Toolbar.MenuButton=Roo.Toolbar.SplitButton;
 // Roo/PagingToolbar.js
 Roo.PagingToolbar=function(el,ds,A){if(typeof(el)=='object'&&el.xtype){A=el;ds=el.dataSource;el=A.container;}var B=[];if(A.items){B=A.items;A.items=[];}Roo.PagingToolbar.superclass.constructor.call(this,el,null,A);this.ds=ds;this.cursor=0;this.renderButtons(this.el);
 this.bind(ds);Roo.each(B,function(e){this.add(Roo.factory(e));},this);};Roo.extend(Roo.PagingToolbar,Roo.Toolbar,{pageSize:20,displayMsg:'Displaying {0} - {1} of {2}',emptyMsg:'No data to display',beforePageText:"Page",afterPageText:"of {0}",firstText:"First Page",prevText:"Previous Page",nextText:"Next Page",lastText:"Last Page",refreshText:"Refresh",renderButtons:function(el){Roo.PagingToolbar.superclass.render.call(this,el);
@@ -447,7 +447,7 @@ E.dom.style.overflowY='auto'+(Roo.isIE?'':' !important');}else{E.dom.style.heigh
 Roo.log("[Roo.Messagebox] Show called while message displayed:");Roo.log("Old Dialog Message:"+F.innerHTML);Roo.log("New Dialog Message:"+Q.msg)}var d=this.getDialog();B=Q;d.setTitle(B.title||"&#160;");d.close.setDisplayed(B.closable!==false);K=G;B.prompt=B.prompt||(B.multiline?true:false);
 if(B.prompt){if(B.multiline){G.hide();H.show();H.setHeight(typeof B.multiline=="number"?B.multiline:this.defaultTextHeight);K=H;}else{G.show();H.hide();}}else{G.hide();H.hide();}I.setDisplayed(B.progress===true);this.updateProgress(0);K.dom.value=B.value||"";
 if(B.prompt){A.setDefaultButton(K);}else{var bs=B.buttons;var db=null;if(bs&&bs.ok){db=J["ok"];}else if(bs&&bs.yes){db=J["yes"];}A.setDefaultButton(db);}L=O(B.buttons);this.updateText(B.msg);if(B.cls){d.el.addClass(B.cls);}d.proxyDrag=B.proxyDrag===true;d.modal=B.modal!==false;
-d.mask=B.modal!==false?C:false;if(!d.isVisible()){document.body.appendChild(A.el.dom);d.animateTarget=null;d.show(Q.animEl);}return this;},progress:function(Q,R){this.show({title:Q,msg:R,buttons:false,progress:true,closable:false,minWidth:this.minProgressWidth,modal:true}
+d.mask=B.modal!==false?C:false;if(!d.isVisible()){document.body.appendChild(A.el.dom);d.animateTarget=null;d.show(Q.animEl);}A.toFront();return this;},progress:function(Q,R){this.show({title:Q,msg:R,buttons:false,progress:true,closable:false,minWidth:this.minProgressWidth,modal:true}
 );return this;},alert:function(Q,R,fn,S){this.show({title:Q,msg:R,buttons:this.OK,fn:fn,scope:S,modal:true});return this;},wait:function(Q,R){this.show({title:R,msg:Q,buttons:false,closable:false,progress:true,modal:true,width:300,wait:true});D=Roo.TaskMgr.start({run:function(i){Roo.MessageBox.updateProgress(((((i+20)%20)+1)*5)*.01);
 },interval:1000});return this;},confirm:function(Q,R,fn,S){this.show({title:Q,msg:R,buttons:this.YESNO,fn:fn,scope:S,modal:true});return this;},prompt:function(Q,R,fn,S,T){this.show({title:Q,msg:R,buttons:this.OKCANCEL,fn:fn,minWidth:250,scope:S,prompt:true,multiline:T,modal:true}
 );return this;},OK:{ok:true},YESNO:{yes:true,no:true},OKCANCEL:{ok:true,cancel:true},YESNOCANCEL:{yes:true,no:true,cancel:true},defaultTextHeight:75,maxWidth:600,minWidth:100,minProgressWidth:250,buttonText:{ok:"OK",cancel:"Cancel",yes:"Yes",no:"No"}};}();
@@ -767,17 +767,18 @@ return false;}if(B<this.minValue){this.markInvalid(String.format(this.minText,th
 if(v){this.setValue(v);}}});
 // Roo/form/DateField.js
 Roo.form.DateField=function(A){Roo.form.DateField.superclass.constructor.call(this,A);this.addEvents({'select':true});if(typeof this.minValue=="string"){this.minValue=this.parseDate(this.minValue);}if(typeof this.maxValue=="string"){this.maxValue=this.parseDate(this.maxValue);
-}this.ddMatch=null;if(this.disabledDates){var dd=this.disabledDates;var re="(?:";for(var i=0;i<dd.length;i++){re+=dd[i];if(i!=dd.length-1){re+="|";}}this.ddMatch=new RegExp(re+")");}};Roo.extend(Roo.form.DateField,Roo.form.TriggerField,{format:"m/d/y",altFormats:"m/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d",disabledDays:null,disabledDaysText:"Disabled",disabledDates:null,disabledDatesText:"Disabled",minValue:null,maxValue:null,minText:"The date in this field must be equal to or after {0}",maxText:"The date in this field must be equal to or before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerClass:'x-form-date-trigger',useIso:false,defaultAutoCreate:{tag:"input",type:"text",size:"10",autocomplete:"off"}
+}this.ddMatch=null;if(this.disabledDates){var dd=this.disabledDates;var re="(?:";for(var i=0;i<dd.length;i++){re+=dd[i];if(i!=dd.length-1){re+="|";}}this.ddMatch=new RegExp(re+")");}};Roo.extend(Roo.form.DateField,Roo.form.TriggerField,{format:"m/d/y",altFormats:"m/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d",disabledDays:null,disabledDaysText:"Disabled",disabledDates:null,disabledDatesText:"Disabled",zeroValue:'1800-01-01',minValue:null,maxValue:null,minText:"The date in this field must be equal to or after {0}",maxText:"The date in this field must be equal to or before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerClass:'x-form-date-trigger',useIso:false,defaultAutoCreate:{tag:"input",type:"text",size:"10",autocomplete:"off"}
 ,hiddenField:false,onRender:function(ct,A){Roo.form.DateField.superclass.onRender.call(this,ct,A);if(this.useIso){Roo.log("Changing name?");this.el.dom.setAttribute('name',this.name+'____hidden___');this.hiddenField=this.el.insertSibling({tag:'input',type:'hidden',name:this.name}
 ,'before',true);this.hiddenField.value=this.value?this.formatDate(this.value,'Y-m-d'):'';this.hiddenName=this.name;}},validateValue:function(A){A=this.formatDate(A);if(!Roo.form.DateField.superclass.validateValue.call(this,A)){Roo.log('super failed');return false;
 }if(A.length<1){return true;}var B=A;A=this.parseDate(A);if(!A){Roo.log('parse date failed'+B);this.markInvalid(String.format(this.invalidText,B,this.format));return false;}var C=A.getTime();if(this.minValue&&C<this.minValue.getTime()){this.markInvalid(String.format(this.minText,this.formatDate(this.minValue)));
 return false;}if(this.maxValue&&C>this.maxValue.getTime()){this.markInvalid(String.format(this.maxText,this.formatDate(this.maxValue)));return false;}if(this.disabledDays){var D=A.getDay();for(var i=0;i<this.disabledDays.length;i++){if(D===this.disabledDays[i]){this.markInvalid(this.disabledDaysText);
 return false;}}}var E=this.formatDate(A);if(this.ddMatch&&this.ddMatch.test(E)){this.markInvalid(String.format(this.disabledDatesText,E));return false;}return true;},validateBlur:function(){return !this.menu||!this.menu.isVisible();},getName:function(){if(!this.rendered){return ''}
 ;return !this.hiddenName&&this.el.dom.name?this.el.dom.name:(this.hiddenName||'');},getValue:function(){return this.hiddenField?this.hiddenField.value:this.parseDate(Roo.form.DateField.superclass.getValue.call(this))||"";},setValue:function(A){if(this.hiddenField){this.hiddenField.value=this.formatDate(this.parseDate(A),'Y-m-d');
-}Roo.form.DateField.superclass.setValue.call(this,this.formatDate(this.parseDate(A)));this.value=this.parseDate(A);},parseDate:function(A){if(!A||A instanceof Date){return A;}var v=Date.parseDate(A,this.format);if(!v&&this.useIso){v=Date.parseDate(A,'Y-m-d');
-}if(!v&&this.altFormats){if(!this.altFormatsArray){this.altFormatsArray=this.altFormats.split("|");}for(var i=0,B=this.altFormatsArray.length;i<B&&!v;i++){v=Date.parseDate(A,this.altFormatsArray[i]);}}return v;},formatDate:function(A,B){return (!A||!(A instanceof Date))?A:A.dateFormat(B||this.format);
-},menuListeners:{select:function(m,d){this.setValue(d);this.fireEvent('select',this,d);},show:function(){this.onFocus();},hide:function(){this.focus.defer(10,this);var ml=this.menuListeners;this.menu.un("select",ml.select,this);this.menu.un("show",ml.show,this);
-this.menu.un("hide",ml.hide,this);}},onTriggerClick:function(){if(this.disabled){return;}if(this.menu==null){this.menu=new Roo.menu.DateMenu();}Roo.apply(this.menu.picker,{showClear:this.allowBlank,minDate:this.minValue,maxDate:this.maxValue,disabledDatesRE:this.ddMatch,disabledDatesText:this.disabledDatesText,disabledDays:this.disabledDays,disabledDaysText:this.disabledDaysText,format:this.useIso?'Y-m-d':this.format,minText:String.format(this.minText,this.formatDate(this.minValue)),maxText:String.format(this.maxText,this.formatDate(this.maxValue))}
+}Roo.form.DateField.superclass.setValue.call(this,this.formatDate(this.parseDate(A)));this.value=this.parseDate(A);},parseDate:function(A){if(A instanceof Date){if(A<Date.parseDate(this.zeroValue,'Y-m-d')){return '';}return A;}if(!A||A instanceof Date){return A;
+}var v=Date.parseDate(A,this.format);if(!v&&this.useIso){v=Date.parseDate(A,'Y-m-d');}if(!v&&this.altFormats){if(!this.altFormatsArray){this.altFormatsArray=this.altFormats.split("|");}for(var i=0,B=this.altFormatsArray.length;i<B&&!v;i++){v=Date.parseDate(A,this.altFormatsArray[i]);
+}}if(v<Date.parseDate(this.zeroValue,'Y-m-d')){v='';}return v;},formatDate:function(A,B){return (!A||!(A instanceof Date))?A:A.dateFormat(B||this.format);},menuListeners:{select:function(m,d){this.setValue(d);this.fireEvent('select',this,d);},show:function(){this.onFocus();
+},hide:function(){this.focus.defer(10,this);var ml=this.menuListeners;this.menu.un("select",ml.select,this);this.menu.un("show",ml.show,this);this.menu.un("hide",ml.hide,this);}},onTriggerClick:function(){if(this.disabled){return;}if(this.menu==null){this.menu=new Roo.menu.DateMenu();
+}Roo.apply(this.menu.picker,{showClear:this.allowBlank,minDate:this.minValue,maxDate:this.maxValue,disabledDatesRE:this.ddMatch,disabledDatesText:this.disabledDatesText,disabledDays:this.disabledDays,disabledDaysText:this.disabledDaysText,format:this.useIso?'Y-m-d':this.format,minText:String.format(this.minText,this.formatDate(this.minValue)),maxText:String.format(this.maxText,this.formatDate(this.maxValue))}
 );this.menu.on(Roo.apply({},this.menuListeners,{scope:this}));this.menu.picker.setValue(this.getValue()||new Date());this.menu.show(this.el,"tl-bl?");},beforeBlur:function(){var v=this.parseDate(this.getRawValue());if(v){this.setValue(v);}},isDirty:function(){if(this.disabled){return false;
 }if(typeof(this.startValue)==='undefined'){return false;}return String(this.getValue())!==String(this.startValue);},cleanLeadingSpace:function(e){return;}});
 // Roo/form/MonthField.js
@@ -904,98 +905,295 @@ this.el.on('DOMAttrModified',this.setFromHidden,this);this.el.on('propertychange
 Roo.form.Radio=function(){Roo.form.Radio.superclass.constructor.apply(this,arguments);};Roo.extend(Roo.form.Radio,Roo.form.Checkbox,{inputType:'radio',getGroupValue:function(){return this.el.up('form').child('input[name='+this.el.dom.name+']:checked',true).value;
 },onRender:function(ct,A){Roo.form.Checkbox.superclass.onRender.call(this,ct,A);if(this.inputValue!==undefined){this.el.dom.value=this.inputValue;}this.wrap=this.el.wrap({cls:"x-form-check-wrap"});if(this.boxLabel){this.wrap.createChild({tag:'label',htmlFor:this.el.id,cls:'x-form-cb-label',html:this.boxLabel}
 );}if(this.checked){this.el.dom.checked='checked';}}});
+// Roo/rtf/namespace.js
+Roo.rtf={};
+// Roo/rtf/Hex.js
+Roo.rtf.Hex=function(A){this.hexstr=A;};
+// Roo/rtf/Paragraph.js
+Roo.rtf.Paragraph=function(A){this.content=[];};
+// Roo/rtf/Span.js
+Roo.rtf.Span=function(A){this.value=A.value;};
+// Roo/rtf/Group.js
+Roo.rtf.Group=function(A){this.content=[];this.cn=[];};Roo.rtf.Group.prototype={ignorable:false,content:false,cn:false,addContent:function(A){this.content.push(A);},addChild:function(cn){this.cn.push(cn);},toDataURL:function(){var A=false;switch(true){case this.content.filter(function(a){return a.value=='pngblip'}
+).length>0:A="image/png";break;case this.content.filter(function(a){return a.value=='jpegblip'}).length>0:A="image/jpeg";break;default:return 'about:blank';}var B=this.content[this.content.length-1].value;return 'data:'+A+';base64,'+btoa(B.match(/\w{2}/g).map(function(a){return String.fromCharCode(parseInt(a,16));
+}).join(""));}};
+// Roo/rtf/Document.js
+Roo.rtf.Document=function(){this.rtlch=[];this.content=[];this.cn=[];};Roo.extend(Roo.rtf.Document,Roo.rtf.Group,{addChild:function(cn){this.cn.push(cn);switch(cn.type){case 'rtlch':case 'listtext':case 'shpinst':this.rtlch.push(cn);return;default:this[cn.type]=cn;
+}},getElementsByType:function(A){var B=[];this._getElementsByType(A,B,this.cn,'rtf');return B;},_getElementsByType:function(A,B,C,D){C.forEach(function(n,i){if(n.type==A){n.path=D+'/'+n.type+':'+i;B.push(n);}if(n.cn.length>0){this._getElementsByType(A,B,n.cn,D+'/'+n.type+':'+i);
+}},this);}});
+// Roo/rtf/Ctrl.js
+Roo.rtf.Ctrl=function(A){this.value=A.value;this.param=A.param;};
+// Roo/rtf/Parser.js
+Roo.rtf.Parser=function(A){this.text='';this.parserState=this.parseText;this.doc={};this.groupStack=[];this.hexStore=[];this.doc=false;this.groups=[];for(var ii=0;ii<A.length;++ii){++this.cpos;if(A[ii]==='\n'){++this.row;this.col=1;}else{++this.col;}this.parserState(A[ii]);
+}};Roo.rtf.Parser.prototype={text:'',controlWord:'',controlWordParam:'',hexChar:'',doc:false,group:false,groupStack:false,hexStore:false,cpos:0,row:1,col:1,push:function(el){var m='cmd'+el.type;if(typeof(this[m])=='undefined'){Roo.log('invalid cmd:'+el.type);
+return;}this[m](el);},flushHexStore:function(){if(this.hexStore.length<1){return;}var A=this.hexStore.map(function(B){return B.value;}).join('');this.group.addContent(new Roo.rtf.Hex(A));this.hexStore.splice(0)},cmdgroupstart:function(){this.flushHexStore();
+if(this.group){this.groupStack.push(this.group);}if(this.doc===false){this.group=this.doc=new Roo.rtf.Document();return;}this.group=new Roo.rtf.Group(this.group);},cmdignorable:function(){this.flushHexStore();this.group.ignorable=true;},cmdendparagraph:function(){this.flushHexStore();
+this.group.addContent(new Roo.rtf.Paragraph());},cmdgroupend:function(){this.flushHexStore();var A=this.group;this.group=this.groupStack.pop();if(this.group){this.group.addChild(A);}var B=this.group||this.doc;if(A.ignorable===false){this.groups.push(A);}}
+,cmdtext:function(A){this.flushHexStore();if(!this.group){}this.group.addContent(new Roo.rtf.Span(A));},cmdcontrolword:function(A){this.flushHexStore();if(!this.group.type){this.group.type=A.value;return;}this.group.addContent(new Roo.rtf.Ctrl(A));return;
+},cmdhexchar:function(A){this.hexStore.push(A);},cmderror:function(A){throw new Exception(A.value);},parseText:function(c){if(c==='\\'){this.parserState=this.parseEscapes;}else if(c==='{'){this.emitStartGroup();}else if(c==='}'){this.emitEndGroup();}else if(c==='\x0A'||c==='\x0D'){}
+else{this.text+=c;}},parseEscapes:function(c){if(c==='\\'||c==='{'||c==='}'){this.text+=c;this.parserState=this.parseText;}else{this.parserState=this.parseControlSymbol;this.parseControlSymbol(c);}},parseControlSymbol:function(c){if(c==='~'){this.text+='\u00a0';
+this.parserState=this.parseText}else if(c==='-'){this.text+='\u00ad';}else if(c==='_'){this.text+='\u2011';}else if(c==='*'){this.emitIgnorable();this.parserState=this.parseText;}else if(c==="'"){this.parserState=this.parseHexChar;}else if(c==='|'){this.emitFormula();
+this.parserState=this.parseText;}else if(c===':'){this.emitIndexSubEntry();this.parserState=this.parseText;}else if(c==='\x0a'){this.emitEndParagraph();this.parserState=this.parseText;}else if(c==='\x0d'){this.emitEndParagraph();this.parserState=this.parseText;
+}else{this.parserState=this.parseControlWord;this.parseControlWord(c);}},parseHexChar:function(c){if(/^[A-Fa-f0-9]$/.test(c)){this.hexChar+=c;if(this.hexChar.length>=2){this.emitHexChar();this.parserState=this.parseText;}return;}this.emitError("Invalid character \""+c+"\" in hex literal.");
+this.parserState=this.parseText;},parseControlWord:function(c){if(c===' '){this.emitControlWord();this.parserState=this.parseText;}else if(/^[-\d]$/.test(c)){this.parserState=this.parseControlWordParam;this.controlWordParam+=c;}else if(/^[A-Za-z]$/.test(c)){this.controlWord+=c;
+}else{this.emitControlWord();this.parserState=this.parseText;this.parseText(c);}},parseControlWordParam:function(c){if(/^\d$/.test(c)){this.controlWordParam+=c;}else if(c===' '){this.emitControlWord();this.parserState=this.parseText;}else{this.emitControlWord();
+this.parserState=this.parseText;this.parseText(c);}},emitText:function(){if(this.text===''){return;}this.push({type:'text',value:this.text,pos:this.cpos,row:this.row,col:this.col});this.text=''},emitControlWord:function(){this.emitText();if(this.controlWord===''){this.emitError('empty control word');
+}else{this.push({type:'controlword',value:this.controlWord,param:this.controlWordParam!==''&&Number(this.controlWordParam),pos:this.cpos,row:this.row,col:this.col});}this.controlWord='';this.controlWordParam='';},emitStartGroup:function(){this.emitText();
+this.push({type:'groupstart',pos:this.cpos,row:this.row,col:this.col});},emitEndGroup:function(){this.emitText();this.push({type:'groupend',pos:this.cpos,row:this.row,col:this.col});},emitIgnorable:function(){this.emitText();this.push({type:'ignorable',pos:this.cpos,row:this.row,col:this.col}
+);},emitHexChar:function(){this.emitText();this.push({type:'hexchar',value:this.hexChar,pos:this.cpos,row:this.row,col:this.col});this.hexChar=''},emitError:function(A){this.emitText();this.push({type:'error',value:A,row:this.row,col:this.col,char:this.cpos}
+);},emitEndParagraph:function(){this.emitText();this.push({type:'endparagraph',pos:this.cpos,row:this.row,col:this.col});}};
+// Roo/htmleditor/namespace.js
+Roo.htmleditor={};
+// Roo/htmleditor/Filter.js
+Roo.htmleditor.Filter=function(A){Roo.apply(this.cfg);};Roo.htmleditor.Filter.prototype={node:false,tag:false,replaceComment:false,replaceTag:false,walk:function(A){Roo.each(Array.from(A.childNodes),function(e){switch(true){case e.nodeType==8&&this.replaceComment!==false:this.replaceComment(e);
+return;case e.nodeType!=1:return;case this.tag===true:case typeof(this.tag)=='object'&&this.tag.indexOf(e.tagName)>-1:case typeof(this.tag)=='string'&&this.tag==e.tagName:if(this.replaceTag&&false===this.replaceTag(e)){return;}if(e.hasChildNodes()){this.walk(e);
+}return;default:if(e.hasChildNodes()){this.walk(e);}}},this);}};
+// Roo/htmleditor/FilterAttributes.js
+Roo.htmleditor.FilterAttributes=function(A){Roo.apply(this,A);this.attrib_black=this.attrib_black||[];this.attrib_white=this.attrib_white||[];this.attrib_clean=this.attrib_clean||[];this.style_white=this.style_white||[];this.style_black=this.style_black||[];
+this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterAttributes,Roo.htmleditor.Filter,{tag:true,attrib_black:false,attrib_clean:false,attrib_white:false,style_white:false,style_black:false,replaceTag:function(A){if(!A.attributes||!A.attributes.length){return true;
+}for(var i=A.attributes.length-1;i>-1;i--){var a=A.attributes[i];if(this.attrib_white.length&&this.attrib_white.indexOf(a.name.toLowerCase())<0){A.removeAttribute(a.name);continue;}if(a.name.toLowerCase().substr(0,2)=='on'){A.removeAttribute(a.name);continue;
+}if(this.attrib_black.indexOf(a.name.toLowerCase())>-1){A.removeAttribute(a.name);continue;}if(this.attrib_clean.indexOf(a.name.toLowerCase())>-1){this.cleanAttr(A,a.name,a.value);continue;}if(a.name=='style'){this.cleanStyle(A,a.name,a.value);continue;}if(a.name=='class'){if(a.value.match(/^Mso/)){A.removeAttribute('class');
+}if(a.value.match(/^body$/)){A.removeAttribute('class');}continue;}}return true;},cleanAttr:function(A,n,v){if(v.match(/^\./)||v.match(/^\//)){return;}if(v.match(/^(http|https):\/\//)||v.match(/^mailto:/)||v.match(/^ftp:/)||v.match(/^data:/)){return;}if(v.match(/^#/)){return;
+}if(v.match(/^\{/)){return;}A.removeAttribute(n);},cleanStyle:function(A,n,v){if(v.match(/expression/)){A.removeAttribute(n);return;}var B=v.split(/;/);var C=[];Roo.each(B,function(p){p=p.replace(/^\s+/g,'').replace(/\s+$/g,'');if(!p.length){return true;}
+var l=p.split(':').shift().replace(/\s+/g,'');l=l.replace(/^\s+/g,'').replace(/\s+$/g,'');if(this.style_black.length&&(this.style_black.indexOf(l)>-1||this.style_black.indexOf(l.toLowerCase())>-1)){return true;}if(this.style_white.length&&style_white.indexOf(l)<0&&style_white.indexOf(l.toLowerCase())<0){return true;
+}C.push(p);return true;},this);if(C.length){A.setAttribute(n,C.join(';'));}else{A.removeAttribute(n);}}});
+// Roo/htmleditor/FilterBlack.js
+Roo.htmleditor.FilterBlack=function(A){Roo.apply(this,A);this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterBlack,Roo.htmleditor.Filter,{tag:true,replaceTag:function(n){n.parentNode.removeChild(n);}});
+// Roo/htmleditor/FilterComment.js
+Roo.htmleditor.FilterComment=function(A){this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterComment,Roo.htmleditor.Filter,{replaceComment:function(n){n.parentNode.removeChild(n);}});
+// Roo/htmleditor/FilterKeepChildren.js
+Roo.htmleditor.FilterKeepChildren=function(A){Roo.apply(this,A);if(this.tag===false){return;}this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterKeepChildren,Roo.htmleditor.FilterBlack,{replaceTag:function(A){var ar=Array.from(A.childNodes);for(var i=0;i<ar.length;
+i++){if(ar[i].nodeType==1){if((typeof(this.tag)=='object'&&this.tag.indexOf(ar[i].tagName)>-1)||(typeof(this.tag)=='string'&&this.tag==ar[i].tagName)){this.replaceTag(ar[i]);continue;}}}ar=Array.from(A.childNodes);for(var i=0;i<ar.length;i++){A.removeChild(ar[i]);
+A.parentNode.insertBefore(ar[i],A);if(this.tag!==false){this.walk(ar[i]);}}A.parentNode.removeChild(A);return false;}});
+// Roo/htmleditor/FilterParagraph.js
+Roo.htmleditor.FilterParagraph=function(A){this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterParagraph,Roo.htmleditor.Filter,{tag:'P',replaceTag:function(A){if(A.childNodes.length==1&&A.childNodes[0].nodeType==3&&A.childNodes[0].textContent.trim().length<1){A.parentNode.replaceChild(A.ownerDocument.createElement('BR'),A);
+return false;}var ar=Array.from(A.childNodes);for(var i=0;i<ar.length;i++){A.removeChild(ar[i]);A.parentNode.insertBefore(ar[i],A);}A.parentNode.insertBefore(A.ownerDocument.createElement('BR'),A);A.parentNode.insertBefore(A.ownerDocument.createElement('BR'),A);
+A.parentNode.removeChild(A);return false;}});
+// Roo/htmleditor/FilterSpan.js
+Roo.htmleditor.FilterSpan=function(A){this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterSpan,Roo.htmleditor.FilterKeepChildren,{tag:'SPAN',replaceTag:function(A){if(A.attributes&&A.attributes.length>0){return true;}Roo.htmleditor.FilterKeepChildren.prototype.replaceTag.call(this,A);
+return false;}});
+// Roo/htmleditor/FilterTableWidth.js
+Roo.htmleditor.FilterTableWidth=function(A){this.tag=['TABLE','TD','TR','TH','THEAD','TBODY'];this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterTableWidth,Roo.htmleditor.Filter,{replaceTag:function(A){if(A.hasAttribute('width')){A.removeAttribute('width');
+}if(A.hasAttribute("style")){var B=A.getAttribute("style").split(";");var C=[];Roo.each(B,function(s){if(!s.match(/:/)){return;}var kv=s.split(":");if(kv[0].match(/^\s*(width|min-width)\s*$/)){return;}C.push(s);});A.setAttribute("style",C.length?C.join(';'):'');
+if(!C.length){A.removeAttribute('style');}}return true;}});
+// Roo/htmleditor/FilterWord.js
+Roo.htmleditor.FilterWord=function(A){this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterWord,Roo.htmleditor.Filter,{tag:true,replaceTag:function(A){if(A.nodeName=='SPAN'&&!A.hasAttributes()&&A.childNodes.length==1&&A.firstChild.nodeName=="#text"){var B=A.firstChild;
+A.removeChild(B);if(A.getAttribute('lang')!='zh-CN'){A.parentNode.insertBefore(A.ownerDocument.createTextNode(" "),A);}A.parentNode.insertBefore(B,A);if(A.getAttribute('lang')!='zh-CN'){A.parentNode.insertBefore(A.ownerDocument.createTextNode(" "),A);}A.parentNode.removeChild(A);
+return false;}if(A.tagName.toLowerCase().match(/^(style|script|applet|embed|noframes|noscript)$/)){A.parentNode.removeChild(A);return false;}if(A.tagName.toLowerCase().match(/^(meta|link|\\?xml:|st1:|o:|v:|font)/)){while(A.childNodes.length){var cn=A.childNodes[0];
+A.removeChild(cn);A.parentNode.insertBefore(cn,A);this.replaceTag(cn);}A.parentNode.removeChild(A);return false;}if(A.className.length){var cn=A.className.split(/\W+/);var C=[];Roo.each(cn,function(F){if(F.match(/Mso[a-zA-Z]+/)){return;}C.push(F);});A.className=C.length?C.join(' '):'';
+if(!C.length){A.removeAttribute("class");}}if(A.hasAttribute("lang")){A.removeAttribute("lang");}if(A.hasAttribute("style")){var D=A.getAttribute("style").split(";");var E=[];Roo.each(D,function(s){if(!s.match(/:/)){return;}var kv=s.split(":");if(kv[0].match(/^(mso-|line|font|background|margin|padding|color)/)){return;
+}E.push(s);});A.setAttribute("style",E.length?E.join(';'):'');if(!E.length){A.removeAttribute('style');}}return true;}});
+// Roo/htmleditor/FilterStyleToTag.js
+Roo.htmleditor.FilterStyleToTag=function(A){this.tags={B:['fontWeight','bold'],I:['fontStyle','italic'],SUP:['verticalAlign','super'],SUB:['verticalAlign','sub']};Roo.apply(this,A);this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterStyleToTag,Roo.htmleditor.Filter,{tag:true,tags:false,replaceTag:function(A){if(A.getAttribute("style")===null){return true;
+}var B=[];for(var k in this.tags){if(A.style[this.tags[k][0]]==this.tags[k][1]){B.push(k);A.style.removeProperty(this.tags[k][0]);}}if(!B.length){return true;}var cn=Array.from(A.childNodes);var nn=A;Roo.each(B,function(t){var nc=A.ownerDocument.createElement(t);
+nn.appendChild(nc);nn=nc;});for(var i=0;i<cn.length;cn++){A.removeChild(cn[i]);nn.appendChild(cn[i]);}return true}})
+// Roo/htmleditor/FilterLongBr.js
+Roo.htmleditor.FilterLongBr=function(A){this.walk(A.node);};Roo.extend(Roo.htmleditor.FilterLongBr,Roo.htmleditor.Filter,{tag:'BR',replaceTag:function(A){var ps=A.nextSibling;while(ps&&ps.nodeType==3&&ps.nodeValue.trim().length<1){ps=ps.nextSibling;}if(!ps&&['TD','TH','LI','H1','H2','H3','H4','H5','H6'].indexOf(A.parentNode.tagName)>-1){A.parentNode.removeChild(A);
+return false;}if(!ps||ps.nodeType!=1){return false;}if(!ps||ps.tagName!='BR'){return false;}if(!A.previousSibling){return false;}var ps=A.previousSibling;while(ps&&ps.nodeType==3&&ps.nodeValue.trim().length<1){ps=ps.previousSibling;}if(!ps||ps.nodeType!=1){return false;
+}if(!ps||['BR','H1','H2','H3','H4','H5','H6'].indexOf(ps.tagName)<0){return false;}A.parentNode.removeChild(A);return false;}});
+// Roo/htmleditor/FilterBlock.js
+Roo.htmleditor.FilterBlock=function(A){Roo.apply(this,A);var qa=A.node.querySelectorAll;this.removeAttributes('data-block');this.removeAttributes('contenteditable');this.removeAttributes('id');};Roo.apply(Roo.htmleditor.FilterBlock.prototype,{node:true,removeAttributes:function(A){var ar=this.node.querySelectorAll('*['+A+']');
+for(var i=0;i<ar.length;i++){ar[i].removeAttribute(A);}}});
+// Roo/htmleditor/TidySerializer.js
+Roo.htmleditor.TidySerializer=function(A){Roo.apply(this,A);this.writer=new Roo.htmleditor.TidyWriter(A);};Roo.htmleditor.TidySerializer.prototype={inner:false,writer:false,serialize:function(A){var B=this.writer;var C=this;this.handlers={3:function(D){B.text(D.nodeValue,D);
+},8:function(D){B.comment(D.nodeValue);},7:function(D){B.pi(D.name,D.nodeValue);},10:function(D){B.doctype(D.nodeValue);},4:function(D){B.cdata(D.nodeValue);},11:function(D){D=D.firstChild;if(!D){return;}while(D){C.walk(D);D=D.nextSibling}}};B.reset();1!=A.nodeType||this.inner?this.handlers[11](A):this.walk(A);
+return B.getContent();},walk:function(A){var B,C,D,i,l,E,F=this.handlers[A.nodeType];if(F){F(A);return;}var G=A.nodeName;var H=A.childNodes.length<1;var I=this.writer;var J=A.attributes;I.start(A.nodeName,J,H,A);if(H){return;}A=A.firstChild;if(!A){I.end(G);
+return;}while(A){this.walk(A);A=A.nextSibling;}I.end(G);}};
+// Roo/htmleditor/TidyWriter.js
+Roo.htmleditor.TidyWriter=function(A){Roo.apply(this,A);this.html=[];this.state=[];this.encode=Roo.htmleditor.TidyEntities.getEncodeFunc(A.entity_encoding||'raw',A.entities);};Roo.htmleditor.TidyWriter.prototype={state:false,indent:'  ',indentstr:'',in_pre:false,in_inline:false,last_inline:false,encode:false,start:function(A,B,C,D){var i,l,E,F;
+var G=this.in_inline||Roo.htmleditor.TidyWriter.inline_elements.indexOf(A)>-1;var H=this.in_pre||Roo.htmleditor.TidyWriter.whitespace_elements.indexOf(A)>-1;var I=C?Roo.htmleditor.TidyWriter.shortend_elements.indexOf(A)>-1:false;var J=A=='BR'?false:G;if(!J&&!this.in_pre&&this.lastElementEndsWS()){i_inline=false;
+}var K=this.indentstr;if(!this.in_pre){if(G){if(A=='BR'){this.addLine();}else if(this.lastElementEndsWS()){this.addLine();}else{K='';}}else{this.addLine();}}else{K='';}this.html.push(K+'<',A.toLowerCase());if(B){for(i=0,l=B.length;i<l;i++){E=B[i];this.html.push(' ',E.name,'="',this.encode(E.value,true),'"');
+}}if(C){if(I){this.html[this.html.length]='/>';}else{this.html[this.html.length]='></'+A.toLowerCase()+'>';}var L=A=='BR'?false:this.in_inline;if(!L&&!this.in_pre){this.addLine();}return;}this.html[this.html.length]='>';this.pushState({indentstr:H?'':(this.indentstr+this.indent),in_pre:H,in_inline:G}
+);if(!G&&!H){this.addLine();}},lastElementEndsWS:function(){var A=this.html.length>0?this.html[this.html.length-1]:false;if(A===false){return true;}return A.match(/\s+$/);},end:function(A){var B;this.popState();var C='';var D=this.in_inline||Roo.htmleditor.TidyWriter.inline_elements.indexOf(A)>-1;
+if(!this.in_pre&&!D){this.addLine();C=this.indentstr;}this.html.push(C+'</',A.toLowerCase(),'>');this.last_inline=D;},text:function(A,B){if(A.length<1){return;}if(this.in_pre){this.html[this.html.length]=A;return;}if(this.in_inline){A=A.replace(/\s+/g,' ');
+if(A!=' '){A=A.replace(/\s+/,' ');if(B.nextSibling&&B.nextSibling.nodeType==1&&B.nextSibling.nodeName=='BR'){A=A.replace(/\s+$/g,'');}if(B.previousSibling&&B.previousSibling.nodeType==1&&B.previousSibling.nodeName=='BR'){A=this.indentstr+A.replace(/^\s+/g,'');
+}if(A.match(/\n/)){A=A.replace(/(?![^\n]{1,64}$)([^\n]{1,64})\s/g,'$1\n'+this.indentstr);A=A.replace(/\n\s+$/,'');}}this.html[this.html.length]=A;return;}var C=this.indentstr;A=A.replace(/\s+/g," ");if(B.previousSibling&&B.previousSibling.nodeType==1&&Roo.htmleditor.TidyWriter.inline_elements.indexOf(B.previousSibling.nodeName)>-1){C='';
+}else{this.addLine();A=A.replace(/^\s+/,'');}if(B.nextSibling&&B.nextSibling.nodeType==1&&Roo.htmleditor.TidyWriter.inline_elements.indexOf(B.nextSibling.nodeName)>-1){}else{A=A.replace(/\s+$/,'');}if(A.length<1){return;}if(!A.match(/\n/)){this.html.push(C+A);
+return;}A=this.indentstr+A.replace(/(?![^\n]{1,64}$)([^\n]{1,64})\s/g,'$1\n'+this.indentstr);A=A.replace(/\s+$/,'');this.html.push(A);},cdata:function(A){this.html.push('<![CDATA[',A,']]>');},comment:function(A){this.html.push('<!--',A,'-->');},pi:function(A,B){B?this.html.push('<?',A,' ',this.encode(B),'?>'):this.html.push('<?',A,'?>');
+this.indent!=''&&this.html.push('\n');},doctype:function(A){this.html.push('<!DOCTYPE',A,'>',this.indent!=''?'\n':'');},reset:function(){this.html.length=0;this.state=[];this.pushState({indentstr:'',in_pre:false,in_inline:false})},getContent:function(){return this.html.join('').replace(/\n$/,'');
+},pushState:function(A){this.state.push(A);Roo.apply(this,A);},popState:function(){if(this.state.length<1){return;}var A={in_pre:false,indentstr:''};this.state.pop();if(this.state.length>0){A=this.state[this.state.length-1];}Roo.apply(this,A);},addLine:function(){if(this.html.length<1){return;
+}var A=this.html[this.html.length-1];if(A.length>0&&'\n'!==A){this.html.push('\n');}}};Roo.htmleditor.TidyWriter.inline_elements=['SPAN','STRONG','B','EM','I','FONT','STRIKE','U','VAR','CITE','DFN','CODE','MARK','Q','SUP','SUB','SAMP','A'];Roo.htmleditor.TidyWriter.shortend_elements=['AREA','BASE','BASEFONT','BR','COL','FRAME','HR','IMG','INPUT','ISINDEX','LINK','','META','PARAM','EMBED','SOURCE','WBR','TRACK'];
+Roo.htmleditor.TidyWriter.whitespace_elements=['PRE','SCRIPT','NOSCRIPT','STYLE','TEXTAREA','VIDEO','AUDIO','IFRAME','OBJECT','CODE'];
+// Roo/htmleditor/TidyEntities.js
+Roo.htmleditor.TidyEntities={init:function(){this.namedEntities=this.buildEntitiesLookup(this.namedEntitiesData,32);},buildEntitiesLookup:function(A,B){var i,C,D,E={};if(!A){return {};}A=typeof(A)=='string'?A.split(','):A;B=B||10;for(i=0;i<A.length;i+=2){C=String.fromCharCode(parseInt(A[i],B));
+if(!this.baseEntities[C]){D='&'+A[i+1]+';';E[C]=D;E[D]=C;}}return E;},asciiMap:{128:'€',130:'‚',131:'ƒ',132:'„',133:'…',134:'†',135:'‡',136:'ˆ',137:'‰',138:'Š',139:'‹',140:'Œ',142:'Ž',145:'‘',146:'’',147:'“',148:'”',149:'•',150:'–',151:'—',152:'˜',153:'™',154:'š',155:'›',156:'œ',158:'ž',159:'Ÿ'}
+,baseEntities:{'"':'&quot;','\'':'&#39;','<':'&lt;','>':'&gt;','&':'&amp;','`':'&#96;'},reverseEntities:{'&lt;':'<','&gt;':'>','&amp;':'&','&quot;':'"','&apos;':'\''},attrsCharsRegExp:/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,textCharsRegExp:/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,rawCharsRegExp:/[<>&\"\']/g,entityRegExp:/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,namedEntities:false,namedEntitiesData:['50','nbsp','51','iexcl','52','cent','53','pound','54','curren','55','yen','56','brvbar','57','sect','58','uml','59','copy','5a','ordf','5b','laquo','5c','not','5d','shy','5e','reg','5f','macr','5g','deg','5h','plusmn','5i','sup2','5j','sup3','5k','acute','5l','micro','5m','para','5n','middot','5o','cedil','5p','sup1','5q','ordm','5r','raquo','5s','frac14','5t','frac12','5u','frac34','5v','iquest','60','Agrave','61','Aacute','62','Acirc','63','Atilde','64','Auml','65','Aring','66','AElig','67','Ccedil','68','Egrave','69','Eacute','6a','Ecirc','6b','Euml','6c','Igrave','6d','Iacute','6e','Icirc','6f','Iuml','6g','ETH','6h','Ntilde','6i','Ograve','6j','Oacute','6k','Ocirc','6l','Otilde','6m','Ouml','6n','times','6o','Oslash','6p','Ugrave','6q','Uacute','6r','Ucirc','6s','Uuml','6t','Yacute','6u','THORN','6v','szlig','70','agrave','71','aacute','72','acirc','73','atilde','74','auml','75','aring','76','aelig','77','ccedil','78','egrave','79','eacute','7a','ecirc','7b','euml','7c','igrave','7d','iacute','7e','icirc','7f','iuml','7g','eth','7h','ntilde','7i','ograve','7j','oacute','7k','ocirc','7l','otilde','7m','ouml','7n','divide','7o','oslash','7p','ugrave','7q','uacute','7r','ucirc','7s','uuml','7t','yacute','7u','thorn','7v','yuml','ci','fnof','sh','Alpha','si','Beta','sj','Gamma','sk','Delta','sl','Epsilon','sm','Zeta','sn','Eta','so','Theta','sp','Iota','sq','Kappa','sr','Lambda','ss','Mu','st','Nu','su','Xi','sv','Omicron','t0','Pi','t1','Rho','t3','Sigma','t4','Tau','t5','Upsilon','t6','Phi','t7','Chi','t8','Psi','t9','Omega','th','alpha','ti','beta','tj','gamma','tk','delta','tl','epsilon','tm','zeta','tn','eta','to','theta','tp','iota','tq','kappa','tr','lambda','ts','mu','tt','nu','tu','xi','tv','omicron','u0','pi','u1','rho','u2','sigmaf','u3','sigma','u4','tau','u5','upsilon','u6','phi','u7','chi','u8','psi','u9','omega','uh','thetasym','ui','upsih','um','piv','812','bull','816','hellip','81i','prime','81j','Prime','81u','oline','824','frasl','88o','weierp','88h','image','88s','real','892','trade','89l','alefsym','8cg','larr','8ch','uarr','8ci','rarr','8cj','darr','8ck','harr','8dl','crarr','8eg','lArr','8eh','uArr','8ei','rArr','8ej','dArr','8ek','hArr','8g0','forall','8g2','part','8g3','exist','8g5','empty','8g7','nabla','8g8','isin','8g9','notin','8gb','ni','8gf','prod','8gh','sum','8gi','minus','8gn','lowast','8gq','radic','8gt','prop','8gu','infin','8h0','ang','8h7','and','8h8','or','8h9','cap','8ha','cup','8hb','int','8hk','there4','8hs','sim','8i5','cong','8i8','asymp','8j0','ne','8j1','equiv','8j4','le','8j5','ge','8k2','sub','8k3','sup','8k4','nsub','8k6','sube','8k7','supe','8kl','oplus','8kn','otimes','8l5','perp','8m5','sdot','8o8','lceil','8o9','rceil','8oa','lfloor','8ob','rfloor','8p9','lang','8pa','rang','9ea','loz','9j0','spades','9j3','clubs','9j5','hearts','9j6','diams','ai','OElig','aj','oelig','b0','Scaron','b1','scaron','bo','Yuml','m6','circ','ms','tilde','802','ensp','803','emsp','809','thinsp','80c','zwnj','80d','zwj','80e','lrm','80f','rlm','80j','ndash','80k','mdash','80o','lsquo','80p','rsquo','80q','sbquo','80s','ldquo','80t','rdquo','80u','bdquo','810','dagger','811','Dagger','81g','permil','81p','lsaquo','81q','rsaquo','85c','euro'],encodeRaw:function(A,B){var t=this;
+return A.replace(B?this.attrsCharsRegExp:this.textCharsRegExp,function(C){return t.baseEntities[C]||C;});},encodeAllRaw:function(A){var t=this;return (''+A).replace(this.rawCharsRegExp,function(B){return t.baseEntities[B]||B;});},encodeNumeric:function(A,B){var t=this;
+return A.replace(B?this.attrsCharsRegExp:this.textCharsRegExp,function(C){if(C.length>1){return '&#'+(1024*(C.charCodeAt(0)-55296)+(C.charCodeAt(1)-56320)+65536)+';';}return t.baseEntities[C]||'&#'+C.charCodeAt(0)+';';});},encodeNamed:function(A,B,C){var t=this;
+C=C||this.namedEntities;return A.replace(B?this.attrsCharsRegExp:this.textCharsRegExp,function(D){return t.baseEntities[D]||C[D]||D;});},getEncodeFunc:function(A,B){B=this.buildEntitiesLookup(B)||this.namedEntities;var t=this;function encodeNamedAndNumeric(C,D){return C.replace(D?t.attrsCharsRegExp:t.textCharsRegExp,function(E){return t.baseEntities[E]||B[E]||'&#'+E.charCodeAt(0)+';'||E;
+});}function encodeCustomNamed(C,D){return t.encodeNamed(C,D,B);}A=this.makeMap(A.replace(/\+/g,','));if(A.named&&A.numeric){return this.encodeNamedAndNumeric;}if(A.named){if(B){return encodeCustomNamed;}return this.encodeNamed;}if(A.numeric){return this.encodeNumeric;
+}return this.encodeRaw;},decode:function(A){var t=this;return A.replace(this.entityRegExp,function(B,C){if(C){C='x'===C.charAt(0).toLowerCase()?parseInt(C.substr(1),16):parseInt(C,10);if(C>65535){C-=65536;return String.fromCharCode(55296+(C>>10),56320+(1023&C));
+}return t.asciiMap[C]||String.fromCharCode(C);}return t.reverseEntities[B]||t.namedEntities[B]||t.nativeDecode(B);});},nativeDecode:function(A){return A;},makeMap:function(A,B,C){var i;A=A||[];B=B||',';if(typeof A=="string"){A=A.split(B);}C=C||{};i=A.length;
+while(i--){C[A[i]]={};}return C;}};Roo.htmleditor.TidyEntities.init();
+// Roo/htmleditor/KeyEnter.js
+Roo.htmleditor.KeyEnter=function(A){Roo.apply(this,A);Roo.get(this.core.doc.body).on('keypress',this.keypress,this);};Roo.htmleditor.KeyEnter.prototype={core:false,keypress:function(e){if(e.charCode!=13&&e.charCode!=10){Roo.log([e.charCode,e]);return true;
+}e.preventDefault();var A=this.core.doc;var B=this.core.getSelection();var C=B.getRangeAt(0);var n=C.commonAncestorContainer;var pc=C.closest(['ol','ul']);var D=C.closest('li');if(!pc||e.ctrlKey){B.insertNode('br','after');this.core.undoManager.addEvent();
+this.core.fireEditorEvent(e);return false;}if(D.innerText.trim()==''&&D.previousSibling&&D.previousSibling.nodeName=='LI'&&D.previousSibling.innerText.trim()==''){D.parentNode.removeChild(D.previousSibling);B.cursorAfter(pc);this.core.undoManager.addEvent();
+this.core.fireEditorEvent(e);return false;}var li=A.createElement('LI');li.innerHTML='&nbsp;';if(!D||!D.firstSibling){pc.appendChild(li);}else{D.parentNode.insertBefore(li,D.firstSibling);}B.cursorText(li.firstChild);this.core.undoManager.addEvent();this.core.fireEditorEvent(e);
+return false;}};
+// Roo/htmleditor/Block.js
+Roo.htmleditor.Block=function(A){};Roo.htmleditor.Block.factory=function(A){var cc=Roo.htmleditor.Block.cache;var id=Roo.get(A).id;if(typeof(cc[id])!='undefined'&&(!cc[id].node||cc[id].node.closest('body'))){Roo.htmleditor.Block.cache[id].readElement(A);return Roo.htmleditor.Block.cache[id];
+}var db=A.getAttribute('data-block');if(!db){db=A.nodeName.toLowerCase().toUpperCaseFirst();}var B=Roo.htmleditor['Block'+db];if(typeof(B)=='undefined'){Roo.log("OOps missing block : "+'Block'+db);return false;}Roo.htmleditor.Block.cache[id]=new B({node:A}
+);return Roo.htmleditor.Block.cache[id];};Roo.htmleditor.Block.initAll=function(A,B){if(typeof(B)=='undefined'){var ia=Roo.htmleditor.Block.initAll;ia(A,'table');ia(A,'td');ia(A,'figure');return;}Roo.each(Roo.get(A).query(B),function(e){Roo.htmleditor.Block.factory(e);
+},this);};Roo.htmleditor.Block.cache={};Roo.htmleditor.Block.prototype={node:false,friendly_name:'Based Block',deleteTitle:false,context:false,updateElement:function(A){Roo.DomHelper.update(A===undefined?this.node:A,this.toObject());},toHTML:function(){return Roo.DomHelper.markup(this.toObject());
+},getVal:function(A,B,C,D){var n=A;if(B!==true&&n.tagName!=B.toUpperCase()){n=A.getElementsByTagName(B).item(0);}if(!n){return '';}if(C=='html'){return n.innerHTML;}if(C=='style'){return n.style[D];}return n.hasAttribute(C)?n.getAttribute(C):'';},toObject:function(){return {}
+;},readElement:function(A){}};
+// Roo/htmleditor/BlockFigure.js
+Roo.htmleditor.BlockFigure=function(A){if(A.node){this.readElement(A.node);this.updateElement(A.node);}Roo.apply(this,A);};Roo.extend(Roo.htmleditor.BlockFigure,Roo.htmleditor.Block,{image_src:'',align:'center',caption:'',caption_display:'block',width:'100%',cls:'',href:'',video_url:'',text_align:'left',friendly_name:'Image with caption',deleteTitle:"Delete Image and Caption",contextMenu:function(A){var B=function(){return Roo.htmleditor.Block.factory(A.tb.selectedNode);
+};var C=typeof(Roo.bootstrap)=='undefined'?Roo:Roo.bootstrap;var D=A.editorcore.syncValue;var E={};return [{xtype:'TextItem',text:"Source: ",xns:C.Toolbar},{xtype:'Button',text:'Change Image URL',listeners:{click:function(F,G){var b=B();Roo.MessageBox.show({title:"Image Source URL",msg:"Enter the url for the image",buttons:Roo.MessageBox.OKCANCEL,fn:function(H,I){if(H!='ok'){return;
+}b.image_src=I;b.updateElement();D();A.editorcore.onEditorEvent();},minWidth:250,prompt:true,modal:true,value:b.image_src});}},xns:C.Toolbar},{xtype:'Button',text:'Change Link URL',listeners:{click:function(F,G){var b=B();Roo.MessageBox.show({title:"Link URL",msg:"Enter the url for the link - leave blank to have no link",buttons:Roo.MessageBox.OKCANCEL,fn:function(H,I){if(H!='ok'){return;
+}b.href=I;b.updateElement();D();A.editorcore.onEditorEvent();},minWidth:250,prompt:true,modal:true,value:b.href});}},xns:C.Toolbar},{xtype:'Button',text:'Show Video URL',listeners:{click:function(F,G){Roo.MessageBox.alert("Video URL",B().video_url==''?'This image is not linked ot a video':'The image is linked to: <a target="_new" href="'+B().video_url+'">'+B().video_url+'</a>');
+}},xns:C.Toolbar},{xtype:'TextItem',text:"Width: ",xns:C.Toolbar},{xtype:'ComboBox',allowBlank:false,displayField:'val',editable:true,listWidth:100,triggerAction:'all',typeAhead:true,valueField:'val',width:70,name:'width',listeners:{select:function(F,r,G){A.editorcore.selectNode(A.tb.selectedNode);
+var b=B();b.width=r.get('val');b.updateElement();D();A.editorcore.onEditorEvent();}},xns:C.form,store:{xtype:'SimpleStore',data:[['auto'],['50%'],['100%']],fields:['val'],xns:Roo.data}},{xtype:'TextItem',text:"Align: ",xns:C.Toolbar},{xtype:'ComboBox',allowBlank:false,displayField:'val',editable:true,listWidth:100,triggerAction:'all',typeAhead:true,valueField:'val',width:70,name:'align',listeners:{select:function(F,r,G){A.editorcore.selectNode(A.tb.selectedNode);
+var b=B();b.align=r.get('val');b.updateElement();D();A.editorcore.onEditorEvent();}},xns:C.form,store:{xtype:'SimpleStore',data:[['left'],['right'],['center']],fields:['val'],xns:Roo.data}},{xtype:'Button',text:'Hide Caption',name:'caption_display',pressed:false,enableToggle:true,setValue:function(v){this.toggle(v=='block'?false:true);
+},listeners:{toggle:function(F,G){var b=B();b.caption_display=b.caption_display=='block'?'none':'block';this.setText(b.caption_display=='block'?"Hide Caption":"Show Caption");b.updateElement();D();A.editorcore.selectNode(A.tb.selectedNode);A.editorcore.onEditorEvent();
+}},xns:C.Toolbar}];},toObject:function(){var d=document.createElement('div');d.innerHTML=this.caption;var m=this.width=='50%'&&this.align=='center'?'0 auto':0;var A={tag:'img',contenteditable:'false',src:this.image_src,alt:d.innerText.replace(/\n/g," ").replace(/\s+/g,' ').trim(),style:{width:'auto','max-width':'100%',margin:'0px'}
+};if(this.href.length>0){A={tag:'a',href:this.href,contenteditable:'true',cn:[A]};}if(this.video_url.length>0){A={tag:'div',cls:this.cls,frameborder:0,allowfullscreen:true,width:420,height:315,src:this.video_url,cn:[A]};}var B=this.caption_display=='hidden'?this.caption:(this.caption.length?this.caption:"Caption");
+return {tag:'figure','data-block':'Figure',contenteditable:'false',style:{display:'block',float:this.align,'max-width':this.width,width:'auto',margin:m,padding:'10px'},align:this.align,cn:[A,{tag:'figcaption',style:{'text-align':'left','margin-top':'16px','font-size':'16px','line-height':'24px',display:this.caption_display}
+,cls:this.cls.length>0?(this.cls+'-thumbnail'):'',cn:[{tag:'i',contenteditable:true,html:B}]}]};},readElement:function(A){this.video_url=this.getVal(A,'div','src');this.cls=this.getVal(A,'div','class');this.href=this.getVal(A,'a','href');this.image_src=this.getVal(A,'img','src');
+this.align=this.getVal(A,'figure','align');this.caption=this.getVal(A,'figcaption','html');if(this.caption.trim().match(/^<i[^>]*>/i)){this.caption=this.caption.trim().replace(/^<i[^>]*>/i,'').replace(/^<\/i>$/i,'');}this.width=this.getVal(A,'figure','style','max-width');
+},removeNode:function(){return this.node;}})
+// Roo/htmleditor/BlockTable.js
+Roo.htmleditor.BlockTable=function(A){if(A.node){this.readElement(A.node);this.updateElement(A.node);}Roo.apply(this,A);if(!A.node){this.rows=[];for(var r=0;r<this.no_row;r++){this.rows[r]=[];for(var c=0;c<this.no_col;c++){this.rows[r][c]=this.emptyCell();
+}}}};Roo.extend(Roo.htmleditor.BlockTable,Roo.htmleditor.Block,{rows:false,no_col:1,no_row:1,width:'100%',friendly_name:'Table',deleteTitle:'Delete Table',contextMenu:function(A){var B=function(){return Roo.htmleditor.Block.factory(A.tb.selectedNode);};var C=typeof(Roo.bootstrap)=='undefined'?Roo:Roo.bootstrap;
+var D=A.editorcore.syncValue;var E={};return [{xtype:'TextItem',text:"Width: ",xns:C.Toolbar},{xtype:'ComboBox',allowBlank:false,displayField:'val',editable:true,listWidth:100,triggerAction:'all',typeAhead:true,valueField:'val',width:100,name:'width',listeners:{select:function(F,r,G){A.editorcore.selectNode(A.tb.selectedNode);
+var b=B();b.width=r.get('val');b.updateElement();D();A.editorcore.onEditorEvent();}},xns:C.form,store:{xtype:'SimpleStore',data:[['100%'],['auto']],fields:['val'],xns:Roo.data}},{xtype:'TextItem',text:"Columns: ",xns:C.Toolbar},{xtype:'Button',text:'-',listeners:{click:function(F,e){A.editorcore.selectNode(A.tb.selectedNode);
+B().removeColumn();D();A.editorcore.onEditorEvent();}},xns:C.Toolbar},{xtype:'Button',text:'+',listeners:{click:function(F,e){A.editorcore.selectNode(A.tb.selectedNode);B().addColumn();D();A.editorcore.onEditorEvent();}},xns:C.Toolbar},{xtype:'TextItem',text:"Rows: ",xns:C.Toolbar}
+,{xtype:'Button',text:'-',listeners:{click:function(F,e){A.editorcore.selectNode(A.tb.selectedNode);B().removeRow();D();A.editorcore.onEditorEvent();}},xns:C.Toolbar},{xtype:'Button',text:'+',listeners:{click:function(F,e){B().addRow();D();A.editorcore.onEditorEvent();
+}},xns:C.Toolbar},{xtype:'Button',text:'Reset Column Widths',listeners:{click:function(F,e){B().resetWidths();D();A.editorcore.onEditorEvent();}},xns:C.Toolbar}];},toObject:function(){var A={tag:'table',contenteditable:'false','data-block':'Table',style:{width:this.width,border:'solid 1px #000','border-collapse':'collapse'}
+,cn:[{tag:'tbody',cn:[]}]};var B=0;Roo.each(this.rows,function(C){var tr={tag:'tr',style:{margin:'6px',border:'solid 1px #000',textAlign:'left'},cn:[]};A.cn[0].cn.push(tr);var nc=0;Roo.each(C,function(D){var td={tag:'td',contenteditable:'true','data-block':'Td',html:D.html,style:D.style}
+;if(D.colspan>1){td.colspan=D.colspan;nc+=D.colspan;}else{nc++;}if(D.rowspan>1){td.rowspan=D.rowspan;}tr.cn.push(td);},this);B=Math.max(nc,B);},this);B++;return A;},readElement:function(A){A=A?A:this.node;this.width=this.getVal(A,true,'style','width')||'100%';
+this.rows=[];this.no_row=0;var B=Array.from(A.rows);B.forEach(function(tr){var C=[];this.rows.push(C);this.no_row++;var D=0;Array.from(tr.cells).forEach(function(td){var E={colspan:td.hasAttribute('colspan')?td.getAttribute('colspan')*1:1,rowspan:td.hasAttribute('rowspan')?td.getAttribute('rowspan')*1:1,style:td.hasAttribute('style')?td.getAttribute('style'):'',html:td.innerHTML}
+;D+=E.colspan;C.push(E);},this);this.no_col=Math.max(this.no_col,D);},this);},normalizeRows:function(){var A=[];var B=-1;this.rows.forEach(function(C){B++;A[B]=[];C=this.normalizeRow(C);var D=0;C.forEach(function(c){while(typeof(A[B][D])!='undefined'){D++;
+}if(typeof(A[B])=='undefined'){A[B]=[];}A[B][D]=c;c.row=B;c.col=D;if(c.rowspan<2){return;}for(var i=1;i<c.rowspan;i++){if(typeof(A[B+i])=='undefined'){A[B+i]=[];}A[B+i][D]=c;}});},this);return A;},normalizeRow:function(A){var B=[];A.forEach(function(c){if(c.colspan<2){B.push(c);
+return;}for(var i=0;i<c.colspan;i++){B.push(c);}});return B;},deleteColumn:function(A){if(!A||A.type!='col'){return;}if(this.no_col<2){return;}this.rows.forEach(function(B){var C=this.normalizeRow(B);var D=C[A.col];if(D.colspan>1){D.colspan--;}else{B.remove(D);
+}},this);this.no_col--;},removeColumn:function(){this.deleteColumn({type:'col',col:this.no_col-1});this.updateElement();},addColumn:function(){this.rows.forEach(function(A){A.push(this.emptyCell());},this);this.updateElement();},deleteRow:function(A){if(!A||A.type!='row'){return;
+}if(this.no_row<2){return;}var B=this.normalizeRows();B[A.row].forEach(function(D){if(D.rowspan>1){D.rowspan--;}else{D.remove=1;}},this);var C=[];this.rows.forEach(function(D){newrow=[];D.forEach(function(c){if(typeof(c.remove)=='undefined'){newrow.push(c);
+}});if(newrow.length>0){C.push(D);}});this.rows=C;this.no_row--;this.updateElement();},removeRow:function(){this.deleteRow({type:'row',row:this.no_row-1});},addRow:function(){var A=[];for(var i=0;i<this.no_col;i++){A.push(this.emptyCell());}this.rows.push(A);
+this.updateElement();},emptyCell:function(){return (new Roo.htmleditor.BlockTd({})).toObject();},removeNode:function(){return this.node;},resetWidths:function(){Array.from(this.node.getElementsByTagName('td')).forEach(function(n){var nn=Roo.htmleditor.Block.factory(n);
+nn.width='';nn.updateElement(n);});}})
+// Roo/htmleditor/BlockTd.js
+Roo.htmleditor.BlockTd=function(A){if(A.node){this.readElement(A.node);this.updateElement(A.node);}Roo.apply(this,A);};Roo.extend(Roo.htmleditor.BlockTd,Roo.htmleditor.Block,{node:false,width:'',textAlign:'left',valign:'top',colspan:1,rowspan:1,friendly_name:'Table Cell',deleteTitle:false,contextMenu:function(A){var B=function(){return Roo.htmleditor.Block.factory(A.tb.selectedNode);
+};var C=function(){return Roo.htmleditor.Block.factory(A.tb.selectedNode.closest('table'));};var lr=false;var D=function(){lr=A.editorcore.getSelection().getRangeAt(0);};var restoreSel=function(){if(lr){(function(){A.editorcore.focus();var cr=A.editorcore.getSelection();
+cr.removeAllRanges();cr.addRange(lr);A.editorcore.onEditorEvent();}).defer(10,this);}};var rooui=typeof(Roo.bootstrap)=='undefined'?Roo:Roo.bootstrap;var E=A.editorcore.syncValue;var F={};return [{xtype:'Button',text:'Edit Table',listeners:{click:function(){var t=A.tb.selectedNode.closest('table');
+A.editorcore.selectNode(t);A.editorcore.onEditorEvent();}}},{xtype:'TextItem',text:"Column Width: ",xns:rooui.Toolbar},{xtype:'Button',text:'-',listeners:{click:function(G,e){A.editorcore.selectNode(A.tb.selectedNode);B().shrinkColumn();E();A.editorcore.onEditorEvent();
+}},xns:rooui.Toolbar},{xtype:'Button',text:'+',listeners:{click:function(G,e){A.editorcore.selectNode(A.tb.selectedNode);B().growColumn();E();A.editorcore.onEditorEvent();}},xns:rooui.Toolbar},{xtype:'TextItem',text:"Vertical Align: ",xns:rooui.Toolbar},{xtype:'ComboBox',allowBlank:false,displayField:'val',editable:true,listWidth:100,triggerAction:'all',typeAhead:true,valueField:'val',width:100,name:'valign',listeners:{select:function(G,r,H){A.editorcore.selectNode(A.tb.selectedNode);
+var b=B();b.valign=r.get('val');b.updateElement();E();A.editorcore.onEditorEvent();}},xns:rooui.form,store:{xtype:'SimpleStore',data:[['top'],['middle'],['bottom']],fields:['val'],xns:Roo.data}},{xtype:'TextItem',text:"Merge Cells: ",xns:rooui.Toolbar},{xtype:'Button',text:'Right',listeners:{click:function(G,e){A.editorcore.selectNode(A.tb.selectedNode);
+B().mergeRight();E();A.editorcore.onEditorEvent();}},xns:rooui.Toolbar},{xtype:'Button',text:'Below',listeners:{click:function(G,e){A.editorcore.selectNode(A.tb.selectedNode);B().mergeBelow();E();A.editorcore.onEditorEvent();}},xns:rooui.Toolbar},{xtype:'TextItem',text:"| ",xns:rooui.Toolbar}
+,{xtype:'Button',text:'Split',listeners:{click:function(G,e){B().split();E();A.editorcore.selectNode(A.tb.selectedNode);A.editorcore.onEditorEvent();}},xns:rooui.Toolbar},{xtype:'Fill',xns:rooui.Toolbar},{xtype:'Button',text:'Delete',xns:rooui.Toolbar,menu:{xtype:'Menu',xns:rooui.menu,items:[{xtype:'Item',html:'Column',listeners:{click:function(G,e){var t=C();
+B().deleteColumn();E();A.editorcore.selectNode(t.node);A.editorcore.onEditorEvent();}},xns:rooui.menu},{xtype:'Item',html:'Row',listeners:{click:function(G,e){var t=C();B().deleteRow();E();A.editorcore.selectNode(t.node);A.editorcore.onEditorEvent();}},xns:rooui.menu}
+,{xtype:'Separator',xns:rooui.menu},{xtype:'Item',html:'Table',listeners:{click:function(G,e){var t=C();var nn=t.node.nextSibling||t.node.previousSibling;t.node.parentNode.removeChild(t.node);if(nn){A.editorcore.selectNode(nn,true);}A.editorcore.onEditorEvent();
+}},xns:rooui.menu}]}}];},toObject:function(){var A={tag:'td',contenteditable:'true','data-block':'Td',valign:this.valign,style:{'text-align':this.textAlign,border:'solid 1px rgb(0, 0, 0)','border-collapse':'collapse',padding:'6px','vertical-align':this.valign}
+,html:this.html};if(this.width!=''){A.width=this.width;A.style.width=this.width;}if(this.colspan>1){A.colspan=this.colspan;}if(this.rowspan>1){A.rowspan=this.rowspan;}return A;},readElement:function(A){A=A?A:this.node;this.width=A.style.width;this.colspan=Math.max(1,1*A.getAttribute('colspan'));
+this.rowspan=Math.max(1,1*A.getAttribute('rowspan'));this.html=A.innerHTML;},emptyCell:function(){return {colspan:1,rowspan:1,textAlign:'left',html:"&nbsp;"};},removeNode:function(){return this.node.closest('table');},cellData:false,colWidths:false,toTableArray:function(){var A=[];
+var B=this.node.closest('tr').closest('table');Array.from(B.rows).forEach(function(r,ri){A[ri]=[];});var rn=0;this.colWidths=[];var C=true;Array.from(B.rows).forEach(function(r,ri){var cn=0;Array.from(r.cells).forEach(function(ce,ci){var c={cell:ce,row:rn,col:cn,colspan:ce.colSpan,rowspan:ce.rowSpan}
+;if(ce.isEqualNode(this.node)){this.cellData=c;}if(typeof(A[rn][cn])!='undefined'){while(typeof(A[rn][cn])!='undefined'){cn++;}c.col=cn;}if(typeof(this.colWidths[cn])=='undefined'){this.colWidths[cn]=ce.style.width;if(this.colWidths[cn]!=''){C=false;}}if(c.colspan<2&&c.rowspan<2){A[rn][cn]=c;
+cn++;return;}for(var j=0;j<c.rowspan;j++){if(typeof(A[rn+j])=='undefined'){continue;}A[rn+j][cn]=c;for(var i=0;i<c.colspan;i++){A[rn+j][cn+i]=c;}}cn+=c.colspan;},this);rn++;},this);if(C){this.colWidths[0]=false;}return A;},mergeRight:function(){var tr=this.node.closest('tr');
+var i=Array.prototype.indexOf.call(tr.childNodes,this.node);if(i>=tr.childNodes.length-1){return;}var A=this.toTableArray();if(typeof(A[this.cellData.row][this.cellData.col+this.cellData.colspan])=='undefined'){return;}var rc=A[this.cellData.row][this.cellData.col+this.cellData.colspan];
+if(rc.rowspan!=this.cellData.rowspan||rc.row!=this.cellData.row){return;}this.node.innerHTML+=' '+rc.cell.innerHTML;tr.removeChild(rc.cell);this.colspan+=rc.colspan;this.node.setAttribute('colspan',this.colspan);},mergeBelow:function(){var A=this.toTableArray();
+if(typeof(A[this.cellData.row+this.cellData.rowspan])=='undefined'){return;}if(typeof(A[this.cellData.row+this.cellData.rowspan][this.cellData.col])=='undefined'){return;}var rc=A[this.cellData.row+this.cellData.rowspan][this.cellData.col];if(rc.colspan!=this.cellData.colspan||rc.col!=this.cellData.col){return;
+}this.node.innerHTML=this.node.innerHTML+rc.cell.innerHTML;rc.cell.parentNode.removeChild(rc.cell);this.rowspan+=rc.rowspan;this.node.setAttribute('rowspan',this.rowspan);},split:function(){if(this.node.rowSpan<2&&this.node.colSpan<2){return;}var A=this.toTableArray();
+var cd=this.cellData;this.rowspan=1;this.colspan=1;for(var r=cd.row;r<cd.row+cd.rowspan;r++){for(var c=cd.col;c<cd.col+cd.colspan;c++){if(r==cd.row&&c==cd.col){this.node.removeAttribute('rowspan');this.node.removeAttribute('colspan');continue;}var B=this.node.cloneNode();
+B.removeAttribute('id');B.innerHTML='';A[r][c]={cell:B,col:c,row:r,colspan:1,rowspan:1};}}this.redrawAllCells(A);},redrawAllCells:function(A){var B=this.node.closest('tr').closest('table');var C=B.rows[0].parentNode;Array.from(B.rows).forEach(function(r,ri){Array.from(r.cells).forEach(function(ce,ci){ce.parentNode.removeChild(ce);
+});r.parentNode.removeChild(r);});for(var r=0;r<A.length;r++){var re=B.rows[r];var re=B.ownerDocument.createElement('tr');C.appendChild(re);for(var c=0;c<A[r].length;c++){if(A[r][c].cell===false){continue;}re.appendChild(A[r][c].cell);A[r][c].cell=false;}
+}},updateWidths:function(A){for(var r=0;r<A.length;r++){for(var c=0;c<A[r].length;c++){if(A[r][c].cell===false){continue;}if(this.colWidths[0]!=false&&A[r][c].colspan<2){var el=Roo.htmleditor.Block.factory(A[r][c].cell);el.width=Math.floor(this.colWidths[c])+'%';
+el.updateElement(el.node);}A[r][c].cell=false;}}},normalizeWidths:function(A){if(this.colWidths[0]===false){var nw=100.0/this.colWidths.length;this.colWidths.forEach(function(w,i){this.colWidths[i]=nw;},this);return;}var t=0,B=[];this.colWidths.forEach(function(w,i){this.colWidths[i]=this.colWidths[i]==''?0:(this.colWidths[i]+'').replace(/[^0-9]+/g,'')*1;
+var D=this.colWidths[i];if(D>0){t+=D;return;}B.push(i);},this);var nc=this.colWidths.length;if(B.length){var C=(nc-B.length)/(1.0*nc);var t=C*t;var ew=(100-t)/(1.0*B.length);this.colWidths.forEach(function(w,i){if(w>0){this.colWidths[i]=w*C;return;}this.colWidths[i]=ew;
+},this);}},shrinkColumn:function(){var A=this.toTableArray();this.normalizeWidths(A);var B=this.cellData.col;var nw=this.colWidths[B]*0.8;if(nw<5){return;}var C=(this.colWidths[B]*0.2)/(this.colWidths.length-1);this.colWidths.forEach(function(w,i){if(i==B){this.colWidths[i]=nw;
+return;}this.colWidths[i]+=C},this);this.updateWidths(A);},growColumn:function(){var A=this.toTableArray();this.normalizeWidths(A);var B=this.cellData.col;var nw=this.colWidths[B]*1.2;if(nw>90){return;}var C=(this.colWidths[B]*0.2)/(this.colWidths.length-1);
+this.colWidths.forEach(function(w,i){if(i==B){this.colWidths[i]=nw;return;}this.colWidths[i]-=C},this);this.updateWidths(A);},deleteRow:function(){var A=this.toTableArray();for(var i=0;i<A[this.cellData.row].length;i++){var c=A[this.cellData.row][i];if(c.row!=this.cellData.row){c.rowspan--;
+c.cell.setAttribute('rowspan',c.rowspan);continue;}if(c.rowspan>1){c.rowspan--;c.cell.setAttribute('rowspan',c.rowspan);}}A.splice(this.cellData.row,1);this.redrawAllCells(A);},deleteColumn:function(){var A=this.toTableArray();for(var i=0;i<A.length;i++){var c=A[i][this.cellData.col];
+if(c.col!=this.cellData.col){A[i][this.cellData.col].colspan--;}else if(c.colspan>1){c.colspan--;c.cell.setAttribute('colspan',c.colspan);}A[i].splice(this.cellData.col,1);}this.redrawAllCells(A);}})
 // Roo/HtmlEditorCore.js
-Roo.HtmlEditorCore=function(A){Roo.HtmlEditorCore.superclass.constructor.call(this,A);this.addEvents({initialize:true,activate:true,beforesync:true,beforepush:true,sync:true,push:true,editorevent:true});this.applyBlacklists();};Roo.extend(Roo.HtmlEditorCore,Roo.Component,{owner:false,resizable:false,height:300,width:500,stylesheets:false,allowComments:false,frameId:false,validationEvent:false,deferHeight:true,initialized:false,activated:false,sourceEditMode:false,onFocus:Roo.emptyFn,iframePad:3,hideMode:'offsets',clearUp:true,black:false,white:false,bodyCls:'',getDocMarkup:function(){var st='';
+Roo.HtmlEditorCore=function(A){Roo.HtmlEditorCore.superclass.constructor.call(this,A);this.addEvents({initialize:true,activate:true,beforesync:true,beforepush:true,sync:true,push:true,editorevent:true});this.applyBlacklists();};Roo.extend(Roo.HtmlEditorCore,Roo.Component,{owner:false,resizable:false,height:300,width:500,autoClean:true,enableBlocks:true,stylesheets:false,language:'en',allowComments:false,frameId:false,validationEvent:false,deferHeight:true,initialized:false,activated:false,sourceEditMode:false,onFocus:Roo.emptyFn,iframePad:3,hideMode:'offsets',clearUp:true,black:false,white:false,bodyCls:'',undoManager:false,getDocMarkup:function(){var st='';
 if(this.stylesheets===false){Roo.get(document.head).select('style').each(function(B){st+=B.dom.outerHTML||new XMLSerializer().serializeToString(B.dom);});Roo.get(document.head).select('link').each(function(B){st+=B.dom.outerHTML||new XMLSerializer().serializeToString(B.dom);
-});}else if(!this.stylesheets.length){st='<style type="text/css">'+'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}'+'</style>';}else{for(var i in this.stylesheets){st+='<link rel="stylesheet" href="'+this.stylesheets[i]+'" type="text/css">';}
-}st+='<style type="text/css">'+'IMG { cursor: pointer } '+'</style>';var A='roo-htmleditor-body';if(this.bodyCls.length){A+=' '+this.bodyCls;}return '<html><head>'+st+' </head><body contenteditable="true" data-enable-grammerly="true" class="'+A+'"></body></html>';
+});}else if(!this.stylesheets.length){st='<style type="text/css">'+'body{border:0;margin:0;padding:3px;height:98%;cursor:text;}'+'</style>';}else{for(var i in this.stylesheets){if(typeof(this.stylesheets[i])!='string'){continue;}st+='<link rel="stylesheet" href="'+this.stylesheets[i]+'" type="text/css">';
+}}st+='<style type="text/css">'+'IMG { cursor: pointer } '+'</style>';st+='<meta name="google" content="notranslate">';var A='notranslate roo-htmleditor-body';if(this.bodyCls.length){A+=' '+this.bodyCls;}return '<html  class="notranslate" translate="no"><head>'+st+' </head><body contenteditable="true" data-enable-grammerly="true" class="'+A+'"></body></html>';
 },onRender:function(ct,A){var _t=this;this.el=this.owner.inputEl?this.owner.inputEl():this.owner.el;this.el.dom.style.border='0 none';this.el.dom.setAttribute('tabIndex',-1);this.el.addClass('x-hidden hide');if(Roo.isIE){this.el.applyStyles('margin-top:-1px;margin-bottom:-1px;')}
 this.frameId=Roo.id();var B=this.owner.wrap.createChild({tag:'iframe',cls:'form-control',id:this.frameId,name:this.frameId,frameBorder:'no','src':Roo.SSL_SECURE_URL?Roo.SSL_SECURE_URL:"javascript:false"},this.el);this.iframe=B.dom;this.assignDocWin();this.doc.designMode='on';
 this.doc.open();this.doc.write(this.getDocMarkup());this.doc.close();var C={run:function(){this.assignDocWin();if(this.doc.body||this.doc.readyState=='complete'){try{this.doc.designMode="on";}catch(e){return;}Roo.TaskMgr.stop(C);this.initEditor.defer(10,this);
 }},interval:10,duration:10000,scope:this};Roo.TaskMgr.start(C);},onResize:function(w,h){Roo.log('resize: '+w+','+h);if(!this.iframe){return;}if(typeof w=='number'){this.iframe.style.width=w+'px';}if(typeof h=='number'){this.iframe.style.height=h+'px';if(this.doc){(this.doc.body||this.doc.documentElement).style.height=(h-(this.iframePad*2))+'px';
-}}},toggleSourceEdit:function(A){this.sourceEditMode=A===true;if(this.sourceEditMode){Roo.get(this.iframe).addClass(['x-hidden','hide']);}else{Roo.get(this.iframe).removeClass(['x-hidden','hide']);this.deferFocus();}},cleanHtml:function(A){A=String(A);if(A.length>5){if(Roo.isSafari){A=A.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,'');
-}}if(A=='&nbsp;'){A='';}return A;},syncValue:function(){if(this.initialized){var bd=(this.doc.body||this.doc.documentElement);var A=bd.innerHTML;if(Roo.isSafari){var bs=bd.getAttribute('style');var m=bs?bs.match(/text-align:(.*?);/i):false;if(m&&m[1]){A='<div style="'+m[0]+'">'+A+'</div>';
-}}A=this.cleanHtml(A);A=A.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u0080-\uFFFF]/g,function(B){var cc=B.charCodeAt();if(B.length==2){var C=B.charCodeAt(0)-0xD800;var D=B.charCodeAt(1)-0xDC00;cc=(C*0x400)+D+0x10000;}else if((cc>=0x4E00&&cc<0xA000)||(cc>=0x3400&&cc<0x4E00)||(cc>=0xf900&&cc<0xfb00)){return B;
-}return "&#"+cc+";";});if(this.owner.fireEvent('beforesync',this,A)!==false){this.el.dom.value=A;this.owner.fireEvent('sync',this,A);}}},pushValue:function(){if(this.initialized){var v=this.el.dom.value.trim();if(this.owner.fireEvent('beforepush',this,v)!==false){var d=(this.doc.body||this.doc.documentElement);
-d.innerHTML=v;this.cleanUpPaste();this.el.dom.value=d.innerHTML;this.owner.fireEvent('push',this,v);}}},deferFocus:function(){this.focus.defer(10,this);},focus:function(){if(this.win&&!this.sourceEditMode){this.win.focus();}else{this.el.focus();}},assignDocWin:function(){var A=this.iframe;
-if(Roo.isIE){this.doc=A.contentWindow.document;this.win=A.contentWindow;}else{if(!Roo.get(this.frameId)&&!A.contentDocument){return;}this.doc=(A.contentDocument||Roo.get(this.frameId).dom.document);this.win=(A.contentWindow||Roo.get(this.frameId).dom.contentWindow);
-}},initEditor:function(){this.assignDocWin();this.doc.designMode="on";this.doc.open();this.doc.write(this.getDocMarkup());this.doc.close();var A=(this.doc.body||this.doc.documentElement);A.bgProperties='fixed';Roo.EventManager.on(this.doc,{'mouseup':this.onEditorEvent,'dblclick':this.onEditorEvent,'click':this.onEditorEvent,'keyup':this.onEditorEvent,buffer:100,scope:this}
-);if(Roo.isGecko){Roo.EventManager.on(this.doc,'keypress',this.mozKeyPress,this);}if(Roo.isIE||Roo.isSafari||Roo.isOpera){Roo.EventManager.on(this.doc,'keydown',this.fixKeys,this);}this.initialized=true;this.owner.fireEvent('initialize',this);this.pushValue();
-},onDestroy:function(){if(this.rendered){}},onFirstFocus:function(){this.assignDocWin();this.activated=true;if(Roo.isGecko){this.win.focus();var s=this.win.getSelection();if(!s.focusNode||s.focusNode.nodeType!=3){var r=s.getRangeAt(0);r.selectNodeContents((this.doc.body||this.doc.documentElement));
-r.collapse(true);this.deferFocus();}try{this.execCmd('useCSS',true);this.execCmd('styleWithCSS',false);}catch(e){}}this.owner.fireEvent('activate',this);},adjustFont:function(A){var B=A.cmd=='increasefontsize'?1:-1;var v=parseInt(this.doc.queryCommandValue('FontSize')||3,10);
-if(Roo.isSafari){var sm={10:1,13:2,16:3,18:4,24:5,32:6,48:7};v=(v<10)?10:v;v=(v>48)?48:v;v=typeof(sm[v])=='undefined'?1:sm[v];}v=Math.max(1,v+B);this.execCmd('FontSize',v);},onEditorEvent:function(e){this.owner.fireEvent('editorevent',this,e);this.syncValue();
+}}},toggleSourceEdit:function(A){this.sourceEditMode=A===true;if(this.sourceEditMode){Roo.get(this.iframe).addClass(['x-hidden','hide','d-none']);}else{Roo.get(this.iframe).removeClass(['x-hidden','hide','d-none']);this.deferFocus();}},cleanHtml:function(A){A=String(A);
+if(A.length>5){if(Roo.isSafari){A=A.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,'');}}if(A=='&nbsp;'){A='';}return A;},syncValue:function(){if(this.initialized){this.undoManager.addEvent();var bd=(this.doc.body||this.doc.documentElement);
+var A=this.win.getSelection();var B=document.createElement('div');B.innerHTML=bd.innerHTML;var C=B.getElementsByClassName('gtx-trans-icon');if(C.length>0){var rm=C.item(0).parentNode;rm.parentNode.removeChild(rm);}if(this.enableBlocks){new Roo.htmleditor.FilterBlock({node:B}
+);}var D=new Roo.htmleditor.TidySerializer({inner:true});var E=D.serialize(B);if(Roo.isSafari){var bs=bd.getAttribute('style');var m=bs?bs.match(/text-align:(.*?);/i):false;if(m&&m[1]){E='<div style="'+m[0]+'">'+E+'</div>';}}E=this.cleanHtml(E);E=E.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u0080-\uFFFF]/g,function(F){var cc=F.charCodeAt();
+if(F.length==2){var G=F.charCodeAt(0)-0xD800;var H=F.charCodeAt(1)-0xDC00;cc=(G*0x400)+H+0x10000;}else if((cc>=0x4E00&&cc<0xA000)||(cc>=0x3400&&cc<0x4E00)||(cc>=0xf900&&cc<0xfb00)){return F;}return "&#"+cc+";";});if(this.owner.fireEvent('beforesync',this,E)!==false){this.el.dom.value=E;
+this.owner.fireEvent('sync',this,E);}}},pushValue:function(){if(this.initialized){var v=this.el.dom.value.trim();if(this.owner.fireEvent('beforepush',this,v)!==false){var d=(this.doc.body||this.doc.documentElement);d.innerHTML=v;this.el.dom.value=d.innerHTML;
+this.owner.fireEvent('push',this,v);}if(this.autoClean){new Roo.htmleditor.FilterParagraph({node:this.doc.body});new Roo.htmleditor.FilterSpan({node:this.doc.body});}if(this.enableBlocks){Roo.htmleditor.Block.initAll(this.doc.body);}this.updateLanguage();
+var lc=this.doc.body.lastChild;if(lc&&lc.nodeType==1&&lc.getAttribute("contenteditable")=="false"){this.doc.body.appendChild(this.doc.createElement('br'));}}},deferFocus:function(){this.focus.defer(10,this);},focus:function(){if(this.win&&!this.sourceEditMode){this.win.focus();
+}else{this.el.focus();}},assignDocWin:function(){var A=this.iframe;if(Roo.isIE){this.doc=A.contentWindow.document;this.win=A.contentWindow;}else{if(!Roo.get(this.frameId)&&!A.contentDocument){return;}this.doc=(A.contentDocument||Roo.get(this.frameId).dom.document);
+this.win=(A.contentWindow||Roo.get(this.frameId).dom.contentWindow);}},initEditor:function(){this.assignDocWin();this.doc.designMode="on";this.doc.open();this.doc.write(this.getDocMarkup());this.doc.close();var A=(this.doc.body||this.doc.documentElement);
+A.bgProperties='fixed';A.setAttribute("translate","no");Roo.EventManager.on(this.doc,{'mouseup':this.onEditorEvent,'dblclick':this.onEditorEvent,'click':this.onEditorEvent,'keyup':this.onEditorEvent,buffer:100,scope:this});Roo.EventManager.on(this.doc,{'paste':this.onPasteEvent,scope:this}
+);if(Roo.isGecko){Roo.EventManager.on(this.doc,'keypress',this.mozKeyPress,this);}if(Roo.isIE||Roo.isSafari||Roo.isOpera){Roo.EventManager.on(this.doc,'keydown',this.fixKeys,this);}this.initialized=true;new Roo.htmleditor.KeyEnter({core:this});this.owner.fireEvent('initialize',this);
+this.pushValue();},onPasteEvent:function(e,v){var cd=(e.browserEvent.clipboardData||window.clipboardData);if(cd.files.length>0){var A=(window.createObjectURL&&window)||(window.URL&&URL.revokeObjectURL&&URL)||(window.webkitURL&&webkitURL);var B=A.createObjectURL(cd.files[0]);
+this.insertAtCursor('<img src=" + url + ">');return false;}var C=cd.getData('text/html');var D=new Roo.rtf.Parser(cd.getData('text/rtf'));var E=D.doc?D.doc.getElementsByType('pict'):[];Roo.log(E);E=E.filter(function(g){return !g.path.match(/^rtf\/(head|pgdsctbl|listtable)/);
+}).map(function(g){return g.toDataURL();}).filter(function(g){return g!='about:blank';});C=this.cleanWordChars(C);var d=(new DOMParser().parseFromString(C,'text/html')).body;var sn=this.getParentElement();if(d.getElementsByTagName('table').length&&sn&&sn.closest('table')){e.preventDefault();
+this.insertAtCursor("You can not nest tables");return false;}if(E.length>0){Roo.each(d.getElementsByTagName('img'),function(F,i){F.setAttribute('src',E[i]);});}if(this.autoClean){new Roo.htmleditor.FilterStyleToTag({node:d});new Roo.htmleditor.FilterAttributes({node:d,attrib_white:['href','src','name','align'],attrib_clean:['href','src']}
+);new Roo.htmleditor.FilterBlack({node:d,tag:this.black});new Roo.htmleditor.FilterKeepChildren({node:d,tag:['FONT','O:P']});new Roo.htmleditor.FilterParagraph({node:d});new Roo.htmleditor.FilterSpan({node:d});new Roo.htmleditor.FilterLongBr({node:d});}if(this.enableBlocks){Array.from(d.getElementsByTagName('img')).forEach(function(F){if(F.closest('figure')){return;
+}var G=new Roo.htmleditor.BlockFigure({image_src:F.src});G.updateElement(F);});}this.insertAtCursor(d.innerHTML.replace(/&nbsp;/g,' '));if(this.enableBlocks){Roo.htmleditor.Block.initAll(this.doc.body);}e.preventDefault();return false;},onDestroy:function(){if(this.rendered){}
+},onFirstFocus:function(){this.assignDocWin();this.undoManager=new Roo.lib.UndoManager(100,(this.doc.body||this.doc.documentElement));this.activated=true;if(Roo.isGecko){this.win.focus();var s=this.win.getSelection();if(!s.focusNode||s.focusNode.nodeType!=3){var r=s.getRangeAt(0);
+r.selectNodeContents((this.doc.body||this.doc.documentElement));r.collapse(true);this.deferFocus();}try{this.execCmd('useCSS',true);this.execCmd('styleWithCSS',false);}catch(e){}}this.owner.fireEvent('activate',this);},adjustFont:function(A){var B=A.cmd=='increasefontsize'?1:-1;
+var v=parseInt(this.doc.queryCommandValue('FontSize')||3,10);if(Roo.isSafari){var sm={10:1,13:2,16:3,18:4,24:5,32:6,48:7};v=(v<10)?10:v;v=(v>48)?48:v;v=typeof(sm[v])=='undefined'?1:sm[v];}v=Math.max(1,v+B);this.execCmd('FontSize',v);},onEditorEvent:function(e){if(e&&(e.ctrlKey||e.metaKey)&&e.keyCode===90){return;
+}if(e&&e.target.nodeName=='BODY'&&e.type=="mouseup"&&this.doc.body.lastChild){var lc=this.doc.body.lastChild;while((lc.nodeType==3&&lc.nodeValue=='')||lc.id=='gtx-trans'){lc=lc.previousSibling;}if(lc.nodeType==1&&lc.nodeName!='BR'){var ns=this.doc.createElement('br');
+this.doc.body.appendChild(ns);range=this.doc.createRange();range.setStartAfter(ns);range.collapse(true);var A=this.win.getSelection();A.removeAllRanges();A.addRange(range);}}this.fireEditorEvent(e);this.syncValue();},fireEditorEvent:function(e){this.owner.fireEvent('editorevent',this,e);
 },insertTag:function(tg){if(tg.toLowerCase()=='span'||tg.toLowerCase()=='code'||tg.toLowerCase()=='sup'||tg.toLowerCase()=='sub'){range=this.createRange(this.getSelection());var A=this.doc.createElement(tg.toLowerCase());A.appendChild(range.extractContents());
-range.insertNode(A);return;}this.execCmd("formatblock",tg);},insertText:function(A){var B=this.createRange();B.deleteContents();B.insertNode(this.doc.createTextNode(A));},relayCmd:function(A,B){this.win.focus();this.execCmd(A,B);this.owner.fireEvent('editorevent',this);
-this.owner.deferFocus();},execCmd:function(A,B){this.doc.execCommand(A,false,B===undefined?null:B);this.syncValue();},insertAtCursor:function(A){if(!this.activated){return;}if(Roo.isGecko||Roo.isOpera||Roo.isSafari){this.win.focus();var B,C;var D=this.win;
-if(D.getSelection&&D.getSelection().getRangeAt){B=D.getSelection().getRangeAt(0);C=typeof(A)=='string'?B.createContextualFragment(A):A;B.insertNode(C);}else if(D.document.selection&&D.document.selection.createRange){var E=typeof(A)=='string'?A:A.outerHTML;
-D.document.selection.createRange().pasteHTML(E);}else{var E=typeof(A)=='string'?A:A.outerHTML;this.execCmd('InsertHTML',E);}this.syncValue();this.deferFocus();}},mozKeyPress:function(e){if(e.ctrlKey){var c=e.getCharCode(),A;if(c>0){c=String.fromCharCode(c).toLowerCase();
-switch(c){case 'b':A='bold';break;case 'i':A='italic';break;case 'u':A='underline';break;case 'v':this.cleanUpPaste.defer(100,this);return;}if(A){this.win.focus();this.execCmd(A);this.deferFocus();e.preventDefault();}}}},fixKeys:function(){if(Roo.isIE){return function(e){var k=e.getKey(),r;
-if(k==e.TAB){e.stopEvent();r=this.doc.selection.createRange();if(r){r.collapse(true);r.pasteHTML('&#160;&#160;&#160;&#160;');this.deferFocus();}return;}if(k==e.ENTER){r=this.doc.selection.createRange();if(r){var A=r.parentElement();if(!A||A.tagName.toLowerCase()!='li'){e.stopEvent();
-r.pasteHTML('<br />');r.collapse(false);r.select();}}}if(String.fromCharCode(k).toLowerCase()=='v'){this.cleanUpPaste.defer(100,this);return;}};}else if(Roo.isOpera){return function(e){var k=e.getKey();if(k==e.TAB){e.stopEvent();this.win.focus();this.execCmd('InsertHTML','&#160;&#160;&#160;&#160;');
-this.deferFocus();}if(String.fromCharCode(k).toLowerCase()=='v'){this.cleanUpPaste.defer(100,this);return;}};}else if(Roo.isSafari){return function(e){var k=e.getKey();if(k==e.TAB){e.stopEvent();this.execCmd('InsertText','\t');this.deferFocus();return;}if(String.fromCharCode(k).toLowerCase()=='v'){this.cleanUpPaste.defer(100,this);
-return;}};}}(),getAllAncestors:function(){var p=this.getSelectedNode();var a=[];if(!p){a.push(p);p=this.getParentElement();}while(p&&(p.nodeType==1)&&(p.tagName.toLowerCase()!='body')){a.push(p);p=p.parentNode;}a.push(this.doc.body);return a;},lastSel:false,lastSelNode:false,getSelection:function(){this.assignDocWin();
-return Roo.isIE?this.doc.selection:this.win.getSelection();},getSelectedNode:function(){var A=this.createRange(this.getSelection()).cloneRange();if(Roo.isIE){var B=A.parentElement();while(true){var C=A.duplicate();C.moveToElementText(B);if(C.inRange(A)){break;
-}if((B.nodeType!=1)||(B.tagName.toLowerCase()=='body')){break;}B=B.parentElement;}return B;}var ac=A.commonAncestorContainer;if(ac.nodeType==3){ac=ac.parentNode;}var ar=ac.childNodes;var D=[];var E=[];var F=false;for(var i=0;i<ar.length;i++){if((ar[i].nodeType==3)&&(!ar[i].data.length)){continue;
-}if(this.rangeIntersectsNode(A,ar[i])&&this.rangeCompareNode(A,ar[i])==3){D.push(ar[i]);continue;}if((ar[i].nodeType==1)&&this.rangeIntersectsNode(A,ar[i])&&(this.rangeCompareNode(A,ar[i])>0)){E.push(ar[i]);continue;}if(!this.rangeIntersectsNode(A,ar[i])||(this.rangeCompareNode(A,ar[i])==0)){continue;
-}F=true;}if(!D.length&&E.length){D=E;}if(F||!D.length||(D.length>1)){return false;}return D[0];},createRange:function(A){if(typeof A!="undefined"){try{return A.getRangeAt?A.getRangeAt(0):A.createRange();}catch(e){return this.doc.createRange();}}else{return this.doc.createRange();
-}},getParentElement:function(){this.assignDocWin();var A=Roo.isIE?this.doc.selection:this.win.getSelection();var B=this.createRange(A);try{var p=B.commonAncestorContainer;while(p.nodeType==3){p=p.parentNode;}return p;}catch(e){return null;}},rangeIntersectsNode:function(A,B){var C=B.ownerDocument.createRange();
-try{C.selectNode(B);}catch(e){C.selectNodeContents(B);}var D=A.cloneRange();D.collapse(true);var E=A.cloneRange();E.collapse(false);var F=C.cloneRange();F.collapse(true);var G=C.cloneRange();G.collapse(false);return D.compareBoundaryPoints(Range.START_TO_START,G)==-1&&E.compareBoundaryPoints(Range.START_TO_START,F)==1;
-},rangeCompareNode:function(A,B){var C=B.ownerDocument.createRange();try{C.selectNode(B);}catch(e){C.selectNodeContents(B);}A.collapse(true);C.collapse(true);var ss=A.compareBoundaryPoints(Range.START_TO_START,C);var ee=A.compareBoundaryPoints(Range.END_TO_END,C);
-var D=ss==1;var E=ee==-1;if(D&&E){return 0;}if(!D&&E){return 1;}if(D&&!E){return 2;}return 3;},cleanUpPaste:function(){Roo.log('cleanuppaste');this.cleanUpChildren(this.doc.body);var A=this.cleanWordChars(this.doc.body.innerHTML);if(A!=this.doc.body.innerHTML){this.doc.body.innerHTML=A;
-}},cleanWordChars:function(A){var he=Roo.HtmlEditorCore;var B=A;Roo.each(he.swapCodes,function(sw){var C=new RegExp("\\u"+sw[0].toString(16),"g");B=B.replace(C,sw[1]);});return B;},cleanUpChildren:function(n){if(!n.childNodes.length){return;}for(var i=n.childNodes.length-1;
-i>-1;i--){this.cleanUpChild(n.childNodes[i]);}},cleanUpChild:function(A){var ed=this;if(A.nodeName=="#text"){return;}if(A.nodeName=="#comment"){if(!this.allowComments){A.parentNode.removeChild(A);}return;}var B=A.tagName.toLowerCase();if(this.black.indexOf(B)>-1&&this.clearUp){A.parentNode.removeChild(A);
-return;}var C=Roo.HtmlEditorCore.remove.indexOf(A.tagName.toLowerCase())>-1;if((!A.attributes||!A.attributes.length)&&B=='span'){C=true;}if(C){this.cleanUpChildren(A);while(A.childNodes.length){var cn=A.childNodes[0];A.removeChild(cn);A.parentNode.insertBefore(cn,A);
-}A.parentNode.removeChild(A);return;}if(!A.attributes||!A.attributes.length){this.cleanUpChildren(A);return;}function cleanAttr(n,v){if(v.match(/^\./)||v.match(/^\//)){return;}if(v.match(/^(http|https):\/\//)||v.match(/^mailto:/)||v.match(/^ftp:/)){return;
-}if(v.match(/^#/)){return;}if(v.match(/^\{/)){return;}A.removeAttribute(n);}var D=this.cwhite;var E=this.cblack;function cleanStyle(n,v){if(v.match(/expression/)){A.removeAttribute(n);return;}var F=v.split(/;/);var G=[];Roo.each(F,function(p){p=p.replace(/^\s+/g,'').replace(/\s+$/g,'');
-if(!p.length){return true;}var l=p.split(':').shift().replace(/\s+/g,'');l=l.replace(/^\s+/g,'').replace(/\s+$/g,'');if(D.length&&E.indexOf(l)>-1){return true;}if(D.length&&D.indexOf(l)<0&&D.indexOf(l.toLowerCase())<0){return true;}G.push(p);return true;}
-);if(G.length){A.setAttribute(n,G.join(';'));}else{A.removeAttribute(n);}}for(var i=A.attributes.length-1;i>-1;i--){var a=A.attributes[i];if(a.name.toLowerCase().substr(0,2)=='on'){A.removeAttribute(a.name);continue;}if(Roo.HtmlEditorCore.ablack.indexOf(a.name.toLowerCase())>-1){A.removeAttribute(a.name);
-continue;}if(Roo.HtmlEditorCore.aclean.indexOf(a.name.toLowerCase())>-1){cleanAttr(a.name,a.value);continue;}if(a.name=='style'){cleanStyle(a.name,a.value);continue;}if(a.name=='class'){if(a.value.match(/^Mso/)){A.removeAttribute('class');}if(a.value.match(/^body$/)){A.removeAttribute('class');
-}continue;}}this.cleanUpChildren(A);},cleanWord:function(A){if(!A){this.cleanWord(this.doc.body);return;}if(A.nodeName=='SPAN'&&!A.hasAttributes()&&A.childNodes.length==1&&A.firstChild.nodeName=="#text"){var B=A.firstChild;A.removeChild(B);if(A.getAttribute('lang')!='zh-CN'){A.parentNode.insertBefore(A.ownerDocument.createTextNode(" "),A);
-}A.parentNode.insertBefore(B,A);if(A.getAttribute('lang')!='zh-CN'){A.parentNode.insertBefore(A.ownerDocument.createTextNode(" "),A);}A.parentNode.removeChild(A);}if(A.nodeName=="#text"){return;}if(A.nodeName=="#comment"){A.parentNode.removeChild(A);return;
-}if(A.tagName.toLowerCase().match(/^(style|script|applet|embed|noframes|noscript)$/)){A.parentNode.removeChild(A);return;}if(A.tagName.toLowerCase().match(/^(meta|link|\\?xml:|st1:|o:|v:|font)/)){while(A.childNodes.length){var cn=A.childNodes[0];A.removeChild(cn);
-A.parentNode.insertBefore(cn,A);this.cleanWord(cn);}A.parentNode.removeChild(A);return;}if(A.className.length){var cn=A.className.split(/\W+/);var C=[];Roo.each(cn,function(F){if(F.match(/Mso[a-zA-Z]+/)){return;}C.push(F);});A.className=C.length?C.join(' '):'';
-if(!C.length){A.removeAttribute("class");}}if(A.hasAttribute("lang")){A.removeAttribute("lang");}if(A.hasAttribute("style")){var D=A.getAttribute("style").split(";");var E=[];Roo.each(D,function(s){if(!s.match(/:/)){return;}var kv=s.split(":");if(kv[0].match(/^(mso-|line|font|background|margin|padding|color)/)){return;
-}E.push(s);});A.setAttribute("style",E.length?E.join(';'):'');if(!E.length){A.removeAttribute('style');}}this.iterateChildren(A,this.cleanWord);},iterateChildren:function(A,fn){if(!A.childNodes.length){return;}for(var i=A.childNodes.length-1;i>-1;i--){fn.call(this,A.childNodes[i])}
-},cleanTableWidths:function(A){if(!A){this.cleanTableWidths(this.doc.body);return;}if(A.nodeName=="#text"||A.nodeName=="#comment"){return;}Roo.log(A.tagName);if(!A.tagName.toLowerCase().match(/^(table|td|tr)$/)){this.iterateChildren(A,this.cleanTableWidths);
-return;}if(A.hasAttribute('width')){A.removeAttribute('width');}if(A.hasAttribute("style")){var B=A.getAttribute("style").split(";");var C=[];Roo.each(B,function(s){if(!s.match(/:/)){return;}var kv=s.split(":");if(kv[0].match(/^\s*(width|min-width)\s*$/)){return;
-}C.push(s);});A.setAttribute("style",C.length?C.join(';'):'');if(!C.length){A.removeAttribute('style');}}this.iterateChildren(A,this.cleanTableWidths);},domToHTML:function(A,B,C){B=B||0;C=C||false;if(!A){return this.domToHTML(this.doc.body);}var j;var D=false;
-var E=A.nodeName;var F=Roo.util.Format.htmlEncode(A.tagName);if(E=='#text'){return C?A.nodeValue:A.nodeValue.trim();}var G='';if(E!='BODY'){var i=0;if(F){var H=[];for(i=0;i<A.attributes.length;i++){var I=A.attributes.item(i).name;if(!A.attributes.item(i).value.length){continue;
-}H.push(I+'="'+Roo.util.Format.htmlEncode(A.attributes.item(i).value)+'"');}G="<"+A.tagName+(H.length?(' '+H.join(' ')):'')+">";}else{}}else{F=false;}if(['IMG','BR','HR','INPUT'].indexOf(F)>-1){return G;}if(['PRE','TEXTAREA','TD','A','SPAN'].indexOf(F)>-1){C=true;
-}i=0;var J=A.childNodes.item(i);var D=true;var K='';lastnode='';while(J){var L=C;if(lastnode=='SPAN'){L=true;}if(J.nodeName=='#text'){var M=Roo.util.Format.htmlEncode(J.nodeValue);M=C?M:M.trim();if(!L&&M.length>80){K+="\n"+(new Array(B+1)).join("  ");}K+=M;
-i++;J=A.childNodes.item(i);lastNode='';continue;}D=false;K+=L?'':"\n"+(new Array(B+1)).join("  ");K+=this.domToHTML(J,B+1,C);lastnode=J.nodeName;i++;J=A.childNodes.item(i);}G+=K;if(!D){G+=C?'':"\n"+(new Array(B)).join("  ");}if(F){G+="</"+F+">";}return G;
-},applyBlacklists:function(){var w=typeof(this.owner.white)!='undefined'&&this.owner.white?this.owner.white:[];var b=typeof(this.owner.black)!='undefined'&&this.owner.black?this.owner.black:[];this.white=[];this.black=[];Roo.each(Roo.HtmlEditorCore.white,function(A){if(b.indexOf(A)>-1){return;
-}this.white.push(A);},this);Roo.each(w,function(A){if(b.indexOf(A)>-1){return;}if(this.white.indexOf(A)>-1){return;}this.white.push(A);},this);Roo.each(Roo.HtmlEditorCore.black,function(A){if(w.indexOf(A)>-1){return;}this.black.push(A);},this);Roo.each(b,function(A){if(w.indexOf(A)>-1){return;
+range.insertNode(A);return;}this.execCmd("formatblock",tg);this.undoManager.addEvent();},insertText:function(A){var B=this.createRange();B.deleteContents();B.insertNode(this.doc.createTextNode(A));this.undoManager.addEvent();},relayCmd:function(A,B){switch(A){case 'justifyleft':case 'justifyright':case 'justifycenter':var n=this.getParentElement();
+var td=n.closest('td');if(td){var bl=Roo.htmleditor.Block.factory(td);bl.textAlign=A.replace('justify','');bl.updateElement();this.owner.fireEvent('editorevent',this);return;}this.execCmd('styleWithCSS',true);break;case 'bold':case 'italic':this.execCmd('styleWithCSS',false);
+break;default:break;}this.win.focus();this.execCmd(A,B);this.owner.fireEvent('editorevent',this);this.owner.deferFocus();},execCmd:function(A,B){this.doc.execCommand(A,false,B===undefined?null:B);this.syncValue();},insertAtCursor:function(A){if(!this.activated){return;
+}if(Roo.isGecko||Roo.isOpera||Roo.isSafari){this.win.focus();var B,C;var D=this.win;if(D.getSelection&&D.getSelection().getRangeAt){this.createRange(this.getSelection()).deleteContents();B=D.getSelection().getRangeAt(0);C=typeof(A)=='string'?B.createContextualFragment(A):A;
+B.insertNode(C);B=B.cloneRange();B.collapse(false);D.getSelection().removeAllRanges();D.getSelection().addRange(B);}else if(D.document.selection&&D.document.selection.createRange){var E=typeof(A)=='string'?A:A.outerHTML;D.document.selection.createRange().pasteHTML(E);
+}else{var E=typeof(A)=='string'?A:A.outerHTML;this.execCmd('InsertHTML',E);}this.syncValue();this.deferFocus();}},mozKeyPress:function(e){if(e.ctrlKey){var c=e.getCharCode(),A;if(c>0){c=String.fromCharCode(c).toLowerCase();switch(c){case 'b':A='bold';break;
+case 'i':A='italic';break;case 'u':A='underline';break;}if(A){this.relayCmd(A);e.preventDefault();}}}},fixKeys:function(){if(Roo.isIE){return function(e){var k=e.getKey(),r;if(k==e.TAB){e.stopEvent();r=this.doc.selection.createRange();if(r){r.collapse(true);
+r.pasteHTML('&#160;&#160;&#160;&#160;');this.deferFocus();}return;}};}else if(Roo.isOpera){return function(e){var k=e.getKey();if(k==e.TAB){e.stopEvent();this.win.focus();this.execCmd('InsertHTML','&#160;&#160;&#160;&#160;');this.deferFocus();}};}else if(Roo.isSafari){return function(e){var k=e.getKey();
+if(k==e.TAB){e.stopEvent();this.execCmd('InsertText','\t');this.deferFocus();return;}this.mozKeyPress(e);};}}(),getAllAncestors:function(){var p=this.getSelectedNode();var a=[];if(!p){a.push(p);p=this.getParentElement();}while(p&&(p.nodeType==1)&&(p.tagName.toLowerCase()!='body')){a.push(p);
+p=p.parentNode;}a.push(this.doc.body);return a;},lastSel:false,lastSelNode:false,getSelection:function(){this.assignDocWin();return Roo.lib.Selection.wrap(Roo.isIE?this.doc.selection:this.win.getSelection(),this.doc);},selectNode:function(A,B){var C=A.ownerDocument.createRange();
+try{C.selectNode(A);}catch(e){C.selectNodeContents(A);}if(B===true){C.collapse(true);}var s=this.win.getSelection();s.removeAllRanges();s.addRange(C);},getSelectedNode:function(){var A=this.createRange(this.getSelection()).cloneRange();if(Roo.isIE){var B=A.parentElement();
+while(true){var C=A.duplicate();C.moveToElementText(B);if(C.inRange(A)){break;}if((B.nodeType!=1)||(B.tagName.toLowerCase()=='body')){break;}B=B.parentElement;}return B;}var ac=A.commonAncestorContainer;if(ac.nodeType==3){ac=ac.parentNode;}var ar=ac.childNodes;
+var D=[];var E=[];var F=false;for(var i=0;i<ar.length;i++){if((ar[i].nodeType==3)&&(!ar[i].data.length)){continue;}if(this.rangeIntersectsNode(A,ar[i])&&this.rangeCompareNode(A,ar[i])==3){D.push(ar[i]);continue;}if((ar[i].nodeType==1)&&this.rangeIntersectsNode(A,ar[i])&&(this.rangeCompareNode(A,ar[i])>0)){E.push(ar[i]);
+continue;}if(!this.rangeIntersectsNode(A,ar[i])||(this.rangeCompareNode(A,ar[i])==0)){continue;}F=true;}if(!D.length&&E.length){D=E;}if(F||!D.length||(D.length>1)){return false;}return D[0];},createRange:function(A){if(typeof A!="undefined"){try{return A.getRangeAt?A.getRangeAt(0):A.createRange();
+}catch(e){return this.doc.createRange();}}else{return this.doc.createRange();}},getParentElement:function(){this.assignDocWin();var A=Roo.isIE?this.doc.selection:this.win.getSelection();var B=this.createRange(A);try{var p=B.commonAncestorContainer;while(p.nodeType==3){p=p.parentNode;
+}return p;}catch(e){return null;}},rangeIntersectsNode:function(A,B){var C=B.ownerDocument.createRange();try{C.selectNode(B);}catch(e){C.selectNodeContents(B);}var D=A.cloneRange();D.collapse(true);var E=A.cloneRange();E.collapse(false);var F=C.cloneRange();
+F.collapse(true);var G=C.cloneRange();G.collapse(false);return D.compareBoundaryPoints(Range.START_TO_START,G)==-1&&E.compareBoundaryPoints(Range.START_TO_START,F)==1;},rangeCompareNode:function(A,B){var C=B.ownerDocument.createRange();try{C.selectNode(B);
+}catch(e){C.selectNodeContents(B);}A.collapse(true);C.collapse(true);var ss=A.compareBoundaryPoints(Range.START_TO_START,C);var ee=A.compareBoundaryPoints(Range.END_TO_END,C);var D=ss==1;var E=ee==-1;if(D&&E){return 0;}if(!D&&E){return 1;}if(D&&!E){return 2;
+}return 3;},cleanWordChars:function(A){var B=[[8211,"&#8211;"],[8212,"&#8212;"],[8216,"'"],[8217,"'"],[8220,'"'],[8221,'"'],[8226,"*"],[8230,"..."]];var C=A;Roo.each(B,function(sw){var D=new RegExp("\\u"+sw[0].toString(16),"g");C=C.replace(D,sw[1]);});return C;
+},cleanUpChild:function(A){new Roo.htmleditor.FilterComment({node:A});new Roo.htmleditor.FilterAttributes({node:A,attrib_black:this.ablack,attrib_clean:this.aclean,style_white:this.cwhite,style_black:this.cblack});new Roo.htmleditor.FilterBlack({node:A,tag:this.black}
+);new Roo.htmleditor.FilterKeepChildren({node:A,tag:this.tag_remove});},cleanWord:function(A){new Roo.htmleditor.FilterWord({node:A?A:this.doc.body});},cleanTableWidths:function(A){new Roo.htmleditor.FilterTableWidth({node:A?A:this.doc.body});},applyBlacklists:function(){var w=typeof(this.owner.white)!='undefined'&&this.owner.white?this.owner.white:[];
+var b=typeof(this.owner.black)!='undefined'&&this.owner.black?this.owner.black:[];this.aclean=typeof(this.owner.aclean)!='undefined'&&this.owner.aclean?this.owner.aclean:Roo.HtmlEditorCore.aclean;this.ablack=typeof(this.owner.ablack)!='undefined'&&this.owner.ablack?this.owner.ablack:Roo.HtmlEditorCore.ablack;
+this.tag_remove=typeof(this.owner.tag_remove)!='undefined'&&this.owner.tag_remove?this.owner.tag_remove:Roo.HtmlEditorCore.tag_remove;this.white=[];this.black=[];Roo.each(Roo.HtmlEditorCore.white,function(A){if(b.indexOf(A)>-1){return;}this.white.push(A);
+},this);Roo.each(w,function(A){if(b.indexOf(A)>-1){return;}if(this.white.indexOf(A)>-1){return;}this.white.push(A);},this);Roo.each(Roo.HtmlEditorCore.black,function(A){if(w.indexOf(A)>-1){return;}this.black.push(A);},this);Roo.each(b,function(A){if(w.indexOf(A)>-1){return;
 }if(this.black.indexOf(A)>-1){return;}this.black.push(A);},this);w=typeof(this.owner.cwhite)!='undefined'&&this.owner.cwhite?this.owner.cwhite:[];b=typeof(this.owner.cblack)!='undefined'&&this.owner.cblack?this.owner.cblack:[];this.cwhite=[];this.cblack=[];
 Roo.each(Roo.HtmlEditorCore.cwhite,function(A){if(b.indexOf(A)>-1){return;}this.cwhite.push(A);},this);Roo.each(w,function(A){if(b.indexOf(A)>-1){return;}if(this.cwhite.indexOf(A)>-1){return;}this.cwhite.push(A);},this);Roo.each(Roo.HtmlEditorCore.cblack,function(A){if(w.indexOf(A)>-1){return;
 }this.cblack.push(A);},this);Roo.each(b,function(A){if(w.indexOf(A)>-1){return;}if(this.cblack.indexOf(A)>-1){return;}this.cblack.push(A);},this);},setStylesheets:function(A){if(typeof(A)=='string'){Roo.get(this.iframe.contentDocument.head).createChild({tag:'link',rel:'stylesheet',type:'text/css',href:A}
-);return;}var B=this;Roo.each(A,function(s){if(!s.length){return;}Roo.get(B.iframe.contentDocument.head).createChild({tag:'link',rel:'stylesheet',type:'text/css',href:s});});},removeStylesheets:function(){var A=this;Roo.each(Roo.get(A.iframe.contentDocument.head).select('link[rel=stylesheet]',true).elements,function(s){s.remove();
-});},setStyle:function(A){Roo.get(this.iframe.contentDocument.head).createChild({tag:'style',type:'text/css',html:A});return;}});Roo.HtmlEditorCore.white=['area','br','img','input','hr','wbr','address','blockquote','center','dd','dir','div','dl','dt','h1','h2','h3','h4','h5','h6','hr','isindex','listing','marquee','menu','multicol','ol','p','plaintext','pre','table','ul','xmp','caption','col','colgroup','tbody','td','tfoot','th','thead','tr','dir','menu','ol','ul','dl','embed','object'];
-Roo.HtmlEditorCore.black=['applet','base','basefont','bgsound','blink','body','frame','frameset','head','html','ilayer','iframe','layer','link','meta','object','script','style','title','xml'];Roo.HtmlEditorCore.clean=['script','style','title','xml'];Roo.HtmlEditorCore.remove=['font'];
-Roo.HtmlEditorCore.ablack=['on'];Roo.HtmlEditorCore.aclean=['action','background','codebase','dynsrc','href','lowsrc'];Roo.HtmlEditorCore.pwhite=['http','https','mailto'];Roo.HtmlEditorCore.cwhite=[];Roo.HtmlEditorCore.cblack=[];Roo.HtmlEditorCore.swapCodes=[[8211,"&#8211;"],[8212,"&#8212;"],[8216,"'"],[8217,"'"],[8220,'"'],[8221,'"'],[8226,"*"],[8230,"..."]];
+);return;}var B=this;Roo.each(A,function(s){if(!s.length){return;}Roo.get(B.iframe.contentDocument.head).createChild({tag:'link',rel:'stylesheet',type:'text/css',href:s});});},updateLanguage:function(){if(!this.iframe||!this.iframe.contentDocument){return;
+}Roo.get(this.iframe.contentDocument.body).attr("lang",this.language);},removeStylesheets:function(){var A=this;Roo.each(Roo.get(A.iframe.contentDocument.head).select('link[rel=stylesheet]',true).elements,function(s){s.remove();});},setStyle:function(A){Roo.get(this.iframe.contentDocument.head).createChild({tag:'style',type:'text/css',html:A}
+);return;}});Roo.HtmlEditorCore.white=['AREA','BR','IMG','INPUT','HR','WBR','ADDRESS','BLOCKQUOTE','CENTER','DD','DIR','DIV','DL','DT','H1','H2','H3','H4','H5','H6','HR','ISINDEX','LISTING','MARQUEE','MENU','MULTICOL','OL','P','PLAINTEXT','PRE','TABLE','UL','XMP','CAPTION','COL','COLGROUP','TBODY','TD','TFOOT','TH','THEAD','TR','DIR','MENU','OL','UL','DL','EMBED','OBJECT'];
+Roo.HtmlEditorCore.black=['APPLET','BASE','BASEFONT','BGSOUND','BLINK','BODY','FRAME','FRAMESET','HEAD','HTML','ILAYER','IFRAME','LAYER','LINK','META','OBJECT','SCRIPT','STYLE','TITLE','XML','COLGROUP','COL'];Roo.HtmlEditorCore.clean=['SCRIPT','STYLE','TITLE','XML'];
+Roo.HtmlEditorCore.tag_remove=['FONT','TBODY'];Roo.HtmlEditorCore.ablack=['on'];Roo.HtmlEditorCore.aclean=['action','background','codebase','dynsrc','href','lowsrc'];Roo.HtmlEditorCore.pwhite=['http','https','mailto'];Roo.HtmlEditorCore.cwhite=[];Roo.HtmlEditorCore.cblack=[];
 
 // Roo/form/HtmlEditor.js
-Roo.form.HtmlEditor=function(A){Roo.form.HtmlEditor.superclass.constructor.call(this,A);if(!this.toolbars){this.toolbars=[];}this.editorcore=new Roo.HtmlEditorCore(Roo.apply({owner:this},A));};Roo.extend(Roo.form.HtmlEditor,Roo.form.Field,{clearUp:true,toolbars:false,resizable:false,height:300,width:500,stylesheets:false,cblack:false,cwhite:false,black:false,white:false,allowComments:false,frameId:false,validationEvent:false,deferHeight:true,initialized:false,activated:false,onFocus:Roo.emptyFn,iframePad:3,hideMode:'offsets',actionMode:'container',defaultAutoCreate:{tag:"textarea",style:"width:500px;height:300px;",autocomplete:"new-password"}
-,initComponent:function(){this.addEvents({initialize:true,activate:true,beforesync:true,beforepush:true,sync:true,push:true,editmodechange:true,editorevent:true,firstfocus:true,autosave:true,savedpreview:true,stylesheetsclick:true});this.defaultAutoCreate={tag:"textarea",style:'width: '+this.width+'px;height: '+this.height+'px;',autocomplete:"new-password"}
+Roo.form.HtmlEditor=function(A){Roo.form.HtmlEditor.superclass.constructor.call(this,A);if(!this.toolbars){this.toolbars=[];}this.editorcore=new Roo.HtmlEditorCore(Roo.apply({owner:this},A));};Roo.extend(Roo.form.HtmlEditor,Roo.form.Field,{clearUp:true,toolbars:false,resizable:false,height:300,width:500,stylesheets:false,cblack:false,cwhite:false,black:false,white:false,allowComments:false,enableBlocks:true,autoClean:true,bodyCls:'',language:'en',frameId:false,validationEvent:false,deferHeight:true,initialized:false,activated:false,onFocus:Roo.emptyFn,iframePad:3,hideMode:'offsets',actionMode:'container',defaultAutoCreate:{tag:"textarea",style:"width:500px;height:300px;",autocomplete:"new-password"}
+,initComponent:function(){this.addEvents({initialize:true,activate:true,beforesync:true,beforepush:true,sync:true,push:true,editmodechange:true,editorevent:true,firstfocus:true,autosave:true,savedpreview:true,stylesheetsclick:true,paste:true});this.defaultAutoCreate={tag:"textarea",style:'width: '+this.width+'px;height: '+this.height+'px;',autocomplete:"new-password"}
 ;},createToolbar:function(A){Roo.log("create toolbars");if(!A.toolbars||!A.toolbars.length){A.toolbars=[new Roo.form.HtmlEditor.ToolbarStandard()];}for(var i=0;i<A.toolbars.length;i++){A.toolbars[i]=Roo.factory(typeof(A.toolbars[i])=='string'?{xtype:A.toolbars[i]}
-:A.toolbars[i],Roo.form.HtmlEditor);A.toolbars[i].init(A);}},onRender:function(ct,A){var _t=this;Roo.form.HtmlEditor.superclass.onRender.call(this,ct,A);this.wrap=this.el.wrap({cls:'x-html-editor-wrap',cn:{cls:'x-html-editor-tb'}});this.editorcore.onRender(ct,A);
-if(this.resizable){this.resizeEl=new Roo.Resizable(this.wrap,{pinned:true,wrap:true,dynamic:true,minHeight:this.height,height:this.height,handles:this.resizable,width:this.width,listeners:{resize:function(r,w,h){_t.onResize(w,h);}}});}this.createToolbar(this);
-if(!this.width){this.setSize(this.wrap.getSize());}if(this.resizeEl){this.resizeEl.resizeTo.defer(100,this.resizeEl,[this.width,this.height]);}this.keyNav=new Roo.KeyNav(this.el,{"tab":function(e){e.preventDefault();var B=this.getValue();var C=this.el.dom.selectionStart;
-var D=this.el.dom.selectionEnd;if(!e.shiftKey){this.setValue(B.substring(0,C)+"\t"+B.substring(D));this.el.dom.setSelectionRange(D+1,D+1);return;}var f=B.substring(0,C).split("\t");if(f.pop().length!=0){return;}this.setValue(f.join("\t")+B.substring(D));this.el.dom.setSelectionRange(C-1,C-1);
-},"home":function(e){e.preventDefault();var B=this.el.dom.selectionStart;var C=this.getValue().split("\n");if(!C.length){return;}if(e.ctrlKey){this.el.dom.setSelectionRange(0,0);return;}var D=0;for(var i=0;i<C.length;i++){D+=C[i].length;if(i!=0){D+=1;}if(D<B){continue;
-}D-=C[i].length;break;}if(!e.shiftKey){this.el.dom.setSelectionRange(D,D);return;}this.el.dom.selectionStart=D;this.el.dom.selectionEnd=B;},"end":function(e){e.preventDefault();var B=this.el.dom.selectionStart;var C=this.getValue().split("\n");if(!C.length){return;
-}if(e.ctrlKey){this.el.dom.setSelectionRange(this.getValue().length,this.getValue().length);return;}var D=0;for(var i=0;i<C.length;i++){D+=C[i].length;if(i!=0){D+=1;}if(D<B){continue;}break;}if(!e.shiftKey){this.el.dom.setSelectionRange(D,D);return;}this.el.dom.selectionStart=B;
-this.el.dom.selectionEnd=D;},scope:this,doRelay:function(B,C,D){return Roo.KeyNav.prototype.doRelay.apply(this,arguments);},forceKeyDown:true});},onResize:function(w,h){Roo.form.HtmlEditor.superclass.onResize.apply(this,arguments);var ew=false;var eh=false;
-if(this.el){if(typeof w=='number'){var aw=w-this.wrap.getFrameWidth('lr');this.el.setWidth(this.adjustWidth('textarea',aw));ew=aw;}if(typeof h=='number'){var A=0;for(var i=0;i<this.toolbars.length;i++){A+=this.toolbars[i].tb.el.getHeight();if(this.toolbars[i].footer){A+=this.toolbars[i].footer.el.getHeight();
-}}var ah=h-this.wrap.getFrameWidth('tb')-A;ah-=5;this.el.setHeight(this.adjustWidth('textarea',ah));var eh=ah;}}Roo.log('onResize:'+[w,h,ew,eh].join(','));this.editorcore.onResize(ew,eh);},toggleSourceEdit:function(A){this.editorcore.toggleSourceEdit(A);if(this.editorcore.sourceEditMode){Roo.log('editor - showing textarea');
-this.editorcore.syncValue();this.el.removeClass('x-hidden');this.el.dom.removeAttribute('tabIndex');this.el.focus();for(var i=0;i<this.toolbars.length;i++){if(this.toolbars[i] instanceof Roo.form.HtmlEditor.ToolbarContext){this.toolbars[i].tb.hide();this.toolbars[i].footer.hide();
-}}}else{Roo.log('editor - hiding textarea');this.editorcore.pushValue();this.el.addClass('x-hidden');this.el.dom.setAttribute('tabIndex',-1);for(var i=0;i<this.toolbars.length;i++){if(this.toolbars[i] instanceof Roo.form.HtmlEditor.ToolbarContext){this.toolbars[i].tb.show();
-this.toolbars[i].footer.show();}}}this.setSize(this.wrap.getSize());this.onResize(this.wrap.getSize().width,this.wrap.getSize().height);this.fireEvent('editmodechange',this,this.editorcore.sourceEditMode);},adjustSize:Roo.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap;
-},getPositionEl:function(){return this.wrap;},initEvents:function(){this.originalValue=this.getValue();},markInvalid:Roo.emptyFn,clearInvalid:Roo.emptyFn,setValue:function(v){Roo.form.HtmlEditor.superclass.setValue.call(this,v);this.editorcore.pushValue();
-},deferFocus:function(){this.focus.defer(10,this);},focus:function(){this.editorcore.focus();},onDestroy:function(){if(this.rendered){for(var i=0;i<this.toolbars.length;i++){this.toolbars[i].onDestroy();}this.wrap.dom.innerHTML='';this.wrap.remove();}},onFirstFocus:function(){this.editorcore.onFirstFocus();
-for(var i=0;i<this.toolbars.length;i++){this.toolbars[i].onFirstFocus();}},syncValue:function(){this.editorcore.syncValue();},pushValue:function(){this.editorcore.pushValue();},setStylesheets:function(A){this.editorcore.setStylesheets(A);},removeStylesheets:function(){this.editorcore.removeStylesheets();
-}});
+:A.toolbars[i],Roo.form.HtmlEditor);A.toolbars[i].init(A);}},getSelectedNode:function(){if(this.toolbars.length<2||!this.toolbars[1].tb){return false;}return this.toolbars[1].tb.selectedNode;},onRender:function(ct,A){var _t=this;Roo.form.HtmlEditor.superclass.onRender.call(this,ct,A);
+this.wrap=this.el.wrap({cls:'x-html-editor-wrap',cn:{cls:'x-html-editor-tb'}});this.editorcore.onRender(ct,A);if(this.resizable){this.resizeEl=new Roo.Resizable(this.wrap,{pinned:true,wrap:true,dynamic:true,minHeight:this.height,height:this.height,handles:this.resizable,width:this.width,listeners:{resize:function(r,w,h){_t.onResize(w,h);
+}}});}this.createToolbar(this);if(!this.width){this.setSize(this.wrap.getSize());}if(this.resizeEl){this.resizeEl.resizeTo.defer(100,this.resizeEl,[this.width,this.height]);}this.keyNav=new Roo.KeyNav(this.el,{"tab":function(e){e.preventDefault();var B=this.getValue();
+var C=this.el.dom.selectionStart;var D=this.el.dom.selectionEnd;if(!e.shiftKey){this.setValue(B.substring(0,C)+"\t"+B.substring(D));this.el.dom.setSelectionRange(D+1,D+1);return;}var f=B.substring(0,C).split("\t");if(f.pop().length!=0){return;}this.setValue(f.join("\t")+B.substring(D));
+this.el.dom.setSelectionRange(C-1,C-1);},"home":function(e){e.preventDefault();var B=this.el.dom.selectionStart;var C=this.getValue().split("\n");if(!C.length){return;}if(e.ctrlKey){this.el.dom.setSelectionRange(0,0);return;}var D=0;for(var i=0;i<C.length;
+i++){D+=C[i].length;if(i!=0){D+=1;}if(D<B){continue;}D-=C[i].length;break;}if(!e.shiftKey){this.el.dom.setSelectionRange(D,D);return;}this.el.dom.selectionStart=D;this.el.dom.selectionEnd=B;},"end":function(e){e.preventDefault();var B=this.el.dom.selectionStart;
+var C=this.getValue().split("\n");if(!C.length){return;}if(e.ctrlKey){this.el.dom.setSelectionRange(this.getValue().length,this.getValue().length);return;}var D=0;for(var i=0;i<C.length;i++){D+=C[i].length;if(i!=0){D+=1;}if(D<B){continue;}break;}if(!e.shiftKey){this.el.dom.setSelectionRange(D,D);
+return;}this.el.dom.selectionStart=B;this.el.dom.selectionEnd=D;},scope:this,doRelay:function(B,C,D){return Roo.KeyNav.prototype.doRelay.apply(this,arguments);},forceKeyDown:true});},onResize:function(w,h){Roo.form.HtmlEditor.superclass.onResize.apply(this,arguments);
+var ew=false;var eh=false;if(this.el){if(typeof w=='number'){var aw=w-this.wrap.getFrameWidth('lr');this.el.setWidth(this.adjustWidth('textarea',aw));ew=aw;}if(typeof h=='number'){var A=0;for(var i=0;i<this.toolbars.length;i++){A+=this.toolbars[i].tb.el.getHeight();
+if(this.toolbars[i].footer){A+=this.toolbars[i].footer.el.getHeight();}}var ah=h-this.wrap.getFrameWidth('tb')-A;ah-=5;this.el.setHeight(this.adjustWidth('textarea',ah));var eh=ah;}}Roo.log('onResize:'+[w,h,ew,eh].join(','));this.editorcore.onResize(ew,eh);
+},toggleSourceEdit:function(A){this.editorcore.toggleSourceEdit(A);if(this.editorcore.sourceEditMode){Roo.log('editor - showing textarea');this.editorcore.syncValue();this.el.removeClass('x-hidden');this.el.dom.removeAttribute('tabIndex');this.el.focus();
+this.el.dom.scrollTop=0;for(var i=0;i<this.toolbars.length;i++){if(this.toolbars[i] instanceof Roo.form.HtmlEditor.ToolbarContext){this.toolbars[i].tb.hide();this.toolbars[i].footer.hide();}}}else{Roo.log('editor - hiding textarea');this.editorcore.pushValue();
+this.el.addClass('x-hidden');this.el.dom.setAttribute('tabIndex',-1);for(var i=0;i<this.toolbars.length;i++){if(this.toolbars[i] instanceof Roo.form.HtmlEditor.ToolbarContext){this.toolbars[i].tb.show();this.toolbars[i].footer.show();}}}this.setSize(this.wrap.getSize());
+this.onResize(this.wrap.getSize().width,this.wrap.getSize().height);this.fireEvent('editmodechange',this,this.editorcore.sourceEditMode);},adjustSize:Roo.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap;},getPositionEl:function(){return this.wrap;
+},initEvents:function(){this.originalValue=this.getValue();},markInvalid:Roo.emptyFn,clearInvalid:Roo.emptyFn,setValue:function(v){Roo.form.HtmlEditor.superclass.setValue.call(this,v);this.editorcore.pushValue();},updateLanguage:function(A){this.language=A;
+this.editorcore.language=A;this.editorcore.updateLanguage();},deferFocus:function(){this.focus.defer(10,this);},focus:function(){this.editorcore.focus();},onDestroy:function(){if(this.rendered){for(var i=0;i<this.toolbars.length;i++){this.toolbars[i].onDestroy();
+}this.wrap.dom.innerHTML='';this.wrap.remove();}},onFirstFocus:function(){this.editorcore.onFirstFocus();for(var i=0;i<this.toolbars.length;i++){this.toolbars[i].onFirstFocus();}},syncValue:function(){this.editorcore.syncValue();},pushValue:function(){this.editorcore.pushValue();
+},setStylesheets:function(A){this.editorcore.setStylesheets(A);},removeStylesheets:function(){this.editorcore.removeStylesheets();}});
 // Roo/form/HtmlEditor/ToolbarStandard.js
-Roo.form.HtmlEditor.ToolbarStandard=function(A){Roo.apply(this,A);this.disable=this.disable||{};Roo.applyIf(this.disable,{fontSize:true,colors:true,specialElements:true});};Roo.apply(Roo.form.HtmlEditor.ToolbarStandard.prototype,{tb:false,rendered:false,editor:false,editorcore:false,disable:false,createLinkText:'Please enter the URL for the link:',defaultLinkValue:'http:/'+'/',fontFamilies:['Arial','Courier New','Tahoma','Times New Roman','Verdana'],specialChars:["&#169;","&#174;","&#8482;","&#163;","&#8230;","&#247;","&#8364;","&#176;"],specialElements:[{text:"Insert Table",xtype:'MenuItem',xns:Roo.Menu,ihtml:'<table><tr><td>Cell</td></tr></table>'}
+Roo.form.HtmlEditor.ToolbarStandard=function(A){Roo.apply(this,A);this.disable=this.disable||{};Roo.applyIf(this.disable,{fontSize:true,colors:true,specialElements:true});};Roo.form.HtmlEditor.ToolbarStandard.prototype={tb:false,rendered:false,editor:false,editorcore:false,disable:false,createLinkText:'Please enter the URL for the link:',defaultLinkValue:'http:/'+'/',fontFamilies:['Arial','Courier New','Tahoma','Times New Roman','Verdana'],specialChars:["&#169;","&#174;","&#8482;","&#163;","&#8230;","&#247;","&#8364;","&#176;"],specialElements:[{text:"Insert Table",xtype:'MenuItem',xns:Roo.Menu,ihtml:'<table><tr><td>Cell</td></tr></table>'}
 ,{text:"Insert Image",xtype:'MenuItem',xns:Roo.Menu,ihtml:'<img src="about:blank"/>'}],inputElements:["form","input:text","input:hidden","input:checkbox","input:radio","input:password","input:submit","input:button","select","textarea","label"],formats:[["p"],["h1"],["h2"],["h3"],["h4"],["h5"],["h6"],["pre"],["code"],["abbr"],["acronym"],["address"],["cite"],["samp"],["var"],['div'],['span'],['sup'],['sub']],cleanStyles:["font-size"],defaultFont:'tahoma',fontSelect:false,formatCombo:false,init:function(A){this.editor=A;
 this.editorcore=A.editorcore?A.editorcore:A;var B=this.editorcore;var _t=this;var C=B.frameId;var D=this;function btn(id,H,I){var J=C+'-'+id;return {id:J,cmd:id,cls:'x-btn-icon x-edit-'+id,enableToggle:H!==false,scope:_t,handler:I||_t.relayBtnCmd,clickEvent:'mousedown',tooltip:D.buttonTips[id]||undefined,tabIndex:-1}
 ;}var tb=new Roo.Toolbar(A.wrap.dom.firstChild);this.tb=tb;tb.el.on('click',function(e){e.preventDefault();});if(!this.disable.font){};if(!this.disable.formats){this.formatCombo=new Roo.form.ComboBox({store:new Roo.data.SimpleStore({id:'tag',fields:['tag'],data:this.formats}
@@ -1009,54 +1207,56 @@ B.execCmd('hilitecolor',H);B.execCmd('useCSS',true);A.deferFocus();}else{B.execC
 c.select('[style]').each(function(s){s.dom.style.removeProperty(a.actiontype);});B.syncValue();},tabIndex:-1});}F.menu.items.push({actiontype:'tablewidths',html:'Remove Table Widths',handler:function(a,b){B.cleanTableWidths();B.syncValue();},tabIndex:-1});
 F.menu.items.push({actiontype:'word',html:'Remove MS Word Formating',handler:function(a,b){B.cleanWord();B.syncValue();},tabIndex:-1});F.menu.items.push({actiontype:'all',html:'Remove All Styles',handler:function(a,b){var c=Roo.get(B.doc.body);c.select('[style]').each(function(s){s.dom.removeAttribute('style');
 });B.syncValue();},tabIndex:-1});F.menu.items.push({actiontype:'all',html:'Remove All CSS Classes',handler:function(a,b){var c=Roo.get(B.doc.body);c.select('[class]').each(function(s){s.dom.removeAttribute('class');});B.cleanWord();B.syncValue();},tabIndex:-1}
-);F.menu.items.push({actiontype:'tidy',html:'Tidy HTML Source',handler:function(a,b){B.doc.body.innerHTML=B.domToHTML();B.syncValue();},tabIndex:-1});tb.add(F);}if(!this.disable.specialElements){var G={text:"Other;",cls:'x-edit-none',menu:{items:[]}};for(var i=0;
-i<this.specialElements.length;i++){G.menu.items.push(Roo.apply({handler:function(a,b){A.insertAtCursor(this.ihtml);}},this.specialElements[i]));}tb.add(G);}if(this.btns){for(var i=0;i<this.btns.length;i++){var b=Roo.factory(this.btns[i],Roo.form);b.cls='x-edit-none';
-if(typeof(this.btns[i].cls)!='undefined'&&this.btns[i].cls.indexOf('x-init-enable')!==-1){b.cls+=' x-init-enable';}b.scope=B;tb.add(b);}}this.tb.items.each(function(H){if(H.id!=B.frameId+'-sourceedit'&&(typeof(H.cls)!='undefined'&&H.cls.indexOf('x-init-enable')===-1)){H.disable();
-}});this.rendered=true;A.on('editorevent',this.updateToolbar,this);},relayBtnCmd:function(A){this.editorcore.relayCmd(A.cmd);},createLink:function(){Roo.log("create link?");var A=prompt(this.createLinkText,this.defaultLinkValue);if(A&&A!='http:/'+'/'){this.editorcore.relayCmd('createlink',A);
-}},updateToolbar:function(){if(!this.editorcore.activated){this.editor.onFirstFocus();return;}var A=this.tb.items.map,B=this.editorcore.doc,C=this.editorcore.frameId;if(!this.disable.font&&!Roo.isSafari){}if(!this.disable.format){A[C+'-bold'].toggle(B.queryCommandState('bold'));
-A[C+'-italic'].toggle(B.queryCommandState('italic'));A[C+'-underline'].toggle(B.queryCommandState('underline'));A[C+'-strikethrough'].toggle(B.queryCommandState('strikethrough'));}if(!this.disable.alignments){A[C+'-justifyleft'].toggle(B.queryCommandState('justifyleft'));
-A[C+'-justifycenter'].toggle(B.queryCommandState('justifycenter'));A[C+'-justifyright'].toggle(B.queryCommandState('justifyright'));}if(!Roo.isSafari&&!this.disable.lists){A[C+'-insertorderedlist'].toggle(B.queryCommandState('insertorderedlist'));A[C+'-insertunorderedlist'].toggle(B.queryCommandState('insertunorderedlist'));
-}var D=this.editorcore.getAllAncestors();if(this.formatCombo){var E=this.formatCombo.store;this.formatCombo.setValue("");for(var i=0;i<D.length;i++){if(D[i]&&E.query('tag',D[i].tagName.toLowerCase(),false).length){this.formatCombo.setValue(D[i].tagName.toLowerCase());
+);F.menu.items.push({actiontype:'tidy',html:'Tidy HTML Source',handler:function(a,b){new Roo.htmleditor.Tidy(B.doc.body);B.syncValue();},tabIndex:-1});tb.add(F);}if(!this.disable.specialElements){var G={text:"Other;",cls:'x-edit-none',menu:{items:[]}};for(var i=0;
+i<this.specialElements.length;i++){G.menu.items.push(Roo.apply({handler:function(a,b){A.insertAtCursor(this.ihtml);}},this.specialElements[i]));}tb.add(G);}if(this.btns){for(var i=0;i<this.btns.length;i++){var b=Roo.factory(this.btns[i],this.btns[i].xns||Roo.form);
+b.cls='x-edit-none';if(typeof(this.btns[i].cls)!='undefined'&&this.btns[i].cls.indexOf('x-init-enable')!==-1){b.cls+=' x-init-enable';}b.scope=B;tb.add(b);}}this.tb.items.each(function(H){if(H.id!=B.frameId+'-sourceedit'&&(typeof(H.cls)!='undefined'&&H.cls.indexOf('x-init-enable')===-1)){H.disable();
+}});this.rendered=true;A.on('editorevent',this.updateToolbar,this);},relayBtnCmd:function(A){this.editorcore.relayCmd(A.cmd);},createLink:function(){var ec=this.editorcore;var ar=ec.getAllAncestors();var n=false;for(var i=0;i<ar.length;i++){if(ar[i]&&ar[i].nodeName=='A'){n=ar[i];
+break;}}(function(){Roo.MessageBox.show({title:"Add / Edit Link URL",msg:"Enter the url for the link",buttons:Roo.MessageBox.OKCANCEL,fn:function(A,B){if(A!='ok'){return;}if(B&&B!='http:/'+'/'){if(n){n.setAttribute('href',B);}else{ec.relayCmd('createlink',B);
+}}},minWidth:250,prompt:true,modal:true,value:n?n.getAttribute('href'):''});}).defer(100,this);},updateToolbar:function(){if(!this.editorcore.activated){this.editor.onFirstFocus();return;}var A=this.tb.items.map,B=this.editorcore.doc,C=this.editorcore.frameId;
+if(!this.disable.font&&!Roo.isSafari){}if(!this.disable.format){A[C+'-bold'].toggle(B.queryCommandState('bold'));A[C+'-italic'].toggle(B.queryCommandState('italic'));A[C+'-underline'].toggle(B.queryCommandState('underline'));A[C+'-strikethrough'].toggle(B.queryCommandState('strikethrough'));
+}if(!this.disable.alignments){A[C+'-justifyleft'].toggle(B.queryCommandState('justifyleft'));A[C+'-justifycenter'].toggle(B.queryCommandState('justifycenter'));A[C+'-justifyright'].toggle(B.queryCommandState('justifyright'));}if(!Roo.isSafari&&!this.disable.lists){A[C+'-insertorderedlist'].toggle(B.queryCommandState('insertorderedlist'));
+A[C+'-insertunorderedlist'].toggle(B.queryCommandState('insertunorderedlist'));}var D=this.editorcore.getAllAncestors();if(this.formatCombo){var E=this.formatCombo.store;this.formatCombo.setValue("");for(var i=0;i<D.length;i++){if(D[i]&&E.query('tag',D[i].tagName.toLowerCase(),false).length){this.formatCombo.setValue(D[i].tagName.toLowerCase());
 break;}}}Roo.menu.MenuMgr.hideAll();},createFontOptions:function(){var A=[],fs=this.fontFamilies,ff,lc;for(var i=0,B=fs.length;i<B;i++){ff=fs[i];lc=ff.toLowerCase();A.push('<option value="',lc,'" style="font-family:',ff,';"',(this.defaultFont==lc?' selected="true">':'>'),ff,'</option>');
 }return A.join('');},toggleSourceEdit:function(A){Roo.log("toolbar toogle");if(A===undefined){A=!this.sourceEditMode;}this.sourceEditMode=A===true;var B=this.tb.items.get(this.editorcore.frameId+'-sourceedit');if(B.pressed!==this.sourceEditMode){B.toggle(this.sourceEditMode);
 return;}if(A){Roo.log("disabling buttons");this.tb.items.each(function(C){if(C.cmd!='sourceedit'&&(typeof(C.cls)!='undefined'&&C.cls.indexOf('x-init-enable')===-1)){C.disable();}});}else{Roo.log("enabling buttons");if(this.editorcore.initialized){this.tb.items.each(function(C){C.enable();
-});}}Roo.log("calling toggole on editor");this.editor.toggleSourceEdit(A);},buttonTips:{bold:{title:'Bold (Ctrl+B)',text:'Make the selected text bold.',cls:'x-html-editor-tip'},italic:{title:'Italic (Ctrl+I)',text:'Make the selected text italic.',cls:'x-html-editor-tip'}
-,underline:{title:'Underline (Ctrl+U)',text:'Underline the selected text.',cls:'x-html-editor-tip'},strikethrough:{title:'Strikethrough',text:'Strikethrough the selected text.',cls:'x-html-editor-tip'},increasefontsize:{title:'Grow Text',text:'Increase the font size.',cls:'x-html-editor-tip'}
-,decreasefontsize:{title:'Shrink Text',text:'Decrease the font size.',cls:'x-html-editor-tip'},backcolor:{title:'Text Highlight Color',text:'Change the background color of the selected text.',cls:'x-html-editor-tip'},forecolor:{title:'Font Color',text:'Change the color of the selected text.',cls:'x-html-editor-tip'}
-,justifyleft:{title:'Align Text Left',text:'Align text to the left.',cls:'x-html-editor-tip'},justifycenter:{title:'Center Text',text:'Center text in the editor.',cls:'x-html-editor-tip'},justifyright:{title:'Align Text Right',text:'Align text to the right.',cls:'x-html-editor-tip'}
-,insertunorderedlist:{title:'Bullet List',text:'Start a bulleted list.',cls:'x-html-editor-tip'},insertorderedlist:{title:'Numbered List',text:'Start a numbered list.',cls:'x-html-editor-tip'},createlink:{title:'Hyperlink',text:'Make the selected text a hyperlink.',cls:'x-html-editor-tip'}
-,sourceedit:{title:'Source Edit',text:'Switch to source editing mode.',cls:'x-html-editor-tip'}},onDestroy:function(){if(this.rendered){this.tb.items.each(function(A){if(A.menu){A.menu.removeAll();if(A.menu.el){A.menu.el.destroy();}}A.destroy();});}},onFirstFocus:function(){this.tb.items.each(function(A){A.enable();
-});}});
+});Roo.each(Roo.get(this.editorcore.doc.body).query('*[data-block]'),function(e){Roo.htmleditor.Block.factory(e).updateElement(e);},this);}}Roo.log("calling toggole on editor");this.editor.toggleSourceEdit(A);},buttonTips:{bold:{title:'Bold (Ctrl+B)',text:'Make the selected text bold.',cls:'x-html-editor-tip'}
+,italic:{title:'Italic (Ctrl+I)',text:'Make the selected text italic.',cls:'x-html-editor-tip'},underline:{title:'Underline (Ctrl+U)',text:'Underline the selected text.',cls:'x-html-editor-tip'},strikethrough:{title:'Strikethrough',text:'Strikethrough the selected text.',cls:'x-html-editor-tip'}
+,increasefontsize:{title:'Grow Text',text:'Increase the font size.',cls:'x-html-editor-tip'},decreasefontsize:{title:'Shrink Text',text:'Decrease the font size.',cls:'x-html-editor-tip'},backcolor:{title:'Text Highlight Color',text:'Change the background color of the selected text.',cls:'x-html-editor-tip'}
+,forecolor:{title:'Font Color',text:'Change the color of the selected text.',cls:'x-html-editor-tip'},justifyleft:{title:'Align Text Left',text:'Align text to the left.',cls:'x-html-editor-tip'},justifycenter:{title:'Center Text',text:'Center text in the editor.',cls:'x-html-editor-tip'}
+,justifyright:{title:'Align Text Right',text:'Align text to the right.',cls:'x-html-editor-tip'},insertunorderedlist:{title:'Bullet List',text:'Start a bulleted list.',cls:'x-html-editor-tip'},insertorderedlist:{title:'Numbered List',text:'Start a numbered list.',cls:'x-html-editor-tip'}
+,createlink:{title:'Hyperlink',text:'Make the selected text a hyperlink.',cls:'x-html-editor-tip'},sourceedit:{title:'Source Edit',text:'Switch to source editing mode.',cls:'x-html-editor-tip'}},onDestroy:function(){if(this.rendered){this.tb.items.each(function(A){if(A.menu){A.menu.removeAll();
+if(A.menu.el){A.menu.el.destroy();}}A.destroy();});}},onFirstFocus:function(){this.tb.items.each(function(A){A.enable();});}};
 // Roo/form/HtmlEditor/ToolbarContext.js
-Roo.form.HtmlEditor.ToolbarContext=function(A){Roo.apply(this,A);this.styles=this.styles||{};};Roo.form.HtmlEditor.ToolbarContext.types={'IMG':{width:{title:"Width",width:40},height:{title:"Height",width:40},align:{title:"Align",opts:[[""],["left"],["right"],["center"],["top"]],width:80}
-,border:{title:"Border",width:40},alt:{title:"Alt",width:120},src:{title:"Src",width:220}},'A':{name:{title:"Name",width:50},target:{title:"Target",width:120},href:{title:"Href",width:220}},'TABLE':{rows:{title:"Rows",width:20},cols:{title:"Cols",width:20}
-,width:{title:"Width",width:40},height:{title:"Height",width:40},border:{title:"Border",width:20}},'TD':{width:{title:"Width",width:40},height:{title:"Height",width:40},align:{title:"Align",opts:[[""],["left"],["center"],["right"],["justify"],["char"]],width:80}
-,valign:{title:"Valign",opts:[[""],["top"],["middle"],["bottom"],["baseline"]],width:80},colspan:{title:"Colspan",width:20},'font-family':{title:"Font",style:'fontFamily',displayField:'display',optname:'font-family',width:140}},'INPUT':{name:{title:"name",width:120}
-,value:{title:"Value",width:120},width:{title:"Width",width:40}},'LABEL':{'for':{title:"For",width:120}},'TEXTAREA':{name:{title:"name",width:120},rows:{title:"Rows",width:20},cols:{title:"Cols",width:20}},'SELECT':{name:{title:"name",width:120},selectoptions:{title:"Options",width:200}
-},'BODY':{title:{title:"Title",width:200,disabled:true}},'SPAN':{'font-family':{title:"Font",style:'fontFamily',displayField:'display',optname:'font-family',width:140}},'DIV':{'font-family':{title:"Font",style:'fontFamily',displayField:'display',optname:'font-family',width:140}
-},'P':{'font-family':{title:"Font",style:'fontFamily',displayField:'display',optname:'font-family',width:140}},'*':{}};Roo.form.HtmlEditor.ToolbarContext.stores=false;Roo.form.HtmlEditor.ToolbarContext.options={'font-family':[['Helvetica,Arial,sans-serif','Helvetica'],['Courier New','Courier New'],['Tahoma','Tahoma'],['Times New Roman,serif','Times'],['Verdana','Verdana']]}
-;Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,{tb:false,rendered:false,editor:false,editorcore:false,disable:false,styles:false,options:false,toolbars:false,init:function(A){this.editor=A;this.editorcore=A.editorcore?A.editorcore:A;var B=this.editorcore;
-var C=B.frameId;var D=this;function btn(id,F,G){var H=C+'-'+id;return {id:H,cmd:id,cls:'x-btn-icon x-edit-'+id,enableToggle:F!==false,scope:B,handler:G||B.relayBtnCmd,clickEvent:'mousedown',tooltip:D.buttonTips[id]||undefined,tabIndex:-1};}var E=A.wrap.createChild({tag:'div'}
-,A.wrap.dom.firstChild.nextSibling,true);var ty=Roo.form.HtmlEditor.ToolbarContext.types;this.toolbars={};for(var i in ty){this.toolbars[i]=this.buildToolbar(ty[i],i);}this.tb=this.toolbars.BODY;this.tb.el.show();this.buildFooter();this.footer.show();A.on('hide',function(){this.footer.hide()}
-,this);A.on('show',function(){this.footer.show()},this);this.rendered=true;A.on('editorevent',this.updateToolbar,this);},updateToolbar:function(A,ev,B){if(!this.editorcore.activated){this.editor.onFirstFocus();return;}if(ev&&(ev.type=='mouseup'||ev.type=='click')&&ev.target&&ev.target.tagName=='IMG'){B=ev.target;
-var C=B.ownerDocument.createRange();try{C.selectNode(B);}catch(e){C.selectNodeContents(B);}var s=this.editorcore.win.getSelection();s.removeAllRanges();s.addRange(C);}var D=B?false:true;var E=this.editorcore.getAllAncestors();var ty=Roo.form.HtmlEditor.ToolbarContext.types;
-if(!B){B=E.length?(E[0]?E[0]:E[1]):this.editorcore.doc.body;B=B?B:this.editorcore.doc.body;B=B.tagName.length?B:this.editorcore.doc.body;}var tn=B.tagName.toUpperCase();tn=B.tagName.toUpperCase();var F=this.tb.selectedNode;this.tb.selectedNode=B;if((this.tb.name!=tn)||(F!=this.tb.selectedNode)||ev===false){this.tb.el.hide();
-this.tb=typeof(ty[tn])!='undefined'?this.toolbars[tn]:this.toolbars['*'];this.tb.el.show();this.tb.items.first().el.innerHTML=tn+':&nbsp;';if(this.tb.fields){this.tb.fields.each(function(e){if(e.stylename){e.setValue(B.style[e.stylename]);return;}e.setValue(B.getAttribute(e.attrname));
-});}var G=false;for(var i in this.styles){G=true;break;}if(G){var st=this.tb.fields.item(0);st.store.removeAll();var cn=B.className.split(/\s+/);var H=[];if(this.styles['*']){Roo.each(this.styles['*'],function(v){H.push([v,cn.indexOf(v)>-1?1:0]);});}if(this.styles[tn]){Roo.each(this.styles[tn],function(v){H.push([v,cn.indexOf(v)>-1?1:0]);
-});}st.store.loadData(H);st.collapse();st.setValue(cn);}this.tb.selectedNode=B;Roo.menu.MenuMgr.hideAll();}if(!D){return;}var I='';this.footerEls=E.reverse();Roo.each(this.footerEls,function(a,i){if(!a){return;}I+=I.length?' &gt; ':'';I+='<span class="x-ed-loc-'+i+'">'+a.tagName+'</span>';
-});var sz=this.footDisp.up('td').getSize();this.footDisp.dom.style.width=(sz.width-10)+'px';this.footDisp.dom.style.marginLeft='5px';this.footDisp.dom.style.overflow='hidden';this.footDisp.dom.innerHTML=I;},onDestroy:function(){if(this.rendered){this.tb.items.each(function(A){if(A.menu){A.menu.removeAll();
-if(A.menu.el){A.menu.el.destroy();}}A.destroy();});}},onFirstFocus:function(){this.tb.items.each(function(A){A.enable();});},buildToolbar:function(A,nm){var B=this.editor;var C=this.editorcore;var D=B.wrap.createChild({tag:'div'},B.wrap.dom.firstChild.nextSibling,true);
-var tb=new Roo.Toolbar(D);tb.add(nm+":&nbsp;");var E=[];for(var i in this.styles){E.push(i);}if(E&&E.length){tb.addField(new Roo.form.ComboBox({store:new Roo.data.SimpleStore({id:'val',fields:['val','selected'],data:[]}),name:'-roo-edit-className',attrname:'className',displayField:'val',typeAhead:false,mode:'local',editable:false,triggerAction:'all',emptyText:'Select Style',selectOnFocus:true,width:130,listeners:{'select':function(c,r,i){tb.selectedNode.className=r?r.get('val'):'';
-C.syncValue();}}}));}var F=Roo.form.HtmlEditor.ToolbarContext;var G=F.options;for(var i in A){var H=A[i];tb.add(H.title+":&nbsp;");var I=H.opts?H.opts:false;if(H.optname){I=G[H.optname];}if(I){tb.addField(new Roo.form.ComboBox({store:typeof(F.stores[i])!='undefined'?Roo.factory(F.stores[i],Roo.data):new Roo.data.SimpleStore({id:'val',fields:['val','display'],data:I}
-),name:'-roo-edit-'+i,attrname:i,stylename:H.style?H.style:false,displayField:H.displayField?H.displayField:'val',valueField:'val',typeAhead:false,mode:typeof(F.stores[i])!='undefined'?'remote':'local',editable:false,triggerAction:'all',emptyText:'Select',selectOnFocus:true,width:H.width?H.width:130,listeners:{'select':function(c,r,i){if(c.stylename){tb.selectedNode.style[c.stylename]=r.get('val');
-return;}tb.selectedNode.setAttribute(c.attrname,r.get('val'));}}}));continue;tb.addField(new Roo.form.TextField({name:i,width:100,value:''}));continue;}tb.addField(new Roo.form.TextField({name:'-roo-edit-'+i,attrname:i,width:H.width,value:'',listeners:{'change':function(f,nv,ov){tb.selectedNode.setAttribute(f.attrname,nv);
-C.syncValue();}}}));}var J=this;if(nm=='BODY'){tb.addSeparator();tb.addButton({text:'Stylesheets',listeners:{click:function(){J.editor.fireEvent('stylesheetsclick',J.editor);}}});}tb.addFill();tb.addButton({text:'Remove Tag',listeners:{click:function(){var sn=tb.selectedNode;
-var pn=sn.parentNode;var K=sn.childNodes[0];var en=sn.childNodes[sn.childNodes.length-1];while(sn.childNodes.length){var L=sn.childNodes[0];sn.removeChild(L);pn.insertBefore(L,sn);}pn.removeChild(sn);var M=C.createRange();M.setStart(K,0);M.setEnd(en,0);var N=C.getSelection();
-N.removeAllRanges();N.addRange(M);J.updateToolbar(null,null,null);J.footDisp.dom.innerHTML='';}}});tb.el.on('click',function(e){e.preventDefault();});tb.el.setVisibilityMode(Roo.Element.DISPLAY);tb.el.hide();tb.name=nm;return tb;},buildFooter:function(){var A=this.editor.wrap.createChild();
-this.footer=new Roo.Toolbar(A);var B=new Roo.Toolbar.Fill();var _t=this;this.footer.add({text:'&lt;',xtype:'Button',handler:function(){_t.footDisp.scrollTo('left',0,true)}});this.footer.add(B);this.footer.add({text:'&gt;',xtype:'Button',handler:function(){_t.footDisp.select('span').last().scrollIntoView(_t.footDisp,true);
-}});var A=Roo.get(B.el);A.addClass('x-editor-context');this.footDispWrap=A;this.footDispWrap.overflow='hidden';this.footDisp=A.createChild();this.footDispWrap.on('click',this.onContextClick,this)},onContextClick:function(ev,A){ev.preventDefault();var cn=A.className;
-if(!cn.match(/x-ed-loc-/)){return;}var n=cn.split('-').pop();var B=this.footerEls;var C=B[n];var D=this.editorcore.createRange();D.selectNodeContents(C);var E=this.editorcore.getSelection();E.removeAllRanges();E.addRange(D);this.updateToolbar(null,null,C);
-}});
+Roo.form.HtmlEditor.ToolbarContext=function(A){Roo.apply(this,A);this.styles=this.styles||{};};Roo.form.HtmlEditor.ToolbarContext.types={'IMG':[{name:'width',title:"Width",width:40},{name:'height',title:"Height",width:40},{name:'align',title:"Align",opts:[[""],["left"],["right"],["center"],["top"]],width:80}
+,{name:'border',title:"Border",width:40},{name:'alt',title:"Alt",width:120},{name:'src',title:"Src",width:220}],'FIGURE':[{name:'align',title:"Align",opts:[[""],["left"],["right"],["center"],["top"]],width:80}],'A':[{name:'name',title:"Name",width:50},{name:'target',title:"Target",width:120}
+,{name:'href',title:"Href",width:220}],'INPUT':[{name:'name',title:"name",width:120},{name:'value',title:"Value",width:120},{name:'width',title:"Width",width:40}],'LABEL':[{name:'for',title:"For",width:120}],'TEXTAREA':[{name:'name',title:"name",width:120}
+,{name:'rows',title:"Rows",width:20},{name:'cols',title:"Cols",width:20}],'SELECT':[{name:'name',title:"name",width:120},{name:'selectoptions',title:"Options",width:200}],'BODY':[{name:'title',title:"Title",width:200,disabled:true}],'*':[]};Roo.form.HtmlEditor.ToolbarContext.stores=false;
+Roo.form.HtmlEditor.ToolbarContext.options={'font-family':[['Helvetica,Arial,sans-serif','Helvetica'],['Courier New','Courier New'],['Tahoma','Tahoma'],['Times New Roman,serif','Times'],['Verdana','Verdana']]};Roo.apply(Roo.form.HtmlEditor.ToolbarContext.prototype,{tb:false,rendered:false,editor:false,editorcore:false,disable:false,styles:false,options:false,toolbars:false,init:function(A){this.editor=A;
+this.editorcore=A.editorcore?A.editorcore:A;var B=this.editorcore;var C=B.frameId;var D=this;function btn(id,F,G){var H=C+'-'+id;return {id:H,cmd:id,cls:'x-btn-icon x-edit-'+id,enableToggle:F!==false,scope:B,handler:G||B.relayBtnCmd,clickEvent:'mousedown',tooltip:D.buttonTips[id]||undefined,tabIndex:-1}
+;}var E=A.wrap.createChild({tag:'div'},A.wrap.dom.firstChild.nextSibling,true);var ty=Roo.form.HtmlEditor.ToolbarContext.types;this.toolbars={};for(var i in ty){this.toolbars[i]=this.buildToolbar(ty[i],i);}this.tb=this.toolbars.BODY;this.tb.el.show();this.buildFooter();
+this.footer.show();A.on('hide',function(){this.footer.hide()},this);A.on('show',function(){this.footer.show()},this);this.rendered=true;A.on('editorevent',this.updateToolbar,this);},updateToolbar:function(A,ev,B){if(ev){ev.stopEvent();}if(!this.editorcore.activated){this.editor.onFirstFocus();
+return;}if(ev&&(ev.type=='mouseup'||ev.type=='click')&&ev.target&&ev.target.tagName!='BODY'){B=ev.target;}Array.from(this.editorcore.doc.body.querySelectorAll('.roo-ed-selection')).forEach(function(e){e.classList.remove('roo-ed-selection');});var C=this.editorcore.getAllAncestors();
+var ty=Roo.form.HtmlEditor.ToolbarContext.types;if(!B){B=C.length?(C[0]?C[0]:C[1]):this.editorcore.doc.body;B=B?B:this.editorcore.doc.body;B=B.tagName.length?B:this.editorcore.doc.body;}var tn=B.tagName.toUpperCase();var D=this.tb.selectedNode;this.tb.selectedNode=B;
+var E=tn;var db=false;if(B&&B.hasAttribute('data-block')){db=B;}else if(B&&B.closest('[data-block]')){db=B.closest('[data-block]');}var F=false;if(db&&this.editorcore.enableBlocks){F=Roo.htmleditor.Block.factory(db);if(F){db.className=(db.classList.length>0?db.className+' ':'')+'roo-ed-selection';
+tn='BLOCK.'+db.getAttribute('data-block');if(typeof(this.toolbars[tn])=='undefined'){this.toolbars[tn]=this.buildToolbar(false,tn,F.friendly_name,F);}this.toolbars[tn].selectedNode=db;E=F.friendly_name;C=this.editorcore.getAllAncestors();}}if(this.tb.name==tn&&D==this.tb.selectedNode&&ev!==false){return;
+}this.tb.el.hide();this.tb=typeof(this.toolbars[tn])!='undefined'?this.toolbars[tn]:this.toolbars['*'];this.tb.el.show();this.tb.items.first().el.innerHTML=E+':&nbsp;';if(F&&this.tb.fields){this.tb.fields.each(function(e){e.setValue(F[e.name]);});}else if(this.tb.fields&&this.tb.selectedNode){this.tb.fields.each(function(e){if(e.stylename){e.setValue(this.tb.selectedNode.style[e.stylename]);
+return;}e.setValue(this.tb.selectedNode.getAttribute(e.attrname));},this);this.updateToolbarStyles(this.tb.selectedNode);}Roo.menu.MenuMgr.hideAll();this.updateFooter(C);},updateToolbarStyles:function(A){var B=false;for(var i in this.styles){B=true;break;
+}if(B&&this.tb.hasStyles){var st=this.tb.fields.item(0);st.store.removeAll();var cn=A.className.split(/\s+/);var C=[];if(this.styles['*']){Roo.each(this.styles['*'],function(v){C.push([v,cn.indexOf(v)>-1?1:0]);});}if(this.styles[tn]){Roo.each(this.styles[tn],function(v){C.push([v,cn.indexOf(v)>-1?1:0]);
+});}st.store.loadData(C);st.collapse();st.setValue(cn);}},updateFooter:function(A){var B='';if(A===false){this.footDisp.dom.innerHTML='';return;}this.footerEls=A.reverse();Roo.each(this.footerEls,function(a,i){if(!a){return;}B+=B.length?' &gt; ':'';B+='<span class="x-ed-loc-'+i+'">'+a.tagName+'</span>';
+});var sz=this.footDisp.up('td').getSize();this.footDisp.dom.style.width=(sz.width-10)+'px';this.footDisp.dom.style.marginLeft='5px';this.footDisp.dom.style.overflow='hidden';this.footDisp.dom.innerHTML=B;},onDestroy:function(){if(this.rendered){this.tb.items.each(function(A){if(A.menu){A.menu.removeAll();
+if(A.menu.el){A.menu.el.destroy();}}A.destroy();});}},onFirstFocus:function(){this.tb.items.each(function(A){A.enable();});},buildToolbar:function(A,nm,B,C){var D=this.editor;var E=this.editorcore;var F=D.wrap.createChild({tag:'div'},D.wrap.dom.firstChild.nextSibling,true);
+var tb=new Roo.Toolbar(F);if(A===false&&C){A=C.contextMenu(this);}tb.hasStyles=false;tb.name=nm;tb.add((typeof(B)=='undefined'?nm:B)+":&nbsp;");var G=Array.from(this.styles);if(G&&G.length){tb.hasStyles=true;tb.addField(new Roo.form.ComboBox({store:new Roo.data.SimpleStore({id:'val',fields:['val','selected'],data:[]}
+),name:'-roo-edit-className',attrname:'className',displayField:'val',typeAhead:false,mode:'local',editable:false,triggerAction:'all',emptyText:'Select Style',selectOnFocus:true,width:130,listeners:{'select':function(c,r,i){tb.selectedNode.className=r?r.get('val'):'';
+E.syncValue();}}}));}var H=Roo.form.HtmlEditor.ToolbarContext;for(var i=0;i<A.length;i++){if(typeof(A[i].xtype)!='undefined'){tb[typeof(A[i].name)=='undefined'?'add':'addField'](Roo.factory(A[i]));continue;}var I=A[i];tb.add(I.title+":&nbsp;");var J=I.opts?I.opts:false;
+if(I.optname){J=Roo.form.HtmlEditor.ToolbarContext.options[I.optname];}if(J){tb.addField(new Roo.form.ComboBox({store:typeof(H.stores[i])!='undefined'?Roo.factory(H.stores[i],Roo.data):new Roo.data.SimpleStore({id:'val',fields:['val','display'],data:J}),name:'-roo-edit-'+A[i].name,attrname:A[i].name,stylename:I.style?I.style:false,displayField:I.displayField?I.displayField:'val',valueField:'val',typeAhead:false,mode:typeof(H.stores[A[i].name])!='undefined'?'remote':'local',editable:false,triggerAction:'all',emptyText:'Select',selectOnFocus:true,width:I.width?I.width:130,listeners:{'select':function(c,r,i){if(c.stylename){tb.selectedNode.style[c.stylename]=r.get('val');
+E.syncValue();return;}if(r===false){tb.selectedNode.removeAttribute(c.attrname);E.syncValue();return;}tb.selectedNode.setAttribute(c.attrname,r.get('val'));E.syncValue();}}}));continue;}tb.addField(new Roo.form.TextField({name:'-roo-edit-'+A[i].name,attrname:A[i].name,width:I.width,value:'',listeners:{'change':function(f,nv,ov){tb.selectedNode.setAttribute(f.attrname,nv);
+E.syncValue();}}}));}var K=this;var L=!C||C.deleteTitle!==false;if(nm=='BODY'){L=false;tb.addSeparator();tb.addButton({text:'Stylesheets',listeners:{click:function(){K.editor.fireEvent('stylesheetsclick',K.editor);}}});}tb.addFill();if(L){tb.addButton({text:C&&C.deleteTitle?C.deleteTitle:'Remove Block or Formating',listeners:{click:function(){var sn=tb.selectedNode;
+if(C){sn=Roo.htmleditor.Block.factory(tb.selectedNode).removeNode();}if(!sn){return;}var M=sn.childNodes[0]||sn.nextSibling||sn.previousSibling||sn.parentNode;if(sn.hasAttribute('data-block')){M=sn.nextSibling||sn.previousSibling||sn.parentNode;sn.parentNode.removeChild(sn);
+}else if(sn&&sn.tagName!='BODY'){a=new Roo.htmleditor.FilterKeepChildren({tag:false});a.replaceTag(sn);}var N=E.createRange();N.setStart(M,0);N.setEnd(M,0);var O=E.getSelection();O.removeAllRanges();O.addRange(N);K.updateToolbar(null,null,null);K.updateFooter(false);
+}}});}tb.el.on('click',function(e){e.preventDefault();});tb.el.setVisibilityMode(Roo.Element.DISPLAY);tb.el.hide();return tb;},buildFooter:function(){var A=this.editor.wrap.createChild();this.footer=new Roo.Toolbar(A);var B=new Roo.Toolbar.Fill();var _t=this;
+this.footer.add({text:'&lt;',xtype:'Button',handler:function(){_t.footDisp.scrollTo('left',0,true)}});this.footer.add(B);this.footer.add({text:'&gt;',xtype:'Button',handler:function(){_t.footDisp.select('span').last().scrollIntoView(_t.footDisp,true);}});
+var A=Roo.get(B.el);A.addClass('x-editor-context');this.footDispWrap=A;this.footDispWrap.overflow='hidden';this.footDisp=A.createChild();this.footDispWrap.on('click',this.onContextClick,this)},onContextClick:function(ev,A){ev.preventDefault();var cn=A.className;
+if(!cn.match(/x-ed-loc-/)){return;}var n=cn.split('-').pop();var B=this.footerEls;var C=B[n];this.editorcore.selectNode(C);this.updateToolbar(null,null,C);}});
 // Roo/form/BasicForm.js
 Roo.form.BasicForm=function(el,A){this.allItems=[];this.childForms=[];Roo.apply(this,A);this.items=new Roo.util.MixedCollection(false,function(o){return o.id||(o.id=Roo.id());});this.addEvents({beforeaction:true,actionfailed:true,actioncomplete:true});if(el){this.initEl(el);
 }Roo.form.BasicForm.superclass.constructor.call(this);Roo.form.BasicForm.popover.apply();};Roo.extend(Roo.form.BasicForm,Roo.util.Observable,{timeout:30,activeAction:null,trackResetOnLoad:false,childForms:false,allItems:false,waitMsgTarget:false,disableMask:false,errorMask:false,maskOffset:100,initEl:function(el){this.el=Roo.get(el);
@@ -1074,18 +1274,19 @@ this.fireEvent('actioncomplete',this,A);}else{if((typeof(A.result)!='undefined')
 i<B;i++){var C=A[i];var f=this.findField(C.id);if(f){f.markInvalid(C.msg);}}}else{var D,id;for(id in A){if(typeof A[id]!='function'&&(D=this.findField(id))){D.markInvalid(A[id]);}}}Roo.each(this.childForms||[],function(f){f.markInvalid(A);});return this;}
 ,setValues:function(A){if(A instanceof Array){for(var i=0,B=A.length;i<B;i++){var v=A[i];var f=this.findField(v.id);if(f){f.setValue(v.value);if(this.trackResetOnLoad){f.originalValue=f.getValue();}}}}else{var C,id;for(id in A){if(typeof A[id]!='function'&&(C=this.findField(id))){if(C.setFromData&&C.valueField&&C.displayField&&(C.store&&!C.store.isLocal)){var sd={}
 ;sd[C.valueField]=typeof(A[C.hiddenName])=='undefined'?'':A[C.hiddenName];sd[C.displayField]=typeof(A[C.name])=='undefined'?'':A[C.name];C.setFromData(sd);}else{C.setValue(A[id]);}if(this.trackResetOnLoad){C.originalValue=C.getValue();}}}}this.resetHasChanged();
-Roo.each(this.childForms||[],function(f){f.setValues(A);f.resetHasChanged();});return this;},getValues:function(A){if(this.childForms){Roo.each(this.childForms,function(f){this.setValues(f.getValues());},this);}if(typeof(FormData)!='undefined'&&A!==true){try{var fd=(new FormData(this.el.dom)).entries();
-var B={};var C=fd.next();while(!C.done){B[C.value[0]]=C.value[1];C=fd.next();};return B;}catch(e){}}var fs=Roo.lib.Ajax.serializeForm(this.el.dom);if(A===true){return fs;}return Roo.urlDecode(fs);},getFieldValues:function(A){if(this.childForms){Roo.each(this.childForms,function(f){this.setValues(f.getValues());
-},this);}var B={};this.items.each(function(f){if(!f.getName()){return;}var v=f.getValue();if(f.inputType=='radio'){if(typeof(B[f.getName()])=='undefined'){B[f.getName()]='';}if(!f.el.dom.checked){return;}v=f.el.dom.value;}if((typeof(v)=='object')&&f.getRawValue){v=f.getRawValue();
-}if(f.name!=f.getName()){B[f.name]=f.getRawValue();}B[f.getName()]=v;});return B;},clearInvalid:function(){this.items.each(function(f){f.clearInvalid();});Roo.each(this.childForms||[],function(f){f.clearInvalid();});return this;},reset:function(){this.items.each(function(f){f.reset();
-});Roo.each(this.childForms||[],function(f){f.reset();});this.resetHasChanged();return this;},add:function(){this.items.addAll(Array.prototype.slice.call(arguments,0));return this;},remove:function(A){this.items.remove(A);return this;},render:function(){this.items.each(function(f){if(f.isFormField&&!f.rendered&&document.getElementById(f.id)){f.applyTo(f.id);
-}});return this;},applyToFields:function(o){this.items.each(function(f){Roo.apply(f,o);});return this;},applyIfToFields:function(o){this.items.each(function(f){Roo.applyIf(f,o);});return this;}});Roo.BasicForm=Roo.form.BasicForm;Roo.apply(Roo.form.BasicForm,{popover:{padding:5,isApplied:false,isMasked:false,form:false,target:false,intervalID:false,maskEl:false,apply:function(){if(this.isApplied){return;
-}this.maskEl={top:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-top-mask"},true),left:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-left-mask"},true),bottom:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-bottom-mask"}
-,true),right:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-right-mask"},true)};this.maskEl.top.enableDisplayMode("block");this.maskEl.left.enableDisplayMode("block");this.maskEl.bottom.enableDisplayMode("block");this.maskEl.right.enableDisplayMode("block");
-Roo.get(document.body).on('click',function(){this.unmask();},this);Roo.get(document.body).on('touchstart',function(){this.unmask();},this);this.isApplied=true},mask:function(A,B){this.form=A;this.target=B;if(!this.form.errorMask||!B.el){return;}var C=this.target.el.findScrollableParent()||this.target.el.findParent('div.x-layout-active-content',100,true)||Roo.get(document.body);
-var ot=this.target.el.calcOffsetsTo(C);var D=ot[1]-this.form.maskOffset;D=Math.min(D,C.dom.scrollHeight);C.scrollTo('top',D);var el=this.target.wrap||this.target.el;var E=el.getBox();this.maskEl.top.setStyle('position','absolute');this.maskEl.top.setStyle('z-index',10000);
-this.maskEl.top.setSize(Roo.lib.Dom.getDocumentWidth(),E.y-this.padding);this.maskEl.top.setLeft(0);this.maskEl.top.setTop(0);this.maskEl.top.show();this.maskEl.left.setStyle('position','absolute');this.maskEl.left.setStyle('z-index',10000);this.maskEl.left.setSize(E.x-this.padding,E.height+this.padding*2);
-this.maskEl.left.setLeft(0);this.maskEl.left.setTop(E.y-this.padding);this.maskEl.left.show();this.maskEl.bottom.setStyle('position','absolute');this.maskEl.bottom.setStyle('z-index',10000);this.maskEl.bottom.setSize(Roo.lib.Dom.getDocumentWidth(),Roo.lib.Dom.getDocumentHeight()-E.bottom-this.padding);
+Roo.each(this.childForms||[],function(f){f.setValues(A);f.resetHasChanged();});return this;},getValues:function(A){if(this.childForms){Roo.each(this.childForms,function(f){this.setValues(f.getFieldValues());},this);}if(typeof(FormData)!='undefined'&&A!==true){try{var fd=(new FormData(this.el.dom)).entries();
+var B={};var C=fd.next();while(!C.done){B[C.value[0]]=C.value[1];C=fd.next();};return B;}catch(e){}}var fs=Roo.lib.Ajax.serializeForm(this.el.dom);if(A===true){return fs;}return Roo.urlDecode(fs);},getFieldValues:function(A){if(this.childForms){Roo.each(this.childForms,function(f){this.setValues(f.getFieldValues());
+},this);}var B={};this.items.each(function(f){if(f.readOnly&&A!==true){return;}if(!f.getName()){return;}var v=f.getValue();if(f.inputType=='radio'){if(typeof(B[f.getName()])=='undefined'){B[f.getName()]='';}if(!f.el.dom.checked){return;}v=f.el.dom.value;}
+if((typeof(v)=='object')&&f.getRawValue){v=f.getRawValue();}if(f.name!=f.getName()){B[f.name]=f.getRawValue();}B[f.getName()]=v;});return B;},clearInvalid:function(){this.items.each(function(f){f.clearInvalid();});Roo.each(this.childForms||[],function(f){f.clearInvalid();
+});return this;},reset:function(){this.items.each(function(f){f.reset();});Roo.each(this.childForms||[],function(f){f.reset();});this.resetHasChanged();return this;},add:function(){this.items.addAll(Array.prototype.slice.call(arguments,0));return this;},remove:function(A){this.items.remove(A);
+return this;},render:function(){this.items.each(function(f){if(f.isFormField&&!f.rendered&&document.getElementById(f.id)){f.applyTo(f.id);}});return this;},applyToFields:function(o){this.items.each(function(f){Roo.apply(f,o);});return this;},applyIfToFields:function(o){this.items.each(function(f){Roo.applyIf(f,o);
+});return this;}});Roo.BasicForm=Roo.form.BasicForm;Roo.apply(Roo.form.BasicForm,{popover:{padding:5,isApplied:false,isMasked:false,form:false,target:false,intervalID:false,maskEl:false,apply:function(){if(this.isApplied){return;}this.maskEl={top:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-top-mask"}
+,true),left:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-left-mask"},true),bottom:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-bottom-mask"},true),right:Roo.DomHelper.append(Roo.get(document.body),{tag:"div",cls:"x-dlg-mask roo-form-right-mask"}
+,true)};this.maskEl.top.enableDisplayMode("block");this.maskEl.left.enableDisplayMode("block");this.maskEl.bottom.enableDisplayMode("block");this.maskEl.right.enableDisplayMode("block");Roo.get(document.body).on('click',function(){this.unmask();},this);Roo.get(document.body).on('touchstart',function(){this.unmask();
+},this);this.isApplied=true},mask:function(A,B){this.form=A;this.target=B;if(!this.form.errorMask||!B.el){return;}var C=this.target.el.findScrollableParent()||this.target.el.findParent('div.x-layout-active-content',100,true)||Roo.get(document.body);var ot=this.target.el.calcOffsetsTo(C);
+var D=ot[1]-this.form.maskOffset;D=Math.min(D,C.dom.scrollHeight);C.scrollTo('top',D);var el=this.target.wrap||this.target.el;var E=el.getBox();this.maskEl.top.setStyle('position','absolute');this.maskEl.top.setStyle('z-index',10000);this.maskEl.top.setSize(Roo.lib.Dom.getDocumentWidth(),E.y-this.padding);
+this.maskEl.top.setLeft(0);this.maskEl.top.setTop(0);this.maskEl.top.show();this.maskEl.left.setStyle('position','absolute');this.maskEl.left.setStyle('z-index',10000);this.maskEl.left.setSize(E.x-this.padding,E.height+this.padding*2);this.maskEl.left.setLeft(0);
+this.maskEl.left.setTop(E.y-this.padding);this.maskEl.left.show();this.maskEl.bottom.setStyle('position','absolute');this.maskEl.bottom.setStyle('z-index',10000);this.maskEl.bottom.setSize(Roo.lib.Dom.getDocumentWidth(),Roo.lib.Dom.getDocumentHeight()-E.bottom-this.padding);
 this.maskEl.bottom.setLeft(0);this.maskEl.bottom.setTop(E.bottom+this.padding);this.maskEl.bottom.show();this.maskEl.right.setStyle('position','absolute');this.maskEl.right.setStyle('z-index',10000);this.maskEl.right.setSize(Roo.lib.Dom.getDocumentWidth()-E.right-this.padding,E.height+this.padding*2);
 this.maskEl.right.setLeft(E.right+this.padding);this.maskEl.right.setTop(E.y-this.padding);this.maskEl.right.show();this.intervalID=window.setInterval(function(){Roo.form.BasicForm.popover.unmask();},10000);window.onwheel=function(){return false;};(function(){this.isMasked=true;
 }).defer(500,this);},unmask:function(){if(!this.isApplied||!this.isMasked||!this.form||!this.target||!this.form.errorMask){return;}this.maskEl.top.setStyle('position','absolute');this.maskEl.top.setSize(0,0).setXY([0,0]);this.maskEl.top.hide();this.maskEl.left.setStyle('position','absolute');
@@ -1384,21 +1585,28 @@ this.resizeEl.setSize(this.autoWidth?"auto":C.width,this.autoHeight?"auto":C.hei
 }},isClosable:function(){return this.closable;},beforeSlide:function(){this.el.clip();this.resizeEl.clip();},afterSlide:function(){this.el.unclip();this.resizeEl.unclip();},refresh:function(){if(this.refreshDelegate){this.loaded=false;this.refreshDelegate();
 }},destroy:function(){this.el.removeAllListeners();var A=document.createElement("span");A.appendChild(this.el.dom);A.innerHTML="";this.el.remove();this.el=null;},form:false,view:false,addxtype:function(A){if(A.xtype.match(/^Form$/)){var el;el=this.el.createChild();
 this.form=new Roo.form.Form(A);if(this.form.allItems.length){this.form.render(el.dom);}return this.form;}if(['View','JsonView','DatePicker'].indexOf(A.xtype)>-1){A.el=this.el.appendChild(document.createElement("div"));var B=new Roo.factory(A);B.render&&B.render(false,'');
-this.view=B;return B;}return false;}});Roo.GridPanel=function(A,B){this.wrapper=Roo.DomHelper.append(document.body,{tag:"div",cls:"x-layout-grid-wrapper x-layout-inactive-content"},true);this.wrapper.dom.appendChild(A.getGridEl().dom);Roo.GridPanel.superclass.constructor.call(this,this.wrapper,B);
+this.view=B;return B;}return false;}});
+// Roo/GridPanel.js
+Roo.GridPanel=function(A,B){if(typeof(A.grid)!='undefined'){B=A;A=B.grid;}this.wrapper=Roo.DomHelper.append(document.body,{tag:"div",cls:"x-layout-grid-wrapper x-layout-inactive-content"},true);this.wrapper.dom.appendChild(A.getGridEl().dom);Roo.GridPanel.superclass.constructor.call(this,this.wrapper,B);
 if(this.toolbar){this.toolbar.el.insertBefore(this.wrapper.dom.firstChild);}if(this.footer&&!this.footer.el&&this.footer.xtype){this.footer.container=this.grid.getView().getFooterPanel(true);this.footer.dataSource=this.grid.dataSource;this.footer=Roo.factory(this.footer,Roo);
 }A.monitorWindowResize=false;A.autoHeight=false;A.autoWidth=false;this.grid=A;this.grid.getGridEl().replaceClass("x-layout-inactive-content","x-layout-component-panel");};Roo.extend(Roo.GridPanel,Roo.ContentPanel,{getId:function(){return this.grid.id;},getGrid:function(){return this.grid;
 },setSize:function(A,B){if(!this.ignoreResize(A,B)){var C=this.grid;var D=this.adjustForComponents(A,B);C.getGridEl().setSize(D.width,D.height);C.autoSize();}},beforeSlide:function(){this.grid.getView().scroller.clip();},afterSlide:function(){this.grid.getView().scroller.unclip();
-},destroy:function(){this.grid.destroy();delete this.grid;Roo.GridPanel.superclass.destroy.call(this);}});Roo.NestedLayoutPanel=function(A,B){Roo.NestedLayoutPanel.superclass.constructor.call(this,A.getEl(),B);A.monitorWindowResize=false;this.layout=A;this.layout.getEl().addClass("x-layout-nested-layout");
-};Roo.extend(Roo.NestedLayoutPanel,Roo.ContentPanel,{setSize:function(A,B){if(!this.ignoreResize(A,B)){var C=this.adjustForComponents(A,B);var el=this.layout.getEl();el.setSize(C.width,C.height);var D=el.dom.offsetWidth;this.layout.layout();if(Roo.isIE&&!this.initialized){this.initialized=true;
-this.layout.layout();}}},setActiveState:function(A){this.active=A;if(!A){this.fireEvent("deactivate",this);return;}this.fireEvent("activate",this);if(!this.layout){return;}var B=false;for(var r in this.layout.regions){B=this.layout.getRegion(r);if(B.getActivePanel()){B.setActivePanel(B.getActivePanel());
-continue;}if(!B.panels.length){continue;}B.showPanel(B.getPanel(0));}},getLayout:function(){return this.layout;},addxtype:function(A){return this.layout.addxtype(A);}});Roo.ScrollPanel=function(el,A,B){A=A||{};A.fitToFrame=true;Roo.ScrollPanel.superclass.constructor.call(this,el,A,B);
-this.el.dom.style.overflow="hidden";var C=this.el.wrap({cls:"x-scroller x-layout-inactive-content"});this.el.removeClass("x-layout-inactive-content");this.el.on("mousewheel",this.onWheel,this);var up=C.createChild({cls:"x-scroller-up",html:"&#160;"},this.el.dom);
-var D=C.createChild({cls:"x-scroller-down",html:"&#160;"});up.unselectable();D.unselectable();up.on("click",this.scrollUp,this);D.on("click",this.scrollDown,this);up.addClassOnOver("x-scroller-btn-over");D.addClassOnOver("x-scroller-btn-over");up.addClassOnClick("x-scroller-btn-click");
-D.addClassOnClick("x-scroller-btn-click");this.adjustments=[0,-(up.getHeight()+D.getHeight())];this.resizeEl=this.el;this.el=C;this.up=up;this.down=D;};Roo.extend(Roo.ScrollPanel,Roo.ContentPanel,{increment:100,wheelIncrement:5,scrollUp:function(){this.resizeEl.scroll("up",this.increment,{callback:this.afterScroll,scope:this}
-);},scrollDown:function(){this.resizeEl.scroll("down",this.increment,{callback:this.afterScroll,scope:this});},afterScroll:function(){var el=this.resizeEl;var t=el.dom.scrollTop,h=el.dom.scrollHeight,ch=el.dom.clientHeight;this.up[t==0?"addClass":"removeClass"]("x-scroller-btn-disabled");
-this.down[h-t<=ch?"addClass":"removeClass"]("x-scroller-btn-disabled");},setSize:function(){Roo.ScrollPanel.superclass.setSize.apply(this,arguments);this.afterScroll();},onWheel:function(e){var d=e.getWheelDelta();this.resizeEl.dom.scrollTop-=(d*this.wheelIncrement);
-this.afterScroll();e.stopEvent();},setContent:function(A,B){this.resizeEl.update(A,B);}});Roo.TreePanel=function(A){var el=A.el;var B=A.tree;delete A.tree;delete A.el;var C=el.createChild();A.resizeEl=C;Roo.TreePanel.superclass.constructor.call(this,el,A);
-this.tree=new Roo.tree.TreePanel(C,B);this.on('activate',function(){if(this.tree.rendered){return;}this.tree.render();});};Roo.extend(Roo.TreePanel,Roo.ContentPanel,{fitToFrame:true,autoScroll:true,tree:false});
+},destroy:function(){this.grid.destroy();delete this.grid;Roo.GridPanel.superclass.destroy.call(this);}});
+// Roo/NestedLayoutPanel.js
+Roo.NestedLayoutPanel=function(A,B){Roo.NestedLayoutPanel.superclass.constructor.call(this,A.getEl(),B);A.monitorWindowResize=false;this.layout=A;this.layout.getEl().addClass("x-layout-nested-layout");};Roo.extend(Roo.NestedLayoutPanel,Roo.ContentPanel,{layout:false,setSize:function(A,B){if(!this.ignoreResize(A,B)){var C=this.adjustForComponents(A,B);
+var el=this.layout.getEl();el.setSize(C.width,C.height);var D=el.dom.offsetWidth;this.layout.layout();if(Roo.isIE&&!this.initialized){this.initialized=true;this.layout.layout();}}},setActiveState:function(A){this.active=A;if(!A){this.fireEvent("deactivate",this);
+return;}this.fireEvent("activate",this);if(!this.layout){return;}var B=false;for(var r in this.layout.regions){B=this.layout.getRegion(r);if(B.getActivePanel()){B.setActivePanel(B.getActivePanel());continue;}if(!B.panels.length){continue;}B.showPanel(B.getPanel(0));
+}},getLayout:function(){return this.layout;},addxtype:function(A){return this.layout.addxtype(A);}});
+// Roo/ScrollPanel.js
+Roo.ScrollPanel=function(el,A,B){A=A||{};A.fitToFrame=true;Roo.ScrollPanel.superclass.constructor.call(this,el,A,B);this.el.dom.style.overflow="hidden";var C=this.el.wrap({cls:"x-scroller x-layout-inactive-content"});this.el.removeClass("x-layout-inactive-content");
+this.el.on("mousewheel",this.onWheel,this);var up=C.createChild({cls:"x-scroller-up",html:"&#160;"},this.el.dom);var D=C.createChild({cls:"x-scroller-down",html:"&#160;"});up.unselectable();D.unselectable();up.on("click",this.scrollUp,this);D.on("click",this.scrollDown,this);
+up.addClassOnOver("x-scroller-btn-over");D.addClassOnOver("x-scroller-btn-over");up.addClassOnClick("x-scroller-btn-click");D.addClassOnClick("x-scroller-btn-click");this.adjustments=[0,-(up.getHeight()+D.getHeight())];this.resizeEl=this.el;this.el=C;this.up=up;
+this.down=D;};Roo.extend(Roo.ScrollPanel,Roo.ContentPanel,{increment:100,wheelIncrement:5,scrollUp:function(){this.resizeEl.scroll("up",this.increment,{callback:this.afterScroll,scope:this});},scrollDown:function(){this.resizeEl.scroll("down",this.increment,{callback:this.afterScroll,scope:this}
+);},afterScroll:function(){var el=this.resizeEl;var t=el.dom.scrollTop,h=el.dom.scrollHeight,ch=el.dom.clientHeight;this.up[t==0?"addClass":"removeClass"]("x-scroller-btn-disabled");this.down[h-t<=ch?"addClass":"removeClass"]("x-scroller-btn-disabled");},setSize:function(){Roo.ScrollPanel.superclass.setSize.apply(this,arguments);
+this.afterScroll();},onWheel:function(e){var d=e.getWheelDelta();this.resizeEl.dom.scrollTop-=(d*this.wheelIncrement);this.afterScroll();e.stopEvent();},setContent:function(A,B){this.resizeEl.update(A,B);}});
+// Roo/TreePanel.js
+Roo.TreePanel=function(A){var el=A.el;var B=A.tree;delete A.tree;delete A.el;var C=el.createChild();A.resizeEl=C;Roo.TreePanel.superclass.constructor.call(this,el,A);this.tree=new Roo.tree.TreePanel(C,B);this.on('activate',function(){if(this.tree.rendered){return;
+}this.tree.render();});};Roo.extend(Roo.TreePanel,Roo.ContentPanel,{fitToFrame:true,autoScroll:true,tree:false});
 // Roo/ReaderLayout.js
 Roo.ReaderLayout=function(A,B){var c=A||{size:{}};Roo.ReaderLayout.superclass.constructor.call(this,B||document.body,{north:c.north!==false?Roo.apply({split:false,initialSize:32,titlebar:false},c.north):false,west:c.west!==false?Roo.apply({split:true,initialSize:200,minSize:175,maxSize:400,titlebar:true,collapsible:true,animate:true,margins:{left:5,right:0,bottom:5,top:5}
 ,cmargins:{left:5,right:5,bottom:5,top:5}},c.west):false,east:c.east!==false?Roo.apply({split:true,initialSize:200,minSize:175,maxSize:400,titlebar:true,collapsible:true,animate:true,margins:{left:0,right:5,bottom:5,top:5},cmargins:{left:5,right:5,bottom:5,top:5}
@@ -1410,7 +1618,7 @@ Roo.grid.Grid=function(A,B){this.container=Roo.get(A);this.container.update("");
 }if(this.cm){this.colModel=this.cm;delete this.cm;}if(this.sm){this.selModel=this.sm;delete this.sm;}if(this.selModel){this.selModel=Roo.factory(this.selModel,Roo.grid);this.sm=this.selModel;this.sm.xmodule=this.xmodule||false;}if(typeof(this.colModel.config)=='undefined'){this.colModel=new Roo.grid.ColumnModel(this.colModel);
 this.cm=this.colModel;this.cm.xmodule=this.xmodule||false;}if(this.dataSource){this.dataSource=Roo.factory(this.dataSource,Roo.data);this.ds=this.dataSource;this.ds.xmodule=this.xmodule||false;}if(this.width){this.container.setWidth(this.width);}if(this.height){this.container.setHeight(this.height);
 }this.addEvents({"click":true,"dblclick":true,"contextmenu":true,"mousedown":true,"mouseup":true,"mouseover":true,"mouseout":true,"keypress":true,"keydown":true,"cellclick":true,"celldblclick":true,"rowclick":true,"rowdblclick":true,"headerclick":true,"headerdblclick":true,"rowcontextmenu":true,"cellcontextmenu":true,"headercontextmenu":true,"bodyscroll":true,"columnresize":true,"columnmove":true,"startdrag":true,"enddrag":true,"dragdrop":true,"dragover":true,"dragenter":true,"dragout":true,'rowclass':true,'render':true}
-);Roo.grid.Grid.superclass.constructor.call(this);};Roo.extend(Roo.grid.Grid,Roo.util.Observable,{minColumnWidth:25,autoSizeColumns:false,autoSizeHeaders:true,monitorWindowResize:true,maxRowsToMeasure:0,trackMouseOver:true,enableDragDrop:false,enableColumnMove:true,enableColumnHide:true,enableRowHeightSync:false,stripeRows:true,autoHeight:false,autoExpandColumn:false,autoExpandMin:50,autoExpandMax:1000,view:null,loadMask:false,dropTarget:false,rendered:false,ddText:"{0} selected row{1}",render:function(){var c=this.container;
+);Roo.grid.Grid.superclass.constructor.call(this);};Roo.extend(Roo.grid.Grid,Roo.util.Observable,{minColumnWidth:25,autoSizeColumns:false,autoSizeHeaders:true,monitorWindowResize:true,maxRowsToMeasure:0,trackMouseOver:true,enableDragDrop:false,enableColumnMove:true,enableColumnHide:true,enableRowHeightSync:false,stripeRows:true,autoHeight:false,autoExpandColumn:false,autoExpandMin:50,autoExpandMax:1000,view:null,loadMask:false,dropTarget:false,sortColMenu:false,rendered:false,ddText:"{0} selected row{1}",render:function(){var c=this.container;
 if((!c.dom.offsetHeight||c.dom.offsetHeight<20)||c.getStyle("height")=="auto"){this.autoHeight=true;}var A=this.getView();A.init(this);c.on("click",this.onClick,this);c.on("dblclick",this.onDblClick,this);c.on("contextmenu",this.onContextMenu,this);c.on("keydown",this.onKeyDown,this);
 if(Roo.isTouch){c.on("touchstart",this.onTouchStart,this);}this.relayEvents(c,["mousedown","mouseup","mouseover","mouseout","keypress"]);this.getSelectionModel().init(this);A.render();if(this.loadMask){this.loadMask=new Roo.LoadMask(this.container,Roo.apply({store:this.dataSource}
 ,this.loadMask));}if(this.toolbar&&this.toolbar.xtype){this.toolbar.container=this.getView().getHeaderPanel(true);this.toolbar=new Roo.Toolbar(this.toolbar);}if(this.footer&&this.footer.xtype){this.footer.dataSource=this.getDataSource();this.footer.container=this.getView().getFooterPanel(true);
@@ -1531,11 +1739,11 @@ if(A){for(var dd in A){if(!A[dd].config.isTarget&&A[dd].dragElId){var B=A[dd].dr
 case "lock":var lc=cm.getLockedCount();if(cm.getColumnCount(true)<=lc+1){this.onDenyColumnLock();return;}if(lc!=B){cm.setLocked(B,true,true);cm.moveColumn(B,lc);this.grid.fireEvent("columnmove",B,lc);}else{cm.setLocked(B,true);}break;case "unlock":var lc=cm.getLockedCount();
 if((lc-1)!=B){cm.setLocked(B,false,true);cm.moveColumn(B,lc-1);this.grid.fireEvent("columnmove",B,lc-1);}else{cm.setLocked(B,false);}break;case 'wider':case 'narrow':var cw=cm.getColumnWidth(B);cw+=(A.id=='wider'?1:-1)*50;cw=Math.max(0,cw);cw=Math.min(cw,4000);
 cm.setColumnWidth(B,cw);break;default:B=cm.getIndexById(A.id.substr(4));if(B!=-1){if(A.checked&&cm.getColumnCount(true)<=1){this.onDenyColumnHide();return false;}cm.setHidden(B,A.checked);}}return true;},beforeColMenuShow:function(){var cm=this.cm,A=cm.getColumnCount();
-this.colMenu.removeAll();for(var i=0;i<A;i++){this.colMenu.add(new Roo.menu.CheckItem({id:"col-"+cm.getColumnId(i),text:cm.getColumnHeader(i),checked:!cm.isHidden(i),hideOnClick:false}));}},handleHdCtx:function(g,A,e){e.stopEvent();var hd=this.getHeaderCell(A);
-this.hdCtxIndex=A;var ms=this.hmenu.items,cm=this.cm;ms.get("asc").setDisabled(!cm.isSortable(A));ms.get("desc").setDisabled(!cm.isSortable(A));if(this.grid.enableColLock!==false){ms.get("lock").setDisabled(cm.isLocked(A));ms.get("unlock").setDisabled(!cm.isLocked(A));
-}this.hmenu.show(hd,"tl-bl");},handleHdOver:function(e){var hd=this.findHeaderCell(e.getTarget());if(hd&&!this.headersDisabled){if(this.grid.colModel.isSortable(this.getCellIndex(hd))){this.fly(hd).addClass("x-grid-hd-over");}}},handleHdOut:function(e){var hd=this.findHeaderCell(e.getTarget());
-if(hd){this.fly(hd).removeClass("x-grid-hd-over");}},handleSplitDblClick:function(e,t){var i=this.getCellIndex(t);if(this.grid.enableColumnResize!==false&&this.cm.isResizable(i)&&!this.cm.isFixed(i)){this.autoSizeColumn(i,true);this.layout();}},render:function(){var cm=this.cm;
-var A=cm.getColumnCount();if(this.grid.monitorWindowResize===true){Roo.EventManager.onWindowResize(this.onWindowResize,this,true);}var B=this.renderHeaders();var C=this.templates.body.apply({rows:""});var D=this.templates.master.apply({lockedBody:C,body:C,lockedHeader:B[0],header:B[1]}
+this.colMenu.removeAll();var B=[];for(var i=0;i<A;i++){B.push({id:"col-"+cm.getColumnId(i),text:cm.getColumnHeader(i),checked:!cm.isHidden(i),hideOnClick:false});}if(this.grid.sortColMenu){B.sort(function(a,b){if(a.text==b.text){return 0;}return a.text.toUpperCase()>b.text.toUpperCase()?1:-1;
+});}for(var i=0;i<A;i++){this.colMenu.add(new Roo.menu.CheckItem(B[i]));}},handleHdCtx:function(g,A,e){e.stopEvent();var hd=this.getHeaderCell(A);this.hdCtxIndex=A;var ms=this.hmenu.items,cm=this.cm;ms.get("asc").setDisabled(!cm.isSortable(A));ms.get("desc").setDisabled(!cm.isSortable(A));
+if(this.grid.enableColLock!==false){ms.get("lock").setDisabled(cm.isLocked(A));ms.get("unlock").setDisabled(!cm.isLocked(A));}this.hmenu.show(hd,"tl-bl");},handleHdOver:function(e){var hd=this.findHeaderCell(e.getTarget());if(hd&&!this.headersDisabled){if(this.grid.colModel.isSortable(this.getCellIndex(hd))){this.fly(hd).addClass("x-grid-hd-over");
+}}},handleHdOut:function(e){var hd=this.findHeaderCell(e.getTarget());if(hd){this.fly(hd).removeClass("x-grid-hd-over");}},handleSplitDblClick:function(e,t){var i=this.getCellIndex(t);if(this.grid.enableColumnResize!==false&&this.cm.isResizable(i)&&!this.cm.isFixed(i)){this.autoSizeColumn(i,true);
+this.layout();}},render:function(){var cm=this.cm;var A=cm.getColumnCount();if(this.grid.monitorWindowResize===true){Roo.EventManager.onWindowResize(this.onWindowResize,this,true);}var B=this.renderHeaders();var C=this.templates.body.apply({rows:""});var D=this.templates.master.apply({lockedBody:C,body:C,lockedHeader:B[0],header:B[1]}
 );this.grid.getGridEl().dom.innerHTML=D;this.initElements();this.el.on("scroll",function(){this.el.dom.scrollTop=0;},this);this.scroller.on("scroll",this.handleScroll,this);this.lockedBody.on("mousewheel",this.handleWheel,this);this.mainBody.on("mousewheel",this.handleWheel,this);
 this.mainHd.on("mouseover",this.handleHdOver,this);this.mainHd.on("mouseout",this.handleHdOut,this);this.mainHd.on("dblclick",this.handleSplitDblClick,this,{delegate:"."+this.splitClass});this.lockedHd.on("mouseover",this.handleHdOver,this);this.lockedHd.on("mouseout",this.handleHdOut,this);
 this.lockedHd.on("dblclick",this.handleSplitDblClick,this,{delegate:"."+this.splitClass});if(this.grid.enableColumnResize!==false&&Roo.grid.SplitDragZone){new Roo.grid.SplitDragZone(this.grid,this.lockedHd.dom,this.mainHd.dom);}this.updateSplitters();if(this.grid.enableColumnMove&&Roo.grid.HeaderDragZone){new Roo.grid.HeaderDragZone(this.grid,this.lockedHd.dom,this.mainHd.dom);