Drop unneeded dep on pkg:test (dart-lang/sse#98)

And added a script to rebuild the test file
And rebuilt the script file
and tiny cleanup to .gitignore
diff --git a/pkgs/sse/.gitignore b/pkgs/sse/.gitignore
index 79f51c3..1467782 100644
--- a/pkgs/sse/.gitignore
+++ b/pkgs/sse/.gitignore
@@ -1,3 +1,3 @@
 .dart_tool
-.packages
 pubspec.lock
+test/web/index.dart.js.deps
diff --git a/pkgs/sse/CHANGELOG.md b/pkgs/sse/CHANGELOG.md
index 94b9848..f1deed7 100644
--- a/pkgs/sse/CHANGELOG.md
+++ b/pkgs/sse/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 4.1.5-wip
+
+- Drop unneeded dependency on `package:js`.
+
 ## 4.1.4
 
 - Fix incorrect cast causing failure with `dart2wasm`.
diff --git a/pkgs/sse/analysis_options.yaml b/pkgs/sse/analysis_options.yaml
index e04ca55..6bc938d 100644
--- a/pkgs/sse/analysis_options.yaml
+++ b/pkgs/sse/analysis_options.yaml
@@ -7,7 +7,6 @@
 
 linter:
   rules:
-    - avoid_returning_null
     - avoid_unused_constructor_parameters
     - cancel_subscriptions
     - literal_only_boolean_expressions
diff --git a/pkgs/sse/pubspec.yaml b/pkgs/sse/pubspec.yaml
index f45fe3c..6d150ad 100644
--- a/pkgs/sse/pubspec.yaml
+++ b/pkgs/sse/pubspec.yaml
@@ -1,5 +1,5 @@
 name: sse
-version: 4.1.4
+version: 4.1.5-wip
 description: >-
   Provides client and server functionality for setting up bi-directional
   communication through Server Sent Events (SSE) and corresponding POST
@@ -12,7 +12,6 @@
 dependencies:
   async: ^2.0.8
   collection: ^1.0.0
-  js: ^0.6.4
   logging: ^1.0.0
   pool: ^1.5.0
   shelf: ^1.1.0
diff --git a/pkgs/sse/test/web/index.dart.js b/pkgs/sse/test/web/index.dart.js
index 7a680ba..d0f3d2b 100644
--- a/pkgs/sse/test/web/index.dart.js
+++ b/pkgs/sse/test/web/index.dart.js
@@ -1,4 +1,4 @@
-// Generated by dart2js (NullSafetyMode.sound, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.3.0-16.0.dev.
+// Generated by dart2js (NullSafetyMode.sound, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.3.0-170.0.dev.
 // The code supports the following hooks:
 // dartPrint(message):
 //    if this function is defined it is called instead of the Dart [print]
@@ -34,8 +34,9 @@
     var keys = Object.keys(from);
     for (var i = 0; i < keys.length; i++) {
       var key = keys[i];
-      if (!to.hasOwnProperty(key))
+      if (!to.hasOwnProperty(key)) {
         to[key] = from[key];
+      }
     }
   }
   function mixinPropertiesEasy(from, to) {
@@ -74,8 +75,9 @@
     }
   }
   function inheritMany(sup, classes) {
-    for (var i = 0; i < classes.length; i++)
+    for (var i = 0; i < classes.length; i++) {
       inherit(classes[i], sup);
+    }
   }
   function mixinEasy(cls, mixin) {
     mixinPropertiesEasy(mixin.prototype, cls.prototype);
@@ -98,11 +100,13 @@
         if (holder[name] === uninitializedSentinel) {
           result = holder[name] = sentinelInProgress;
           result = holder[name] = initializer();
-        } else
+        } else {
           result = holder[name];
+        }
       } finally {
-        if (result === sentinelInProgress)
+        if (result === sentinelInProgress) {
           holder[name] = null;
+        }
         holder[getterName] = function() {
           return this[name];
         };
@@ -114,8 +118,9 @@
     var uninitializedSentinel = holder;
     holder[name] = uninitializedSentinel;
     holder[getterName] = function() {
-      if (holder[name] === uninitializedSentinel)
+      if (holder[name] === uninitializedSentinel) {
         holder[name] = initializer();
+      }
       holder[getterName] = function() {
         return this[name];
       };
@@ -128,8 +133,9 @@
     holder[getterName] = function() {
       if (holder[name] === uninitializedSentinel) {
         var value = initializer();
-        if (holder[name] !== uninitializedSentinel)
+        if (holder[name] !== uninitializedSentinel) {
           A.throwLateFieldADI(name);
+        }
         holder[name] = value;
       }
       var finalValue = holder[name];
@@ -152,8 +158,9 @@
     return properties;
   }
   function convertAllToFastObject(arrayOfObjects) {
-    for (var i = 0; i < arrayOfObjects.length; ++i)
+    for (var i = 0; i < arrayOfObjects.length; ++i) {
       convertToFastObject(arrayOfObjects[i]);
+    }
   }
   var functionCounter = 0;
   function instanceTearOffGetter(isIntercepted, parameters) {
@@ -178,8 +185,9 @@
   }
   var typesOffset = 0;
   function tearOffParameters(container, isStatic, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, needsDirectAccess) {
-    if (typeof funType == "number")
+    if (typeof funType == "number") {
       funType += typesOffset;
+    }
     return {co: container, iS: isStatic, iI: isIntercepted, rC: requiredParameterCount, dV: optionalParameterDefaultValues, cs: callNames, fs: funsOrNames, fT: funType, aI: applyIndex || 0, nDA: needsDirectAccess};
   }
   function installStaticTearOff(holder, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex) {
@@ -307,6 +315,11 @@
       list.fixed$length = Array;
       return list;
     },
+    JSArray_markUnmodifiableList(list) {
+      list.fixed$length = Array;
+      list.immutable$list = Array;
+      return list;
+    },
     getInterceptor$(receiver) {
       if (typeof receiver == "number") {
         if (Math.floor(receiver) == receiver)
@@ -381,22 +394,6 @@
         return J.UnknownJavaScriptObject.prototype;
       return receiver;
     },
-    getInterceptor$x(receiver) {
-      if (receiver == null)
-        return receiver;
-      if (typeof receiver != "object") {
-        if (typeof receiver == "function")
-          return J.JavaScriptFunction.prototype;
-        if (typeof receiver == "symbol")
-          return J.JavaScriptSymbol.prototype;
-        if (typeof receiver == "bigint")
-          return J.JavaScriptBigInt.prototype;
-        return receiver;
-      }
-      if (receiver instanceof A.Object)
-        return receiver;
-      return J.getNativeInterceptor(receiver);
-    },
     getInterceptor$z(receiver) {
       if (receiver == null)
         return receiver;
@@ -416,9 +413,6 @@
     get$length$asx(receiver) {
       return J.getInterceptor$asx(receiver).get$length(receiver);
     },
-    get$onClick$x(receiver) {
-      return J.getInterceptor$x(receiver).get$onClick(receiver);
-    },
     get$runtimeType$(receiver) {
       return J.getInterceptor$(receiver).get$runtimeType(receiver);
     },
@@ -429,21 +423,12 @@
         return a0 != null && receiver === a0;
       return J.getInterceptor$(receiver).$eq(receiver, a0);
     },
-    _removeEventListener$3$x(receiver, a0, a1, a2) {
-      return J.getInterceptor$x(receiver)._removeEventListener$3(receiver, a0, a1, a2);
-    },
-    addEventListener$3$x(receiver, a0, a1, a2) {
-      return J.getInterceptor$x(receiver).addEventListener$3(receiver, a0, a1, a2);
-    },
-    complete$1$z(receiver, a0) {
-      return J.getInterceptor$z(receiver).complete$1(receiver, a0);
-    },
-    forEach$1$ax(receiver, a0) {
-      return J.getInterceptor$ax(receiver).forEach$1(receiver, a0);
-    },
     matchAsPrefix$2$s(receiver, a0, a1) {
       return J.getInterceptor$s(receiver).matchAsPrefix$2(receiver, a0, a1);
     },
+    noSuchMethod$1$(receiver, a0) {
+      return J.getInterceptor$(receiver).noSuchMethod$1(receiver, a0);
+    },
     toString$0$(receiver) {
       return J.getInterceptor$(receiver).toString$0(receiver);
     },
@@ -527,6 +512,9 @@
     },
     FixedLengthListMixin: function FixedLengthListMixin() {
     },
+    Symbol: function Symbol(t0) {
+      this._name = t0;
+    },
     unminifyOrTag(rawClassName) {
       var preserved = init.mangledGlobalNames[rawClassName];
       if (preserved != null)
@@ -666,6 +654,116 @@
     Primitives_getMilliseconds(receiver) {
       return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCMilliseconds() + 0 : A.Primitives_lazyAsJsDate(receiver).getMilliseconds() + 0;
     },
+    Primitives_functionNoSuchMethod($function, positionalArguments, namedArguments) {
+      var $arguments, namedArgumentList, t1 = {};
+      t1.argumentCount = 0;
+      $arguments = [];
+      namedArgumentList = [];
+      t1.argumentCount = positionalArguments.length;
+      B.JSArray_methods.addAll$1($arguments, positionalArguments);
+      t1.names = "";
+      if (namedArguments != null && namedArguments.__js_helper$_length !== 0)
+        namedArguments.forEach$1(0, new A.Primitives_functionNoSuchMethod_closure(t1, namedArgumentList, $arguments));
+      return J.noSuchMethod$1$($function, new A.JSInvocationMirror(B.Symbol_call, 0, $arguments, namedArgumentList, 0));
+    },
+    Primitives_applyFunction($function, positionalArguments, namedArguments) {
+      var t1, argumentCount, jsStub;
+      if (Array.isArray(positionalArguments))
+        t1 = namedArguments == null || namedArguments.__js_helper$_length === 0;
+      else
+        t1 = false;
+      if (t1) {
+        argumentCount = positionalArguments.length;
+        if (argumentCount === 0) {
+          if (!!$function.call$0)
+            return $function.call$0();
+        } else if (argumentCount === 1) {
+          if (!!$function.call$1)
+            return $function.call$1(positionalArguments[0]);
+        } else if (argumentCount === 2) {
+          if (!!$function.call$2)
+            return $function.call$2(positionalArguments[0], positionalArguments[1]);
+        } else if (argumentCount === 3) {
+          if (!!$function.call$3)
+            return $function.call$3(positionalArguments[0], positionalArguments[1], positionalArguments[2]);
+        } else if (argumentCount === 4) {
+          if (!!$function.call$4)
+            return $function.call$4(positionalArguments[0], positionalArguments[1], positionalArguments[2], positionalArguments[3]);
+        } else if (argumentCount === 5)
+          if (!!$function.call$5)
+            return $function.call$5(positionalArguments[0], positionalArguments[1], positionalArguments[2], positionalArguments[3], positionalArguments[4]);
+        jsStub = $function["call" + "$" + argumentCount];
+        if (jsStub != null)
+          return jsStub.apply($function, positionalArguments);
+      }
+      return A.Primitives__generalApplyFunction($function, positionalArguments, namedArguments);
+    },
+    Primitives__generalApplyFunction($function, positionalArguments, namedArguments) {
+      var defaultValuesClosure, t1, defaultValues, interceptor, jsFunction, maxArguments, missingDefaults, keys, _i, defaultValue, used, key,
+        $arguments = Array.isArray(positionalArguments) ? positionalArguments : A.List_List$of(positionalArguments, true, type$.dynamic),
+        argumentCount = $arguments.length,
+        requiredParameterCount = $function.$requiredArgCount;
+      if (argumentCount < requiredParameterCount)
+        return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
+      defaultValuesClosure = $function.$defaultValues;
+      t1 = defaultValuesClosure == null;
+      defaultValues = !t1 ? defaultValuesClosure() : null;
+      interceptor = J.getInterceptor$($function);
+      jsFunction = interceptor["call*"];
+      if (typeof jsFunction == "string")
+        jsFunction = interceptor[jsFunction];
+      if (t1) {
+        if (namedArguments != null && namedArguments.__js_helper$_length !== 0)
+          return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
+        if (argumentCount === requiredParameterCount)
+          return jsFunction.apply($function, $arguments);
+        return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
+      }
+      if (Array.isArray(defaultValues)) {
+        if (namedArguments != null && namedArguments.__js_helper$_length !== 0)
+          return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
+        maxArguments = requiredParameterCount + defaultValues.length;
+        if (argumentCount > maxArguments)
+          return A.Primitives_functionNoSuchMethod($function, $arguments, null);
+        if (argumentCount < maxArguments) {
+          missingDefaults = defaultValues.slice(argumentCount - requiredParameterCount);
+          if ($arguments === positionalArguments)
+            $arguments = A.List_List$of($arguments, true, type$.dynamic);
+          B.JSArray_methods.addAll$1($arguments, missingDefaults);
+        }
+        return jsFunction.apply($function, $arguments);
+      } else {
+        if (argumentCount > requiredParameterCount)
+          return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
+        if ($arguments === positionalArguments)
+          $arguments = A.List_List$of($arguments, true, type$.dynamic);
+        keys = Object.keys(defaultValues);
+        if (namedArguments == null)
+          for (t1 = keys.length, _i = 0; _i < keys.length; keys.length === t1 || (0, A.throwConcurrentModificationError)(keys), ++_i) {
+            defaultValue = defaultValues[A._asString(keys[_i])];
+            if (B.C__Required === defaultValue)
+              return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
+            B.JSArray_methods.add$1($arguments, defaultValue);
+          }
+        else {
+          for (t1 = keys.length, used = 0, _i = 0; _i < keys.length; keys.length === t1 || (0, A.throwConcurrentModificationError)(keys), ++_i) {
+            key = A._asString(keys[_i]);
+            if (namedArguments.containsKey$1(key)) {
+              ++used;
+              B.JSArray_methods.add$1($arguments, namedArguments.$index(0, key));
+            } else {
+              defaultValue = defaultValues[key];
+              if (B.C__Required === defaultValue)
+                return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
+              B.JSArray_methods.add$1($arguments, defaultValue);
+            }
+          }
+          if (used !== namedArguments.__js_helper$_length)
+            return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
+        }
+        return jsFunction.apply($function, $arguments);
+      }
+    },
     ioore(receiver, index) {
       if (receiver == null)
         J.get$length$asx(receiver);
@@ -847,16 +945,6 @@
         return A.Primitives_objectHashCode(object);
       return J.get$hashCode$(object);
     },
-    fillLiteralMap(keyValuePairs, result) {
-      var index, index0, index1,
-        $length = keyValuePairs.length;
-      for (index = 0; index < $length; index = index1) {
-        index0 = index + 1;
-        index1 = index0 + 1;
-        result.$indexSet(0, keyValuePairs[index], keyValuePairs[index0]);
-      }
-      return result;
-    },
     _invokeClosure(closure, numberOfArguments, arg1, arg2, arg3, arg4) {
       type$.Function._as(closure);
       switch (A._asInt(numberOfArguments)) {
@@ -874,10 +962,7 @@
       throw A.wrapException(new A._Exception("Unsupported number of arguments for wrapped closure"));
     },
     convertDartClosureToJS(closure, arity) {
-      var $function;
-      if (closure == null)
-        return null;
-      $function = closure.$identity;
+      var $function = closure.$identity;
       if (!!$function)
         return $function;
       $function = A.convertDartClosureToJSUncached(closure, arity);
@@ -929,14 +1014,11 @@
       t1.toString;
       $prototype = isStatic ? Object.create(new A.StaticClosure().constructor.prototype) : Object.create(new A.BoundClosure(null, null).constructor.prototype);
       $prototype.$initialize = $prototype.constructor;
-      if (isStatic)
-        $constructor = function static_tear_off() {
-          this.$initialize();
-        };
-      else
-        $constructor = function tear_off(a, b) {
-          this.$initialize(a, b);
-        };
+      $constructor = isStatic ? function static_tear_off() {
+        this.$initialize();
+      } : function tear_off(a, b) {
+        this.$initialize(a, b);
+      };
       $prototype.constructor = $constructor;
       $constructor.prototype = $prototype;
       $prototype.$_name = $name;
@@ -1034,12 +1116,9 @@
       }
     },
     Closure_forwardCallTo(stubName, $function, isIntercepted, needsDirectAccess) {
-      var arity, t1;
       if (isIntercepted)
         return A.Closure_forwardInterceptedCallTo(stubName, $function, needsDirectAccess);
-      arity = $function.length;
-      t1 = A.Closure_cspForwardCall(arity, needsDirectAccess, stubName, $function);
-      return t1;
+      return A.Closure_cspForwardCall($function.length, needsDirectAccess, stubName, $function);
     },
     Closure_cspForwardInterceptedCall(arity, needsDirectAccess, stubName, $function) {
       var getReceiver = A.BoundClosure_receiverOf,
@@ -1132,9 +1211,6 @@
     getIsolateAffinityTag($name) {
       return init.getIsolateTag($name);
     },
-    defineProperty(obj, property, value) {
-      Object.defineProperty(obj, property, {value: value, enumerable: false, writable: true, configurable: true});
-    },
     lookupAndCacheInterceptor(obj) {
       var interceptor, interceptorClass, altTag, mark, t1,
         tag = A._asString($.getTagFunction.call$1(obj)),
@@ -1289,6 +1365,30 @@
         return string.replace(/[[\]{}()*+?.\\^$|]/g, "\\$&");
       return string;
     },
+    ConstantMapView: function ConstantMapView(t0, t1) {
+      this._collection$_map = t0;
+      this.$ti = t1;
+    },
+    ConstantMap: function ConstantMap() {
+    },
+    ConstantStringMap: function ConstantStringMap(t0, t1, t2) {
+      this._jsIndex = t0;
+      this._values = t1;
+      this.$ti = t2;
+    },
+    JSInvocationMirror: function JSInvocationMirror(t0, t1, t2, t3, t4) {
+      var _ = this;
+      _._memberName = t0;
+      _.__js_helper$_kind = t1;
+      _._arguments = t2;
+      _._namedArgumentNames = t3;
+      _._typeArgumentCount = t4;
+    },
+    Primitives_functionNoSuchMethod_closure: function Primitives_functionNoSuchMethod_closure(t0, t1, t2) {
+      this._box_0 = t0;
+      this.namedArgumentList = t1;
+      this.$arguments = t2;
+    },
     TypeErrorDecoder: function TypeErrorDecoder(t0, t1, t2, t3, t4, t5) {
       var _ = this;
       _._pattern = t0;
@@ -1339,6 +1439,8 @@
     RuntimeError: function RuntimeError(t0) {
       this.message = t0;
     },
+    _Required: function _Required() {
+    },
     JsLinkedHashMap: function JsLinkedHashMap(t0) {
       var _ = this;
       _.__js_helper$_length = 0;
@@ -1425,12 +1527,6 @@
       var future = rti._precomputed1;
       return future == null ? rti._precomputed1 = A._Universe__lookupInterfaceRti(universe, "Future", [rti._primary]) : future;
     },
-    Rti__getIsSubtypeCache(rti) {
-      var probe = rti._isSubtypeCache;
-      if (probe != null)
-        return probe;
-      return rti._isSubtypeCache = new Map();
-    },
     Rti__isUnionOfFunctionType(rti) {
       var kind = rti._kind;
       if (kind === 6 || kind === 7 || kind === 8)
@@ -1563,13 +1659,11 @@
       return target;
     },
     closureFunctionType(closure) {
-      var t1,
-        signature = closure.$signature;
+      var signature = closure.$signature;
       if (signature != null) {
         if (typeof signature == "number")
           return A.getTypeFromTypesTable(signature);
-        t1 = closure.$signature();
-        return t1;
+        return closure.$signature();
       }
       return null;
     },
@@ -1661,7 +1755,7 @@
       var t1, unstarred, unstarredKind, isFn, $name, predicate, testRti = this;
       if (testRti === type$.Object)
         return A._finishIsFn(testRti, object, A._isObject);
-      if (!A.isStrongTopType(testRti))
+      if (!A.isSoundTopType(testRti))
         if (!(testRti === type$.legacy_Object))
           t1 = false;
         else
@@ -1691,7 +1785,7 @@
         return A._finishIsFn(testRti, object, isFn);
       if (unstarredKind === 9) {
         $name = unstarred._primary;
-        if (unstarred._rest.every(A.isTopType)) {
+        if (unstarred._rest.every(A.isDefinitelyTopType)) {
           testRti._specializedTestResource = "$is" + $name;
           if ($name === "List")
             return A._finishIsFn(testRti, object, A._isListTestViaProperty);
@@ -1710,7 +1804,7 @@
     _installSpecializedAsCheck(object) {
       var t1, testRti = this,
         asFn = A._generalAsCheckImplementation;
-      if (!A.isStrongTopType(testRti))
+      if (!A.isSoundTopType(testRti))
         if (!(testRti === type$.legacy_Object))
           t1 = false;
         else
@@ -1732,7 +1826,7 @@
     _nullIs(testRti) {
       var t1,
         kind = testRti._kind;
-      if (!A.isStrongTopType(testRti))
+      if (!A.isSoundTopType(testRti))
         if (!(testRti === type$.legacy_Object))
           if (!(testRti === type$.legacy_Never))
             if (kind !== 7)
@@ -1784,10 +1878,9 @@
       return !!J.getInterceptor$(object)[tag];
     },
     _generalAsCheckImplementation(object) {
-      var t1, testRti = this;
+      var testRti = this;
       if (object == null) {
-        t1 = A.isNullable(testRti);
-        if (t1)
+        if (A.isNullable(testRti))
           return object;
       } else if (testRti._is(object))
         return object;
@@ -2043,7 +2136,7 @@
       return typeParametersText + "(" + argumentsText + ") => " + returnTypeText;
     },
     _rtiToString(rti, genericContext) {
-      var s, questionArgument, argumentKind, $name, $arguments, t1, t2,
+      var questionArgument, s, argumentKind, $name, $arguments, t1, t2,
         kind = rti._kind;
       if (kind === 5)
         return "erased";
@@ -2055,10 +2148,8 @@
         return "Never";
       if (kind === 4)
         return "any";
-      if (kind === 6) {
-        s = A._rtiToString(rti._primary, genericContext);
-        return s;
-      }
+      if (kind === 6)
+        return A._rtiToString(rti._primary, genericContext);
       if (kind === 7) {
         questionArgument = rti._primary;
         s = A._rtiToString(questionArgument, genericContext);
@@ -2190,7 +2281,7 @@
       var baseKind, t1, rti;
       if (normalize) {
         baseKind = baseType._kind;
-        if (!A.isStrongTopType(baseType))
+        if (!A.isSoundTopType(baseType))
           t1 = baseType === type$.Null || baseType === type$.JSNull || baseKind === 7 || baseKind === 6;
         else
           t1 = true;
@@ -2217,7 +2308,7 @@
       var baseKind, t1, starArgument, rti;
       if (normalize) {
         baseKind = baseType._kind;
-        if (!A.isStrongTopType(baseType))
+        if (!A.isSoundTopType(baseType))
           if (!(baseType === type$.Null || baseType === type$.JSNull))
             if (baseKind !== 7)
               t1 = baseKind === 8 && A.isNullable(baseType._primary);
@@ -2256,17 +2347,10 @@
       return t1;
     },
     _Universe__createFutureOrRti(universe, baseType, key, normalize) {
-      var t1, t2, rti;
+      var t1, rti;
       if (normalize) {
         t1 = baseType._kind;
-        if (!A.isStrongTopType(baseType))
-          if (!(baseType === type$.legacy_Object))
-            t2 = false;
-          else
-            t2 = true;
-        else
-          t2 = true;
-        if (t2 || baseType === type$.Object)
+        if (A.isSoundTopType(baseType) || baseType === type$.Object || baseType === type$.legacy_Object)
           return baseType;
         else if (t1 === 1)
           return A._Universe__lookupInterfaceRti(universe, "Future", [baseType]);
@@ -2715,19 +2799,25 @@
     },
     isSubtype(universe, s, t) {
       var result,
-        sCache = A.Rti__getIsSubtypeCache(s),
-        probe = sCache.get(t);
-      if (probe != null)
-        return probe;
-      result = A._isSubtype(universe, s, null, t, null);
-      sCache.set(t, result);
-      return result;
+        sCache = s._isSubtypeCache;
+      if (sCache == null)
+        sCache = s._isSubtypeCache = new Map();
+      result = sCache.get(t);
+      if (result == null) {
+        result = A._isSubtype(universe, s, null, t, null, false) ? 1 : 0;
+        sCache.set(t, result);
+      }
+      if (0 === result)
+        return false;
+      if (1 === result)
+        return true;
+      return true;
     },
-    _isSubtype(universe, s, sEnv, t, tEnv) {
+    _isSubtype(universe, s, sEnv, t, tEnv, isLegacy) {
       var t1, sKind, leftTypeVariable, tKind, t2, sBounds, tBounds, sLength, i, sBound, tBound;
       if (s === t)
         return true;
-      if (!A.isStrongTopType(t))
+      if (!A.isSoundTopType(t))
         if (!(t === type$.legacy_Object))
           t1 = false;
         else
@@ -2739,7 +2829,7 @@
       sKind = s._kind;
       if (sKind === 4)
         return true;
-      if (A.isStrongTopType(s))
+      if (A.isSoundTopType(s))
         return false;
       if (s._kind !== 1)
         t1 = false;
@@ -2749,45 +2839,45 @@
         return true;
       leftTypeVariable = sKind === 14;
       if (leftTypeVariable)
-        if (A._isSubtype(universe, sEnv[s._primary], sEnv, t, tEnv))
+        if (A._isSubtype(universe, sEnv[s._primary], sEnv, t, tEnv, false))
           return true;
       tKind = t._kind;
       t1 = s === type$.Null || s === type$.JSNull;
       if (t1) {
         if (tKind === 8)
-          return A._isSubtype(universe, s, sEnv, t._primary, tEnv);
+          return A._isSubtype(universe, s, sEnv, t._primary, tEnv, false);
         return t === type$.Null || t === type$.JSNull || tKind === 7 || tKind === 6;
       }
       if (t === type$.Object) {
         if (sKind === 8)
-          return A._isSubtype(universe, s._primary, sEnv, t, tEnv);
+          return A._isSubtype(universe, s._primary, sEnv, t, tEnv, false);
         if (sKind === 6)
-          return A._isSubtype(universe, s._primary, sEnv, t, tEnv);
+          return A._isSubtype(universe, s._primary, sEnv, t, tEnv, false);
         return sKind !== 7;
       }
       if (sKind === 6)
-        return A._isSubtype(universe, s._primary, sEnv, t, tEnv);
+        return A._isSubtype(universe, s._primary, sEnv, t, tEnv, false);
       if (tKind === 6) {
         t1 = A.Rti__getQuestionFromStar(universe, t);
-        return A._isSubtype(universe, s, sEnv, t1, tEnv);
+        return A._isSubtype(universe, s, sEnv, t1, tEnv, false);
       }
       if (sKind === 8) {
-        if (!A._isSubtype(universe, s._primary, sEnv, t, tEnv))
+        if (!A._isSubtype(universe, s._primary, sEnv, t, tEnv, false))
           return false;
-        return A._isSubtype(universe, A.Rti__getFutureFromFutureOr(universe, s), sEnv, t, tEnv);
+        return A._isSubtype(universe, A.Rti__getFutureFromFutureOr(universe, s), sEnv, t, tEnv, false);
       }
       if (sKind === 7) {
-        t1 = A._isSubtype(universe, type$.Null, sEnv, t, tEnv);
-        return t1 && A._isSubtype(universe, s._primary, sEnv, t, tEnv);
+        t1 = A._isSubtype(universe, type$.Null, sEnv, t, tEnv, false);
+        return t1 && A._isSubtype(universe, s._primary, sEnv, t, tEnv, false);
       }
       if (tKind === 8) {
-        if (A._isSubtype(universe, s, sEnv, t._primary, tEnv))
+        if (A._isSubtype(universe, s, sEnv, t._primary, tEnv, false))
           return true;
-        return A._isSubtype(universe, s, sEnv, A.Rti__getFutureFromFutureOr(universe, t), tEnv);
+        return A._isSubtype(universe, s, sEnv, A.Rti__getFutureFromFutureOr(universe, t), tEnv, false);
       }
       if (tKind === 7) {
-        t1 = A._isSubtype(universe, s, sEnv, type$.Null, tEnv);
-        return t1 || A._isSubtype(universe, s, sEnv, t._primary, tEnv);
+        t1 = A._isSubtype(universe, s, sEnv, type$.Null, tEnv, false);
+        return t1 || A._isSubtype(universe, s, sEnv, t._primary, tEnv, false);
       }
       if (leftTypeVariable)
         return false;
@@ -2812,30 +2902,30 @@
         for (i = 0; i < sLength; ++i) {
           sBound = sBounds[i];
           tBound = tBounds[i];
-          if (!A._isSubtype(universe, sBound, sEnv, tBound, tEnv) || !A._isSubtype(universe, tBound, tEnv, sBound, sEnv))
+          if (!A._isSubtype(universe, sBound, sEnv, tBound, tEnv, false) || !A._isSubtype(universe, tBound, tEnv, sBound, sEnv, false))
             return false;
         }
-        return A._isFunctionSubtype(universe, s._primary, sEnv, t._primary, tEnv);
+        return A._isFunctionSubtype(universe, s._primary, sEnv, t._primary, tEnv, false);
       }
       if (tKind === 12) {
         if (s === type$.JavaScriptFunction)
           return true;
         if (t1)
           return false;
-        return A._isFunctionSubtype(universe, s, sEnv, t, tEnv);
+        return A._isFunctionSubtype(universe, s, sEnv, t, tEnv, false);
       }
       if (sKind === 9) {
         if (tKind !== 9)
           return false;
-        return A._isInterfaceSubtype(universe, s, sEnv, t, tEnv);
+        return A._isInterfaceSubtype(universe, s, sEnv, t, tEnv, false);
       }
       if (t2 && tKind === 11)
-        return A._isRecordSubtype(universe, s, sEnv, t, tEnv);
+        return A._isRecordSubtype(universe, s, sEnv, t, tEnv, false);
       return false;
     },
-    _isFunctionSubtype(universe, s, sEnv, t, tEnv) {
+    _isFunctionSubtype(universe, s, sEnv, t, tEnv, isLegacy) {
       var sParameters, tParameters, sRequiredPositional, tRequiredPositional, sRequiredPositionalLength, tRequiredPositionalLength, requiredPositionalDelta, sOptionalPositional, tOptionalPositional, sOptionalPositionalLength, tOptionalPositionalLength, i, t1, sNamed, tNamed, sNamedLength, tNamedLength, sIndex, tIndex, tName, sName, sIsRequired;
-      if (!A._isSubtype(universe, s._primary, sEnv, t._primary, tEnv))
+      if (!A._isSubtype(universe, s._primary, sEnv, t._primary, tEnv, false))
         return false;
       sParameters = s._rest;
       tParameters = t._rest;
@@ -2854,17 +2944,17 @@
         return false;
       for (i = 0; i < sRequiredPositionalLength; ++i) {
         t1 = sRequiredPositional[i];
-        if (!A._isSubtype(universe, tRequiredPositional[i], tEnv, t1, sEnv))
+        if (!A._isSubtype(universe, tRequiredPositional[i], tEnv, t1, sEnv, false))
           return false;
       }
       for (i = 0; i < requiredPositionalDelta; ++i) {
         t1 = sOptionalPositional[i];
-        if (!A._isSubtype(universe, tRequiredPositional[sRequiredPositionalLength + i], tEnv, t1, sEnv))
+        if (!A._isSubtype(universe, tRequiredPositional[sRequiredPositionalLength + i], tEnv, t1, sEnv, false))
           return false;
       }
       for (i = 0; i < tOptionalPositionalLength; ++i) {
         t1 = sOptionalPositional[requiredPositionalDelta + i];
-        if (!A._isSubtype(universe, tOptionalPositional[i], tEnv, t1, sEnv))
+        if (!A._isSubtype(universe, tOptionalPositional[i], tEnv, t1, sEnv, false))
           return false;
       }
       sNamed = sParameters._named;
@@ -2890,7 +2980,7 @@
           if (sIsRequired && !t1)
             return false;
           t1 = sNamed[sIndex - 1];
-          if (!A._isSubtype(universe, tNamed[tIndex + 2], tEnv, t1, sEnv))
+          if (!A._isSubtype(universe, tNamed[tIndex + 2], tEnv, t1, sEnv, false))
             return false;
           break;
         }
@@ -2902,8 +2992,8 @@
       }
       return true;
     },
-    _isInterfaceSubtype(universe, s, sEnv, t, tEnv) {
-      var rule, recipes, $length, supertypeArgs, i, t1, t2,
+    _isInterfaceSubtype(universe, s, sEnv, t, tEnv, isLegacy) {
+      var rule, recipes, $length, supertypeArgs, i,
         sName = s._primary,
         tName = t._primary;
       for (; sName !== tName;) {
@@ -2921,24 +3011,19 @@
         supertypeArgs = $length > 0 ? new Array($length) : init.typeUniverse.sEA;
         for (i = 0; i < $length; ++i)
           supertypeArgs[i] = A._Universe_evalInEnvironment(universe, s, recipes[i]);
-        return A._areArgumentsSubtypes(universe, supertypeArgs, null, sEnv, t._rest, tEnv);
+        return A._areArgumentsSubtypes(universe, supertypeArgs, null, sEnv, t._rest, tEnv, false);
       }
-      t1 = s._rest;
-      t2 = t._rest;
-      return A._areArgumentsSubtypes(universe, t1, null, sEnv, t2, tEnv);
+      return A._areArgumentsSubtypes(universe, s._rest, null, sEnv, t._rest, tEnv, false);
     },
-    _areArgumentsSubtypes(universe, sArgs, sVariances, sEnv, tArgs, tEnv) {
-      var i, t1, t2,
+    _areArgumentsSubtypes(universe, sArgs, sVariances, sEnv, tArgs, tEnv, isLegacy) {
+      var i,
         $length = sArgs.length;
-      for (i = 0; i < $length; ++i) {
-        t1 = sArgs[i];
-        t2 = tArgs[i];
-        if (!A._isSubtype(universe, t1, sEnv, t2, tEnv))
+      for (i = 0; i < $length; ++i)
+        if (!A._isSubtype(universe, sArgs[i], sEnv, tArgs[i], tEnv, false))
           return false;
-      }
       return true;
     },
-    _isRecordSubtype(universe, s, sEnv, t, tEnv) {
+    _isRecordSubtype(universe, s, sEnv, t, tEnv, isLegacy) {
       var i,
         sFields = s._rest,
         tFields = t._rest,
@@ -2948,7 +3033,7 @@
       if (s._primary !== t._primary)
         return false;
       for (i = 0; i < sCount; ++i)
-        if (!A._isSubtype(universe, sFields[i], sEnv, tFields[i], tEnv))
+        if (!A._isSubtype(universe, sFields[i], sEnv, tFields[i], tEnv, false))
           return false;
       return true;
     },
@@ -2956,7 +3041,7 @@
       var t1,
         kind = t._kind;
       if (!(t === type$.Null || t === type$.JSNull))
-        if (!A.isStrongTopType(t))
+        if (!A.isSoundTopType(t))
           if (kind !== 7)
             if (!(kind === 6 && A.isNullable(t._primary)))
               t1 = kind === 8 && A.isNullable(t._primary);
@@ -2970,9 +3055,9 @@
         t1 = true;
       return t1;
     },
-    isTopType(t) {
+    isDefinitelyTopType(t) {
       var t1;
-      if (!A.isStrongTopType(t))
+      if (!A.isSoundTopType(t))
         if (!(t === type$.legacy_Object))
           t1 = false;
         else
@@ -2981,7 +3066,7 @@
         t1 = true;
       return t1;
     },
-    isStrongTopType(t) {
+    isSoundTopType(t) {
       var kind = t._kind;
       return kind === 2 || kind === 3 || kind === 4 || kind === 5 || t === type$.nullable_Object;
     },
@@ -3001,7 +3086,7 @@
       var _ = this;
       _._as = t0;
       _._is = t1;
-      _._cachedRuntimeType = _._specializedTestResource = _._unsoundIsSubtypeCache = _._isSubtypeCache = _._precomputed1 = null;
+      _._cachedRuntimeType = _._specializedTestResource = _._isSubtypeCache = _._precomputed1 = null;
       _._kind = 0;
       _._canonicalRecipe = _._bindCache = _._evalCache = _._rest = _._primary = null;
     },
@@ -3059,7 +3144,7 @@
       A._awaitOnObject(object, bodyFunction);
     },
     _asyncReturn(object, completer) {
-      completer.complete$1(0, object);
+      completer.complete$1(object);
     },
     _asyncRethrow(object, completer) {
       completer.completeError$2(A.unwrapException(object), A.getTraceFromException(object));
@@ -3085,7 +3170,7 @@
     _wrapJsFunctionForAsync($function) {
       var $protected = function(fn, ERROR) {
         return function(errorCode, result) {
-          while (true)
+          while (true) {
             try {
               fn(errorCode, result);
               break;
@@ -3093,6 +3178,7 @@
               result = error;
               errorCode = ERROR;
             }
+          }
         };
       }($function, 1);
       return $.Zone__current.registerBinaryCallback$3$1(new A._wrapJsFunctionForAsync_closure($protected), type$.void, type$.int, type$.dynamic);
@@ -3114,12 +3200,8 @@
       var result, error, stackTrace, future, replacement, t1, exception;
       try {
         result = computation.call$0();
-        if ($T._eval$1("Future<0>")._is(result))
-          return result;
-        else {
-          t1 = A._Future$value(result, $T);
-          return t1;
-        }
+        t1 = $T._eval$1("Future<0>")._is(result) ? result : A._Future$value(result, $T);
+        return t1;
       } catch (exception) {
         error = A.unwrapException(exception);
         stackTrace = A.getTraceFromException(exception);
@@ -3704,8 +3786,21 @@
       this.f = t1;
       this.T = t2;
     },
-    LinkedHashMap_LinkedHashMap$_literal(keyValuePairs, $K, $V) {
-      return $K._eval$1("@<0>")._bind$1($V)._eval$1("LinkedHashMap<1,2>")._as(A.fillLiteralMap(keyValuePairs, new A.JsLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsLinkedHashMap<1,2>"))));
+    _HashMap__getTableEntry(table, key) {
+      var entry = table[key];
+      return entry === table ? null : entry;
+    },
+    _HashMap__setTableEntry(table, key, value) {
+      if (value == null)
+        table[key] = table;
+      else
+        table[key] = value;
+    },
+    _HashMap__newHashTable() {
+      var table = Object.create(null);
+      A._HashMap__setTableEntry(table, "<non-identifier-key>", table);
+      delete table["<non-identifier-key>"];
+      return table;
     },
     LinkedHashMap_LinkedHashMap$_empty($K, $V) {
       return new A.JsLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsLinkedHashMap<1,2>"));
@@ -3735,6 +3830,26 @@
     ListQueue__calculateCapacity(initialCapacity) {
       return 8;
     },
+    _HashMap: function _HashMap() {
+    },
+    _IdentityHashMap: function _IdentityHashMap(t0) {
+      var _ = this;
+      _._collection$_length = 0;
+      _._collection$_keys = _._collection$_rest = _._collection$_nums = _._collection$_strings = null;
+      _.$ti = t0;
+    },
+    _HashMapKeyIterable: function _HashMapKeyIterable(t0, t1) {
+      this._collection$_map = t0;
+      this.$ti = t1;
+    },
+    _HashMapKeyIterator: function _HashMapKeyIterator(t0, t1, t2) {
+      var _ = this;
+      _._collection$_map = t0;
+      _._collection$_keys = t1;
+      _._offset = 0;
+      _._collection$_current = null;
+      _.$ti = t2;
+    },
     ListBase: function ListBase() {
     },
     MapBase: function MapBase() {
@@ -3743,6 +3858,12 @@
       this._box_0 = t0;
       this.result = t1;
     },
+    _UnmodifiableMapMixin: function _UnmodifiableMapMixin() {
+    },
+    MapView: function MapView() {
+    },
+    UnmodifiableMapView: function UnmodifiableMapView() {
+    },
     ListQueue: function ListQueue(t0, t1) {
       var _ = this;
       _._table = t0;
@@ -3758,6 +3879,8 @@
       _._collection$_current = null;
       _.$ti = t4;
     },
+    _UnmodifiableMapView_MapView__UnmodifiableMapMixin: function _UnmodifiableMapView_MapView__UnmodifiableMapMixin() {
+    },
     _parseJson(source, reviver) {
       var e, exception, t1, parsed = null;
       try {
@@ -3860,6 +3983,19 @@
           result[i] = fill;
       return result;
     },
+    List_List$of(elements, growable, $E) {
+      var t1 = A.List_List$_of(elements, $E);
+      return t1;
+    },
+    List_List$_of(elements, $E) {
+      var list, t1;
+      if (Array.isArray(elements))
+        return A._setArrayType(elements.slice(0), $E._eval$1("JSArray<0>"));
+      list = A._setArrayType([], $E._eval$1("JSArray<0>"));
+      for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();)
+        B.JSArray_methods.add$1(list, t1.get$current());
+      return list;
+    },
     StringBuffer__writeAll(string, objects, separator) {
       var iterator = J.get$iterator$ax(objects);
       if (!iterator.moveNext$0())
@@ -3875,6 +4011,9 @@
       }
       return string;
     },
+    NoSuchMethodError_NoSuchMethodError$withInvocation(receiver, invocation) {
+      return new A.NoSuchMethodError(receiver, invocation.get$memberName(), invocation.get$positionalArguments(), invocation.get$namedArguments());
+    },
     StackTrace_current() {
       return A.getTraceFromException(new Error());
     },
@@ -4086,6 +4225,10 @@
       B.JSArray_methods.add$1(parts, penultimateString);
       B.JSArray_methods.add$1(parts, ultimateString);
     },
+    NoSuchMethodError_toString_closure: function NoSuchMethodError_toString_closure(t0, t1) {
+      this._box_0 = t0;
+      this.sb = t1;
+    },
     DateTime: function DateTime(t0, t1) {
       this._value = t0;
       this.isUtc = t1;
@@ -4124,6 +4267,13 @@
       _.name = t3;
       _.message = t4;
     },
+    NoSuchMethodError: function NoSuchMethodError(t0, t1, t2, t3) {
+      var _ = this;
+      _._core$_receiver = t0;
+      _._core$_memberName = t1;
+      _._core$_arguments = t2;
+      _._namedArguments = t3;
+    },
     UnsupportedError: function UnsupportedError(t0) {
       this.message = t0;
     },
@@ -4160,119 +4310,30 @@
     StringBuffer: function StringBuffer(t0) {
       this._contents = t0;
     },
-    EventSource__factoryEventSource(url, eventSourceInitDict) {
-      var t1 = new EventSource(url, A.convertDartToNative_Dictionary(eventSourceInitDict));
-      t1.toString;
-      return t1;
+    _convertDartFunctionFast(f) {
+      var ret,
+        existing = f.$dart_jsFunction;
+      if (existing != null)
+        return existing;
+      ret = function(_call, f) {
+        return function() {
+          return _call(f, Array.prototype.slice.apply(arguments));
+        };
+      }(A._callDartFunctionFast, f);
+      ret[$.$get$DART_CLOSURE_PROPERTY_NAME()] = f;
+      f.$dart_jsFunction = ret;
+      return ret;
     },
-    _EventStreamSubscription$(_target, _eventType, onData, _useCapture, $T) {
-      var t1 = onData == null ? null : A._wrapZone(new A._EventStreamSubscription_closure(onData), type$.Event);
-      t1 = new A._EventStreamSubscription(_target, _eventType, t1, false, $T._eval$1("_EventStreamSubscription<0>"));
-      t1._tryResume$0();
-      return t1;
+    _callDartFunctionFast(callback, $arguments) {
+      type$.List_dynamic._as($arguments);
+      type$.Function._as(callback);
+      return A.Primitives_applyFunction(callback, $arguments, null);
     },
-    _wrapZone(callback, $T) {
-      var t1 = $.Zone__current;
-      if (t1 === B.C__RootZone)
-        return callback;
-      return t1.bindUnaryCallbackGuarded$1$1(callback, $T);
-    },
-    HtmlElement: function HtmlElement() {
-    },
-    AnchorElement: function AnchorElement() {
-    },
-    AreaElement: function AreaElement() {
-    },
-    DomException: function DomException() {
-    },
-    Element: function Element() {
-    },
-    Event: function Event() {
-    },
-    EventSource: function EventSource() {
-    },
-    EventTarget: function EventTarget() {
-    },
-    FormElement: function FormElement() {
-    },
-    MessageEvent: function MessageEvent() {
-    },
-    MouseEvent: function MouseEvent() {
-    },
-    Node: function Node() {
-    },
-    SelectElement: function SelectElement() {
-    },
-    UIEvent: function UIEvent() {
-    },
-    EventStreamProvider: function EventStreamProvider(t0, t1) {
-      this._eventType = t0;
-      this.$ti = t1;
-    },
-    _EventStream: function _EventStream(t0, t1, t2, t3) {
-      var _ = this;
-      _._target = t0;
-      _._eventType = t1;
-      _._useCapture = t2;
-      _.$ti = t3;
-    },
-    _ElementEventStreamImpl: function _ElementEventStreamImpl(t0, t1, t2, t3) {
-      var _ = this;
-      _._target = t0;
-      _._eventType = t1;
-      _._useCapture = t2;
-      _.$ti = t3;
-    },
-    _EventStreamSubscription: function _EventStreamSubscription(t0, t1, t2, t3, t4) {
-      var _ = this;
-      _._target = t0;
-      _._eventType = t1;
-      _._html$_onData = t2;
-      _._useCapture = t3;
-      _.$ti = t4;
-    },
-    _EventStreamSubscription_closure: function _EventStreamSubscription_closure(t0) {
-      this.onData = t0;
-    },
-    _EventStreamSubscription_onData_closure: function _EventStreamSubscription_onData_closure(t0) {
-      this.handleData = t0;
-    },
-    _convertDartToNative_Value(value) {
-      var array;
-      if (value == null)
-        return value;
-      if (typeof value == "string" || typeof value == "number" || A._isBool(value))
-        return value;
-      if (type$.Map_dynamic_dynamic._is(value))
-        return A.convertDartToNative_Dictionary(value);
-      if (type$.List_dynamic._is(value)) {
-        array = [];
-        J.forEach$1$ax(value, new A._convertDartToNative_Value_closure(array));
-        value = array;
-      }
-      return value;
-    },
-    convertDartToNative_Dictionary(dict) {
-      var object = {};
-      dict.forEach$1(0, new A.convertDartToNative_Dictionary_closure(object));
-      return object;
-    },
-    _AcceptStructuredClone: function _AcceptStructuredClone() {
-    },
-    _AcceptStructuredClone_walk_closure: function _AcceptStructuredClone_walk_closure(t0, t1) {
-      this.$this = t0;
-      this.map = t1;
-    },
-    _convertDartToNative_Value_closure: function _convertDartToNative_Value_closure(t0) {
-      this.array = t0;
-    },
-    convertDartToNative_Dictionary_closure: function convertDartToNative_Dictionary_closure(t0) {
-      this.object = t0;
-    },
-    _AcceptStructuredCloneDart2Js: function _AcceptStructuredCloneDart2Js(t0, t1) {
-      this.values = t0;
-      this.copies = t1;
-      this.mustCopy = false;
+    allowInterop(f, $F) {
+      if (typeof f == "function")
+        return f;
+      else
+        return $F._as(A._convertDartFunctionFast(f));
     },
     promiseToFuture(jsPromise, $T) {
       var t1 = new A._Future($.Zone__current, $T._eval$1("_Future<0>")),
@@ -4280,6 +4341,14 @@
       jsPromise.then(A.convertDartClosureToJS(new A.promiseToFuture_closure(completer, $T), 1), A.convertDartClosureToJS(new A.promiseToFuture_closure0(completer), 1));
       return t1;
     },
+    _noDartifyRequired(o) {
+      return o == null || typeof o === "boolean" || typeof o === "number" || typeof o === "string" || o instanceof Int8Array || o instanceof Uint8Array || o instanceof Uint8ClampedArray || o instanceof Int16Array || o instanceof Uint16Array || o instanceof Int32Array || o instanceof Uint32Array || o instanceof Float32Array || o instanceof Float64Array || o instanceof ArrayBuffer || o instanceof DataView;
+    },
+    dartify(o) {
+      if (A._noDartifyRequired(o))
+        return o;
+      return new A.dartify_convert(new A._IdentityHashMap(type$._IdentityHashMap_of_nullable_Object_and_nullable_Object)).call$1(o);
+    },
     promiseToFuture_closure: function promiseToFuture_closure(t0, t1) {
       this.completer = t0;
       this.T = t1;
@@ -4287,13 +4356,14 @@
     promiseToFuture_closure0: function promiseToFuture_closure0(t0) {
       this.completer = t0;
     },
+    dartify_convert: function dartify_convert(t0) {
+      this._convertedObjects = t0;
+    },
     NullRejectionException: function NullRejectionException(t0) {
       this.isUndefined = t0;
     },
     _JSRandom: function _JSRandom() {
     },
-    SvgElement: function SvgElement() {
-    },
     AsyncMemoizer: function AsyncMemoizer(t0, t1) {
       this._completer = t0;
       this.$ti = t1;
@@ -4381,8 +4451,6 @@
       this.$this = t1;
       this.message = t2;
     },
-    _FetchOptions: function _FetchOptions() {
-    },
     generateUuidV4() {
       var t1 = new A.generateUuidV4_printDigits(),
         t2 = new A.generateUuidV4_bitsDigits(t1, new A.generateUuidV4_generateBits(B.C__JSRandom)),
@@ -4400,14 +4468,63 @@
     },
     StreamChannelMixin: function StreamChannelMixin() {
     },
+    _EventStreamSubscription$(_target, _eventType, onData, _useCapture, $T) {
+      var t1;
+      if (onData == null)
+        t1 = null;
+      else {
+        t1 = A._wrapZone(new A._EventStreamSubscription_closure(onData), type$.JavaScriptObject);
+        t1 = t1 == null ? null : A.allowInterop(t1, type$.Function);
+      }
+      t1 = new A._EventStreamSubscription(_target, _eventType, t1, false, $T._eval$1("_EventStreamSubscription<0>"));
+      t1._tryResume$0();
+      return t1;
+    },
+    _wrapZone(callback, $T) {
+      var t1 = $.Zone__current;
+      if (t1 === B.C__RootZone)
+        return callback;
+      return t1.bindUnaryCallbackGuarded$1$1(callback, $T);
+    },
+    EventStreamProvider: function EventStreamProvider(t0, t1) {
+      this._eventType = t0;
+      this.$ti = t1;
+    },
+    _EventStream: function _EventStream(t0, t1, t2, t3) {
+      var _ = this;
+      _._target = t0;
+      _._eventType = t1;
+      _._useCapture = t2;
+      _.$ti = t3;
+    },
+    _ElementEventStreamImpl: function _ElementEventStreamImpl(t0, t1, t2, t3) {
+      var _ = this;
+      _._target = t0;
+      _._eventType = t1;
+      _._useCapture = t2;
+      _.$ti = t3;
+    },
+    _EventStreamSubscription: function _EventStreamSubscription(t0, t1, t2, t3, t4) {
+      var _ = this;
+      _._target = t0;
+      _._eventType = t1;
+      _._streams$_onData = t2;
+      _._useCapture = t3;
+      _.$ti = t4;
+    },
+    _EventStreamSubscription_closure: function _EventStreamSubscription_closure(t0) {
+      this.onData = t0;
+    },
+    _EventStreamSubscription_onData_closure: function _EventStreamSubscription_onData_closure(t0) {
+      this.handleData = t0;
+    },
     main() {
       var t2,
         channel = A.SseClient$("/test"),
-        t1 = document.querySelector("button");
+        t1 = type$.nullable_JavaScriptObject._as(type$.JavaScriptObject._as(self.document).querySelector("button"));
       t1.toString;
-      t1 = J.get$onClick$x(t1);
-      t2 = t1.$ti;
-      A._EventStreamSubscription$(t1._target, t1._eventType, t2._eval$1("~(1)?")._as(new A.main_closure(channel)), false, t2._precomputed1);
+      t2 = type$._ElementEventStreamImpl_JavaScriptObject;
+      A._EventStreamSubscription$(t1, "click", t2._eval$1("~(1)?")._as(new A.main_closure(channel)), false, t2._precomputed1);
       t2 = channel._incomingController;
       new A._ControllerStream(t2, A._instanceType(t2)._eval$1("_ControllerStream<1>")).listen$1(new A.main_closure0(channel));
     },
@@ -4438,6 +4555,9 @@
     toString$0(receiver) {
       return "Instance of '" + A.Primitives_objectTypeName(receiver) + "'";
     },
+    noSuchMethod$1(receiver, invocation) {
+      throw A.wrapException(A.NoSuchMethodError_NoSuchMethodError$withInvocation(receiver, type$.Invocation._as(invocation)));
+    },
     get$runtimeType(receiver) {
       return A.createRuntimeType(A._instanceTypeFromConstructor(this));
     }
@@ -4468,7 +4588,7 @@
     $isTrustedGetRuntimeType: 1,
     $isNull: 1
   };
-  J.JavaScriptObject.prototype = {};
+  J.JavaScriptObject.prototype = {$isJSObject: 1};
   J.LegacyJavaScriptObject.prototype = {
     get$hashCode(receiver) {
       return 0;
@@ -4511,15 +4631,28 @@
         A.throwExpression(A.UnsupportedError$("add"));
       receiver.push(value);
     },
-    forEach$1(receiver, f) {
-      var end, i;
-      A._arrayInstanceType(receiver)._eval$1("~(1)")._as(f);
-      end = receiver.length;
-      for (i = 0; i < end; ++i) {
-        f.call$1(receiver[i]);
-        if (receiver.length !== end)
-          throw A.wrapException(A.ConcurrentModificationError$(receiver));
+    addAll$1(receiver, collection) {
+      var t1;
+      A._arrayInstanceType(receiver)._eval$1("Iterable<1>")._as(collection);
+      if (!!receiver.fixed$length)
+        A.throwExpression(A.UnsupportedError$("addAll"));
+      if (Array.isArray(collection)) {
+        this._addAllFromArray$1(receiver, collection);
+        return;
       }
+      for (t1 = J.get$iterator$ax(collection); t1.moveNext$0();)
+        receiver.push(t1.get$current());
+    },
+    _addAllFromArray$1(receiver, array) {
+      var len, i;
+      type$.JSArray_dynamic._as(array);
+      len = array.length;
+      if (len === 0)
+        return;
+      if (receiver === array)
+        throw A.wrapException(A.ConcurrentModificationError$(receiver));
+      for (i = 0; i < len; ++i)
+        receiver.push(array[i]);
     },
     get$last(receiver) {
       var t1 = receiver.length;
@@ -4860,6 +4993,113 @@
     }
   };
   A.FixedLengthListMixin.prototype = {};
+  A.Symbol.prototype = {
+    get$hashCode(_) {
+      var hash = this._hashCode;
+      if (hash != null)
+        return hash;
+      hash = 664597 * B.JSString_methods.get$hashCode(this._name) & 536870911;
+      this._hashCode = hash;
+      return hash;
+    },
+    toString$0(_) {
+      return 'Symbol("' + this._name + '")';
+    },
+    $eq(_, other) {
+      if (other == null)
+        return false;
+      return other instanceof A.Symbol && this._name === other._name;
+    },
+    $isSymbol0: 1
+  };
+  A.ConstantMapView.prototype = {};
+  A.ConstantMap.prototype = {
+    get$isEmpty(_) {
+      return this.get$length(this) === 0;
+    },
+    toString$0(_) {
+      return A.MapBase_mapToString(this);
+    },
+    $isMap: 1
+  };
+  A.ConstantStringMap.prototype = {
+    get$length(_) {
+      return this._values.length;
+    },
+    get$_keys() {
+      var keys = this.$keys;
+      if (keys == null) {
+        keys = Object.keys(this._jsIndex);
+        this.$keys = keys;
+      }
+      return keys;
+    },
+    forEach$1(_, f) {
+      var keys, values, t1, i;
+      this.$ti._eval$1("~(1,2)")._as(f);
+      keys = this.get$_keys();
+      values = this._values;
+      for (t1 = keys.length, i = 0; i < t1; ++i)
+        f.call$2(keys[i], values[i]);
+    }
+  };
+  A.JSInvocationMirror.prototype = {
+    get$memberName() {
+      var t1 = this._memberName;
+      return t1;
+    },
+    get$positionalArguments() {
+      var t1, argumentCount, list, index, _this = this;
+      if (_this.__js_helper$_kind === 1)
+        return B.List_empty;
+      t1 = _this._arguments;
+      argumentCount = t1.length - _this._namedArgumentNames.length - _this._typeArgumentCount;
+      if (argumentCount === 0)
+        return B.List_empty;
+      list = [];
+      for (index = 0; index < argumentCount; ++index) {
+        if (!(index < t1.length))
+          return A.ioore(t1, index);
+        list.push(t1[index]);
+      }
+      return J.JSArray_markUnmodifiableList(list);
+    },
+    get$namedArguments() {
+      var t1, namedArgumentCount, t2, namedArgumentsStartIndex, map, i, t3, t4, _this = this;
+      if (_this.__js_helper$_kind !== 0)
+        return B.Map_empty;
+      t1 = _this._namedArgumentNames;
+      namedArgumentCount = t1.length;
+      t2 = _this._arguments;
+      namedArgumentsStartIndex = t2.length - namedArgumentCount - _this._typeArgumentCount;
+      if (namedArgumentCount === 0)
+        return B.Map_empty;
+      map = new A.JsLinkedHashMap(type$.JsLinkedHashMap_Symbol_dynamic);
+      for (i = 0; i < namedArgumentCount; ++i) {
+        if (!(i < t1.length))
+          return A.ioore(t1, i);
+        t3 = t1[i];
+        t4 = namedArgumentsStartIndex + i;
+        if (!(t4 >= 0 && t4 < t2.length))
+          return A.ioore(t2, t4);
+        map.$indexSet(0, new A.Symbol(t3), t2[t4]);
+      }
+      return new A.ConstantMapView(map, type$.ConstantMapView_Symbol_dynamic);
+    },
+    $isInvocation: 1
+  };
+  A.Primitives_functionNoSuchMethod_closure.prototype = {
+    call$2($name, argument) {
+      var t1;
+      A._asString($name);
+      t1 = this._box_0;
+      t1.names = t1.names + "$" + $name;
+      B.JSArray_methods.add$1(this.namedArgumentList, $name);
+      B.JSArray_methods.add$1(this.$arguments, argument);
+      ++t1.argumentCount;
+    },
+    $signature: 12
+  };
   A.TypeErrorDecoder.prototype = {
     matchTypeError$1(message) {
       var result, t1, _this = this,
@@ -4979,6 +5219,7 @@
       return "RuntimeError: " + this.message;
     }
   };
+  A._Required.prototype = {};
   A.JsLinkedHashMap.prototype = {
     get$length(_) {
       return this.__js_helper$_length;
@@ -4987,7 +5228,7 @@
       return this.__js_helper$_length === 0;
     },
     get$keys() {
-      return new A.LinkedHashMapKeyIterable(this, this.$ti._eval$1("LinkedHashMapKeyIterable<1>"));
+      return new A.LinkedHashMapKeyIterable(this, A._instanceType(this)._eval$1("LinkedHashMapKeyIterable<1>"));
     },
     containsKey$1(key) {
       var strings = this._strings;
@@ -5019,7 +5260,7 @@
         rest = this.__js_helper$_rest;
       if (rest == null)
         return null;
-      bucket = rest[J.get$hashCode$(key) & 1073741823];
+      bucket = rest[this.internalComputeHashCode$1(key)];
       index = this.internalFindBucketIndex$2(bucket, key);
       if (index < 0)
         return null;
@@ -5027,7 +5268,7 @@
     },
     $indexSet(_, key, value) {
       var strings, nums, rest, hash, bucket, index, _this = this,
-        t1 = _this.$ti;
+        t1 = A._instanceType(_this);
       t1._precomputed1._as(key);
       t1._rest[1]._as(value);
       if (typeof key == "string") {
@@ -5040,7 +5281,7 @@
         rest = _this.__js_helper$_rest;
         if (rest == null)
           rest = _this.__js_helper$_rest = _this._newHashTable$0();
-        hash = J.get$hashCode$(key) & 1073741823;
+        hash = _this.internalComputeHashCode$1(key);
         bucket = rest[hash];
         if (bucket == null)
           rest[hash] = [_this._newLinkedCell$2(key, value)];
@@ -5055,7 +5296,7 @@
     },
     putIfAbsent$2(key, ifAbsent) {
       var t2, value, _this = this,
-        t1 = _this.$ti;
+        t1 = A._instanceType(_this);
       t1._precomputed1._as(key);
       t1._eval$1("2()")._as(ifAbsent);
       if (_this.containsKey$1(key)) {
@@ -5068,7 +5309,7 @@
     },
     forEach$1(_, action) {
       var cell, modifications, _this = this;
-      _this.$ti._eval$1("~(1,2)")._as(action);
+      A._instanceType(_this)._eval$1("~(1,2)")._as(action);
       cell = _this._first;
       modifications = _this._modifications;
       for (; cell != null;) {
@@ -5080,7 +5321,7 @@
     },
     _addHashTableEntry$3(table, key, value) {
       var cell,
-        t1 = this.$ti;
+        t1 = A._instanceType(this);
       t1._precomputed1._as(key);
       t1._rest[1]._as(value);
       cell = table[key];
@@ -5091,7 +5332,7 @@
     },
     _newLinkedCell$2(key, value) {
       var _this = this,
-        t1 = _this.$ti,
+        t1 = A._instanceType(_this),
         cell = new A.LinkedHashMapCell(t1._precomputed1._as(key), t1._rest[1]._as(value));
       if (_this._first == null)
         _this._first = _this._last = cell;
@@ -5101,6 +5342,9 @@
       _this._modifications = _this._modifications + 1 & 1073741823;
       return cell;
     },
+    internalComputeHashCode$1(key) {
+      return J.get$hashCode$(key) & 1073741823;
+    },
     internalFindBucketIndex$2(bucket, key) {
       var $length, i;
       if (bucket == null)
@@ -5119,8 +5363,7 @@
       table["<non-identifier-key>"] = table;
       delete table["<non-identifier-key>"];
       return table;
-    },
-    $isLinkedHashMap: 1
+    }
   };
   A.LinkedHashMapCell.prototype = {};
   A.LinkedHashMapKeyIterable.prototype = {
@@ -5170,13 +5413,13 @@
     call$2(o, tag) {
       return this.getUnknownTag(o, tag);
     },
-    $signature: 12
+    $signature: 13
   };
   A.initHooks_closure1.prototype = {
     call$1(tag) {
       return this.prototypeForTag(A._asString(tag));
     },
-    $signature: 13
+    $signature: 14
   };
   A.StringMatch.prototype = {};
   A.NativeByteBuffer.prototype = {
@@ -5203,23 +5446,10 @@
       A._checkValidIndex(index, receiver, receiver.length);
       return receiver[index];
     },
-    $indexSet(receiver, index, value) {
-      A._asDouble(value);
-      A._checkValidIndex(index, receiver, receiver.length);
-      receiver[index] = value;
-    },
     $isIterable: 1,
     $isList: 1
   };
-  A.NativeTypedArrayOfInt.prototype = {
-    $indexSet(receiver, index, value) {
-      A._asInt(value);
-      A._checkValidIndex(index, receiver, receiver.length);
-      receiver[index] = value;
-    },
-    $isIterable: 1,
-    $isList: 1
-  };
+  A.NativeTypedArrayOfInt.prototype = {$isIterable: 1, $isList: 1};
   A.NativeFloat32List.prototype = {
     get$runtimeType(receiver) {
       return B.Type_Float32List_LB7;
@@ -5349,19 +5579,19 @@
       t2 = this.span;
       t1.firstChild ? t1.removeChild(t2) : t1.appendChild(t2);
     },
-    $signature: 14
+    $signature: 15
   };
   A._AsyncRun__scheduleImmediateJsOverride_internalCallback.prototype = {
     call$0() {
       this.callback.call$0();
     },
-    $signature: 3
+    $signature: 2
   };
   A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback.prototype = {
     call$0() {
       this.callback.call$0();
     },
-    $signature: 3
+    $signature: 2
   };
   A._TimerImpl.prototype = {
     _TimerImpl$2(milliseconds, callback) {
@@ -5390,7 +5620,7 @@
     $signature: 0
   };
   A._AsyncAwaitCompleter.prototype = {
-    complete$1(_, value) {
+    complete$1(value) {
       var t2, _this = this,
         t1 = _this.$ti;
       t1._eval$1("1/?")._as(value);
@@ -5419,19 +5649,19 @@
     call$1(result) {
       return this.bodyFunction.call$2(0, result);
     },
-    $signature: 2
+    $signature: 3
   };
   A._awaitOnObject_closure0.prototype = {
     call$2(error, stackTrace) {
       this.bodyFunction.call$2(1, new A.ExceptionAndStackTrace(error, type$.StackTrace._as(stackTrace)));
     },
-    $signature: 15
+    $signature: 16
   };
   A._wrapJsFunctionForAsync_closure.prototype = {
     call$2(errorCode, result) {
       this.$protected(A._asInt(errorCode), result);
     },
-    $signature: 16
+    $signature: 17
   };
   A.AsyncError.prototype = {
     toString$0(_) {
@@ -5457,7 +5687,7 @@
     $isCompleter: 1
   };
   A._AsyncCompleter.prototype = {
-    complete$1(_, value) {
+    complete$1(value) {
       var t2,
         t1 = this.$ti;
       t1._eval$1("1/?")._as(value);
@@ -5466,15 +5696,15 @@
         throw A.wrapException(A.StateError$("Future already completed"));
       t2._asyncComplete$1(t1._eval$1("1/")._as(value));
     },
-    complete$0($receiver) {
-      return this.complete$1($receiver, null);
+    complete$0() {
+      return this.complete$1(null);
     },
     _completeError$2(error, stackTrace) {
       this.future._asyncCompleteError$2(error, stackTrace);
     }
   };
   A._SyncCompleter.prototype = {
-    complete$1(_, value) {
+    complete$1(value) {
       var t2,
         t1 = this.$ti;
       t1._eval$1("1/?")._as(value);
@@ -5798,7 +6028,7 @@
     call$1(_) {
       return this.originalSource;
     },
-    $signature: 17
+    $signature: 18
   };
   A._Future__propagateToListeners_handleValueCallback.prototype = {
     call$0() {
@@ -5950,7 +6180,7 @@
       else if ((t2 & 3) === 0)
         _this._ensurePendingEvents$0().add$1(0, new A._DelayedData(value, t1._eval$1("_DelayedData<1>")));
     },
-    close$0(_) {
+    close$0() {
       var _this = this,
         t1 = _this._state;
       if ((t1 & 4) !== 0)
@@ -6080,7 +6310,7 @@
         t2 = A._instanceType(t1);
       t2._eval$1("StreamSubscription<1>")._as(this);
       if ((t1._state & 8) !== 0)
-        t2._eval$1("_StreamControllerAddStreamState<1>")._as(t1._varData).pause$0(0);
+        t2._eval$1("_StreamControllerAddStreamState<1>")._as(t1._varData).pause$0();
       A._runGuarded(t1.onPause);
     },
     _onResume$0() {
@@ -6271,7 +6501,7 @@
     call$0() {
       this.result._completeError$2(this.error, this.stackTrace);
     },
-    $signature: 3
+    $signature: 2
   };
   A._BufferingStreamSubscription__sendError_sendError.prototype = {
     call$0() {
@@ -6504,6 +6734,207 @@
       return this.T._eval$1("~(0)");
     }
   };
+  A._HashMap.prototype = {
+    get$length(_) {
+      return this._collection$_length;
+    },
+    get$isEmpty(_) {
+      return this._collection$_length === 0;
+    },
+    get$keys() {
+      return new A._HashMapKeyIterable(this, this.$ti._eval$1("_HashMapKeyIterable<1>"));
+    },
+    containsKey$1(key) {
+      var strings, nums;
+      if (typeof key == "string" && key !== "__proto__") {
+        strings = this._collection$_strings;
+        return strings == null ? false : strings[key] != null;
+      } else if (typeof key == "number" && (key & 1073741823) === key) {
+        nums = this._collection$_nums;
+        return nums == null ? false : nums[key] != null;
+      } else
+        return this._containsKey$1(key);
+    },
+    _containsKey$1(key) {
+      var rest = this._collection$_rest;
+      if (rest == null)
+        return false;
+      return this._findBucketIndex$2(this._getBucket$2(rest, key), key) >= 0;
+    },
+    $index(_, key) {
+      var strings, t1, nums;
+      if (typeof key == "string" && key !== "__proto__") {
+        strings = this._collection$_strings;
+        t1 = strings == null ? null : A._HashMap__getTableEntry(strings, key);
+        return t1;
+      } else if (typeof key == "number" && (key & 1073741823) === key) {
+        nums = this._collection$_nums;
+        t1 = nums == null ? null : A._HashMap__getTableEntry(nums, key);
+        return t1;
+      } else
+        return this._get$1(key);
+    },
+    _get$1(key) {
+      var bucket, index,
+        rest = this._collection$_rest;
+      if (rest == null)
+        return null;
+      bucket = this._getBucket$2(rest, key);
+      index = this._findBucketIndex$2(bucket, key);
+      return index < 0 ? null : bucket[index + 1];
+    },
+    $indexSet(_, key, value) {
+      var strings, nums, rest, hash, bucket, index, _this = this,
+        t1 = _this.$ti;
+      t1._precomputed1._as(key);
+      t1._rest[1]._as(value);
+      if (typeof key == "string" && key !== "__proto__") {
+        strings = _this._collection$_strings;
+        _this._collection$_addHashTableEntry$3(strings == null ? _this._collection$_strings = A._HashMap__newHashTable() : strings, key, value);
+      } else if (typeof key == "number" && (key & 1073741823) === key) {
+        nums = _this._collection$_nums;
+        _this._collection$_addHashTableEntry$3(nums == null ? _this._collection$_nums = A._HashMap__newHashTable() : nums, key, value);
+      } else {
+        rest = _this._collection$_rest;
+        if (rest == null)
+          rest = _this._collection$_rest = A._HashMap__newHashTable();
+        hash = A.objectHashCode(key) & 1073741823;
+        bucket = rest[hash];
+        if (bucket == null) {
+          A._HashMap__setTableEntry(rest, hash, [key, value]);
+          ++_this._collection$_length;
+          _this._collection$_keys = null;
+        } else {
+          index = _this._findBucketIndex$2(bucket, key);
+          if (index >= 0)
+            bucket[index + 1] = value;
+          else {
+            bucket.push(key, value);
+            ++_this._collection$_length;
+            _this._collection$_keys = null;
+          }
+        }
+      }
+    },
+    forEach$1(_, action) {
+      var keys, $length, t2, i, key, t3, _this = this,
+        t1 = _this.$ti;
+      t1._eval$1("~(1,2)")._as(action);
+      keys = _this._computeKeys$0();
+      for ($length = keys.length, t2 = t1._precomputed1, t1 = t1._rest[1], i = 0; i < $length; ++i) {
+        key = keys[i];
+        t2._as(key);
+        t3 = _this.$index(0, key);
+        action.call$2(key, t3 == null ? t1._as(t3) : t3);
+        if (keys !== _this._collection$_keys)
+          throw A.wrapException(A.ConcurrentModificationError$(_this));
+      }
+    },
+    _computeKeys$0() {
+      var strings, names, entries, index, i, nums, rest, bucket, $length, i0, _this = this,
+        result = _this._collection$_keys;
+      if (result != null)
+        return result;
+      result = A.List_List$filled(_this._collection$_length, null, false, type$.dynamic);
+      strings = _this._collection$_strings;
+      if (strings != null) {
+        names = Object.getOwnPropertyNames(strings);
+        entries = names.length;
+        for (index = 0, i = 0; i < entries; ++i) {
+          result[index] = names[i];
+          ++index;
+        }
+      } else
+        index = 0;
+      nums = _this._collection$_nums;
+      if (nums != null) {
+        names = Object.getOwnPropertyNames(nums);
+        entries = names.length;
+        for (i = 0; i < entries; ++i) {
+          result[index] = +names[i];
+          ++index;
+        }
+      }
+      rest = _this._collection$_rest;
+      if (rest != null) {
+        names = Object.getOwnPropertyNames(rest);
+        entries = names.length;
+        for (i = 0; i < entries; ++i) {
+          bucket = rest[names[i]];
+          $length = bucket.length;
+          for (i0 = 0; i0 < $length; i0 += 2) {
+            result[index] = bucket[i0];
+            ++index;
+          }
+        }
+      }
+      return _this._collection$_keys = result;
+    },
+    _collection$_addHashTableEntry$3(table, key, value) {
+      var t1 = this.$ti;
+      t1._precomputed1._as(key);
+      t1._rest[1]._as(value);
+      if (table[key] == null) {
+        ++this._collection$_length;
+        this._collection$_keys = null;
+      }
+      A._HashMap__setTableEntry(table, key, value);
+    },
+    _getBucket$2(table, key) {
+      return table[A.objectHashCode(key) & 1073741823];
+    }
+  };
+  A._IdentityHashMap.prototype = {
+    _findBucketIndex$2(bucket, key) {
+      var $length, i, t1;
+      if (bucket == null)
+        return -1;
+      $length = bucket.length;
+      for (i = 0; i < $length; i += 2) {
+        t1 = bucket[i];
+        if (t1 == null ? key == null : t1 === key)
+          return i;
+      }
+      return -1;
+    }
+  };
+  A._HashMapKeyIterable.prototype = {
+    get$length(_) {
+      return this._collection$_map._collection$_length;
+    },
+    get$isEmpty(_) {
+      return this._collection$_map._collection$_length === 0;
+    },
+    get$iterator(_) {
+      var t1 = this._collection$_map;
+      return new A._HashMapKeyIterator(t1, t1._computeKeys$0(), this.$ti._eval$1("_HashMapKeyIterator<1>"));
+    }
+  };
+  A._HashMapKeyIterator.prototype = {
+    get$current() {
+      var t1 = this._collection$_current;
+      return t1 == null ? this.$ti._precomputed1._as(t1) : t1;
+    },
+    moveNext$0() {
+      var _this = this,
+        keys = _this._collection$_keys,
+        offset = _this._offset,
+        t1 = _this._collection$_map;
+      if (keys !== t1._collection$_keys)
+        throw A.wrapException(A.ConcurrentModificationError$(t1));
+      else if (offset >= keys.length) {
+        _this.set$_collection$_current(null);
+        return false;
+      } else {
+        _this.set$_collection$_current(keys[offset]);
+        _this._offset = offset + 1;
+        return true;
+      }
+    },
+    set$_collection$_current(_current) {
+      this._collection$_current = this.$ti._eval$1("1?")._as(_current);
+    }
+  };
   A.ListBase.prototype = {
     get$iterator(receiver) {
       return new A.ListIterator(receiver, this.get$length(receiver), A.instanceType(receiver)._eval$1("ListIterator<ListBase.E>"));
@@ -6511,16 +6942,6 @@
     elementAt$1(receiver, index) {
       return this.$index(receiver, index);
     },
-    forEach$1(receiver, action) {
-      var $length, i;
-      A.instanceType(receiver)._eval$1("~(ListBase.E)")._as(action);
-      $length = this.get$length(receiver);
-      for (i = 0; i < $length; ++i) {
-        action.call$1(this.$index(receiver, i));
-        if ($length !== this.get$length(receiver))
-          throw A.wrapException(A.ConcurrentModificationError$(receiver));
-      }
-    },
     get$isNotEmpty(receiver) {
       return this.get$length(receiver) !== 0;
     },
@@ -6566,6 +6987,23 @@
     },
     $signature: 10
   };
+  A._UnmodifiableMapMixin.prototype = {};
+  A.MapView.prototype = {
+    forEach$1(_, action) {
+      this._collection$_map.forEach$1(0, A._instanceType(this)._eval$1("~(1,2)")._as(action));
+    },
+    get$isEmpty(_) {
+      return this._collection$_map.__js_helper$_length === 0;
+    },
+    get$length(_) {
+      return this._collection$_map.__js_helper$_length;
+    },
+    toString$0(_) {
+      return A.MapBase_mapToString(this._collection$_map);
+    },
+    $isMap: 1
+  };
+  A.UnmodifiableMapView.prototype = {};
   A.ListQueue.prototype = {
     get$iterator(_) {
       var _this = this;
@@ -6662,6 +7100,7 @@
       this._collection$_current = this.$ti._eval$1("1?")._as(_current);
     }
   };
+  A._UnmodifiableMapView_MapView__UnmodifiableMapMixin.prototype = {};
   A._JsonMap.prototype = {
     $index(_, key) {
       var result,
@@ -6676,7 +7115,7 @@
       }
     },
     get$length(_) {
-      return this._processed == null ? this._data.__js_helper$_length : this._computeKeys$0().length;
+      return this._processed == null ? this._data.__js_helper$_length : this._convert$_computeKeys$0().length;
     },
     get$isEmpty(_) {
       return this.get$length(this) === 0;
@@ -6684,7 +7123,7 @@
     get$keys() {
       if (this._processed == null) {
         var t1 = this._data;
-        return new A.LinkedHashMapKeyIterable(t1, t1.$ti._eval$1("LinkedHashMapKeyIterable<1>"));
+        return new A.LinkedHashMapKeyIterable(t1, A._instanceType(t1)._eval$1("LinkedHashMapKeyIterable<1>"));
       }
       return new A._JsonMapKeyIterable(this);
     },
@@ -6693,7 +7132,7 @@
       type$.void_Function_String_dynamic._as(f);
       if (_this._processed == null)
         return _this._data.forEach$1(0, f);
-      keys = _this._computeKeys$0();
+      keys = _this._convert$_computeKeys$0();
       for (i = 0; i < keys.length; ++i) {
         key = keys[i];
         value = _this._processed[key];
@@ -6706,7 +7145,7 @@
           throw A.wrapException(A.ConcurrentModificationError$(_this));
       }
     },
-    _computeKeys$0() {
+    _convert$_computeKeys$0() {
       var keys = type$.nullable_List_dynamic._as(this._data);
       if (keys == null)
         keys = this._data = A._setArrayType(Object.keys(this._original), type$.JSArray_String);
@@ -6730,7 +7169,7 @@
       if (t1._processed == null)
         t1 = t1.get$keys().elementAt$1(0, index);
       else {
-        t1 = t1._computeKeys$0();
+        t1 = t1._convert$_computeKeys$0();
         if (!(index >= 0 && index < t1.length))
           return A.ioore(t1, index);
         t1 = t1[index];
@@ -6743,7 +7182,7 @@
         t1 = t1.get$keys();
         t1 = t1.get$iterator(t1);
       } else {
-        t1 = t1._computeKeys$0();
+        t1 = t1._convert$_computeKeys$0();
         t1 = new J.ArrayIterator(t1, t1.length, A._arrayInstanceType(t1)._eval$1("ArrayIterator<1>"));
       }
       return t1;
@@ -6763,7 +7202,7 @@
     }
   };
   A.JsonCodec.prototype = {
-    decode$2$reviver(_, source, reviver) {
+    decode$2$reviver(source, reviver) {
       var t1 = A._parseJson(source, this.get$decoder()._reviver);
       return t1;
     },
@@ -7003,6 +7442,21 @@
       this._sink._contents += A.Primitives_stringFromCharCode(charCode);
     }
   };
+  A.NoSuchMethodError_toString_closure.prototype = {
+    call$2(key, value) {
+      var t1, t2, t3;
+      type$.Symbol._as(key);
+      t1 = this.sb;
+      t2 = this._box_0;
+      t3 = t1._contents += t2.comma;
+      t3 += key._name;
+      t1._contents = t3;
+      t1._contents = t3 + ": ";
+      t1._contents += A.Error_safeToString(value);
+      t2.comma = ", ";
+    },
+    $signature: 19
+  };
   A.DateTime.prototype = {
     $eq(_, other) {
       if (other == null)
@@ -7127,6 +7581,24 @@
       return this.length;
     }
   };
+  A.NoSuchMethodError.prototype = {
+    toString$0(_) {
+      var $arguments, t1, _i, t2, t3, argument, receiverText, actualParameters, _this = this, _box_0 = {},
+        sb = new A.StringBuffer("");
+      _box_0.comma = "";
+      $arguments = _this._core$_arguments;
+      for (t1 = $arguments.length, _i = 0, t2 = "", t3 = ""; _i < t1; ++_i, t3 = ", ") {
+        argument = $arguments[_i];
+        sb._contents = t2 + t3;
+        t2 = sb._contents += A.Error_safeToString(argument);
+        _box_0.comma = ", ";
+      }
+      _this._namedArguments.forEach$1(0, new A.NoSuchMethodError_toString_closure(_box_0, sb));
+      receiverText = A.Error_safeToString(_this._core$_receiver);
+      actualParameters = sb.toString$0(0);
+      return "NoSuchMethodError: method not found: '" + _this._core$_memberName._name + "'\nReceiver: " + receiverText + "\nArguments: [" + actualParameters + "]";
+    }
+  };
   A.UnsupportedError.prototype = {
     toString$0(_) {
       return "Unsupported operation: " + this.message;
@@ -7287,6 +7759,9 @@
     toString$0(_) {
       return "Instance of '" + A.Primitives_objectTypeName(this) + "'";
     },
+    noSuchMethod$1(_, invocation) {
+      throw A.wrapException(A.NoSuchMethodError_NoSuchMethodError$withInvocation(this, type$.Invocation._as(invocation)));
+    },
     get$runtimeType(_) {
       return A.getRuntimeTypeOfDartObject(this);
     },
@@ -7310,275 +7785,11 @@
     },
     $isStringSink: 1
   };
-  A.HtmlElement.prototype = {};
-  A.AnchorElement.prototype = {
-    toString$0(receiver) {
-      var t1 = String(receiver);
-      t1.toString;
-      return t1;
-    }
-  };
-  A.AreaElement.prototype = {
-    toString$0(receiver) {
-      var t1 = String(receiver);
-      t1.toString;
-      return t1;
-    }
-  };
-  A.DomException.prototype = {
-    toString$0(receiver) {
-      var t1 = String(receiver);
-      t1.toString;
-      return t1;
-    }
-  };
-  A.Element.prototype = {
-    toString$0(receiver) {
-      var t1 = receiver.localName;
-      t1.toString;
-      return t1;
-    },
-    get$onClick(receiver) {
-      return new A._ElementEventStreamImpl(receiver, "click", false, type$._ElementEventStreamImpl_MouseEvent);
-    },
-    $isElement: 1
-  };
-  A.Event.prototype = {$isEvent: 1};
-  A.EventSource.prototype = {$isEventSource: 1};
-  A.EventTarget.prototype = {
-    addEventListener$3(receiver, type, listener, useCapture) {
-      type$.nullable_dynamic_Function_Event._as(listener);
-      if (listener != null)
-        this._addEventListener$3(receiver, type, listener, useCapture);
-    },
-    addEventListener$2($receiver, type, listener) {
-      return this.addEventListener$3($receiver, type, listener, null);
-    },
-    _addEventListener$3(receiver, type, listener, options) {
-      return receiver.addEventListener(type, A.convertDartClosureToJS(type$.nullable_dynamic_Function_Event._as(listener), 1), options);
-    },
-    _removeEventListener$3(receiver, type, listener, options) {
-      return receiver.removeEventListener(type, A.convertDartClosureToJS(type$.nullable_dynamic_Function_Event._as(listener), 1), false);
-    },
-    $isEventTarget: 1
-  };
-  A.FormElement.prototype = {
-    get$length(receiver) {
-      return receiver.length;
-    }
-  };
-  A.MessageEvent.prototype = {$isMessageEvent: 1};
-  A.MouseEvent.prototype = {$isMouseEvent: 1};
-  A.Node.prototype = {
-    toString$0(receiver) {
-      var value = receiver.nodeValue;
-      return value == null ? this.super$Interceptor$toString(receiver) : value;
-    }
-  };
-  A.SelectElement.prototype = {
-    get$length(receiver) {
-      return receiver.length;
-    }
-  };
-  A.UIEvent.prototype = {};
-  A.EventStreamProvider.prototype = {};
-  A._EventStream.prototype = {
-    listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError) {
-      var t1 = A._instanceType(this);
-      t1._eval$1("~(1)?")._as(onData);
-      type$.nullable_void_Function._as(onDone);
-      return A._EventStreamSubscription$(this._target, this._eventType, onData, false, t1._precomputed1);
-    }
-  };
-  A._ElementEventStreamImpl.prototype = {};
-  A._EventStreamSubscription.prototype = {
-    cancel$0() {
-      var _this = this;
-      if (_this._target == null)
-        return $.$get$nullFuture();
-      _this._unlisten$0();
-      _this._target = null;
-      _this.set$_html$_onData(null);
-      return $.$get$nullFuture();
-    },
-    onData$1(handleData) {
-      var t1, _this = this;
-      _this.$ti._eval$1("~(1)?")._as(handleData);
-      if (_this._target == null)
-        throw A.wrapException(A.StateError$("Subscription has been canceled."));
-      _this._unlisten$0();
-      t1 = A._wrapZone(new A._EventStreamSubscription_onData_closure(handleData), type$.Event);
-      _this.set$_html$_onData(t1);
-      _this._tryResume$0();
-    },
-    _tryResume$0() {
-      var t2,
-        t1 = this._html$_onData;
-      if (t1 != null && true) {
-        t2 = this._target;
-        t2.toString;
-        J.addEventListener$3$x(t2, this._eventType, t1, false);
-      }
-    },
-    _unlisten$0() {
-      var t2,
-        t1 = this._html$_onData;
-      if (t1 != null) {
-        t2 = this._target;
-        t2.toString;
-        J._removeEventListener$3$x(t2, this._eventType, type$.nullable_dynamic_Function_Event._as(t1), false);
-      }
-    },
-    set$_html$_onData(_onData) {
-      this._html$_onData = type$.nullable_dynamic_Function_Event._as(_onData);
-    },
-    $isStreamSubscription: 1
-  };
-  A._EventStreamSubscription_closure.prototype = {
-    call$1(e) {
-      return this.onData.call$1(type$.Event._as(e));
-    },
-    $signature: 1
-  };
-  A._EventStreamSubscription_onData_closure.prototype = {
-    call$1(e) {
-      return this.handleData.call$1(type$.Event._as(e));
-    },
-    $signature: 1
-  };
-  A._AcceptStructuredClone.prototype = {
-    findSlot$1(value) {
-      var i,
-        t1 = this.values,
-        $length = t1.length;
-      for (i = 0; i < $length; ++i)
-        if (t1[i] === value)
-          return i;
-      B.JSArray_methods.add$1(t1, value);
-      B.JSArray_methods.add$1(this.copies, null);
-      return $length;
-    },
-    walk$1(e) {
-      var t1, t2, proto, slot, copy, map, t3, $length, t4, i, _this = this;
-      if (e == null)
-        return e;
-      if (A._isBool(e))
-        return e;
-      if (typeof e == "number")
-        return e;
-      if (typeof e == "string")
-        return e;
-      t1 = e instanceof Date;
-      t1.toString;
-      if (t1) {
-        t1 = e.getTime();
-        t1.toString;
-        if (Math.abs(t1) <= 864e13)
-          t2 = false;
-        else
-          t2 = true;
-        if (t2)
-          A.throwExpression(A.ArgumentError$("DateTime is outside valid range: " + t1, null));
-        A.checkNotNullable(true, "isUtc", type$.bool);
-        return new A.DateTime(t1, true);
-      }
-      t1 = e instanceof RegExp;
-      t1.toString;
-      if (t1)
-        throw A.wrapException(A.UnimplementedError$("structured clone of RegExp"));
-      t1 = typeof Promise != "undefined" && e instanceof Promise;
-      t1.toString;
-      if (t1)
-        return A.promiseToFuture(e, type$.dynamic);
-      proto = Object.getPrototypeOf(e);
-      t1 = proto === Object.prototype;
-      t1.toString;
-      if (!t1) {
-        t1 = proto === null;
-        t1.toString;
-      } else
-        t1 = true;
-      if (t1) {
-        slot = _this.findSlot$1(e);
-        t1 = _this.copies;
-        if (!(slot < t1.length))
-          return A.ioore(t1, slot);
-        copy = t1[slot];
-        if (copy != null)
-          return copy;
-        t2 = type$.dynamic;
-        map = A.LinkedHashMap_LinkedHashMap$_empty(t2, t2);
-        B.JSArray_methods.$indexSet(t1, slot, map);
-        _this.forEachJsField$2(e, new A._AcceptStructuredClone_walk_closure(_this, map));
-        return map;
-      }
-      t1 = e instanceof Array;
-      t1.toString;
-      if (t1) {
-        t1 = e;
-        t1.toString;
-        slot = _this.findSlot$1(t1);
-        t2 = _this.copies;
-        if (!(slot < t2.length))
-          return A.ioore(t2, slot);
-        copy = t2[slot];
-        if (copy != null)
-          return copy;
-        t3 = J.getInterceptor$asx(t1);
-        $length = t3.get$length(t1);
-        if (_this.mustCopy) {
-          t4 = new Array($length);
-          t4.toString;
-          copy = t4;
-        } else
-          copy = t1;
-        B.JSArray_methods.$indexSet(t2, slot, copy);
-        for (t2 = J.getInterceptor$ax(copy), i = 0; i < $length; ++i)
-          t2.$indexSet(copy, i, _this.walk$1(t3.$index(t1, i)));
-        return copy;
-      }
-      return e;
-    },
-    convertNativeToDart_AcceptStructuredClone$2$mustCopy(object, mustCopy) {
-      this.mustCopy = true;
-      return this.walk$1(object);
-    }
-  };
-  A._AcceptStructuredClone_walk_closure.prototype = {
-    call$2(key, value) {
-      var t1 = this.$this.walk$1(value);
-      this.map.$indexSet(0, key, t1);
-      return t1;
-    },
-    $signature: 18
-  };
-  A._convertDartToNative_Value_closure.prototype = {
-    call$1(element) {
-      this.array.push(A._convertDartToNative_Value(element));
-    },
-    $signature: 2
-  };
-  A.convertDartToNative_Dictionary_closure.prototype = {
-    call$2(key, value) {
-      this.object[key] = A._convertDartToNative_Value(value);
-    },
-    $signature: 19
-  };
-  A._AcceptStructuredCloneDart2Js.prototype = {
-    forEachJsField$2(object, action) {
-      var t1, t2, _i, key;
-      type$.dynamic_Function_dynamic_dynamic._as(action);
-      for (t1 = Object.keys(object), t2 = t1.length, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
-        key = t1[_i];
-        action.call$2(key, object[key]);
-      }
-    }
-  };
   A.promiseToFuture_closure.prototype = {
     call$1(r) {
-      return this.completer.complete$1(0, this.T._eval$1("0/?")._as(r));
+      return this.completer.complete$1(this.T._eval$1("0/?")._as(r));
     },
-    $signature: 2
+    $signature: 3
   };
   A.promiseToFuture_closure0.prototype = {
     call$1(e) {
@@ -7586,7 +7797,63 @@
         return this.completer.completeError$1(new A.NullRejectionException(e === undefined));
       return this.completer.completeError$1(e);
     },
-    $signature: 2
+    $signature: 3
+  };
+  A.dartify_convert.prototype = {
+    call$1(o) {
+      var t1, millisSinceEpoch, proto, t2, dartObject, originalKeys, dartKeys, i, jsKey, dartKey, l, $length;
+      if (A._noDartifyRequired(o))
+        return o;
+      t1 = this._convertedObjects;
+      o.toString;
+      if (t1.containsKey$1(o))
+        return t1.$index(0, o);
+      if (o instanceof Date) {
+        millisSinceEpoch = o.getTime();
+        if (Math.abs(millisSinceEpoch) <= 864e13)
+          t1 = false;
+        else
+          t1 = true;
+        if (t1)
+          A.throwExpression(A.ArgumentError$("DateTime is outside valid range: " + millisSinceEpoch, null));
+        A.checkNotNullable(true, "isUtc", type$.bool);
+        return new A.DateTime(millisSinceEpoch, true);
+      }
+      if (o instanceof RegExp)
+        throw A.wrapException(A.ArgumentError$("structured clone of RegExp", null));
+      if (typeof Promise != "undefined" && o instanceof Promise)
+        return A.promiseToFuture(o, type$.nullable_Object);
+      proto = Object.getPrototypeOf(o);
+      if (proto === Object.prototype || proto === null) {
+        t2 = type$.nullable_Object;
+        dartObject = A.LinkedHashMap_LinkedHashMap$_empty(t2, t2);
+        t1.$indexSet(0, o, dartObject);
+        originalKeys = Object.keys(o);
+        dartKeys = [];
+        for (t1 = J.getInterceptor$ax(originalKeys), t2 = t1.get$iterator(originalKeys); t2.moveNext$0();)
+          dartKeys.push(A.dartify(t2.get$current()));
+        for (i = 0; i < t1.get$length(originalKeys); ++i) {
+          jsKey = t1.$index(originalKeys, i);
+          if (!(i < dartKeys.length))
+            return A.ioore(dartKeys, i);
+          dartKey = dartKeys[i];
+          if (jsKey != null)
+            dartObject.$indexSet(0, dartKey, this.call$1(o[jsKey]));
+        }
+        return dartObject;
+      }
+      if (o instanceof Array) {
+        l = o;
+        dartObject = [];
+        t1.$indexSet(0, o, dartObject);
+        $length = A._asInt(o.length);
+        for (t1 = J.getInterceptor$asx(l), i = 0; i < $length; ++i)
+          dartObject.push(this.call$1(t1.$index(l, i)));
+        return dartObject;
+      }
+      return o;
+    },
+    $signature: 20
   };
   A.NullRejectionException.prototype = {
     toString$0(_) {
@@ -7600,11 +7867,6 @@
       return Math.random() * max >>> 0;
     }
   };
-  A.SvgElement.prototype = {
-    get$onClick(receiver) {
-      return new A._ElementEventStreamImpl(receiver, "click", false, type$._ElementEventStreamImpl_MouseEvent);
-    }
-  };
   A.AsyncMemoizer.prototype = {};
   A.Level.prototype = {
     $eq(_, other) {
@@ -7688,10 +7950,10 @@
         $parent._children.$indexSet(0, thisName, t1);
       return t1;
     },
-    $signature: 20
+    $signature: 21
   };
   A.Pool.prototype = {
-    request$0(_) {
+    request$0() {
       var t1, t2, _this = this;
       if ((_this._closeMemo._completer.future._state & 30) !== 0)
         throw A.wrapException(A.StateError$("request() may not be called on a closed Pool."));
@@ -7731,7 +7993,7 @@
               if (($async$self._closeMemo._completer.future._state & 30) !== 0)
                 throw A.wrapException(A.StateError$("withResource() may not be called on a closed Pool."));
               $async$goto = 3;
-              return A._asyncAwait($async$self.request$0(0), $async$withResource$1$1);
+              return A._asyncAwait($async$self.request$0(), $async$withResource$1$1);
             case 3:
               // returning from await.
               resource = $async$result;
@@ -7765,11 +8027,11 @@
               t1._resetTimer$0();
               t2 = t1._requestedResources;
               if (!t2.get$isEmpty(t2))
-                t2.removeFirst$0().complete$1(0, new A.PoolResource(t1));
+                t2.removeFirst$0().complete$1(new A.PoolResource(t1));
               else {
                 t2 = --t1._allocatedResources;
                 if ((t1._closeMemo._completer.future._state & 30) !== 0 && t2 === 0)
-                  null.close$0(0);
+                  null.close$0();
               }
               // goto the next finally handler
               $async$goto = $async$next.pop();
@@ -7816,7 +8078,7 @@
   A.Pool__runOnRelease_closure.prototype = {
     call$1(value) {
       var t1 = this.$this;
-      J.complete$1$z(t1._onReleaseCompleters.removeFirst$0(), new A.PoolResource(t1));
+      t1._onReleaseCompleters.removeFirst$0().complete$1(new A.PoolResource(t1));
     },
     $signature: 4
   };
@@ -7834,18 +8096,19 @@
       var t2, _this = this,
         t1 = serverUrl + "?sseClientId=" + _this._clientId;
       _this.__SseClient__serverUrl_A = t1;
-      t1 = A.EventSource__factoryEventSource(t1, A.LinkedHashMap_LinkedHashMap$_literal(["withCredentials", true], type$.String, type$.dynamic));
+      t2 = type$.JavaScriptObject;
+      t1 = t2._as(new self.EventSource(t1, t2._as({withCredentials: true})));
       _this.__SseClient__eventSource_A = t1;
-      t1 = new A._EventStream(t1, "open", false, type$._EventStream_Event);
+      t1 = new A._EventStream(t1, "open", false, type$._EventStream_JavaScriptObject);
       t1.get$first(t1).whenComplete$1(new A.SseClient_closure(_this));
-      B.EventSource_methods.addEventListener$2(_this.__SseClient__eventSource_A, "message", _this.get$_onIncomingMessage());
-      B.EventSource_methods.addEventListener$2(_this.__SseClient__eventSource_A, "control", _this.get$_onIncomingControlMessage());
-      t1 = type$.nullable_void_Function_Event;
-      t2 = type$.Event;
+      t1 = type$.Function;
+      _this.__SseClient__eventSource_A.addEventListener("message", A.allowInterop(_this.get$_onIncomingMessage(), t1));
+      _this.__SseClient__eventSource_A.addEventListener("control", A.allowInterop(_this.get$_onIncomingControlMessage(), t1));
+      t1 = type$.nullable_void_Function_JavaScriptObject;
       A._EventStreamSubscription$(_this.__SseClient__eventSource_A, "open", t1._as(new A.SseClient_closure0(_this)), false, t2);
       A._EventStreamSubscription$(_this.__SseClient__eventSource_A, "error", t1._as(new A.SseClient_closure1(_this)), false, t2);
     },
-    close$0(_) {
+    close$0() {
       var _this = this,
         t1 = _this.__SseClient__eventSource_A;
       t1 === $ && A.throwLateFieldNI("_eventSource");
@@ -7854,8 +8117,8 @@
         t1 = _this._outgoingController;
         new A._ControllerStream(t1, A._instanceType(t1)._eval$1("_ControllerStream<1>")).listen$2$cancelOnError(null, true).asFuture$1$1(null, type$.void);
       }
-      _this._incomingController.close$0(0);
-      _this._outgoingController.close$0(0);
+      _this._incomingController.close$0();
+      _this._outgoingController.close$0();
     },
     _closeWithError$1(error) {
       var stackTrace, t2,
@@ -7869,23 +8132,23 @@
         t1._sendError$2(error, stackTrace);
       else if ((t2 & 3) === 0)
         t1._ensurePendingEvents$0().add$1(0, new A._DelayedError(error, stackTrace));
-      this.close$0(0);
+      this.close$0();
       t1 = this._onConnected;
       if ((t1.future._state & 30) === 0)
         t1.completeError$1(error);
     },
     _onIncomingControlMessage$1(message) {
-      var data = new A._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(type$.MessageEvent._as(type$.Event._as(message)).data, true);
-      if (J.$eq$(data, "close"))
-        this.close$0(0);
+      var data = type$.JavaScriptObject._as(message).data;
+      if (J.$eq$(A.dartify(data), "close"))
+        this.close$0();
       else
         throw A.wrapException(A.UnsupportedError$("[" + this._clientId + '] Illegal Control Message "' + A.S(data) + '"'));
     },
     _onIncomingMessage$1(message) {
-      this._incomingController.add$1(0, A._asString(B.C_JsonCodec.decode$2$reviver(0, A._asString(new A._AcceptStructuredCloneDart2Js([], []).convertNativeToDart_AcceptStructuredClone$2$mustCopy(type$.MessageEvent._as(type$.Event._as(message)).data, true)), null)));
+      this._incomingController.add$1(0, A._asString(B.C_JsonCodec.decode$2$reviver(A._asString(type$.JavaScriptObject._as(message).data), null)));
     },
     _onOutgoingDone$0() {
-      this.close$0(0);
+      this.close$0();
     },
     _onOutgoingMessage$1(message) {
       return this._onOutgoingMessage$body$SseClient(A._asStringQ(message));
@@ -7918,11 +8181,11 @@
     call$0() {
       var t2,
         t1 = this.$this;
-      t1._onConnected.complete$0(0);
+      t1._onConnected.complete$0();
       t2 = t1._outgoingController;
       new A._ControllerStream(t2, A._instanceType(t2)._eval$1("_ControllerStream<1>")).listen$2$onDone(t1.get$_onOutgoingMessage(), t1.get$_onOutgoingDone());
     },
-    $signature: 3
+    $signature: 2
   };
   A.SseClient_closure0.prototype = {
     call$1(_) {
@@ -7982,8 +8245,13 @@
               t2 = t1.__SseClient__serverUrl_A;
               t2 === $ && A.throwLateFieldNI("_serverUrl");
               url = t2 + "&messageId=" + ++t1._lastMessageId;
+              t1 = $async$self._box_0.encodedMessage;
+              if (t1 == null)
+                t1 = null;
+              t2 = type$.JavaScriptObject;
+              t1 = t2._as({method: "POST", body: t1, credentials: "include"});
               $async$goto = 6;
-              return A._asyncAwait(A.promiseToFuture(self.fetch(url, {method: "POST", credentials: "include", body: $async$self._box_0.encodedMessage}), type$.dynamic), $async$call$0);
+              return A._asyncAwait(A.promiseToFuture(type$.JSObject._as(t2._as(self.window).fetch(url, t1)), type$.nullable_Object), $async$call$0);
             case 6:
               // returning from await.
               $async$handler = 1;
@@ -8020,12 +8288,11 @@
     },
     $signature: 7
   };
-  A._FetchOptions.prototype = {};
   A.generateUuidV4_generateBits.prototype = {
     call$1(bitCount) {
       return this.random.nextInt$1(B.JSInt_methods._shlPositive$1(1, bitCount));
     },
-    $signature: 22
+    $signature: 23
   };
   A.generateUuidV4_printDigits.prototype = {
     call$2(value, count) {
@@ -8040,12 +8307,66 @@
     $signature: 11
   };
   A.StreamChannelMixin.prototype = {};
+  A.EventStreamProvider.prototype = {};
+  A._EventStream.prototype = {
+    listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError) {
+      var t1 = A._instanceType(this);
+      t1._eval$1("~(1)?")._as(onData);
+      type$.nullable_void_Function._as(onDone);
+      return A._EventStreamSubscription$(this._target, this._eventType, onData, false, t1._precomputed1);
+    }
+  };
+  A._ElementEventStreamImpl.prototype = {};
+  A._EventStreamSubscription.prototype = {
+    cancel$0() {
+      var _this = this,
+        emptyFuture = A.Future_Future$value(null, type$.void);
+      if (_this._target == null)
+        return emptyFuture;
+      _this._unlisten$0();
+      _this._streams$_onData = _this._target = null;
+      return emptyFuture;
+    },
+    onData$1(handleData) {
+      var t1, _this = this;
+      _this.$ti._eval$1("~(1)?")._as(handleData);
+      if (_this._target == null)
+        throw A.wrapException(A.StateError$("Subscription has been canceled."));
+      _this._unlisten$0();
+      t1 = A._wrapZone(new A._EventStreamSubscription_onData_closure(handleData), type$.JavaScriptObject);
+      t1 = t1 == null ? null : A.allowInterop(t1, type$.Function);
+      _this._streams$_onData = t1;
+      _this._tryResume$0();
+    },
+    _tryResume$0() {
+      var t1 = this._streams$_onData;
+      if (t1 != null && true)
+        this._target.addEventListener(this._eventType, t1, false);
+    },
+    _unlisten$0() {
+      var t1 = this._streams$_onData;
+      if (t1 != null)
+        this._target.removeEventListener(this._eventType, t1, false);
+    },
+    $isStreamSubscription: 1
+  };
+  A._EventStreamSubscription_closure.prototype = {
+    call$1(e) {
+      return this.onData.call$1(type$.JavaScriptObject._as(e));
+    },
+    $signature: 1
+  };
+  A._EventStreamSubscription_onData_closure.prototype = {
+    call$1(e) {
+      return this.handleData.call$1(type$.JavaScriptObject._as(e));
+    },
+    $signature: 1
+  };
   A.main_closure.prototype = {
     call$1(_) {
-      type$.MouseEvent._as(_);
-      this.channel._outgoingController.close$0(0);
+      this.channel._outgoingController.close$0();
     },
-    $signature: 23
+    $signature: 1
   };
   A.main_closure0.prototype = {
     call$1(s) {
@@ -8080,9 +8401,7 @@
     $signature: 24
   };
   (function aliases() {
-    var _ = J.Interceptor.prototype;
-    _.super$Interceptor$toString = _.toString$0;
-    _ = J.LegacyJavaScriptObject.prototype;
+    var _ = J.LegacyJavaScriptObject.prototype;
     _.super$LegacyJavaScriptObject$toString = _.toString$0;
   })();
   (function installTearOffs() {
@@ -8096,7 +8415,7 @@
     _static_1(A, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 6);
     _static_1(A, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 6);
     _static_0(A, "async___startMicrotaskLoop$closure", "_startMicrotaskLoop", 0);
-    _static_1(A, "async___nullDataHandler$closure", "_nullDataHandler", 2);
+    _static_1(A, "async___nullDataHandler$closure", "_nullDataHandler", 3);
     _static_2(A, "async___nullErrorHandler$closure", "_nullErrorHandler", 9);
     _static_0(A, "async___nullDoneHandler$closure", "_nullDoneHandler", 0);
     _instance_2_u(A._Future.prototype, "get$_completeError", "_completeError$2", 9);
@@ -8105,28 +8424,32 @@
     _instance_1_u(_ = A.SseClient.prototype, "get$_onIncomingControlMessage", "_onIncomingControlMessage$1", 1);
     _instance_1_u(_, "get$_onIncomingMessage", "_onIncomingMessage$1", 1);
     _instance_0_u(_, "get$_onOutgoingDone", "_onOutgoingDone$0", 0);
-    _instance_1_u(_, "get$_onOutgoingMessage", "_onOutgoingMessage$1", 21);
+    _instance_1_u(_, "get$_onOutgoingMessage", "_onOutgoingMessage$1", 22);
   })();
   (function inheritance() {
     var _mixin = hunkHelpers.mixin,
       _inherit = hunkHelpers.inherit,
       _inheritMany = hunkHelpers.inheritMany;
     _inherit(A.Object, null);
-    _inheritMany(A.Object, [A.JS_CONST, J.Interceptor, J.ArrayIterator, A.Error, A.Closure, A.Iterable, A.ListIterator, A.FixedLengthListMixin, A.TypeErrorDecoder, A.NullThrownFromJavaScriptException, A.ExceptionAndStackTrace, A._StackTrace, A.MapBase, A.LinkedHashMapCell, A.LinkedHashMapKeyIterator, A.StringMatch, A.Rti, A._FunctionParameters, A._Type, A._TimerImpl, A._AsyncAwaitCompleter, A.AsyncError, A._Completer, A._FutureListener, A._Future, A._AsyncCallbackEntry, A.Stream, A._StreamController, A._AsyncStreamControllerDispatch, A._BufferingStreamSubscription, A._StreamSinkWrapper, A._DelayedEvent, A._DelayedDone, A._PendingEvents, A._StreamIterator, A._Zone, A.ListBase, A._ListQueueIterator, A.Codec, A.Converter, A._JsonStringifier, A.DateTime, A.Duration, A.OutOfMemoryError, A.StackOverflowError, A._Exception, A.FormatException, A.Null, A._StringStackTrace, A.StringBuffer, A.EventStreamProvider, A._EventStreamSubscription, A._AcceptStructuredClone, A.NullRejectionException, A._JSRandom, A.AsyncMemoizer, A.Level, A.LogRecord, A.Logger, A.Pool, A.PoolResource, A.StreamChannelMixin]);
+    _inheritMany(A.Object, [A.JS_CONST, J.Interceptor, J.ArrayIterator, A.Error, A.Closure, A.Iterable, A.ListIterator, A.FixedLengthListMixin, A.Symbol, A.MapView, A.ConstantMap, A.JSInvocationMirror, A.TypeErrorDecoder, A.NullThrownFromJavaScriptException, A.ExceptionAndStackTrace, A._StackTrace, A._Required, A.MapBase, A.LinkedHashMapCell, A.LinkedHashMapKeyIterator, A.StringMatch, A.Rti, A._FunctionParameters, A._Type, A._TimerImpl, A._AsyncAwaitCompleter, A.AsyncError, A._Completer, A._FutureListener, A._Future, A._AsyncCallbackEntry, A.Stream, A._StreamController, A._AsyncStreamControllerDispatch, A._BufferingStreamSubscription, A._StreamSinkWrapper, A._DelayedEvent, A._DelayedDone, A._PendingEvents, A._StreamIterator, A._Zone, A._HashMapKeyIterator, A.ListBase, A._UnmodifiableMapMixin, A._ListQueueIterator, A.Codec, A.Converter, A._JsonStringifier, A.DateTime, A.Duration, A.OutOfMemoryError, A.StackOverflowError, A._Exception, A.FormatException, A.Null, A._StringStackTrace, A.StringBuffer, A.NullRejectionException, A._JSRandom, A.AsyncMemoizer, A.Level, A.LogRecord, A.Logger, A.Pool, A.PoolResource, A.StreamChannelMixin, A.EventStreamProvider, A._EventStreamSubscription]);
     _inheritMany(J.Interceptor, [J.JSBool, J.JSNull, J.JavaScriptObject, J.JavaScriptBigInt, J.JavaScriptSymbol, J.JSNumber, J.JSString]);
-    _inheritMany(J.JavaScriptObject, [J.LegacyJavaScriptObject, J.JSArray, A.NativeByteBuffer, A.NativeTypedData, A.EventTarget, A.DomException, A.Event]);
-    _inheritMany(J.LegacyJavaScriptObject, [J.PlainJavaScriptObject, J.UnknownJavaScriptObject, J.JavaScriptFunction, A._FetchOptions]);
+    _inheritMany(J.JavaScriptObject, [J.LegacyJavaScriptObject, J.JSArray, A.NativeByteBuffer, A.NativeTypedData]);
+    _inheritMany(J.LegacyJavaScriptObject, [J.PlainJavaScriptObject, J.UnknownJavaScriptObject, J.JavaScriptFunction]);
     _inherit(J.JSUnmodifiableArray, J.JSArray);
     _inheritMany(J.JSNumber, [J.JSInt, J.JSNumNotInt]);
-    _inheritMany(A.Error, [A.LateError, A.TypeError, A.JsNoSuchMethodError, A.UnknownJsTypeError, A._CyclicInitializationError, A.RuntimeError, A._Error, A.JsonUnsupportedObjectError, A.AssertionError, A.ArgumentError, A.UnsupportedError, A.UnimplementedError, A.StateError, A.ConcurrentModificationError]);
-    _inheritMany(A.Closure, [A.Closure0Args, A.Closure2Args, A.TearOffClosure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A._Future__chainForeignFuture_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A.Stream_length_closure, A.Stream_first_closure0, A._RootZone_bindUnaryCallbackGuarded_closure, A._EventStreamSubscription_closure, A._EventStreamSubscription_onData_closure, A._convertDartToNative_Value_closure, A.promiseToFuture_closure, A.promiseToFuture_closure0, A.Pool__runOnRelease_closure, A.SseClient_closure0, A.SseClient_closure1, A.generateUuidV4_generateBits, A.main_closure, A.main_closure0]);
+    _inheritMany(A.Error, [A.LateError, A.TypeError, A.JsNoSuchMethodError, A.UnknownJsTypeError, A._CyclicInitializationError, A.RuntimeError, A._Error, A.JsonUnsupportedObjectError, A.AssertionError, A.ArgumentError, A.NoSuchMethodError, A.UnsupportedError, A.UnimplementedError, A.StateError, A.ConcurrentModificationError]);
+    _inheritMany(A.Closure, [A.Closure0Args, A.Closure2Args, A.TearOffClosure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A._Future__chainForeignFuture_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A.Stream_length_closure, A.Stream_first_closure0, A._RootZone_bindUnaryCallbackGuarded_closure, A.promiseToFuture_closure, A.promiseToFuture_closure0, A.dartify_convert, A.Pool__runOnRelease_closure, A.SseClient_closure0, A.SseClient_closure1, A.generateUuidV4_generateBits, A._EventStreamSubscription_closure, A._EventStreamSubscription_onData_closure, A.main_closure, A.main_closure0]);
     _inheritMany(A.Closure0Args, [A.nullFuture_closure, A._AsyncRun__scheduleImmediateJsOverride_internalCallback, A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, A._TimerImpl_internalCallback, A._Future__addListener_closure, A._Future__prependListeners_closure, A._Future__chainForeignFuture_closure1, A._Future__chainCoreFutureAsync_closure, A._Future__asyncCompleteWithValue_closure, A._Future__asyncCompleteError_closure, A._Future__propagateToListeners_handleWhenCompleteCallback, A._Future__propagateToListeners_handleValueCallback, A._Future__propagateToListeners_handleError, A.Stream_length_closure0, A.Stream_first_closure, A._StreamController__subscribe_closure, A._StreamController__recordCancel_complete, A._BufferingStreamSubscription_asFuture_closure, A._BufferingStreamSubscription_asFuture__closure, A._BufferingStreamSubscription__sendError_sendError, A._BufferingStreamSubscription__sendDone_sendDone, A._PendingEvents_schedule_closure, A._cancelAndValue_closure, A._rootHandleError_closure, A._RootZone_bindCallbackGuarded_closure, A.Logger_Logger_closure, A.SseClient_closure, A.SseClient__closure, A.SseClient__onOutgoingMessage_closure]);
     _inherit(A.EfficientLengthIterable, A.Iterable);
-    _inheritMany(A.EfficientLengthIterable, [A.ListIterable, A.LinkedHashMapKeyIterable]);
+    _inheritMany(A.EfficientLengthIterable, [A.ListIterable, A.LinkedHashMapKeyIterable, A._HashMapKeyIterable]);
+    _inherit(A._UnmodifiableMapView_MapView__UnmodifiableMapMixin, A.MapView);
+    _inherit(A.UnmodifiableMapView, A._UnmodifiableMapView_MapView__UnmodifiableMapMixin);
+    _inherit(A.ConstantMapView, A.UnmodifiableMapView);
+    _inherit(A.ConstantStringMap, A.ConstantMap);
+    _inheritMany(A.Closure2Args, [A.Primitives_functionNoSuchMethod_closure, A.initHooks_closure0, A._awaitOnObject_closure0, A._wrapJsFunctionForAsync_closure, A._Future__chainForeignFuture_closure0, A._BufferingStreamSubscription_asFuture_closure0, A.MapBase_mapToString_closure, A._JsonStringifier_writeMap_closure, A.NoSuchMethodError_toString_closure, A.Pool__runOnRelease_closure0, A.generateUuidV4_printDigits, A.generateUuidV4_bitsDigits]);
     _inherit(A.NullError, A.TypeError);
     _inheritMany(A.TearOffClosure, [A.StaticClosure, A.BoundClosure]);
-    _inheritMany(A.MapBase, [A.JsLinkedHashMap, A._JsonMap]);
-    _inheritMany(A.Closure2Args, [A.initHooks_closure0, A._awaitOnObject_closure0, A._wrapJsFunctionForAsync_closure, A._Future__chainForeignFuture_closure0, A._BufferingStreamSubscription_asFuture_closure0, A.MapBase_mapToString_closure, A._JsonStringifier_writeMap_closure, A._AcceptStructuredClone_walk_closure, A.convertDartToNative_Dictionary_closure, A.Pool__runOnRelease_closure0, A.generateUuidV4_printDigits, A.generateUuidV4_bitsDigits]);
+    _inheritMany(A.MapBase, [A.JsLinkedHashMap, A._HashMap, A._JsonMap]);
     _inheritMany(A.NativeTypedData, [A.NativeByteData, A.NativeTypedArray]);
     _inheritMany(A.NativeTypedArray, [A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin]);
     _inherit(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin);
@@ -8143,37 +8466,32 @@
     _inherit(A._ControllerSubscription, A._BufferingStreamSubscription);
     _inheritMany(A._DelayedEvent, [A._DelayedData, A._DelayedError]);
     _inherit(A._RootZone, A._Zone);
+    _inherit(A._IdentityHashMap, A._HashMap);
     _inheritMany(A.ListIterable, [A.ListQueue, A._JsonMapKeyIterable]);
     _inherit(A.JsonCyclicError, A.JsonUnsupportedObjectError);
     _inherit(A.JsonCodec, A.Codec);
     _inheritMany(A.Converter, [A.JsonEncoder, A.JsonDecoder]);
     _inherit(A._JsonStringStringifier, A._JsonStringifier);
     _inheritMany(A.ArgumentError, [A.RangeError, A.IndexError]);
-    _inheritMany(A.EventTarget, [A.Node, A.EventSource]);
-    _inherit(A.Element, A.Node);
-    _inheritMany(A.Element, [A.HtmlElement, A.SvgElement]);
-    _inheritMany(A.HtmlElement, [A.AnchorElement, A.AreaElement, A.FormElement, A.SelectElement]);
-    _inheritMany(A.Event, [A.MessageEvent, A.UIEvent]);
-    _inherit(A.MouseEvent, A.UIEvent);
-    _inherit(A._ElementEventStreamImpl, A._EventStream);
-    _inherit(A._AcceptStructuredCloneDart2Js, A._AcceptStructuredClone);
     _inherit(A.SseClient, A.StreamChannelMixin);
+    _inherit(A._ElementEventStreamImpl, A._EventStream);
     _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A.ListBase);
     _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin);
     _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin, A.ListBase);
     _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin);
     _mixin(A._AsyncStreamController, A._AsyncStreamControllerDispatch);
+    _mixin(A._UnmodifiableMapView_MapView__UnmodifiableMapMixin, A._UnmodifiableMapMixin);
   })();
   var init = {
     typeUniverse: {eC: new Map(), tR: {}, eT: {}, tPV: {}, sEA: []},
-    mangledGlobalNames: {int: "int", double: "double", num: "num", String: "String", bool: "bool", Null: "Null", List: "List"},
+    mangledGlobalNames: {int: "int", double: "double", num: "num", String: "String", bool: "bool", Null: "Null", List: "List", Object: "Object", Map: "Map"},
     mangledNames: {},
-    types: ["~()", "~(Event)", "~(@)", "Null()", "Null(@)", "Null(Object,StackTrace)", "~(~())", "Future<Null>()", "@(@)", "~(Object,StackTrace)", "~(Object?,Object?)", "String(int,int)", "@(@,String)", "@(String)", "Null(~())", "Null(@,StackTrace)", "~(int,@)", "_Future<@>(@)", "@(@,@)", "~(@,@)", "Logger()", "~(String?)", "int(int)", "~(MouseEvent)", "~(String)"],
+    types: ["~()", "~(JavaScriptObject)", "Null()", "~(@)", "Null(@)", "Null(Object,StackTrace)", "~(~())", "Future<Null>()", "@(@)", "~(Object,StackTrace)", "~(Object?,Object?)", "String(int,int)", "~(String,@)", "@(@,String)", "@(String)", "Null(~())", "Null(@,StackTrace)", "~(int,@)", "_Future<@>(@)", "~(Symbol0,@)", "Object?(Object?)", "Logger()", "~(String?)", "int(int)", "~(String)"],
     interceptorsByTag: null,
     leafTags: null,
     arrayRti: Symbol("$ti")
   };
-  A._Universe_addRules(init.typeUniverse, JSON.parse('{"PlainJavaScriptObject":"LegacyJavaScriptObject","UnknownJavaScriptObject":"LegacyJavaScriptObject","JavaScriptFunction":"LegacyJavaScriptObject","_FetchOptions":"LegacyJavaScriptObject","AbortPaymentEvent":"Event","ExtendableEvent":"Event","AElement":"SvgElement","GraphicsElement":"SvgElement","AudioElement":"HtmlElement","MediaElement":"HtmlElement","PointerEvent":"MouseEvent","CompositionEvent":"UIEvent","MessagePort":"EventTarget","MathMLElement":"Element","HtmlDocument":"Node","Document":"Node","JSBool":{"bool":[],"TrustedGetRuntimeType":[]},"JSNull":{"Null":[],"TrustedGetRuntimeType":[]},"JSArray":{"List":["1"],"Iterable":["1"]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"Iterable":["1"]},"JSNumber":{"double":[],"num":[]},"JSInt":{"double":[],"int":[],"num":[],"TrustedGetRuntimeType":[]},"JSNumNotInt":{"double":[],"num":[],"TrustedGetRuntimeType":[]},"JSString":{"String":[],"Pattern":[],"TrustedGetRuntimeType":[]},"LateError":{"Error":[]},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"Iterable":["1"]},"NullError":{"TypeError":[],"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"Closure0Args":{"Function":[]},"Closure2Args":{"Function":[]},"TearOffClosure":{"Function":[]},"StaticClosure":{"Function":[]},"BoundClosure":{"Function":[]},"_CyclicInitializationError":{"Error":[]},"RuntimeError":{"Error":[]},"JsLinkedHashMap":{"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"LinkedHashMapKeyIterable":{"Iterable":["1"]},"NativeByteBuffer":{"TrustedGetRuntimeType":[]},"NativeByteData":{"TrustedGetRuntimeType":[]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"]},"NativeTypedArrayOfDouble":{"ListBase":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"]},"NativeTypedArrayOfInt":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeFloat32List":{"ListBase":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double"},"NativeFloat64List":{"ListBase":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double"},"NativeInt16List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeInt32List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeInt8List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint16List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint32List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint8ClampedList":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint8List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"_Error":{"Error":[]},"_TypeError":{"TypeError":[],"Error":[]},"_Future":{"Future":["1"]},"_TimerImpl":{"Timer":[]},"_AsyncAwaitCompleter":{"Completer":["1"]},"AsyncError":{"Error":[]},"_Completer":{"Completer":["1"]},"_AsyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_SyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_StreamController":{"StreamController":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_AsyncStreamController":{"_AsyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_ControllerStream":{"_StreamImpl":["1"],"Stream":["1"]},"_ControllerSubscription":{"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventDispatch":["1"]},"_BufferingStreamSubscription":{"StreamSubscription":["1"],"_EventDispatch":["1"]},"_StreamImpl":{"Stream":["1"]},"_DelayedData":{"_DelayedEvent":["1"]},"_DelayedError":{"_DelayedEvent":["@"]},"_DelayedDone":{"_DelayedEvent":["@"]},"_Zone":{"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"MapBase":{"Map":["1","2"]},"ListQueue":{"Queue":["1"],"ListIterable":["1"],"Iterable":["1"],"ListIterable.E":"1"},"_JsonMap":{"MapBase":["String","@"],"Map":["String","@"],"MapBase.K":"String","MapBase.V":"@"},"_JsonMapKeyIterable":{"ListIterable":["String"],"Iterable":["String"],"ListIterable.E":"String"},"JsonUnsupportedObjectError":{"Error":[]},"JsonCyclicError":{"Error":[]},"JsonCodec":{"Codec":["Object?","String"]},"JsonEncoder":{"Converter":["Object?","String"]},"JsonDecoder":{"Converter":["String","Object?"]},"double":{"num":[]},"int":{"num":[]},"String":{"Pattern":[]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"_StringStackTrace":{"StackTrace":[]},"StringBuffer":{"StringSink":[]},"MouseEvent":{"Event":[]},"HtmlElement":{"Element":[],"EventTarget":[]},"AnchorElement":{"Element":[],"EventTarget":[]},"AreaElement":{"Element":[],"EventTarget":[]},"Element":{"EventTarget":[]},"EventSource":{"EventTarget":[]},"FormElement":{"Element":[],"EventTarget":[]},"MessageEvent":{"Event":[]},"Node":{"EventTarget":[]},"SelectElement":{"Element":[],"EventTarget":[]},"UIEvent":{"Event":[]},"_EventStream":{"Stream":["1"]},"_ElementEventStreamImpl":{"_EventStream":["1"],"Stream":["1"]},"_EventStreamSubscription":{"StreamSubscription":["1"]},"SvgElement":{"Element":[],"EventTarget":[]},"Int8List":{"List":["int"],"Iterable":["int"]},"Uint8List":{"List":["int"],"Iterable":["int"]},"Uint8ClampedList":{"List":["int"],"Iterable":["int"]},"Int16List":{"List":["int"],"Iterable":["int"]},"Uint16List":{"List":["int"],"Iterable":["int"]},"Int32List":{"List":["int"],"Iterable":["int"]},"Uint32List":{"List":["int"],"Iterable":["int"]},"Float32List":{"List":["double"],"Iterable":["double"]},"Float64List":{"List":["double"],"Iterable":["double"]}}'));
+  A._Universe_addRules(init.typeUniverse, JSON.parse('{"PlainJavaScriptObject":"LegacyJavaScriptObject","UnknownJavaScriptObject":"LegacyJavaScriptObject","JavaScriptFunction":"LegacyJavaScriptObject","JavaScriptObject":{"JSObject":[]},"JSBool":{"bool":[],"TrustedGetRuntimeType":[]},"JSNull":{"Null":[],"TrustedGetRuntimeType":[]},"LegacyJavaScriptObject":{"JavaScriptObject":[],"JSObject":[]},"JSArray":{"List":["1"],"JavaScriptObject":[],"JSObject":[],"Iterable":["1"]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"JavaScriptObject":[],"JSObject":[],"Iterable":["1"]},"JSNumber":{"double":[],"num":[]},"JSInt":{"double":[],"int":[],"num":[],"TrustedGetRuntimeType":[]},"JSNumNotInt":{"double":[],"num":[],"TrustedGetRuntimeType":[]},"JSString":{"String":[],"Pattern":[],"TrustedGetRuntimeType":[]},"LateError":{"Error":[]},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"Iterable":["1"]},"Symbol":{"Symbol0":[]},"ConstantMapView":{"UnmodifiableMapView":["1","2"],"_UnmodifiableMapView_MapView__UnmodifiableMapMixin":["1","2"],"MapView":["1","2"],"_UnmodifiableMapMixin":["1","2"],"Map":["1","2"]},"ConstantMap":{"Map":["1","2"]},"ConstantStringMap":{"ConstantMap":["1","2"],"Map":["1","2"]},"JSInvocationMirror":{"Invocation":[]},"NullError":{"TypeError":[],"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"Closure0Args":{"Function":[]},"Closure2Args":{"Function":[]},"TearOffClosure":{"Function":[]},"StaticClosure":{"Function":[]},"BoundClosure":{"Function":[]},"_CyclicInitializationError":{"Error":[]},"RuntimeError":{"Error":[]},"JsLinkedHashMap":{"MapBase":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"LinkedHashMapKeyIterable":{"Iterable":["1"]},"NativeByteBuffer":{"JavaScriptObject":[],"JSObject":[],"TrustedGetRuntimeType":[]},"NativeTypedData":{"JavaScriptObject":[],"JSObject":[]},"NativeByteData":{"JavaScriptObject":[],"JSObject":[],"TrustedGetRuntimeType":[]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"],"JavaScriptObject":[],"JSObject":[]},"NativeTypedArrayOfDouble":{"ListBase":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"JavaScriptObject":[],"JSObject":[],"Iterable":["double"],"FixedLengthListMixin":["double"]},"NativeTypedArrayOfInt":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeFloat32List":{"ListBase":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"JavaScriptObject":[],"JSObject":[],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double"},"NativeFloat64List":{"ListBase":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"JavaScriptObject":[],"JSObject":[],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double"},"NativeInt16List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeInt32List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeInt8List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint16List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint32List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint8ClampedList":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint8List":{"ListBase":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"_Error":{"Error":[]},"_TypeError":{"TypeError":[],"Error":[]},"_Future":{"Future":["1"]},"_TimerImpl":{"Timer":[]},"_AsyncAwaitCompleter":{"Completer":["1"]},"AsyncError":{"Error":[]},"_Completer":{"Completer":["1"]},"_AsyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_SyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_StreamController":{"StreamController":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_AsyncStreamController":{"_AsyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_ControllerStream":{"_StreamImpl":["1"],"Stream":["1"]},"_ControllerSubscription":{"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventDispatch":["1"]},"_BufferingStreamSubscription":{"StreamSubscription":["1"],"_EventDispatch":["1"]},"_StreamImpl":{"Stream":["1"]},"_DelayedData":{"_DelayedEvent":["1"]},"_DelayedError":{"_DelayedEvent":["@"]},"_DelayedDone":{"_DelayedEvent":["@"]},"_Zone":{"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"_HashMap":{"MapBase":["1","2"],"Map":["1","2"]},"_IdentityHashMap":{"_HashMap":["1","2"],"MapBase":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_HashMapKeyIterable":{"Iterable":["1"]},"MapBase":{"Map":["1","2"]},"MapView":{"Map":["1","2"]},"UnmodifiableMapView":{"_UnmodifiableMapView_MapView__UnmodifiableMapMixin":["1","2"],"MapView":["1","2"],"_UnmodifiableMapMixin":["1","2"],"Map":["1","2"]},"ListQueue":{"Queue":["1"],"ListIterable":["1"],"Iterable":["1"],"ListIterable.E":"1"},"_JsonMap":{"MapBase":["String","@"],"Map":["String","@"],"MapBase.K":"String","MapBase.V":"@"},"_JsonMapKeyIterable":{"ListIterable":["String"],"Iterable":["String"],"ListIterable.E":"String"},"JsonUnsupportedObjectError":{"Error":[]},"JsonCyclicError":{"Error":[]},"JsonCodec":{"Codec":["Object?","String"]},"JsonEncoder":{"Converter":["Object?","String"]},"JsonDecoder":{"Converter":["String","Object?"]},"double":{"num":[]},"int":{"num":[]},"String":{"Pattern":[]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"NoSuchMethodError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"_StringStackTrace":{"StackTrace":[]},"StringBuffer":{"StringSink":[]},"_EventStream":{"Stream":["1"]},"_ElementEventStreamImpl":{"_EventStream":["1"],"Stream":["1"]},"_EventStreamSubscription":{"StreamSubscription":["1"]},"Int8List":{"List":["int"],"Iterable":["int"]},"Uint8List":{"List":["int"],"Iterable":["int"]},"Uint8ClampedList":{"List":["int"],"Iterable":["int"]},"Int16List":{"List":["int"],"Iterable":["int"]},"Uint16List":{"List":["int"],"Iterable":["int"]},"Int32List":{"List":["int"],"Iterable":["int"]},"Uint32List":{"List":["int"],"Iterable":["int"]},"Float32List":{"List":["double"],"Iterable":["double"]},"Float64List":{"List":["double"],"Iterable":["double"]}}'));
   A._Universe_addErasedTypes(init.typeUniverse, JSON.parse('{"EfficientLengthIterable":1,"NativeTypedArray":1,"_DelayedEvent":1,"StreamChannelMixin":1}'));
   var string$ = {
     Error_: "Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type"
@@ -8183,38 +8501,42 @@
     return {
       $env_1_1_void: findType("@<~>"),
       AsyncError: findType("AsyncError"),
+      ConstantMapView_Symbol_dynamic: findType("ConstantMapView<Symbol0,@>"),
       Error: findType("Error"),
-      Event: findType("Event"),
       Function: findType("Function"),
       Future_dynamic: findType("Future<@>"),
+      Invocation: findType("Invocation"),
       Iterable_dynamic: findType("Iterable<@>"),
       JSArray_String: findType("JSArray<String>"),
       JSArray_dynamic: findType("JSArray<@>"),
       JSNull: findType("JSNull"),
+      JSObject: findType("JSObject"),
       JavaScriptFunction: findType("JavaScriptFunction"),
       JavaScriptIndexingBehavior_dynamic: findType("JavaScriptIndexingBehavior<@>"),
+      JavaScriptObject: findType("JavaScriptObject"),
+      JsLinkedHashMap_Symbol_dynamic: findType("JsLinkedHashMap<Symbol0,@>"),
       List_dynamic: findType("List<@>"),
       Logger: findType("Logger"),
       Map_dynamic_dynamic: findType("Map<@,@>"),
-      MessageEvent: findType("MessageEvent"),
-      MouseEvent: findType("MouseEvent"),
       Null: findType("Null"),
       Object: findType("Object"),
       PoolResource: findType("PoolResource"),
       Record: findType("Record"),
       StackTrace: findType("StackTrace"),
       String: findType("String"),
+      Symbol: findType("Symbol0"),
       TrustedGetRuntimeType: findType("TrustedGetRuntimeType"),
       TypeError: findType("TypeError"),
       UnknownJavaScriptObject: findType("UnknownJavaScriptObject"),
       _AsyncCompleter_PoolResource: findType("_AsyncCompleter<PoolResource>"),
       _AsyncCompleter_void: findType("_AsyncCompleter<~>"),
-      _ElementEventStreamImpl_MouseEvent: findType("_ElementEventStreamImpl<MouseEvent>"),
-      _EventStream_Event: findType("_EventStream<Event>"),
+      _ElementEventStreamImpl_JavaScriptObject: findType("_ElementEventStreamImpl<JavaScriptObject>"),
+      _EventStream_JavaScriptObject: findType("_EventStream<JavaScriptObject>"),
       _Future_PoolResource: findType("_Future<PoolResource>"),
       _Future_dynamic: findType("_Future<@>"),
       _Future_int: findType("_Future<int>"),
       _Future_void: findType("_Future<~>"),
+      _IdentityHashMap_of_nullable_Object_and_nullable_Object: findType("_IdentityHashMap<Object?,Object?>"),
       _StreamControllerAddStreamState_nullable_Object: findType("_StreamControllerAddStreamState<Object?>"),
       _SyncCompleter_PoolResource: findType("_SyncCompleter<PoolResource>"),
       bool: findType("bool"),
@@ -8224,19 +8546,18 @@
       dynamic_Function: findType("@()"),
       dynamic_Function_Object: findType("@(Object)"),
       dynamic_Function_Object_StackTrace: findType("@(Object,StackTrace)"),
-      dynamic_Function_dynamic_dynamic: findType("@(@,@)"),
       int: findType("int"),
       legacy_Never: findType("0&*"),
       legacy_Object: findType("Object*"),
       nullable_Future_Null: findType("Future<Null>?"),
+      nullable_JavaScriptObject: findType("JavaScriptObject?"),
       nullable_List_dynamic: findType("List<@>?"),
       nullable_Object: findType("Object?"),
       nullable_StackTrace: findType("StackTrace?"),
       nullable__DelayedEvent_dynamic: findType("_DelayedEvent<@>?"),
       nullable__FutureListener_dynamic_dynamic: findType("_FutureListener<@,@>?"),
-      nullable_dynamic_Function_Event: findType("@(Event)?"),
       nullable_void_Function: findType("~()?"),
-      nullable_void_Function_Event: findType("~(Event)?"),
+      nullable_void_Function_JavaScriptObject: findType("~(JavaScriptObject)?"),
       num: findType("num"),
       void: findType("~"),
       void_Function: findType("~()"),
@@ -8246,7 +8567,7 @@
     };
   })();
   (function constants() {
-    B.EventSource_methods = A.EventSource.prototype;
+    var makeConstList = hunkHelpers.makeConstList;
     B.Interceptor_methods = J.Interceptor.prototype;
     B.JSArray_methods = J.JSArray.prototype;
     B.JSInt_methods = J.JSInt.prototype;
@@ -8274,7 +8595,7 @@
     }
   }
   function getUnknownTagGenericBrowser(object, tag) {
-    if (self.HTMLElement && object instanceof HTMLElement) return "HTMLElement";
+    if (object instanceof HTMLElement) return "HTMLElement";
     return getUnknownTag(object, tag);
   }
   function prototypeForTag(tag) {
@@ -8285,7 +8606,7 @@
     return constructor.prototype;
   }
   function discriminator(tag) { return null; }
-  var isBrowser = typeof navigator == "object";
+  var isBrowser = typeof HTMLElement == "function";
   return {
     getTag: getTag,
     getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag,
@@ -8295,9 +8616,10 @@
     B.C_JS_CONST6 = function(getTagFallback) {
   return function(hooks) {
     if (typeof navigator != "object") return hooks;
-    var ua = navigator.userAgent;
-    if (ua.indexOf("DumpRenderTree") >= 0) return hooks;
-    if (ua.indexOf("Chrome") >= 0) {
+    var userAgent = navigator.userAgent;
+    if (typeof userAgent != "string") return hooks;
+    if (userAgent.indexOf("DumpRenderTree") >= 0) return hooks;
+    if (userAgent.indexOf("Chrome") >= 0) {
       function confirm(p) {
         return typeof window == "object" && window[p] && window[p].name == p;
       }
@@ -8310,26 +8632,10 @@
   if (typeof dartExperimentalFixupGetTag != "function") return hooks;
   hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag);
 };
-    B.C_JS_CONST2 = function(hooks) {
-  var getTag = hooks.getTag;
-  var prototypeForTag = hooks.prototypeForTag;
-  function getTagFixed(o) {
-    var tag = getTag(o);
-    if (tag == "Document") {
-      if (!!o.xmlVersion) return "!Document";
-      return "!HTMLDocument";
-    }
-    return tag;
-  }
-  function prototypeForTagFixed(tag) {
-    if (tag == "Document") return null;
-    return prototypeForTag(tag);
-  }
-  hooks.getTag = getTagFixed;
-  hooks.prototypeForTag = prototypeForTagFixed;
-};
     B.C_JS_CONST5 = function(hooks) {
-  var userAgent = typeof navigator == "object" ? navigator.userAgent : "";
+  if (typeof navigator != "object") return hooks;
+  var userAgent = navigator.userAgent;
+  if (typeof userAgent != "string") return hooks;
   if (userAgent.indexOf("Firefox") == -1) return hooks;
   var getTag = hooks.getTag;
   var quickMap = {
@@ -8346,7 +8652,9 @@
   hooks.getTag = getTagFirefox;
 };
     B.C_JS_CONST4 = function(hooks) {
-  var userAgent = typeof navigator == "object" ? navigator.userAgent : "";
+  if (typeof navigator != "object") return hooks;
+  var userAgent = navigator.userAgent;
+  if (typeof userAgent != "string") return hooks;
   if (userAgent.indexOf("Trident/") == -1) return hooks;
   var getTag = hooks.getTag;
   var quickMap = {
@@ -8374,12 +8682,31 @@
   hooks.getTag = getTagIE;
   hooks.prototypeForTag = prototypeForTagIE;
 };
+    B.C_JS_CONST2 = function(hooks) {
+  var getTag = hooks.getTag;
+  var prototypeForTag = hooks.prototypeForTag;
+  function getTagFixed(o) {
+    var tag = getTag(o);
+    if (tag == "Document") {
+      if (!!o.xmlVersion) return "!Document";
+      return "!HTMLDocument";
+    }
+    return tag;
+  }
+  function prototypeForTagFixed(tag) {
+    if (tag == "Document") return null;
+    return prototypeForTag(tag);
+  }
+  hooks.getTag = getTagFixed;
+  hooks.prototypeForTag = prototypeForTagFixed;
+};
     B.C_JS_CONST3 = function(hooks) { return hooks; }
 ;
     B.C_JsonCodec = new A.JsonCodec();
     B.C_OutOfMemoryError = new A.OutOfMemoryError();
     B.C__DelayedDone = new A._DelayedDone();
     B.C__JSRandom = new A._JSRandom();
+    B.C__Required = new A._Required();
     B.C__RootZone = new A._RootZone();
     B.Duration_0 = new A.Duration(0);
     B.Duration_5000000 = new A.Duration(5000000);
@@ -8388,6 +8715,10 @@
     B.Level_INFO_800 = new A.Level("INFO", 800);
     B.Level_SEVERE_1000 = new A.Level("SEVERE", 1000);
     B.Level_WARNING_900 = new A.Level("WARNING", 900);
+    B.List_empty = A._setArrayType(makeConstList([]), type$.JSArray_dynamic);
+    B.Object_empty = {};
+    B.Map_empty = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<Symbol0,@>"));
+    B.Symbol_call = new A.Symbol("call");
     B.Type_ByteBuffer_RkP = A.typeLiteral("ByteBuffer");
     B.Type_ByteData_zNC = A.typeLiteral("ByteData");
     B.Type_Float32List_LB7 = A.typeLiteral("Float32List");
@@ -8505,8 +8836,8 @@
       }
       init.dispatchPropertyName = init.getIsolateTag("dispatch_record");
     }();
-    hunkHelpers.setOrUpdateInterceptorsByTag({Blob: J.JavaScriptObject, DOMError: J.JavaScriptObject, File: J.JavaScriptObject, MediaError: J.JavaScriptObject, NavigatorUserMediaError: J.JavaScriptObject, OverconstrainedError: J.JavaScriptObject, PositionError: J.JavaScriptObject, GeolocationPositionError: J.JavaScriptObject, ArrayBuffer: A.NativeByteBuffer, ArrayBufferView: A.NativeTypedData, DataView: A.NativeByteData, Float32Array: A.NativeFloat32List, Float64Array: A.NativeFloat64List, Int16Array: A.NativeInt16List, Int32Array: A.NativeInt32List, Int8Array: A.NativeInt8List, Uint16Array: A.NativeUint16List, Uint32Array: A.NativeUint32List, Uint8ClampedArray: A.NativeUint8ClampedList, CanvasPixelArray: A.NativeUint8ClampedList, Uint8Array: A.NativeUint8List, HTMLAudioElement: A.HtmlElement, HTMLBRElement: A.HtmlElement, HTMLBaseElement: A.HtmlElement, HTMLBodyElement: A.HtmlElement, HTMLButtonElement: A.HtmlElement, HTMLCanvasElement: A.HtmlElement, HTMLContentElement: A.HtmlElement, HTMLDListElement: A.HtmlElement, HTMLDataElement: A.HtmlElement, HTMLDataListElement: A.HtmlElement, HTMLDetailsElement: A.HtmlElement, HTMLDialogElement: A.HtmlElement, HTMLDivElement: A.HtmlElement, HTMLEmbedElement: A.HtmlElement, HTMLFieldSetElement: A.HtmlElement, HTMLHRElement: A.HtmlElement, HTMLHeadElement: A.HtmlElement, HTMLHeadingElement: A.HtmlElement, HTMLHtmlElement: A.HtmlElement, HTMLIFrameElement: A.HtmlElement, HTMLImageElement: A.HtmlElement, HTMLInputElement: A.HtmlElement, HTMLLIElement: A.HtmlElement, HTMLLabelElement: A.HtmlElement, HTMLLegendElement: A.HtmlElement, HTMLLinkElement: A.HtmlElement, HTMLMapElement: A.HtmlElement, HTMLMediaElement: A.HtmlElement, HTMLMenuElement: A.HtmlElement, HTMLMetaElement: A.HtmlElement, HTMLMeterElement: A.HtmlElement, HTMLModElement: A.HtmlElement, HTMLOListElement: A.HtmlElement, HTMLObjectElement: A.HtmlElement, HTMLOptGroupElement: A.HtmlElement, HTMLOptionElement: A.HtmlElement, HTMLOutputElement: A.HtmlElement, HTMLParagraphElement: A.HtmlElement, HTMLParamElement: A.HtmlElement, HTMLPictureElement: A.HtmlElement, HTMLPreElement: A.HtmlElement, HTMLProgressElement: A.HtmlElement, HTMLQuoteElement: A.HtmlElement, HTMLScriptElement: A.HtmlElement, HTMLShadowElement: A.HtmlElement, HTMLSlotElement: A.HtmlElement, HTMLSourceElement: A.HtmlElement, HTMLSpanElement: A.HtmlElement, HTMLStyleElement: A.HtmlElement, HTMLTableCaptionElement: A.HtmlElement, HTMLTableCellElement: A.HtmlElement, HTMLTableDataCellElement: A.HtmlElement, HTMLTableHeaderCellElement: A.HtmlElement, HTMLTableColElement: A.HtmlElement, HTMLTableElement: A.HtmlElement, HTMLTableRowElement: A.HtmlElement, HTMLTableSectionElement: A.HtmlElement, HTMLTemplateElement: A.HtmlElement, HTMLTextAreaElement: A.HtmlElement, HTMLTimeElement: A.HtmlElement, HTMLTitleElement: A.HtmlElement, HTMLTrackElement: A.HtmlElement, HTMLUListElement: A.HtmlElement, HTMLUnknownElement: A.HtmlElement, HTMLVideoElement: A.HtmlElement, HTMLDirectoryElement: A.HtmlElement, HTMLFontElement: A.HtmlElement, HTMLFrameElement: A.HtmlElement, HTMLFrameSetElement: A.HtmlElement, HTMLMarqueeElement: A.HtmlElement, HTMLElement: A.HtmlElement, HTMLAnchorElement: A.AnchorElement, HTMLAreaElement: A.AreaElement, DOMException: A.DomException, MathMLElement: A.Element, Element: A.Element, AbortPaymentEvent: A.Event, AnimationEvent: A.Event, AnimationPlaybackEvent: A.Event, ApplicationCacheErrorEvent: A.Event, BackgroundFetchClickEvent: A.Event, BackgroundFetchEvent: A.Event, BackgroundFetchFailEvent: A.Event, BackgroundFetchedEvent: A.Event, BeforeInstallPromptEvent: A.Event, BeforeUnloadEvent: A.Event, BlobEvent: A.Event, CanMakePaymentEvent: A.Event, ClipboardEvent: A.Event, CloseEvent: A.Event, CustomEvent: A.Event, DeviceMotionEvent: A.Event, DeviceOrientationEvent: A.Event, ErrorEvent: A.Event, ExtendableEvent: A.Event, ExtendableMessageEvent: A.Event, FetchEvent: A.Event, FontFaceSetLoadEvent: A.Event, ForeignFetchEvent: A.Event, GamepadEvent: A.Event, HashChangeEvent: A.Event, InstallEvent: A.Event, MediaEncryptedEvent: A.Event, MediaKeyMessageEvent: A.Event, MediaQueryListEvent: A.Event, MediaStreamEvent: A.Event, MediaStreamTrackEvent: A.Event, MIDIConnectionEvent: A.Event, MIDIMessageEvent: A.Event, MutationEvent: A.Event, NotificationEvent: A.Event, PageTransitionEvent: A.Event, PaymentRequestEvent: A.Event, PaymentRequestUpdateEvent: A.Event, PopStateEvent: A.Event, PresentationConnectionAvailableEvent: A.Event, PresentationConnectionCloseEvent: A.Event, ProgressEvent: A.Event, PromiseRejectionEvent: A.Event, PushEvent: A.Event, RTCDataChannelEvent: A.Event, RTCDTMFToneChangeEvent: A.Event, RTCPeerConnectionIceEvent: A.Event, RTCTrackEvent: A.Event, SecurityPolicyViolationEvent: A.Event, SensorErrorEvent: A.Event, SpeechRecognitionError: A.Event, SpeechRecognitionEvent: A.Event, SpeechSynthesisEvent: A.Event, StorageEvent: A.Event, SyncEvent: A.Event, TrackEvent: A.Event, TransitionEvent: A.Event, WebKitTransitionEvent: A.Event, VRDeviceEvent: A.Event, VRDisplayEvent: A.Event, VRSessionEvent: A.Event, MojoInterfaceRequestEvent: A.Event, ResourceProgressEvent: A.Event, USBConnectionEvent: A.Event, IDBVersionChangeEvent: A.Event, AudioProcessingEvent: A.Event, OfflineAudioCompletionEvent: A.Event, WebGLContextEvent: A.Event, Event: A.Event, InputEvent: A.Event, SubmitEvent: A.Event, EventSource: A.EventSource, MessagePort: A.EventTarget, EventTarget: A.EventTarget, HTMLFormElement: A.FormElement, MessageEvent: A.MessageEvent, MouseEvent: A.MouseEvent, DragEvent: A.MouseEvent, PointerEvent: A.MouseEvent, WheelEvent: A.MouseEvent, Document: A.Node, HTMLDocument: A.Node, Node: A.Node, HTMLSelectElement: A.SelectElement, CompositionEvent: A.UIEvent, FocusEvent: A.UIEvent, KeyboardEvent: A.UIEvent, TextEvent: A.UIEvent, TouchEvent: A.UIEvent, UIEvent: A.UIEvent, SVGAElement: A.SvgElement, SVGAnimateElement: A.SvgElement, SVGAnimateMotionElement: A.SvgElement, SVGAnimateTransformElement: A.SvgElement, SVGAnimationElement: A.SvgElement, SVGCircleElement: A.SvgElement, SVGClipPathElement: A.SvgElement, SVGDefsElement: A.SvgElement, SVGDescElement: A.SvgElement, SVGDiscardElement: A.SvgElement, SVGEllipseElement: A.SvgElement, SVGFEBlendElement: A.SvgElement, SVGFEColorMatrixElement: A.SvgElement, SVGFEComponentTransferElement: A.SvgElement, SVGFECompositeElement: A.SvgElement, SVGFEConvolveMatrixElement: A.SvgElement, SVGFEDiffuseLightingElement: A.SvgElement, SVGFEDisplacementMapElement: A.SvgElement, SVGFEDistantLightElement: A.SvgElement, SVGFEFloodElement: A.SvgElement, SVGFEFuncAElement: A.SvgElement, SVGFEFuncBElement: A.SvgElement, SVGFEFuncGElement: A.SvgElement, SVGFEFuncRElement: A.SvgElement, SVGFEGaussianBlurElement: A.SvgElement, SVGFEImageElement: A.SvgElement, SVGFEMergeElement: A.SvgElement, SVGFEMergeNodeElement: A.SvgElement, SVGFEMorphologyElement: A.SvgElement, SVGFEOffsetElement: A.SvgElement, SVGFEPointLightElement: A.SvgElement, SVGFESpecularLightingElement: A.SvgElement, SVGFESpotLightElement: A.SvgElement, SVGFETileElement: A.SvgElement, SVGFETurbulenceElement: A.SvgElement, SVGFilterElement: A.SvgElement, SVGForeignObjectElement: A.SvgElement, SVGGElement: A.SvgElement, SVGGeometryElement: A.SvgElement, SVGGraphicsElement: A.SvgElement, SVGImageElement: A.SvgElement, SVGLineElement: A.SvgElement, SVGLinearGradientElement: A.SvgElement, SVGMarkerElement: A.SvgElement, SVGMaskElement: A.SvgElement, SVGMetadataElement: A.SvgElement, SVGPathElement: A.SvgElement, SVGPatternElement: A.SvgElement, SVGPolygonElement: A.SvgElement, SVGPolylineElement: A.SvgElement, SVGRadialGradientElement: A.SvgElement, SVGRectElement: A.SvgElement, SVGScriptElement: A.SvgElement, SVGSetElement: A.SvgElement, SVGStopElement: A.SvgElement, SVGStyleElement: A.SvgElement, SVGElement: A.SvgElement, SVGSVGElement: A.SvgElement, SVGSwitchElement: A.SvgElement, SVGSymbolElement: A.SvgElement, SVGTSpanElement: A.SvgElement, SVGTextContentElement: A.SvgElement, SVGTextElement: A.SvgElement, SVGTextPathElement: A.SvgElement, SVGTextPositioningElement: A.SvgElement, SVGTitleElement: A.SvgElement, SVGUseElement: A.SvgElement, SVGViewElement: A.SvgElement, SVGGradientElement: A.SvgElement, SVGComponentTransferFunctionElement: A.SvgElement, SVGFEDropShadowElement: A.SvgElement, SVGMPathElement: A.SvgElement});
-    hunkHelpers.setOrUpdateLeafTags({Blob: true, DOMError: true, File: true, MediaError: true, NavigatorUserMediaError: true, OverconstrainedError: true, PositionError: true, GeolocationPositionError: true, ArrayBuffer: true, ArrayBufferView: false, DataView: true, Float32Array: true, Float64Array: true, Int16Array: true, Int32Array: true, Int8Array: true, Uint16Array: true, Uint32Array: true, Uint8ClampedArray: true, CanvasPixelArray: true, Uint8Array: false, HTMLAudioElement: true, HTMLBRElement: true, HTMLBaseElement: true, HTMLBodyElement: true, HTMLButtonElement: true, HTMLCanvasElement: true, HTMLContentElement: true, HTMLDListElement: true, HTMLDataElement: true, HTMLDataListElement: true, HTMLDetailsElement: true, HTMLDialogElement: true, HTMLDivElement: true, HTMLEmbedElement: true, HTMLFieldSetElement: true, HTMLHRElement: true, HTMLHeadElement: true, HTMLHeadingElement: true, HTMLHtmlElement: true, HTMLIFrameElement: true, HTMLImageElement: true, HTMLInputElement: true, HTMLLIElement: true, HTMLLabelElement: true, HTMLLegendElement: true, HTMLLinkElement: true, HTMLMapElement: true, HTMLMediaElement: true, HTMLMenuElement: true, HTMLMetaElement: true, HTMLMeterElement: true, HTMLModElement: true, HTMLOListElement: true, HTMLObjectElement: true, HTMLOptGroupElement: true, HTMLOptionElement: true, HTMLOutputElement: true, HTMLParagraphElement: true, HTMLParamElement: true, HTMLPictureElement: true, HTMLPreElement: true, HTMLProgressElement: true, HTMLQuoteElement: true, HTMLScriptElement: true, HTMLShadowElement: true, HTMLSlotElement: true, HTMLSourceElement: true, HTMLSpanElement: true, HTMLStyleElement: true, HTMLTableCaptionElement: true, HTMLTableCellElement: true, HTMLTableDataCellElement: true, HTMLTableHeaderCellElement: true, HTMLTableColElement: true, HTMLTableElement: true, HTMLTableRowElement: true, HTMLTableSectionElement: true, HTMLTemplateElement: true, HTMLTextAreaElement: true, HTMLTimeElement: true, HTMLTitleElement: true, HTMLTrackElement: true, HTMLUListElement: true, HTMLUnknownElement: true, HTMLVideoElement: true, HTMLDirectoryElement: true, HTMLFontElement: true, HTMLFrameElement: true, HTMLFrameSetElement: true, HTMLMarqueeElement: true, HTMLElement: false, HTMLAnchorElement: true, HTMLAreaElement: true, DOMException: true, MathMLElement: true, Element: false, AbortPaymentEvent: true, AnimationEvent: true, AnimationPlaybackEvent: true, ApplicationCacheErrorEvent: true, BackgroundFetchClickEvent: true, BackgroundFetchEvent: true, BackgroundFetchFailEvent: true, BackgroundFetchedEvent: true, BeforeInstallPromptEvent: true, BeforeUnloadEvent: true, BlobEvent: true, CanMakePaymentEvent: true, ClipboardEvent: true, CloseEvent: true, CustomEvent: true, DeviceMotionEvent: true, DeviceOrientationEvent: true, ErrorEvent: true, ExtendableEvent: true, ExtendableMessageEvent: true, FetchEvent: true, FontFaceSetLoadEvent: true, ForeignFetchEvent: true, GamepadEvent: true, HashChangeEvent: true, InstallEvent: true, MediaEncryptedEvent: true, MediaKeyMessageEvent: true, MediaQueryListEvent: true, MediaStreamEvent: true, MediaStreamTrackEvent: true, MIDIConnectionEvent: true, MIDIMessageEvent: true, MutationEvent: true, NotificationEvent: true, PageTransitionEvent: true, PaymentRequestEvent: true, PaymentRequestUpdateEvent: true, PopStateEvent: true, PresentationConnectionAvailableEvent: true, PresentationConnectionCloseEvent: true, ProgressEvent: true, PromiseRejectionEvent: true, PushEvent: true, RTCDataChannelEvent: true, RTCDTMFToneChangeEvent: true, RTCPeerConnectionIceEvent: true, RTCTrackEvent: true, SecurityPolicyViolationEvent: true, SensorErrorEvent: true, SpeechRecognitionError: true, SpeechRecognitionEvent: true, SpeechSynthesisEvent: true, StorageEvent: true, SyncEvent: true, TrackEvent: true, TransitionEvent: true, WebKitTransitionEvent: true, VRDeviceEvent: true, VRDisplayEvent: true, VRSessionEvent: true, MojoInterfaceRequestEvent: true, ResourceProgressEvent: true, USBConnectionEvent: true, IDBVersionChangeEvent: true, AudioProcessingEvent: true, OfflineAudioCompletionEvent: true, WebGLContextEvent: true, Event: false, InputEvent: false, SubmitEvent: false, EventSource: true, MessagePort: true, EventTarget: false, HTMLFormElement: true, MessageEvent: true, MouseEvent: true, DragEvent: true, PointerEvent: true, WheelEvent: true, Document: true, HTMLDocument: true, Node: false, HTMLSelectElement: true, CompositionEvent: true, FocusEvent: true, KeyboardEvent: true, TextEvent: true, TouchEvent: true, UIEvent: false, SVGAElement: true, SVGAnimateElement: true, SVGAnimateMotionElement: true, SVGAnimateTransformElement: true, SVGAnimationElement: true, SVGCircleElement: true, SVGClipPathElement: true, SVGDefsElement: true, SVGDescElement: true, SVGDiscardElement: true, SVGEllipseElement: true, SVGFEBlendElement: true, SVGFEColorMatrixElement: true, SVGFEComponentTransferElement: true, SVGFECompositeElement: true, SVGFEConvolveMatrixElement: true, SVGFEDiffuseLightingElement: true, SVGFEDisplacementMapElement: true, SVGFEDistantLightElement: true, SVGFEFloodElement: true, SVGFEFuncAElement: true, SVGFEFuncBElement: true, SVGFEFuncGElement: true, SVGFEFuncRElement: true, SVGFEGaussianBlurElement: true, SVGFEImageElement: true, SVGFEMergeElement: true, SVGFEMergeNodeElement: true, SVGFEMorphologyElement: true, SVGFEOffsetElement: true, SVGFEPointLightElement: true, SVGFESpecularLightingElement: true, SVGFESpotLightElement: true, SVGFETileElement: true, SVGFETurbulenceElement: true, SVGFilterElement: true, SVGForeignObjectElement: true, SVGGElement: true, SVGGeometryElement: true, SVGGraphicsElement: true, SVGImageElement: true, SVGLineElement: true, SVGLinearGradientElement: true, SVGMarkerElement: true, SVGMaskElement: true, SVGMetadataElement: true, SVGPathElement: true, SVGPatternElement: true, SVGPolygonElement: true, SVGPolylineElement: true, SVGRadialGradientElement: true, SVGRectElement: true, SVGScriptElement: true, SVGSetElement: true, SVGStopElement: true, SVGStyleElement: true, SVGElement: true, SVGSVGElement: true, SVGSwitchElement: true, SVGSymbolElement: true, SVGTSpanElement: true, SVGTextContentElement: true, SVGTextElement: true, SVGTextPathElement: true, SVGTextPositioningElement: true, SVGTitleElement: true, SVGUseElement: true, SVGViewElement: true, SVGGradientElement: true, SVGComponentTransferFunctionElement: true, SVGFEDropShadowElement: true, SVGMPathElement: true});
+    hunkHelpers.setOrUpdateInterceptorsByTag({ArrayBuffer: A.NativeByteBuffer, ArrayBufferView: A.NativeTypedData, DataView: A.NativeByteData, Float32Array: A.NativeFloat32List, Float64Array: A.NativeFloat64List, Int16Array: A.NativeInt16List, Int32Array: A.NativeInt32List, Int8Array: A.NativeInt8List, Uint16Array: A.NativeUint16List, Uint32Array: A.NativeUint32List, Uint8ClampedArray: A.NativeUint8ClampedList, CanvasPixelArray: A.NativeUint8ClampedList, Uint8Array: A.NativeUint8List});
+    hunkHelpers.setOrUpdateLeafTags({ArrayBuffer: true, ArrayBufferView: false, DataView: true, Float32Array: true, Float64Array: true, Int16Array: true, Int32Array: true, Int8Array: true, Uint16Array: true, Uint32Array: true, Uint8ClampedArray: true, CanvasPixelArray: true, Uint8Array: false});
     A.NativeTypedArray.$nativeSuperclassTag = "ArrayBufferView";
     A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView";
     A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView";
@@ -8546,20 +8877,21 @@
     }
     var scripts = document.scripts;
     function onLoad(event) {
-      for (var i = 0; i < scripts.length; ++i)
+      for (var i = 0; i < scripts.length; ++i) {
         scripts[i].removeEventListener("load", onLoad, false);
+      }
       callback(event.target);
     }
-    for (var i = 0; i < scripts.length; ++i)
+    for (var i = 0; i < scripts.length; ++i) {
       scripts[i].addEventListener("load", onLoad, false);
+    }
   })(function(currentScript) {
     init.currentScript = currentScript;
     var callMain = A.main;
-    if (typeof dartMainRunner === "function")
+    if (typeof dartMainRunner === "function") {
       dartMainRunner(callMain, []);
-    else
+    } else {
       callMain([]);
+    }
   });
 })();
-
-//# sourceMappingURL=index.dart.js.map
diff --git a/pkgs/sse/tool/build_js.sh b/pkgs/sse/tool/build_js.sh
new file mode 100755
index 0000000..ef29b70
--- /dev/null
+++ b/pkgs/sse/tool/build_js.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+dart compile js --no-source-maps test/web/index.dart -o test/web/index.dart.js