text: // Generated by Haxe
  (function (console) { "use strict";
  var $estr = function() { return js_Boot.__string_rec(this,''); };
  var EReg = function(r,opt) {
  	opt = opt.split("u").join("");
  	this.r = new RegExp(r,opt);
  };
  EReg.__name__ = true;
  EReg.prototype = {
  	split: function(s) {
  		var d = "#__delim__#";
  		return s.replace(this.r,d).split(d);
  	}
  };
  var HxOverrides = function() { };
  HxOverrides.__name__ = true;
  HxOverrides.dateStr = function(date) {
  	var m = date.getMonth() + 1;
  	var d = date.getDate();
  	var h = date.getHours();
  	var mi = date.getMinutes();
  	var s = date.getSeconds();
  	return date.getFullYear() + "-" + (m < 10?"0" + m:"" + m) + "-" + (d < 10?"0" + d:"" + d) + " " + (h < 10?"0" + h:"" + h) + ":" + (mi < 10?"0" + mi:"" + mi) + ":" + (s < 10?"0" + s:"" + s);
  };
  HxOverrides.cca = function(s,index) {
  	var x = s.charCodeAt(index);
  	if(x != x) return undefined;
  	return x;
  };
  HxOverrides.substr = function(s,pos,len) {
  	if(len == null) len = s.length; else if(len < 0) {
  		if(pos == 0) len = s.length + len; else return "";
  	}
  	if(pos < 0) {
  		pos = s.length + pos;
  		if(pos < 0) pos = 0;
  	}
  	return s.substr(pos,len);
  };
  HxOverrides.iter = function(a) {
  	return { cur : 0, arr : a, hasNext : function() {
  		return this.cur < this.arr.length;
  	}, next : function() {
  		return this.arr[this.cur++];
  	}};
  };
  var Lambda = function() { };
  Lambda.__name__ = true;
  Lambda.fold = function(it,f,first) {
  	var $it0 = $iterator(it)();
  	while( $it0.hasNext() ) {
  		var x = $it0.next();
  		first = f(x,first);
  	}
  	return first;
  };
  Lambda.find = function(it,f) {
  	var $it0 = $iterator(it)();
  	while( $it0.hasNext() ) {
  		var v = $it0.next();
  		if(f(v)) return v;
  	}
  	return null;
  };
  Math.__name__ = true;
  var Reflect = function() { };
  Reflect.__name__ = true;
  Reflect.deleteField = function(o,field) {
  	if(!Object.prototype.hasOwnProperty.call(o,field)) return false;
  	delete(o[field]);
  	return true;
  };
  var Std = function() { };
  Std.__name__ = true;
  Std.string = function(s) {
  	return js_Boot.__string_rec(s,"");
  };
  Std["int"] = function(x) {
  	return x | 0;
  };
  Std.parseInt = function(x) {
  	var v = parseInt(x,10);
  	if(v == 0 && (HxOverrides.cca(x,1) == 120 || HxOverrides.cca(x,1) == 88)) v = parseInt(x);
  	if(isNaN(v)) return null;
  	return v;
  };
  var StringBuf = function() {
  	this.b = "";
  };
  StringBuf.__name__ = true;
  StringBuf.prototype = {
  	add: function(x) {
  		this.b += Std.string(x);
  	}
  };
  var StringTools = function() { };
  StringTools.__name__ = true;
  StringTools.startsWith = function(s,start) {
  	return s.length >= start.length && HxOverrides.substr(s,0,start.length) == start;
  };
  StringTools.isSpace = function(s,pos) {
  	var c = HxOverrides.cca(s,pos);
  	return c > 8 && c < 14 || c == 32;
  };
  StringTools.ltrim = function(s) {
  	var l = s.length;
  	var r = 0;
  	while(r < l && StringTools.isSpace(s,r)) r++;
  	if(r > 0) return HxOverrides.substr(s,r,l - r); else return s;
  };
  StringTools.rtrim = function(s) {
  	var l = s.length;
  	var r = 0;
  	while(r < l && StringTools.isSpace(s,l - r - 1)) r++;
  	if(r > 0) return HxOverrides.substr(s,0,l - r); else return s;
  };
  StringTools.trim = function(s) {
  	return StringTools.ltrim(StringTools.rtrim(s));
  };
  var examples_basic_Main = function() { };
  examples_basic_Main.__name__ = true;
  examples_basic_Main.render = function(count) {
  };
  examples_basic_Main.main = function() {
  	var rootElement = window.document.getElementById("root");
  	var vnode1 = vmort_dom_VElements.clsif(vmort_dom_VElements.clsif(vmort_dom_VElements.cls(vmort_dom_VDom.el(vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("div")),vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("test-class test-class-1 test-class-2")),vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue(true),vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("class-true-1")),vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue(false),vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("class-true-2"),vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("class-false-2")).append([vmort__$VNode_VNode_$Impl_$.fromVText(vmort_dom_VDom.text(vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("Some text"))),vmort__$VNode_VNode_$Impl_$.fromVElement(vmort_dom_VElements.css(vmort_dom_VDom.el(vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("span")),vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("color"),vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("blue")).child(vmort__$VNode_VNode_$Impl_$.fromString("My span text"))),vmort__$VNode_VNode_$Impl_$.fromVElement(vmort_dom_VDom.el(vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("br"))),vmort__$VNode_VNode_$Impl_$.fromVElement(vmort_dom_VElements.cssif(vmort_dom_VDom.el(vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("span")),vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue(true),vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("background-color"),vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("#ddd")).child(vmort__$VNode_VNode_$Impl_$.fromVElement(vmort_dom_VDom.el(vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("input"))))),vmort__$VNode_VNode_$Impl_$.fromVElement(vmort_dom_VDom.el(vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("br"))),vmort__$VNode_VNode_$Impl_$.fromString("Hello, world!"),vmort__$VNode_VNode_$Impl_$.fromVElement(vmort_dom_VDom.el(vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("hr"))),vmort__$VNode_VNode_$Impl_$.fromVElement(vmort_dom_VDom.el(vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("button")).on("click",examples_basic_Main.onClick).child(vmort__$VNode_VNode_$Impl_$.fromString("Click me")))]);
  	console.log(vnode1);
  	var node1 = vmort_dom_VNodes.reify(vmort__$VNode_VNode_$Impl_$.fromVElement(vnode1));
  	var vnode2 = vmort_dom_VDom.el(vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("div")).append([vmort__$VNode_VNode_$Impl_$.fromString("My text content"),vmort__$VNode_VNode_$Impl_$.fromVElement(vmort_dom_VDom.el(vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("span")).append([vmort__$VNode_VNode_$Impl_$.fromVElement(vmort_dom_VDom.el(vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue("input")))]))]);
  	var node2 = vmort_dom_VNodes.reify(vmort__$VNode_VNode_$Impl_$.fromVElement(vnode2));
  	rootElement.appendChild(node1);
  	rootElement.appendChild(node2);
  };
  examples_basic_Main.onClick = function(e) {
  	console.log("click");
  };
  var haxe_IMap = function() { };
  haxe_IMap.__name__ = true;
  var haxe_ds__$StringMap_StringMapIterator = function(map,keys) {
  	this.map = map;
  	this.keys = keys;
  	this.index = 0;
  	this.count = keys.length;
  };
  haxe_ds__$StringMap_StringMapIterator.__name__ = true;
  haxe_ds__$StringMap_StringMapIterator.prototype = {
  	hasNext: function() {
  		return this.index < this.count;
  	}
  	,next: function() {
  		return this.map.get(this.keys[this.index++]);
  	}
  };
  var haxe_ds_StringMap = function() {
  	this.h = { };
  };
  haxe_ds_StringMap.__name__ = true;
  haxe_ds_StringMap.__interfaces__ = [haxe_IMap];
  haxe_ds_StringMap.prototype = {
  	set: function(key,value) {
  		if(__map_reserved[key] != null) this.setReserved(key,value); else this.h[key] = value;
  	}
  	,get: function(key) {
  		if(__map_reserved[key] != null) return this.getReserved(key);
  		return this.h[key];
  	}
  	,setReserved: function(key,value) {
  		if(this.rh == null) this.rh = { };
  		this.rh["$" + key] = value;
  	}
  	,getReserved: function(key) {
  		if(this.rh == null) return null; else return this.rh["$" + key];
  	}
  	,keys: function() {
  		var _this = this.arrayKeys();
  		return HxOverrides.iter(_this);
  	}
  	,arrayKeys: function() {
  		var out = [];
  		for( var key in this.h ) {
  		if(this.h.hasOwnProperty(key)) out.push(key);
  		}
  		if(this.rh != null) {
  			for( var key in this.rh ) {
  			if(key.charCodeAt(0) == 36) out.push(key.substr(1));
  			}
  		}
  		return out;
  	}
  	,iterator: function() {
  		return new haxe_ds__$StringMap_StringMapIterator(this,this.arrayKeys());
  	}
  	,toString: function() {
  		var s = new StringBuf();
  		s.b += "{";
  		var keys = this.arrayKeys();
  		var _g1 = 0;
  		var _g = keys.length;
  		while(_g1 < _g) {
  			var i = _g1++;
  			var k = keys[i];
  			if(k == null) s.b += "null"; else s.b += "" + k;
  			s.b += " => ";
  			s.add(Std.string(__map_reserved[k] != null?this.getReserved(k):this.h[k]));
  			if(i < keys.length) s.b += ", ";
  		}
  		s.b += "}";
  		return s.b;
  	}
  };
  var js_Boot = function() { };
  js_Boot.__name__ = true;
  js_Boot.__string_rec = function(o,s) {
  	if(o == null) return "null";
  	if(s.length >= 5) return "<...>";
  	var t = typeof(o);
  	if(t == "function" && (o.__name__ || o.__ename__)) t = "object";
  	switch(t) {
  	case "object":
  		if(o instanceof Array) {
  			if(o.__enum__) {
  				if(o.length == 2) return o[0];
  				var str2 = o[0] + "(";
  				s += "\t";
  				var _g1 = 2;
  				var _g = o.length;
  				while(_g1 < _g) {
  					var i1 = _g1++;
  					if(i1 != 2) str2 += "," + js_Boot.__string_rec(o[i1],s); else str2 += js_Boot.__string_rec(o[i1],s);
  				}
  				return str2 + ")";
  			}
  			var l = o.length;
  			var i;
  			var str1 = "[";
  			s += "\t";
  			var _g2 = 0;
  			while(_g2 < l) {
  				var i2 = _g2++;
  				str1 += (i2 > 0?",":"") + js_Boot.__string_rec(o[i2],s);
  			}
  			str1 += "]";
  			return str1;
  		}
  		var tostr;
  		try {
  			tostr = o.toString;
  		} catch( e ) {
  			return "???";
  		}
  		if(tostr != null && tostr != Object.toString && typeof(tostr) == "function") {
  			var s2 = o.toString();
  			if(s2 != "[object Object]") return s2;
  		}
  		var k = null;
  		var str = "{\n";
  		s += "\t";
  		var hasp = o.hasOwnProperty != null;
  		for( var k in o ) {
  		if(hasp && !o.hasOwnProperty(k)) {
  			continue;
  		}
  		if(k == "prototype" || k == "__class__" || k == "__super__" || k == "__interfaces__" || k == "__properties__") {
  			continue;
  		}
  		if(str.length != 2) str += ", \n";
  		str += s + k + " : " + js_Boot.__string_rec(o[k],s);
  		}
  		s = s.substring(1);
  		str += "\n" + s + "}";
  		return str;
  	case "function":
  		return "<function>";
  	case "string":
  		return o;
  	default:
  		return String(o);
  	}
  };
  var vmort_Diff = function() { };
  vmort_Diff.__name__ = true;
  vmort_Diff.getPatch = function(vold,vnew) {
  	var patch = new vmort_Patch();
  	patch.isVText = vmort__$VNode_VNode_$Impl_$.isVText(vold) && vmort__$VNode_VNode_$Impl_$.isVText(vnew);
  	if(patch.isVText) return vmort_Diff.fillVTextPatch(vmort__$VNode_VNode_$Impl_$.toVText(vold),vmort__$VNode_VNode_$Impl_$.toVText(vnew),patch);
  	patch.isVElement = vmort__$VNode_VNode_$Impl_$.isVElement(vold) && vmort__$VNode_VNode_$Impl_$.isVElement(vnew);
  	if(patch.isVElement) return vmort_Diff.fillVElementPatch(vmort__$VNode_VNode_$Impl_$.toVElement(vold),vmort__$VNode_VNode_$Impl_$.toVElement(vnew),patch);
  	return patch;
  };
  vmort_Diff.fillVTextPatch = function(vold,vnew,patch) {
  	patch.isPatchable = true;
  	patch.changedText = vnew.text;
  	return patch;
  };
  vmort_Diff.fillVElementPatch = function(vold,vnew,patch) {
  	patch.isPatchable = vmort_Diff.isVElementPatchable(vold,vnew);
  	if(!patch.isPatchable) return patch;
  	vmort_Diff.fillVElementAttributesPatch(vold,vnew,patch);
  	vmort_Diff.fillVElementEventHandlersPatch(vold,vnew,patch);
  	vmort_Diff.fillVElementChildrenPatch(vold,vnew,patch);
  	return patch;
  };
  vmort_Diff.isVElementPatchable = function(vold,vnew) {
  	if(vold.key != null && vnew.key != null && vold.key == vnew.key) return true;
  	if(vold.tag == vnew.tag && vold["namespace"] == vnew["namespace"]) return true;
  	return false;
  };
  vmort_Diff.fillVElementAttributesPatch = function(vold,vnew,patch) {
  	return patch;
  };
  vmort_Diff.fillVElementEventHandlersPatch = function(vold,vnew,patch) {
  	return patch;
  };
  vmort_Diff.fillVElementChildrenPatch = function(vold,vnew,patch) {
  	return patch;
  };
  var vmort_Patch = function() {
  	this.movedChildren = [];
  	this.removedChildren = [];
  	this.addedChildren = [];
  	this.changedEvents = new haxe_ds_StringMap();
  	this.removedEvents = new haxe_ds_StringMap();
  	this.addedEvents = new haxe_ds_StringMap();
  	this.changedAttributes = new haxe_ds_StringMap();
  	this.removedAttributes = new haxe_ds_StringMap();
  	this.addedAttributes = new haxe_ds_StringMap();
  	this.changedText = null;
  	this.isVElement = false;
  	this.isVText = false;
  	this.isPatchable = false;
  };
  vmort_Patch.__name__ = true;
  vmort_Patch.prototype = {
  	hasChangedText: function() {
  		return this.changedText != null;
  	}
  	,hasAddedAttributes: function() {
  		return vmort_util_Maps.isFull(this.addedAttributes);
  	}
  	,hasRemovedAttributes: function() {
  		return vmort_util_Maps.isFull(this.removedAttributes);
  	}
  	,hasChangedAttributes: function() {
  		return vmort_util_Maps.isFull(this.changedAttributes);
  	}
  	,hasAttributeDiffs: function() {
  		return this.hasAddedAttributes() || this.hasRemovedAttributes() || this.hasChangedAttributes();
  	}
  	,hasAddedEvents: function() {
  		return vmort_util_Maps.isFull(this.addedEvents);
  	}
  	,hasRemovedEvents: function() {
  		return vmort_util_Maps.isFull(this.removedEvents);
  	}
  	,hasChangedEvents: function() {
  		return vmort_util_Maps.isFull(this.changedEvents);
  	}
  	,hasEventDiffs: function() {
  		return this.hasAddedEvents() || this.hasRemovedEvents() || this.hasChangedEvents();
  	}
  	,hasAddedChildren: function() {
  		return vmort_util_Arrays.isFull(this.addedChildren);
  	}
  	,hasRemovedChildren: function() {
  		return vmort_util_Arrays.isFull(this.removedChildren);
  	}
  	,hasMovedChildren: function() {
  		return vmort_util_Arrays.isFull(this.movedChildren);
  	}
  	,hasChildrenDiffs: function() {
  		return this.hasAddedChildren() || this.hasRemovedChildren() || this.hasMovedChildren();
  	}
  	,hasChanges: function() {
  		if(this.isVText) return this.hasChangedText(); else if(this.isVElement) return this.hasAttributeDiffs() || this.hasEventDiffs() || this.hasChildrenDiffs(); else return false;
  	}
  };
  var vmort_VElement = function(tag,attributes,events,children) {
  	this.tag = vmort_VElement.DEFAULT_TAG;
  	this.key = vmort_VElement.DEFAULT_KEY;
  	this["namespace"] = vmort_VElement.DEFAULT_NAMESPACE;
  	this.attributes = new haxe_ds_StringMap();
  	this.events = new haxe_ds_StringMap();
  	this.children = [];
  	this.ref = null;
  	if(tag != null) this.setTag(tag);
  	if(attributes != null) this.addAttributes(attributes);
  	if(events != null) this.addEvents(events);
  	if(children != null) this.addChildren(children);
  };
  vmort_VElement.__name__ = true;
  vmort_VElement.prototype = {
  	setTag: function(tag) {
  		this.tag = tag;
  		return this;
  	}
  	,setKey: function(key) {
  		this.key = key;
  		return this;
  	}
  	,setNamespace: function($namespace) {
  		this["namespace"] = $namespace;
  		return this;
  	}
  	,addAttribute: function(name,value) {
  		if(name == vmort_VElement.KEY_ATTRIBUTE_NAME) return this.setKey(vmort__$Value_Value_$Impl_$.toString(value)); else if(vmort_util_Arrays.contains(vmort_VElement.NAMESPACE_ATTRIBUTE_NAMES,name)) return this.setNamespace(vmort__$Value_Value_$Impl_$.toString(value)); else {
  			this.attributes.set(name,value);
  			return this;
  		}
  	}
  	,attr: function(name,value) {
  		return this.addAttribute(name,value);
  	}
  	,addAttributes: function(attributes) {
  		var $it0 = attributes.keys();
  		while( $it0.hasNext() ) {
  			var name = $it0.next();
  			this.addAttribute(name,__map_reserved[name] != null?attributes.getReserved(name):attributes.h[name]);
  		}
  		return this;
  	}
  	,attrs: function(attributes) {
  		return this.addAttributes(attributes);
  	}
  	,addEvent: function(name,eventHandler) {
  		this.events.set(name,eventHandler);
  		return this;
  	}
  	,on: function(name,eventHandler) {
  		return this.addEvent(name,eventHandler);
  	}
  	,addEvents: function(events) {
  		var $it0 = events.keys();
  		while( $it0.hasNext() ) {
  			var name = $it0.next();
  			this.addEvent(name,__map_reserved[name] != null?events.getReserved(name):events.h[name]);
  		}
  		return this;
  	}
  	,addChild: function(child) {
  		this.children.push(child);
  		return this;
  	}
  	,child: function(child) {
  		return this.addChild(child);
  	}
  	,addChildren: function(children) {
  		var _g = 0;
  		while(_g < children.length) {
  			var child = children[_g];
  			++_g;
  			this.addChild(child);
  		}
  		return this;
  	}
  	,append: function(children) {
  		return this.addChildren(children);
  	}
  	,setRef: function(ref) {
  		this.ref = ref;
  		return this;
  	}
  };
  var vmort_VNodeType = { __ename__ : true, __constructs__ : ["VNElement","VNText"] };
  vmort_VNodeType.VNElement = function(element) { var $x = ["VNElement",0,element]; $x.__enum__ = vmort_VNodeType; $x.toString = $estr; return $x; };
  vmort_VNodeType.VNText = function(text) { var $x = ["VNText",1,text]; $x.__enum__ = vmort_VNodeType; $x.toString = $estr; return $x; };
  var vmort__$VNode_VNode_$Impl_$ = {};
  vmort__$VNode_VNode_$Impl_$.__name__ = true;
  vmort__$VNode_VNode_$Impl_$._new = function(vne) {
  	return vne;
  };
  vmort__$VNode_VNode_$Impl_$.fromVNodeType = function(vne) {
  	return vmort__$VNode_VNode_$Impl_$._new(vne);
  };
  vmort__$VNode_VNode_$Impl_$.fromVElement = function(v) {
  	return vmort__$VNode_VNode_$Impl_$.fromVNodeType(vmort_VNodeType.VNElement(v));
  };
  vmort__$VNode_VNode_$Impl_$.fromVText = function(v) {
  	return vmort__$VNode_VNode_$Impl_$.fromVNodeType(vmort_VNodeType.VNText(v));
  };
  vmort__$VNode_VNode_$Impl_$.fromString = function(v) {
  	return vmort__$VNode_VNode_$Impl_$.fromVText(new vmort_VText(v));
  };
  vmort__$VNode_VNode_$Impl_$.toVNodeType = function(this1) {
  	return this1;
  };
  vmort__$VNode_VNode_$Impl_$.toVElement = function(this1) {
  	switch(this1[1]) {
  	case 0:
  		var v = this1[2];
  		return v;
  	default:
  		throw new Error("Cannot convert VNode to VElement");
  	}
  };
  vmort__$VNode_VNode_$Impl_$.toVText = function(this1) {
  	switch(this1[1]) {
  	case 1:
  		var v = this1[2];
  		return v;
  	default:
  		throw new Error("Cannot convert VNode to VText");
  	}
  };
  vmort__$VNode_VNode_$Impl_$.isVElement = function(this1) {
  	switch(this1[1]) {
  	case 0:
  		var v = this1[2];
  		return true;
  	default:
  		return false;
  	}
  };
  vmort__$VNode_VNode_$Impl_$.isVText = function(this1) {
  	switch(this1[1]) {
  	case 1:
  		var v = this1[2];
  		return true;
  	default:
  		return false;
  	}
  };
  vmort__$VNode_VNode_$Impl_$.getRef = function(this1) {
  	switch(this1[1]) {
  	case 0:
  		var v = this1[2];
  		return v.ref;
  	case 1:
  		var v1 = this1[2];
  		return v1.ref;
  	}
  };
  vmort__$VNode_VNode_$Impl_$.setRef = function(this1,ref) {
  	switch(this1[1]) {
  	case 0:
  		var v = this1[2];
  		v.setRef(ref);
  		break;
  	case 1:
  		var v1 = this1[2];
  		v1.setRef(ref);
  		break;
  	}
  };
  var vmort_VText = function(text) {
  	this.text = text;
  	this.ref = null;
  };
  vmort_VText.__name__ = true;
  vmort_VText.prototype = {
  	setText: function(text) {
  		this.text = text;
  		return this;
  	}
  	,setRef: function(ref) {
  		this.ref = ref;
  		return this;
  	}
  };
  var vmort_ValOrFuncType = { __ename__ : true, __constructs__ : ["Value","Func"] };
  vmort_ValOrFuncType.Value = function(v) { var $x = ["Value",0,v]; $x.__enum__ = vmort_ValOrFuncType; $x.toString = $estr; return $x; };
  vmort_ValOrFuncType.Func = function(v) { var $x = ["Func",1,v]; $x.__enum__ = vmort_ValOrFuncType; $x.toString = $estr; return $x; };
  var vmort__$ValOrFunc_ValOrFunc_$Impl_$ = {};
  vmort__$ValOrFunc_ValOrFunc_$Impl_$.__name__ = true;
  vmort__$ValOrFunc_ValOrFunc_$Impl_$._new = function(valOrFunc) {
  	return valOrFunc;
  };
  vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValOrFuncType = function(v) {
  	return v;
  };
  vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue = function(v) {
  	return vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValOrFuncType(vmort_ValOrFuncType.Value(v));
  };
  vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromFunc = function(v) {
  	return vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValOrFuncType(vmort_ValOrFuncType.Func(v));
  };
  vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue = function(this1) {
  	if(this1 == null) return null;
  	switch(this1[1]) {
  	case 0:
  		var v = this1[2];
  		return v;
  	case 1:
  		var f = this1[2];
  		return f();
  	}
  };
  vmort__$ValOrFunc_ValOrFunc_$Impl_$.toFunc = function(this1) {
  	if(this1 == null) return null;
  	switch(this1[1]) {
  	case 0:
  		var v = this1[2];
  		return function() {
  			return v;
  		};
  	case 1:
  		var f = this1[2];
  		return f;
  	}
  };
  var vmort_ValueType = { __ename__ : true, __constructs__ : ["VInt","VFloat","VBool","VString","VDate","VStringArray","VStringMap","VNone"] };
  vmort_ValueType.VInt = function(v) { var $x = ["VInt",0,v]; $x.__enum__ = vmort_ValueType; $x.toString = $estr; return $x; };
  vmort_ValueType.VFloat = function(v) { var $x = ["VFloat",1,v]; $x.__enum__ = vmort_ValueType; $x.toString = $estr; return $x; };
  vmort_ValueType.VBool = function(v) { var $x = ["VBool",2,v]; $x.__enum__ = vmort_ValueType; $x.toString = $estr; return $x; };
  vmort_ValueType.VString = function(v) { var $x = ["VString",3,v]; $x.__enum__ = vmort_ValueType; $x.toString = $estr; return $x; };
  vmort_ValueType.VDate = function(v) { var $x = ["VDate",4,v]; $x.__enum__ = vmort_ValueType; $x.toString = $estr; return $x; };
  vmort_ValueType.VStringArray = function(v) { var $x = ["VStringArray",5,v]; $x.__enum__ = vmort_ValueType; $x.toString = $estr; return $x; };
  vmort_ValueType.VStringMap = function(v) { var $x = ["VStringMap",6,v]; $x.__enum__ = vmort_ValueType; $x.toString = $estr; return $x; };
  vmort_ValueType.VNone = ["VNone",7];
  vmort_ValueType.VNone.toString = $estr;
  vmort_ValueType.VNone.__enum__ = vmort_ValueType;
  var vmort__$Value_Value_$Impl_$ = {};
  vmort__$Value_Value_$Impl_$.__name__ = true;
  vmort__$Value_Value_$Impl_$._new = function(ve) {
  	return ve;
  };
  vmort__$Value_Value_$Impl_$.fromValueType = function(ve) {
  	return vmort__$Value_Value_$Impl_$._new(ve);
  };
  vmort__$Value_Value_$Impl_$.fromInt = function(v) {
  	return vmort__$Value_Value_$Impl_$.fromValueType(vmort_ValueType.VInt(v));
  };
  vmort__$Value_Value_$Impl_$.fromFloat = function(v) {
  	return vmort__$Value_Value_$Impl_$.fromValueType(vmort_ValueType.VFloat(v));
  };
  vmort__$Value_Value_$Impl_$.fromBool = function(v) {
  	return vmort__$Value_Value_$Impl_$.fromValueType(vmort_ValueType.VBool(v));
  };
  vmort__$Value_Value_$Impl_$.fromString = function(v) {
  	return vmort__$Value_Value_$Impl_$.fromValueType(vmort_ValueType.VString(v));
  };
  vmort__$Value_Value_$Impl_$.fromDate = function(v) {
  	return vmort__$Value_Value_$Impl_$.fromValueType(vmort_ValueType.VDate(v));
  };
  vmort__$Value_Value_$Impl_$.fromStringArray = function(v) {
  	return vmort__$Value_Value_$Impl_$.fromValueType(vmort_ValueType.VStringArray(v));
  };
  vmort__$Value_Value_$Impl_$.fromStringMap = function(v) {
  	return vmort__$Value_Value_$Impl_$.fromValueType(vmort_ValueType.VStringMap(v));
  };
  vmort__$Value_Value_$Impl_$.toValueType = function(this1) {
  	return this1;
  };
  vmort__$Value_Value_$Impl_$.toInt = function(this1) {
  	switch(this1[1]) {
  	case 0:
  		var v = this1[2];
  		return v;
  	case 1:
  		var v1 = this1[2];
  		return v1 | 0;
  	case 2:
  		var v2 = this1[2];
  		if(v2) return 1; else return 0;
  		break;
  	case 3:
  		var v3 = this1[2];
  		return Std.parseInt(v3);
  	case 4:
  		var v4 = this1[2];
  		return Std["int"](v4.getTime());
  	default:
  		throw new Error("Cannot convert value to Int");
  	}
  };
  vmort__$Value_Value_$Impl_$.toFloat = function(this1) {
  	switch(this1[1]) {
  	case 0:
  		var v = this1[2];
  		return v;
  	case 1:
  		var v1 = this1[2];
  		return v1;
  	case 2:
  		var v2 = this1[2];
  		if(v2) return 1.0; else return 0.0;
  		break;
  	case 3:
  		var v3 = this1[2];
  		return parseFloat(v3);
  	case 4:
  		var v4 = this1[2];
  		return v4.getTime();
  	default:
  		throw new Error("Cannot convert value to Float");
  	}
  };
  vmort__$Value_Value_$Impl_$.toBool = function(this1) {
  	switch(this1[1]) {
  	case 0:
  		var v = this1[2];
  		return v != 0;
  	case 1:
  		var v1 = this1[2];
  		return v1 != 0.0;
  	case 2:
  		var v2 = this1[2];
  		return v2;
  	case 3:
  		var v3 = this1[2];
  		return v3 != null && v3 != "";
  	default:
  		throw new Error("Cannot convert value to Bool");
  	}
  };
  vmort__$Value_Value_$Impl_$.toString = function(this1) {
  	switch(this1[1]) {
  	case 0:
  		var v = this1[2];
  		if(v == null) return "null"; else return "" + v;
  		break;
  	case 1:
  		var v1 = this1[2];
  		if(v1 == null) return "null"; else return "" + v1;
  		break;
  	case 2:
  		var v2 = this1[2];
  		if(v2 == null) return "null"; else return "" + v2;
  		break;
  	case 3:
  		var v3 = this1[2];
  		return v3;
  	case 4:
  		var v4 = this1[2];
  		return HxOverrides.dateStr(v4);
  	case 5:
  		var v5 = this1[2];
  		return v5.join(" ");
  	case 6:
  		var v6 = this1[2];
  		return v6.toString();
  	case 7:
  		return "";
  	}
  };
  vmort__$Value_Value_$Impl_$.toDate = function(this1) {
  	switch(this1[1]) {
  	case 4:
  		var v = this1[2];
  		return v;
  	default:
  		throw new Error("Cannot convert value to Date");
  	}
  };
  vmort__$Value_Value_$Impl_$.toStringArray = function(this1) {
  	switch(this1[1]) {
  	case 5:
  		var v = this1[2];
  		return v;
  	default:
  		throw new Error("Cannot convert value to Array<String>");
  	}
  };
  vmort__$Value_Value_$Impl_$.toStringMap = function(this1) {
  	switch(this1[1]) {
  	case 6:
  		var v = this1[2];
  		return v;
  	default:
  		throw new Error("Cannot convert value to Map<String, String>");
  	}
  };
  vmort__$Value_Value_$Impl_$.toDynamic = function(this1) {
  	switch(this1[1]) {
  	case 0:
  		var v = this1[2];
  		return v;
  	case 1:
  		var v1 = this1[2];
  		return v1;
  	case 2:
  		var v2 = this1[2];
  		return v2;
  	case 3:
  		var v3 = this1[2];
  		return v3;
  	case 4:
  		var v4 = this1[2];
  		return v4;
  	case 5:
  		var v5 = this1[2];
  		return v5;
  	case 6:
  		var v6 = this1[2];
  		return v6;
  	case 7:
  		return null;
  	}
  };
  vmort__$Value_Value_$Impl_$.isInt = function(this1) {
  	switch(this1[1]) {
  	case 0:
  		var v = this1[2];
  		return true;
  	default:
  		return false;
  	}
  };
  vmort__$Value_Value_$Impl_$.isFloat = function(this1) {
  	switch(this1[1]) {
  	case 1:
  		var v = this1[2];
  		return true;
  	default:
  		return false;
  	}
  };
  vmort__$Value_Value_$Impl_$.isBool = function(this1) {
  	switch(this1[1]) {
  	case 2:
  		var v = this1[2];
  		return true;
  	default:
  		return false;
  	}
  };
  vmort__$Value_Value_$Impl_$.isString = function(this1) {
  	switch(this1[1]) {
  	case 3:
  		var v = this1[2];
  		return true;
  	default:
  		return false;
  	}
  };
  vmort__$Value_Value_$Impl_$.isDate = function(this1) {
  	switch(this1[1]) {
  	case 4:
  		var v = this1[2];
  		return true;
  	default:
  		return false;
  	}
  };
  vmort__$Value_Value_$Impl_$.isStringArray = function(this1) {
  	switch(this1[1]) {
  	case 5:
  		var v = this1[2];
  		return true;
  	default:
  		return false;
  	}
  };
  vmort__$Value_Value_$Impl_$.isStringMap = function(this1) {
  	switch(this1[1]) {
  	case 6:
  		var v = this1[2];
  		return true;
  	default:
  		return false;
  	}
  };
  vmort__$Value_Value_$Impl_$.isNone = function(this1) {
  	switch(this1[1]) {
  	case 7:
  		return true;
  	default:
  		return false;
  	}
  };
  var vmort_dom_Elements = function() { };
  vmort_dom_Elements.__name__ = true;
  vmort_dom_Elements.addAttribute = function(element,name,value) {
  	if(name == vmort_dom_VElements.V_CLASSES_ATTRIBUTE_NAME) {
  		var className = vmort__$Value_Value_$Impl_$.toStringArray(value).join(" ");
  		element.className = className;
  	} else if(name == vmort_dom_VElements.V_STYLES_ATTRIBUTE_NAME) {
  		var styles = vmort__$Value_Value_$Impl_$.toStringMap(value);
  		var $it0 = styles.keys();
  		while( $it0.hasNext() ) {
  			var styleKey = $it0.next();
  			element.style.setProperty(styleKey,__map_reserved[styleKey] != null?styles.getReserved(styleKey):styles.h[styleKey]);
  		}
  	} else element.setAttribute(name,vmort__$Value_Value_$Impl_$.toString(value));
  	return element;
  };
  vmort_dom_Elements.addAttributes = function(element,attributes) {
  	var $it0 = attributes.keys();
  	while( $it0.hasNext() ) {
  		var key = $it0.next();
  		vmort_dom_Elements.addAttribute(element,key,__map_reserved[key] != null?attributes.getReserved(key):attributes.h[key]);
  	}
  	return element;
  };
  vmort_dom_Elements.removeAttribute = function(element,name) {
  	if(name == vmort_dom_VElements.V_CLASSES_ATTRIBUTE_NAME) element.removeAttribute(vmort_dom_Elements.CLASS_NAME_ATTRIBUTE_NAME); else if(name == vmort_dom_VElements.V_STYLES_ATTRIBUTE_NAME) element.removeAttribute(vmort_dom_Elements.STYLE_ATTRIBUTE_NAME); else element.removeAttribute(name);
  	return element;
  };
  vmort_dom_Elements.addEvent = function(element,name,eventHandler) {
  	if(!StringTools.startsWith(name,vmort_dom_Elements.EVENT_PREFIX)) name = "" + vmort_dom_Elements.EVENT_PREFIX + name;
  	element[name] = eventHandler;
  	return element;
  };
  vmort_dom_Elements.addEvents = function(element,events) {
  	var $it0 = events.keys();
  	while( $it0.hasNext() ) {
  		var name = $it0.next();
  		vmort_dom_Elements.addEvent(element,name,__map_reserved[name] != null?events.getReserved(name):events.h[name]);
  	}
  	return element;
  };
  vmort_dom_Elements.removeEvent = function(element,name) {
  	if(!StringTools.startsWith(name,vmort_dom_Elements.EVENT_PREFIX)) name = "" + vmort_dom_Elements.EVENT_PREFIX + name;
  	Reflect.deleteField(element,name);
  	return element;
  };
  vmort_dom_Elements.addChild = function(element,vnode) {
  	var child = vmort_dom_VNodes.reify(vnode);
  	element.appendChild(child);
  	return element;
  };
  vmort_dom_Elements.addChildren = function(element,vnodes) {
  	var _g = 0;
  	while(_g < vnodes.length) {
  		var vnode = vnodes[_g];
  		++_g;
  		vmort_dom_Elements.addChild(element,vnode);
  	}
  	return element;
  };
  var vmort_dom_VDom = function() { };
  vmort_dom_VDom.__name__ = true;
  vmort_dom_VDom.createElement = function(tag,attributes,events,children) {
  	return new vmort_VElement(vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(tag),vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(attributes),vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(events),vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(children));
  };
  vmort_dom_VDom.createText = function(text) {
  	return new vmort_VText(vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(text));
  };
  vmort_dom_VDom.updateNode = function(vnodeOld,vnodeNew) {
  	var patch = vmort_Diff.getPatch(vnodeOld,vnodeNew);
  	if(!patch.isPatchable) vmort_dom_VDom.replaceNode(vnodeOld,vnodeNew);
  	if(!patch.hasChanges()) {
  		vmort__$VNode_VNode_$Impl_$.setRef(vnodeNew,vmort__$VNode_VNode_$Impl_$.getRef(vnodeOld));
  		return;
  	}
  	if(patch.isVText) {
  		vmort_dom_VDom.updateText(vnodeOld,vnodeNew,patch);
  		return;
  	}
  	if(patch.isVElement) {
  		vmort_dom_VDom.updateElement(vnodeOld,vnodeNew,patch);
  		return;
  	}
  	vmort_dom_VDom.replaceNode(vnodeOld,vnodeNew);
  };
  vmort_dom_VDom.updateText = function(vnodeOld,vnodeNew,patch) {
  	var textOld = vmort__$VNode_VNode_$Impl_$.toVText(vnodeOld).ref;
  	var textNew = textOld.cloneNode(true);
  	textNew.nodeValue = patch.changedText;
  	vmort__$VNode_VNode_$Impl_$.setRef(vnodeNew,textNew);
  };
  vmort_dom_VDom.updateElement = function(vnodeOld,vnodeNew,patch) {
  	var elementOld = vmort__$VNode_VNode_$Impl_$.getRef(vnodeOld);
  	var elementNew = elementOld.cloneNode(true);
  	vmort_dom_VDom.updateAttributes(vnodeOld,vnodeNew,elementNew,patch);
  	vmort_dom_VDom.updateEvents(vnodeOld,vnodeNew,elementNew,patch);
  	vmort_dom_VDom.updateChildren(vnodeOld,vnodeNew,elementNew,patch);
  	vmort__$VNode_VNode_$Impl_$.setRef(vnodeNew,vmort__$VNode_VNode_$Impl_$.getRef(vnodeOld));
  };
  vmort_dom_VDom.updateAttributes = function(vnodeOld,vnodeNew,element,patch) {
  	if(!patch.hasAttributeDiffs()) return;
  	if(patch.hasAddedAttributes()) {
  		var added = patch.addedAttributes;
  		var $it0 = new haxe_ds__$StringMap_StringMapIterator(added,added.arrayKeys());
  		while( $it0.hasNext() ) {
  			var key = $it0.next();
  			vmort_dom_Elements.addAttribute(element,vmort__$Value_Value_$Impl_$.toString(key),(function($this) {
  				var $r;
  				var key1 = vmort__$Value_Value_$Impl_$.toString(key);
  				$r = __map_reserved[key1] != null?added.getReserved(key1):added.h[key1];
  				return $r;
  			}(this)));
  		}
  	}
  	if(patch.hasRemovedAttributes()) {
  		var removed = patch.removedAttributes;
  		var $it1 = new haxe_ds__$StringMap_StringMapIterator(removed,removed.arrayKeys());
  		while( $it1.hasNext() ) {
  			var key2 = $it1.next();
  			element.removeAttribute(vmort__$Value_Value_$Impl_$.toString(key2));
  		}
  	}
  	if(patch.hasChangedAttributes()) {
  		var changed = patch.changedAttributes;
  		var $it2 = new haxe_ds__$StringMap_StringMapIterator(changed,changed.arrayKeys());
  		while( $it2.hasNext() ) {
  			var key3 = $it2.next();
  			element.setAttribute(vmort__$Value_Value_$Impl_$.toString(key3),vmort__$Value_Value_$Impl_$.toString((function($this) {
  				var $r;
  				var key4 = vmort__$Value_Value_$Impl_$.toString(key3);
  				$r = __map_reserved[key4] != null?changed.getReserved(key4):changed.h[key4];
  				return $r;
  			}(this))));
  		}
  	}
  };
  vmort_dom_VDom.updateEvents = function(vnodeOld,vnodeNew,element,patch) {
  	if(!patch.hasEventDiffs()) return;
  	if(patch.hasAddedEvents()) {
  		var $it0 = patch.addedEvents.keys();
  		while( $it0.hasNext() ) {
  			var key = $it0.next();
  			vmort_dom_Elements.addEvent(element,"on" + key,patch.addedEvents.get(key));
  		}
  	}
  	if(patch.hasRemovedEvents()) {
  		var $it1 = patch.removedEvents.iterator();
  		while( $it1.hasNext() ) {
  			var key1 = $it1.next();
  			vmort_dom_Elements.removeEvent(element,"on" + Std.string(key1));
  		}
  	}
  	if(patch.hasChangedEvents()) {
  		var $it2 = patch.changedEvents.keys();
  		while( $it2.hasNext() ) {
  			var key2 = $it2.next();
  			vmort_dom_Elements.addEvent(element,"on" + key2,patch.changedEvents.get(key2));
  		}
  	}
  };
  vmort_dom_VDom.updateChildren = function(vnodeOld,vnodeNew,element,patch) {
  	if(!patch.hasChildrenDiffs()) return;
  	if(patch.hasAddedChildren()) {
  		var added = patch.addedChildren;
  		var _g = 0;
  		while(_g < added.length) {
  			var vchild = added[_g];
  			++_g;
  		}
  	}
  	if(patch.hasRemovedChildren()) {
  	}
  	if(patch.hasMovedChildren()) {
  	}
  };
  vmort_dom_VDom.replaceNode = function(vnodeOld,vnodeNew) {
  	var nodeOld = vmort__$VNode_VNode_$Impl_$.getRef(vnodeOld);
  	var nodeNew = vmort_dom_VNodes.reify(vnodeNew);
  	var nodeOldParent = nodeOld.parentNode;
  	nodeOldParent.removeChild(nodeOld);
  	nodeOldParent.appendChild(nodeNew);
  };
  var vmort_util_Strings = function() { };
  vmort_util_Strings.__name__ = true;
  vmort_util_Strings.isEmpty = function(input) {
  	return input == null || input.length == 0;
  };
  vmort_util_Strings.isFull = function(input) {
  	return !vmort_util_Strings.isEmpty(input);
  };
  vmort_util_Strings.trimSplit = function(input,delimiter) {
  	if(delimiter == null) delimiter = " \t";
  	var regex = new EReg(delimiter,"gi");
  	return regex.split(input).map(function(part) {
  		return StringTools.trim(part);
  	}).filter(function(part1) {
  		return vmort_util_Strings.isFull(part1);
  	});
  };
  var vmort_util_Arrays = function() { };
  vmort_util_Arrays.__name__ = true;
  vmort_util_Arrays.isEmpty = function(array) {
  	return array == null || array.length == 0;
  };
  vmort_util_Arrays.isFull = function(array) {
  	return !vmort_util_Arrays.isEmpty(array);
  };
  vmort_util_Arrays.contains = function(array,value,predicate) {
  	if(predicate == null) predicate = vmort_util_Objects.equals;
  	return Lambda.find(array,function(a) {
  		return predicate(a,value);
  	}) != null;
  };
  vmort_util_Arrays.unique = function(array,predicate) {
  	return Lambda.fold(array,function(a,acc) {
  		if(!vmort_util_Arrays.contains(acc,a,predicate)) acc.push(a);
  		return acc;
  	},[]);
  };
  vmort_util_Arrays.intersection = function(left,right,predicate) {
  	var uleft = vmort_util_Arrays.unique(left,predicate);
  	var uright = vmort_util_Arrays.unique(right,predicate);
  	return Lambda.fold(uleft,function(l,acc) {
  		if(vmort_util_Arrays.contains(uright,l,predicate)) acc.push(l);
  		return acc;
  	},[]);
  };
  vmort_util_Arrays.difference = function(left,right,predicate) {
  	var uleft = vmort_util_Arrays.unique(left,predicate);
  	var uright = vmort_util_Arrays.unique(right,predicate);
  	return Lambda.fold(uleft,function(l,acc) {
  		if(!vmort_util_Arrays.contains(uright,l,predicate)) acc.push(l);
  		return acc;
  	},[]);
  };
  vmort_util_Arrays.diff = function(left,right,predicate) {
  	return { left : vmort_util_Arrays.difference(left,right,predicate), both : vmort_util_Arrays.intersection(left,right,predicate), right : vmort_util_Arrays.difference(right,left,predicate)};
  };
  var vmort_util_Objects = function() { };
  vmort_util_Objects.__name__ = true;
  vmort_util_Objects.equals = function(a,b) {
  	return a == b;
  };
  var vmort_dom_VElements = function() { };
  vmort_dom_VElements.__name__ = true;
  vmort_dom_VElements.reify = function(velement) {
  	var element = window.document.createElement(velement.tag);
  	velement.setRef(element);
  	vmort_dom_Elements.addAttributes(element,velement.attributes);
  	vmort_dom_Elements.addEvents(element,velement.events);
  	vmort_dom_Elements.addChildren(element,velement.children);
  	return element;
  };
  vmort_dom_VElements.setId = function(velement,id) {
  	return velement.addAttribute(vmort_dom_VElements.V_ID_ATTRIBUTE_NAME,vmort__$Value_Value_$Impl_$.fromString(vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(id)));
  };
  vmort_dom_VElements.addClass = function(velement,className) {
  	var classes = vmort_dom_VElements.getClasses(velement);
  	var newClasses = vmort_util_Strings.trimSplit(vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(className));
  	var _g = 0;
  	while(_g < newClasses.length) {
  		var newClass = newClasses[_g];
  		++_g;
  		if(!vmort_util_Arrays.contains(classes,newClass)) classes.push(newClass);
  	}
  	return velement;
  };
  vmort_dom_VElements.addClasses = function(velement,classNames) {
  	var _g = 0;
  	var _g1 = vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(classNames);
  	while(_g < _g1.length) {
  		var className = _g1[_g];
  		++_g;
  		vmort_dom_VElements.addClass(velement,vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue(className));
  	}
  	return velement;
  };
  vmort_dom_VElements.addClassIf = function(velement,conditional,classIfTrue,classIfFalse) {
  	if(vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(conditional)) return vmort_dom_VElements.addClass(velement,vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue(vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(classIfTrue))); else if(classIfFalse != null) return vmort_dom_VElements.addClass(velement,vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue(vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(classIfFalse))); else return velement;
  };
  vmort_dom_VElements.addStyle = function(velement,name,value) {
  	var styles = vmort_dom_VElements.getStyles(velement);
  	var k = vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(name);
  	var v = vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(value);
  	if(__map_reserved[k] != null) styles.setReserved(k,v); else styles.h[k] = v;
  	v;
  	return velement;
  };
  vmort_dom_VElements.addStyles = function(velement,styles) {
  	var $it0 = (function($this) {
  		var $r;
  		var this1 = vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(styles);
  		$r = this1.keys();
  		return $r;
  	}(this));
  	while( $it0.hasNext() ) {
  		var name = $it0.next();
  		vmort_dom_VElements.addStyle(velement,vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue(name),vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue((function($this) {
  			var $r;
  			var this2 = vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(styles);
  			$r = this2.get(name);
  			return $r;
  		}(this))));
  	}
  	return velement;
  };
  vmort_dom_VElements.addStyleIf = function(velement,conditional,name,valueIfTrue,valueIfFalse) {
  	if(vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(conditional)) return vmort_dom_VElements.addStyle(velement,vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue(vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(name)),vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue(vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(valueIfTrue))); else if(valueIfFalse != null) return vmort_dom_VElements.addStyle(velement,vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue(vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(name)),vmort__$ValOrFunc_ValOrFunc_$Impl_$.fromValue(vmort__$ValOrFunc_ValOrFunc_$Impl_$.toValue(valueIfFalse))); else return velement;
  };
  vmort_dom_VElements.getClasses = function(velement) {
  	if(velement.attributes.get(vmort_dom_VElements.V_CLASSES_ATTRIBUTE_NAME) == null) {
  		var v = vmort__$Value_Value_$Impl_$.fromStringArray([]);
  		velement.attributes.set(vmort_dom_VElements.V_CLASSES_ATTRIBUTE_NAME,v);
  		v;
  	}
  	return vmort__$Value_Value_$Impl_$.toStringArray(velement.attributes.get(vmort_dom_VElements.V_CLASSES_ATTRIBUTE_NAME));
  };
  vmort_dom_VElements.getClassName = function(velement) {
  	return vmort_dom_VElements.getClasses(velement).join(" ");
  };
  vmort_dom_VElements.getStyles = function(velement) {
  	if(velement.attributes.get(vmort_dom_VElements.V_STYLES_ATTRIBUTE_NAME) == null) {
  		var v = vmort__$Value_Value_$Impl_$.fromStringMap(new haxe_ds_StringMap());
  		velement.attributes.set(vmort_dom_VElements.V_STYLES_ATTRIBUTE_NAME,v);
  		v;
  	}
  	return vmort__$Value_Value_$Impl_$.toStringMap(velement.attributes.get(vmort_dom_VElements.V_STYLES_ATTRIBUTE_NAME));
  };
  var vmort_dom_VNodes = function() { };
  vmort_dom_VNodes.__name__ = true;
  vmort_dom_VNodes.reify = function(vnode) {
  	{
  		var _g = vmort__$VNode_VNode_$Impl_$.toVNodeType(vnode);
  		switch(_g[1]) {
  		case 0:
  			var v = _g[2];
  			return vmort_dom_VElements.reify(v);
  		case 1:
  			var v1 = _g[2];
  			return vmort_dom_VTexts.reify(v1);
  		}
  	}
  };
  var vmort_dom_VTexts = function() { };
  vmort_dom_VTexts.__name__ = true;
  vmort_dom_VTexts.reify = function(vtext) {
  	var text = window.document.createTextNode(vtext.text);
  	vtext.setRef(text);
  	return text;
  };
  var vmort_util_Iterators = function() { };
  vmort_util_Iterators.__name__ = true;
  vmort_util_Iterators.toArray = function(i) {
  	var result = [];
  	while(i.hasNext()) result.push(i.next());
  	return result;
  };
  var vmort_util_Maps = function() { };
  vmort_util_Maps.__name__ = true;
  vmort_util_Maps.size = function(map) {
  	return vmort_util_Iterators.toArray(map.keys()).length;
  };
  vmort_util_Maps.isEmpty = function(map) {
  	return map == null || vmort_util_Maps.size(map) == 0;
  };
  vmort_util_Maps.isFull = function(map) {
  	return !vmort_util_Maps.isEmpty(map);
  };
  function $iterator(o) { if( o instanceof Array ) return function() { return HxOverrides.iter(o); }; return typeof(o.iterator) == 'function' ? $bind(o,o.iterator) : o.iterator; }
  var $_, $fid = 0;
  function $bind(o,m) { if( m == null ) return null; if( m.__id__ == null ) m.__id__ = $fid++; var f; if( o.hx__closures__ == null ) o.hx__closures__ = {}; else f = o.hx__closures__[m.__id__]; if( f == null ) { f = function(){ return f.method.apply(f.scope, arguments); }; f.scope = o; f.method = m; o.hx__closures__[m.__id__] = f; } return f; }
  String.__name__ = true;
  Array.__name__ = true;
  Date.__name__ = ["Date"];
  if(Array.prototype.map == null) Array.prototype.map = function(f) {
  	var a = [];
  	var _g1 = 0;
  	var _g = this.length;
  	while(_g1 < _g) {
  		var i = _g1++;
  		a[i] = f(this[i]);
  	}
  	return a;
  };
  if(Array.prototype.filter == null) Array.prototype.filter = function(f1) {
  	var a1 = [];
  	var _g11 = 0;
  	var _g2 = this.length;
  	while(_g11 < _g2) {
  		var i1 = _g11++;
  		var e = this[i1];
  		if(f1(e)) a1.push(e);
  	}
  	return a1;
  };
  var __map_reserved = {}
  vmort_VElement.DEFAULT_TAG = "div";
  vmort_VElement.KEY_ATTRIBUTE_NAME = "key";
  vmort_VElement.NAMESPACE_ATTRIBUTE_NAMES = ["ns","namespace"];
  vmort_dom_Elements.ID_ATTRIBUTE_NAME = "id";
  vmort_dom_Elements.CLASS_NAME_ATTRIBUTE_NAME = "className";
  vmort_dom_Elements.STYLE_ATTRIBUTE_NAME = "style";
  vmort_dom_Elements.EVENT_PREFIX = "on";
  vmort_dom_VDom.el = vmort_dom_VDom.createElement;
  vmort_dom_VDom.text = vmort_dom_VDom.createText;
  vmort_dom_VElements.V_ID_ATTRIBUTE_NAME = "id";
  vmort_dom_VElements.V_CLASSES_ATTRIBUTE_NAME = "classes";
  vmort_dom_VElements.V_STYLES_ATTRIBUTE_NAME = "styles";
  vmort_dom_VElements.cls = vmort_dom_VElements.addClass;
  vmort_dom_VElements.clsif = vmort_dom_VElements.addClassIf;
  vmort_dom_VElements.css = vmort_dom_VElements.addStyle;
  vmort_dom_VElements.cssif = vmort_dom_VElements.addStyleIf;
  examples_basic_Main.main();
  })(typeof console != "undefined" ? console : {log:function(){}});
  