penguin/AstroJS

Javascript framework for my blog

commit c2fb5b205acdc4ff17d55776b60516b149aa5ae5

author斟酌 鵬兄 <tgckpg@gmail.com>
date2026-06-16T00:33:04Z
subjectMigrate old externs 7/x
commit c2fb5b205acdc4ff17d55776b60516b149aa5ae5
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2026-06-16T00:33:04Z

    Migrate old externs 7/x
---
 botanjs/src/Astro/Blog/AstroEdit/Article.js        |   4 +-
 botanjs/src/Astro/Blog/AstroEdit/SiteLibrary.js    |   6 +-
 .../src/Astro/Blog/AstroEdit/SmartInput/_this.js   |   4 +-
 botanjs/src/Astro/Blog/AstroEdit/Uploader.js       |   8 +-
 .../Blog/AstroEdit/Visualizer/Snippet/SiteFile.js  |   8 +-
 .../src/Astro/Blog/AstroEdit/Visualizer/_this.js   |   4 +-
 botanjs/src/Astro/Blog/Components/Bubble.js        |   2 +-
 botanjs/src/Astro/Blog/Components/Comment.js       |  27 ++---
 botanjs/src/Astro/Blog/Components/Notification.js  |  17 +--
 .../Blog/Components/ToggleButton/CommentToggle.js  |   5 +-
 .../Astro/Blog/Components/ToggleButton/_this.js    |   5 +-
 botanjs/src/Astro/Blog/Layout/MainFrame.js         |   6 +-
 botanjs/src/Astro/Mechanism/Parallax.js            |   4 +-
 botanjs/src/Astro/Penguin/Layout/MainFrame.js      |   2 +-
 botanjs/src/Astro/Starfall/Layout/MainFrame.js     |   2 +-
 botanjs/src/Components/MessageBox.js               |   6 +-
 botanjs/src/Components/Mouse/Clipboard.js          |   2 +-
 botanjs/src/Components/Mouse/ContextMenu.js        |  18 +--
 botanjs/src/Components/Vim/Actions/VA_REC.js       |   2 +-
 botanjs/src/Components/Vim/VimArea.js              |   2 +-
 botanjs/src/Dandelion/CSSAnimations/MovieClip.js   |   2 +-
 botanjs/src/Dandelion/IDOMElement.js               |  67 +++++------
 botanjs/src/Dandelion/IDOMObject.js                |  39 ++++---
 botanjs/src/Dandelion/_this.js                     |   2 +-
 botanjs/src/System/Cycle/Trigger.js                |  27 +++--
 botanjs/src/System/Cycle/_this.js                  |  49 +++++---
 botanjs/src/System/Debug.js                        |   5 +-
 botanjs/src/System/Log.js                          |  10 +-
 botanjs/src/System/Net/_this.js                    |   2 +-
 botanjs/src/System/utils/DataKey.js                |   5 +-
 botanjs/src/System/utils/IKey.js                   |  16 +--
 botanjs/src/externs/Components.MessageBox.js       |   4 +-
 botanjs/src/externs/Components.Mouse.Clipboard.js  |  12 +-
 .../src/externs/Components.Mouse.ContextMenu.js    |  10 +-
 botanjs/src/externs/Dandelion.IDOMElement.js       |   8 +-
 botanjs/src/externs/Dandelion.IDOMObject.js        |  15 ++-
 botanjs/src/externs/Dandelion.js                   |   8 +-
 botanjs/src/externs/System.Global.js               |  16 +--
 botanjs/src/externs/System.utils.EventKey.js       |   8 +-
 botanjs/src/externs/System.utils.IKey.js           |   4 +-
 botanjs/src/externs/_AstConf_.Article.js           |  10 +-
 botanjs/src/externs/_AstConf_.Comment.js           |  13 ++-
 botanjs/src/externs/_AstConf_.Notification.js      |  10 +-
 botanjs/src/externs/_AstConf_.UserInfo.js          |  17 ++-
 botanjs/src/externs/_AstJson_.AJaxGetNotis.js      |  16 +--
 resolver-go/cmd/api-server/main.go                 |  16 +--
 resolver-go/internal/compilecache/cache.go         |  44 ++++---
 resolver-go/internal/compilecache/types.go         |   8 ++
 resolver-go/internal/generated/buildinfo_gen.go    |   2 +-
 resolver-go/internal/generated/classmap_gen.go     | 126 ++++++++++-----------
 resolver-go/internal/resolver/resolver.go          |   2 +-
 51 files changed, 390 insertions(+), 317 deletions(-)

diff --git a/botanjs/src/Astro/Blog/AstroEdit/Article.js b/botanjs/src/Astro/Blog/AstroEdit/Article.js
index 4e44df8..f64061a 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Article.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Article.js
@@ -5,7 +5,7 @@
 	var Cycle                            = __import( "System.Cycle" );
 	/** @type {System.utils} */
 	var utils                            = __import( "System.utils" );
-	/** @type {System.utils.EventKey} */
+	/** @type {typeof System.utils.EventKey} */
 	var EventKey                         = __import( "System.utils.EventKey" );
 	/** @type {System.Debug} */
 	var debug                            = __import( "System.Debug" );
@@ -13,7 +13,7 @@
 	var MessageBox                       = __import( "Components.MessageBox" );
 	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMObject} */
+	/** @type {typeof Dandelion.IDOMObject} */
 	var IDOMObject                       = __import( "Dandelion.IDOMObject" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/SiteLibrary.js b/botanjs/src/Astro/Blog/AstroEdit/SiteLibrary.js
index f9e4d6d..3994b6b 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/SiteLibrary.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/SiteLibrary.js
@@ -11,15 +11,15 @@
 	var IKey                                    = __import( "System.utils.IKey" );
 	/** @type {typeof System.utils.DataKey} */
 	var DataKey                                 = __import( "System.utils.DataKey" );
-	/** @type {System.utils.EventKey} */
+	/** @type {typeof System.utils.EventKey} */
 	var EventKey                                = __import( "System.utils.EventKey" );
 	/** @type {typeof Components.MessageBox} */
 	var MessageBox                              = __import( "Components.MessageBox" );
-	/** @type {Components.Mouse.ContextMenu} */
+	/** @type {typeof Components.Mouse.ContextMenu} */
 	var ContextMenu                             = __import( "Components.Mouse.ContextMenu" );
 	/** @type {typeof Dandelion} */
 	var Dand                                    = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMObject} */
+	/** @type {typeof Dandelion.IDOMObject} */
 	var IDOMObject                              = __import( "Dandelion.IDOMObject" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                             = __import( "Dandelion.IDOMElement" );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/SmartInput/_this.js b/botanjs/src/Astro/Blog/AstroEdit/SmartInput/_this.js
index 3b2ad7a..f000c44 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/SmartInput/_this.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/SmartInput/_this.js
@@ -5,7 +5,7 @@
 	var Dand                                    = __import( "Dandelion" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                             = __import( "Dandelion.IDOMElement" );
-	/** @type {Dandelion.IDOMObject} */
+	/** @type {typeof Dandelion.IDOMObject} */
 	var IDOMObject                              = __import( "Dandelion.IDOMObject" );
 	/** @type {System.Cycle} */
 	var Cycle                                   = __import( "System.Cycle" );
@@ -515,7 +515,7 @@
 			}
 		};
 
-		IDOMObject( document ).addEventListener( "KeyDown", KeyHandler( document, BackQuoteBinding ), false );
+		new IDOMObject( document ).addEventListener( "KeyDown", KeyHandler( document, BackQuoteBinding ), false );
 	};
 
 	ns[ NS_EXPORT ]( EX_CLASS, "SmartInput", MasterInput );
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Uploader.js b/botanjs/src/Astro/Blog/AstroEdit/Uploader.js
index 97beb82..bc4c979 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Uploader.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Uploader.js
@@ -5,15 +5,15 @@
 	var Cycle                                   = __import( "System.Cycle" );
 	/** @type {System.Debug} */
 	var debug                                   = __import( "System.Debug" );
-	/** @type {System.utils.EventKey} */
+	/** @type {typeof System.utils.EventKey} */
 	var EventKey                                = __import( "System.utils.EventKey" );
-	/** @type {Components.Mouse.ContextMenu} */
+	/** @type {typeof Components.Mouse.ContextMenu} */
 	var ContextMenu                             = __import( "Components.Mouse.ContextMenu" );
 	/** @type {typeof Components.MessageBox} */
 	var MessageBox                              = __import( "Components.MessageBox" );
 	/** @type {typeof Dandelion} */
 	var Dand                                    = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMObject} */
+	/** @type {typeof Dandelion.IDOMObject} */
 	var IDOMObject                              = __import( "Dandelion.IDOMObject" );
 	/** @type {Astro.Blog.Config} */
 	var Conf                                    = __import( "Astro.Blog.Config" );
@@ -149,7 +149,7 @@
 		fileList.style.paddingTop = String(p_status.clientHeight) + "px";
 
 
-		var docDom = IDOMObject( document );
+		var docDom = new IDOMObject( document );
 		// Drag/drop handlers
 		docDom.addEventListener( "DragOver", function ( e )
 		{
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js
index 5e6fadb..4fa26fc 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js
@@ -145,10 +145,10 @@
 					);
 
 					// ad handlers to handles size change event
-					IDOMElement(s).element.addEventListener("Change", selectionChanged.bind({size: "small"}));
-					IDOMElement(m).element.addEventListener("Change", selectionChanged.bind({size: "medium"}));
-					IDOMElement(l).element.addEventListener("Change", selectionChanged.bind({size: "large"}));
-					IDOMElement(o).element.addEventListener("Change", selectionChanged.bind({size: "original"}));
+					IDOMElement(s).addEventListener("Change", selectionChanged.bind({size: "small"}));
+					IDOMElement(m).addEventListener("Change", selectionChanged.bind({size: "medium"}));
+					IDOMElement(l).addEventListener("Change", selectionChanged.bind({size: "large"}));
+					IDOMElement(o).addEventListener("Change", selectionChanged.bind({size: "original"}));
 
 					var hasValue = _stage.getDAttribute( "size" );
 					if( hasValue )
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/_this.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/_this.js
index 29bca68..7091e6f 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/_this.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/_this.js
@@ -13,7 +13,7 @@
 	var Perf                                    = __import( "System.utils.Perf" );
 	/** @type {typeof System.utils.DataKey} */
 	var DataKey                                 = __import( "System.utils.DataKey" );
-	/** @type {System.utils.EventKey} */
+	/** @type {typeof System.utils.EventKey} */
 	var EventKey                                = __import( "System.utils.EventKey" );
 	/** @type {typeof System.utils.IKey} */
 	var IKey                                    = __import( "System.utils.IKey" );
@@ -21,7 +21,7 @@
 	var Loader                                  = __import( "System.Net.ClassLoader" );
 	/** @type {typeof Components.MessageBox} */
 	var MessageBox                              = __import( "Components.MessageBox" );
-	/** @type {Components.Mouse.ContextMenu} */
+	/** @type {typeof Components.Mouse.ContextMenu} */
 	var ContextMenu                             = __import( "Components.Mouse.ContextMenu" );
 	/** @type {Astro.Blog.Config} */
 	var Config                                  = __import( "Astro.Blog.Config" );
diff --git a/botanjs/src/Astro/Blog/Components/Bubble.js b/botanjs/src/Astro/Blog/Components/Bubble.js
index a6467dc..771828e 100644
--- a/botanjs/src/Astro/Blog/Components/Bubble.js
+++ b/botanjs/src/Astro/Blog/Components/Bubble.js
@@ -3,7 +3,7 @@
 
 	/** @type {System.Cycle} */
 	var Cycle                            = __import( "System.Cycle" );
-	/** @type {System.utils.EventKey} */
+	/** @type {typeof System.utils.EventKey} */
 	var EventKey                         = __import( "System.utils.EventKey" );
 	/** @type {typeof Dandelion} */
 	var Dand                             = __import( "Dandelion" );
diff --git a/botanjs/src/Astro/Blog/Components/Comment.js b/botanjs/src/Astro/Blog/Components/Comment.js
index 6c0633b..68253ed 100644
--- a/botanjs/src/Astro/Blog/Components/Comment.js
+++ b/botanjs/src/Astro/Blog/Components/Comment.js
@@ -9,7 +9,7 @@
 	var Trigger                                = __import( "System.Cycle.Trigger" );
 	/** @type {typeof System.utils.IKey} */
 	var IKey                                   = __import( "System.utils.IKey" );
-	/** @type {System.utils.EventKey} */
+	/** @type {typeof System.utils.EventKey} */
 	var EventKey                               = __import( "System.utils.EventKey" );
 	/** @type {typeof System.utils.DataKey} */
 	var DataKey                                = __import( "System.utils.DataKey" );
@@ -76,7 +76,7 @@
 		, cHeight = 0
 		, elmH = "1.2em"
 
-			, cp = Dand.id( "c_input_panel" )
+			, cp =  /** @type {HTMLElement} */ (Dand.id( "c_input_panel" ))
 			, contentField = Dand.id( "content_field" )
 			, nameField = Dand.id( "name_field" )
 			, c_body = Dand.id( "comment_body" )
@@ -274,9 +274,9 @@
 
 			Trigger.transition(cp.style, "", function()
 			{
-				cp.style.padding = "0";
-				cp.style.height = "0";
-			});
+				this.style.padding = "0";
+				this.style.height = "0";
+			}.bind(cp));
 
 			// After transition finished, remove input panel
 			Cycle.delay(function()
@@ -432,11 +432,12 @@
 			// Close Input panel
 			closeInputPanel( null );
 
+			var el;
 			// Remove false_fields
 			for(var i = 0, l = fields.length; i < l; i ++)
 			{
-				i = Dand.id("false_" + fields[i]);
-				i.parentNode.removeChild(i);
+				el = /** @type {HTMLElement} */ (Dand.id("false_" + fields[i]));
+				el.parentNode.removeChild(el);
 			}
 			c_stack.style.opacity = 0;
 			cp.parentNode.insertBefore( c_stack, cp );
@@ -444,12 +445,12 @@
 			c_stack.style.marginTop = ( -c_stack.clientHeight ) + "px";
 
 			// if nocomment notice exist, remove it
-			if( i = Dand.id("nocomment") )
+			if( el = /** @type {HTMLElement} */ (Dand.id("nocomment")) )
 			{
-				i.style.transition = "all 0s";
-				i.style.width = "658px";
-				i.style.height = "22px";
-				i.style.overflow = "hidden";
+				el.style.transition = "all 0s";
+				el.style.width = "658px";
+				el.style.height = "22px";
+				el.style.overflow = "hidden";
 				// transition
 				Cycle.next(function()
 				{
@@ -458,7 +459,7 @@
 					this.style.width = "0";
 					this.style.padding = "0";
 					this.style.height = "0";
-				}.bind(i));
+				}.bind(el));
 				// Pending remove
 				Trigger.height(i, 0, function(){ this.parentNode.removeChild(this); }.bind(i));
 			}
diff --git a/botanjs/src/Astro/Blog/Components/Notification.js b/botanjs/src/Astro/Blog/Components/Notification.js
index 436c86c..5a91ed5 100644
--- a/botanjs/src/Astro/Blog/Components/Notification.js
+++ b/botanjs/src/Astro/Blog/Components/Notification.js
@@ -11,13 +11,13 @@
 	var IKey                                    = __import( "System.utils.IKey" );
 	/** @type {typeof System.utils.DataKey} */
 	var DataKey                                 = __import( "System.utils.DataKey" );
-	/** @type {System.utils.EventKey} */
+	/** @type {typeof System.utils.EventKey} */
 	var EventKey                                = __import( "System.utils.EventKey" );
 	/** @type {typeof Dandelion} */
 	var Dand                                    = __import( "Dandelion" );
 	/** @type {typeof Components.MessageBox} */
 	var MessageBox                              = __import( "Components.MessageBox" );
-	/** @type {Components.Mouse.ContextMenu} */
+	/** @type {typeof Components.Mouse.ContextMenu} */
 	var ContextMenu                             = __import( "Components.Mouse.ContextMenu" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                               = __import( "Astro.Bootstrap" );
@@ -32,7 +32,7 @@
 	var init = function ()
 	{
 		var stage = Dand.id( "notifications" );
-		var nt_body = Dand.id( "nt_body" );
+		var nt_body = /** @type HTMLElement */ (Dand.id( "nt_body" ));
 		var bodyStyle = nt_body.style;
 
 		/** @type {_AstConf_.Notification} */
@@ -156,10 +156,12 @@
 			var items = [], menuShow = false;
 			var hasNotis = 0 < e.data.length;
 
+			/** @type {_AstJson_.AJaxGetNotis} */
+			var data;
+
 			for( var n in e.data )
 			{
-				/** @type {_AstJson_.AJaxGetNotis} */
-				var data = e.data[n];
+				data = e.data[n];
 				// Create items
 				items[ items.length ] = new IKey(
 					data.mesg
@@ -173,7 +175,7 @@
 			Dand.glass( "nt_icon_settings", true )[0].addEventListener( "Click", popupSettings );
 
 			contextMenu = new ContextMenu(
-				Dand.id( "nt_open_menu" )
+				/** @type HTMLElement */ (Dand.id( "nt_open_menu" ))
 				, items
 				, "LMB"
 				, nt_body
@@ -220,8 +222,7 @@
 
 			for( n in e.data )
 			{
-				/** @type {_AstJson_.AJaxGetNotis} */
-				var data = e.data[n];
+				data = e.data[n];
 
 				var li = contextMenu.getItemByKey( "m_" + data.id ).stage;
 				li.appendChild(
diff --git a/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.js b/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.js
index f5580d6..edea029 100644
--- a/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.js
+++ b/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.js
@@ -12,9 +12,10 @@
 	/** @type {Astro.Blog.Config} */
 	var Conf                             = __import( "Astro.Blog.Config" );
 
-	/** @type {_AstConf_.CommentToggle} */
+	/** @type {Array<string|Object<string,*>>} */
 	var settings = Conf.get( "CommentToggle" );
 
+	/** @constructor */
 	var CommentToggle = function( id, processor, object )
 	{
 		ToggleButton.call( this, id, processor, object );
@@ -24,7 +25,7 @@
 
 	var init = function()
 	{
-		for( var i in settings )
+		for( var i = 0, l = settings.length; i < l; i ++ )
 		{
 			var button = settings[i];
 			new CommentToggle( button[0], button[1], button[2] );
diff --git a/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js b/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js
index 04e6147..f1ec0cd 100644
--- a/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js
+++ b/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js
@@ -7,13 +7,14 @@
 	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
 	/** @type {Astro.Bootstrap} */
 	var Bootstrap                        = __import( "Astro.Bootstrap" );
-	/** @type {Astro.Blog} */
+	/** @type {Astro.Blog.Config} */
 	var config                           = __import( "Astro.Blog.Config" );
 	/** @type {typeof System.utils.DataKey} */
 	var DataKey                          = __import( "System.utils.DataKey" );
 
 	var postData                         = __import( "System.Net.postData" );
 
+	/** @constructor */
 	var ToggleButton = function ( elem, processor, obj )
 	{
 		var stage = Dand.id( elem, true );
@@ -52,7 +53,7 @@
 	var init = function()
 	{
 		var toggles = config.get( "ToggleButtons" );
-		for( var i in toggles )
+		for( var i = 0, l = toggles.length; i < l; i ++ )
 		{
 			new ToggleButton( toggles[ i ][0], toggles[ i ][1], toggles[ i ][2] );
 		}
diff --git a/botanjs/src/Astro/Blog/Layout/MainFrame.js b/botanjs/src/Astro/Blog/Layout/MainFrame.js
index b2a3c72..bdb92f1 100644
--- a/botanjs/src/Astro/Blog/Layout/MainFrame.js
+++ b/botanjs/src/Astro/Blog/Layout/MainFrame.js
@@ -39,10 +39,8 @@
 	var getData = __import( "System.Net.getData" );
 	var mobile = __import( "System.Global.MOBILE" );
 
-	/** @const {number} */
-	var ELEMENT_NODE = Node.ELEMENT_NODE;
-	/** @const {number} */
-	var COMMENT_NODE = Node.COMMENT_NODE;
+	var ELEMENT_NODE = 1;
+	var COMMENT_NODE = 8;
 
 	var header;
 
diff --git a/botanjs/src/Astro/Mechanism/Parallax.js b/botanjs/src/Astro/Mechanism/Parallax.js
index 47a72e9..7ccf019 100644
--- a/botanjs/src/Astro/Mechanism/Parallax.js
+++ b/botanjs/src/Astro/Mechanism/Parallax.js
@@ -5,7 +5,7 @@
 	var Cycle                   = __import( "System.Cycle" );
 	/** @type {typeof Dandelion} */
 	var Dand                    = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMObject} */
+	/** @type {typeof Dandelion.IDOMObject} */
 	var IDOMObject              = __import( "Dandelion.IDOMObject" );
 
 	var Parallax = {
@@ -111,7 +111,7 @@
 			EnterFrame( animate );
 		};
 
-		IDOMObject( eDispatcher ).addEventListener( "Scroll", dispatchAnima );
+		new IDOMObject( eDispatcher ).addEventListener( "Scroll", dispatchAnima );
 	};
 
 	ns[ NS_EXPORT ]( EX_FUNC, "cssSlide", cssSlide );
diff --git a/botanjs/src/Astro/Penguin/Layout/MainFrame.js b/botanjs/src/Astro/Penguin/Layout/MainFrame.js
index 3d6815b..2742556 100644
--- a/botanjs/src/Astro/Penguin/Layout/MainFrame.js
+++ b/botanjs/src/Astro/Penguin/Layout/MainFrame.js
@@ -11,7 +11,7 @@
 	var DataKey                                       = __import( "System.utils.DataKey" );
 	/** @type {typeof Dandelion} */
 	var Dand                                          = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMObject} */
+	/** @type {typeof Dandelion.IDOMObject} */
 	var IDOMObject                                    = __import( "Dandelion.IDOMObject" );
 	/** @type {function(...?): Dandelion.IDOMElement} */
 	var IDOMElement                                   = __import( "Dandelion.IDOMElement" );
diff --git a/botanjs/src/Astro/Starfall/Layout/MainFrame.js b/botanjs/src/Astro/Starfall/Layout/MainFrame.js
index 9c331fa..66cf881 100644
--- a/botanjs/src/Astro/Starfall/Layout/MainFrame.js
+++ b/botanjs/src/Astro/Starfall/Layout/MainFrame.js
@@ -3,7 +3,7 @@
 
 	/** @type {typeof Dandelion} */
 	var Dand                                          = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMObject} */
+	/** @type {typeof Dandelion.IDOMObject} */
 	var IDOMObject                                   = __import( "Dandelion.IDOMObject" );
 	/** @type {Dandelion.Window} */
 	var wsupp                                         = __import( "Dandelion.Window" );
diff --git a/botanjs/src/Components/MessageBox.js b/botanjs/src/Components/MessageBox.js
index 1e533ee..8b425ef 100644
--- a/botanjs/src/Components/MessageBox.js
+++ b/botanjs/src/Components/MessageBox.js
@@ -5,9 +5,9 @@
 	var Trigger                             = __import( "System.Cycle.Trigger" );
 	/** @type {typeof Dandelion} */
 	var Dand                                = __import( "Dandelion" );
-	/** @type {Dandelion.IDOMObject} */
+	/** @type {typeof Dandelion.IDOMObject} */
 	var IDOMObject                          = __import( "Dandelion.IDOMObject" );
-	/** @type {System.utils.EventKey} */
+	/** @type {typeof System.utils.EventKey} */
 	var EventKey                            = __import( "System.utils.EventKey" );
 
 	// __import( "Dandelion.CSSAnimations" ); CSS_RESERVATION
@@ -15,7 +15,7 @@
 	var MessageBox = function ( title, content, yes, no, handler )
 	{
 		var _self = this;
-		var doc = IDOMObject( document );
+		var doc = new IDOMObject( document );
 
 		var _yes = Dand.wrap(
 			"span", null
diff --git a/botanjs/src/Components/Mouse/Clipboard.js b/botanjs/src/Components/Mouse/Clipboard.js
index 0637774..4a6d3b9 100644
--- a/botanjs/src/Components/Mouse/Clipboard.js
+++ b/botanjs/src/Components/Mouse/Clipboard.js
@@ -83,7 +83,7 @@
 		if( cCallback ) cCallback();
 
 		debug.Info( "[Clipboard] Text copied" );
-		document.onmousemove = null;
+		document["onmousemove"] = null;
 	};
 
 	var onMouseOver = function ( callback )
diff --git a/botanjs/src/Components/Mouse/ContextMenu.js b/botanjs/src/Components/Mouse/ContextMenu.js
index ca333a1..07417fb 100644
--- a/botanjs/src/Components/Mouse/ContextMenu.js
+++ b/botanjs/src/Components/Mouse/ContextMenu.js
@@ -8,7 +8,7 @@
 	var IKey                             = __import( "System.utils.IKey" );
 	/** @type {typeof System.utils.DataKey} */
 	var DataKey                          = __import( "System.utils.DataKey" );
-	/** @type {System.utils.EventKey} */
+	/** @type {typeof System.utils.EventKey} */
 	var EventKey                         = __import( "System.utils.EventKey" );
 	/** @type {System.Cycle} */
 	var Cycle                            = __import( "System.Cycle" );
@@ -34,7 +34,7 @@
 			document.body.appendChild( Dand.wrap( null, "contextMenus", "compx" ) )
 		)
 		, targetParent
-		, temp, i, j
+		, temp, j
 		, _items = []
 
 		, getFuncOverride = function(prop) { return utils.objGetProp( overrides, prop, "Function" ); }
@@ -44,7 +44,7 @@
 		{
 			element = Dand.bubbleUp( element, isMenuItem );
 
-			for (i in _items)
+			for (var i = 0, l = _items.length; i < l; i ++)
 			{
 				// match attributes
 				if(element == _items[i].stage)
@@ -61,8 +61,8 @@
 			if( e === document ) return false;
 			return IDOMElement(e).getDAttribute("menuItem");
 		}
-
-		, addMenuIdentifier = function(dataKey)
+		
+		, addMenuIdentifier = /** @param {System.utils.DataKey=} dataKey */ function(dataKey)
 		{
 			var d = new DataKey("menuItem", 1);
 			return dataKey ? [dataKey, d] : d;
@@ -88,7 +88,7 @@
 		, _chainHide = getFuncOverride("chainHide")
 		, _chainShow = getFuncOverride("chainShow")
 		, _hideMenu = getFuncOverride("hideMenu")
-		, hideMenu
+		// , hideMenu defined later
 
 		, _showMenu = getFuncOverride("showMenu")
 		, showMenu = function (event)
@@ -279,7 +279,7 @@
 			var itemroot = Dand.wrapna("ul", addMenuIdentifier())
 				, j = obj.items;
 
-			for (var i in j)
+			for (var i = 0, l = j.length; i < l; i ++)
 			{
 
 				if(!(j[i] instanceof IKey))
@@ -321,7 +321,7 @@
 			return stage;
 		};
 
-		for ( i in items )
+		for (var i = 0, l = items.length; i < l; i ++)
 		{
 			if ( ( j = items[i] ) )
 			{
@@ -403,7 +403,7 @@
 
 		this.getItemByKey = function (key)
 		{
-			for (i in _items)
+			for (var i = 0, l = _items.length; i < l; i ++)
 			{
 				// match attributes
 				if(IDOMElement(_items[i].stage).getDAttribute("id") == key)
diff --git a/botanjs/src/Components/Vim/Actions/VA_REC.js b/botanjs/src/Components/Vim/Actions/VA_REC.js
index 7685eb3..bc546cb 100644
--- a/botanjs/src/Components/Vim/Actions/VA_REC.js
+++ b/botanjs/src/Components/Vim/Actions/VA_REC.js
@@ -3,7 +3,7 @@
 
 	/** @type {System.Debug} */
 	var debug                                     = __import( "System.Debug" );
-	/** @type {System.utils.EventKey} */
+	/** @type {typeof System.utils.EventKey} */
 	var EventKey                                  = __import( "System.utils.EventKey" );
 	/** @type {Components.Vim.ActionEvent} */
 	var ActionEvent                               = __import( "Components.Vim.ActionEvent" );
diff --git a/botanjs/src/Components/Vim/VimArea.js b/botanjs/src/Components/Vim/VimArea.js
index 009bef9..5408f39 100644
--- a/botanjs/src/Components/Vim/VimArea.js
+++ b/botanjs/src/Components/Vim/VimArea.js
@@ -5,7 +5,7 @@
 	var IDOMElement                               = __import( "Dandelion.IDOMElement" );
 	/** @type {typeof System.utils.DataKey} */
 	var DataKey                                   = __import( "System.utils.DataKey" );
-	/** @type {System.utils.EventKey} */
+	/** @type {typeof System.utils.EventKey} */
 	var EventKey                                  = __import( "System.utils.EventKey" );
 	/** @type {System.Cycle} */
 	var Cycle                                     = __import( "System.Cycle" );
diff --git a/botanjs/src/Dandelion/CSSAnimations/MovieClip.js b/botanjs/src/Dandelion/CSSAnimations/MovieClip.js
index 28330a9..d42afc6 100644
--- a/botanjs/src/Dandelion/CSSAnimations/MovieClip.js
+++ b/botanjs/src/Dandelion/CSSAnimations/MovieClip.js
@@ -1,7 +1,7 @@
 (function(){
 	var ns = __namespace( "Dandelion.CSSAnimations" );
 
-	/** @type {System.utils.EventKey} */
+	/** @type {typeof System.utils.EventKey} */
 	var EventKey                         = __import( "System.utils.EventKey" );
 	/** @type {System.Cycle.Trigger} */
 	var Trigger                          = __import( "System.Cycle.Trigger" );
diff --git a/botanjs/src/Dandelion/IDOMElement.js b/botanjs/src/Dandelion/IDOMElement.js
index 57d37e3..e2e0062 100644
--- a/botanjs/src/Dandelion/IDOMElement.js
+++ b/botanjs/src/Dandelion/IDOMElement.js
@@ -9,28 +9,17 @@
 	var wrap = ns[ NS_INVOKE ]( "wrap" );
 	var IDOMObject = ns[ NS_INVOKE ]( "IDOMObject" );
 
-	/** @type {function(...?): Dandelion.IDOMElement} */
-	var IDOMElement;
+	/** @type {typeof Dandelion.IDOMElement} */
+	var _IDOMElement;
 
-	IDOMElement = function ( element, sw )
+	_IDOMElement = function ( element, sw )
 	{
-		if ( element instanceof IDOMElement ) return element;
+		if ( element instanceof _IDOMElement ) return element;
 
 		if ( sw )
 		{
 			IDOMObject.call( this, element, true );
 
-			this["getDAttribute"] = this.getDAttribute.bind( element );
-
-			this["loot"] = this.loot.bind( element );
-
-			this["foreach"] = this.foreach.bind(element);
-			this["reverseChild"] = this.reverseChild.bind( element );
-			this["clear"] = this.clear.bind( element );
-			this["first"] = this.first.bind( element );
-			this["last"] = this.last.bind( element );
-			this["contains"] = this.contains.bind( element );
-
 			// Org values
 			this["style"] = element.style;
 			this["hasAttribute"] = function ( key ) { this.hasAttribute( key ); }.bind( element );
@@ -42,11 +31,11 @@
 		}
 		else if ( element && element[ "nodeType" ] != undefined && element.nodeType == 1 )
 		{
-			return new IDOMElement( element, true );
+			return new _IDOMElement( element, true );
 		}
 		else if( element === undefined )
 		{
-			return new IDOMElement( wrap(), true );
+			return new _IDOMElement( wrap(), true );
 		}
 		else
 		{
@@ -55,9 +44,9 @@
 		return this;
 	};
 
-	__extends( IDOMElement, IDOMObject );
+	__extends( _IDOMElement, IDOMObject );
 
-	IDOMElement.prototype.setAttribute = function( k, v )
+	_IDOMElement.prototype.setAttribute = function( k, v )
 	{
 		if( k instanceof IKey )
 		{
@@ -65,7 +54,7 @@
 		}
 		else if( k instanceof Array )
 		{
-			for ( var i in k )
+			for ( var i = 0, l = k.length; i < l; i ++ )
 			{
 				if ( k[i] instanceof IKey )
 				{
@@ -79,31 +68,31 @@
 		}
 	};
 
-	IDOMElement.prototype.loot = function ( element )
+	_IDOMElement.prototype.loot = function ( element )
 	{
 		var _nodes = element.childNodes;
 		while(_nodes.length)
 		{
-			this.appendChild( element.removeChild( _nodes[0] ) );
+			this.element.appendChild( element.removeChild( _nodes[0] ) );
 		}
 	};
 
-	IDOMElement.prototype.clear = function ()
+	_IDOMElement.prototype.clear = function ()
 	{
-		var _nodes = this.childNodes;
+		var _nodes = this.element.childNodes;
 		while( _nodes.length )
-			this.removeChild( _nodes[0] );
+			this.element.removeChild( _nodes[0] );
 	};
 
-	IDOMElement.prototype.getDAttribute = function(name)
+	_IDOMElement.prototype.getDAttribute = function(name)
 	{
-		var i = this.getAttribute("data-" + name);
+		var i = this.element.getAttribute("data-" + name);
 		return i && decodeURIComponent(i);
 	};
 
-	IDOMElement.prototype.foreach = function(type, callback)
+	_IDOMElement.prototype.foreach = function(type, callback)
 	{
-		var c = Array.apply( [], this.childNodes ), l = c.length;
+		var c = Array.apply( [], this.element.childNodes ), l = c.length;
 		for(var i = 0; i < l; i ++)
 		{
 			if (c[i].nodeType == type)
@@ -126,9 +115,9 @@
 		return matchNone;
 	};
 
-	IDOMElement.prototype.first = function ( type, callback )
+	_IDOMElement.prototype.first = function ( type, callback )
 	{
-		var c = this.childNodes;
+		var c = this.element.childNodes;
 		var l = c.length;
 		var elem = null;
 		var tc = getMatch( type );
@@ -148,9 +137,9 @@
 		return elem;
 	};
 
-	IDOMElement.prototype.last = function ( type, callback )
+	_IDOMElement.prototype.last = function ( type, callback )
 	{
-		var c = this.childNodes;
+		var c = this.element.childNodes;
 		var l = c.length - 1;
 		var elem = null;
 		var tc = getMatch( type );
@@ -170,7 +159,7 @@
 		return elem;
 	};
 
-	IDOMElement.prototype.contains = function ( target )
+	_IDOMElement.prototype.contains = function ( target )
 	{
 		if( target.parentElement )
 		{
@@ -184,7 +173,7 @@
 	};
 
 	// attribute keys
-	IDOMElement.prototype.aKeys = function()
+	_IDOMElement.prototype.aKeys = function()
 	{
 		var ikeys = [];
 		var attrs = this.element.attributes;
@@ -196,14 +185,14 @@
 		return ikeys;
 	};
 
-	IDOMElement.prototype.reverseChild = function()
+	_IDOMElement.prototype.reverseChild = function()
 	{
-		var l = this.childNodes.length - 1;
+		var l = this.element.childNodes.length - 1;
 		while( -1 < -- l )
 		{
-			this.appendChild( this.childNodes[l] );
+			this.element.appendChild( this.element.childNodes[l] );
 		}
 	};
 
-	ns[ NS_EXPORT ]( EX_CLASS, "IDOMElement", IDOMElement );
+	ns[ NS_EXPORT ]( EX_CLASS, "IDOMElement", _IDOMElement );
 })();
diff --git a/botanjs/src/Dandelion/IDOMObject.js b/botanjs/src/Dandelion/IDOMObject.js
index e9c42a3..07adc91 100644
--- a/botanjs/src/Dandelion/IDOMObject.js
+++ b/botanjs/src/Dandelion/IDOMObject.js
@@ -1,8 +1,11 @@
 (function(){
 	var ns = __namespace( "Dandelion" );
-	/** @type {System.utils.EventKey} */
+	/** @type {typeof System.utils.EventKey} */
 	var EventKey = __import( "System.utils.EventKey" );
 
+	/** @constructor
+	 * @extends Array
+	 */
 	var EvtsArr = function () { Array.call( this ); };
 
 	/** @param {System.utils.EventKey} e */
@@ -11,7 +14,7 @@
 		var l = this.length;
 		for( var i = 0; i < l; i ++ )
 		{
-			/** @type {System.utils.EventKey} */
+			/** @type {typeof System.utils.EventKey} */
 			var evt = this[i];
 			if( evt.type == e.type && evt.handler == e.handler )
 			{
@@ -24,16 +27,14 @@
 
 	__extends( EvtsArr, Array );
 
+	/** @constructor */
 	var IDOMObject = function ( obj, sw )
 	{
 		if ( obj instanceof IDOMObject ) return obj;
 
 		if ( sw )
 		{
-			this["addEventListener"] = this.addEventListener.bind(obj);
-			this["addEventListeners"] = this.addEventListeners.bind(this);
-			this["hasListener"] = this.hasListener.bind(obj);
-			this["removeEventListener"] = this.removeEventListener.bind(obj);
+			this.obj = /** @type {EventTarget} */ (obj);
 		}
 		else if ( obj )
 		{
@@ -57,6 +58,10 @@
 		return null;
 	};
 
+	/**
+	 * @param {*} event
+	 * @param {function(Event): void=} handler
+	 */
 	IDOMObject.prototype.addEventListener = function (event, handler)
 	{
 		var e;
@@ -90,18 +95,18 @@
 			this._events[0] = e;
 		}
 
-		if( this.addEventListener )
+		if( this.obj.addEventListener )
 		{
-			this.addEventListener( e.type, e.handler, false );
+			this.obj.addEventListener( e.type, e.handler, false );
 		}
 		// IE
-		else if( this.attachEvent )
+		else if( this.obj.attachEvent )
 		{
-			this.attachEvent('on' + e.type, e.handler);
+			this.obj.attachEvent('on' + e.type, e.handler);
 		}
 		else
 		{
-			this['on' + e.type] = e.handler;
+			this.obj['on' + e.type] = e.handler;
 		}
 		return true;
 	};
@@ -110,7 +115,7 @@
 	{
 		if(evtKeys instanceof Array)
 		{
-			for (var i in evtKeys)
+			for(var i = 0, l = evtKeys.length; i < l; i ++)
 			{
 				this.addEventListener(evtKeys[i]);
 			}
@@ -129,18 +134,18 @@
 			delete this._events[ this._events.indexOf(e) ];
 		}
 
-		if( this.removeEventListener )
+		if( this.obj.removeEventListener )
 		{
-			this.removeEventListener( e.type, e.handler );
+			this.obj.removeEventListener( e.type, e.handler );
 		}
 		// IE
-		else if( this.detachEvent )
+		else if( this.obj.detachEvent )
 		{
-			this.detachEvent( 'on' + e.type, e.handler );
+			this.obj.detachEvent( 'on' + e.type, e.handler );
 		}
 		else
 		{
-			this['on' + e.type] = null;
+			this.obj['on' + e.type] = null;
 		}
 	};
 
diff --git a/botanjs/src/Dandelion/_this.js b/botanjs/src/Dandelion/_this.js
index a22f4c5..c367743 100644
--- a/botanjs/src/Dandelion/_this.js
+++ b/botanjs/src/Dandelion/_this.js
@@ -49,7 +49,7 @@
 		{
 			if ( iKeys instanceof Array )
 			{
-				for (var i in iKeys)
+				for (var i = 0, l = iKeys.length; i < l; i ++)
 				{
 					tmp.setAttribute( iKeys[i].keyName, iKeys[i].keyValue );
 				}
diff --git a/botanjs/src/System/Cycle/Trigger.js b/botanjs/src/System/Cycle/Trigger.js
index 1136d4d..ddb1652 100644
--- a/botanjs/src/System/Cycle/Trigger.js
+++ b/botanjs/src/System/Cycle/Trigger.js
@@ -12,28 +12,39 @@
 
 	var stepper = function( args )
 	{
-		var thisTime = new Date().getTime();
-		for ( var i in tList )
+		var thisTime = Date.now();
+		var w = 0;
+
+		for (var i = 0, l = tList.length; i < l; i++)
 		{
 			var f = tList[i];
-			if( f && thisTime > f[2] )
+
+			if (!f)
+				continue;
+
+			if (thisTime > f[2])
 			{
 				try
 				{
-					if( f[0]() )
+					if (f[0]())
 					{
 						f[1]();
-						delete tList[i];
+						continue;
 					}
-					else f[2] = thisTime + f[3];
+
+					f[2] = thisTime + f[3];
 				}
-				catch(e)
+				catch (e)
 				{
 					debug.Error(e);
-					delete tList[i];
+					continue;
 				}
 			}
+
+			tList[w++] = f;
 		}
+
+		tList.length = w;
 	};
 
 	var registerTrigger = function ( trigger, handler, peekInt )
diff --git a/botanjs/src/System/Cycle/_this.js b/botanjs/src/System/Cycle/_this.js
index 422da1e..4ae60e4 100644
--- a/botanjs/src/System/Cycle/_this.js
+++ b/botanjs/src/System/Cycle/_this.js
@@ -3,7 +3,7 @@
 
 	/** @type {System.Tick} */
 	var utils                   = __import( "System.utils" );
-	/** @type {System.Tick} */
+	/** @type {typeof System.Tick} */
 	var Tick                    = __import( "System.Tick" );
 	/** @type {System.Debug} */
 	var debug                   = __import( "System.Debug" );
@@ -15,36 +15,46 @@
 	var C_ONCE = 2;
 	var C_ID = 3;
 	var C_INTVL = 4;
+	var C_REMOVED = 5;
 
 	var stepper = function()
 	{
-		var thisTime = new Date().getTime();
-		for ( var i in tList )
+		var thisTime = Date.now();
+		var w = 0;
+
+		for (var i = 0, l = tList.length; i < l; i++)
 		{
 			var f = tList[i];
-			if( f && thisTime > f[ C_TIME ] )
+
+			if (!f || f[C_REMOVED])
+			{
+				continue;
+			}
+
+			if (thisTime > f[C_TIME])
 			{
 				try
 				{
-					f[ C_CALLBACK ]();
+					f[C_CALLBACK]();
 				}
-				catch(e)
+				catch (e)
 				{
 					debug.Error(e);
-					delete tList[i];
 					continue;
 				}
 
-				if( f[ C_ONCE ] )
-				{
-					delete tList[i];
-				}
-				else
+				if (f[C_REMOVED] || f[C_ONCE])
 				{
-					f[ C_TIME ] = thisTime + f[ C_INTVL ];
+					continue;
 				}
+
+				f[C_TIME] = thisTime + f[C_INTVL];
 			}
+
+			tList[w++] = f;
 		}
+
+		tList.length = w;
 	};
 
 	// Should bind "func" before register
@@ -60,7 +70,7 @@
 
 	var registerPermanentTicker = function ( id, func, interval )
 	{
-		for ( var i in tList )
+		for ( var i = 0, l = tList.length; i < l; i ++ )
 		{
 			if( tList[i][ C_ID ] == id )
 				return false;
@@ -80,10 +90,15 @@
 	var deletePermanentTicker = function ( id )
 	{
 		// 3: id
-		for ( var i in tList )
+		for (var i = 0, l = tList.length; i < l; i++)
 		{
-			if( tList[i][ C_ID ] == id )
-				delete tList[i];
+			var f = tList[i];
+
+			if (f && f[C_ID] === id)
+			{
+				f[C_REMOVED] = true;
+				return;
+			}
 		}
 	};
 
diff --git a/botanjs/src/System/Debug.js b/botanjs/src/System/Debug.js
index 4820769..3dc777a 100644
--- a/botanjs/src/System/Debug.js
+++ b/botanjs/src/System/Debug.js
@@ -14,7 +14,10 @@
 		Log.writeLine( e.name + "\n\t" + e.message + "\n\t" + e.stack, Log.ERROR );
 	};
 
-	var Info = function()
+	/**
+	 * @param {...*} _args
+	 */
+	var Info = function(_args)
 	{
 		if( st_info )
 		Log.writeLine( Array.prototype.join.call( arguments, " " ), Log.INFO );
diff --git a/botanjs/src/System/Log.js b/botanjs/src/System/Log.js
index f8af417..de03ac8 100644
--- a/botanjs/src/System/Log.js
+++ b/botanjs/src/System/Log.js
@@ -2,7 +2,7 @@
 	var ns = __namespace( "System.Log" );
 
 	/** @type {!Array<function(*, number): void>} */
-	var handler = [];
+	var handlers = [];
 
 	/** @const {number} */
 	var SYSTEM = 1;
@@ -24,9 +24,9 @@
 
 		var handled = false;
 
-		for (var i in handler)
+		for (var i = 0, l = handlers.length; i < l; i ++)
 		{
-			handler[i](mesg, type);
+			handlers[i](mesg, type);
 			handled = true;
 		}
 
@@ -45,7 +45,7 @@
 	var registerHandler = function(func)
 	{
 		var index = -1;
-		handler[index = handler.length] = func;
+		handlers[index = handlers.length] = func;
 
 		return index;
 	};
@@ -56,7 +56,7 @@
 	 */
 	var removeHandler = function(index)
 	{
-		delete handler[index];
+		delete handlers[index];
 	};
 
 	ns[ NS_EXPORT ]( EX_FUNC, "writeLine", writeLine );
diff --git a/botanjs/src/System/Net/_this.js b/botanjs/src/System/Net/_this.js
index 89b8386..1d6481b 100644
--- a/botanjs/src/System/Net/_this.js
+++ b/botanjs/src/System/Net/_this.js
@@ -2,7 +2,7 @@
 	var ns                              = __namespace( "System.Net" );
 	/** @type {System.Debug} */
 	var debug                           = __import( "System.Debug" );
-	/** @type {Dandelion.IDOMObject} */
+	/** @type {typeof Dandelion.IDOMObject} */
 	var IDOMObject                      = __import( "Dandelion.IDOMObject" );
 
 	// Handles all http transfers
diff --git a/botanjs/src/System/utils/DataKey.js b/botanjs/src/System/utils/DataKey.js
index 7b02b7b..1fa5114 100644
--- a/botanjs/src/System/utils/DataKey.js
+++ b/botanjs/src/System/utils/DataKey.js
@@ -2,10 +2,7 @@
 	var ns = __namespace( "System.utils" );
 	var IKey = ns[ NS_INVOKE ]( "IKey" );
 
-	/** @type {typeof System.utils.DataKey} */
-	var DataKey;
-
-	DataKey = function ( name, value )
+	var DataKey = function ( name, value )
 	{
 		IKey.call(
 			this
diff --git a/botanjs/src/System/utils/IKey.js b/botanjs/src/System/utils/IKey.js
index 7a3b641..dd60320 100644
--- a/botanjs/src/System/utils/IKey.js
+++ b/botanjs/src/System/utils/IKey.js
@@ -2,13 +2,13 @@
 	var ns = __namespace( "System.utils" );
 	var ClassName = "IKey";
 
-	////// Class IKey
-	var IKey = function (name, value)
+	/** @constructor */
+	var _IKey = function (name, value)
 	{
 		if ( name && ( typeof name != "string" ) ) return;
 		this.keyName = name;
 
-		if( value instanceof IKey )
+		if( value instanceof _IKey )
 		{
 			this.keyValue = value;
 		}
@@ -21,8 +21,8 @@
 		this["keyValue"] = this.keyValue;
 	};
 
-	IKey.prototype.keyName = "";
-	IKey.prototype.keyValue = "";
+	_IKey.prototype.keyName = "";
+	_IKey.prototype.keyValue = "";
 
 	var quickDef = function()
 	{
@@ -36,14 +36,14 @@
 		var keys = [];
 		for( var i = 0; i < l; i += 2 )
 		{
-			keys[ keys.length ] = new IKey( arguments[i], arguments[ i + 1 ] );
+			keys[ keys.length ] = new _IKey( arguments[i], arguments[ i + 1 ] );
 		}
 
 		return keys;
 	};
 
-	__static_method( IKey, "quickDef", quickDef );
+	__static_method( _IKey, "quickDef", quickDef );
 
-	ns[ NS_EXPORT ]( EX_CLASS, "IKey", IKey );
+	ns[ NS_EXPORT ]( EX_CLASS, "IKey", _IKey );
 
 })();
diff --git a/botanjs/src/externs/Components.MessageBox.js b/botanjs/src/externs/Components.MessageBox.js
index 545fa96..0cb693f 100644
--- a/botanjs/src/externs/Components.MessageBox.js
+++ b/botanjs/src/externs/Components.MessageBox.js
@@ -3,8 +3,8 @@
  * @param {string} title
  * @param {string|HTMLElement} content
  * @param {string} yes
- * @param {string} no
- * @param {function(boolean, ...?): void} handler
+ * @param {string=} no
+ * @param {function(boolean, ...?): void=} handler
  */
 Components.MessageBox = function(title, content, yes, no, handler) {};
 
diff --git a/botanjs/src/externs/Components.Mouse.Clipboard.js b/botanjs/src/externs/Components.Mouse.Clipboard.js
index 75ffc13..1d698d1 100644
--- a/botanjs/src/externs/Components.Mouse.Clipboard.js
+++ b/botanjs/src/externs/Components.Mouse.Clipboard.js
@@ -2,14 +2,14 @@
 Components.Mouse.Clipboard = function() {};
 
 /** @type {Function} */
-Components.Mouse.Clipboard.init;
+Components.Mouse.Clipboard.prototype.init;
 /** @type {Function} */
-Components.Mouse.Clipboard.setTextToCopy;
+Components.Mouse.Clipboard.prototype.setTextToCopy;
 /** @type {Function} */
-Components.Mouse.Clipboard.onMouseOver;
+Components.Mouse.Clipboard.prototype.onMouseOver;
 /** @type {Function} */
-Components.Mouse.Clipboard.onMouseOut;
+Components.Mouse.Clipboard.prototype.onMouseOut;
 /** @type {Function} */
-Components.Mouse.Clipboard._textCopied;
+Components.Mouse.Clipboard.prototype._textCopied;
 /** @type {Function} */
-Components.Mouse.Clipboard.capture;
+Components.Mouse.Clipboard.prototype.capture;
diff --git a/botanjs/src/externs/Components.Mouse.ContextMenu.js b/botanjs/src/externs/Components.Mouse.ContextMenu.js
index 5f04077..e956e90 100644
--- a/botanjs/src/externs/Components.Mouse.ContextMenu.js
+++ b/botanjs/src/externs/Components.Mouse.ContextMenu.js
@@ -1,2 +1,8 @@
-/** @constructor */
-Components.Mouse.ContextMenu = function() {};
+/** @constructor
+ * @param {HTMLElement} target
+ * @param {Array<*>} items
+ * @param {string} whichButton
+ * @param {HTMLElement} menuInsideTarget
+ * @param {Object<string,*>} overrides
+ */
+Components.Mouse.ContextMenu = function(target, items, whichButton, menuInsideTarget, overrides) {};
diff --git a/botanjs/src/externs/Dandelion.IDOMElement.js b/botanjs/src/externs/Dandelion.IDOMElement.js
index e92ca34..d5b30d6 100644
--- a/botanjs/src/externs/Dandelion.IDOMElement.js
+++ b/botanjs/src/externs/Dandelion.IDOMElement.js
@@ -1,5 +1,9 @@
-/** @constructor */
-Dandelion.IDOMElement = function (){}
+/** @constructor
+ * @extends {Dandelion.IDOMObject}
+ * @param {*} el
+ * @param {boolean} sw
+ */
+Dandelion.IDOMElement = function (el, sw){}
 
 /** @type {Function} */
 Dandelion.IDOMElement.prototype.getDAttribute = function() {};
diff --git a/botanjs/src/externs/Dandelion.IDOMObject.js b/botanjs/src/externs/Dandelion.IDOMObject.js
index d48a31c..e0b473c 100644
--- a/botanjs/src/externs/Dandelion.IDOMObject.js
+++ b/botanjs/src/externs/Dandelion.IDOMObject.js
@@ -1,11 +1,14 @@
-/** @constructor */
-Dandelion.IDOMObject = function (){}
+/** @constructor
+ * @param {*} obj
+ * @param {boolean=} sw
+ */
+Dandelion.IDOMObject = function (obj, sw){}
 
 /** @type {Function} */
-Dandelion.IDOMObject.addEventListener;
+Dandelion.IDOMObject.prototype.addEventListener;
 /** @type {Function} */
-Dandelion.IDOMObject.addEventListeners;
+Dandelion.IDOMObject.prototype.addEventListeners;
 /** @type {Function} */
-Dandelion.IDOMObject.hasListener;
+Dandelion.IDOMObject.prototype.hasListener;
 /** @type {Function} */
-Dandelion.IDOMObject.removeEventListener;
+Dandelion.IDOMObject.prototype.removeEventListener;
diff --git a/botanjs/src/externs/Dandelion.js b/botanjs/src/externs/Dandelion.js
index dfd0489..b16ffb7 100644
--- a/botanjs/src/externs/Dandelion.js
+++ b/botanjs/src/externs/Dandelion.js
@@ -19,8 +19,12 @@ Dandelion.wrapna = function() {};
 /** @type {function(string): !HTMLElement} */
 Dandelion.textNode = function() {};
 
-/** @type {function(string): !HTMLElement} */
-Dandelion.bubbleUp = function() {};
+/**
+ * @param {*} elem
+ * @param {function(*): boolean} cond 
+ * @return {?HTMLElement}
+ */
+Dandelion.bubbleUp = function(elem, cond) {};
 
 /** @type {function(HTMLElement, function(HTMLElement): boolean): void} */
 Dandelion.chainUpApply = function() {};
diff --git a/botanjs/src/externs/System.Global.js b/botanjs/src/externs/System.Global.js
index 98559db..76c05d9 100644
--- a/botanjs/src/externs/System.Global.js
+++ b/botanjs/src/externs/System.Global.js
@@ -1,14 +1,14 @@
 /** @constructor */
 System.Global = function (){}
 
-/** @type {Boolean} */
-System.Global.debug;
+/** @type {boolean} */
+System.Global.prototype.debug;
 
-/** @type {Boolean} */
-System.Global.IE;
+/** @type {boolean} */
+System.Global.prototype.IE;
 
-/** @type {Boolean} */
-System.Global.SECURE_HTTP;
+/** @type {boolean} */
+System.Global.prototype.SECURE_HTTP;
 
-/** @type {Boolean} */
-System.Global.MOBILE;
+/** @type {boolean} */
+System.Global.prototype.MOBILE;
diff --git a/botanjs/src/externs/System.utils.EventKey.js b/botanjs/src/externs/System.utils.EventKey.js
index 6ed8850..b8a185a 100644
--- a/botanjs/src/externs/System.utils.EventKey.js
+++ b/botanjs/src/externs/System.utils.EventKey.js
@@ -1,10 +1,12 @@
 /** @constructor
  *  @extends {System.utils.IKey}
+ *  @param {string} key
+ *  @param {function(Event): *} callback
  */
-System.utils.EventKey = function (){};
+System.utils.EventKey = function (key, callback){};
 
 /** @type {string} */
-System.utils.EventKey.type;
+System.utils.EventKey.prototype.type;
 
 /** @type {Function} */
-System.utils.EventKey.handler;
+System.utils.EventKey.prototype.handler;
diff --git a/botanjs/src/externs/System.utils.IKey.js b/botanjs/src/externs/System.utils.IKey.js
index 0630163..f7491ee 100644
--- a/botanjs/src/externs/System.utils.IKey.js
+++ b/botanjs/src/externs/System.utils.IKey.js
@@ -1,14 +1,14 @@
 /**
  * @constructor
  * @param {string} keyName
- * @param {string} keyValue
+ * @param {*} keyValue
  */
 System.utils.IKey = function(keyName, keyValue) {};
 
 /** @type {string} */
 System.utils.IKey.prototype.keyName;
 
-/** @type {string} */
+/** @type {string|System.utils.IKey} */
 System.utils.IKey.prototype.keyValue;
 
 /** @type {function(...?): !Array<!System.utils.IKey>} */
diff --git a/botanjs/src/externs/_AstConf_.Article.js b/botanjs/src/externs/_AstConf_.Article.js
index 5f8b14b..a3b59ec 100644
--- a/botanjs/src/externs/_AstConf_.Article.js
+++ b/botanjs/src/externs/_AstConf_.Article.js
@@ -1,4 +1,6 @@
-/** @type {Object} */
-_AstConf_.Article = {};
-/** @type {string} */
-_AstConf_.Article.id;
+/**
+ * @typedef {{
+ *   id: string,
+ * }}
+ */
+_AstConf_.Article;
diff --git a/botanjs/src/externs/_AstConf_.Comment.js b/botanjs/src/externs/_AstConf_.Comment.js
index f36e978..8d7621c 100644
--- a/botanjs/src/externs/_AstConf_.Comment.js
+++ b/botanjs/src/externs/_AstConf_.Comment.js
@@ -1,6 +1,7 @@
-/** @type {Object} */
-_AstConf_.Comment = {};
-/** @type {string} */
-_AstConf_.Comment.processor;
-/** @type {string} */
-_AstConf_.Comment.siteKey;
+/**
+ * @typedef {{
+ *   processor: string,
+ *   siteKey: string
+ * }}
+ */
+_AstConf_.Comment;
diff --git a/botanjs/src/externs/_AstConf_.Notification.js b/botanjs/src/externs/_AstConf_.Notification.js
index e9976c9..eac399e 100644
--- a/botanjs/src/externs/_AstConf_.Notification.js
+++ b/botanjs/src/externs/_AstConf_.Notification.js
@@ -1,4 +1,6 @@
-/** @type {Object} */
-_AstConf_.Notification = {};
-/** @type {string} */
-_AstConf_.Notification.processor;
+/**
+ * @typedef {{
+ *   processor: string
+ * }}
+ */
+_AstConf_.Notification;
diff --git a/botanjs/src/externs/_AstConf_.UserInfo.js b/botanjs/src/externs/_AstConf_.UserInfo.js
index feb7c06..c77979f 100644
--- a/botanjs/src/externs/_AstConf_.UserInfo.js
+++ b/botanjs/src/externs/_AstConf_.UserInfo.js
@@ -1,9 +1,8 @@
-/** @type {Object} */
-_AstConf_.UserInfo = {};
-
-/** @type {string} */
-_AstConf_.UserInfo.name;
-/** @type {string} */
-_AstConf_.UserInfo.website;
-/** @type {string} */
-_AstConf_.UserInfo.avatar;
+/**
+ * @typedef {{
+ *   name: string,
+ *   website: string,
+ *   avatar: string
+ * }}
+ */
+_AstConf_.UserInfo;
diff --git a/botanjs/src/externs/_AstJson_.AJaxGetNotis.js b/botanjs/src/externs/_AstJson_.AJaxGetNotis.js
index 6632740..010debc 100644
--- a/botanjs/src/externs/_AstJson_.AJaxGetNotis.js
+++ b/botanjs/src/externs/_AstJson_.AJaxGetNotis.js
@@ -1,8 +1,8 @@
-/** @type {Object} */
-_AstJson_.AJaxGetNotis = {};
-/** @type {string} */
-_AstJson_.AJaxGetNotis.mesg;
-/** @type {string} */
-_AstJson_.AJaxGetNotis.id;
-/** @type {string} */
-_AstJson_.AJaxGetNotis.date;
+/**
+ * @typedef {{
+ *   id: string,
+ *   mesg: string,
+ *   data: string
+ * }}
+ */
+_AstJson_.AJaxGetNotis;
diff --git a/resolver-go/cmd/api-server/main.go b/resolver-go/cmd/api-server/main.go
index 0808e10..a88855a 100644
--- a/resolver-go/cmd/api-server/main.go
+++ b/resolver-go/cmd/api-server/main.go
@@ -24,14 +24,16 @@ func main() {
 		log.Fatal(err)
 	}
 
+	options := compilecache.Options{
+		Workers:      2,
+		QueueSize:    128,
+		DisableCache: false,
+	}
+
 	h := handler{
-		r: r,
-		jsCache: compilecache.New(
-			closure.NewCompiler(), 2, 128,
-		),
-		cssCache: compilecache.New(
-			css.NewEsbuildCompiler(), 2, 128,
-		),
+		r:        r,
+		jsCache:  compilecache.New(closure.NewCompiler(), options),
+		cssCache: compilecache.New(css.NewEsbuildCompiler(), options),
 	}
 	http.HandleFunc("/", h.index)
 	log.Printf("botan-api listening on %s", *addr)
diff --git a/resolver-go/internal/compilecache/cache.go b/resolver-go/internal/compilecache/cache.go
index 85b8903..eb22c72 100644
--- a/resolver-go/internal/compilecache/cache.go
+++ b/resolver-go/internal/compilecache/cache.go
@@ -4,30 +4,37 @@ import (
 	"context"
 )
 
-func New(compiler Compiler, workers int, queueSize int) *Cache {
-	if workers <= 0 {
-		workers = 1
+func New(compiler Compiler, opt Options) *Cache {
+	if opt.Workers <= 0 {
+		opt.Workers = 1
 	}
-	if queueSize <= 0 {
-		queueSize = 128
+	if opt.QueueSize <= 0 {
+		opt.QueueSize = 128
 	}
 
 	c := &Cache{
-		compiler: compiler,
-		states:   make(map[string]State),
-		results:  make(map[string][]byte),
-		errors:   make(map[string]error),
-		jobs:     make(chan Job, queueSize),
+		compiler:     compiler,
+		disableCache: opt.DisableCache,
+		states:       make(map[string]State),
+		results:      make(map[string][]byte),
+		errors:       make(map[string]error),
+		jobs:         make(chan Job, opt.QueueSize),
 	}
 
-	for i := 0; i < workers; i++ {
-		go c.worker()
+	if !opt.DisableCache {
+		for i := 0; i < opt.Workers; i++ {
+			go c.worker()
+		}
 	}
 
 	return c
 }
 
 func (c *Cache) Get(hash string) (State, []byte, error) {
+	if c.disableCache {
+		return Missing, nil, nil
+	}
+
 	c.mu.Lock()
 	defer c.mu.Unlock()
 
@@ -47,6 +54,14 @@ func (c *Cache) Get(hash string) (State, []byte, error) {
 }
 
 func (c *Cache) Enqueue(job Job) State {
+	if c.disableCache {
+		// Pretend every request is new.
+		// Caller will see Pending forever unless something else reads result,
+		// so this only works if your caller does not rely on cache state.
+		go c.runUncached(job)
+		return Pending
+	}
+
 	c.mu.Lock()
 
 	state, ok := c.states[job.Hash]
@@ -58,12 +73,15 @@ func (c *Cache) Enqueue(job Job) State {
 	c.states[job.Hash] = Pending
 	c.mu.Unlock()
 
-	// Do not hold the lock while sending.
 	c.jobs <- job
 
 	return Pending
 }
 
+func (c *Cache) runUncached(job Job) {
+	_, _ = c.compiler.Compile(context.Background(), job)
+}
+
 func (c *Cache) worker() {
 	for job := range c.jobs {
 		c.run(job)
diff --git a/resolver-go/internal/compilecache/types.go b/resolver-go/internal/compilecache/types.go
index 1fa6ab2..afa0fe0 100644
--- a/resolver-go/internal/compilecache/types.go
+++ b/resolver-go/internal/compilecache/types.go
@@ -28,9 +28,17 @@ type Compiler interface {
 type Cache struct {
 	compiler Compiler
 
+	disableCache bool
+
 	mu      sync.Mutex
 	states  map[string]State
 	results map[string][]byte
 	errors  map[string]error
 	jobs    chan Job
 }
+
+type Options struct {
+	Workers      int
+	QueueSize    int
+	DisableCache bool
+}
diff --git a/resolver-go/internal/generated/buildinfo_gen.go b/resolver-go/internal/generated/buildinfo_gen.go
index 843309a..ae2e843 100644
--- a/resolver-go/internal/generated/buildinfo_gen.go
+++ b/resolver-go/internal/generated/buildinfo_gen.go
@@ -2,5 +2,5 @@ package generated
 
 const (
 	IMAGE_TAG   = "dev"
-	Timestamp   = "20260615.002015"
+	Timestamp   = "20260616.003102"
 )
diff --git a/resolver-go/internal/generated/classmap_gen.go b/resolver-go/internal/generated/classmap_gen.go
index d7bb1e2..c110eeb 100644
--- a/resolver-go/internal/generated/classmap_gen.go
+++ b/resolver-go/internal/generated/classmap_gen.go
@@ -8,18 +8,18 @@ var ClassMap = &classmap.Map{
 		"Astro":                                           {Name: "Astro", Kind: "class", Parent: "", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Blog":                                      {Name: "Astro.Blog", Kind: "class", Parent: "Astro", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Blog.AstroEdit":                            {Name: "Astro.Blog.AstroEdit", Kind: "class", Parent: "Astro.Blog", Imports: []string{"System.utils", "System.Cycle", "Dandelion", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.Blog.AstroEdit.Article", "Astro.Blog.AstroEdit.Draft", "Astro.Blog.AstroEdit.Flag", "Astro.Blog.AstroEdit.Visualizer", "Astro.Blog.AstroEdit.Uploader", "Astro.Blog.AstroEdit.SiteLibrary", "Components.Vim.VimArea", "Astro.Blog.AstroEdit.SmartInput", "Astro.Blog.SharedStyle"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/_this.js", JSHash: "92ff148e1e100a172d0583f22fff03fa277840ce", CSSHash: "2d37776089eeac5d81981f100c1c029c9249e4a9"}},
-		"Astro.Blog.AstroEdit.Article":                    {Name: "Astro.Blog.AstroEdit.Article", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Cycle", "System.utils", "System.utils.EventKey", "System.Debug", "Components.MessageBox", "Dandelion", "Dandelion.IDOMObject", "Dandelion.IDOMElement", "Astro.Blog.Config", "Astro.Blog.Components.Bubble", "System.Net.postData", "Astro.utils.Date.pretty", "Astro.Blog.AstroEdit.Visualizer", "Astro.Blog.AstroEdit.Flag", "Astro.Blog.AstroEdit.Draft"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Article.js", JSHash: "4f4bf860ca05aac1e1e6ef4565097202418af090", CSSHash: "1"}},
+		"Astro.Blog.AstroEdit.Article":                    {Name: "Astro.Blog.AstroEdit.Article", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Cycle", "System.utils", "System.utils.EventKey", "System.Debug", "Components.MessageBox", "Dandelion", "Dandelion.IDOMObject", "Dandelion.IDOMElement", "Astro.Blog.Config", "Astro.Blog.Components.Bubble", "System.Net.postData", "Astro.utils.Date.pretty", "Astro.Blog.AstroEdit.Visualizer", "Astro.Blog.AstroEdit.Flag", "Astro.Blog.AstroEdit.Draft"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Article.js", JSHash: "14b244e84b9e566421139e6b7dbdd25af7ef746b", CSSHash: "1"}},
 		"Astro.Blog.AstroEdit.Draft":                      {Name: "Astro.Blog.AstroEdit.Draft", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Cycle", "System.utils.IKey", "Dandelion", "System.Net.postData", "Astro.Blog.AstroEdit.Article"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Draft.js", JSHash: "3949dd12c90e92b3f792b86841fd72c2482a18d5", CSSHash: "1"}},
 		"Astro.Blog.AstroEdit.Flag":                       {Name: "Astro.Blog.AstroEdit.Flag", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Debug", "Components.MessageBox", "Dandelion", "Dandelion.IDOMElement", "Astro.Blog.Config", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Flag.js", JSHash: "31bdc37b8e995c6defd12c3a4dd743e27abdaa4d", CSSHash: "2af9897e11ed5f3c3a750ce5488c9d91e46c6c58"}},
-		"Astro.Blog.AstroEdit.SiteLibrary":                {Name: "Astro.Blog.AstroEdit.SiteLibrary", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Cycle", "System.Debug", "System.utils.Perf", "System.utils.IKey", "System.utils.DataKey", "System.utils.EventKey", "Components.MessageBox", "Components.Mouse.ContextMenu", "Dandelion", "Dandelion.IDOMObject", "Dandelion.IDOMElement", "Astro.Blog.Config", "System.Net.postData", "Astro.utils.Date.pretty"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SiteLibrary.js", JSHash: "09a9a043d155709d787fd75706ccd1bd05425d6e", CSSHash: "ef9290487558512fa1db9a4a20b91aa8421b4b26"}},
-		"Astro.Blog.AstroEdit.SmartInput":                 {Name: "Astro.Blog.AstroEdit.SmartInput", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "Dandelion.IDOMObject", "System.Cycle", "System.Debug", "System.Net.ClassLoader", "System.utils", "System.utils.DataKey", "System.utils.IKey", "Components.MessageBox", "Astro.Blog.Config"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SmartInput/_this.js", JSHash: "c4b42f193f02a00b79ef82e4fb0801202348ef1b", CSSHash: "4cd01e0c87e41c384afe9d9d5fb9d545bd51bd38"}},
+		"Astro.Blog.AstroEdit.SiteLibrary":                {Name: "Astro.Blog.AstroEdit.SiteLibrary", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Cycle", "System.Debug", "System.utils.Perf", "System.utils.IKey", "System.utils.DataKey", "System.utils.EventKey", "Components.MessageBox", "Components.Mouse.ContextMenu", "Dandelion", "Dandelion.IDOMObject", "Dandelion.IDOMElement", "Astro.Blog.Config", "System.Net.postData", "Astro.utils.Date.pretty"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SiteLibrary.js", JSHash: "2861f76ddc371f2852cbc160f8ff3a2f334431d0", CSSHash: "ef9290487558512fa1db9a4a20b91aa8421b4b26"}},
+		"Astro.Blog.AstroEdit.SmartInput":                 {Name: "Astro.Blog.AstroEdit.SmartInput", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "Dandelion.IDOMObject", "System.Cycle", "System.Debug", "System.Net.ClassLoader", "System.utils", "System.utils.DataKey", "System.utils.IKey", "Components.MessageBox", "Astro.Blog.Config"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SmartInput/_this.js", JSHash: "efb23c5f132c2db9c2a39eba05b1c401a809af02", CSSHash: "4cd01e0c87e41c384afe9d9d5fb9d545bd51bd38"}},
 		"Astro.Blog.AstroEdit.SmartInput.CandidateAction": {Name: "Astro.Blog.AstroEdit.SmartInput.CandidateAction", Kind: "class", Parent: "Astro.Blog.AstroEdit.SmartInput", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Blog.AstroEdit.SmartInput.CandidateAction.ArticleContent":   {Name: "Astro.Blog.AstroEdit.SmartInput.CandidateAction.ArticleContent", Kind: "class", Parent: "Astro.Blog.AstroEdit.SmartInput.CandidateAction", Imports: []string{"Astro.Blog.Config", "System.Net.getData", "Astro.utils.Date.pretty"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/ArticleReference.js", JSHash: "2e66502daabb251f22f83535899c3c282f32a2c0", CSSHash: "1"}},
 		"Astro.Blog.AstroEdit.SmartInput.CandidateAction.ArticleReference": {Name: "Astro.Blog.AstroEdit.SmartInput.CandidateAction.ArticleReference", Kind: "class", Parent: "Astro.Blog.AstroEdit.SmartInput.CandidateAction", Imports: []string{"Astro.Blog.Config", "System.Net.getData", "Astro.utils.Date.pretty"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/ArticleReference.js", JSHash: "2e66502daabb251f22f83535899c3c282f32a2c0", CSSHash: "1"}},
 		"Astro.Blog.AstroEdit.SmartInput.CandidateAction.Footnote":         {Name: "Astro.Blog.AstroEdit.SmartInput.CandidateAction.Footnote", Kind: "class", Parent: "Astro.Blog.AstroEdit.SmartInput.CandidateAction", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js", JSHash: "e308b387915865640c00c1c172c20482adaa1e46", CSSHash: "1"}},
 		"Astro.Blog.AstroEdit.SmartInput.CandidateAction.Heading":          {Name: "Astro.Blog.AstroEdit.SmartInput.CandidateAction.Heading", Kind: "class", Parent: "Astro.Blog.AstroEdit.SmartInput.CandidateAction", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/Heading.js", JSHash: "65e852a90c2dddce5931f45f841ec932e3b35e59", CSSHash: "1"}},
-		"Astro.Blog.AstroEdit.Uploader":                                    {Name: "Astro.Blog.AstroEdit.Uploader", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Cycle", "System.Debug", "System.utils.EventKey", "Components.Mouse.ContextMenu", "Components.MessageBox", "Dandelion", "Dandelion.IDOMObject", "Astro.Blog.Config", "System.utils.Perf", "System.Net.postFile"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Uploader.js", JSHash: "7205f45c289ec5a9b39cf06c3c42f31d1286cba9", CSSHash: "1"}},
-		"Astro.Blog.AstroEdit.Visualizer":                                  {Name: "Astro.Blog.AstroEdit.Visualizer", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "System.Debug", "System.utils", "System.utils.Perf", "System.utils.DataKey", "System.utils.EventKey", "System.utils.IKey", "System.Net.ClassLoader", "Components.MessageBox", "Components.Mouse.ContextMenu", "Astro.Blog.Config", "Astro.Blog.AstroEdit.Article"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/_this.js", JSHash: "6b3cece4cedda7322cfe385fe81f956bc59c01c6", CSSHash: "d43e2d27e52788d755c96f0db4ac500aa38ca2ee"}},
+		"Astro.Blog.AstroEdit.Uploader":                                    {Name: "Astro.Blog.AstroEdit.Uploader", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"System.Cycle", "System.Debug", "System.utils.EventKey", "Components.Mouse.ContextMenu", "Components.MessageBox", "Dandelion", "Dandelion.IDOMObject", "Astro.Blog.Config", "System.utils.Perf", "System.Net.postFile"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Uploader.js", JSHash: "1bc0287727307b409ce2954c2cd826e84cbf9fc7", CSSHash: "1"}},
+		"Astro.Blog.AstroEdit.Visualizer":                                  {Name: "Astro.Blog.AstroEdit.Visualizer", Kind: "class", Parent: "Astro.Blog.AstroEdit", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "System.Debug", "System.utils", "System.utils.Perf", "System.utils.DataKey", "System.utils.EventKey", "System.utils.IKey", "System.Net.ClassLoader", "Components.MessageBox", "Components.Mouse.ContextMenu", "Astro.Blog.Config", "Astro.Blog.AstroEdit.Article"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/_this.js", JSHash: "44b9203ae646cc103c3f97b2d0b5a2691d0b9a12", CSSHash: "d43e2d27e52788d755c96f0db4ac500aa38ca2ee"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet":                          {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/_this.js", JSHash: "38f5d8512eabf1ffb4249b1414efd2362af8dc5c", CSSHash: "1"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.AcquireLib":               {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.AcquireLib", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js", JSHash: "7af9a09fbf17d439fb810b3485609c4bbd816729", CSSHash: "e3860ca0ac69a86e948b811da1ebf6ba85fad57f"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleContent":           {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.ArticleContent", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.Config", "System.utils.Perf", "Astro.utils.Date", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js", JSHash: "83817c1b1e8c73a598e1c090d3dae8fb341bcebe", CSSHash: "e1cfcf676ebfc3a9ab80139ab2f7e63a2a1b286f"}},
@@ -32,7 +32,7 @@ var ClassMap = &classmap.Map{
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.Link":                     {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Link", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js", JSHash: "6e91d7044352f8ecc1d637c0047d1a55300120bf", CSSHash: "963bca1730a62b372e667b0a3f888aeef5504968"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.Meta":                     {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Meta", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js", JSHash: "4cb72d4d4b6124a6b2c8818d0a9d320b921ac9b2", CSSHash: "43e6cf20a8590ff0a820fed9ae53399edfb53ac4"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.RespH":                    {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.RespH", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js", JSHash: "fdd92845b8ab0c957c7d5b695743ddaa785ad75f", CSSHash: "60ee66e1f25468b808af731338d2f10c9e74d8fe"}},
-		"Astro.Blog.AstroEdit.Visualizer.Snippet.SiteFile":                 {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.SiteFile", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.Config", "System.utils.Perf", "System.Cycle.Trigger", "Astro.utils.Date", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "System.Net.getData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js", JSHash: "b98885eb6a931af19b27c5b59c2749b050af768b", CSSHash: "47a59715388ff5f8abe4eb4e7e6000bf92de77b2"}},
+		"Astro.Blog.AstroEdit.Visualizer.Snippet.SiteFile":                 {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.SiteFile", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.Config", "System.utils.Perf", "System.Cycle.Trigger", "Astro.utils.Date", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "System.Net.getData"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js", JSHash: "36f042d8e7efb1a1b2022245f94e6c1d2ec2b538", CSSHash: "47a59715388ff5f8abe4eb4e7e6000bf92de77b2"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.Sound":                    {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Sound", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js", JSHash: "2c5f32fe1ed50595503978dde85843ca48e55989", CSSHash: "1"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.Spoiler":                  {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Spoiler", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "Astro.Blog.AstroEdit.Visualizer.Snippet.compileProp", "Astro.Blog.AstroEdit.Visualizer.Snippet.escapeStr", "Astro.Blog.AstroEdit.Visualizer.Snippet.unescapeStr"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js", JSHash: "b3a483cc50f0e63c07ae64b52652f07159cdd877", CSSHash: "1"}},
 		"Astro.Blog.AstroEdit.Visualizer.Snippet.Video":                    {Name: "Astro.Blog.AstroEdit.Visualizer.Snippet.Video", Kind: "class", Parent: "Astro.Blog.AstroEdit.Visualizer.Snippet", Imports: []string{"System.utils.IKey", "System.utils.DataKey", "Dandelion.IDOMElement", "Dandelion", "Components.MessageBox", "System.Net.getData", "Dandelion.StaticRes.BLANK_IMG"}, Resource: classmap.Resource{Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js", JSHash: "d6f641a25d4350b98dad2bbeeec5dedfd1c6d532", CSSHash: "ff1d4ae903c244a6aeaf78b12c375f1f45dfb3c2"}},
@@ -42,9 +42,9 @@ var ClassMap = &classmap.Map{
 		"Astro.Blog.Components":                                            {Name: "Astro.Blog.Components", Kind: "class", Parent: "Astro.Blog", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Blog.Components.Album":                                      {Name: "Astro.Blog.Components.Album", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.utils.IKey", "System.utils.DataKey", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "System.utils.Perf", "Astro.Blog.Config", "Astro.Blog.Components.SiteFile", "Dandelion.StaticRes.BLANK_IMG"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Album.js", JSHash: "95069b6eec9f03c84969e4d3627b0730136fa300", CSSHash: "640c50241b457330678a21b940fdb4ea15a5249b"}},
 		"Astro.Blog.Components.ArticleContent":                             {Name: "Astro.Blog.Components.ArticleContent", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/ArticleContent.js", JSHash: "2e208eae51421946f874dd78cb05d974a689bdef", CSSHash: "34fc82974af2ae7040819889bc8e7a1bd2b48cd6"}},
-		"Astro.Blog.Components.Bubble":                                     {Name: "Astro.Blog.Components.Bubble", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.utils.EventKey", "Dandelion", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Bubble.js", JSHash: "24acdcacd373410bedd1dcfd968cb35242a522af", CSSHash: "2513518106d6d1c7a42e95c28becb3ddfe39e040"}},
+		"Astro.Blog.Components.Bubble":                                     {Name: "Astro.Blog.Components.Bubble", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.utils.EventKey", "Dandelion", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Bubble.js", JSHash: "6381542c359b9cb6561ba2bf70ec0e9e585467c8", CSSHash: "2513518106d6d1c7a42e95c28becb3ddfe39e040"}},
 		"Astro.Blog.Components.Calendar":                                   {Name: "Astro.Blog.Components.Calendar", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.Debug", "Dandelion", "Dandelion.IDOMElement", "Astro.utils.Date"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Calendar.js", JSHash: "122c4ec4388b9c959692c1953a3e11563ab02f28", CSSHash: "305a716f79149cbd609791989ec8b04401a7406f"}},
-		"Astro.Blog.Components.Comment":                                    {Name: "Astro.Blog.Components.Comment", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.Debug", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.EventKey", "System.utils.DataKey", "System.utils.Perf", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.Blog.Components.Bubble", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Comment.js", JSHash: "aa134d8376cdbee2ad17ef61a865ca69fe1d81fa", CSSHash: "7025d26f1d9579a36c128effc3e9a833e22787eb"}},
+		"Astro.Blog.Components.Comment":                                    {Name: "Astro.Blog.Components.Comment", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Cycle", "System.Debug", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.EventKey", "System.utils.DataKey", "System.utils.Perf", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.Blog.Components.Bubble", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Comment.js", JSHash: "3307dfcf2bef779dc7f2a920eb56142e1522347e", CSSHash: "7025d26f1d9579a36c128effc3e9a833e22787eb"}},
 		"Astro.Blog.Components.ControlPanel":                               {Name: "Astro.Blog.Components.ControlPanel", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/ControlPanel.js", JSHash: "e646278422597037693f16206b8c9dc00aa0f005", CSSHash: "812c94c181c62bd44f1871b5e44952e164df4401"}},
 		"Astro.Blog.Components.CrowdTag":                                   {Name: "Astro.Blog.Components.CrowdTag", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/CrowdTag.js", JSHash: "6720800b2b1f71dd1931ef74885460f898bb8c0e", CSSHash: "d2862681238786af37b1b5c91d266448a9b072b0"}},
 		"Astro.Blog.Components.Entry":                                      {Name: "Astro.Blog.Components.Entry", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -54,14 +54,14 @@ var ClassMap = &classmap.Map{
 		"Astro.Blog.Components.Entry.Tag":                                  {Name: "Astro.Blog.Components.Entry.Tag", Kind: "class", Parent: "Astro.Blog.Components.Entry", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/Entry/Tag.js", JSHash: "f64c75bf37dba830d6b335918c1ac5670f297396", CSSHash: "42851637f7fc9cece8ac9a666f0f74a75544eae0"}},
 		"Astro.Blog.Components.Entry.Tile":                                 {Name: "Astro.Blog.Components.Entry.Tile", Kind: "class", Parent: "Astro.Blog.Components.Entry", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/Entry/Tile.js", JSHash: "0603f59d19c81c5b7e1233fce579c79502427e7c", CSSHash: "2a925b7465760a02011eaeca6e0a353389578618"}},
 		"Astro.Blog.Components.Footnote":                                   {Name: "Astro.Blog.Components.Footnote", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.utils.Date"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Footnote.js", JSHash: "a48a57284210021bcf3aaf5bf9a4be9d5e1579ea", CSSHash: "44c3c00c1df7ec8faea902fa19840902429441b8"}},
-		"Astro.Blog.Components.Notification":                               {Name: "Astro.Blog.Components.Notification", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Debug", "System.Cycle", "Dandelion.IDOMElement", "System.utils.IKey", "System.utils.DataKey", "System.utils.EventKey", "Dandelion", "Components.MessageBox", "Components.Mouse.ContextMenu", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.utils.Date", "System.Net.postData", "Astro.utils.Date.smstamp"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Notification.js", JSHash: "1d0556c82ad620bb50eb3088f2db5cea9ad9fbf6", CSSHash: "2c278ade8d5d0b49a62c10a2d239c1f7dd5edc62"}},
+		"Astro.Blog.Components.Notification":                               {Name: "Astro.Blog.Components.Notification", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Debug", "System.Cycle", "Dandelion.IDOMElement", "System.utils.IKey", "System.utils.DataKey", "System.utils.EventKey", "Dandelion", "Components.MessageBox", "Components.Mouse.ContextMenu", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.utils.Date", "System.Net.postData", "Astro.utils.Date.smstamp"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Notification.js", JSHash: "4a26f91a016dd7f26afa258098b6dfb24fbe9ff1", CSSHash: "2c278ade8d5d0b49a62c10a2d239c1f7dd5edc62"}},
 		"Astro.Blog.Components.Section":                                    {Name: "Astro.Blog.Components.Section", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/Section.js", JSHash: "d814528ea8a20fc06197b56896d1c63ffbf40fcd", CSSHash: "c48e35eafe87b99383b8b3a397eac5d569f68f66"}},
 		"Astro.Blog.Components.SiteFile":                                   {Name: "Astro.Blog.Components.SiteFile", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.Debug", "System.utils.IKey", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "System.Net.getData", "Astro.utils.Date.smstamp"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/SiteFile.js", JSHash: "769e2c50f34dcf39ead9e32044e0e6f2193f1b03", CSSHash: "94f07554cb4ad0b81529be89f908f039abc9c2cb"}},
 		"Astro.Blog.Components.SocialButtons":                              {Name: "Astro.Blog.Components.SocialButtons", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"Dandelion", "System.utils.IKey", "Astro.Bootstrap"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/SocialButtons.js", JSHash: "ccdc9ce8fcdde608731b9e23ae77c6f2c61e512b", CSSHash: "53c508505fa9c8a744b4d276d168b535f1e7d3ac"}},
 		"Astro.Blog.Components.Spoiler":                                    {Name: "Astro.Blog.Components.Spoiler", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Spoiler.js", JSHash: "10965b8eefa863dea321d3d77762971402c5f8c5", CSSHash: "600586c6160a51264169ae1a475082afefd45368"}},
 		"Astro.Blog.Components.TagControl":                                 {Name: "Astro.Blog.Components.TagControl", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Components/TagControl.js", JSHash: "fc34df160451001d1a04242f91b937b5fdd503f1", CSSHash: "714529a31e4b9d3a4987163fb40ab53607ff4c43"}},
-		"Astro.Blog.Components.ToggleButton":                               {Name: "Astro.Blog.Components.ToggleButton", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "System.utils.DataKey", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/ToggleButton/_this.js", JSHash: "9e49da31e734f7c4b25ae69e2eaeeeb29905a09e", CSSHash: "ec9b9f22d38415aa2ff3750ac09e3b8e7494ec61"}},
-		"Astro.Blog.Components.ToggleButton.CommentToggle":                 {Name: "Astro.Blog.Components.ToggleButton.CommentToggle", Kind: "class", Parent: "Astro.Blog.Components.ToggleButton", Imports: []string{"Astro.Blog.Components.ToggleButton", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/ToggleButton/CommentToggle.js", JSHash: "cf26a6c93343ac37d9534ca805aa2d27debe9625", CSSHash: "88b2d440e6056ebd62138e20c9b1c9da97c6fb3f"}},
+		"Astro.Blog.Components.ToggleButton":                               {Name: "Astro.Blog.Components.ToggleButton", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "System.utils.DataKey", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/ToggleButton/_this.js", JSHash: "a8ac1e631748262d7efd7b5b371262739a0ebce6", CSSHash: "ec9b9f22d38415aa2ff3750ac09e3b8e7494ec61"}},
+		"Astro.Blog.Components.ToggleButton.CommentToggle":                 {Name: "Astro.Blog.Components.ToggleButton.CommentToggle", Kind: "class", Parent: "Astro.Blog.Components.ToggleButton", Imports: []string{"Astro.Blog.Components.ToggleButton", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/ToggleButton/CommentToggle.js", JSHash: "2b4abf35627ea2419812dea825c9529f002b7293", CSSHash: "88b2d440e6056ebd62138e20c9b1c9da97c6fb3f"}},
 		"Astro.Blog.Components.ToggleButton.DeleteArticle":                 {Name: "Astro.Blog.Components.ToggleButton.DeleteArticle", Kind: "class", Parent: "Astro.Blog.Components.ToggleButton", Imports: []string{"Components.MessageBox", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "System.Net.postData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/ToggleButton/DeleteArticle.js", JSHash: "58a2e9ec9434798a1d0db892f0c3275e28d6733c", CSSHash: "37d28e8059d0f48ae1c49f9c5fa106275505fa71"}},
 		"Astro.Blog.Components.Video":                                      {Name: "Astro.Blog.Components.Video", Kind: "class", Parent: "Astro.Blog.Components", Imports: []string{"System.utils.IKey", "Dandelion", "Dandelion.IDOMElement", "Astro.Bootstrap", "Astro.Blog.Config", "System.Net.getData"}, Resource: classmap.Resource{Src: "Astro/Blog/Components/Video.js", JSHash: "a81c3528ac9d78cf1e443c4310faad23c355a654", CSSHash: "5d7572084bf0b426e76a938c61fa380d5b582ef9"}},
 		"Astro.Blog.Config":                                                {Name: "Astro.Blog.Config", Kind: "class", Parent: "Astro.Blog", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Config.js", JSHash: "72dd92f2c5087d6ddecc1507f6448ca552ee5385", CSSHash: "1"}},
@@ -73,7 +73,7 @@ var ClassMap = &classmap.Map{
 		"Astro.Blog.Layout.Article.Tag":                                    {Name: "Astro.Blog.Layout.Article.Tag", Kind: "class", Parent: "Astro.Blog.Layout.Article", Imports: []string{"Astro.Blog.Components.Entry.List"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/Article/Tag.js", JSHash: "316e254b71f4f1e7f565dd2364d4b244942e1bd0", CSSHash: "1"}},
 		"Astro.Blog.Layout.ErrorPages":                                     {Name: "Astro.Blog.Layout.ErrorPages", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string{"System.Cycle", "Dandelion", "Astro.Bootstrap", "Astro.Blog.Config", "Astro.Mechanism.CharacterCloud", "Astro.Mechanism.Parallax"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/ErrorPages.js", JSHash: "1ddc77aa611e2fc85b734be104a2702820afe4f7", CSSHash: "10c6fbfe1a05ede1204926d26eb9fb12f97802fa"}},
 		"Astro.Blog.Layout.Login":                                          {Name: "Astro.Blog.Layout.Login", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string{"System.Cycle", "System.utils.IKey", "Components.MessageBox", "Dandelion", "Astro.Bootstrap", "Astro.Blog.Config", "Dandelion.CSSReset", "Dandelion.CSSAnimations"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/Login.js", JSHash: "452180253f3b751eeb249ddb9a9cf17dd0f75354", CSSHash: "66b8ec358f3d29b121927d0f72360e33ad90d2ad"}},
-		"Astro.Blog.Layout.MainFrame":                                      {Name: "Astro.Blog.Layout.MainFrame", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string{"System.Cycle", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.DataKey", "System.utils.Perf", "Dandelion", "Dandelion.IDOMElement", "Dandelion.Window", "System.Debug", "Astro.Bootstrap", "Astro.Mechanism.CharacterCloud", "Astro.Mechanism.Parallax", "Astro.Blog.Components.Bubble", "System.Net.postData", "Dandelion.CSSReset", "Dandelion.CSSAnimations", "Astro.Blog.SharedStyle", "Astro.Starfall.Element.Layer", "System.Net.getData", "System.Global.MOBILE"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/MainFrame.js", JSHash: "b6b9e579948aab7ddbf2a2f57291c671b97b21ad", CSSHash: "1d8c7b3b80091a4f80f2b4f3cbfebf7a424a9dbb"}},
+		"Astro.Blog.Layout.MainFrame":                                      {Name: "Astro.Blog.Layout.MainFrame", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string{"System.Cycle", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.DataKey", "System.utils.Perf", "Dandelion", "Dandelion.IDOMElement", "Dandelion.Window", "System.Debug", "Astro.Bootstrap", "Astro.Mechanism.CharacterCloud", "Astro.Mechanism.Parallax", "Astro.Blog.Components.Bubble", "System.Net.postData", "Dandelion.CSSReset", "Dandelion.CSSAnimations", "Astro.Blog.SharedStyle", "Astro.Starfall.Element.Layer", "System.Net.getData", "System.Global.MOBILE"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/MainFrame.js", JSHash: "f659d773c3dff7932d0bc1da111d2baee4b844f4", CSSHash: "1d8c7b3b80091a4f80f2b4f3cbfebf7a424a9dbb"}},
 		"Astro.Blog.Layout.Subs":                                           {Name: "Astro.Blog.Layout.Subs", Kind: "class", Parent: "Astro.Blog.Layout", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/Layout/Subs/_this.js", JSHash: "7f7ff173d8b86eccc023d17c22e55cf259925558", CSSHash: "1"}},
 		"Astro.Blog.Layout.Subs.Manage":                                    {Name: "Astro.Blog.Layout.Subs.Manage", Kind: "class", Parent: "Astro.Blog.Layout.Subs", Imports: []string{"Components.MessageBox", "Dandelion", "Astro.Bootstrap", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Astro/Blog/Layout/Subs/Manage.js", JSHash: "45d0286adfcfbe1620e2128d3a859153e0f1b0b7", CSSHash: "eb6d28864a3b2faf9ff90912da63db158bed626f"}},
 		"Astro.Blog.SharedStyle":                                           {Name: "Astro.Blog.SharedStyle", Kind: "class", Parent: "Astro.Blog", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Blog/SharedStyle.js", JSHash: "e946130da823a5b2d089b5b416c13b628eb1637d", CSSHash: "f8ff15304a5e38e199b713bac48e282d2bf10f45"}},
@@ -86,13 +86,13 @@ var ClassMap = &classmap.Map{
 		"Astro.Mechanism":                                                  {Name: "Astro.Mechanism", Kind: "class", Parent: "Astro", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Mechanism.CharacterCloud":                                   {Name: "Astro.Mechanism.CharacterCloud", Kind: "class", Parent: "Astro.Mechanism", Imports: []string{"Dandelion"}, Resource: classmap.Resource{Src: "Astro/Mechanism/CharacterCloud.js", JSHash: "a15cc6faa3dbeca99f4e39d90de06b0f562f6c1c", CSSHash: "7cae98eaf8e3d5d1cd7fadaa6806ce3d65d74d92"}},
 		"Astro.Mechanism.CharacterCloud.create":                            {Name: "Astro.Mechanism.CharacterCloud.create", Kind: "method", Parent: "Astro.Mechanism.CharacterCloud", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"Astro.Mechanism.Parallax":                                         {Name: "Astro.Mechanism.Parallax", Kind: "class", Parent: "Astro.Mechanism", Imports: []string{"System.Cycle", "Dandelion", "Dandelion.IDOMObject"}, Resource: classmap.Resource{Src: "Astro/Mechanism/Parallax.js", JSHash: "e159af40e2d923c6545ab0d558bd46b2636b7410", CSSHash: "f8c02f4ec1be082e02c51f0b5ea39cbdd5b0e49f"}},
+		"Astro.Mechanism.Parallax":                                         {Name: "Astro.Mechanism.Parallax", Kind: "class", Parent: "Astro.Mechanism", Imports: []string{"System.Cycle", "Dandelion", "Dandelion.IDOMObject"}, Resource: classmap.Resource{Src: "Astro/Mechanism/Parallax.js", JSHash: "3af29e31c19b025f22d1ceba68bbc57dc4a0bfe7", CSSHash: "f8c02f4ec1be082e02c51f0b5ea39cbdd5b0e49f"}},
 		"Astro.Mechanism.Parallax.attach":                                  {Name: "Astro.Mechanism.Parallax.attach", Kind: "method", Parent: "Astro.Mechanism.Parallax", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Mechanism.Parallax.cssSlide":                                {Name: "Astro.Mechanism.Parallax.cssSlide", Kind: "method", Parent: "Astro.Mechanism.Parallax", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Mechanism.Parallax.verticalSlideTo":                         {Name: "Astro.Mechanism.Parallax.verticalSlideTo", Kind: "method", Parent: "Astro.Mechanism.Parallax", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Penguin":                                                    {Name: "Astro.Penguin", Kind: "class", Parent: "Astro", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Astro.Penguin.Layout":                                             {Name: "Astro.Penguin.Layout", Kind: "class", Parent: "Astro.Penguin", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"Astro.Penguin.Layout.MainFrame":                                   {Name: "Astro.Penguin.Layout.MainFrame", Kind: "class", Parent: "Astro.Penguin.Layout", Imports: []string{"System.Cycle", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.DataKey", "Dandelion", "Dandelion.IDOMObject", "Dandelion.IDOMElement", "Dandelion.Window", "System.Debug", "Astro.Bootstrap", "Dandelion.CSSReset", "Dandelion.CSSAnimations", "Astro.Blog.SharedStyle", "Astro.Starfall.Element.Layer"}, Resource: classmap.Resource{Src: "Astro/Penguin/Layout/MainFrame.js", JSHash: "d9ab3001ab6a614879f98441be20e6f6798b1472", CSSHash: "e87b69ab9e725e4801065850790670d76f0a6d18"}},
+		"Astro.Penguin.Layout.MainFrame":                                   {Name: "Astro.Penguin.Layout.MainFrame", Kind: "class", Parent: "Astro.Penguin.Layout", Imports: []string{"System.Cycle", "System.Cycle.Trigger", "System.utils.IKey", "System.utils.DataKey", "Dandelion", "Dandelion.IDOMObject", "Dandelion.IDOMElement", "Dandelion.Window", "System.Debug", "Astro.Bootstrap", "Dandelion.CSSReset", "Dandelion.CSSAnimations", "Astro.Blog.SharedStyle", "Astro.Starfall.Element.Layer"}, Resource: classmap.Resource{Src: "Astro/Penguin/Layout/MainFrame.js", JSHash: "d7765bab03e7484633d8274d67ddd88869322989", CSSHash: "e87b69ab9e725e4801065850790670d76f0a6d18"}},
 		"Astro.Penguin.Page":                                               {Name: "Astro.Penguin.Page", Kind: "class", Parent: "Astro.Penguin", Imports: []string{"Astro.Penguin.Layout.MainFrame"}, Resource: classmap.Resource{Src: "Astro/Penguin/Page/_this.js", JSHash: "66e415e546eb6ca0b84cedfd4d3b6de67c2164f3", CSSHash: "e8afcaa8c75b241cd933cfc99a648adc42f815d7"}},
 		"Astro.Penguin.Page.Docs":                                          {Name: "Astro.Penguin.Page.Docs", Kind: "class", Parent: "Astro.Penguin.Page", Imports: []string{"Astro.Penguin.Layout.MainFrame"}, Resource: classmap.Resource{Src: "Astro/Penguin/Page/Docs.js", JSHash: "02217e7fa4ebffe90b32002ef07da500ac02bf52", CSSHash: "5230a026499b9ab0f4f530f4975a9df89170c83b"}},
 		"Astro.Starfall":                                                   {Name: "Astro.Starfall", Kind: "class", Parent: "Astro", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -101,7 +101,7 @@ var ClassMap = &classmap.Map{
 		"Astro.Starfall.Element.Header":                                    {Name: "Astro.Starfall.Element.Header", Kind: "class", Parent: "Astro.Starfall.Element", Imports: []string{"Astro.Bootstrap"}, Resource: classmap.Resource{Src: "Astro/Starfall/Element/Header.js", JSHash: "467470a9c5cb5630ae8ec07b29a4496c6a401e0b", CSSHash: "c6bd96ee7e0993a2db1fde4885e5f44cff901878"}},
 		"Astro.Starfall.Element.Layer":                                     {Name: "Astro.Starfall.Element.Layer", Kind: "class", Parent: "Astro.Starfall.Element", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Starfall/Element/Layer.js", JSHash: "cc3c87e83813ee68a9ccc3a12c08992c3027a721", CSSHash: "c482b4089b04665a5d7c5527f8008622375885a2"}},
 		"Astro.Starfall.Layout":                                            {Name: "Astro.Starfall.Layout", Kind: "class", Parent: "Astro.Starfall", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"Astro.Starfall.Layout.MainFrame":                                  {Name: "Astro.Starfall.Layout.MainFrame", Kind: "class", Parent: "Astro.Starfall.Layout", Imports: []string{"Dandelion", "Dandelion.IDOMObject", "Dandelion.Window", "System.Debug", "Astro.Bootstrap", "Astro.Starfall.Element.Layer"}, Resource: classmap.Resource{Src: "Astro/Starfall/Layout/MainFrame.js", JSHash: "a04ddd076cb30e058a654503c14878d9fc6694a4", CSSHash: "9654c2c26915302a661f5d3fb4f19833ffc6c11d"}},
+		"Astro.Starfall.Layout.MainFrame":                                  {Name: "Astro.Starfall.Layout.MainFrame", Kind: "class", Parent: "Astro.Starfall.Layout", Imports: []string{"Dandelion", "Dandelion.IDOMObject", "Dandelion.Window", "System.Debug", "Astro.Bootstrap", "Astro.Starfall.Element.Layer"}, Resource: classmap.Resource{Src: "Astro/Starfall/Layout/MainFrame.js", JSHash: "0d6b7dfa9a64a02f5af10776cee2b546a90afdfb", CSSHash: "9654c2c26915302a661f5d3fb4f19833ffc6c11d"}},
 		"Astro.Starfall.Layout.PureColumn":                                 {Name: "Astro.Starfall.Layout.PureColumn", Kind: "class", Parent: "Astro.Starfall.Layout", Imports: []string{"Astro.Bootstrap", "System.Cycle", "Astro.Blog.Config", "System.Debug"}, Resource: classmap.Resource{Src: "Astro/Starfall/Layout/PureColumn.js", JSHash: "5164bbe0019969bf85c649a6991ccd3b8c780b3a", CSSHash: "d1920d1be9f9d9bbfdfdbb16565454c58ed6c78c"}},
 		"Astro.Starfall.Layout.TwoColumn":                                  {Name: "Astro.Starfall.Layout.TwoColumn", Kind: "class", Parent: "Astro.Starfall.Layout", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/Starfall/Layout/TwoColumn.js", JSHash: "e55bedfac6ff774f7bbf46b69b1b537b28f8e993", CSSHash: "cf05ec131d63e657f0eba0183c8055d0101bcf08"}},
 		"Astro.utils":                                                      {Name: "Astro.utils", Kind: "class", Parent: "Astro", Imports: []string(nil), Resource: classmap.Resource{Src: "Astro/utils/_this.js", JSHash: "21e99449ec5c1a4b6d25164db9434132aeea5ad3", CSSHash: "1"}},
@@ -119,15 +119,15 @@ var ClassMap = &classmap.Map{
 		"Components":                                                       {Name: "Components", Kind: "class", Parent: "", Imports: []string(nil), Resource: classmap.Resource{Src: "Components/_this.js", JSHash: "f4cb7babe62a5cdae34d2c4ebcb55071e81da4ff", CSSHash: "1"}},
 		"Components.Console":                                               {Name: "Components.Console", Kind: "class", Parent: "Components", Imports: []string{"System.utils.Perf", "System.Cycle", "System.Cycle.TICK", "System.Global", "System.Log", "System.Debug", "Dandelion", "Dandelion.IDOMElement", "Components.DockPanel"}, Resource: classmap.Resource{Src: "Components/Console.js", JSHash: "1c19da4a04f458a1ce095001397fa9bcdaa91348", CSSHash: "452f4a36e8fd7321c7d177a311047c8b71165e48"}},
 		"Components.DockPanel":                                             {Name: "Components.DockPanel", Kind: "class", Parent: "Components", Imports: []string{"System.Cycle", "System.utils.DataKey", "Dandelion", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Components/DockPanel.js", JSHash: "dffa9d89d72075c045f7653831406cabece8d8e3", CSSHash: "af0d91982c764ee62c46b243be68c08f2808e82b"}},
-		"Components.MessageBox":                                            {Name: "Components.MessageBox", Kind: "class", Parent: "Components", Imports: []string{"System.Cycle.Trigger", "Dandelion", "Dandelion.IDOMObject", "System.utils.EventKey", "Dandelion.CSSAnimations"}, Resource: classmap.Resource{Src: "Components/MessageBox.js", JSHash: "63c831ec6493912492780009a76997d7bc59cad4", CSSHash: "5571fa4c2e1324dcf1f2e18df8b6105cf37dfc53"}},
+		"Components.MessageBox":                                            {Name: "Components.MessageBox", Kind: "class", Parent: "Components", Imports: []string{"System.Cycle.Trigger", "Dandelion", "Dandelion.IDOMObject", "System.utils.EventKey", "Dandelion.CSSAnimations"}, Resource: classmap.Resource{Src: "Components/MessageBox.js", JSHash: "5c8b63044f81385919e8b8ca440ec6a35fe2cc46", CSSHash: "5571fa4c2e1324dcf1f2e18df8b6105cf37dfc53"}},
 		"Components.Mouse":                                                 {Name: "Components.Mouse", Kind: "class", Parent: "Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Components/Mouse/_this.js", JSHash: "9ec5ced53a20ea1d057e2142668e27e5df7d49f6", CSSHash: "1"}},
-		"Components.Mouse.Clipboard":                                       {Name: "Components.Mouse.Clipboard", Kind: "class", Parent: "Components.Mouse", Imports: []string{"System.Global", "System.Debug", "System.utils.Perf", "System.Cycle", "Dandelion.IDOMElement", "Dandelion"}, Resource: classmap.Resource{Src: "Components/Mouse/Clipboard.js", JSHash: "32de0da9ec7e9a4c4e28267a5f60bb815b5af92d", CSSHash: "1b7f85206ce1560ed23d3b270e093022e25d2e61"}},
+		"Components.Mouse.Clipboard":                                       {Name: "Components.Mouse.Clipboard", Kind: "class", Parent: "Components.Mouse", Imports: []string{"System.Global", "System.Debug", "System.utils.Perf", "System.Cycle", "Dandelion.IDOMElement", "Dandelion"}, Resource: classmap.Resource{Src: "Components/Mouse/Clipboard.js", JSHash: "c33d6eeb916ab35e3511b2113af8ccd0103cf8fc", CSSHash: "1b7f85206ce1560ed23d3b270e093022e25d2e61"}},
 		"Components.Mouse.Clipboard.capture":                               {Name: "Components.Mouse.Clipboard.capture", Kind: "method", Parent: "Components.Mouse.Clipboard", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Components.Mouse.Clipboard.init":                                  {Name: "Components.Mouse.Clipboard.init", Kind: "method", Parent: "Components.Mouse.Clipboard", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Components.Mouse.Clipboard.onMouseOut":                            {Name: "Components.Mouse.Clipboard.onMouseOut", Kind: "prop", Parent: "Components.Mouse.Clipboard", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Components.Mouse.Clipboard.onMouseOver":                           {Name: "Components.Mouse.Clipboard.onMouseOver", Kind: "prop", Parent: "Components.Mouse.Clipboard", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Components.Mouse.Clipboard.setTextToCopy":                         {Name: "Components.Mouse.Clipboard.setTextToCopy", Kind: "method", Parent: "Components.Mouse.Clipboard", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"Components.Mouse.ContextMenu":                                     {Name: "Components.Mouse.ContextMenu", Kind: "class", Parent: "Components.Mouse", Imports: []string{"System.utils", "System.utils.IKey", "System.utils.DataKey", "System.utils.EventKey", "System.Cycle", "Dandelion", "Dandelion.IDOMElement", "Components.Mouse.Clipboard"}, Resource: classmap.Resource{Src: "Components/Mouse/ContextMenu.js", JSHash: "254b6ff586e11834d28be96a1e2526fe6ef8e8ad", CSSHash: "d5a5f1a4a0db9a440b9a070f9879beaddffbd99a"}},
+		"Components.Mouse.ContextMenu":                                     {Name: "Components.Mouse.ContextMenu", Kind: "class", Parent: "Components.Mouse", Imports: []string{"System.utils", "System.utils.IKey", "System.utils.DataKey", "System.utils.EventKey", "System.Cycle", "Dandelion", "Dandelion.IDOMElement", "Components.Mouse.Clipboard"}, Resource: classmap.Resource{Src: "Components/Mouse/ContextMenu.js", JSHash: "599dabeb67be710bfcb0379b0e1bdedd1858da60", CSSHash: "d5a5f1a4a0db9a440b9a070f9879beaddffbd99a"}},
 		"Components.Vim":                                                   {Name: "Components.Vim", Kind: "class", Parent: "Components", Imports: []string(nil), Resource: classmap.Resource{Src: "Components/Vim/_this.js", JSHash: "f385a56129d2c933fd848501bbf3a5183a2dd3a8", CSSHash: "7949b25860fcef736927c01502aad09b56d764b2"}},
 		"Components.Vim.ActionEvent":                                       {Name: "Components.Vim.ActionEvent", Kind: "class", Parent: "Components.Vim", Imports: []string{"System.Debug", "Components.Vim.Ex.Command", "Components.Vim.Beep"}, Resource: classmap.Resource{Src: "Components/Vim/Controls.js", JSHash: "d820f2b288a11adfd43eed1186f702013530606f", CSSHash: "1"}},
 		"Components.Vim.Actions":                                           {Name: "Components.Vim.Actions", Kind: "class", Parent: "Components.Vim", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -149,7 +149,7 @@ var ClassMap = &classmap.Map{
 		"Components.Vim.Actions.SHIFT_LINES":                               {Name: "Components.Vim.Actions.SHIFT_LINES", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Beep", "Components.Vim.State.Stator", "Components.Vim.State.Stack", "Components.Vim.Error", "Components.Vim.Message", "System.utils.Perf.CountSubstr"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/SHIFT_LINES.js", JSHash: "d85ff4738e31e1a8a8acdaf5f00bb5d654290b14", CSSHash: "1"}},
 		"Components.Vim.Actions.TO":                                        {Name: "Components.Vim.Actions.TO", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Beep"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/TO.js", JSHash: "50d87381bc34dfefb4dcbd7dce33cdd9ed67dc55", CSSHash: "1"}},
 		"Components.Vim.Actions.UNDO":                                      {Name: "Components.Vim.Actions.UNDO", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"Components.Vim.Message"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/UNDO.js", JSHash: "bb3f119407547329da561213cca7445b63e30d3c", CSSHash: "1"}},
-		"Components.Vim.Actions.VA_REC":                                    {Name: "Components.Vim.Actions.VA_REC", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "System.utils.EventKey", "Components.Vim.ActionEvent", "Components.Vim.Message"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/VA_REC.js", JSHash: "8904fe42c7211334b063c6d89d0b3deb0ffd3633", CSSHash: "1"}},
+		"Components.Vim.Actions.VA_REC":                                    {Name: "Components.Vim.Actions.VA_REC", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "System.utils.EventKey", "Components.Vim.ActionEvent", "Components.Vim.Message"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/VA_REC.js", JSHash: "beb5d83777afb4f3a043abd7c2331eb9a500b942", CSSHash: "1"}},
 		"Components.Vim.Actions.VERSION":                                   {Name: "Components.Vim.Actions.VERSION", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Error", "Components.Vim.Message"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/VERSION.js", JSHash: "1aae87bf77f87a6202733ef515e927d788cd3bc5", CSSHash: "1"}},
 		"Components.Vim.Actions.VISUAL":                                    {Name: "Components.Vim.Actions.VISUAL", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Message", "Components.Vim.Actions.YANK", "Components.Vim.Actions.DELETE", "Components.Vim.Actions.SHIFT_LINES", "Components.Vim.Actions.PUT"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/VISUAL.js", JSHash: "2dba8beb95823fd5ff5af757de7319b7a0970cc4", CSSHash: "1"}},
 		"Components.Vim.Actions.WORD":                                      {Name: "Components.Vim.Actions.WORD", Kind: "class", Parent: "Components.Vim.Actions", Imports: []string{"System.Debug", "Components.Vim.Beep"}, Resource: classmap.Resource{Src: "Components/Vim/Actions/WORD.js", JSHash: "dcbb5a4830c5a747ca3f1e6ab5fc6be68c1c3a9b", CSSHash: "1"}},
@@ -179,14 +179,14 @@ var ClassMap = &classmap.Map{
 		"Components.Vim.Syntax.Analyzer":                                   {Name: "Components.Vim.Syntax.Analyzer", Kind: "class", Parent: "Components.Vim.Syntax", Imports: []string{"System.Debug", "Components.Vim.Beep", "Components.Vim.Syntax.Word"}, Resource: classmap.Resource{Src: "Components/Vim/Syntax/Analyzer.js", JSHash: "64b9a2ae4c6ba0f9fdc0dda87323786df6c6b339", CSSHash: "1"}},
 		"Components.Vim.Syntax.TokenMatch":                                 {Name: "Components.Vim.Syntax.TokenMatch", Kind: "class", Parent: "Components.Vim.Syntax", Imports: []string{"System.Debug", "Components.Vim.Beep", "Components.Vim.Syntax.Word"}, Resource: classmap.Resource{Src: "Components/Vim/Syntax/Analyzer.js", JSHash: "64b9a2ae4c6ba0f9fdc0dda87323786df6c6b339", CSSHash: "1"}},
 		"Components.Vim.Syntax.Word":                                       {Name: "Components.Vim.Syntax.Word", Kind: "class", Parent: "Components.Vim.Syntax", Imports: []string(nil), Resource: classmap.Resource{Src: "Components/Vim/Syntax/Word.js", JSHash: "a6d24370b0906cc0f09cfd68d96d635cd583fac3", CSSHash: "1"}},
-		"Components.Vim.VimArea":                                           {Name: "Components.Vim.VimArea", Kind: "class", Parent: "Components.Vim", Imports: []string{"Dandelion.IDOMElement", "System.utils.DataKey", "System.utils.EventKey", "System.Cycle", "System.Debug", "Components.Vim.State.Registers", "Components.Vim.State.Marks", "Components.Vim.Syntax.Analyzer", "Components.Vim.LineFeeder", "Components.Vim.StatusBar", "Components.Vim.Controls", "Components.Vim.ActionEvent", "Components.Vim.Message"}, Resource: classmap.Resource{Src: "Components/Vim/VimArea.js", JSHash: "9639b24336a69aba93eda2e61fc127fe8e78c9dd", CSSHash: "1"}},
-		"Dandelion":                                                        {Name: "Dandelion", Kind: "class", Parent: "", Imports: []string{"System.Global.IE", "System.utils.IKey"}, Resource: classmap.Resource{Src: "Dandelion/_this.js", JSHash: "27db6b49f6b23b1a3e7e905932525a81621e0b8f", CSSHash: "1"}},
+		"Components.Vim.VimArea":                                           {Name: "Components.Vim.VimArea", Kind: "class", Parent: "Components.Vim", Imports: []string{"Dandelion.IDOMElement", "System.utils.DataKey", "System.utils.EventKey", "System.Cycle", "System.Debug", "Components.Vim.State.Registers", "Components.Vim.State.Marks", "Components.Vim.Syntax.Analyzer", "Components.Vim.LineFeeder", "Components.Vim.StatusBar", "Components.Vim.Controls", "Components.Vim.ActionEvent", "Components.Vim.Message"}, Resource: classmap.Resource{Src: "Components/Vim/VimArea.js", JSHash: "3a0490b8490a8661cbd67969851ed26c57e2f5b0", CSSHash: "1"}},
+		"Dandelion":                                                        {Name: "Dandelion", Kind: "class", Parent: "", Imports: []string{"System.Global.IE", "System.utils.IKey"}, Resource: classmap.Resource{Src: "Dandelion/_this.js", JSHash: "063763bdcb6c4702c56e9f132dea13f4875b2d7f", CSSHash: "1"}},
 		"Dandelion.CSSAnimations":                                          {Name: "Dandelion.CSSAnimations", Kind: "class", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "Dandelion/CSSAnimations/_this.js", JSHash: "a01a6bcfc5851debc7179e9449dc93617bca3afc", CSSHash: "2d6b4b00f0c4050187ccf010e0a24e5bc6121d18"}},
-		"Dandelion.CSSAnimations.MouseOverMovie":                           {Name: "Dandelion.CSSAnimations.MouseOverMovie", Kind: "method", Parent: "Dandelion.CSSAnimations", Imports: []string(nil), Resource: classmap.Resource{Src: "Dandelion/CSSAnimations/MovieClip.js", JSHash: "5667064818a0ca32f11a9b5a27ed641058e9df6c", CSSHash: "daa6e6f4ee3365e599cf1b2680f3e907389534f3"}},
-		"Dandelion.CSSAnimations.MovieClip":                                {Name: "Dandelion.CSSAnimations.MovieClip", Kind: "class", Parent: "Dandelion.CSSAnimations", Imports: []string{"System.utils.EventKey", "System.Cycle.Trigger", "Dandelion", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Dandelion/CSSAnimations/MovieClip.js", JSHash: "5667064818a0ca32f11a9b5a27ed641058e9df6c", CSSHash: "daa6e6f4ee3365e599cf1b2680f3e907389534f3"}},
+		"Dandelion.CSSAnimations.MouseOverMovie":                           {Name: "Dandelion.CSSAnimations.MouseOverMovie", Kind: "method", Parent: "Dandelion.CSSAnimations", Imports: []string(nil), Resource: classmap.Resource{Src: "Dandelion/CSSAnimations/MovieClip.js", JSHash: "3bee713b8529d9edc0e83d7928207019be6de78d", CSSHash: "daa6e6f4ee3365e599cf1b2680f3e907389534f3"}},
+		"Dandelion.CSSAnimations.MovieClip":                                {Name: "Dandelion.CSSAnimations.MovieClip", Kind: "class", Parent: "Dandelion.CSSAnimations", Imports: []string{"System.utils.EventKey", "System.Cycle.Trigger", "Dandelion", "Dandelion.IDOMElement"}, Resource: classmap.Resource{Src: "Dandelion/CSSAnimations/MovieClip.js", JSHash: "3bee713b8529d9edc0e83d7928207019be6de78d", CSSHash: "daa6e6f4ee3365e599cf1b2680f3e907389534f3"}},
 		"Dandelion.CSSReset":                                               {Name: "Dandelion.CSSReset", Kind: "class", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "Dandelion/CSSReset.js", JSHash: "f25ae8f90e11e3bb8eed6ebdac3a23305d615dc9", CSSHash: "59fbc1a2ec3f70e2b719fd73bff973efb34676c4"}},
-		"Dandelion.IDOMElement":                                            {Name: "Dandelion.IDOMElement", Kind: "class", Parent: "Dandelion", Imports: []string{"System.utils.IKey", "System.utils.Perf", "Dandelion.wrap", "Dandelion.IDOMObject"}, Resource: classmap.Resource{Src: "Dandelion/IDOMElement.js", JSHash: "8382686fccc93347661387bbe9c7a8a3c31fdc3f", CSSHash: "1"}},
-		"Dandelion.IDOMObject":                                             {Name: "Dandelion.IDOMObject", Kind: "class", Parent: "Dandelion", Imports: []string{"System.utils.EventKey"}, Resource: classmap.Resource{Src: "Dandelion/IDOMObject.js", JSHash: "5727639574a022feccfef1deb2056146f1f23c06", CSSHash: "1"}},
+		"Dandelion.IDOMElement":                                            {Name: "Dandelion.IDOMElement", Kind: "class", Parent: "Dandelion", Imports: []string{"System.utils.IKey", "System.utils.Perf", "Dandelion.wrap", "Dandelion.IDOMObject"}, Resource: classmap.Resource{Src: "Dandelion/IDOMElement.js", JSHash: "c9a1e06319b9512deab0ef08e523165730d52cd2", CSSHash: "1"}},
+		"Dandelion.IDOMObject":                                             {Name: "Dandelion.IDOMObject", Kind: "class", Parent: "Dandelion", Imports: []string{"System.utils.EventKey"}, Resource: classmap.Resource{Src: "Dandelion/IDOMObject.js", JSHash: "1b5f53247d14ef78bf25c07a0770bc1c54901fb8", CSSHash: "1"}},
 		"Dandelion.StaticRes":                                              {Name: "Dandelion.StaticRes", Kind: "class", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "Dandelion/StaticRes.js", JSHash: "43738524071b7207e6dba6bd223bf811bd475949", CSSHash: "1"}},
 		"Dandelion.StaticRes.BLANK_IMG":                                    {Name: "Dandelion.StaticRes.BLANK_IMG", Kind: "prop", Parent: "Dandelion.StaticRes", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"Dandelion.Window":                                                 {Name: "Dandelion.Window", Kind: "class", Parent: "Dandelion", Imports: []string(nil), Resource: classmap.Resource{Src: "Dandelion/Window.js", JSHash: "ea38f2c0c2b5207abdb7265d2d5b7fa4177d0a47", CSSHash: "1"}},
@@ -259,9 +259,9 @@ var ClassMap = &classmap.Map{
 		"System.Compression":                                               {Name: "System.Compression", Kind: "class", Parent: "System", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Compression/_this.js", JSHash: "237bff609161dca51d55c73b92a477c54286e26d", CSSHash: "1"}},
 		"System.Compression.Zlib":                                          {Name: "System.Compression.Zlib", Kind: "class", Parent: "System.Compression", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Compression/Zlib.js", JSHash: "50248acd8ef77f57eff8998011ac296b252142d4", CSSHash: "1"}},
 		"System.Compression.Zlib.Deflate":                                  {Name: "System.Compression.Zlib.Deflate", Kind: "method", Parent: "System.Compression.Zlib", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"System.Cycle":                                                     {Name: "System.Cycle", Kind: "class", Parent: "System", Imports: []string{"System.utils", "System.Tick", "System.Debug"}, Resource: classmap.Resource{Src: "System/Cycle/_this.js", JSHash: "b1ff650c56acb89a96809cb7180c495a49684c46", CSSHash: "1"}},
+		"System.Cycle":                                                     {Name: "System.Cycle", Kind: "class", Parent: "System", Imports: []string{"System.utils", "System.Tick", "System.Debug"}, Resource: classmap.Resource{Src: "System/Cycle/_this.js", JSHash: "c6f4dc11ebd0a525e3718f2fe68ff23a90a22db4", CSSHash: "1"}},
 		"System.Cycle.TICK":                                                {Name: "System.Cycle.TICK", Kind: "prop", Parent: "System.Cycle", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"System.Cycle.Trigger":                                             {Name: "System.Cycle.Trigger", Kind: "class", Parent: "System.Cycle", Imports: []string{"System.Cycle", "System.Debug"}, Resource: classmap.Resource{Src: "System/Cycle/Trigger.js", JSHash: "b18fae66ada79a1cc2e812dea1055422f1172a37", CSSHash: "1"}},
+		"System.Cycle.Trigger":                                             {Name: "System.Cycle.Trigger", Kind: "class", Parent: "System.Cycle", Imports: []string{"System.Cycle", "System.Debug"}, Resource: classmap.Resource{Src: "System/Cycle/Trigger.js", JSHash: "c02be788ca62d7fea52bcb4527b9f72133489e80", CSSHash: "1"}},
 		"System.Cycle.Trigger.height":                                      {Name: "System.Cycle.Trigger.height", Kind: "method", Parent: "System.Cycle.Trigger", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Cycle.Trigger.register":                                    {Name: "System.Cycle.Trigger.register", Kind: "method", Parent: "System.Cycle.Trigger", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Cycle.Trigger.transition":                                  {Name: "System.Cycle.Trigger.transition", Kind: "method", Parent: "System.Cycle.Trigger", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -269,7 +269,7 @@ var ClassMap = &classmap.Map{
 		"System.Cycle.next":                                                {Name: "System.Cycle.next", Kind: "method", Parent: "System.Cycle", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Cycle.perma":                                               {Name: "System.Cycle.perma", Kind: "method", Parent: "System.Cycle", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Cycle.permaRemove":                                         {Name: "System.Cycle.permaRemove", Kind: "method", Parent: "System.Cycle", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"System.Debug":                                                     {Name: "System.Debug", Kind: "class", Parent: "System", Imports: []string{"System.Log", "System.Global"}, Resource: classmap.Resource{Src: "System/Debug.js", JSHash: "c821a438f97a2bae0114cd615113c3d278efe121", CSSHash: "1"}},
+		"System.Debug":                                                     {Name: "System.Debug", Kind: "class", Parent: "System", Imports: []string{"System.Log", "System.Global"}, Resource: classmap.Resource{Src: "System/Debug.js", JSHash: "be249598521dbad45b8d64d31b10777212ff6c8c", CSSHash: "1"}},
 		"System.Debug.Error":                                               {Name: "System.Debug.Error", Kind: "method", Parent: "System.Debug", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Debug.Info":                                                {Name: "System.Debug.Info", Kind: "method", Parent: "System.Debug", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Debug.turnOff":                                             {Name: "System.Debug.turnOff", Kind: "method", Parent: "System.Debug", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -285,14 +285,14 @@ var ClassMap = &classmap.Map{
 		"System.Global.MOBILE":                                             {Name: "System.Global.MOBILE", Kind: "prop", Parent: "System.Global", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Global.SECURE_HTTP":                                        {Name: "System.Global.SECURE_HTTP", Kind: "prop", Parent: "System.Global", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Global.debug":                                              {Name: "System.Global.debug", Kind: "prop", Parent: "System.Global", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"System.Log":                                                       {Name: "System.Log", Kind: "class", Parent: "System", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Log.js", JSHash: "d2a2a12cf34bc2e737a3cc48cd6fc536c2ddc84e", CSSHash: "1"}},
+		"System.Log":                                                       {Name: "System.Log", Kind: "class", Parent: "System", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Log.js", JSHash: "27a1d63a27b100873f4e513c3fce3a95cdbe6f72", CSSHash: "1"}},
 		"System.Log.ERROR":                                                 {Name: "System.Log.ERROR", Kind: "prop", Parent: "System.Log", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Log.INFO":                                                  {Name: "System.Log.INFO", Kind: "prop", Parent: "System.Log", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Log.SYSTEM":                                                {Name: "System.Log.SYSTEM", Kind: "prop", Parent: "System.Log", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Log.registerHandler":                                       {Name: "System.Log.registerHandler", Kind: "method", Parent: "System.Log", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Log.removeHandler":                                         {Name: "System.Log.removeHandler", Kind: "method", Parent: "System.Log", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Log.writeLine":                                             {Name: "System.Log.writeLine", Kind: "method", Parent: "System.Log", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
-		"System.Net":                                                       {Name: "System.Net", Kind: "class", Parent: "System", Imports: []string{"System.Debug", "Dandelion.IDOMObject"}, Resource: classmap.Resource{Src: "System/Net/_this.js", JSHash: "1b2e6ddd90efc213dbbd139e2dc891ab41ec043f", CSSHash: "1"}},
+		"System.Net":                                                       {Name: "System.Net", Kind: "class", Parent: "System", Imports: []string{"System.Debug", "Dandelion.IDOMObject"}, Resource: classmap.Resource{Src: "System/Net/_this.js", JSHash: "ccbe15c6379321650758673d2499457f1c6014b8", CSSHash: "1"}},
 		"System.Net.ClassLoader":                                           {Name: "System.Net.ClassLoader", Kind: "class", Parent: "System.Net", Imports: []string{"System.utils", "System.utils.IKey", "System.Encoding.Utf8", "System.Encoding.Base64", "Dandelion", "System.Compression.Zlib.Deflate"}, Resource: classmap.Resource{Src: "System/Net/ClassLoader.js", JSHash: "7aa219e660357e3ee53a166bd961954fe97b01ec", CSSHash: "1"}},
 		"System.Net.compilePostData":                                       {Name: "System.Net.compilePostData", Kind: "method", Parent: "System.Net", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Net.getData":                                               {Name: "System.Net.getData", Kind: "method", Parent: "System.Net", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -302,9 +302,9 @@ var ClassMap = &classmap.Map{
 		"System.Policy.isOriginAllowed":                                    {Name: "System.Policy.isOriginAllowed", Kind: "method", Parent: "System.Policy", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.Tick":                                                      {Name: "System.Tick", Kind: "class", Parent: "System", Imports: []string(nil), Resource: classmap.Resource{Src: "System/Tick.js", JSHash: "526500dfd490e4c29b30f9f00b32a238b74afedb", CSSHash: "1"}},
 		"System.utils":                                                     {Name: "System.utils", Kind: "class", Parent: "System", Imports: []string{"System.Global"}, Resource: classmap.Resource{Src: "System/utils/_this.js", JSHash: "217041f4a86092e258a1c6624ff837cefd1ccc0f", CSSHash: "1"}},
-		"System.utils.DataKey":                                             {Name: "System.utils.DataKey", Kind: "class", Parent: "System.utils", Imports: []string{"System.utils.IKey"}, Resource: classmap.Resource{Src: "System/utils/DataKey.js", JSHash: "2fbaf05a01bc5899943459e67bad487f10c39276", CSSHash: "1"}},
+		"System.utils.DataKey":                                             {Name: "System.utils.DataKey", Kind: "class", Parent: "System.utils", Imports: []string{"System.utils.IKey"}, Resource: classmap.Resource{Src: "System/utils/DataKey.js", JSHash: "4da9882c28d1fd06444a89a013d35622b898d75f", CSSHash: "1"}},
 		"System.utils.EventKey":                                            {Name: "System.utils.EventKey", Kind: "class", Parent: "System.utils", Imports: []string{"System.utils.IKey"}, Resource: classmap.Resource{Src: "System/utils/EventKey.js", JSHash: "c6285ef1d22a5e15b12c4fd13fa00d64517f59b8", CSSHash: "1"}},
-		"System.utils.IKey":                                                {Name: "System.utils.IKey", Kind: "class", Parent: "System.utils", Imports: []string(nil), Resource: classmap.Resource{Src: "System/utils/IKey.js", JSHash: "e9e57a335ec6204b35fead34925cffdc3e38b55b", CSSHash: "1"}},
+		"System.utils.IKey":                                                {Name: "System.utils.IKey", Kind: "class", Parent: "System.utils", Imports: []string(nil), Resource: classmap.Resource{Src: "System/utils/IKey.js", JSHash: "0c3a6d28cf25248b03b58a5e748e2c3a55cb7e5f", CSSHash: "1"}},
 		"System.utils.Perf":                                                {Name: "System.utils.Perf", Kind: "class", Parent: "System.utils", Imports: []string(nil), Resource: classmap.Resource{Src: "System/utils/Perf.js", JSHash: "4a8c714fd0302d1bcad10c27bcd4a574ffe606eb", CSSHash: "1"}},
 		"System.utils.Perf.ArrayReverse":                                   {Name: "System.utils.Perf.ArrayReverse", Kind: "method", Parent: "System.utils.Perf", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 		"System.utils.Perf.CountSubstr":                                    {Name: "System.utils.Perf.CountSubstr", Kind: "method", Parent: "System.utils.Perf", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
@@ -315,15 +315,15 @@ var ClassMap = &classmap.Map{
 		"System.utils.siteProto":                                           {Name: "System.utils.siteProto", Kind: "method", Parent: "System.utils", Imports: []string(nil), Resource: classmap.Resource{Src: "", JSHash: "", CSSHash: ""}},
 	},
 	Files: map[string]classmap.Resource{
-		"Astro/Blog/AstroEdit/Article.js":                                     {Src: "Astro/Blog/AstroEdit/Article.js", JSHash: "4f4bf860ca05aac1e1e6ef4565097202418af090", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/Article.js":                                     {Src: "Astro/Blog/AstroEdit/Article.js", JSHash: "14b244e84b9e566421139e6b7dbdd25af7ef746b", CSSHash: "1"},
 		"Astro/Blog/AstroEdit/Draft.js":                                       {Src: "Astro/Blog/AstroEdit/Draft.js", JSHash: "3949dd12c90e92b3f792b86841fd72c2482a18d5", CSSHash: "1"},
 		"Astro/Blog/AstroEdit/Flag.js":                                        {Src: "Astro/Blog/AstroEdit/Flag.js", JSHash: "31bdc37b8e995c6defd12c3a4dd743e27abdaa4d", CSSHash: "2af9897e11ed5f3c3a750ce5488c9d91e46c6c58"},
-		"Astro/Blog/AstroEdit/SiteLibrary.js":                                 {Src: "Astro/Blog/AstroEdit/SiteLibrary.js", JSHash: "09a9a043d155709d787fd75706ccd1bd05425d6e", CSSHash: "ef9290487558512fa1db9a4a20b91aa8421b4b26"},
+		"Astro/Blog/AstroEdit/SiteLibrary.js":                                 {Src: "Astro/Blog/AstroEdit/SiteLibrary.js", JSHash: "2861f76ddc371f2852cbc160f8ff3a2f334431d0", CSSHash: "ef9290487558512fa1db9a4a20b91aa8421b4b26"},
 		"Astro/Blog/AstroEdit/SmartInput/CandidateAction/ArticleReference.js": {Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/ArticleReference.js", JSHash: "2e66502daabb251f22f83535899c3c282f32a2c0", CSSHash: "1"},
 		"Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js":         {Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/Footnote.js", JSHash: "e308b387915865640c00c1c172c20482adaa1e46", CSSHash: "1"},
 		"Astro/Blog/AstroEdit/SmartInput/CandidateAction/Heading.js":          {Src: "Astro/Blog/AstroEdit/SmartInput/CandidateAction/Heading.js", JSHash: "65e852a90c2dddce5931f45f841ec932e3b35e59", CSSHash: "1"},
-		"Astro/Blog/AstroEdit/SmartInput/_this.js":                            {Src: "Astro/Blog/AstroEdit/SmartInput/_this.js", JSHash: "c4b42f193f02a00b79ef82e4fb0801202348ef1b", CSSHash: "4cd01e0c87e41c384afe9d9d5fb9d545bd51bd38"},
-		"Astro/Blog/AstroEdit/Uploader.js":                                    {Src: "Astro/Blog/AstroEdit/Uploader.js", JSHash: "7205f45c289ec5a9b39cf06c3c42f31d1286cba9", CSSHash: "1"},
+		"Astro/Blog/AstroEdit/SmartInput/_this.js":                            {Src: "Astro/Blog/AstroEdit/SmartInput/_this.js", JSHash: "efb23c5f132c2db9c2a39eba05b1c401a809af02", CSSHash: "4cd01e0c87e41c384afe9d9d5fb9d545bd51bd38"},
+		"Astro/Blog/AstroEdit/Uploader.js":                                    {Src: "Astro/Blog/AstroEdit/Uploader.js", JSHash: "1bc0287727307b409ce2954c2cd826e84cbf9fc7", CSSHash: "1"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js":               {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/AcquireLib.js", JSHash: "7af9a09fbf17d439fb810b3485609c4bbd816729", CSSHash: "e3860ca0ac69a86e948b811da1ebf6ba85fad57f"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js":           {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleContent.js", JSHash: "83817c1b1e8c73a598e1c090d3dae8fb341bcebe", CSSHash: "e1cfcf676ebfc3a9ab80139ab2f7e63a2a1b286f"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js":              {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/ArticleLink.js", JSHash: "7c6ecca0ad47a0eb6afc625245c6b130ff5716ba", CSSHash: "2d71bce1fa868564d9dac50db338ef7eeed16fd9"},
@@ -335,18 +335,18 @@ var ClassMap = &classmap.Map{
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Link.js", JSHash: "6e91d7044352f8ecc1d637c0047d1a55300120bf", CSSHash: "963bca1730a62b372e667b0a3f888aeef5504968"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js":                     {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Meta.js", JSHash: "4cb72d4d4b6124a6b2c8818d0a9d320b921ac9b2", CSSHash: "43e6cf20a8590ff0a820fed9ae53399edfb53ac4"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/RespH.js", JSHash: "fdd92845b8ab0c957c7d5b695743ddaa785ad75f", CSSHash: "60ee66e1f25468b808af731338d2f10c9e74d8fe"},
-		"Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js":                 {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js", JSHash: "b98885eb6a931af19b27c5b59c2749b050af768b", CSSHash: "47a59715388ff5f8abe4eb4e7e6000bf92de77b2"},
+		"Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js":                 {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js", JSHash: "36f042d8e7efb1a1b2022245f94e6c1d2ec2b538", CSSHash: "47a59715388ff5f8abe4eb4e7e6000bf92de77b2"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Sound.js", JSHash: "2c5f32fe1ed50595503978dde85843ca48e55989", CSSHash: "1"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js":                  {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js", JSHash: "b3a483cc50f0e63c07ae64b52652f07159cdd877", CSSHash: "1"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/Video.js", JSHash: "d6f641a25d4350b98dad2bbeeec5dedfd1c6d532", CSSHash: "ff1d4ae903c244a6aeaf78b12c375f1f45dfb3c2"},
 		"Astro/Blog/AstroEdit/Visualizer/Snippet/_this.js":                    {Src: "Astro/Blog/AstroEdit/Visualizer/Snippet/_this.js", JSHash: "38f5d8512eabf1ffb4249b1414efd2362af8dc5c", CSSHash: "1"},
-		"Astro/Blog/AstroEdit/Visualizer/_this.js":                            {Src: "Astro/Blog/AstroEdit/Visualizer/_this.js", JSHash: "6b3cece4cedda7322cfe385fe81f956bc59c01c6", CSSHash: "d43e2d27e52788d755c96f0db4ac500aa38ca2ee"},
+		"Astro/Blog/AstroEdit/Visualizer/_this.js":                            {Src: "Astro/Blog/AstroEdit/Visualizer/_this.js", JSHash: "44b9203ae646cc103c3f97b2d0b5a2691d0b9a12", CSSHash: "d43e2d27e52788d755c96f0db4ac500aa38ca2ee"},
 		"Astro/Blog/AstroEdit/_this.js":                                       {Src: "Astro/Blog/AstroEdit/_this.js", JSHash: "92ff148e1e100a172d0583f22fff03fa277840ce", CSSHash: "2d37776089eeac5d81981f100c1c029c9249e4a9"},
 		"Astro/Blog/Components/Album.js":                                      {Src: "Astro/Blog/Components/Album.js", JSHash: "95069b6eec9f03c84969e4d3627b0730136fa300", CSSHash: "640c50241b457330678a21b940fdb4ea15a5249b"},
 		"Astro/Blog/Components/ArticleContent.js":                             {Src: "Astro/Blog/Components/ArticleContent.js", JSHash: "2e208eae51421946f874dd78cb05d974a689bdef", CSSHash: "34fc82974af2ae7040819889bc8e7a1bd2b48cd6"},
-		"Astro/Blog/Components/Bubble.js":                                     {Src: "Astro/Blog/Components/Bubble.js", JSHash: "24acdcacd373410bedd1dcfd968cb35242a522af", CSSHash: "2513518106d6d1c7a42e95c28becb3ddfe39e040"},
+		"Astro/Blog/Components/Bubble.js":                                     {Src: "Astro/Blog/Components/Bubble.js", JSHash: "6381542c359b9cb6561ba2bf70ec0e9e585467c8", CSSHash: "2513518106d6d1c7a42e95c28becb3ddfe39e040"},
 		"Astro/Blog/Components/Calendar.js":                                   {Src: "Astro/Blog/Components/Calendar.js", JSHash: "122c4ec4388b9c959692c1953a3e11563ab02f28", CSSHash: "305a716f79149cbd609791989ec8b04401a7406f"},
-		"Astro/Blog/Components/Comment.js":                                    {Src: "Astro/Blog/Components/Comment.js", JSHash: "aa134d8376cdbee2ad17ef61a865ca69fe1d81fa", CSSHash: "7025d26f1d9579a36c128effc3e9a833e22787eb"},
+		"Astro/Blog/Components/Comment.js":                                    {Src: "Astro/Blog/Components/Comment.js", JSHash: "3307dfcf2bef779dc7f2a920eb56142e1522347e", CSSHash: "7025d26f1d9579a36c128effc3e9a833e22787eb"},
 		"Astro/Blog/Components/ControlPanel.js":                               {Src: "Astro/Blog/Components/ControlPanel.js", JSHash: "e646278422597037693f16206b8c9dc00aa0f005", CSSHash: "812c94c181c62bd44f1871b5e44952e164df4401"},
 		"Astro/Blog/Components/CrowdTag.js":                                   {Src: "Astro/Blog/Components/CrowdTag.js", JSHash: "6720800b2b1f71dd1931ef74885460f898bb8c0e", CSSHash: "d2862681238786af37b1b5c91d266448a9b072b0"},
 		"Astro/Blog/Components/Entry/Blog.js":                                 {Src: "Astro/Blog/Components/Entry/Blog.js", JSHash: "0f5776a529380627bbf0859a5810e9995333f5c7", CSSHash: "0473bbb41f9b27a5d448a36c1e175f6f18841019"},
@@ -355,15 +355,15 @@ var ClassMap = &classmap.Map{
 		"Astro/Blog/Components/Entry/Tag.js":                                  {Src: "Astro/Blog/Components/Entry/Tag.js", JSHash: "f64c75bf37dba830d6b335918c1ac5670f297396", CSSHash: "42851637f7fc9cece8ac9a666f0f74a75544eae0"},
 		"Astro/Blog/Components/Entry/Tile.js":                                 {Src: "Astro/Blog/Components/Entry/Tile.js", JSHash: "0603f59d19c81c5b7e1233fce579c79502427e7c", CSSHash: "2a925b7465760a02011eaeca6e0a353389578618"},
 		"Astro/Blog/Components/Footnote.js":                                   {Src: "Astro/Blog/Components/Footnote.js", JSHash: "a48a57284210021bcf3aaf5bf9a4be9d5e1579ea", CSSHash: "44c3c00c1df7ec8faea902fa19840902429441b8"},
-		"Astro/Blog/Components/Notification.js":                               {Src: "Astro/Blog/Components/Notification.js", JSHash: "1d0556c82ad620bb50eb3088f2db5cea9ad9fbf6", CSSHash: "2c278ade8d5d0b49a62c10a2d239c1f7dd5edc62"},
+		"Astro/Blog/Components/Notification.js":                               {Src: "Astro/Blog/Components/Notification.js", JSHash: "4a26f91a016dd7f26afa258098b6dfb24fbe9ff1", CSSHash: "2c278ade8d5d0b49a62c10a2d239c1f7dd5edc62"},
 		"Astro/Blog/Components/Section.js":                                    {Src: "Astro/Blog/Components/Section.js", JSHash: "d814528ea8a20fc06197b56896d1c63ffbf40fcd", CSSHash: "c48e35eafe87b99383b8b3a397eac5d569f68f66"},
 		"Astro/Blog/Components/SiteFile.js":                                   {Src: "Astro/Blog/Components/SiteFile.js", JSHash: "769e2c50f34dcf39ead9e32044e0e6f2193f1b03", CSSHash: "94f07554cb4ad0b81529be89f908f039abc9c2cb"},
 		"Astro/Blog/Components/SocialButtons.js":                              {Src: "Astro/Blog/Components/SocialButtons.js", JSHash: "ccdc9ce8fcdde608731b9e23ae77c6f2c61e512b", CSSHash: "53c508505fa9c8a744b4d276d168b535f1e7d3ac"},
 		"Astro/Blog/Components/Spoiler.js":                                    {Src: "Astro/Blog/Components/Spoiler.js", JSHash: "10965b8eefa863dea321d3d77762971402c5f8c5", CSSHash: "600586c6160a51264169ae1a475082afefd45368"},
 		"Astro/Blog/Components/TagControl.js":                                 {Src: "Astro/Blog/Components/TagControl.js", JSHash: "fc34df160451001d1a04242f91b937b5fdd503f1", CSSHash: "714529a31e4b9d3a4987163fb40ab53607ff4c43"},
-		"Astro/Blog/Components/ToggleButton/CommentToggle.js":                 {Src: "Astro/Blog/Components/ToggleButton/CommentToggle.js", JSHash: "cf26a6c93343ac37d9534ca805aa2d27debe9625", CSSHash: "88b2d440e6056ebd62138e20c9b1c9da97c6fb3f"},
+		"Astro/Blog/Components/ToggleButton/CommentToggle.js":                 {Src: "Astro/Blog/Components/ToggleButton/CommentToggle.js", JSHash: "2b4abf35627ea2419812dea825c9529f002b7293", CSSHash: "88b2d440e6056ebd62138e20c9b1c9da97c6fb3f"},
 		"Astro/Blog/Components/ToggleButton/DeleteArticle.js":                 {Src: "Astro/Blog/Components/ToggleButton/DeleteArticle.js", JSHash: "58a2e9ec9434798a1d0db892f0c3275e28d6733c", CSSHash: "37d28e8059d0f48ae1c49f9c5fa106275505fa71"},
-		"Astro/Blog/Components/ToggleButton/_this.js":                         {Src: "Astro/Blog/Components/ToggleButton/_this.js", JSHash: "9e49da31e734f7c4b25ae69e2eaeeeb29905a09e", CSSHash: "ec9b9f22d38415aa2ff3750ac09e3b8e7494ec61"},
+		"Astro/Blog/Components/ToggleButton/_this.js":                         {Src: "Astro/Blog/Components/ToggleButton/_this.js", JSHash: "a8ac1e631748262d7efd7b5b371262739a0ebce6", CSSHash: "ec9b9f22d38415aa2ff3750ac09e3b8e7494ec61"},
 		"Astro/Blog/Components/Video.js":                                      {Src: "Astro/Blog/Components/Video.js", JSHash: "a81c3528ac9d78cf1e443c4310faad23c355a654", CSSHash: "5d7572084bf0b426e76a938c61fa380d5b582ef9"},
 		"Astro/Blog/Config.js":                                                {Src: "Astro/Blog/Config.js", JSHash: "72dd92f2c5087d6ddecc1507f6448ca552ee5385", CSSHash: "1"},
 		"Astro/Blog/Layout/Article/Control.js":                                {Src: "Astro/Blog/Layout/Article/Control.js", JSHash: "cad0f89a3793d1374a3ed22dccd6b5a146629ca0", CSSHash: "1"},
@@ -372,7 +372,7 @@ var ClassMap = &classmap.Map{
 		"Astro/Blog/Layout/Article/_this.js":                                  {Src: "Astro/Blog/Layout/Article/_this.js", JSHash: "470f4b9fd651ddf34d0a32b7775d174e2e0a532a", CSSHash: "fdba7da7bf090d73264661348c0e3ee1caa90c82"},
 		"Astro/Blog/Layout/ErrorPages.js":                                     {Src: "Astro/Blog/Layout/ErrorPages.js", JSHash: "1ddc77aa611e2fc85b734be104a2702820afe4f7", CSSHash: "10c6fbfe1a05ede1204926d26eb9fb12f97802fa"},
 		"Astro/Blog/Layout/Login.js":                                          {Src: "Astro/Blog/Layout/Login.js", JSHash: "452180253f3b751eeb249ddb9a9cf17dd0f75354", CSSHash: "66b8ec358f3d29b121927d0f72360e33ad90d2ad"},
-		"Astro/Blog/Layout/MainFrame.js":                                      {Src: "Astro/Blog/Layout/MainFrame.js", JSHash: "b6b9e579948aab7ddbf2a2f57291c671b97b21ad", CSSHash: "1d8c7b3b80091a4f80f2b4f3cbfebf7a424a9dbb"},
+		"Astro/Blog/Layout/MainFrame.js":                                      {Src: "Astro/Blog/Layout/MainFrame.js", JSHash: "f659d773c3dff7932d0bc1da111d2baee4b844f4", CSSHash: "1d8c7b3b80091a4f80f2b4f3cbfebf7a424a9dbb"},
 		"Astro/Blog/Layout/Subs/Manage.js":                                    {Src: "Astro/Blog/Layout/Subs/Manage.js", JSHash: "45d0286adfcfbe1620e2128d3a859153e0f1b0b7", CSSHash: "eb6d28864a3b2faf9ff90912da63db158bed626f"},
 		"Astro/Blog/Layout/Subs/_this.js":                                     {Src: "Astro/Blog/Layout/Subs/_this.js", JSHash: "7f7ff173d8b86eccc023d17c22e55cf259925558", CSSHash: "1"},
 		"Astro/Blog/Layout/_this.js":                                          {Src: "Astro/Blog/Layout/_this.js", JSHash: "2401f45244624f7662596bb569c40dab9866dbb8", CSSHash: "1"},
@@ -380,14 +380,14 @@ var ClassMap = &classmap.Map{
 		"Astro/Bootstrap.js":                                                  {Src: "Astro/Bootstrap.js", JSHash: "51bfb270eadd20b4b71372ae2d20dcf3d20575db", CSSHash: "e650f4de36f799af80ca0633d66351fb9333d620"},
 		"Astro/Common/Element/Footer.js":                                      {Src: "Astro/Common/Element/Footer.js", JSHash: "80f69d85c399bdc04d3b2055d1ebbe9ee77a852a", CSSHash: "c26f4238a6a4f2fc0bcbd9ac86141d12522552a4"},
 		"Astro/Mechanism/CharacterCloud.js":                                   {Src: "Astro/Mechanism/CharacterCloud.js", JSHash: "a15cc6faa3dbeca99f4e39d90de06b0f562f6c1c", CSSHash: "7cae98eaf8e3d5d1cd7fadaa6806ce3d65d74d92"},
-		"Astro/Mechanism/Parallax.js":                                         {Src: "Astro/Mechanism/Parallax.js", JSHash: "e159af40e2d923c6545ab0d558bd46b2636b7410", CSSHash: "f8c02f4ec1be082e02c51f0b5ea39cbdd5b0e49f"},
-		"Astro/Penguin/Layout/MainFrame.js":                                   {Src: "Astro/Penguin/Layout/MainFrame.js", JSHash: "d9ab3001ab6a614879f98441be20e6f6798b1472", CSSHash: "e87b69ab9e725e4801065850790670d76f0a6d18"},
+		"Astro/Mechanism/Parallax.js":                                         {Src: "Astro/Mechanism/Parallax.js", JSHash: "3af29e31c19b025f22d1ceba68bbc57dc4a0bfe7", CSSHash: "f8c02f4ec1be082e02c51f0b5ea39cbdd5b0e49f"},
+		"Astro/Penguin/Layout/MainFrame.js":                                   {Src: "Astro/Penguin/Layout/MainFrame.js", JSHash: "d7765bab03e7484633d8274d67ddd88869322989", CSSHash: "e87b69ab9e725e4801065850790670d76f0a6d18"},
 		"Astro/Penguin/Page/Docs.js":                                          {Src: "Astro/Penguin/Page/Docs.js", JSHash: "02217e7fa4ebffe90b32002ef07da500ac02bf52", CSSHash: "5230a026499b9ab0f4f530f4975a9df89170c83b"},
 		"Astro/Penguin/Page/_this.js":                                         {Src: "Astro/Penguin/Page/_this.js", JSHash: "66e415e546eb6ca0b84cedfd4d3b6de67c2164f3", CSSHash: "e8afcaa8c75b241cd933cfc99a648adc42f815d7"},
 		"Astro/Starfall/Element/Footer.js":                                    {Src: "Astro/Starfall/Element/Footer.js", JSHash: "8667936ab4c583ec475770d0f4470348b1a60281", CSSHash: "8424988d632d155f1558c0069dc17f326a53703a"},
 		"Astro/Starfall/Element/Header.js":                                    {Src: "Astro/Starfall/Element/Header.js", JSHash: "467470a9c5cb5630ae8ec07b29a4496c6a401e0b", CSSHash: "c6bd96ee7e0993a2db1fde4885e5f44cff901878"},
 		"Astro/Starfall/Element/Layer.js":                                     {Src: "Astro/Starfall/Element/Layer.js", JSHash: "cc3c87e83813ee68a9ccc3a12c08992c3027a721", CSSHash: "c482b4089b04665a5d7c5527f8008622375885a2"},
-		"Astro/Starfall/Layout/MainFrame.js":                                  {Src: "Astro/Starfall/Layout/MainFrame.js", JSHash: "a04ddd076cb30e058a654503c14878d9fc6694a4", CSSHash: "9654c2c26915302a661f5d3fb4f19833ffc6c11d"},
+		"Astro/Starfall/Layout/MainFrame.js":                                  {Src: "Astro/Starfall/Layout/MainFrame.js", JSHash: "0d6b7dfa9a64a02f5af10776cee2b546a90afdfb", CSSHash: "9654c2c26915302a661f5d3fb4f19833ffc6c11d"},
 		"Astro/Starfall/Layout/PureColumn.js":                                 {Src: "Astro/Starfall/Layout/PureColumn.js", JSHash: "5164bbe0019969bf85c649a6991ccd3b8c780b3a", CSSHash: "d1920d1be9f9d9bbfdfdbb16565454c58ed6c78c"},
 		"Astro/Starfall/Layout/TwoColumn.js":                                  {Src: "Astro/Starfall/Layout/TwoColumn.js", JSHash: "e55bedfac6ff774f7bbf46b69b1b537b28f8e993", CSSHash: "cf05ec131d63e657f0eba0183c8055d0101bcf08"},
 		"Astro/Starfall/_this.js":                                             {Src: "Astro/Starfall/_this.js", JSHash: "77ca61d1ba806c3440cec5e26a100581259e1784", CSSHash: "1"},
@@ -395,9 +395,9 @@ var ClassMap = &classmap.Map{
 		"Astro/utils/_this.js":                                                {Src: "Astro/utils/_this.js", JSHash: "21e99449ec5c1a4b6d25164db9434132aeea5ad3", CSSHash: "1"},
 		"Components/Console.js":                                               {Src: "Components/Console.js", JSHash: "1c19da4a04f458a1ce095001397fa9bcdaa91348", CSSHash: "452f4a36e8fd7321c7d177a311047c8b71165e48"},
 		"Components/DockPanel.js":                                             {Src: "Components/DockPanel.js", JSHash: "dffa9d89d72075c045f7653831406cabece8d8e3", CSSHash: "af0d91982c764ee62c46b243be68c08f2808e82b"},
-		"Components/MessageBox.js":                                            {Src: "Components/MessageBox.js", JSHash: "63c831ec6493912492780009a76997d7bc59cad4", CSSHash: "5571fa4c2e1324dcf1f2e18df8b6105cf37dfc53"},
-		"Components/Mouse/Clipboard.js":                                       {Src: "Components/Mouse/Clipboard.js", JSHash: "32de0da9ec7e9a4c4e28267a5f60bb815b5af92d", CSSHash: "1b7f85206ce1560ed23d3b270e093022e25d2e61"},
-		"Components/Mouse/ContextMenu.js":                                     {Src: "Components/Mouse/ContextMenu.js", JSHash: "254b6ff586e11834d28be96a1e2526fe6ef8e8ad", CSSHash: "d5a5f1a4a0db9a440b9a070f9879beaddffbd99a"},
+		"Components/MessageBox.js":                                            {Src: "Components/MessageBox.js", JSHash: "5c8b63044f81385919e8b8ca440ec6a35fe2cc46", CSSHash: "5571fa4c2e1324dcf1f2e18df8b6105cf37dfc53"},
+		"Components/Mouse/Clipboard.js":                                       {Src: "Components/Mouse/Clipboard.js", JSHash: "c33d6eeb916ab35e3511b2113af8ccd0103cf8fc", CSSHash: "1b7f85206ce1560ed23d3b270e093022e25d2e61"},
+		"Components/Mouse/ContextMenu.js":                                     {Src: "Components/Mouse/ContextMenu.js", JSHash: "599dabeb67be710bfcb0379b0e1bdedd1858da60", CSSHash: "d5a5f1a4a0db9a440b9a070f9879beaddffbd99a"},
 		"Components/Mouse/_this.js":                                           {Src: "Components/Mouse/_this.js", JSHash: "9ec5ced53a20ea1d057e2142668e27e5df7d49f6", CSSHash: "1"},
 		"Components/Vim/Actions/BUFFERS.js":                                   {Src: "Components/Vim/Actions/BUFFERS.js", JSHash: "4142782274b232ea8a80ddeb7fbffbd8b97ba1d2", CSSHash: "1"},
 		"Components/Vim/Actions/DELETE.js":                                    {Src: "Components/Vim/Actions/DELETE.js", JSHash: "12223cd3496265f907c83a6f42bab6eebb174983", CSSHash: "1"},
@@ -417,7 +417,7 @@ var ClassMap = &classmap.Map{
 		"Components/Vim/Actions/SHIFT_LINES.js":                               {Src: "Components/Vim/Actions/SHIFT_LINES.js", JSHash: "d85ff4738e31e1a8a8acdaf5f00bb5d654290b14", CSSHash: "1"},
 		"Components/Vim/Actions/TO.js":                                        {Src: "Components/Vim/Actions/TO.js", JSHash: "50d87381bc34dfefb4dcbd7dce33cdd9ed67dc55", CSSHash: "1"},
 		"Components/Vim/Actions/UNDO.js":                                      {Src: "Components/Vim/Actions/UNDO.js", JSHash: "bb3f119407547329da561213cca7445b63e30d3c", CSSHash: "1"},
-		"Components/Vim/Actions/VA_REC.js":                                    {Src: "Components/Vim/Actions/VA_REC.js", JSHash: "8904fe42c7211334b063c6d89d0b3deb0ffd3633", CSSHash: "1"},
+		"Components/Vim/Actions/VA_REC.js":                                    {Src: "Components/Vim/Actions/VA_REC.js", JSHash: "beb5d83777afb4f3a043abd7c2331eb9a500b942", CSSHash: "1"},
 		"Components/Vim/Actions/VERSION.js":                                   {Src: "Components/Vim/Actions/VERSION.js", JSHash: "1aae87bf77f87a6202733ef515e927d788cd3bc5", CSSHash: "1"},
 		"Components/Vim/Actions/VISUAL.js":                                    {Src: "Components/Vim/Actions/VISUAL.js", JSHash: "2dba8beb95823fd5ff5af757de7319b7a0970cc4", CSSHash: "1"},
 		"Components/Vim/Actions/WORD.js":                                      {Src: "Components/Vim/Actions/WORD.js", JSHash: "dcbb5a4830c5a747ca3f1e6ab5fc6be68c1c3a9b", CSSHash: "1"},
@@ -439,17 +439,17 @@ var ClassMap = &classmap.Map{
 		"Components/Vim/StatusBar.js":                                         {Src: "Components/Vim/StatusBar.js", JSHash: "461f00364ced9cb6e0ae83b9d18c6456fb051e26", CSSHash: "1"},
 		"Components/Vim/Syntax/Analyzer.js":                                   {Src: "Components/Vim/Syntax/Analyzer.js", JSHash: "64b9a2ae4c6ba0f9fdc0dda87323786df6c6b339", CSSHash: "1"},
 		"Components/Vim/Syntax/Word.js":                                       {Src: "Components/Vim/Syntax/Word.js", JSHash: "a6d24370b0906cc0f09cfd68d96d635cd583fac3", CSSHash: "1"},
-		"Components/Vim/VimArea.js":                                           {Src: "Components/Vim/VimArea.js", JSHash: "9639b24336a69aba93eda2e61fc127fe8e78c9dd", CSSHash: "1"},
+		"Components/Vim/VimArea.js":                                           {Src: "Components/Vim/VimArea.js", JSHash: "3a0490b8490a8661cbd67969851ed26c57e2f5b0", CSSHash: "1"},
 		"Components/Vim/_this.js":                                             {Src: "Components/Vim/_this.js", JSHash: "f385a56129d2c933fd848501bbf3a5183a2dd3a8", CSSHash: "7949b25860fcef736927c01502aad09b56d764b2"},
 		"Components/_this.js":                                                 {Src: "Components/_this.js", JSHash: "f4cb7babe62a5cdae34d2c4ebcb55071e81da4ff", CSSHash: "1"},
-		"Dandelion/CSSAnimations/MovieClip.js":                                {Src: "Dandelion/CSSAnimations/MovieClip.js", JSHash: "5667064818a0ca32f11a9b5a27ed641058e9df6c", CSSHash: "daa6e6f4ee3365e599cf1b2680f3e907389534f3"},
+		"Dandelion/CSSAnimations/MovieClip.js":                                {Src: "Dandelion/CSSAnimations/MovieClip.js", JSHash: "3bee713b8529d9edc0e83d7928207019be6de78d", CSSHash: "daa6e6f4ee3365e599cf1b2680f3e907389534f3"},
 		"Dandelion/CSSAnimations/_this.js":                                    {Src: "Dandelion/CSSAnimations/_this.js", JSHash: "a01a6bcfc5851debc7179e9449dc93617bca3afc", CSSHash: "2d6b4b00f0c4050187ccf010e0a24e5bc6121d18"},
 		"Dandelion/CSSReset.js":                                               {Src: "Dandelion/CSSReset.js", JSHash: "f25ae8f90e11e3bb8eed6ebdac3a23305d615dc9", CSSHash: "59fbc1a2ec3f70e2b719fd73bff973efb34676c4"},
-		"Dandelion/IDOMElement.js":                                            {Src: "Dandelion/IDOMElement.js", JSHash: "8382686fccc93347661387bbe9c7a8a3c31fdc3f", CSSHash: "1"},
-		"Dandelion/IDOMObject.js":                                             {Src: "Dandelion/IDOMObject.js", JSHash: "5727639574a022feccfef1deb2056146f1f23c06", CSSHash: "1"},
+		"Dandelion/IDOMElement.js":                                            {Src: "Dandelion/IDOMElement.js", JSHash: "c9a1e06319b9512deab0ef08e523165730d52cd2", CSSHash: "1"},
+		"Dandelion/IDOMObject.js":                                             {Src: "Dandelion/IDOMObject.js", JSHash: "1b5f53247d14ef78bf25c07a0770bc1c54901fb8", CSSHash: "1"},
 		"Dandelion/StaticRes.js":                                              {Src: "Dandelion/StaticRes.js", JSHash: "43738524071b7207e6dba6bd223bf811bd475949", CSSHash: "1"},
 		"Dandelion/Window.js":                                                 {Src: "Dandelion/Window.js", JSHash: "ea38f2c0c2b5207abdb7265d2d5b7fa4177d0a47", CSSHash: "1"},
-		"Dandelion/_this.js":                                                  {Src: "Dandelion/_this.js", JSHash: "27db6b49f6b23b1a3e7e905932525a81621e0b8f", CSSHash: "1"},
+		"Dandelion/_this.js":                                                  {Src: "Dandelion/_this.js", JSHash: "063763bdcb6c4702c56e9f132dea13f4875b2d7f", CSSHash: "1"},
 		"Libraries/SyntaxHighlighter/Brush/AS3.js":                            {Src: "Libraries/SyntaxHighlighter/Brush/AS3.js", JSHash: "a9bcdf532ab90c0917f234e1fce13d7cbde6d303", CSSHash: "1"},
 		"Libraries/SyntaxHighlighter/Brush/AppleScript.js":                    {Src: "Libraries/SyntaxHighlighter/Brush/AppleScript.js", JSHash: "2c161d78cd5b293e420559a6cb41dbf52af36364", CSSHash: "1"},
 		"Libraries/SyntaxHighlighter/Brush/Bash.js":                           {Src: "Libraries/SyntaxHighlighter/Brush/Bash.js", JSHash: "e01737b50262fb8fda87df4d1d2fcc12c5cff279", CSSHash: "1"},
@@ -496,22 +496,22 @@ var ClassMap = &classmap.Map{
 		"Libraries/SyntaxHighlighter/_this.js":                                {Src: "Libraries/SyntaxHighlighter/_this.js", JSHash: "ebd53c1bd9ff84eb711687ceacb02ebf6357eec3", CSSHash: "3860c0c289ac761da7d9c595633f8bba8f58afe9"},
 		"System/Compression/Zlib.js":                                          {Src: "System/Compression/Zlib.js", JSHash: "50248acd8ef77f57eff8998011ac296b252142d4", CSSHash: "1"},
 		"System/Compression/_this.js":                                         {Src: "System/Compression/_this.js", JSHash: "237bff609161dca51d55c73b92a477c54286e26d", CSSHash: "1"},
-		"System/Cycle/Trigger.js":                                             {Src: "System/Cycle/Trigger.js", JSHash: "b18fae66ada79a1cc2e812dea1055422f1172a37", CSSHash: "1"},
-		"System/Cycle/_this.js":                                               {Src: "System/Cycle/_this.js", JSHash: "b1ff650c56acb89a96809cb7180c495a49684c46", CSSHash: "1"},
-		"System/Debug.js":                                                     {Src: "System/Debug.js", JSHash: "c821a438f97a2bae0114cd615113c3d278efe121", CSSHash: "1"},
+		"System/Cycle/Trigger.js":                                             {Src: "System/Cycle/Trigger.js", JSHash: "c02be788ca62d7fea52bcb4527b9f72133489e80", CSSHash: "1"},
+		"System/Cycle/_this.js":                                               {Src: "System/Cycle/_this.js", JSHash: "c6f4dc11ebd0a525e3718f2fe68ff23a90a22db4", CSSHash: "1"},
+		"System/Debug.js":                                                     {Src: "System/Debug.js", JSHash: "be249598521dbad45b8d64d31b10777212ff6c8c", CSSHash: "1"},
 		"System/Encoding/Base64.js":                                           {Src: "System/Encoding/Base64.js", JSHash: "19189ebf4db33bbf081acb98f496365bc313064f", CSSHash: "1"},
 		"System/Encoding/Utf8.js":                                             {Src: "System/Encoding/Utf8.js", JSHash: "f582c26e2b63071f6c475d1f09553b546ee0af0f", CSSHash: "1"},
 		"System/Encoding/_this.js":                                            {Src: "System/Encoding/_this.js", JSHash: "acf2ce9ee06a72f81447d72c01e655198e38fbc1", CSSHash: "1"},
 		"System/Global.js":                                                    {Src: "System/Global.js", JSHash: "a1b5eea0d218508e1d5d68f0ced64f16fc9595ce", CSSHash: "1"},
-		"System/Log.js":                                                       {Src: "System/Log.js", JSHash: "d2a2a12cf34bc2e737a3cc48cd6fc536c2ddc84e", CSSHash: "1"},
+		"System/Log.js":                                                       {Src: "System/Log.js", JSHash: "27a1d63a27b100873f4e513c3fce3a95cdbe6f72", CSSHash: "1"},
 		"System/Net/ClassLoader.js":                                           {Src: "System/Net/ClassLoader.js", JSHash: "7aa219e660357e3ee53a166bd961954fe97b01ec", CSSHash: "1"},
-		"System/Net/_this.js":                                                 {Src: "System/Net/_this.js", JSHash: "1b2e6ddd90efc213dbbd139e2dc891ab41ec043f", CSSHash: "1"},
+		"System/Net/_this.js":                                                 {Src: "System/Net/_this.js", JSHash: "ccbe15c6379321650758673d2499457f1c6014b8", CSSHash: "1"},
 		"System/Policy/_this.js":                                              {Src: "System/Policy/_this.js", JSHash: "94efec864f3f9258f9ed95d5eadd0a10d7e51797", CSSHash: "1"},
 		"System/Tick.js":                                                      {Src: "System/Tick.js", JSHash: "526500dfd490e4c29b30f9f00b32a238b74afedb", CSSHash: "1"},
 		"System/_this.js":                                                     {Src: "System/_this.js", JSHash: "234db843eb17b025eddacdca0083828d0e7700a6", CSSHash: "1"},
-		"System/utils/DataKey.js":                                             {Src: "System/utils/DataKey.js", JSHash: "2fbaf05a01bc5899943459e67bad487f10c39276", CSSHash: "1"},
+		"System/utils/DataKey.js":                                             {Src: "System/utils/DataKey.js", JSHash: "4da9882c28d1fd06444a89a013d35622b898d75f", CSSHash: "1"},
 		"System/utils/EventKey.js":                                            {Src: "System/utils/EventKey.js", JSHash: "c6285ef1d22a5e15b12c4fd13fa00d64517f59b8", CSSHash: "1"},
-		"System/utils/IKey.js":                                                {Src: "System/utils/IKey.js", JSHash: "e9e57a335ec6204b35fead34925cffdc3e38b55b", CSSHash: "1"},
+		"System/utils/IKey.js":                                                {Src: "System/utils/IKey.js", JSHash: "0c3a6d28cf25248b03b58a5e748e2c3a55cb7e5f", CSSHash: "1"},
 		"System/utils/Perf.js":                                                {Src: "System/utils/Perf.js", JSHash: "4a8c714fd0302d1bcad10c27bcd4a574ffe606eb", CSSHash: "1"},
 		"System/utils/_this.js":                                               {Src: "System/utils/_this.js", JSHash: "217041f4a86092e258a1c6624ff837cefd1ccc0f", CSSHash: "1"},
 	},
diff --git a/resolver-go/internal/resolver/resolver.go b/resolver-go/internal/resolver/resolver.go
index 64cfb1d..21975d6 100644
--- a/resolver-go/internal/resolver/resolver.go
+++ b/resolver-go/internal/resolver/resolver.go
@@ -325,7 +325,7 @@ func (r *Resolver) getExtern(f string) (closure.SourceInput, bool, error) {
 		return closure.SourceInput{}, false, err
 	}
 
-	src = closure.SourceInput{
+	src := closure.SourceInput{
 		Name:   f,
 		Source: string(b),
 	}