diff --git a/dwds/CHANGELOG.md b/dwds/CHANGELOG.md index 226aa5a9a..7f3b97404 100644 --- a/dwds/CHANGELOG.md +++ b/dwds/CHANGELOG.md @@ -1,10 +1,11 @@ -## 26.2.3-wip +## 26.2.3 - Bump `build_web_compilers` to ^4.4.1. - Remove unused `clientFuture` arg from `DwdsVmClient` methods. - Fix pausing starting of `main` after the hot restart. - Updating bootstrapper for DDC library bundler module format + Frontend Server. - Fix setting up breakpoints when handling in-app restarts with attached debugger. +- Fix issue where the web socket connections with the target application and Chrome debugger close when the computer sleeps. - Fix setting up breakpoints when handling full reloads from attached debugger / page refreshes. diff --git a/dwds/lib/src/debugging/debugger.dart b/dwds/lib/src/debugging/debugger.dart index 38e063e32..79ab77eab 100644 --- a/dwds/lib/src/debugging/debugger.dart +++ b/dwds/lib/src/debugging/debugger.dart @@ -228,6 +228,7 @@ class Debugger { skipLists, root, ); + remoteDebugger.onReconnect = debugger._initialize; await debugger._initialize(); return debugger; } diff --git a/dwds/lib/src/debugging/remote_debugger.dart b/dwds/lib/src/debugging/remote_debugger.dart index 48657ce81..a1c783c1d 100644 --- a/dwds/lib/src/debugging/remote_debugger.dart +++ b/dwds/lib/src/debugging/remote_debugger.dart @@ -10,6 +10,10 @@ class TargetCrashedEvent extends WipEvent { /// A generic debugger used in remote debugging. abstract class RemoteDebugger { + /// An optional callback that's invoked in the case where the debugger + /// connection needs to be reinitialized. + Future Function()? onReconnect; + Stream get onConsoleAPICalled; Stream get onExceptionThrown; diff --git a/dwds/lib/src/debugging/webkit_debugger.dart b/dwds/lib/src/debugging/webkit_debugger.dart index 6e3806947..14edf94c0 100644 --- a/dwds/lib/src/debugging/webkit_debugger.dart +++ b/dwds/lib/src/debugging/webkit_debugger.dart @@ -2,27 +2,136 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'dart:async'; + import 'package:dwds/src/debugging/remote_debugger.dart'; import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart'; +typedef _EventStreamState = ({ + StreamController controller, + WipEventTransformer transformer, +}); + /// A remote debugger with a Webkit Inspection Protocol connection. class WebkitDebugger implements RemoteDebugger { - final WipDebugger _wipDebugger; + WipDebugger _wipDebugger; /// Null until [close] is called. /// /// All subsequent calls to [close] will return this future. Future? _closed; - WebkitDebugger(this._wipDebugger); + // We need to forward the events from the [WipDebugger] instance rather than + // directly expose its streams as it may need to be recreated due to an + // unexpected loss in connection to the debugger. + final _onClosedController = StreamController.broadcast(); + final _onConsoleAPICalledController = + StreamController.broadcast(); + final _onExceptionThrownController = + StreamController.broadcast(); + final _onGlobalObjectClearedController = + StreamController.broadcast(); + final _onPausedController = StreamController.broadcast(); + final _onResumedController = + StreamController.broadcast(); + final _onScriptParsedController = + StreamController.broadcast(); + final _onTargetCrashedController = + StreamController.broadcast(); + + /// Tracks and manages all subscriptions to streams created with + /// `eventStream`. + final _eventStreams = {}; + + late final _controllers = [ + _onClosedController, + _onConsoleAPICalledController, + _onExceptionThrownController, + _onGlobalObjectClearedController, + _onPausedController, + _onResumedController, + _onScriptParsedController, + _onTargetCrashedController, + ]; + + final _streamSubscriptions = []; + + @override + Future Function()? onReconnect; + + WebkitDebugger(this._wipDebugger) { + _initialize(); + } + + void _initialize() { + late StreamSubscription sub; + sub = _wipDebugger.connection.onClose.listen((connection) async { + await sub.cancel(); + if (_closed != null) { + // The connection closing is expected. + _onClosedController.add(connection); + await Future.wait([ + for (final controller in _controllers) controller.close(), + for (final MapEntry(value: (:controller, transformer: _)) + in _eventStreams.entries) + controller.close(), + ]); + return; + } + var retry = false; + var retryCount = 0; + const maxAttempts = 5; + do { + retry = false; + try { + _wipDebugger = WipDebugger( + await WipConnection.connect(connection.url), + ); + await onReconnect?.call(); + } on Exception { + await Future.delayed(Duration(milliseconds: 25 << retryCount)); + retry = true; + retryCount++; + } + } while (retry && retryCount <= maxAttempts); + _initialize(); + }); + + final runtime = _wipDebugger.connection.runtime; + _streamSubscriptions + ..forEach((e) => e.cancel()) + ..clear() + ..addAll([ + runtime.onConsoleAPICalled.listen(_onConsoleAPICalledController.add), + runtime.onExceptionThrown.listen(_onExceptionThrownController.add), + _wipDebugger.onGlobalObjectCleared.listen( + _onGlobalObjectClearedController.add, + ), + _wipDebugger.onPaused.listen(_onPausedController.add), + _wipDebugger.onResumed.listen(_onResumedController.add), + _wipDebugger.onScriptParsed.listen(_onScriptParsedController.add), + _wipDebugger + .eventStream( + 'Inspector.targetCrashed', + (WipEvent event) => TargetCrashedEvent(event.json), + ) + .listen(_onTargetCrashedController.add), + + for (final MapEntry(:key, value: (:controller, :transformer)) + in _eventStreams.entries) + _wipDebugger + .eventStream(key, transformer) + .listen(controller.add, onError: controller.addError), + ]); + } @override Stream get onConsoleAPICalled => - _wipDebugger.connection.runtime.onConsoleAPICalled; + _onConsoleAPICalledController.stream; @override Stream get onExceptionThrown => - _wipDebugger.connection.runtime.onExceptionThrown; + _onExceptionThrownController.stream; @override Future sendCommand( @@ -31,7 +140,10 @@ class WebkitDebugger implements RemoteDebugger { }) => _wipDebugger.sendCommand(command, params: params); @override - Future close() => _closed ??= _wipDebugger.connection.close(); + Future close() => _closed ??= () async { + await _wipDebugger.connection.close(); + await Future.wait([for (final sub in _streamSubscriptions) sub.cancel()]); + }(); @override Future disable() => _wipDebugger.disable(); @@ -103,31 +215,40 @@ class WebkitDebugger implements RemoteDebugger { } @override - Stream eventStream(String method, WipEventTransformer transformer) => - _wipDebugger.eventStream(method, transformer); + Stream eventStream(String method, WipEventTransformer transformer) { + return _eventStreams + .putIfAbsent(method, () { + final controller = StreamController(); + final stream = _wipDebugger.eventStream(method, transformer); + stream.listen(controller.add, onError: controller.addError); + return (controller: controller, transformer: transformer); + }) + .controller + .stream + .cast(); + } @override Stream get onGlobalObjectCleared => - _wipDebugger.onGlobalObjectCleared; + _onGlobalObjectClearedController.stream; @override - Stream get onPaused => _wipDebugger.onPaused; + Stream get onPaused => _onPausedController.stream; @override - Stream get onResumed => _wipDebugger.onResumed; + Stream get onResumed => _onResumedController.stream; @override - Stream get onScriptParsed => _wipDebugger.onScriptParsed; + Stream get onScriptParsed => + _onScriptParsedController.stream; @override - Stream get onTargetCrashed => _wipDebugger.eventStream( - 'Inspector.targetCrashed', - (WipEvent event) => TargetCrashedEvent(event.json), - ); + Stream get onTargetCrashed => + _onTargetCrashedController.stream; @override Map get scripts => _wipDebugger.scripts; @override - Stream get onClose => _wipDebugger.connection.onClose; + Stream get onClose => _onClosedController.stream; } diff --git a/dwds/lib/src/handlers/dev_handler.dart b/dwds/lib/src/handlers/dev_handler.dart index b92a646fb..8f96628c1 100644 --- a/dwds/lib/src/handlers/dev_handler.dart +++ b/dwds/lib/src/handlers/dev_handler.dart @@ -171,12 +171,13 @@ class DevHandler { ) async { ChromeTab? appTab; ExecutionContext? executionContext; - WipConnection? tabConnection; + WipConnection? connection; + late final debugger = WebkitDebugger(WipDebugger(connection!)); final appInstanceId = appConnection.request.instanceId; for (final tab in await chromeConnection.getTabs()) { if (tab.isChromeExtension || tab.isBackgroundPage) continue; - final connection = tabConnection = await tab.connect(); + connection = await tab.connect(); if (_enableLogging) { connection.onSend.listen((message) { _log(' wip', '==> $message'); @@ -208,7 +209,7 @@ class DevHandler { appTab = tab; executionContext = RemoteDebuggerExecutionContext( contextId, - WebkitDebugger(WipDebugger(connection)), + debugger, ); break; } @@ -216,22 +217,20 @@ class DevHandler { if (appTab != null) break; safeUnawaited(connection.close()); } - if (appTab == null || tabConnection == null || executionContext == null) { + if (appTab == null || connection == null || executionContext == null) { throw AppConnectionException( 'Could not connect to application with appInstanceId: ' '$appInstanceId', ); } - final webkitDebugger = WebkitDebugger(WipDebugger(tabConnection)); - return ChromeDebugService.start( // We assume the user will connect to the debug service on the same // machine. This allows consumers of DWDS to provide a `hostname` for // debugging through the Dart Debug Extension without impacting the local // debug workflow. hostname: 'localhost', - remoteDebugger: webkitDebugger, + remoteDebugger: debugger, executionContext: executionContext, assetReader: _assetReader, appConnection: appConnection, diff --git a/dwds/lib/src/injected/client.js b/dwds/lib/src/injected/client.js index 6db572f68..5096344d0 100644 --- a/dwds/lib/src/injected/client.js +++ b/dwds/lib/src/injected/client.js @@ -1,4 +1,4 @@ -// Generated by dart2js (, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.11.0-200.1.beta. +// Generated by dart2js (, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.11.0-235.0.dev. // The code supports the following hooks: // dartPrint(message): // if this function is defined it is called instead of the Dart [print] @@ -557,9 +557,6 @@ LateError$fieldNI(fieldName) { return new A.LateError("Field '" + fieldName + "' has not been initialized."); }, - LateError$fieldAI(fieldName) { - return new A.LateError("Field '" + fieldName + "' has already been initialized."); - }, hexDigitValue(char) { var letter, digit = char ^ 48; @@ -870,6 +867,17 @@ } else A.Sort__doSort(a, less, great, compare, $E); }, + CastStream: function CastStream(t0, t1) { + this.__internal$_source = t0; + this.$ti = t1; + }, + CastStreamSubscription: function CastStreamSubscription(t0, t1, t2) { + var _ = this; + _.__internal$_source = t0; + _.__internal$_zone = t1; + _.__internal$_handleError = _.__internal$_handleData = null; + _.$ti = t2; + }, _CastIterableBase: function _CastIterableBase() { }, CastIterator: function CastIterator(t0, t1) { @@ -2222,9 +2230,6 @@ throwLateFieldNI(fieldName) { throw A.initializeExceptionWrapper(A.LateError$fieldNI(fieldName), new Error()); }, - throwLateFieldAI(fieldName) { - throw A.initializeExceptionWrapper(A.LateError$fieldAI(fieldName), new Error()); - }, throwLateFieldADI(fieldName) { throw A.initializeExceptionWrapper(A.LateError$fieldADI(fieldName), new Error()); }, @@ -2240,14 +2245,7 @@ return $length; }, _ensureNativeList(list) { - var t1, result, i; - if (type$.JSIndexable_dynamic._is(list)) - return list; - t1 = J.getInterceptor$asx(list); - result = A.List_List$filled(t1.get$length(list), null, false, type$.dynamic); - for (i = 0; i < t1.get$length(list); ++i) - B.JSArray_methods.$indexSet(result, i, t1.$index(list, i)); - return result; + return list; }, NativeInt8List__create1(arg) { return new Int8Array(arg); @@ -3943,6 +3941,14 @@ t2._asyncComplete$1(t1); return t2; }, + Future_Future$delayed(duration, $T) { + var result; + if (!$T._is(null)) + throw A.wrapException(A.ArgumentError$value(null, "computation", "The type parameter is not nullable")); + result = new A._Future($.Zone__current, $T._eval$1("_Future<0>")); + A.Timer_Timer(duration, new A.Future_Future$delayed_closure(null, result, $T)); + return result; + }, Completer_Completer($T) { return new A._AsyncCompleter(new A._Future($.Zone__current, $T._eval$1("_Future<0>")), $T._eval$1("_AsyncCompleter<0>")); }, @@ -4206,9 +4212,9 @@ A.checkNotNullable(stream, "stream", type$.Object); return new A._StreamIterator($T._eval$1("_StreamIterator<0>")); }, - StreamController_StreamController(onCancel, onListen, sync, $T) { + StreamController_StreamController($T) { var _null = null; - return sync ? new A._SyncStreamController(onListen, _null, _null, onCancel, $T._eval$1("_SyncStreamController<0>")) : new A._AsyncStreamController(onListen, _null, _null, onCancel, $T._eval$1("_AsyncStreamController<0>")); + return new A._AsyncStreamController(_null, _null, _null, _null, $T._eval$1("_AsyncStreamController<0>")); }, _runGuarded(notificationHandler) { var e, s, exception; @@ -4233,7 +4239,7 @@ return zone.registerBinaryCallback$3$1(handleError, type$.dynamic, type$.Object, type$.StackTrace); if (type$.void_Function_Object._is(handleError)) return zone.registerUnaryCallback$2$1(handleError, type$.dynamic, type$.Object); - throw A.wrapException(A.ArgumentError$("handleError callback must take either an Object (the error), or both an Object (the error) and a StackTrace.", null)); + throw A.wrapException(A.ArgumentError$(string$.handle, null)); }, _nullDataHandler(value) { }, @@ -4449,7 +4455,10 @@ this.computation = t0; this.result = t1; }, - TimeoutException: function TimeoutException() { + Future_Future$delayed_closure: function Future_Future$delayed_closure(t0, t1, t2) { + this.computation = t0; + this.result = t1; + this.T = t2; }, _Completer: function _Completer() { }, @@ -4565,8 +4574,6 @@ _StreamController__recordCancel_complete: function _StreamController__recordCancel_complete(t0) { this.$this = t0; }, - _SyncStreamControllerDispatch: function _SyncStreamControllerDispatch() { - }, _AsyncStreamControllerDispatch: function _AsyncStreamControllerDispatch() { }, _AsyncStreamController: function _AsyncStreamController(t0, t1, t2, t3, t4) { @@ -4580,17 +4587,6 @@ _.onCancel = t3; _.$ti = t4; }, - _SyncStreamController: function _SyncStreamController(t0, t1, t2, t3, t4) { - var _ = this; - _._varData = null; - _._state = 0; - _._doneFuture = null; - _.onListen = t0; - _.onPause = t1; - _.onResume = t2; - _.onCancel = t3; - _.$ti = t4; - }, _ControllerStream: function _ControllerStream(t0, t1) { this._controller = t0; this.$ti = t1; @@ -5219,7 +5215,7 @@ } } if (byteOr >= 0 && byteOr <= 255) { - if (isLast && expectedChars < 3) { + if (expectedChars < 3) { outputIndex0 = outputIndex + 1; outputIndex1 = outputIndex0 + 1; if (3 - expectedChars === 1) { @@ -5478,15 +5474,12 @@ }, _JsonStringStringifier_stringify(object, toEncodable, indent) { var t1, - output = new A.StringBuffer(""); - A._JsonStringStringifier_printOn(object, output, toEncodable, indent); + output = new A.StringBuffer(""), + stringifier = A._JsonStringStringifier$(output, toEncodable); + stringifier.writeObject$1(object); t1 = output._contents; return t1.charCodeAt(0) == 0 ? t1 : t1; }, - _JsonStringStringifier_printOn(object, output, toEncodable, indent) { - var stringifier = A._JsonStringStringifier$(output, toEncodable); - stringifier.writeObject$1(object); - }, _Utf8Decoder_errorDescription(state) { switch (state) { case 65: @@ -5581,7 +5574,7 @@ this.keyValueList = t1; }, _JsonStringStringifier: function _JsonStringStringifier(t0, t1, t2) { - this._convert$_sink = t0; + this._sink = t0; this._seen = t1; this._toEncodable = t2; }, @@ -5599,7 +5592,7 @@ Utf8Encoder: function Utf8Encoder() { }, _Utf8Encoder: function _Utf8Encoder(t0) { - this._bufferIndex = this._carry = 0; + this._bufferIndex = 0; this._convert$_buffer = t0; }, Utf8Decoder: function Utf8Decoder(t0) { @@ -7818,8 +7811,6 @@ this._async_memoizer$_completer = t0; this.$ti = t1; }, - DelegatingStreamSink: function DelegatingStreamSink() { - }, ErrorResult: function ErrorResult(t0, t1) { this.error = t0; this.stackTrace = t1; @@ -8708,6 +8699,9 @@ }, BatchedStreamController__hasEventDuring_closure: function BatchedStreamController__hasEventDuring_closure() { }, + PersistentWebSocket_connect(uri, onReconnect) { + return A.BrowserWebSocket_connect(uri, null).then$1$1(new A.PersistentWebSocket_connect_closure(uri, 100, 3, null, onReconnect, "Unknown"), type$.PersistentWebSocket); + }, SocketClient: function SocketClient() { }, SseSocketClient: function SseSocketClient(t0) { @@ -8718,6 +8712,40 @@ }, WebSocketClient_stream_closure: function WebSocketClient_stream_closure() { }, + PersistentWebSocket: function PersistentWebSocket(t0, t1, t2, t3, t4, t5, t6, t7) { + var _ = this; + _.logger = t0; + _.debugName = t1; + _.maxRetryAttempts = t2; + _._doneCompleter = t3; + _.uri = t4; + _.onReconnect = t5; + _._ws = t6; + _.__PersistentWebSocket__incomingStreamController_FI = $; + _._outgoingStreamController = t7; + }, + PersistentWebSocket_connect_closure: function PersistentWebSocket_connect_closure(t0, t1, t2, t3, t4, t5) { + var _ = this; + _.uri = t0; + _.exponentialBackoffDelayMs = t1; + _.maxRetryAttempts = t2; + _.logger = t3; + _.onReconnect = t4; + _.debugName = t5; + }, + PersistentWebSocket__listenWithRetry_attemptRetry: function PersistentWebSocket__listenWithRetry_attemptRetry(t0, t1) { + this._box_0 = t0; + this.$this = t1; + }, + PersistentWebSocket__listenWithRetry_closure: function PersistentWebSocket__listenWithRetry_closure(t0, t1, t2, t3) { + var _ = this; + _.$this = t0; + _.attemptRetry = t1; + _.eventsSub = t2; + _.wsOnDoneCompleter = t3; + }, + _PersistentWebSocket_Object_StreamChannelMixin: function _PersistentWebSocket_Object_StreamChannelMixin() { + }, safeUnawaited(future) { future.catchError$1(new A.safeUnawaited_closure()); }, @@ -9678,10 +9706,10 @@ _.text = t3; }, SseClient$(serverUrl, debugKey) { - var t3, t4, t5, _null = null, + var t3, t4, t5, t1 = type$.String, - t2 = A.StreamController_StreamController(_null, _null, false, t1); - t1 = A.StreamController_StreamController(_null, _null, false, t1); + t2 = A.StreamController_StreamController(t1); + t1 = A.StreamController_StreamController(t1); t3 = A.Logger_Logger("SseClient"); t4 = $.Zone__current; t5 = A.generateId(); @@ -9718,44 +9746,6 @@ this.$this = t1; this.message = t2; }, - GuaranteeChannel$(innerStream, innerSink, allowSinkErrors, $T) { - var t2, t1 = {}; - t1.innerStream = innerStream; - t2 = new A.GuaranteeChannel($T._eval$1("GuaranteeChannel<0>")); - t2.GuaranteeChannel$3$allowSinkErrors(innerSink, allowSinkErrors, t1, $T); - return t2; - }, - GuaranteeChannel: function GuaranteeChannel(t0) { - var _ = this; - _.__GuaranteeChannel__streamController_F = _.__GuaranteeChannel__sink_F = $; - _._guarantee_channel$_subscription = null; - _._disconnected = false; - _.$ti = t0; - }, - GuaranteeChannel_closure: function GuaranteeChannel_closure(t0, t1, t2) { - this._box_0 = t0; - this.$this = t1; - this.T = t2; - }, - GuaranteeChannel__closure: function GuaranteeChannel__closure(t0) { - this.$this = t0; - }, - _GuaranteeSink: function _GuaranteeSink(t0, t1, t2, t3, t4) { - var _ = this; - _._inner = t0; - _._guarantee_channel$_channel = t1; - _._doneCompleter = t2; - _._closed = _._disconnected = false; - _._addStreamCompleter = _._addStreamSubscription = null; - _._allowErrors = t3; - _.$ti = t4; - }, - _GuaranteeSink__addError_closure: function _GuaranteeSink__addError_closure() { - }, - StreamChannelController: function StreamChannelController(t0) { - this.__StreamChannelController__foreign_F = this.__StreamChannelController__local_F = $; - this.$ti = t0; - }, StreamChannelMixin: function StreamChannelMixin() { }, StringScannerException: function StringScannerException(t0, t1, t2) { @@ -9841,7 +9831,7 @@ t1 = type$.JSArray_nullable_Object._as(new t1()); webSocket = A._asJSObject(new t2(t3, t1)); webSocket.binaryType = "arraybuffer"; - browserSocket = new A.BrowserWebSocket(webSocket, A.StreamController_StreamController(null, null, false, type$.WebSocketEvent)); + browserSocket = new A.BrowserWebSocket(webSocket, A.StreamController_StreamController(type$.WebSocketEvent)); t1 = new A._Future($.Zone__current, type$._Future_BrowserWebSocket); webSocketConnected = new A._AsyncCompleter(t1, type$._AsyncCompleter_BrowserWebSocket); if (A._asInt(webSocket.readyState) === 1) @@ -9906,58 +9896,23 @@ WebSocketConnectionClosed: function WebSocketConnectionClosed(t0) { this.message = t0; }, - AdapterWebSocketChannel$(webSocket) { - var _null = null, - t1 = $.Zone__current, - t2 = new A.StreamChannelController(type$.StreamChannelController_nullable_Object), - t3 = type$.nullable_Object, - localToForeignController = A.StreamController_StreamController(_null, _null, true, t3), - foreignToLocalController = A.StreamController_StreamController(_null, _null, true, t3), - t4 = A._instanceType(foreignToLocalController), - t5 = A._instanceType(localToForeignController); - t2.__StreamChannelController__local_F = A.GuaranteeChannel$(new A._ControllerStream(foreignToLocalController, t4._eval$1("_ControllerStream<1>")), new A._StreamSinkWrapper(localToForeignController, t5._eval$1("_StreamSinkWrapper<1>")), true, t3); - t2.__StreamChannelController__foreign_F = A.GuaranteeChannel$(new A._ControllerStream(localToForeignController, t5._eval$1("_ControllerStream<1>")), new A._StreamSinkWrapper(foreignToLocalController, t4._eval$1("_StreamSinkWrapper<1>")), false, t3); - t2 = new A.AdapterWebSocketChannel(new A._AsyncCompleter(new A._Future(t1, type$._Future_void), type$._AsyncCompleter_void), t2); - t2.AdapterWebSocketChannel$1(webSocket); - return t2; - }, - AdapterWebSocketChannel: function AdapterWebSocketChannel(t0, t1) { - var _ = this; - _._localCloseReason = _._localCloseCode = null; - _._readyCompleter = t0; - _._adapter_web_socket_channel$_controller = t1; - _.__AdapterWebSocketChannel_sink_FI = $; - }, - AdapterWebSocketChannel_closure: function AdapterWebSocketChannel_closure(t0) { - this.$this = t0; - }, - AdapterWebSocketChannel__closure: function AdapterWebSocketChannel__closure(t0) { - this.$this = t0; - }, - AdapterWebSocketChannel__closure0: function AdapterWebSocketChannel__closure0(t0) { - this.webSocket = t0; - }, - AdapterWebSocketChannel__closure1: function AdapterWebSocketChannel__closure1(t0, t1) { - this.$this = t0; - this.webSocket = t1; - }, - AdapterWebSocketChannel_closure0: function AdapterWebSocketChannel_closure0(t0) { - this.$this = t0; - }, - _WebSocketSink: function _WebSocketSink(t0, t1) { - this._adapter_web_socket_channel$_channel = t0; - this._sink = t1; - }, - WebSocketChannelException: function WebSocketChannelException(t0) { - this.message = t0; - }, main() { return A.runZonedGuarded(new A.main_closure(), new A.main_closure0(), type$.Future_void); }, + initializeConnection(clientSink) { + if (A._asString(init.G.$dartModuleStrategy) !== "ddc-library-bundle") + if (A._isChromium()) + A._sendConnectRequest(clientSink); + else + A.runMain(); + else + A._sendConnectRequest(clientSink); + A._launchCommunicationWithDebugExtension(); + }, _trySendEvent(sink, serialized, $T) { var exception; try { - sink.add$1(0, serialized); + sink._async$_target.add$1(0, sink.$ti._precomputed1._as(serialized)); } catch (exception) { if (A.unwrapException(exception) instanceof A.StateError) A.print("Cannot send event " + A.S(serialized) + ". Injected client connection is closed."); @@ -10291,9 +10246,10 @@ }, main___closure: function main___closure() { }, - main__closure8: function main__closure8(t0, t1) { - this.manager = t0; - this.client = t1; + main__closure8: function main__closure8(t0, t1, t2) { + this._box_0 = t0; + this.manager = t1; + this.client = t2; }, main__closure9: function main__closure9() { }, @@ -11214,7 +11170,6 @@ get$runtimeType(receiver) { return A.createRuntimeType(A._arrayInstanceType(receiver)); }, - $isJSIndexable: 1, $isEfficientLengthIterable: 1, $isIterable: 1, $isList: 1 @@ -11409,6 +11364,9 @@ throw A.wrapException(A.argumentErrorValue(other)); return other > 31 ? 0 : receiver << other >>> 0; }, + _shlPositive$1(receiver, other) { + return other > 31 ? 0 : receiver << other >>> 0; + }, $shr(receiver, other) { var t1; if (other < 0) @@ -11619,12 +11577,90 @@ get$length(receiver) { return receiver.length; }, - $isJSIndexable: 1, $isTrustedGetRuntimeType: 1, $isComparable: 1, $isPattern: 1, $isString: 1 }; + A.CastStream.prototype = { + listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError) { + var t2, + t1 = this.$ti; + t1._eval$1("~(2)?")._as(onData); + t2 = this.__internal$_source.listen$3$cancelOnError$onDone(null, cancelOnError, type$.nullable_void_Function._as(onDone)); + t1 = new A.CastStreamSubscription(t2, $.Zone__current, t1._eval$1("CastStreamSubscription<1,2>")); + t2.onData$1(t1.get$__internal$_onData()); + t1.onData$1(onData); + t1.onError$1(onError); + return t1; + }, + listen$3$onDone$onError(onData, onDone, onError) { + return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError); + }, + listen$3$cancelOnError$onDone(onData, cancelOnError, onDone) { + return this.listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, null); + } + }; + A.CastStreamSubscription.prototype = { + cancel$0() { + return this.__internal$_source.cancel$0(); + }, + onData$1(handleData) { + var t1 = this.$ti; + t1._eval$1("~(2)?")._as(handleData); + this.__internal$_handleData = handleData == null ? null : this.__internal$_zone.registerUnaryCallback$2$1(handleData, type$.dynamic, t1._rest[1]); + }, + onError$1(handleError) { + var _this = this; + _this.__internal$_source.onError$1(handleError); + if (handleError == null) + _this.__internal$_handleError = null; + else if (type$.void_Function_Object_StackTrace._is(handleError)) + _this.__internal$_handleError = _this.__internal$_zone.registerBinaryCallback$3$1(handleError, type$.dynamic, type$.Object, type$.StackTrace); + else if (type$.void_Function_Object._is(handleError)) + _this.__internal$_handleError = _this.__internal$_zone.registerUnaryCallback$2$1(handleError, type$.dynamic, type$.Object); + else + throw A.wrapException(A.ArgumentError$(string$.handle, null)); + }, + __internal$_onData$1(data) { + var targetData, error, stack, handleError, t2, exception, _this = this, + t1 = _this.$ti; + t1._precomputed1._as(data); + t2 = _this.__internal$_handleData; + if (t2 == null) + return; + targetData = null; + try { + targetData = t1._rest[1]._as(data); + } catch (exception) { + error = A.unwrapException(exception); + stack = A.getTraceFromException(exception); + handleError = _this.__internal$_handleError; + if (handleError == null) + _this.__internal$_zone.handleUncaughtError$2(error, stack); + else { + t1 = type$.Object; + t2 = _this.__internal$_zone; + if (type$.void_Function_Object_StackTrace._is(handleError)) + t2.runBinaryGuarded$2$3(handleError, error, stack, t1, type$.StackTrace); + else + t2.runUnaryGuarded$1$2(type$.void_Function_Object._as(handleError), error, t1); + } + return; + } + _this.__internal$_zone.runUnaryGuarded$1$2(t2, targetData, t1._rest[1]); + }, + pause$1(resumeSignal) { + this.__internal$_source.pause$1(resumeSignal); + }, + pause$0() { + return this.pause$1(null); + }, + resume$0() { + this.__internal$_source.resume$0(); + }, + $isStreamSubscription: 1 + }; A._CastIterableBase.prototype = { get$iterator(_) { return new A.CastIterator(J.get$iterator$ax(this.get$__internal$_source()), A._instanceType(this)._eval$1("CastIterator<1,2>")); @@ -11793,7 +11829,7 @@ call$0() { return A.Future_Future$value(null, type$.void); }, - $signature: 10 + $signature: 8 }; A.SentinelValue.prototype = {}; A.EfficientLengthIterable.prototype = {}; @@ -12900,13 +12936,13 @@ call$2(o, tag) { return this.getUnknownTag(o, tag); }, - $signature: 36 + $signature: 56 }; A.initHooks_closure1.prototype = { call$1(tag) { return this.prototypeForTag(A._asString(tag)); }, - $signature: 42 + $signature: 36 }; A._Record.prototype = { get$runtimeType(_) { @@ -13260,7 +13296,6 @@ source = source.subarray(skipCount, skipCount + count); receiver.set(source, start); }, - $isJSIndexable: 1, $isJavaScriptIndexingBehavior: 1 }; A.NativeTypedArrayOfDouble.prototype = { @@ -13485,7 +13520,7 @@ t1.storedCallback = null; f.call$0(); }, - $signature: 7 + $signature: 16 }; A._AsyncRun__initializeScheduleImmediate_closure.prototype = { call$1(callback) { @@ -13495,7 +13530,7 @@ t2 = this.span; t1.firstChild ? t1.removeChild(t2) : t1.appendChild(t2); }, - $signature: 37 + $signature: 74 }; A._AsyncRun__scheduleImmediateJsOverride_internalCallback.prototype = { call$0() { @@ -13595,19 +13630,19 @@ call$1(result) { return this.bodyFunction.call$2(0, result); }, - $signature: 6 + $signature: 5 }; A._awaitOnObject_closure0.prototype = { call$2(error, stackTrace) { this.bodyFunction.call$2(1, new A.ExceptionAndStackTrace(error, type$.StackTrace._as(stackTrace))); }, - $signature: 65 + $signature: 72 }; A._wrapJsFunctionForAsync_closure.prototype = { call$2(errorCode, result) { this.$protected(A._asInt(errorCode), result); }, - $signature: 68 + $signature: 91 }; A.AsyncError.prototype = { toString$0(_) { @@ -13640,7 +13675,13 @@ }, $signature: 0 }; - A.TimeoutException.prototype = {}; + A.Future_Future$delayed_closure.prototype = { + call$0() { + this.T._as(null); + this.result._complete$1(null); + }, + $signature: 0 + }; A._Completer.prototype = { completeError$2(error, stackTrace) { A._asObject(error); @@ -13997,7 +14038,7 @@ call$1(__wc0_formal) { this.joinedResult._completeWithResultOf$1(this.originalSource); }, - $signature: 7 + $signature: 16 }; A._Future__propagateToListeners_handleWhenCompleteCallback_closure0.prototype = { call$2(e, s) { @@ -14005,7 +14046,7 @@ type$.StackTrace._as(s); this.joinedResult._completeErrorObject$1(new A.AsyncError(e, s)); }, - $signature: 5 + $signature: 6 }; A._Future__propagateToListeners_handleValueCallback.prototype = { call$0() { @@ -14105,7 +14146,7 @@ this._future._completeErrorObject$1(new A.AsyncError(e, s)); } }, - $signature: 5 + $signature: 6 }; A._AsyncCallbackEntry.prototype = {}; A.Stream.prototype = { @@ -14172,6 +14213,9 @@ }, listen$3$onDone$onError(onData, onDone, onError) { return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError); + }, + listen$3$cancelOnError$onDone(onData, cancelOnError, onDone) { + return this.listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, null); } }; A._StreamController.prototype = { @@ -14218,24 +14262,6 @@ throw A.wrapException(_this._badEventState$0()); _this._add$1(value); }, - addError$2(error, stackTrace) { - var _0_0, t1, _this = this; - A._asObject(error); - type$.nullable_StackTrace._as(stackTrace); - if (_this._state >= 4) - throw A.wrapException(_this._badEventState$0()); - _0_0 = A._interceptUserError(error, stackTrace); - error = _0_0.error; - stackTrace = _0_0.stackTrace; - t1 = _this._state; - if ((t1 & 1) !== 0) - _this._sendError$2(error, stackTrace); - else if ((t1 & 3) === 0) - _this._ensurePendingEvents$0().add$1(0, new A._DelayedError(error, stackTrace)); - }, - addError$1(error) { - return this.addError$2(error, null); - }, close$0() { var _this = this, t1 = _this._state; @@ -14351,18 +14377,6 @@ }, $signature: 0 }; - A._SyncStreamControllerDispatch.prototype = { - _sendData$1(data) { - this.$ti._precomputed1._as(data); - this.get$_subscription()._add$1(data); - }, - _sendError$2(error, stackTrace) { - this.get$_subscription()._addError$2(error, stackTrace); - }, - _sendDone$0() { - this.get$_subscription()._close$0(); - } - }; A._AsyncStreamControllerDispatch.prototype = { _sendData$1(data) { var t1 = A._instanceType(this); @@ -14377,7 +14391,6 @@ } }; A._AsyncStreamController.prototype = {}; - A._SyncStreamController.prototype = {}; A._ControllerStream.prototype = { get$hashCode(_) { return (A.Primitives_objectHashCode(this._controller) ^ 892482866) >>> 0; @@ -14411,12 +14424,7 @@ A._runGuarded(t1.onResume); } }; - A._StreamSinkWrapper.prototype = { - add$1(_, data) { - this._async$_target.add$1(0, this.$ti._precomputed1._as(data)); - }, - $isStreamSink: 1 - }; + A._StreamSinkWrapper.prototype = {$isStreamSink: 1}; A._BufferingStreamSubscription.prototype = { _setPendingEvents$1(pendingEvents) { var _this = this; @@ -14433,7 +14441,16 @@ var t1 = A._instanceType(this); this._async$_onData = A._BufferingStreamSubscription__registerDataHandler(this._zone, t1._eval$1("~(_BufferingStreamSubscription.T)?")._as(handleData), t1._eval$1("_BufferingStreamSubscription.T")); }, - pause$0() { + onError$1(handleError) { + var _this = this, + t1 = _this._state; + if (handleError == null) + _this._state = (t1 & 4294967263) >>> 0; + else + _this._state = (t1 | 32) >>> 0; + _this._onError = A._BufferingStreamSubscription__registerErrorHandler(_this._zone, handleError); + }, + pause$1(resumeSignal) { var t2, t3, _this = this, t1 = _this._state; if ((t1 & 8) !== 0) @@ -14449,6 +14466,9 @@ if ((t1 & 4) === 0 && (t2 & 64) === 0) _this._guardCallback$1(_this.get$_onPause()); }, + pause$0() { + return this.pause$1(null); + }, resume$0() { var _this = this, t1 = _this._state; @@ -14663,7 +14683,7 @@ else t1._completeErrorObject$1(new A.AsyncError(error, stackTrace)); }, - $signature: 5 + $signature: 6 }; A._BufferingStreamSubscription_asFuture__closure.prototype = { call$0() { @@ -14719,6 +14739,9 @@ listen$3$onDone$onError(onData, onDone, onError) { return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError); }, + listen$3$cancelOnError$onDone(onData, cancelOnError, onDone) { + return this.listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, null); + }, listen$2$cancelOnError(onData, cancelOnError) { return this.listen$4$cancelOnError$onDone$onError(onData, cancelOnError, null, null); }, @@ -14803,11 +14826,16 @@ onData$1(handleData) { this.$ti._eval$1("~(1)?")._as(handleData); }, - pause$0() { + onError$1(handleError) { + }, + pause$1(resumeSignal) { var t1 = this._state; if (t1 >= 0) this._state = t1 + 2; }, + pause$0() { + return this.pause$1(null); + }, resume$0() { var _this = this, resumeState = _this._state - 2; @@ -14855,6 +14883,9 @@ }, listen$3$onDone$onError(onData, onDone, onError) { return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError); + }, + listen$3$cancelOnError$onDone(onData, cancelOnError, onDone) { + return this.listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, null); } }; A._MultiStream.prototype = { @@ -14869,6 +14900,9 @@ }, listen$3$onDone$onError(onData, onDone, onError) { return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError); + }, + listen$3$cancelOnError$onDone(onData, cancelOnError, onDone) { + return this.listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, null); } }; A._MultiStream_listen_closure.prototype = { @@ -14919,6 +14953,9 @@ }, listen$3$onDone$onError(onData, onDone, onError) { return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError); + }, + listen$3$cancelOnError$onDone(onData, cancelOnError, onDone) { + return this.listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, null); } }; A._ForwardingStreamSubscription.prototype = { @@ -15453,7 +15490,7 @@ t2._processUncaughtError$3(zone, A._asObject(e), t1._as(s)); } }, - $signature: 58 + $signature: 71 }; A._ZoneDelegate.prototype = {$isZoneDelegate: 1}; A._rootHandleError_closure.prototype = { @@ -15686,7 +15723,7 @@ call$1(v) { return this.K._is(v); }, - $signature: 14 + $signature: 12 }; A._HashMapKeyIterable.prototype = { get$length(_) { @@ -15767,7 +15804,7 @@ call$1(v) { return this.K._is(v); }, - $signature: 14 + $signature: 12 }; A._HashSet.prototype = { get$iterator(_) { @@ -16093,7 +16130,7 @@ call$2(k, v) { this.result.$indexSet(0, this.K._as(k), this.V._as(v)); }, - $signature: 20 + $signature: 29 }; A.ListBase.prototype = { get$iterator(receiver) { @@ -16172,10 +16209,8 @@ sublist$2(receiver, start, end) { var t1, listLength = this.get$length(receiver); - if (end == null) - end = listLength; - A.RangeError_checkValidRange(start, end, listLength); - t1 = A.List_List$_of(this.getRange$2(receiver, start, end), A.instanceType(receiver)._eval$1("ListBase.E")); + A.RangeError_checkValidRange(start, listLength, listLength); + t1 = A.List_List$_of(this.getRange$2(receiver, start, listLength), A.instanceType(receiver)._eval$1("ListBase.E")); return t1; }, sublist$1(receiver, start) { @@ -16291,7 +16326,7 @@ t2 = A.S(v); t1._contents += t2; }, - $signature: 30 + $signature: 23 }; A._UnmodifiableMapMixin.prototype = { $indexSet(_, key, value) { @@ -16949,7 +16984,7 @@ } return null; }, - $signature: 21 + $signature: 24 }; A._Utf8Decoder__decoderNonfatal_closure.prototype = { call$0() { @@ -16961,7 +16996,7 @@ } return null; }, - $signature: 21 + $signature: 24 }; A.AsciiCodec.prototype = { encode$1(source) { @@ -17142,19 +17177,17 @@ } }; A._Base64Encoder.prototype = { - createBuffer$1(bufferLength) { - return new Uint8Array(bufferLength); - }, encode$4(bytes, start, end, isLast) { - var byteCount, fullChunks, bufferLength, output, _this = this; + var t1, byteCount, fullChunks, bufferLength, output; type$.List_int._as(bytes); - byteCount = (_this._convert$_state & 3) + (end - start); + t1 = this._convert$_state; + byteCount = (t1 & 3) + (end - start); fullChunks = B.JSInt_methods._tdivFast$1(byteCount, 3); bufferLength = fullChunks * 4; - if (isLast && byteCount - fullChunks * 3 > 0) + if (byteCount - fullChunks * 3 > 0) bufferLength += 4; - output = _this.createBuffer$1(bufferLength); - _this._convert$_state = A._Base64Encoder_encodeChunk(_this._alphabet, bytes, start, end, isLast, output, 0, _this._convert$_state); + output = new Uint8Array(bufferLength); + this._convert$_state = A._Base64Encoder_encodeChunk(this._alphabet, bytes, start, end, true, output, 0, t1); if (bufferLength > 0) return output; return null; @@ -17162,7 +17195,7 @@ }; A.Base64Decoder.prototype = { convert$1(input) { - var end, decoder, t1; + var end, decoder, t1, t2; A._asString(input); end = A.RangeError_checkValidRange(0, null, input.length); if (0 === end) @@ -17170,7 +17203,12 @@ decoder = new A._Base64Decoder(); t1 = decoder.decode$3(input, 0, end); t1.toString; - decoder.close$2(input, end); + t2 = decoder._convert$_state; + if (t2 < -1) + A.throwExpression(A.FormatException$("Missing padding character", input, end)); + if (t2 > 0) + A.throwExpression(A.FormatException$("Invalid length, must be multiple of four", input, end)); + decoder._convert$_state = -1; return t1; } }; @@ -17187,14 +17225,6 @@ buffer = A._Base64Decoder__allocateBuffer(input, start, end, t1); _this._convert$_state = A._Base64Decoder_decodeChunk(input, start, end, buffer, 0, _this._convert$_state); return buffer; - }, - close$2(input, end) { - var t1 = this._convert$_state; - if (t1 < -1) - throw A.wrapException(A.FormatException$("Missing padding character", input, end)); - if (t1 > 0) - throw A.wrapException(A.FormatException$("Invalid length, must be multiple of four", input, end)); - this._convert$_state = -1; } }; A.ByteConversionSink.prototype = {}; @@ -17227,7 +17257,7 @@ } }; A.Codec.prototype = {}; - A.Converter.prototype = {$isStreamTransformer: 1}; + A.Converter.prototype = {}; A.Encoding.prototype = {}; A.JsonUnsupportedObjectError.prototype = { toString$0(_) { @@ -17467,24 +17497,26 @@ B.JSArray_methods.$indexSet(t1, t2.i++, key); B.JSArray_methods.$indexSet(t1, t2.i++, value); }, - $signature: 30 + $signature: 23 }; A._JsonStringStringifier.prototype = { get$_partialResult() { - var t1 = this._convert$_sink; - return t1 instanceof A.StringBuffer ? t1.toString$0(0) : null; + var t1 = this._sink._contents; + return t1.charCodeAt(0) == 0 ? t1 : t1; }, writeNumber$1(number) { - this._convert$_sink.write$1(B.JSNumber_methods.toString$0(number)); + this._sink._contents += B.JSNumber_methods.toString$0(number); }, writeString$1(string) { - this._convert$_sink.write$1(string); + this._sink._contents += string; }, writeStringSlice$3(string, start, end) { - this._convert$_sink.write$1(B.JSString_methods.substring$2(string, start, end)); + this._sink._contents += B.JSString_methods.substring$2(string, start, end); }, writeCharCode$1(charCode) { - this._convert$_sink.writeCharCode$1(charCode); + var t1 = this._sink, + t2 = A.Primitives_stringFromCharCode(charCode); + t1._contents += t2; } }; A.Latin1Codec.prototype = { @@ -17671,7 +17703,7 @@ errorOffset = start; start = 0; } - if (single && end - start >= 15) { + if (end - start >= 15) { t1 = _this.allowMalformed; result = A._Utf8Decoder__convertInterceptedUint8List(t1, bytes, start, end); if (result != null) { @@ -17681,7 +17713,7 @@ return result; } } - result = _this._decodeRecursive$4(bytes, start, end, single); + result = _this._decodeRecursive$4(bytes, start, end, true); t1 = _this._convert$_state; if ((t1 & 1) !== 0) { message = A._Utf8Decoder_errorDescription(t1); @@ -18149,7 +18181,7 @@ hash = hash + ((hash & 524287) << 10) & 536870911; return hash ^ hash >>> 6; }, - $signature: 51 + $signature: 68 }; A._BigIntImpl_hashCode_finish.prototype = { call$1(hash) { @@ -18157,7 +18189,7 @@ hash ^= hash >>> 11; return hash + ((hash & 16383) << 15) & 536870911; }, - $signature: 35 + $signature: 66 }; A.DateTime.prototype = { $eq(_, other) { @@ -18557,14 +18589,6 @@ get$length(_) { return this._contents.length; }, - write$1(obj) { - var t1 = A.S(obj); - this._contents += t1; - }, - writeCharCode$1(charCode) { - var t1 = A.Primitives_stringFromCharCode(charCode); - this._contents += t1; - }, toString$0(_) { var t1 = this._contents; return t1.charCodeAt(0) == 0 ? t1 : t1; @@ -18575,7 +18599,7 @@ call$2(msg, position) { throw A.wrapException(A.FormatException$("Illegal IPv6 address, " + msg, this.host, position)); }, - $signature: 38 + $signature: 61 }; A._Uri.prototype = { get$_text() { @@ -18875,7 +18899,7 @@ call$1(s) { return A._Uri__uriEncode(64, A._asString(s), B.C_Utf8Codec, false); }, - $signature: 16 + $signature: 14 }; A.UriData.prototype = { get$uri() { @@ -19207,7 +19231,7 @@ var t1 = type$.JavaScriptFunction; this._this.then$1$2$onError(new A.FutureOfJSAnyToJSPromise_get_toJS__closure(t1._as(resolve)), new A.FutureOfJSAnyToJSPromise_get_toJS__closure0(t1._as(reject)), type$.nullable_Object); }, - $signature: 23 + $signature: 27 }; A.FutureOfJSAnyToJSPromise_get_toJS__closure.prototype = { call$1(value) { @@ -19233,21 +19257,21 @@ t1.call(t1, wrapper); return wrapper; }, - $signature: 53 + $signature: 55 }; A.FutureOfVoidToJSPromise_get_toJS_closure.prototype = { call$2(resolve, reject) { var t1 = type$.JavaScriptFunction; this._this.then$1$2$onError(new A.FutureOfVoidToJSPromise_get_toJS__closure(t1._as(resolve)), new A.FutureOfVoidToJSPromise_get_toJS__closure0(t1._as(reject)), type$.nullable_Object); }, - $signature: 23 + $signature: 27 }; A.FutureOfVoidToJSPromise_get_toJS__closure.prototype = { call$1(__wc0_formal) { var t1 = this.resolve; return t1.call(t1); }, - $signature: 55 + $signature: 54 }; A.FutureOfVoidToJSPromise_get_toJS__closure0.prototype = { call$2(error, stackTrace) { @@ -19264,7 +19288,7 @@ t1 = this.reject; t1.call(t1, wrapper); }, - $signature: 5 + $signature: 6 }; A.jsify__convert.prototype = { call$1(o) { @@ -19296,7 +19320,7 @@ call$1(r) { return this.completer.complete$1(this.T._eval$1("0/?")._as(r)); }, - $signature: 6 + $signature: 5 }; A.promiseToFuture_closure0.prototype = { call$1(e) { @@ -19304,7 +19328,7 @@ return this.completer.completeError$1(new A.NullRejectionException(e === undefined)); return this.completer.completeError$1(e); }, - $signature: 6 + $signature: 5 }; A.dartify_convert.prototype = { call$1(o) { @@ -19401,12 +19425,6 @@ } }; A.AsyncMemoizer.prototype = {}; - A.DelegatingStreamSink.prototype = { - add$1(_, data) { - this._sink.add$1(0, A._instanceType(this)._eval$1("DelegatingStreamSink.T")._as(data)); - }, - $isStreamSink: 1 - }; A.ErrorResult.prototype = { complete$1(completer) { completer.completeError$2(this.error, this.stackTrace); @@ -19507,7 +19525,7 @@ type$.StackTrace._as(stackTrace); this.$this._addResult$1(new A.ErrorResult(error, stackTrace)); }, - $signature: 5 + $signature: 6 }; A.StreamQueue__ensureListening_closure0.prototype = { call$0() { @@ -19561,7 +19579,7 @@ call$2(h, i) { return A._combine(A._asInt(h), J.get$hashCode$(i)); }, - $signature: 63 + $signature: 45 }; A.BuiltList.prototype = { toBuilder$0() { @@ -20113,7 +20131,7 @@ var t1 = this.$this.$ti; this.replacement.$indexSet(0, t1._precomputed1._as(key), t1._rest[1]._as(value)); }, - $signature: 20 + $signature: 29 }; A.BuiltSet.prototype = { get$hashCode(_) { @@ -20492,7 +20510,7 @@ $._indentingBuiltValueToStringHelperIndent = $._indentingBuiltValueToStringHelperIndent + 2; return new A.IndentingBuiltValueToStringHelper(t1); }, - $signature: 72 + $signature: 42 }; A.IndentingBuiltValueToStringHelper.prototype = { add$2(_, field, value) { @@ -20623,21 +20641,21 @@ call$0() { return A.ListBuilder_ListBuilder(B.List_empty0, type$.Object); }, - $signature: 74 + $signature: 38 }; A.Serializers_Serializers_closure0.prototype = { call$0() { var t1 = type$.Object; return A.ListMultimapBuilder_ListMultimapBuilder(t1, t1); }, - $signature: 86 + $signature: 37 }; A.Serializers_Serializers_closure1.prototype = { call$0() { var t1 = type$.Object; return A.MapBuilder_MapBuilder(t1, t1); }, - $signature: 93 + $signature: 33 }; A.Serializers_Serializers_closure2.prototype = { call$0() { @@ -20650,7 +20668,7 @@ var t1 = type$.Object; return A.SetMultimapBuilder_SetMultimapBuilder(t1, t1); }, - $signature: 33 + $signature: 35 }; A.FullType.prototype = { $eq(_, other) { @@ -24751,13 +24769,13 @@ call$0() { return true; }, - $signature: 26 + $signature: 32 }; A.BatchedStreamController__hasEventDuring_closure.prototype = { call$0() { return false; }, - $signature: 26 + $signature: 32 }; A.SocketClient.prototype = {}; A.SseSocketClient.prototype = { @@ -24772,26 +24790,14 @@ }; A.WebSocketClient.prototype = { get$sink() { - var t2, - t1 = this._channel, - value = t1.__AdapterWebSocketChannel_sink_FI; - if (value === $) { - t2 = t1._adapter_web_socket_channel$_controller.__StreamChannelController__foreign_F; - t2 === $ && A.throwLateFieldNI("_foreign"); - t2 = t2.__GuaranteeChannel__sink_F; - t2 === $ && A.throwLateFieldNI("_sink"); - value = t1.__AdapterWebSocketChannel_sink_FI = new A._WebSocketSink(t1, t2); - } - return value; + var t1 = this._channel._outgoingStreamController; + return new A._StreamSinkWrapper(t1, A._instanceType(t1)._eval$1("_StreamSinkWrapper<1>")); }, get$stream() { - var t2, - t1 = this._channel._adapter_web_socket_channel$_controller.__StreamChannelController__foreign_F; - t1 === $ && A.throwLateFieldNI("_foreign"); - t1 = t1.__GuaranteeChannel__streamController_F; - t1 === $ && A.throwLateFieldNI("_streamController"); - t2 = A._instanceType(t1)._eval$1("_ControllerStream<1>"); - return new A._MapStream(t2._eval$1("String(Stream.T)")._as(new A.WebSocketClient_stream_closure()), new A._ControllerStream(t1, t2), t2._eval$1("_MapStream")); + var t1 = this._channel.get$_incomingStreamController(), + t2 = A._instanceType(t1)._eval$1("_ControllerStream<1>"), + t3 = t2._eval$1("CastStream"); + return new A._MapStream(t3._eval$1("String(Stream.T)")._as(new A.WebSocketClient_stream_closure()), new A.CastStream(new A._ControllerStream(t1, t2), t3), t3._eval$1("_MapStream")); } }; A.WebSocketClient_stream_closure.prototype = { @@ -24800,12 +24806,286 @@ }, $signature: 43 }; + A.PersistentWebSocket.prototype = { + get$_incomingStreamController() { + var result, _this = this, + value = _this.__PersistentWebSocket__incomingStreamController_FI; + if (value === $) { + result = A.StreamController_StreamController(type$.dynamic); + result.set$onListen(_this.get$_listenWithRetry()); + _this.__PersistentWebSocket__incomingStreamController_FI !== $ && A.throwLateFieldADI("_incomingStreamController"); + _this.__PersistentWebSocket__incomingStreamController_FI = result; + value = result; + } + return value; + }, + _writeToWebSocket$1(data) { + var t1, t2; + if (typeof data == "string") { + t1 = this._ws; + if ((t1._browser_web_socket$_events._state & 4) !== 0) + A.throwExpression(A.WebSocketConnectionClosed$()); + t2 = A.jsify(data); + t2.toString; + t1._webSocket.send(t2); + } else if (type$.Uint8List._is(data)) { + t1 = this._ws; + if ((t1._browser_web_socket$_events._state & 4) !== 0) + A.throwExpression(A.WebSocketConnectionClosed$()); + t2 = A.jsify(data); + t2.toString; + t1._webSocket.send(t2); + } else + throw A.wrapException(A.UnsupportedError$("Unexpected data type: " + J.get$runtimeType$(data).toString$0(0))); + }, + _listenWithRetry$0() { + return this._listenWithRetry$body$PersistentWebSocket(); + }, + _listenWithRetry$body$PersistentWebSocket() { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + $async$handler = 1, $async$errorStack = [], $async$self = this, attemptRetry, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, exception, eventsSub, t13, _box_0, $async$exception; + var $async$_listenWithRetry$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + if ($async$errorCode === 1) { + $async$errorStack.push($async$result); + $async$goto = $async$handler; + } + for (;;) + switch ($async$goto) { + case 0: + // Function start + _box_0 = {}; + _box_0.retry = false; + _box_0.retryCount = 0; + t1 = $async$self._outgoingStreamController; + t2 = A._instanceType(t1); + new A._ControllerStream(t1, t2._eval$1("_ControllerStream<1>")).listen$1($async$self.get$_writeToWebSocket()); + attemptRetry = new A.PersistentWebSocket__listenWithRetry_attemptRetry(_box_0, $async$self); + t3 = type$._Future_void; + t4 = type$._AsyncCompleter_void; + t5 = $async$self.uri; + t6 = type$.void; + t2 = t2._eval$1("_StreamSinkWrapper<1>"); + t7 = $async$self.onReconnect; + t8 = $async$self.debugName; + t9 = type$.Exception; + t10 = $async$self.maxRetryAttempts; + t11 = false; + case 2: + // do body + t12 = new A._Future($.Zone__current, t3); + $async$goto = t11 ? 6 : 7; + break; + case 6: + // then + $async$handler = 9; + $async$goto = 12; + return A._asyncAwait(A.BrowserWebSocket_connect(t5, null), $async$_listenWithRetry$0); + case 12: + // returning from await. + $async$self._ws = $async$result; + _box_0.retryCount = 0; + $async$handler = 1; + // goto after finally + $async$goto = 11; + break; + case 9: + // catch + $async$handler = 8; + $async$exception = $async$errorStack.pop(); + $async$goto = t9._is(A.unwrapException($async$exception)) ? 13 : 15; + break; + case 13: + // then + $async$goto = 16; + return A._asyncAwait(attemptRetry.call$1("Failed to establish connection to " + t5.toString$0(0) + " (" + t8 + ")."), $async$_listenWithRetry$0); + case 16: + // returning from await. + // goto break c$0 + $async$goto = 5; + break; + // goto join + $async$goto = 14; + break; + case 15: + // else + throw $async$exception; + case 14: + // join + // goto after finally + $async$goto = 11; + break; + case 8: + // uncaught + // goto rethrow + $async$goto = 1; + break; + case 11: + // after finally + _box_0.retry = false; + case 7: + // join + eventsSub = A._Cell$named("eventsSub"); + t13 = $async$self._ws._browser_web_socket$_events; + eventsSub.__late_helper$_value = new A._ControllerStream(t13, A._instanceType(t13)._eval$1("_ControllerStream<1>")).listen$1(new A.PersistentWebSocket__listenWithRetry_closure($async$self, attemptRetry, eventsSub, new A._AsyncCompleter(t12, t4))); + $async$goto = t11 ? 17 : 18; + break; + case 17: + // then + t11 = t7.call$1(new A._StreamSinkWrapper(t1, t2)); + $async$goto = 19; + return A._asyncAwait(t11 instanceof A._Future ? t11 : A._Future$value(t11, t6), $async$_listenWithRetry$0); + case 19: + // returning from await. + case 18: + // join + $async$goto = 20; + return A._asyncAwait(t12, $async$_listenWithRetry$0); + case 20: + // returning from await. + case 5: + // break c$0 + t11 = _box_0.retry; + case 3: + // do condition + if (t11 && _box_0.retryCount < t10) { + // goto do body + $async$goto = 2; + break; + } + case 4: + // after do + $async$self._doneCompleter.complete$0(); + t1 = $async$self.get$_incomingStreamController(); + $async$goto = (t1._state & 4) === 0 ? 21 : 22; + break; + case 21: + // then + $async$goto = 23; + return A._asyncAwait(t1.close$0(), $async$_listenWithRetry$0); + case 23: + // returning from await. + case 22: + // join + // implicit return + return A._asyncReturn(null, $async$completer); + case 1: + // rethrow + return A._asyncRethrow($async$errorStack.at(-1), $async$completer); + } + }); + return A._asyncStartSync($async$_listenWithRetry$0, $async$completer); + } + }; + A.PersistentWebSocket_connect_closure.prototype = { + call$1(socket) { + var _this = this; + type$.WebSocket._as(socket); + return new A.PersistentWebSocket(_this.logger, _this.debugName, _this.maxRetryAttempts, new A._AsyncCompleter(new A._Future($.Zone__current, type$._Future_void), type$._AsyncCompleter_void), _this.uri, _this.onReconnect, socket, A.StreamController_StreamController(type$.dynamic)); + }, + $signature: 44 + }; + A.PersistentWebSocket__listenWithRetry_attemptRetry.prototype = { + call$1(message) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + $async$self = this, t1; + var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + if ($async$errorCode === 1) + return A._asyncRethrow($async$result, $async$completer); + for (;;) + switch ($async$goto) { + case 0: + // Function start + t1 = $async$self._box_0; + $async$goto = 2; + return A._asyncAwait(A.Future_Future$delayed(A.Duration$(0, B.JSInt_methods._shlPositive$1(100, t1.retryCount)), type$.void), $async$call$1); + case 2: + // returning from await. + ++t1.retryCount; + t1.retry = true; + // implicit return + return A._asyncReturn(null, $async$completer); + } + }); + return A._asyncStartSync($async$call$1, $async$completer); + }, + $signature: 31 + }; + A.PersistentWebSocket__listenWithRetry_closure.prototype = { + call$1(e) { + return this.$call$body$PersistentWebSocket__listenWithRetry_closure(type$.WebSocketEvent._as(e)); + }, + $call$body$PersistentWebSocket__listenWithRetry_closure(e) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + $async$self = this, t1, text, data, code; + var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + if ($async$errorCode === 1) + return A._asyncRethrow($async$result, $async$completer); + for (;;) + switch ($async$goto) { + case 0: + // Function start + t1 = e instanceof A.TextDataReceived; + text = t1 ? e.text : null; + if (t1) { + t1 = $async$self.$this.get$_incomingStreamController(); + t1.add$1(0, A._instanceType(t1)._precomputed1._as(text)); + // goto break $label0$1 + $async$goto = 2; + break; + } + t1 = e instanceof A.BinaryDataReceived; + data = t1 ? e.data : null; + if (t1) { + t1 = $async$self.$this.get$_incomingStreamController(); + t1.add$1(0, A._instanceType(t1)._precomputed1._as(data)); + // goto break $label0$1 + $async$goto = 2; + break; + } + t1 = e instanceof A.CloseReceived; + code = t1 ? e.code : null; + $async$goto = t1 ? 3 : 4; + break; + case 3: + // then + $async$goto = code === 1006 ? 5 : 6; + break; + case 5: + // then + t1 = $async$self.$this; + $async$goto = 7; + return A._asyncAwait($async$self.attemptRetry.call$1("Lost connection to " + t1.uri.toString$0(0) + " (" + t1.debugName + ")."), $async$call$1); + case 7: + // returning from await. + $async$goto = 8; + return A._asyncAwait($async$self.eventsSub._readLocal$0().cancel$0(), $async$call$1); + case 8: + // returning from await. + case 6: + // join + $async$self.wsOnDoneCompleter.complete$0(); + case 4: + // join + case 2: + // break $label0$1 + // implicit return + return A._asyncReturn(null, $async$completer); + } + }); + return A._asyncStartSync($async$call$1, $async$completer); + }, + $signature: 46 + }; + A._PersistentWebSocket_Object_StreamChannelMixin.prototype = {}; A.safeUnawaited_closure.prototype = { call$2(error, stackTrace) { type$.StackTrace._as(stackTrace); return $.$get$_logger().log$4(B.Level_WARNING_900, "Error in unawaited Future:", error, stackTrace); }, - $signature: 25 + $signature: 20 }; A.Int32.prototype = { _toInt$1(val) { @@ -24975,13 +25255,13 @@ call$2(key1, key2) { return A._asString(key1).toLowerCase() === A._asString(key2).toLowerCase(); }, - $signature: 44 + $signature: 47 }; A.BaseRequest_closure0.prototype = { call$1(key) { return B.JSString_methods.get$hashCode(A._asString(key).toLowerCase()); }, - $signature: 45 + $signature: 48 }; A.BaseResponse.prototype = { BaseResponse$7$contentLength$headers$isRedirect$persistentConnection$reasonPhrase$request(statusCode, contentLength, headers, isRedirect, persistentConnection, reasonPhrase, request) { @@ -25140,13 +25420,13 @@ $defaultValues() { return [null]; }, - $signature: 46 + $signature: 49 }; A._bodyToStream_closure.prototype = { call$1(listener) { return A._readStreamBody(this.request, this.response, type$.MultiStreamController_List_int._as(listener)); }, - $signature: 47 + $signature: 50 }; A._readStreamBody_closure.prototype = { call$0() { @@ -25210,7 +25490,7 @@ }); return A._asyncStartSync($async$call$0, $async$completer); }, - $signature: 10 + $signature: 8 }; A.ByteStream.prototype = { toBytes$0() { @@ -25225,7 +25505,7 @@ call$1(bytes) { return this.completer.complete$1(new Uint8Array(A._ensureNativeList(type$.List_int._as(bytes)))); }, - $signature: 48 + $signature: 51 }; A.ClientException.prototype = { toString$0(_) { @@ -25313,7 +25593,7 @@ scanner.expectDone$0(); return A.MediaType$(t4, t5, parameters); }, - $signature: 49 + $signature: 52 }; A.MediaType_toString_closure.prototype = { call$2(attribute, value) { @@ -25332,13 +25612,13 @@ } else t1._contents = t3 + value; }, - $signature: 50 + $signature: 53 }; A.MediaType_toString__closure.prototype = { call$1(match) { return "\\" + A.S(match.$index(0, 0)); }, - $signature: 24 + $signature: 30 }; A.expectQuotedString_closure.prototype = { call$1(match) { @@ -25346,7 +25626,7 @@ t1.toString; return t1; }, - $signature: 24 + $signature: 30 }; A.Level.prototype = { $eq(_, other) { @@ -25435,7 +25715,7 @@ $parent._children.$indexSet(0, thisName, t1); return t1; }, - $signature: 52 + $signature: 110 }; A.Context.prototype = { absolute$15(part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15) { @@ -25669,20 +25949,20 @@ call$1(part) { return A._asString(part) !== ""; }, - $signature: 27 + $signature: 28 }; A.Context_split_closure.prototype = { call$1(part) { return A._asString(part).length !== 0; }, - $signature: 27 + $signature: 28 }; A._validateArgList_closure.prototype = { call$1(arg) { A._asStringQ(arg); return arg == null ? "null" : '"' + arg + '"'; }, - $signature: 54 + $signature: 57 }; A.InternalStyle.prototype = { getRoot$1(path) { @@ -26136,7 +26416,7 @@ var t1 = this.$this; t1._onReleaseCompleters.removeFirst$0().complete$1(new A.PoolResource(t1)); }, - $signature: 110 + $signature: 58 }; A.Pool__runOnRelease_closure0.prototype = { call$2(error, stackTrace) { @@ -26144,7 +26424,7 @@ type$.StackTrace._as(stackTrace); this.$this._onReleaseCompleters.removeFirst$0().completeError$2(error, stackTrace); }, - $signature: 5 + $signature: 6 }; A.PoolResource.prototype = {}; A.SourceFile.prototype = { @@ -26576,7 +26856,7 @@ call$0() { return this.color; }, - $signature: 56 + $signature: 59 }; A.Highlighter$__closure.prototype = { call$1(line) { @@ -26584,34 +26864,34 @@ t2 = A._arrayInstanceType(t1); return new A.WhereIterable(t1, t2._eval$1("bool(1)")._as(new A.Highlighter$___closure()), t2._eval$1("WhereIterable<1>")).get$length(0); }, - $signature: 57 + $signature: 60 }; A.Highlighter$___closure.prototype = { call$1(highlight) { var t1 = type$._Highlight._as(highlight).span; return t1.get$start().get$line() !== t1.get$end().get$line(); }, - $signature: 18 + $signature: 17 }; A.Highlighter$__closure0.prototype = { call$1(line) { return type$._Line._as(line).url; }, - $signature: 59 + $signature: 62 }; A.Highlighter__collateLines_closure.prototype = { call$1(highlight) { var t1 = type$._Highlight._as(highlight).span.get$sourceUrl(); return t1 == null ? new A.Object() : t1; }, - $signature: 60 + $signature: 63 }; A.Highlighter__collateLines_closure0.prototype = { call$2(highlight1, highlight2) { var t1 = type$._Highlight; return t1._as(highlight1).span.compareTo$1(0, t1._as(highlight2).span); }, - $signature: 61 + $signature: 64 }; A.Highlighter__collateLines_closure1.prototype = { call$1(entry) { @@ -26654,20 +26934,20 @@ } return lines; }, - $signature: 62 + $signature: 65 }; A.Highlighter__collateLines__closure.prototype = { call$1(highlight) { return type$._Highlight._as(highlight).span.get$end().get$line() < this.line.number; }, - $signature: 18 + $signature: 17 }; A.Highlighter_highlight_closure.prototype = { call$1(highlight) { type$._Highlight._as(highlight); return true; }, - $signature: 18 + $signature: 17 }; A.Highlighter__writeFileStart_closure.prototype = { call$0() { @@ -26765,7 +27045,7 @@ t2._contents = t4; return t4.length - t3.length; }, - $signature: 29 + $signature: 25 }; A.Highlighter__writeIndicator_closure0.prototype = { call$0() { @@ -26785,7 +27065,7 @@ t1._writeArrow$3$beginning(_this.line, Math.max(_this.highlight.span.get$end().get$column() - 1, 0), false); return t2._contents.length - t3.length; }, - $signature: 29 + $signature: 25 }; A.Highlighter__writeSidebar_closure.prototype = { call$0() { @@ -26821,7 +27101,7 @@ } return A._Highlight__normalizeEndOfLine(A._Highlight__normalizeTrailingNewline(A._Highlight__normalizeNewlines(newSpan))); }, - $signature: 64 + $signature: 67 }; A._Line.prototype = { toString$0(_) { @@ -27034,8 +27314,18 @@ _this._outgoingController.close$0(); }, _closeWithError$1(error) { - var t1; - this._incomingController.addError$1(error); + var _0_0, error0, stackTrace, t2, + t1 = this._incomingController; + if (t1._state >= 4) + A.throwExpression(t1._badEventState$0()); + _0_0 = A._interceptUserError(error, null); + error0 = _0_0.error; + stackTrace = _0_0.stackTrace; + t2 = t1._state; + if ((t2 & 1) !== 0) + t1._sendError$2(error0, stackTrace); + else if ((t2 & 3) === 0) + t1._ensurePendingEvents$0().add$1(0, new A._DelayedError(error0, stackTrace)); this.close$0(); t1 = this._onConnected; if ((t1.future._state & 30) === 0) @@ -27189,114 +27479,9 @@ }); return A._asyncStartSync($async$call$0, $async$completer); }, - $signature: 67 - }; - A.GuaranteeChannel.prototype = { - GuaranteeChannel$3$allowSinkErrors(innerSink, allowSinkErrors, _box_0, $T) { - var _this = this, - t1 = _this.$ti, - t2 = t1._eval$1("_GuaranteeSink<1>")._as(new A._GuaranteeSink(innerSink, _this, new A._AsyncCompleter(new A._Future($.Zone__current, type$._Future_void), type$._AsyncCompleter_void), allowSinkErrors, $T._eval$1("_GuaranteeSink<0>"))); - _this.__GuaranteeChannel__sink_F !== $ && A.throwLateFieldAI("_sink"); - _this.__GuaranteeChannel__sink_F = t2; - t1 = t1._eval$1("StreamController<1>")._as(A.StreamController_StreamController(null, new A.GuaranteeChannel_closure(_box_0, _this, $T), true, $T)); - _this.__GuaranteeChannel__streamController_F !== $ && A.throwLateFieldAI("_streamController"); - _this.__GuaranteeChannel__streamController_F = t1; - }, - _onSinkDisconnected$0() { - var subscription, t1; - this._disconnected = true; - subscription = this._guarantee_channel$_subscription; - if (subscription != null) - subscription.cancel$0(); - t1 = this.__GuaranteeChannel__streamController_F; - t1 === $ && A.throwLateFieldNI("_streamController"); - t1.close$0(); - } - }; - A.GuaranteeChannel_closure.prototype = { - call$0() { - var t2, t3, - t1 = this.$this; - if (t1._disconnected) - return; - t2 = this._box_0.innerStream; - t3 = t1.__GuaranteeChannel__streamController_F; - t3 === $ && A.throwLateFieldNI("_streamController"); - t1._guarantee_channel$_subscription = t2.listen$3$onDone$onError(this.T._eval$1("~(0)")._as(t3.get$add(t3)), new A.GuaranteeChannel__closure(t1), t3.get$addError()); - }, - $signature: 0 - }; - A.GuaranteeChannel__closure.prototype = { - call$0() { - var t1 = this.$this, - t2 = t1.__GuaranteeChannel__sink_F; - t2 === $ && A.throwLateFieldNI("_sink"); - t2._onStreamDisconnected$0(); - t1 = t1.__GuaranteeChannel__streamController_F; - t1 === $ && A.throwLateFieldNI("_streamController"); - t1.close$0(); - }, - $signature: 0 - }; - A._GuaranteeSink.prototype = { - add$1(_, data) { - var t1, _this = this; - _this.$ti._precomputed1._as(data); - if (_this._closed) - throw A.wrapException(A.StateError$("Cannot add event after closing.")); - if (_this._disconnected) - return; - t1 = _this._inner; - t1._async$_target.add$1(0, t1.$ti._precomputed1._as(data)); - }, - addError$2(error, stackTrace) { - if (this._closed) - throw A.wrapException(A.StateError$("Cannot add event after closing.")); - if (this._disconnected) - return; - this._guarantee_channel$_addError$2(error, stackTrace); - }, - addError$1(error) { - return this.addError$2(error, null); - }, - _guarantee_channel$_addError$2(error, stackTrace) { - var _this = this; - if (_this._allowErrors) { - _this._inner._async$_target.addError$2(error, stackTrace); - return; - } - _this._doneCompleter.completeError$2(error, stackTrace); - _this._onStreamDisconnected$0(); - _this._guarantee_channel$_channel._onSinkDisconnected$0(); - _this._inner._async$_target.close$0().catchError$1(new A._GuaranteeSink__addError_closure()); - }, - close$0() { - var _this = this; - if (_this._closed) - return _this._doneCompleter.future; - _this._closed = true; - if (!_this._disconnected) { - _this._guarantee_channel$_channel._onSinkDisconnected$0(); - _this._doneCompleter.complete$1(_this._inner._async$_target.close$0()); - } - return _this._doneCompleter.future; - }, - _onStreamDisconnected$0() { - this._disconnected = true; - var t1 = this._doneCompleter; - if ((t1.future._state & 30) === 0) - t1.complete$0(); - return; - }, - $isStreamSink: 1 - }; - A._GuaranteeSink__addError_closure.prototype = { - call$1(_) { - }, - $signature: 7 + $signature: 70 }; - A.StreamChannelController.prototype = {}; - A.StreamChannelMixin.prototype = {$isStreamChannel: 1}; + A.StreamChannelMixin.prototype = {}; A.StringScannerException.prototype = { get$source() { return A._asString(this.source); @@ -27495,6 +27680,9 @@ }, listen$3$onDone$onError(onData, onDone, onError) { return this.listen$4$cancelOnError$onDone$onError(onData, null, onDone, onError); + }, + listen$3$cancelOnError$onDone(onData, cancelOnError, onDone) { + return this.listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, null); } }; A._EventStreamSubscription.prototype = { @@ -27518,12 +27706,17 @@ _this._onData = t1; _this._tryResume$0(); }, - pause$0() { + onError$1(handleError) { + }, + pause$1(resumeSignal) { if (this._target == null) return; ++this._pauseCount; this._unlisten$0(); }, + pause$0() { + return this.pause$1(null); + }, resume$0() { var _this = this; if (_this._target == null || _this._pauseCount <= 0) @@ -27557,43 +27750,13 @@ $signature: 2 }; A.BrowserWebSocket.prototype = { - _browser_web_socket$_closed$2(code, reason) { + _closed$2(code, reason) { var t1 = this._browser_web_socket$_events; if ((t1._state & 4) !== 0) return; t1.add$1(0, new A.CloseReceived(code, reason)); t1.close$0(); }, - sendBytes$1(b) { - var t1; - if ((this._browser_web_socket$_events._state & 4) !== 0) - throw A.wrapException(A.WebSocketConnectionClosed$()); - t1 = A.jsify(b); - t1.toString; - this._webSocket.send(t1); - }, - close$2(code, reason) { - var $async$goto = 0, - $async$completer = A._makeAsyncAwaitCompleter(type$.void), - $async$self = this, t1; - var $async$close$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { - if ($async$errorCode === 1) - return A._asyncRethrow($async$result, $async$completer); - for (;;) - switch ($async$goto) { - case 0: - // Function start - t1 = $async$self._browser_web_socket$_events; - if ((t1._state & 4) !== 0) - throw A.wrapException(A.WebSocketConnectionClosed$()); - t1.close$0(); - $async$self._webSocket.close(); - // implicit return - return A._asyncReturn(null, $async$completer); - } - }); - return A._asyncStartSync($async$close$2, $async$completer); - }, $isWebSocket: 1 }; A.BrowserWebSocket_connect_closure.prototype = { @@ -27601,7 +27764,7 @@ A._asJSObject(_); this.webSocketConnected.complete$1(this.browserSocket); }, - $signature: 19 + $signature: 15 }; A.BrowserWebSocket_connect_closure0.prototype = { call$1(e) { @@ -27611,9 +27774,9 @@ if ((t1.future._state & 30) === 0) t1.completeError$1(new A.WebSocketException("Failed to connect WebSocket")); else - this.browserSocket._browser_web_socket$_closed$2(1006, "error"); + this.browserSocket._closed$2(1006, "error"); }, - $signature: 19 + $signature: 15 }; A.BrowserWebSocket_connect_closure1.prototype = { call$1(e) { @@ -27641,9 +27804,9 @@ t1 = this.webSocketConnected; if ((t1.future._state & 30) === 0) t1.complete$1(this.browserSocket); - this.browserSocket._browser_web_socket$_closed$2(A._asInt($event.code), A._asString($event.reason)); + this.browserSocket._closed$2(A._asInt($event.code), A._asString($event.reason)); }, - $signature: 19 + $signature: 15 }; A.WebSocketEvent.prototype = {}; A.TextDataReceived.prototype = { @@ -27711,187 +27874,6 @@ return "WebSocketConnectionClosed: " + t1; } }; - A.AdapterWebSocketChannel.prototype = { - AdapterWebSocketChannel$1(webSocket) { - webSocket.then$1$2$onError(new A.AdapterWebSocketChannel_closure(this), new A.AdapterWebSocketChannel_closure0(this), type$.Null); - }, - $isWebSocketChannel: 1 - }; - A.AdapterWebSocketChannel_closure.prototype = { - call$1(webSocket) { - var t1, t2; - type$.WebSocket._as(webSocket); - t1 = webSocket._browser_web_socket$_events; - t2 = this.$this; - new A._ControllerStream(t1, A._instanceType(t1)._eval$1("_ControllerStream<1>")).listen$1(new A.AdapterWebSocketChannel__closure(t2)); - t1 = t2._adapter_web_socket_channel$_controller.__StreamChannelController__local_F; - t1 === $ && A.throwLateFieldNI("_local"); - t1 = t1.__GuaranteeChannel__streamController_F; - t1 === $ && A.throwLateFieldNI("_streamController"); - new A._ControllerStream(t1, A._instanceType(t1)._eval$1("_ControllerStream<1>")).listen$2$onDone(new A.AdapterWebSocketChannel__closure0(webSocket), new A.AdapterWebSocketChannel__closure1(t2, webSocket)); - A._asString(webSocket._webSocket.protocol); - t2._readyCompleter.complete$0(); - }, - $signature: 69 - }; - A.AdapterWebSocketChannel__closure.prototype = { - call$1($event) { - var t1, text, data, _s6_ = "_local", _s5_ = "_sink"; - type$.WebSocketEvent._as($event); - $label0$0: { - t1 = $event instanceof A.TextDataReceived; - text = t1 ? $event.text : null; - if (t1) { - t1 = this.$this._adapter_web_socket_channel$_controller.__StreamChannelController__local_F; - t1 === $ && A.throwLateFieldNI(_s6_); - t1 = t1.__GuaranteeChannel__sink_F; - t1 === $ && A.throwLateFieldNI(_s5_); - t1.add$1(0, text); - break $label0$0; - } - t1 = $event instanceof A.BinaryDataReceived; - data = t1 ? $event.data : null; - if (t1) { - t1 = this.$this._adapter_web_socket_channel$_controller.__StreamChannelController__local_F; - t1 === $ && A.throwLateFieldNI(_s6_); - t1 = t1.__GuaranteeChannel__sink_F; - t1 === $ && A.throwLateFieldNI(_s5_); - t1.add$1(0, data); - break $label0$0; - } - if ($event instanceof A.CloseReceived) { - t1 = this.$this._adapter_web_socket_channel$_controller.__StreamChannelController__local_F; - t1 === $ && A.throwLateFieldNI(_s6_); - t1 = t1.__GuaranteeChannel__sink_F; - t1 === $ && A.throwLateFieldNI(_s5_); - t1.close$0(); - } - } - }, - $signature: 70 - }; - A.AdapterWebSocketChannel__closure0.prototype = { - call$1(obj) { - var _1_0, s, b, b0, t1, t2, exception; - try { - $label1$1: { - _1_0 = obj; - s = null; - t1 = typeof _1_0 == "string"; - if (t1) - s = _1_0; - if (t1) { - t1 = this.webSocket; - t2 = A._asString(s); - if ((t1._browser_web_socket$_events._state & 4) !== 0) - A.throwExpression(A.WebSocketConnectionClosed$()); - t2 = A.jsify(t2); - t2.toString; - t1._webSocket.send(t2); - break $label1$1; - } - b = null; - t1 = type$.Uint8List._is(_1_0); - if (t1) - b = _1_0; - if (t1) { - this.webSocket.sendBytes$1(b); - break $label1$1; - } - b0 = null; - t1 = type$.List_int._is(_1_0); - if (t1) - b0 = _1_0; - if (t1) { - this.webSocket.sendBytes$1(new Uint8Array(A._ensureNativeList(b0))); - break $label1$1; - } - t1 = A.UnsupportedError$("Cannot send " + J.get$runtimeType$(obj).toString$0(0)); - throw A.wrapException(t1); - } - } catch (exception) { - if (!(A.unwrapException(exception) instanceof A.WebSocketConnectionClosed)) - throw exception; - } - }, - $signature: 8 - }; - A.AdapterWebSocketChannel__closure1.prototype = { - call$0() { - var $async$goto = 0, - $async$completer = A._makeAsyncAwaitCompleter(type$.void), - $async$handler = 1, $async$errorStack = [], $async$self = this, t1, exception, $async$exception; - var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { - if ($async$errorCode === 1) { - $async$errorStack.push($async$result); - $async$goto = $async$handler; - } - for (;;) - switch ($async$goto) { - case 0: - // Function start - $async$handler = 3; - t1 = $async$self.$this; - $async$goto = 6; - return A._asyncAwait($async$self.webSocket.close$2(t1._localCloseCode, t1._localCloseReason), $async$call$0); - case 6: - // returning from await. - $async$handler = 1; - // goto after finally - $async$goto = 5; - break; - case 3: - // catch - $async$handler = 2; - $async$exception = $async$errorStack.pop(); - if (!(A.unwrapException($async$exception) instanceof A.WebSocketConnectionClosed)) - throw $async$exception; - // goto after finally - $async$goto = 5; - break; - case 2: - // uncaught - // goto rethrow - $async$goto = 1; - break; - case 5: - // after finally - // implicit return - return A._asyncReturn(null, $async$completer); - case 1: - // rethrow - return A._asyncRethrow($async$errorStack.at(-1), $async$completer); - } - }); - return A._asyncStartSync($async$call$0, $async$completer); - }, - $signature: 10 - }; - A.AdapterWebSocketChannel_closure0.prototype = { - call$1(e) { - var error, t1, t2; - A._asObject(e); - error = e instanceof A.TimeoutException ? e : new A.WebSocketChannelException(J.toString$0$(e)); - t1 = this.$this; - t1._readyCompleter.completeError$1(error); - t1 = t1._adapter_web_socket_channel$_controller.__StreamChannelController__local_F; - t1 === $ && A.throwLateFieldNI("_local"); - t2 = t1.__GuaranteeChannel__sink_F; - t2 === $ && A.throwLateFieldNI("_sink"); - t2.addError$1(error); - t1 = t1.__GuaranteeChannel__sink_F; - t1 === $ && A.throwLateFieldNI("_sink"); - t1.close$0(); - }, - $signature: 71 - }; - A._WebSocketSink.prototype = {$isWebSocketSink: 1}; - A.WebSocketChannelException.prototype = { - toString$0(_) { - return "WebSocketChannelException: " + this.message; - }, - $isException: 1 - }; A.main_closure.prototype = { call$0() { return this.$call$body$main_closure(); @@ -27899,7 +27881,7 @@ $call$body$main_closure() { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.void), - storedInstanceId, t2, t3, uri, fixedPath, fixedUri, client, _0_0, manager, t4, t5, debugEventController, t6, _box_0, t1; + storedInstanceId, t2, t3, uri, fixedPath, fixedUri, client, _0_0, manager, t4, t5, debugEventController, t6, _box_0, t1, $async$temp1; var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { if ($async$errorCode === 1) return A._asyncRethrow($async$result, $async$completer); @@ -27928,36 +27910,54 @@ uri = uri.replace$1$scheme("wss"); fixedPath = uri.toString$0(0); fixedUri = A.Uri_parse(fixedPath); - client = fixedUri.isScheme$1("ws") || fixedUri.isScheme$1("wss") ? new A.WebSocketClient(A.AdapterWebSocketChannel$(A.BrowserWebSocket_connect(fixedUri, null))) : new A.SseSocketClient(A.SseClient$(fixedPath, "InjectedClient")); - _0_0 = A._asString(t1.$dartModuleStrategy); - $async$goto = "require-js" === _0_0 ? 3 : 4; + $async$goto = fixedUri.isScheme$1("ws") || fixedUri.isScheme$1("wss") ? 2 : 4; break; - case 3: + case 2: // then + $async$temp1 = A; $async$goto = 5; - return A._asyncAwait(A.RequireRestarter_create(), $async$call$0); + return A._asyncAwait(A.PersistentWebSocket_connect(fixedUri, A.client__initializeConnection$closure()), $async$call$0); case 5: + // returning from await. + $async$result = new $async$temp1.WebSocketClient($async$result); + // goto join + $async$goto = 3; + break; + case 4: + // else + $async$result = new A.SseSocketClient(A.SseClient$(fixedPath, "InjectedClient")); + case 3: + // join + client = $async$result; + _0_0 = A._asString(t1.$dartModuleStrategy); + $async$goto = "require-js" === _0_0 ? 7 : 8; + break; + case 7: + // then + $async$goto = 9; + return A._asyncAwait(A.RequireRestarter_create(), $async$call$0); + case 9: // returning from await. t2 = $async$result; // goto break $label0$0 - $async$goto = 2; + $async$goto = 6; break; - case 4: + case 8: // join if ("ddc-library-bundle" === _0_0) { t2 = new A.DdcLibraryBundleRestarter(); // goto break $label0$0 - $async$goto = 2; + $async$goto = 6; break; } if ("ddc" === _0_0 || "legacy" === _0_0) { t2 = new A.DdcRestarter(); // goto break $label0$0 - $async$goto = 2; + $async$goto = 6; break; } t2 = A.throwExpression(A.StateError$("Unknown module strategy: " + A.S(A.getProperty(A.staticInteropGlobalContext(), "$dartModuleStrategy", type$.String)))); - case 2: + case 6: // break $label0$0 manager = new A.ReloadingManager(client, t2); t1.$dartHotReloadStartDwds = A._functionToJS0(new A.main__closure(manager)); @@ -27968,8 +27968,8 @@ t1.$dartReadyToRunMain = A._functionToJS0(new A.main__closure3(_box_0)); t2 = $.Zone__current; t3 = Math.max(100, 1); - t4 = A.StreamController_StreamController(null, null, false, type$.DebugEvent); - t5 = A.StreamController_StreamController(null, null, false, type$.List_DebugEvent); + t4 = A.StreamController_StreamController(type$.DebugEvent); + t5 = A.StreamController_StreamController(type$.List_DebugEvent); debugEventController = new A.BatchedStreamController(t3, 1000, t4, t5, new A._AsyncCompleter(new A._Future(t2, type$._Future_bool), type$._AsyncCompleter_bool), type$.BatchedStreamController_DebugEvent); t2 = A.List_List$filled(A.QueueList__computeInitialCapacity(null), null, false, type$.nullable_Result_DebugEvent); t3 = A.ListQueue$(type$._EventRequest_dynamic); @@ -27980,24 +27980,18 @@ t1.$emitDebugEvent = A._functionToJS2(new A.main__closure5(debugEventController)); t1.$emitRegisterEvent = A._functionToJS1(new A.main__closure6(client)); t1.$launchDevTools = A._functionToJS0(new A.main__closure7(client)); - client.get$stream().listen$2$onError(new A.main__closure8(manager, client), new A.main__closure9()); + _box_0.mainRun = false; + client.get$stream().listen$2$onError(new A.main__closure8(_box_0, manager, client), new A.main__closure9()); if (A._asBool(t1.$dwdsEnableDevToolsLaunch)) A._EventStreamSubscription$(A._asJSObject(t1.window), "keydown", type$.nullable_void_Function_JSObject._as(new A.main__closure10()), false, type$.JSObject); - if (A._asString(t1.$dartModuleStrategy) !== "ddc-library-bundle") - if (A._isChromium()) - A._sendConnectRequest(client.get$sink()); - else - A.runMain(); - else - A._sendConnectRequest(client.get$sink()); - A._launchCommunicationWithDebugExtension(); + A.initializeConnection(client.get$sink()); // implicit return return A._asyncReturn(null, $async$completer); } }); return A._asyncStartSync($async$call$0, $async$completer); }, - $signature: 10 + $signature: 8 }; A.main__closure.prototype = { call$0() { @@ -28005,13 +27999,13 @@ path.toString; return A.FutureOfJSAnyToJSPromise_get_toJS(this.manager._restarter.hotReloadStart$1(path), type$.JSArray_nullable_Object); }, - $signature: 11 + $signature: 7 }; A.main__closure0.prototype = { call$0() { return A.FutureOfVoidToJSPromise_get_toJS(this.manager.hotReloadEnd$0()); }, - $signature: 11 + $signature: 7 }; A.main__closure1.prototype = { call$2(runId, pauseIsolatesOnStart) { @@ -28048,7 +28042,7 @@ type$.nullable_void_Function_HotRestartRequestBuilder._as(new A.main___closure3(runId)).call$1(t3); A._trySendEvent(t1, B.C_JsonCodec.encode$2$toEncodable(t2.serialize$1(t3._hot_restart_request$_build$0()), null), type$.dynamic); }, - $signature: 31 + $signature: 26 }; A.main___closure3.prototype = { call$1(b) { @@ -28115,7 +28109,7 @@ b.get$_debug_event$_$this()._eventData = this.eventData; return b; }, - $signature: 109 + $signature: 79 }; A.main__closure6.prototype = { call$1(eventData) { @@ -28127,7 +28121,7 @@ type$.nullable_void_Function_RegisterEventBuilder._as(new A.main___closure0(eventData)).call$1(t3); A._trySendEvent(t1, B.C_JsonCodec.encode$2$toEncodable(t2.serialize$1(t3._register_event$_build$0()), null), type$.dynamic); }, - $signature: 31 + $signature: 26 }; A.main___closure0.prototype = { call$1(b) { @@ -28256,7 +28250,11 @@ break; case 19: // then - A.runMain(); + t1 = $async$self._box_0; + if (!t1.mainRun) { + t1.mainRun = true; + A.runMain(); + } // goto join $async$goto = 20; break; @@ -28326,12 +28324,12 @@ }); return A._asyncStartSync($async$call$1, $async$completer); }, - $signature: 82 + $signature: 31 }; A.main__closure9.prototype = { call$1(error) { }, - $signature: 7 + $signature: 16 }; A.main__closure10.prototype = { call$1(e) { @@ -28350,7 +28348,7 @@ type$.StackTrace._as(stackTrace); A.print("Unhandled error detected in the injected client.js script.\n\nYou can disable this script in webdev by passing --no-injected-client if it\nis preventing your app from loading, but note that this will also prevent\nall debugging and hot reload/restart functionality from working.\n\nThe original error is below, please file an issue at\nhttps://github.com/dart-lang/webdev/issues/new and attach this output:\n\n" + A.S(error) + "\n" + stackTrace.toString$0(0) + "\n"); }, - $signature: 13 + $signature: 11 }; A._sendConnectRequest_closure.prototype = { call$1(b) { @@ -28363,7 +28361,7 @@ b.get$_connect_request$_$this()._entrypointPath = t1; return b; }, - $signature: 83 + $signature: 82 }; A._launchCommunicationWithDebugExtension_closure.prototype = { call$1(b) { @@ -28392,13 +28390,13 @@ b.get$_$this()._workspaceName = t1; return b; }, - $signature: 84 + $signature: 83 }; A._handleAuthRequest_closure.prototype = { call$1(isAuthenticated) { return A._dispatchEvent("dart-auth-response", "" + A._asBool(isAuthenticated)); }, - $signature: 85 + $signature: 84 }; A._sendResponse_closure.prototype = { call$1(b) { @@ -28409,7 +28407,7 @@ if (t1 != null) b.set$errorMessage(t1); }, - $signature: 6 + $signature: 5 }; A.DdcLibraryBundleRestarter.prototype = { _runMainWhenReady$2(readyToRunMain, runMain) { @@ -28662,13 +28660,13 @@ A._asJSObject(A._asJSObject(init.G.dartDevEmbedder).config).capturedMainHandler = null; A.safeUnawaited(this.$this._runMainWhenReady$2(this.readyToRunMain, runMain)); }, - $signature: 32 + $signature: 21 }; A.DdcLibraryBundleRestarter_hotReloadStart_closure.prototype = { call$1(hotReloadEndCallback) { this.$this._capturedHotReloadEndCallback = type$.JavaScriptFunction._as(hotReloadEndCallback); }, - $signature: 32 + $signature: 21 }; A.DdcRestarter.prototype = { restart$3$readyToRunMain$reloadedSourcesPath$runId(readyToRunMain, reloadedSourcesPath, runId) { @@ -28726,7 +28724,7 @@ this.sub.cancel$0(); return value; }, - $signature: 87 + $signature: 86 }; A.ReloadingManager.prototype = { hotRestart$3$readyToRunMain$reloadedSourcesPath$runId(readyToRunMain, reloadedSourcesPath, runId) { @@ -28742,7 +28740,7 @@ // Function start t1 = $async$self._client.get$sink(); t2 = $.$get$serializers(); - t1.add$1(0, B.C_JsonCodec.encode$2$toEncodable(t2.serialize$1(new A.IsolateExitBuilder()._isolate_events$_build$0()), null)); + t1._async$_target.add$1(0, t1.$ti._precomputed1._as(B.C_JsonCodec.encode$2$toEncodable(t2.serialize$1(new A.IsolateExitBuilder()._isolate_events$_build$0()), null))); $async$goto = 3; return A._asyncAwait($async$self._restarter.restart$3$readyToRunMain$reloadedSourcesPath$runId(readyToRunMain, reloadedSourcesPath, runId), $async$hotRestart$3$readyToRunMain$reloadedSourcesPath$runId); case 3: @@ -28833,7 +28831,7 @@ return; t1 = this._client.get$sink(); t2 = $.$get$serializers(); - t1.add$1(0, B.C_JsonCodec.encode$2$toEncodable(t2.serialize$1(new A.IsolateStartBuilder()._isolate_events$_build$0()), null)); + t1._async$_target.add$1(0, t1.$ti._precomputed1._as(B.C_JsonCodec.encode$2$toEncodable(t2.serialize$1(new A.IsolateStartBuilder()._isolate_events$_build$0()), null))); } }; A.HotReloadFailedException.prototype = { @@ -29232,7 +29230,7 @@ call$1(e) { this.completer.completeError$2(new A.HotReloadFailedException(A._asString(type$.JavaScriptObject._as(e).message)), this.stackTrace); }, - $signature: 90 + $signature: 89 }; A._createScript_closure.prototype = { call$0() { @@ -29241,13 +29239,13 @@ return new A._createScript__closure(); return new A._createScript__closure0(nonce); }, - $signature: 91 + $signature: 90 }; A._createScript__closure.prototype = { call$0() { return A._asJSObject(A._asJSObject(init.G.document).createElement("script")); }, - $signature: 11 + $signature: 7 }; A._createScript__closure0.prototype = { call$0() { @@ -29255,7 +29253,7 @@ scriptElement.setAttribute("nonce", this.nonce); return scriptElement; }, - $signature: 11 + $signature: 7 }; A.runMain_closure.prototype = { call$0() { @@ -29296,61 +29294,58 @@ })(); (function installTearOffs() { var _static_2 = hunkHelpers._static_2, + _instance_1_u = hunkHelpers._instance_1u, _static_1 = hunkHelpers._static_1, _static_0 = hunkHelpers._static_0, _static = hunkHelpers.installStaticTearOff, _instance = hunkHelpers.installInstanceTearOff, _instance_2_u = hunkHelpers._instance_2u, - _instance_1_i = hunkHelpers._instance_1i, _instance_0_u = hunkHelpers._instance_0u, - _instance_1_u = hunkHelpers._instance_1u; - _static_2(J, "_interceptors_JSArray__compareAny$closure", "JSArray__compareAny", 28); - _static_1(A, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 12); - _static_1(A, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 12); - _static_1(A, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 12); + _instance_1_i = hunkHelpers._instance_1i; + _static_2(J, "_interceptors_JSArray__compareAny$closure", "JSArray__compareAny", 22); + _instance_1_u(A.CastStreamSubscription.prototype, "get$__internal$_onData", "__internal$_onData$1", 19); + _static_1(A, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 10); + _static_1(A, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 10); + _static_1(A, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 10); _static_0(A, "async___startMicrotaskLoop$closure", "_startMicrotaskLoop", 0); - _static_1(A, "async___nullDataHandler$closure", "_nullDataHandler", 6); - _static_2(A, "async___nullErrorHandler$closure", "_nullErrorHandler", 13); + _static_1(A, "async___nullDataHandler$closure", "_nullDataHandler", 5); + _static_2(A, "async___nullErrorHandler$closure", "_nullErrorHandler", 11); _static_0(A, "async___nullDoneHandler$closure", "_nullDoneHandler", 0); - _static(A, "async___rootHandleUncaughtError$closure", 5, null, ["call$5"], ["_rootHandleUncaughtError"], 94, 0); + _static(A, "async___rootHandleUncaughtError$closure", 5, null, ["call$5"], ["_rootHandleUncaughtError"], 93, 0); _static(A, "async___rootRun$closure", 4, null, ["call$1$4", "call$4"], ["_rootRun", function($self, $parent, zone, f) { return A._rootRun($self, $parent, zone, f, type$.dynamic); - }], 95, 1); + }], 94, 1); _static(A, "async___rootRunUnary$closure", 5, null, ["call$2$5", "call$5"], ["_rootRunUnary", function($self, $parent, zone, f, arg) { var t1 = type$.dynamic; return A._rootRunUnary($self, $parent, zone, f, arg, t1, t1); - }], 96, 1); + }], 95, 1); _static(A, "async___rootRunBinary$closure", 6, null, ["call$3$6", "call$6"], ["_rootRunBinary", function($self, $parent, zone, f, arg1, arg2) { var t1 = type$.dynamic; return A._rootRunBinary($self, $parent, zone, f, arg1, arg2, t1, t1, t1); - }], 97, 1); + }], 96, 1); _static(A, "async___rootRegisterCallback$closure", 4, null, ["call$1$4", "call$4"], ["_rootRegisterCallback", function($self, $parent, zone, f) { return A._rootRegisterCallback($self, $parent, zone, f, type$.dynamic); - }], 98, 0); + }], 97, 0); _static(A, "async___rootRegisterUnaryCallback$closure", 4, null, ["call$2$4", "call$4"], ["_rootRegisterUnaryCallback", function($self, $parent, zone, f) { var t1 = type$.dynamic; return A._rootRegisterUnaryCallback($self, $parent, zone, f, t1, t1); - }], 99, 0); + }], 98, 0); _static(A, "async___rootRegisterBinaryCallback$closure", 4, null, ["call$3$4", "call$4"], ["_rootRegisterBinaryCallback", function($self, $parent, zone, f) { var t1 = type$.dynamic; return A._rootRegisterBinaryCallback($self, $parent, zone, f, t1, t1, t1); - }], 100, 0); - _static(A, "async___rootErrorCallback$closure", 5, null, ["call$5"], ["_rootErrorCallback"], 101, 0); - _static(A, "async___rootScheduleMicrotask$closure", 4, null, ["call$4"], ["_rootScheduleMicrotask"], 102, 0); - _static(A, "async___rootCreateTimer$closure", 5, null, ["call$5"], ["_rootCreateTimer"], 103, 0); - _static(A, "async___rootCreatePeriodicTimer$closure", 5, null, ["call$5"], ["_rootCreatePeriodicTimer"], 104, 0); - _static(A, "async___rootPrint$closure", 4, null, ["call$4"], ["_rootPrint"], 105, 0); - _static_1(A, "async___printToZone$closure", "_printToZone", 106); - _static(A, "async___rootFork$closure", 5, null, ["call$5"], ["_rootFork"], 107, 0); + }], 99, 0); + _static(A, "async___rootErrorCallback$closure", 5, null, ["call$5"], ["_rootErrorCallback"], 100, 0); + _static(A, "async___rootScheduleMicrotask$closure", 4, null, ["call$4"], ["_rootScheduleMicrotask"], 101, 0); + _static(A, "async___rootCreateTimer$closure", 5, null, ["call$5"], ["_rootCreateTimer"], 102, 0); + _static(A, "async___rootCreatePeriodicTimer$closure", 5, null, ["call$5"], ["_rootCreatePeriodicTimer"], 103, 0); + _static(A, "async___rootPrint$closure", 4, null, ["call$4"], ["_rootPrint"], 104, 0); + _static_1(A, "async___printToZone$closure", "_printToZone", 105); + _static(A, "async___rootFork$closure", 5, null, ["call$5"], ["_rootFork"], 106, 0); _instance(A._Completer.prototype, "get$completeError", 0, 1, function() { return [null]; - }, ["call$2", "call$1"], ["completeError$2", "completeError$1"], 22, 0, 0); - _instance_2_u(A._Future.prototype, "get$_completeError", "_completeError$2", 13); + }, ["call$2", "call$1"], ["completeError$2", "completeError$1"], 85, 0, 0); + _instance_2_u(A._Future.prototype, "get$_completeError", "_completeError$2", 11); var _; - _instance_1_i(_ = A._StreamController.prototype, "get$add", "add$1", 8); - _instance(_, "get$addError", 0, 1, function() { - return [null]; - }, ["call$2", "call$1"], ["addError$2", "addError$1"], 22, 0, 0); _instance_0_u(_ = A._ControllerSubscription.prototype, "get$_onPause", "_onPause$0", 0); _instance_0_u(_, "get$_onResume", "_onResume$0", 0); _instance_0_u(_ = A._BufferingStreamSubscription.prototype, "get$_onPause", "_onPause$0", 0); @@ -29358,63 +29353,67 @@ _instance_0_u(A._DoneStreamSubscription.prototype, "get$_onMicrotask", "_onMicrotask$0", 0); _instance_0_u(_ = A._ForwardingStreamSubscription.prototype, "get$_onPause", "_onPause$0", 0); _instance_0_u(_, "get$_onResume", "_onResume$0", 0); - _instance_1_u(_, "get$_handleData", "_handleData$1", 8); - _instance_2_u(_, "get$_handleError", "_handleError$2", 25); + _instance_1_u(_, "get$_handleData", "_handleData$1", 19); + _instance_2_u(_, "get$_handleError", "_handleError$2", 20); _instance_0_u(_, "get$_handleDone", "_handleDone$0", 0); - _static_2(A, "collection___defaultEquals$closure", "_defaultEquals0", 15); - _static_1(A, "collection___defaultHashCode$closure", "_defaultHashCode", 17); - _static_2(A, "collection_ListBase__compareAny$closure", "ListBase__compareAny", 28); + _static_2(A, "collection___defaultEquals$closure", "_defaultEquals0", 13); + _static_1(A, "collection___defaultHashCode$closure", "_defaultHashCode", 18); + _static_2(A, "collection_ListBase__compareAny$closure", "ListBase__compareAny", 22); _static_1(A, "convert___defaultToEncodable$closure", "_defaultToEncodable", 4); - _instance_1_i(_ = A._ByteCallbackSink.prototype, "get$add", "add$1", 8); + _instance_1_i(_ = A._ByteCallbackSink.prototype, "get$add", "add$1", 19); _instance_0_u(_, "get$close", "close$0", 0); - _static_1(A, "core__identityHashCode$closure", "identityHashCode", 17); - _static_2(A, "core__identical$closure", "identical", 15); - _static_1(A, "core_Uri_decodeComponent$closure", "Uri_decodeComponent", 16); + _static_1(A, "core__identityHashCode$closure", "identityHashCode", 18); + _static_2(A, "core__identical$closure", "identical", 13); + _static_1(A, "core_Uri_decodeComponent$closure", "Uri_decodeComponent", 14); _static(A, "math__max$closure", 2, null, ["call$1$2", "call$2"], ["max", function(a, b) { return A.max(a, b, type$.num); - }], 108, 1); - _instance_2_u(_ = A.DeepCollectionEquality.prototype, "get$equals", "equals$2", 15); - _instance_1_u(_, "get$hash", "hash$1", 17); - _instance_1_u(_, "get$isValidKey", "isValidKey$1", 14); + }], 107, 1); + _instance_2_u(_ = A.DeepCollectionEquality.prototype, "get$equals", "equals$2", 13); + _instance_1_u(_, "get$hash", "hash$1", 18); + _instance_1_u(_, "get$isValidKey", "isValidKey$1", 12); _static(A, "hot_reload_response_HotReloadResponse___new_tearOff$closure", 0, null, ["call$1", "call$0"], ["HotReloadResponse___new_tearOff", function() { return A.HotReloadResponse___new_tearOff(null); - }], 79, 0); + }], 108, 0); _static(A, "hot_restart_response_HotRestartResponse___new_tearOff$closure", 0, null, ["call$1", "call$0"], ["HotRestartResponse___new_tearOff", function() { return A.HotRestartResponse___new_tearOff(null); - }], 73, 0); - _static_1(A, "case_insensitive_map_CaseInsensitiveMap__canonicalizer$closure", "CaseInsensitiveMap__canonicalizer", 16); + }], 109, 0); + _instance_1_u(_ = A.PersistentWebSocket.prototype, "get$_writeToWebSocket", "_writeToWebSocket$1", 5); + _instance_0_u(_, "get$_listenWithRetry", "_listenWithRetry$0", 8); + _static_1(A, "case_insensitive_map_CaseInsensitiveMap__canonicalizer$closure", "CaseInsensitiveMap__canonicalizer", 14); _instance_1_u(_ = A.SseClient.prototype, "get$_onIncomingControlMessage", "_onIncomingControlMessage$1", 2); _instance_1_u(_, "get$_onIncomingMessage", "_onIncomingMessage$1", 2); _instance_0_u(_, "get$_onOutgoingDone", "_onOutgoingDone$0", 0); - _instance_1_u(_, "get$_onOutgoingMessage", "_onOutgoingMessage$1", 66); + _instance_1_u(_, "get$_onOutgoingMessage", "_onOutgoingMessage$1", 69); + _static_1(A, "client__initializeConnection$closure", "initializeConnection", 73); _static_1(A, "client___handleAuthRequest$closure", "_handleAuthRequest", 2); - _instance_1_u(_ = A.RequireRestarter.prototype, "get$_moduleParents", "_moduleParents$1", 88); - _instance_2_u(_, "get$_moduleTopologicalCompare", "_moduleTopologicalCompare$2", 89); + _instance_1_u(_ = A.RequireRestarter.prototype, "get$_moduleParents", "_moduleParents$1", 87); + _instance_2_u(_, "get$_moduleTopologicalCompare", "_moduleTopologicalCompare$2", 88); })(); (function inheritance() { var _mixin = hunkHelpers.mixin, _inherit = hunkHelpers.inherit, _inheritMany = hunkHelpers.inheritMany; _inherit(A.Object, null); - _inheritMany(A.Object, [A.JS_CONST, J.Interceptor, A.SafeToStringHook, J.ArrayIterator, A.Iterable, A.CastIterator, A.Closure, A.MapBase, A.Error, A.ListBase, A.SentinelValue, A.ListIterator, A.MappedIterator, A.WhereIterator, A.ExpandIterator, A.TakeIterator, A.SkipIterator, A.EmptyIterator, A.WhereTypeIterator, A.FixedLengthListMixin, A.UnmodifiableListMixin, A._Record, A.ConstantMap, A._KeysOrValuesOrElementsIterator, A.TypeErrorDecoder, A.NullThrownFromJavaScriptException, A.ExceptionAndStackTrace, A._StackTrace, A.LinkedHashMapCell, A.LinkedHashMapKeyIterator, A.LinkedHashMapValueIterator, A.LinkedHashMapEntryIterator, A.JSSyntaxRegExp, A._MatchImplementation, A._AllMatchesIterator, A.StringMatch, A._StringAllMatchesIterator, A._Cell, A._UnmodifiableNativeByteBufferView, A.Rti, A._FunctionParameters, A._Type, A._TimerImpl, A._AsyncAwaitCompleter, A.AsyncError, A.TimeoutException, A._Completer, A._FutureListener, A._Future, A._AsyncCallbackEntry, A.Stream, A._StreamController, A._SyncStreamControllerDispatch, A._AsyncStreamControllerDispatch, A._BufferingStreamSubscription, A._StreamSinkWrapper, A._DelayedEvent, A._DelayedDone, A._PendingEvents, A._DoneStreamSubscription, A._StreamIterator, A._ZoneFunction, A._Zone, A._ZoneDelegate, A._ZoneSpecification, A._HashMapKeyIterator, A.SetBase, A._HashSetIterator, A._LinkedHashSetCell, A._LinkedHashSetIterator, A._UnmodifiableMapMixin, A.MapView, A._ListQueueIterator, A._SplayTreeNode, A._SplayTree, A._SplayTreeIterator, A.Codec, A.Converter, A._Base64Encoder, A._Base64Decoder, A.ByteConversionSink, A._JsonStringifier, A._Utf8Encoder, A._Utf8Decoder, A._BigIntImpl, A.DateTime, A.Duration, A.OutOfMemoryError, A.StackOverflowError, A._Exception, A.FormatException, A.IntegerDivisionByZeroException, A.MapEntry, A.Null, A._StringStackTrace, A.StringBuffer, A._Uri, A.UriData, A._SimpleUri, A.NullRejectionException, A._JSRandom, A._JSSecureRandom, A.AsyncMemoizer, A.DelegatingStreamSink, A.ErrorResult, A.ValueResult, A.StreamQueue, A._NextRequest, A._HasNextRequest, A.BuiltList, A.ListBuilder, A.BuiltListMultimap, A.ListMultimapBuilder, A.BuiltMap, A.MapBuilder, A.BuiltSet, A.SetBuilder, A.BuiltSetMultimap, A.SetMultimapBuilder, A.EnumClass, A.IndentingBuiltValueToStringHelper, A.JsonObject, A.FullType, A.BigIntSerializer, A.BoolSerializer, A.BuiltJsonSerializers, A.BuiltJsonSerializersBuilder, A.BuiltListMultimapSerializer, A.BuiltListSerializer, A.BuiltMapSerializer, A.BuiltSetMultimapSerializer, A.BuiltSetSerializer, A.DateTimeSerializer, A.DoubleSerializer, A.DurationSerializer, A.Int32Serializer, A.Int64Serializer, A.IntSerializer, A.JsonObjectSerializer, A.ListSerializer, A.MapSerializer, A.NullSerializer, A.NumSerializer, A.RegExpSerializer, A.SetSerializer, A.StringSerializer, A.Uint8ListSerializer, A.UriSerializer, A.CanonicalizedMap, A.DefaultEquality, A.IterableEquality, A.ListEquality, A._UnorderedEquality, A._MapEntry, A.MapEquality, A.DeepCollectionEquality, A._QueueList_Object_ListMixin, A.BuildResult, A._$BuildStatusSerializer, A._$BuildResultSerializer, A.BuildResultBuilder, A.ConnectRequest, A._$ConnectRequestSerializer, A.ConnectRequestBuilder, A.DebugEvent, A.BatchedDebugEvents, A._$DebugEventSerializer, A._$BatchedDebugEventsSerializer, A.DebugEventBuilder, A.BatchedDebugEventsBuilder, A.DebugInfo, A._$DebugInfoSerializer, A.DebugInfoBuilder, A.DevToolsRequest, A.DevToolsResponse, A._$DevToolsRequestSerializer, A._$DevToolsResponseSerializer, A.DevToolsRequestBuilder, A.DevToolsResponseBuilder, A.ErrorResponse, A._$ErrorResponseSerializer, A.ErrorResponseBuilder, A.ExtensionRequest, A.ExtensionResponse, A.ExtensionEvent, A.BatchedEvents, A._$ExtensionRequestSerializer, A._$ExtensionResponseSerializer, A._$ExtensionEventSerializer, A._$BatchedEventsSerializer, A.ExtensionRequestBuilder, A.ExtensionResponseBuilder, A.ExtensionEventBuilder, A.BatchedEventsBuilder, A.HotReloadRequest, A._$HotReloadRequestSerializer, A.HotReloadRequestBuilder, A.HotReloadResponse, A._$HotReloadResponseSerializer, A.HotReloadResponseBuilder, A.HotRestartRequest, A._$HotRestartRequestSerializer, A.HotRestartRequestBuilder, A.HotRestartResponse, A._$HotRestartResponseSerializer, A.HotRestartResponseBuilder, A.IsolateExit, A.IsolateStart, A._$IsolateExitSerializer, A._$IsolateStartSerializer, A.IsolateExitBuilder, A.IsolateStartBuilder, A.RegisterEvent, A._$RegisterEventSerializer, A.RegisterEventBuilder, A.RunRequest, A._$RunRequestSerializer, A.ServiceExtensionRequest, A._$ServiceExtensionRequestSerializer, A.ServiceExtensionRequestBuilder, A.ServiceExtensionResponse, A._$ServiceExtensionResponseSerializer, A.ServiceExtensionResponseBuilder, A.BatchedStreamController, A.SocketClient, A.Int32, A.Int64, A._StackState, A.ClientException, A.BaseClient, A.BaseRequest, A.BaseResponse, A.MediaType, A.Level, A.LogRecord, A.Logger, A.Context, A.Style, A.ParsedPath, A.PathException, A.Pool, A.PoolResource, A.SourceFile, A.SourceLocationMixin, A.SourceSpanMixin, A.Highlighter, A._Highlight, A._Line, A.SourceLocation, A.SourceSpanException, A.StreamChannelMixin, A._GuaranteeSink, A.StreamChannelController, A.StringScanner, A.RNG, A.UuidV1, A.EventStreamProvider, A._EventStreamSubscription, A.BrowserWebSocket, A.WebSocketEvent, A.WebSocketException, A.WebSocketChannelException, A.DdcLibraryBundleRestarter, A.DdcRestarter, A.ReloadingManager, A.HotReloadFailedException, A.RequireRestarter]); + _inheritMany(A.Object, [A.JS_CONST, J.Interceptor, A.SafeToStringHook, J.ArrayIterator, A.Stream, A.CastStreamSubscription, A.Iterable, A.CastIterator, A.Closure, A.MapBase, A.Error, A.ListBase, A.SentinelValue, A.ListIterator, A.MappedIterator, A.WhereIterator, A.ExpandIterator, A.TakeIterator, A.SkipIterator, A.EmptyIterator, A.WhereTypeIterator, A.FixedLengthListMixin, A.UnmodifiableListMixin, A._Record, A.ConstantMap, A._KeysOrValuesOrElementsIterator, A.TypeErrorDecoder, A.NullThrownFromJavaScriptException, A.ExceptionAndStackTrace, A._StackTrace, A.LinkedHashMapCell, A.LinkedHashMapKeyIterator, A.LinkedHashMapValueIterator, A.LinkedHashMapEntryIterator, A.JSSyntaxRegExp, A._MatchImplementation, A._AllMatchesIterator, A.StringMatch, A._StringAllMatchesIterator, A._Cell, A._UnmodifiableNativeByteBufferView, A.Rti, A._FunctionParameters, A._Type, A._TimerImpl, A._AsyncAwaitCompleter, A.AsyncError, A._Completer, A._FutureListener, A._Future, A._AsyncCallbackEntry, A._StreamController, A._AsyncStreamControllerDispatch, A._BufferingStreamSubscription, A._StreamSinkWrapper, A._DelayedEvent, A._DelayedDone, A._PendingEvents, A._DoneStreamSubscription, A._StreamIterator, A._ZoneFunction, A._Zone, A._ZoneDelegate, A._ZoneSpecification, A._HashMapKeyIterator, A.SetBase, A._HashSetIterator, A._LinkedHashSetCell, A._LinkedHashSetIterator, A._UnmodifiableMapMixin, A.MapView, A._ListQueueIterator, A._SplayTreeNode, A._SplayTree, A._SplayTreeIterator, A.Codec, A.Converter, A._Base64Encoder, A._Base64Decoder, A.ByteConversionSink, A._JsonStringifier, A._Utf8Encoder, A._Utf8Decoder, A._BigIntImpl, A.DateTime, A.Duration, A.OutOfMemoryError, A.StackOverflowError, A._Exception, A.FormatException, A.IntegerDivisionByZeroException, A.MapEntry, A.Null, A._StringStackTrace, A.StringBuffer, A._Uri, A.UriData, A._SimpleUri, A.NullRejectionException, A._JSRandom, A._JSSecureRandom, A.AsyncMemoizer, A.ErrorResult, A.ValueResult, A.StreamQueue, A._NextRequest, A._HasNextRequest, A.BuiltList, A.ListBuilder, A.BuiltListMultimap, A.ListMultimapBuilder, A.BuiltMap, A.MapBuilder, A.BuiltSet, A.SetBuilder, A.BuiltSetMultimap, A.SetMultimapBuilder, A.EnumClass, A.IndentingBuiltValueToStringHelper, A.JsonObject, A.FullType, A.BigIntSerializer, A.BoolSerializer, A.BuiltJsonSerializers, A.BuiltJsonSerializersBuilder, A.BuiltListMultimapSerializer, A.BuiltListSerializer, A.BuiltMapSerializer, A.BuiltSetMultimapSerializer, A.BuiltSetSerializer, A.DateTimeSerializer, A.DoubleSerializer, A.DurationSerializer, A.Int32Serializer, A.Int64Serializer, A.IntSerializer, A.JsonObjectSerializer, A.ListSerializer, A.MapSerializer, A.NullSerializer, A.NumSerializer, A.RegExpSerializer, A.SetSerializer, A.StringSerializer, A.Uint8ListSerializer, A.UriSerializer, A.CanonicalizedMap, A.DefaultEquality, A.IterableEquality, A.ListEquality, A._UnorderedEquality, A._MapEntry, A.MapEquality, A.DeepCollectionEquality, A._QueueList_Object_ListMixin, A.BuildResult, A._$BuildStatusSerializer, A._$BuildResultSerializer, A.BuildResultBuilder, A.ConnectRequest, A._$ConnectRequestSerializer, A.ConnectRequestBuilder, A.DebugEvent, A.BatchedDebugEvents, A._$DebugEventSerializer, A._$BatchedDebugEventsSerializer, A.DebugEventBuilder, A.BatchedDebugEventsBuilder, A.DebugInfo, A._$DebugInfoSerializer, A.DebugInfoBuilder, A.DevToolsRequest, A.DevToolsResponse, A._$DevToolsRequestSerializer, A._$DevToolsResponseSerializer, A.DevToolsRequestBuilder, A.DevToolsResponseBuilder, A.ErrorResponse, A._$ErrorResponseSerializer, A.ErrorResponseBuilder, A.ExtensionRequest, A.ExtensionResponse, A.ExtensionEvent, A.BatchedEvents, A._$ExtensionRequestSerializer, A._$ExtensionResponseSerializer, A._$ExtensionEventSerializer, A._$BatchedEventsSerializer, A.ExtensionRequestBuilder, A.ExtensionResponseBuilder, A.ExtensionEventBuilder, A.BatchedEventsBuilder, A.HotReloadRequest, A._$HotReloadRequestSerializer, A.HotReloadRequestBuilder, A.HotReloadResponse, A._$HotReloadResponseSerializer, A.HotReloadResponseBuilder, A.HotRestartRequest, A._$HotRestartRequestSerializer, A.HotRestartRequestBuilder, A.HotRestartResponse, A._$HotRestartResponseSerializer, A.HotRestartResponseBuilder, A.IsolateExit, A.IsolateStart, A._$IsolateExitSerializer, A._$IsolateStartSerializer, A.IsolateExitBuilder, A.IsolateStartBuilder, A.RegisterEvent, A._$RegisterEventSerializer, A.RegisterEventBuilder, A.RunRequest, A._$RunRequestSerializer, A.ServiceExtensionRequest, A._$ServiceExtensionRequestSerializer, A.ServiceExtensionRequestBuilder, A.ServiceExtensionResponse, A._$ServiceExtensionResponseSerializer, A.ServiceExtensionResponseBuilder, A.BatchedStreamController, A.SocketClient, A._PersistentWebSocket_Object_StreamChannelMixin, A.Int32, A.Int64, A._StackState, A.ClientException, A.BaseClient, A.BaseRequest, A.BaseResponse, A.MediaType, A.Level, A.LogRecord, A.Logger, A.Context, A.Style, A.ParsedPath, A.PathException, A.Pool, A.PoolResource, A.SourceFile, A.SourceLocationMixin, A.SourceSpanMixin, A.Highlighter, A._Highlight, A._Line, A.SourceLocation, A.SourceSpanException, A.StreamChannelMixin, A.StringScanner, A.RNG, A.UuidV1, A.EventStreamProvider, A._EventStreamSubscription, A.BrowserWebSocket, A.WebSocketEvent, A.WebSocketException, A.DdcLibraryBundleRestarter, A.DdcRestarter, A.ReloadingManager, A.HotReloadFailedException, A.RequireRestarter]); _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]); _inheritMany(J.LegacyJavaScriptObject, [J.PlainJavaScriptObject, J.UnknownJavaScriptObject, J.JavaScriptFunction]); _inherit(J.JSArraySafeToStringHook, A.SafeToStringHook); _inherit(J.JSUnmodifiableArray, J.JSArray); _inheritMany(J.JSNumber, [J.JSInt, J.JSNumNotInt]); + _inheritMany(A.Stream, [A.CastStream, A.StreamView, A._StreamImpl, A._EmptyStream, A._MultiStream, A._ForwardingStream, A._EventStream]); _inheritMany(A.Iterable, [A._CastIterableBase, A.EfficientLengthIterable, A.MappedIterable, A.WhereIterable, A.ExpandIterable, A.TakeIterable, A.SkipIterable, A.WhereTypeIterable, A._KeysOrValues, A._AllMatchesIterable, A._StringAllMatchesIterable]); _inheritMany(A._CastIterableBase, [A.CastIterable, A.__CastListBase__CastIterableBase_ListMixin]); _inherit(A._EfficientLengthCastIterable, A.CastIterable); _inherit(A._CastListBase, A.__CastListBase__CastIterableBase_ListMixin); - _inheritMany(A.Closure, [A.Closure2Args, A.Closure0Args, A.Instantiation, A.TearOffClosure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A._Future_timeout_closure0, A.Stream_length_closure, A.Stream_first_closure0, A._CustomZone_bindUnaryCallback_closure, A._CustomZone_bindUnaryCallbackGuarded_closure, A._RootZone_bindUnaryCallback_closure, A._RootZone_bindUnaryCallbackGuarded_closure, A.runZonedGuarded_closure, A._CustomHashMap_closure, A._LinkedCustomHashMap_closure, A._BigIntImpl_hashCode_finish, A._Uri__makePath_closure, A.FutureOfJSAnyToJSPromise_get_toJS__closure, A.FutureOfVoidToJSPromise_get_toJS__closure, A.jsify__convert, A.promiseToFuture_closure, A.promiseToFuture_closure0, A.dartify_convert, A.StreamQueue__ensureListening_closure, A.BuiltListMultimap_BuiltListMultimap_closure, A.BuiltListMultimap_hashCode_closure, A.ListMultimapBuilder_replace_closure, A.BuiltMap_BuiltMap_closure, A.BuiltMap_hashCode_closure, A.BuiltSet_hashCode_closure, A.BuiltSetMultimap_hashCode_closure, A.SetMultimapBuilder_replace_closure, A.newBuiltValueToStringHelper_closure, A.BuiltListMultimapSerializer_serialize_closure, A.BuiltListMultimapSerializer_deserialize_closure, A.BuiltListSerializer_serialize_closure, A.BuiltListSerializer_deserialize_closure, A.BuiltSetMultimapSerializer_serialize_closure, A.BuiltSetMultimapSerializer_deserialize_closure, A.BuiltSetSerializer_serialize_closure, A.BuiltSetSerializer_deserialize_closure, A.ListSerializer_serialize_closure, A.SetSerializer_serialize_closure, A.CanonicalizedMap_keys_closure, A.ServiceExtensionResponse_ServiceExtensionResponse$fromResult_closure, A.WebSocketClient_stream_closure, A.BaseRequest_closure0, A.BrowserClient_send_closure, A._bodyToStream_closure, A.ByteStream_toBytes_closure, A.MediaType_toString__closure, A.expectQuotedString_closure, A.Context_joinAll_closure, A.Context_split_closure, A._validateArgList_closure, A.Pool__runOnRelease_closure, A.Highlighter$__closure, A.Highlighter$___closure, A.Highlighter$__closure0, A.Highlighter__collateLines_closure, A.Highlighter__collateLines_closure1, A.Highlighter__collateLines__closure, A.Highlighter_highlight_closure, A.SseClient_closure0, A.SseClient_closure1, A._GuaranteeSink__addError_closure, A._EventStreamSubscription_closure, A._EventStreamSubscription_onData_closure, A.BrowserWebSocket_connect_closure, A.BrowserWebSocket_connect_closure0, A.BrowserWebSocket_connect_closure1, A.BrowserWebSocket_connect_closure2, A.AdapterWebSocketChannel_closure, A.AdapterWebSocketChannel__closure, A.AdapterWebSocketChannel__closure0, A.AdapterWebSocketChannel_closure0, A.main__closure1, A.main__closure2, A.main___closure3, A.main__closure4, A.main___closure2, A.main___closure1, A.main__closure6, A.main___closure0, A.main___closure, A.main__closure8, A.main__closure9, A.main__closure10, A._sendConnectRequest_closure, A._launchCommunicationWithDebugExtension_closure, A._handleAuthRequest_closure, A._sendResponse_closure, A.DdcLibraryBundleRestarter_restart_closure, A.DdcLibraryBundleRestarter_hotReloadStart_closure, A.DdcRestarter_restart_closure0, A.DdcRestarter_restart_closure, A.RequireRestarter__reloadModule_closure0, A.JSArrayExtension_toDartIterable_closure]); + _inheritMany(A.Closure, [A.Closure2Args, A.Closure0Args, A.Instantiation, A.TearOffClosure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A._Future_timeout_closure0, A.Stream_length_closure, A.Stream_first_closure0, A._CustomZone_bindUnaryCallback_closure, A._CustomZone_bindUnaryCallbackGuarded_closure, A._RootZone_bindUnaryCallback_closure, A._RootZone_bindUnaryCallbackGuarded_closure, A.runZonedGuarded_closure, A._CustomHashMap_closure, A._LinkedCustomHashMap_closure, A._BigIntImpl_hashCode_finish, A._Uri__makePath_closure, A.FutureOfJSAnyToJSPromise_get_toJS__closure, A.FutureOfVoidToJSPromise_get_toJS__closure, A.jsify__convert, A.promiseToFuture_closure, A.promiseToFuture_closure0, A.dartify_convert, A.StreamQueue__ensureListening_closure, A.BuiltListMultimap_BuiltListMultimap_closure, A.BuiltListMultimap_hashCode_closure, A.ListMultimapBuilder_replace_closure, A.BuiltMap_BuiltMap_closure, A.BuiltMap_hashCode_closure, A.BuiltSet_hashCode_closure, A.BuiltSetMultimap_hashCode_closure, A.SetMultimapBuilder_replace_closure, A.newBuiltValueToStringHelper_closure, A.BuiltListMultimapSerializer_serialize_closure, A.BuiltListMultimapSerializer_deserialize_closure, A.BuiltListSerializer_serialize_closure, A.BuiltListSerializer_deserialize_closure, A.BuiltSetMultimapSerializer_serialize_closure, A.BuiltSetMultimapSerializer_deserialize_closure, A.BuiltSetSerializer_serialize_closure, A.BuiltSetSerializer_deserialize_closure, A.ListSerializer_serialize_closure, A.SetSerializer_serialize_closure, A.CanonicalizedMap_keys_closure, A.ServiceExtensionResponse_ServiceExtensionResponse$fromResult_closure, A.WebSocketClient_stream_closure, A.PersistentWebSocket_connect_closure, A.PersistentWebSocket__listenWithRetry_attemptRetry, A.PersistentWebSocket__listenWithRetry_closure, A.BaseRequest_closure0, A.BrowserClient_send_closure, A._bodyToStream_closure, A.ByteStream_toBytes_closure, A.MediaType_toString__closure, A.expectQuotedString_closure, A.Context_joinAll_closure, A.Context_split_closure, A._validateArgList_closure, A.Pool__runOnRelease_closure, A.Highlighter$__closure, A.Highlighter$___closure, A.Highlighter$__closure0, A.Highlighter__collateLines_closure, A.Highlighter__collateLines_closure1, A.Highlighter__collateLines__closure, A.Highlighter_highlight_closure, A.SseClient_closure0, A.SseClient_closure1, A._EventStreamSubscription_closure, A._EventStreamSubscription_onData_closure, A.BrowserWebSocket_connect_closure, A.BrowserWebSocket_connect_closure0, A.BrowserWebSocket_connect_closure1, A.BrowserWebSocket_connect_closure2, A.main__closure1, A.main__closure2, A.main___closure3, A.main__closure4, A.main___closure2, A.main___closure1, A.main__closure6, A.main___closure0, A.main___closure, A.main__closure8, A.main__closure9, A.main__closure10, A._sendConnectRequest_closure, A._launchCommunicationWithDebugExtension_closure, A._handleAuthRequest_closure, A._sendResponse_closure, A.DdcLibraryBundleRestarter_restart_closure, A.DdcLibraryBundleRestarter_hotReloadStart_closure, A.DdcRestarter_restart_closure0, A.DdcRestarter_restart_closure, A.RequireRestarter__reloadModule_closure0, A.JSArrayExtension_toDartIterable_closure]); _inheritMany(A.Closure2Args, [A._CastListBase_sort_closure, A.CastMap_forEach_closure, A.ConstantMap_map_closure, A.JsLinkedHashMap_addAll_closure, A.initHooks_closure0, A._awaitOnObject_closure0, A._wrapJsFunctionForAsync_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure0, A._Future_timeout_closure1, A._BufferingStreamSubscription_asFuture_closure0, A.LinkedHashMap_LinkedHashMap$from_closure, A.MapBase_mapToString_closure, A._JsonStringifier_writeMap_closure, A._BigIntImpl_hashCode_combine, A.Uri_parseIPv6Address_error, A.FutureOfJSAnyToJSPromise_get_toJS_closure, A.FutureOfJSAnyToJSPromise_get_toJS__closure0, A.FutureOfVoidToJSPromise_get_toJS_closure, A.FutureOfVoidToJSPromise_get_toJS__closure0, A.StreamQueue__ensureListening_closure1, A.hashObjects_closure, A.MapBuilder_replace_closure, A.CanonicalizedMap_addAll_closure, A.CanonicalizedMap_forEach_closure, A.CanonicalizedMap_map_closure, A.safeUnawaited_closure, A.BaseRequest_closure, A.MediaType_toString_closure, A.Pool__runOnRelease_closure0, A.Highlighter__collateLines_closure0, A.main__closure5, A.main_closure0]); _inherit(A.CastList, A._CastListBase); _inheritMany(A.MapBase, [A.CastMap, A.JsLinkedHashMap, A._HashMap, A._JsonMap]); _inheritMany(A.Error, [A.LateError, A.TypeError, A.JsNoSuchMethodError, A.UnknownJsTypeError, A.RuntimeError, A._Error, A.JsonUnsupportedObjectError, A.AssertionError, A.ArgumentError, A.UnsupportedError, A.UnimplementedError, A.StateError, A.ConcurrentModificationError, A.BuiltValueNullFieldError, A.BuiltValueNestedFieldError, A.DeserializationError]); _inherit(A.UnmodifiableListBase, A.ListBase); _inheritMany(A.UnmodifiableListBase, [A.CodeUnits, A.UnmodifiableListView]); - _inheritMany(A.Closure0Args, [A.nullFuture_closure, A._AsyncRun__scheduleImmediateJsOverride_internalCallback, A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, A._TimerImpl_internalCallback, A._TimerImpl$periodic_closure, A.Future_Future$microtask_closure, A._Future__addListener_closure, A._Future__prependListeners_closure, A._Future__chainCoreFuture_closure, A._Future__asyncCompleteWithValue_closure, A._Future__asyncCompleteErrorObject_closure, A._Future__propagateToListeners_handleWhenCompleteCallback, A._Future__propagateToListeners_handleValueCallback, A._Future__propagateToListeners_handleError, A._Future_timeout_closure, 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._MultiStream_listen_closure, A._cancelAndValue_closure, A._CustomZone_bindCallback_closure, A._CustomZone_bindCallbackGuarded_closure, A._RootZone_bindCallback_closure, A._RootZone_bindCallbackGuarded_closure, A._rootHandleError_closure, A._Utf8Decoder__decoder_closure, A._Utf8Decoder__decoderNonfatal_closure, A.StreamQueue__ensureListening_closure0, A.Serializers_Serializers_closure, A.Serializers_Serializers_closure0, A.Serializers_Serializers_closure1, A.Serializers_Serializers_closure2, A.Serializers_Serializers_closure3, A._$serializers_closure, A._$serializers_closure0, A.BatchedStreamController__hasEventOrTimeOut_closure, A.BatchedStreamController__hasEventDuring_closure, A._readStreamBody_closure, A._readStreamBody_closure0, A.MediaType_MediaType$parse_closure, A.Logger_Logger_closure, A.Highlighter_closure, A.Highlighter__writeFileStart_closure, A.Highlighter__writeMultilineHighlights_closure, A.Highlighter__writeMultilineHighlights_closure0, A.Highlighter__writeMultilineHighlights_closure1, A.Highlighter__writeMultilineHighlights_closure2, A.Highlighter__writeMultilineHighlights__closure, A.Highlighter__writeMultilineHighlights__closure0, A.Highlighter__writeHighlightedText_closure, A.Highlighter__writeIndicator_closure, A.Highlighter__writeIndicator_closure0, A.Highlighter__writeIndicator_closure1, A.Highlighter__writeSidebar_closure, A._Highlight_closure, A.SseClient_closure, A.SseClient__closure, A.SseClient__onOutgoingMessage_closure, A.GuaranteeChannel_closure, A.GuaranteeChannel__closure, A.AdapterWebSocketChannel__closure1, A.main_closure, A.main__closure, A.main__closure0, A.main__closure3, A.main__closure7, A.DdcLibraryBundleRestarter__getSrcModuleLibraries_closure, A.RequireRestarter__reload_closure, A.RequireRestarter__reloadModule_closure, A._createScript_closure, A._createScript__closure, A._createScript__closure0, A.runMain_closure]); + _inheritMany(A.Closure0Args, [A.nullFuture_closure, A._AsyncRun__scheduleImmediateJsOverride_internalCallback, A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, A._TimerImpl_internalCallback, A._TimerImpl$periodic_closure, A.Future_Future$microtask_closure, A.Future_Future$delayed_closure, A._Future__addListener_closure, A._Future__prependListeners_closure, A._Future__chainCoreFuture_closure, A._Future__asyncCompleteWithValue_closure, A._Future__asyncCompleteErrorObject_closure, A._Future__propagateToListeners_handleWhenCompleteCallback, A._Future__propagateToListeners_handleValueCallback, A._Future__propagateToListeners_handleError, A._Future_timeout_closure, 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._MultiStream_listen_closure, A._cancelAndValue_closure, A._CustomZone_bindCallback_closure, A._CustomZone_bindCallbackGuarded_closure, A._RootZone_bindCallback_closure, A._RootZone_bindCallbackGuarded_closure, A._rootHandleError_closure, A._Utf8Decoder__decoder_closure, A._Utf8Decoder__decoderNonfatal_closure, A.StreamQueue__ensureListening_closure0, A.Serializers_Serializers_closure, A.Serializers_Serializers_closure0, A.Serializers_Serializers_closure1, A.Serializers_Serializers_closure2, A.Serializers_Serializers_closure3, A._$serializers_closure, A._$serializers_closure0, A.BatchedStreamController__hasEventOrTimeOut_closure, A.BatchedStreamController__hasEventDuring_closure, A._readStreamBody_closure, A._readStreamBody_closure0, A.MediaType_MediaType$parse_closure, A.Logger_Logger_closure, A.Highlighter_closure, A.Highlighter__writeFileStart_closure, A.Highlighter__writeMultilineHighlights_closure, A.Highlighter__writeMultilineHighlights_closure0, A.Highlighter__writeMultilineHighlights_closure1, A.Highlighter__writeMultilineHighlights_closure2, A.Highlighter__writeMultilineHighlights__closure, A.Highlighter__writeMultilineHighlights__closure0, A.Highlighter__writeHighlightedText_closure, A.Highlighter__writeIndicator_closure, A.Highlighter__writeIndicator_closure0, A.Highlighter__writeIndicator_closure1, A.Highlighter__writeSidebar_closure, A._Highlight_closure, A.SseClient_closure, A.SseClient__closure, A.SseClient__onOutgoingMessage_closure, A.main_closure, A.main__closure, A.main__closure0, A.main__closure3, A.main__closure7, A.DdcLibraryBundleRestarter__getSrcModuleLibraries_closure, A.RequireRestarter__reload_closure, A.RequireRestarter__reloadModule_closure, A._createScript_closure, A._createScript__closure, A._createScript__closure0, A.runMain_closure]); _inheritMany(A.EfficientLengthIterable, [A.ListIterable, A.EmptyIterable, A.LinkedHashMapKeysIterable, A.LinkedHashMapValuesIterable, A.LinkedHashMapEntriesIterable, A._HashMapKeyIterable]); _inheritMany(A.ListIterable, [A.SubListIterable, A.MappedListIterable, A.ReversedListIterable, A.ListQueue, A._JsonMapKeyIterable]); _inherit(A.EfficientLengthMappedIterable, A.MappedIterable); @@ -29438,8 +29437,7 @@ _inheritMany(A.NativeTypedArrayOfInt, [A.NativeInt16List, A.NativeInt32List, A.NativeInt8List, A.NativeUint16List, A.NativeUint32List, A.NativeUint8ClampedList, A.NativeUint8List]); _inherit(A._TypeError, A._Error); _inheritMany(A._Completer, [A._AsyncCompleter, A._SyncCompleter]); - _inheritMany(A.Stream, [A.StreamView, A._StreamImpl, A._EmptyStream, A._MultiStream, A._ForwardingStream, A._EventStream]); - _inheritMany(A._StreamController, [A._AsyncStreamController, A._SyncStreamController]); + _inherit(A._AsyncStreamController, A._StreamController); _inherit(A._ControllerStream, A._StreamImpl); _inheritMany(A._BufferingStreamSubscription, [A._ControllerSubscription, A._ForwardingStreamSubscription]); _inheritMany(A._DelayedEvent, [A._DelayedData, A._DelayedError]); @@ -29499,6 +29497,7 @@ _inherit(A._$ServiceExtensionRequest, A.ServiceExtensionRequest); _inherit(A._$ServiceExtensionResponse, A.ServiceExtensionResponse); _inheritMany(A.SocketClient, [A.SseSocketClient, A.WebSocketClient]); + _inherit(A.PersistentWebSocket, A._PersistentWebSocket_Object_StreamChannelMixin); _inherit(A.RequestAbortedException, A.ClientException); _inherit(A.BrowserClient, A.BaseClient); _inherit(A.ByteStream, A.StreamView); @@ -29512,12 +29511,11 @@ _inheritMany(A.SourceSpanMixin, [A._FileSpan, A.SourceSpanBase]); _inherit(A.SourceSpanFormatException, A.SourceSpanException); _inherit(A.SourceSpanWithContext, A.SourceSpanBase); - _inheritMany(A.StreamChannelMixin, [A.SseClient, A.GuaranteeChannel, A.AdapterWebSocketChannel]); + _inherit(A.SseClient, A.StreamChannelMixin); _inherit(A.StringScannerException, A.SourceSpanFormatException); _inherit(A.CryptoRNG, A.RNG); _inheritMany(A.WebSocketEvent, [A.TextDataReceived, A.BinaryDataReceived, A.CloseReceived]); _inherit(A.WebSocketConnectionClosed, A.WebSocketException); - _inherit(A._WebSocketSink, A.DelegatingStreamSink); _mixin(A.UnmodifiableListBase, A.UnmodifiableListMixin); _mixin(A.__CastListBase__CastIterableBase_ListMixin, A.ListBase); _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A.ListBase); @@ -29525,18 +29523,18 @@ _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin, A.ListBase); _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin); _mixin(A._AsyncStreamController, A._AsyncStreamControllerDispatch); - _mixin(A._SyncStreamController, A._SyncStreamControllerDispatch); _mixin(A._SplayTreeSet__SplayTree_Iterable, A.Iterable); _mixin(A._SplayTreeSet__SplayTree_Iterable_SetMixin, A.SetBase); _mixin(A._UnmodifiableMapView_MapView__UnmodifiableMapMixin, A._UnmodifiableMapMixin); _mixin(A._QueueList_Object_ListMixin, A.ListBase); + _mixin(A._PersistentWebSocket_Object_StreamChannelMixin, A.StreamChannelMixin); })(); var init = { G: typeof self != "undefined" ? self : globalThis, typeUniverse: {eC: new Map(), tR: {}, eT: {}, tPV: {}, sEA: []}, mangledGlobalNames: {int: "int", double: "double", num: "num", String: "String", bool: "bool", Null: "Null", List: "List", Object: "Object", Map: "Map", JSObject: "JSObject"}, mangledNames: {}, - types: ["~()", "Null()", "~(JSObject)", "Object?(@)", "@(@)", "Null(Object,StackTrace)", "~(@)", "Null(@)", "~(Object?)", "Object?(Object?)", "Future<~>()", "JSObject()", "~(~())", "~(Object,StackTrace)", "bool(Object?)", "bool(Object?,Object?)", "String(String)", "int(Object?)", "bool(_Highlight)", "Null(JSObject)", "~(@,@)", "@()", "~(Object[StackTrace?])", "Null(JavaScriptFunction,JavaScriptFunction)", "String(Match)", "~(@,StackTrace)", "bool()", "bool(String)", "int(@,@)", "int()", "~(Object?,Object?)", "Null(String)", "Null(JavaScriptFunction)", "SetMultimapBuilder()", "SetBuilder()", "int(int)", "@(@,String)", "Null(~())", "0&(String,int?)", "ListBuilder()", "ListBuilder()", "~(ServiceExtensionResponseBuilder)", "@(String)", "String(@)", "bool(String,String)", "int(String)", "Null(String,String[Object?])", "~(MultiStreamController>)", "~(List)", "MediaType()", "~(String,String)", "int(int,int)", "Logger()", "JSObject(Object,StackTrace)", "String(String?)", "Object?(~)", "String?()", "int(_Line)", "~(Zone,ZoneDelegate,Zone,Object,StackTrace)", "Object(_Line)", "Object(_Highlight)", "int(_Highlight,_Highlight)", "List<_Line>(MapEntry>)", "int(int,@)", "SourceSpanWithContext()", "Null(@,StackTrace)", "~(String?)", "Future()", "~(int,@)", "Null(WebSocket)", "~(WebSocketEvent)", "Null(Object)", "IndentingBuiltValueToStringHelper(String)", "HotRestartResponse([~(HotRestartResponseBuilder)])", "ListBuilder()", "~(HotRestartRequestBuilder)", "~(List)", "ListBuilder(BatchedDebugEventsBuilder)", "Null(String,String)", "HotReloadResponse([~(HotReloadResponseBuilder)])", "RegisterEventBuilder(RegisterEventBuilder)", "DevToolsRequestBuilder(DevToolsRequestBuilder)", "Future<~>(String)", "ConnectRequestBuilder(ConnectRequestBuilder)", "DebugInfoBuilder(DebugInfoBuilder)", "~(bool)", "ListMultimapBuilder()", "bool(bool)", "List(String)", "int(String,String)", "Null(JavaScriptObject)", "JSObject()()", "JSObject(String[bool?])", "MapBuilder()", "~(Zone?,ZoneDelegate?,Zone,Object,StackTrace)", "0^(Zone?,ZoneDelegate?,Zone,0^())", "0^(Zone?,ZoneDelegate?,Zone,0^(1^),1^)", "0^(Zone?,ZoneDelegate?,Zone,0^(1^,2^),1^,2^)", "0^()(Zone,ZoneDelegate,Zone,0^())", "0^(1^)(Zone,ZoneDelegate,Zone,0^(1^))", "0^(1^,2^)(Zone,ZoneDelegate,Zone,0^(1^,2^))", "AsyncError?(Zone,ZoneDelegate,Zone,Object,StackTrace?)", "~(Zone?,ZoneDelegate?,Zone,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~(Timer))", "~(Zone,ZoneDelegate,Zone,String)", "~(String)", "Zone(Zone?,ZoneDelegate?,Zone,ZoneSpecification?,Map?)", "0^(0^,0^)", "DebugEventBuilder(DebugEventBuilder)", "Null(~)"], + types: ["~()", "Null()", "~(JSObject)", "Object?(@)", "@(@)", "~(@)", "Null(Object,StackTrace)", "JSObject()", "Future<~>()", "Object?(Object?)", "~(~())", "~(Object,StackTrace)", "bool(Object?)", "bool(Object?,Object?)", "String(String)", "Null(JSObject)", "Null(@)", "bool(_Highlight)", "int(Object?)", "~(Object?)", "~(@,StackTrace)", "Null(JavaScriptFunction)", "int(@,@)", "~(Object?,Object?)", "@()", "int()", "Null(String)", "Null(JavaScriptFunction,JavaScriptFunction)", "bool(String)", "~(@,@)", "String(Match)", "Future<~>(String)", "bool()", "MapBuilder()", "SetBuilder()", "SetMultimapBuilder()", "@(String)", "ListMultimapBuilder()", "ListBuilder()", "ListBuilder()", "ListBuilder()", "~(ServiceExtensionResponseBuilder)", "IndentingBuiltValueToStringHelper(String)", "String(@)", "PersistentWebSocket(WebSocket)", "int(int,@)", "Future<~>(WebSocketEvent)", "bool(String,String)", "int(String)", "Null(String,String[Object?])", "~(MultiStreamController>)", "~(List)", "MediaType()", "~(String,String)", "Object?(~)", "JSObject(Object,StackTrace)", "@(@,String)", "String(String?)", "Null(~)", "String?()", "int(_Line)", "0&(String,int?)", "Object(_Line)", "Object(_Highlight)", "int(_Highlight,_Highlight)", "List<_Line>(MapEntry>)", "int(int)", "SourceSpanWithContext()", "int(int,int)", "~(String?)", "Future()", "~(Zone,ZoneDelegate,Zone,Object,StackTrace)", "Null(@,StackTrace)", "~(StreamSink<@>)", "Null(~())", "~(HotRestartRequestBuilder)", "~(List)", "ListBuilder(BatchedDebugEventsBuilder)", "Null(String,String)", "DebugEventBuilder(DebugEventBuilder)", "RegisterEventBuilder(RegisterEventBuilder)", "DevToolsRequestBuilder(DevToolsRequestBuilder)", "ConnectRequestBuilder(ConnectRequestBuilder)", "DebugInfoBuilder(DebugInfoBuilder)", "~(bool)", "~(Object[StackTrace?])", "bool(bool)", "List(String)", "int(String,String)", "Null(JavaScriptObject)", "JSObject()()", "~(int,@)", "JSObject(String[bool?])", "~(Zone?,ZoneDelegate?,Zone,Object,StackTrace)", "0^(Zone?,ZoneDelegate?,Zone,0^())", "0^(Zone?,ZoneDelegate?,Zone,0^(1^),1^)", "0^(Zone?,ZoneDelegate?,Zone,0^(1^,2^),1^,2^)", "0^()(Zone,ZoneDelegate,Zone,0^())", "0^(1^)(Zone,ZoneDelegate,Zone,0^(1^))", "0^(1^,2^)(Zone,ZoneDelegate,Zone,0^(1^,2^))", "AsyncError?(Zone,ZoneDelegate,Zone,Object,StackTrace?)", "~(Zone?,ZoneDelegate?,Zone,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~(Timer))", "~(Zone,ZoneDelegate,Zone,String)", "~(String)", "Zone(Zone?,ZoneDelegate?,Zone,ZoneSpecification?,Map?)", "0^(0^,0^)", "HotReloadResponse([~(HotReloadResponseBuilder)])", "HotRestartResponse([~(HotRestartResponseBuilder)])", "Logger()"], interceptorsByTag: null, leafTags: null, arrayRti: Symbol("$ti"), @@ -29544,7 +29542,7 @@ "2;": (t1, t2) => o => o instanceof A._Record_2 && t1._is(o._0) && t2._is(o._1) } }; - A._Universe_addRules(init.typeUniverse, JSON.parse('{"JavaScriptFunction":"LegacyJavaScriptObject","PlainJavaScriptObject":"LegacyJavaScriptObject","UnknownJavaScriptObject":"LegacyJavaScriptObject","NativeSharedArrayBuffer":"NativeByteBuffer","JavaScriptObject":{"JSObject":[]},"JSArray":{"List":["1"],"JavaScriptObject":[],"EfficientLengthIterable":["1"],"JSObject":[],"Iterable":["1"],"JSIndexable":["1"],"Iterable.E":"1"},"JSBool":{"bool":[],"TrustedGetRuntimeType":[]},"JSNull":{"Null":[],"TrustedGetRuntimeType":[]},"LegacyJavaScriptObject":{"JavaScriptObject":[],"JSObject":[]},"JSArraySafeToStringHook":{"SafeToStringHook":[]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"JavaScriptObject":[],"EfficientLengthIterable":["1"],"JSObject":[],"Iterable":["1"],"JSIndexable":["1"],"Iterable.E":"1"},"ArrayIterator":{"Iterator":["1"]},"JSNumber":{"double":[],"num":[],"Comparable":["num"]},"JSInt":{"double":[],"int":[],"num":[],"Comparable":["num"],"TrustedGetRuntimeType":[]},"JSNumNotInt":{"double":[],"num":[],"Comparable":["num"],"TrustedGetRuntimeType":[]},"JSString":{"String":[],"Comparable":["String"],"Pattern":[],"JSIndexable":["@"],"TrustedGetRuntimeType":[]},"_CastIterableBase":{"Iterable":["2"]},"CastIterator":{"Iterator":["2"]},"CastIterable":{"_CastIterableBase":["1","2"],"Iterable":["2"],"Iterable.E":"2"},"_EfficientLengthCastIterable":{"CastIterable":["1","2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"_CastListBase":{"ListBase":["2"],"List":["2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"]},"CastList":{"_CastListBase":["1","2"],"ListBase":["2"],"List":["2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListBase.E":"2","Iterable.E":"2"},"CastMap":{"MapBase":["3","4"],"Map":["3","4"],"MapBase.K":"3","MapBase.V":"4"},"LateError":{"Error":[]},"CodeUnits":{"ListBase":["int"],"UnmodifiableListMixin":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"ListBase.E":"int","Iterable.E":"int","UnmodifiableListMixin.E":"int"},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"SubListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"ListIterator":{"Iterator":["1"]},"MappedIterable":{"Iterable":["2"],"Iterable.E":"2"},"EfficientLengthMappedIterable":{"MappedIterable":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"MappedIterator":{"Iterator":["2"]},"MappedListIterable":{"ListIterable":["2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListIterable.E":"2","Iterable.E":"2"},"WhereIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereIterator":{"Iterator":["1"]},"ExpandIterable":{"Iterable":["2"],"Iterable.E":"2"},"ExpandIterator":{"Iterator":["2"]},"TakeIterable":{"Iterable":["1"],"Iterable.E":"1"},"EfficientLengthTakeIterable":{"TakeIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"TakeIterator":{"Iterator":["1"]},"SkipIterable":{"Iterable":["1"],"Iterable.E":"1"},"EfficientLengthSkipIterable":{"SkipIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"SkipIterator":{"Iterator":["1"]},"EmptyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"EmptyIterator":{"Iterator":["1"]},"WhereTypeIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereTypeIterator":{"Iterator":["1"]},"UnmodifiableListBase":{"ListBase":["1"],"UnmodifiableListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"ReversedListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"_Record_2":{"_Record2":[],"_Record":[]},"ConstantMap":{"Map":["1","2"]},"ConstantStringMap":{"ConstantMap":["1","2"],"Map":["1","2"]},"_KeysOrValues":{"Iterable":["1"],"Iterable.E":"1"},"_KeysOrValuesOrElementsIterator":{"Iterator":["1"]},"Instantiation":{"Closure":[],"Function":[]},"Instantiation1":{"Closure":[],"Function":[]},"NullError":{"TypeError":[],"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"NullThrownFromJavaScriptException":{"Exception":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"Closure0Args":{"Closure":[],"Function":[]},"Closure2Args":{"Closure":[],"Function":[]},"TearOffClosure":{"Closure":[],"Function":[]},"StaticClosure":{"Closure":[],"Function":[]},"BoundClosure":{"Closure":[],"Function":[]},"RuntimeError":{"Error":[]},"JsLinkedHashMap":{"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"LinkedHashMapKeysIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"LinkedHashMapKeyIterator":{"Iterator":["1"]},"LinkedHashMapValuesIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"LinkedHashMapValueIterator":{"Iterator":["1"]},"LinkedHashMapEntriesIterable":{"EfficientLengthIterable":["MapEntry<1,2>"],"Iterable":["MapEntry<1,2>"],"Iterable.E":"MapEntry<1,2>"},"LinkedHashMapEntryIterator":{"Iterator":["MapEntry<1,2>"]},"JsIdentityLinkedHashMap":{"JsLinkedHashMap":["1","2"],"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_Record2":{"_Record":[]},"JSSyntaxRegExp":{"RegExp":[],"Pattern":[]},"_MatchImplementation":{"RegExpMatch":[],"Match":[]},"_AllMatchesIterable":{"Iterable":["RegExpMatch"],"Iterable.E":"RegExpMatch"},"_AllMatchesIterator":{"Iterator":["RegExpMatch"]},"StringMatch":{"Match":[]},"_StringAllMatchesIterable":{"Iterable":["Match"],"Iterable.E":"Match"},"_StringAllMatchesIterator":{"Iterator":["Match"]},"NativeByteBuffer":{"JavaScriptObject":[],"JSObject":[],"ByteBuffer":[],"TrustedGetRuntimeType":[]},"NativeArrayBuffer":{"NativeByteBuffer":[],"JavaScriptObject":[],"JSObject":[],"ByteBuffer":[],"TrustedGetRuntimeType":[]},"NativeTypedData":{"JavaScriptObject":[],"JSObject":[]},"_UnmodifiableNativeByteBufferView":{"ByteBuffer":[]},"NativeByteData":{"JavaScriptObject":[],"ByteData":[],"JSObject":[],"TrustedGetRuntimeType":[]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"],"JavaScriptObject":[],"JSObject":[],"JSIndexable":["1"]},"NativeTypedArrayOfDouble":{"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"JavaScriptObject":[],"EfficientLengthIterable":["double"],"JSObject":[],"JSIndexable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"]},"NativeTypedArrayOfInt":{"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeFloat32List":{"Float32List":[],"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"JavaScriptObject":[],"EfficientLengthIterable":["double"],"JSObject":[],"JSIndexable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double","Iterable.E":"double","FixedLengthListMixin.E":"double"},"NativeFloat64List":{"Float64List":[],"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"JavaScriptObject":[],"EfficientLengthIterable":["double"],"JSObject":[],"JSIndexable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double","Iterable.E":"double","FixedLengthListMixin.E":"double"},"NativeInt16List":{"NativeTypedArrayOfInt":[],"Int16List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeInt32List":{"NativeTypedArrayOfInt":[],"Int32List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeInt8List":{"NativeTypedArrayOfInt":[],"Int8List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint16List":{"NativeTypedArrayOfInt":[],"Uint16List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint32List":{"NativeTypedArrayOfInt":[],"Uint32List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint8ClampedList":{"NativeTypedArrayOfInt":[],"Uint8ClampedList":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint8List":{"NativeTypedArrayOfInt":[],"Uint8List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"_Type":{"Type":[]},"_Error":{"Error":[]},"_TypeError":{"TypeError":[],"Error":[]},"AsyncError":{"Error":[]},"MultiStreamController":{"StreamController":["1"],"StreamSink":["1"]},"_TimerImpl":{"Timer":[]},"_AsyncAwaitCompleter":{"Completer":["1"]},"_Completer":{"Completer":["1"]},"_AsyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_SyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_Future":{"Future":["1"]},"StreamView":{"Stream":["1"]},"_StreamController":{"StreamController":["1"],"StreamSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_AsyncStreamController":{"_AsyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"StreamSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_SyncStreamController":{"_SyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"StreamSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_ControllerStream":{"_StreamImpl":["1"],"Stream":["1"],"Stream.T":"1"},"_ControllerSubscription":{"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventSink":["1"],"_EventDispatch":["1"],"_BufferingStreamSubscription.T":"1"},"_StreamSinkWrapper":{"StreamSink":["1"]},"_BufferingStreamSubscription":{"StreamSubscription":["1"],"_EventSink":["1"],"_EventDispatch":["1"],"_BufferingStreamSubscription.T":"1"},"_StreamImpl":{"Stream":["1"]},"_DelayedData":{"_DelayedEvent":["1"]},"_DelayedError":{"_DelayedEvent":["@"]},"_DelayedDone":{"_DelayedEvent":["@"]},"_DoneStreamSubscription":{"StreamSubscription":["1"]},"_EmptyStream":{"Stream":["1"],"Stream.T":"1"},"_MultiStream":{"Stream":["1"],"Stream.T":"1"},"_MultiStreamController":{"_AsyncStreamController":["1"],"_AsyncStreamControllerDispatch":["1"],"_StreamController":["1"],"MultiStreamController":["1"],"StreamController":["1"],"StreamSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_ForwardingStream":{"Stream":["2"]},"_ForwardingStreamSubscription":{"_BufferingStreamSubscription":["2"],"StreamSubscription":["2"],"_EventSink":["2"],"_EventDispatch":["2"],"_BufferingStreamSubscription.T":"2"},"_MapStream":{"_ForwardingStream":["1","2"],"Stream":["2"],"Stream.T":"2"},"_Zone":{"Zone":[]},"_CustomZone":{"_Zone":[],"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"_ZoneDelegate":{"ZoneDelegate":[]},"_ZoneSpecification":{"ZoneSpecification":[]},"_SplayTreeSetNode":{"_SplayTreeNode":["1","_SplayTreeSetNode<1>"],"_SplayTreeNode.K":"1","_SplayTreeNode.1":"_SplayTreeSetNode<1>"},"_HashMap":{"MapBase":["1","2"],"HashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_IdentityHashMap":{"_HashMap":["1","2"],"MapBase":["1","2"],"HashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_CustomHashMap":{"_HashMap":["1","2"],"MapBase":["1","2"],"HashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_HashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_HashMapKeyIterator":{"Iterator":["1"]},"_LinkedCustomHashMap":{"JsLinkedHashMap":["1","2"],"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_HashSet":{"_SetBase":["1"],"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_HashSetIterator":{"Iterator":["1"]},"_LinkedHashSet":{"_SetBase":["1"],"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_LinkedHashSetIterator":{"Iterator":["1"]},"UnmodifiableListView":{"ListBase":["1"],"UnmodifiableListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListBase.E":"1","Iterable.E":"1","UnmodifiableListMixin.E":"1"},"ListBase":{"List":["1"],"EfficientLengthIterable":["1"],"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"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"_ListQueueIterator":{"Iterator":["1"]},"SetBase":{"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_SetBase":{"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_SplayTreeIterator":{"Iterator":["3"]},"_SplayTreeKeyIterator":{"_SplayTreeIterator":["1","2","1"],"Iterator":["1"],"_SplayTreeIterator.K":"1","_SplayTreeIterator.T":"1","_SplayTreeIterator.1":"2"},"SplayTreeSet":{"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"_SplayTree":["1","_SplayTreeSetNode<1>"],"Iterable":["1"],"Iterable.E":"1","_SplayTree.1":"_SplayTreeSetNode<1>","_SplayTree.K":"1"},"Encoding":{"Codec":["String","List"]},"_JsonMap":{"MapBase":["String","@"],"Map":["String","@"],"MapBase.K":"String","MapBase.V":"@"},"_JsonMapKeyIterable":{"ListIterable":["String"],"EfficientLengthIterable":["String"],"Iterable":["String"],"ListIterable.E":"String","Iterable.E":"String"},"AsciiCodec":{"Encoding":[],"Codec":["String","List"],"Codec.S":"String"},"_UnicodeSubsetEncoder":{"Converter":["String","List"],"StreamTransformer":["String","List"]},"AsciiEncoder":{"Converter":["String","List"],"StreamTransformer":["String","List"]},"_UnicodeSubsetDecoder":{"Converter":["List","String"],"StreamTransformer":["List","String"]},"AsciiDecoder":{"Converter":["List","String"],"StreamTransformer":["List","String"]},"Base64Codec":{"Codec":["List","String"],"Codec.S":"List"},"Base64Encoder":{"Converter":["List","String"],"StreamTransformer":["List","String"]},"Base64Decoder":{"Converter":["String","List"],"StreamTransformer":["String","List"]},"Converter":{"StreamTransformer":["1","2"]},"JsonUnsupportedObjectError":{"Error":[]},"JsonCyclicError":{"Error":[]},"JsonCodec":{"Codec":["Object?","String"],"Codec.S":"Object?"},"JsonEncoder":{"Converter":["Object?","String"],"StreamTransformer":["Object?","String"]},"JsonDecoder":{"Converter":["String","Object?"],"StreamTransformer":["String","Object?"]},"Latin1Codec":{"Encoding":[],"Codec":["String","List"],"Codec.S":"String"},"Latin1Encoder":{"Converter":["String","List"],"StreamTransformer":["String","List"]},"Latin1Decoder":{"Converter":["List","String"],"StreamTransformer":["List","String"]},"Utf8Codec":{"Encoding":[],"Codec":["String","List"],"Codec.S":"String"},"Utf8Encoder":{"Converter":["String","List"],"StreamTransformer":["String","List"]},"Utf8Decoder":{"Converter":["List","String"],"StreamTransformer":["List","String"]},"BigInt":{"Comparable":["BigInt"]},"DateTime":{"Comparable":["DateTime"]},"double":{"num":[],"Comparable":["num"]},"Duration":{"Comparable":["Duration"]},"int":{"num":[],"Comparable":["num"]},"List":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"num":{"Comparable":["num"]},"RegExp":{"Pattern":[]},"RegExpMatch":{"Match":[]},"Set":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"String":{"Comparable":["String"],"Pattern":[]},"_BigIntImpl":{"BigInt":[],"Comparable":["BigInt"]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"_Exception":{"Exception":[]},"FormatException":{"Exception":[]},"IntegerDivisionByZeroException":{"Exception":[],"Error":[]},"_StringStackTrace":{"StackTrace":[]},"StringBuffer":{"StringSink":[]},"_Uri":{"Uri":[]},"_SimpleUri":{"Uri":[]},"_DataUri":{"Uri":[]},"NullRejectionException":{"Exception":[]},"DelegatingStreamSink":{"StreamSink":["1"]},"ErrorResult":{"Result":["0&"]},"ValueResult":{"Result":["1"]},"_NextRequest":{"_EventRequest":["1"]},"_HasNextRequest":{"_EventRequest":["1"]},"BuiltList":{"Iterable":["1"]},"_BuiltList":{"BuiltList":["1"],"Iterable":["1"],"Iterable.E":"1"},"_BuiltListMultimap":{"BuiltListMultimap":["1","2"]},"_BuiltMap":{"BuiltMap":["1","2"]},"BuiltSet":{"Iterable":["1"]},"_BuiltSet":{"BuiltSet":["1"],"Iterable":["1"],"Iterable.E":"1"},"_BuiltSetMultimap":{"BuiltSetMultimap":["1","2"]},"BuiltValueNullFieldError":{"Error":[]},"BuiltValueNestedFieldError":{"Error":[]},"BoolJsonObject":{"JsonObject":[]},"ListJsonObject":{"JsonObject":[]},"MapJsonObject":{"JsonObject":[]},"NumJsonObject":{"JsonObject":[]},"StringJsonObject":{"JsonObject":[]},"DeserializationError":{"Error":[]},"BigIntSerializer":{"PrimitiveSerializer":["BigInt"],"Serializer":["BigInt"]},"BoolSerializer":{"PrimitiveSerializer":["bool"],"Serializer":["bool"]},"BuiltJsonSerializers":{"Serializers":[]},"BuiltListMultimapSerializer":{"StructuredSerializer":["BuiltListMultimap<@,@>"],"Serializer":["BuiltListMultimap<@,@>"]},"BuiltListSerializer":{"StructuredSerializer":["BuiltList<@>"],"Serializer":["BuiltList<@>"]},"BuiltMapSerializer":{"StructuredSerializer":["BuiltMap<@,@>"],"Serializer":["BuiltMap<@,@>"]},"BuiltSetMultimapSerializer":{"StructuredSerializer":["BuiltSetMultimap<@,@>"],"Serializer":["BuiltSetMultimap<@,@>"]},"BuiltSetSerializer":{"StructuredSerializer":["BuiltSet<@>"],"Serializer":["BuiltSet<@>"]},"DateTimeSerializer":{"PrimitiveSerializer":["DateTime"],"Serializer":["DateTime"]},"DoubleSerializer":{"PrimitiveSerializer":["double"],"Serializer":["double"]},"DurationSerializer":{"PrimitiveSerializer":["Duration"],"Serializer":["Duration"]},"Int32Serializer":{"PrimitiveSerializer":["Int32"],"Serializer":["Int32"]},"Int64Serializer":{"PrimitiveSerializer":["Int64"],"Serializer":["Int64"]},"IntSerializer":{"PrimitiveSerializer":["int"],"Serializer":["int"]},"JsonObjectSerializer":{"PrimitiveSerializer":["JsonObject"],"Serializer":["JsonObject"]},"ListSerializer":{"StructuredSerializer":["List<@>"],"Serializer":["List<@>"]},"MapSerializer":{"StructuredSerializer":["Map<@,@>"],"Serializer":["Map<@,@>"]},"NullSerializer":{"PrimitiveSerializer":["Null"],"Serializer":["Null"]},"NumSerializer":{"PrimitiveSerializer":["num"],"Serializer":["num"]},"RegExpSerializer":{"PrimitiveSerializer":["RegExp"],"Serializer":["RegExp"]},"SetSerializer":{"StructuredSerializer":["Set<@>"],"Serializer":["Set<@>"]},"StringSerializer":{"PrimitiveSerializer":["String"],"Serializer":["String"]},"Uint8ListSerializer":{"PrimitiveSerializer":["Uint8List"],"Serializer":["Uint8List"]},"UriSerializer":{"PrimitiveSerializer":["Uri"],"Serializer":["Uri"]},"CanonicalizedMap":{"Map":["2","3"]},"DefaultEquality":{"Equality":["1"]},"IterableEquality":{"Equality":["Iterable<1>"]},"ListEquality":{"Equality":["List<1>"]},"_UnorderedEquality":{"Equality":["2"]},"SetEquality":{"_UnorderedEquality":["1","Set<1>"],"Equality":["Set<1>"],"_UnorderedEquality.E":"1","_UnorderedEquality.T":"Set<1>"},"MapEquality":{"Equality":["Map<1,2>"]},"DeepCollectionEquality":{"Equality":["@"]},"QueueList":{"ListBase":["1"],"List":["1"],"Queue":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListBase.E":"1","QueueList.E":"1","Iterable.E":"1"},"_CastQueueList":{"QueueList":["2"],"ListBase":["2"],"List":["2"],"Queue":["2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListBase.E":"2","QueueList.E":"2","Iterable.E":"2"},"_$BuildStatusSerializer":{"PrimitiveSerializer":["BuildStatus"],"Serializer":["BuildStatus"]},"_$BuildResultSerializer":{"StructuredSerializer":["BuildResult"],"Serializer":["BuildResult"]},"_$BuildResult":{"BuildResult":[]},"_$ConnectRequestSerializer":{"StructuredSerializer":["ConnectRequest"],"Serializer":["ConnectRequest"]},"_$ConnectRequest":{"ConnectRequest":[]},"_$DebugEventSerializer":{"StructuredSerializer":["DebugEvent"],"Serializer":["DebugEvent"]},"_$BatchedDebugEventsSerializer":{"StructuredSerializer":["BatchedDebugEvents"],"Serializer":["BatchedDebugEvents"]},"_$DebugEvent":{"DebugEvent":[]},"_$BatchedDebugEvents":{"BatchedDebugEvents":[]},"_$DebugInfoSerializer":{"StructuredSerializer":["DebugInfo"],"Serializer":["DebugInfo"]},"_$DebugInfo":{"DebugInfo":[]},"_$DevToolsRequestSerializer":{"StructuredSerializer":["DevToolsRequest"],"Serializer":["DevToolsRequest"]},"_$DevToolsResponseSerializer":{"StructuredSerializer":["DevToolsResponse"],"Serializer":["DevToolsResponse"]},"_$DevToolsRequest":{"DevToolsRequest":[]},"_$DevToolsResponse":{"DevToolsResponse":[]},"_$ErrorResponseSerializer":{"StructuredSerializer":["ErrorResponse"],"Serializer":["ErrorResponse"]},"_$ErrorResponse":{"ErrorResponse":[]},"_$ExtensionRequestSerializer":{"StructuredSerializer":["ExtensionRequest"],"Serializer":["ExtensionRequest"]},"_$ExtensionResponseSerializer":{"StructuredSerializer":["ExtensionResponse"],"Serializer":["ExtensionResponse"]},"_$ExtensionEventSerializer":{"StructuredSerializer":["ExtensionEvent"],"Serializer":["ExtensionEvent"]},"_$BatchedEventsSerializer":{"StructuredSerializer":["BatchedEvents"],"Serializer":["BatchedEvents"]},"_$ExtensionRequest":{"ExtensionRequest":[]},"_$ExtensionResponse":{"ExtensionResponse":[]},"_$ExtensionEvent":{"ExtensionEvent":[]},"_$BatchedEvents":{"BatchedEvents":[]},"_$HotReloadRequestSerializer":{"StructuredSerializer":["HotReloadRequest"],"Serializer":["HotReloadRequest"]},"_$HotReloadRequest":{"HotReloadRequest":[]},"_$HotReloadResponseSerializer":{"StructuredSerializer":["HotReloadResponse"],"Serializer":["HotReloadResponse"]},"_$HotReloadResponse":{"HotReloadResponse":[]},"_$HotRestartRequestSerializer":{"StructuredSerializer":["HotRestartRequest"],"Serializer":["HotRestartRequest"]},"_$HotRestartRequest":{"HotRestartRequest":[]},"_$HotRestartResponseSerializer":{"StructuredSerializer":["HotRestartResponse"],"Serializer":["HotRestartResponse"]},"_$HotRestartResponse":{"HotRestartResponse":[]},"_$IsolateExitSerializer":{"StructuredSerializer":["IsolateExit"],"Serializer":["IsolateExit"]},"_$IsolateStartSerializer":{"StructuredSerializer":["IsolateStart"],"Serializer":["IsolateStart"]},"_$IsolateExit":{"IsolateExit":[]},"_$IsolateStart":{"IsolateStart":[]},"_$RegisterEventSerializer":{"StructuredSerializer":["RegisterEvent"],"Serializer":["RegisterEvent"]},"_$RegisterEvent":{"RegisterEvent":[]},"_$RunRequestSerializer":{"StructuredSerializer":["RunRequest"],"Serializer":["RunRequest"]},"_$RunRequest":{"RunRequest":[]},"_$ServiceExtensionRequestSerializer":{"StructuredSerializer":["ServiceExtensionRequest"],"Serializer":["ServiceExtensionRequest"]},"_$ServiceExtensionRequest":{"ServiceExtensionRequest":[]},"_$ServiceExtensionResponseSerializer":{"StructuredSerializer":["ServiceExtensionResponse"],"Serializer":["ServiceExtensionResponse"]},"_$ServiceExtensionResponse":{"ServiceExtensionResponse":[]},"SseSocketClient":{"SocketClient":[]},"WebSocketClient":{"SocketClient":[]},"Int32":{"Comparable":["Object"]},"Int64":{"Comparable":["Object"]},"RequestAbortedException":{"Exception":[]},"ByteStream":{"StreamView":["List"],"Stream":["List"],"Stream.T":"List","StreamView.T":"List"},"ClientException":{"Exception":[]},"Request":{"BaseRequest":[]},"StreamedResponseV2":{"StreamedResponse":[]},"CaseInsensitiveMap":{"CanonicalizedMap":["String","String","1"],"Map":["String","1"],"CanonicalizedMap.K":"String","CanonicalizedMap.V":"1","CanonicalizedMap.C":"String"},"Level":{"Comparable":["Level"]},"PathException":{"Exception":[]},"PosixStyle":{"InternalStyle":[]},"UrlStyle":{"InternalStyle":[]},"WindowsStyle":{"InternalStyle":[]},"FileLocation":{"SourceLocation":[],"Comparable":["SourceLocation"]},"_FileSpan":{"SourceSpanWithContext":[],"SourceSpan":[],"Comparable":["SourceSpan"]},"SourceLocation":{"Comparable":["SourceLocation"]},"SourceLocationMixin":{"SourceLocation":[],"Comparable":["SourceLocation"]},"SourceSpan":{"Comparable":["SourceSpan"]},"SourceSpanBase":{"SourceSpan":[],"Comparable":["SourceSpan"]},"SourceSpanException":{"Exception":[]},"SourceSpanFormatException":{"FormatException":[],"Exception":[]},"SourceSpanMixin":{"SourceSpan":[],"Comparable":["SourceSpan"]},"SourceSpanWithContext":{"SourceSpan":[],"Comparable":["SourceSpan"]},"SseClient":{"StreamChannel":["String?"]},"GuaranteeChannel":{"StreamChannel":["1"]},"_GuaranteeSink":{"StreamSink":["1"]},"StreamChannelMixin":{"StreamChannel":["1"]},"StringScannerException":{"FormatException":[],"Exception":[]},"_EventStream":{"Stream":["1"],"Stream.T":"1"},"_EventStreamSubscription":{"StreamSubscription":["1"]},"BrowserWebSocket":{"WebSocket":[]},"TextDataReceived":{"WebSocketEvent":[]},"BinaryDataReceived":{"WebSocketEvent":[]},"CloseReceived":{"WebSocketEvent":[]},"WebSocketException":{"Exception":[]},"WebSocketConnectionClosed":{"Exception":[]},"AdapterWebSocketChannel":{"WebSocketChannel":[],"StreamChannel":["@"]},"_WebSocketSink":{"WebSocketSink":[],"DelegatingStreamSink":["@"],"StreamSink":["@"],"DelegatingStreamSink.T":"@"},"WebSocketChannelException":{"Exception":[]},"DdcLibraryBundleRestarter":{"Restarter":[]},"DdcRestarter":{"Restarter":[]},"RequireRestarter":{"Restarter":[]},"HotReloadFailedException":{"Exception":[]},"Int8List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint8List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint8ClampedList":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Int16List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint16List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Int32List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint32List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Float32List":{"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"]},"Float64List":{"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"]}}')); + A._Universe_addRules(init.typeUniverse, JSON.parse('{"JavaScriptFunction":"LegacyJavaScriptObject","PlainJavaScriptObject":"LegacyJavaScriptObject","UnknownJavaScriptObject":"LegacyJavaScriptObject","NativeSharedArrayBuffer":"NativeByteBuffer","JavaScriptObject":{"JSObject":[]},"JSArray":{"List":["1"],"JavaScriptObject":[],"EfficientLengthIterable":["1"],"JSObject":[],"Iterable":["1"],"Iterable.E":"1"},"JSBool":{"bool":[],"TrustedGetRuntimeType":[]},"JSNull":{"Null":[],"TrustedGetRuntimeType":[]},"LegacyJavaScriptObject":{"JavaScriptObject":[],"JSObject":[]},"JSArraySafeToStringHook":{"SafeToStringHook":[]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"JavaScriptObject":[],"EfficientLengthIterable":["1"],"JSObject":[],"Iterable":["1"],"Iterable.E":"1"},"ArrayIterator":{"Iterator":["1"]},"JSNumber":{"double":[],"num":[],"Comparable":["num"]},"JSInt":{"double":[],"int":[],"num":[],"Comparable":["num"],"TrustedGetRuntimeType":[]},"JSNumNotInt":{"double":[],"num":[],"Comparable":["num"],"TrustedGetRuntimeType":[]},"JSString":{"String":[],"Comparable":["String"],"Pattern":[],"TrustedGetRuntimeType":[]},"CastStream":{"Stream":["2"],"Stream.T":"2"},"CastStreamSubscription":{"StreamSubscription":["2"]},"_CastIterableBase":{"Iterable":["2"]},"CastIterator":{"Iterator":["2"]},"CastIterable":{"_CastIterableBase":["1","2"],"Iterable":["2"],"Iterable.E":"2"},"_EfficientLengthCastIterable":{"CastIterable":["1","2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"_CastListBase":{"ListBase":["2"],"List":["2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"]},"CastList":{"_CastListBase":["1","2"],"ListBase":["2"],"List":["2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListBase.E":"2","Iterable.E":"2"},"CastMap":{"MapBase":["3","4"],"Map":["3","4"],"MapBase.K":"3","MapBase.V":"4"},"LateError":{"Error":[]},"CodeUnits":{"ListBase":["int"],"UnmodifiableListMixin":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"ListBase.E":"int","Iterable.E":"int","UnmodifiableListMixin.E":"int"},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"SubListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"ListIterator":{"Iterator":["1"]},"MappedIterable":{"Iterable":["2"],"Iterable.E":"2"},"EfficientLengthMappedIterable":{"MappedIterable":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"MappedIterator":{"Iterator":["2"]},"MappedListIterable":{"ListIterable":["2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListIterable.E":"2","Iterable.E":"2"},"WhereIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereIterator":{"Iterator":["1"]},"ExpandIterable":{"Iterable":["2"],"Iterable.E":"2"},"ExpandIterator":{"Iterator":["2"]},"TakeIterable":{"Iterable":["1"],"Iterable.E":"1"},"EfficientLengthTakeIterable":{"TakeIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"TakeIterator":{"Iterator":["1"]},"SkipIterable":{"Iterable":["1"],"Iterable.E":"1"},"EfficientLengthSkipIterable":{"SkipIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"SkipIterator":{"Iterator":["1"]},"EmptyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"EmptyIterator":{"Iterator":["1"]},"WhereTypeIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereTypeIterator":{"Iterator":["1"]},"UnmodifiableListBase":{"ListBase":["1"],"UnmodifiableListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"ReversedListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"_Record_2":{"_Record2":[],"_Record":[]},"ConstantMap":{"Map":["1","2"]},"ConstantStringMap":{"ConstantMap":["1","2"],"Map":["1","2"]},"_KeysOrValues":{"Iterable":["1"],"Iterable.E":"1"},"_KeysOrValuesOrElementsIterator":{"Iterator":["1"]},"Instantiation":{"Closure":[],"Function":[]},"Instantiation1":{"Closure":[],"Function":[]},"NullError":{"TypeError":[],"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"NullThrownFromJavaScriptException":{"Exception":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"Closure0Args":{"Closure":[],"Function":[]},"Closure2Args":{"Closure":[],"Function":[]},"TearOffClosure":{"Closure":[],"Function":[]},"StaticClosure":{"Closure":[],"Function":[]},"BoundClosure":{"Closure":[],"Function":[]},"RuntimeError":{"Error":[]},"JsLinkedHashMap":{"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"LinkedHashMapKeysIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"LinkedHashMapKeyIterator":{"Iterator":["1"]},"LinkedHashMapValuesIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"LinkedHashMapValueIterator":{"Iterator":["1"]},"LinkedHashMapEntriesIterable":{"EfficientLengthIterable":["MapEntry<1,2>"],"Iterable":["MapEntry<1,2>"],"Iterable.E":"MapEntry<1,2>"},"LinkedHashMapEntryIterator":{"Iterator":["MapEntry<1,2>"]},"JsIdentityLinkedHashMap":{"JsLinkedHashMap":["1","2"],"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_Record2":{"_Record":[]},"JSSyntaxRegExp":{"RegExp":[],"Pattern":[]},"_MatchImplementation":{"RegExpMatch":[],"Match":[]},"_AllMatchesIterable":{"Iterable":["RegExpMatch"],"Iterable.E":"RegExpMatch"},"_AllMatchesIterator":{"Iterator":["RegExpMatch"]},"StringMatch":{"Match":[]},"_StringAllMatchesIterable":{"Iterable":["Match"],"Iterable.E":"Match"},"_StringAllMatchesIterator":{"Iterator":["Match"]},"NativeByteBuffer":{"JavaScriptObject":[],"JSObject":[],"ByteBuffer":[],"TrustedGetRuntimeType":[]},"NativeArrayBuffer":{"NativeByteBuffer":[],"JavaScriptObject":[],"JSObject":[],"ByteBuffer":[],"TrustedGetRuntimeType":[]},"NativeTypedData":{"JavaScriptObject":[],"JSObject":[]},"_UnmodifiableNativeByteBufferView":{"ByteBuffer":[]},"NativeByteData":{"JavaScriptObject":[],"ByteData":[],"JSObject":[],"TrustedGetRuntimeType":[]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"],"JavaScriptObject":[],"JSObject":[]},"NativeTypedArrayOfDouble":{"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"JavaScriptObject":[],"EfficientLengthIterable":["double"],"JSObject":[],"Iterable":["double"],"FixedLengthListMixin":["double"]},"NativeTypedArrayOfInt":{"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeFloat32List":{"Float32List":[],"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"JavaScriptObject":[],"EfficientLengthIterable":["double"],"JSObject":[],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double","Iterable.E":"double","FixedLengthListMixin.E":"double"},"NativeFloat64List":{"Float64List":[],"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"JavaScriptObject":[],"EfficientLengthIterable":["double"],"JSObject":[],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double","Iterable.E":"double","FixedLengthListMixin.E":"double"},"NativeInt16List":{"NativeTypedArrayOfInt":[],"Int16List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeInt32List":{"NativeTypedArrayOfInt":[],"Int32List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeInt8List":{"NativeTypedArrayOfInt":[],"Int8List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint16List":{"NativeTypedArrayOfInt":[],"Uint16List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint32List":{"NativeTypedArrayOfInt":[],"Uint32List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint8ClampedList":{"NativeTypedArrayOfInt":[],"Uint8ClampedList":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint8List":{"NativeTypedArrayOfInt":[],"Uint8List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"_Type":{"Type":[]},"_Error":{"Error":[]},"_TypeError":{"TypeError":[],"Error":[]},"AsyncError":{"Error":[]},"MultiStreamController":{"StreamController":["1"],"StreamSink":["1"]},"_TimerImpl":{"Timer":[]},"_AsyncAwaitCompleter":{"Completer":["1"]},"_Completer":{"Completer":["1"]},"_AsyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_SyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_Future":{"Future":["1"]},"StreamView":{"Stream":["1"]},"_StreamController":{"StreamController":["1"],"StreamSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_AsyncStreamController":{"_AsyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"StreamSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_ControllerStream":{"_StreamImpl":["1"],"Stream":["1"],"Stream.T":"1"},"_ControllerSubscription":{"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventSink":["1"],"_EventDispatch":["1"],"_BufferingStreamSubscription.T":"1"},"_StreamSinkWrapper":{"StreamSink":["1"]},"_BufferingStreamSubscription":{"StreamSubscription":["1"],"_EventSink":["1"],"_EventDispatch":["1"],"_BufferingStreamSubscription.T":"1"},"_StreamImpl":{"Stream":["1"]},"_DelayedData":{"_DelayedEvent":["1"]},"_DelayedError":{"_DelayedEvent":["@"]},"_DelayedDone":{"_DelayedEvent":["@"]},"_DoneStreamSubscription":{"StreamSubscription":["1"]},"_EmptyStream":{"Stream":["1"],"Stream.T":"1"},"_MultiStream":{"Stream":["1"],"Stream.T":"1"},"_MultiStreamController":{"_AsyncStreamController":["1"],"_AsyncStreamControllerDispatch":["1"],"_StreamController":["1"],"MultiStreamController":["1"],"StreamController":["1"],"StreamSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_ForwardingStream":{"Stream":["2"]},"_ForwardingStreamSubscription":{"_BufferingStreamSubscription":["2"],"StreamSubscription":["2"],"_EventSink":["2"],"_EventDispatch":["2"],"_BufferingStreamSubscription.T":"2"},"_MapStream":{"_ForwardingStream":["1","2"],"Stream":["2"],"Stream.T":"2"},"_Zone":{"Zone":[]},"_CustomZone":{"_Zone":[],"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"_ZoneDelegate":{"ZoneDelegate":[]},"_ZoneSpecification":{"ZoneSpecification":[]},"_SplayTreeSetNode":{"_SplayTreeNode":["1","_SplayTreeSetNode<1>"],"_SplayTreeNode.K":"1","_SplayTreeNode.1":"_SplayTreeSetNode<1>"},"_HashMap":{"MapBase":["1","2"],"HashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_IdentityHashMap":{"_HashMap":["1","2"],"MapBase":["1","2"],"HashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_CustomHashMap":{"_HashMap":["1","2"],"MapBase":["1","2"],"HashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_HashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_HashMapKeyIterator":{"Iterator":["1"]},"_LinkedCustomHashMap":{"JsLinkedHashMap":["1","2"],"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_HashSet":{"_SetBase":["1"],"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_HashSetIterator":{"Iterator":["1"]},"_LinkedHashSet":{"_SetBase":["1"],"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_LinkedHashSetIterator":{"Iterator":["1"]},"UnmodifiableListView":{"ListBase":["1"],"UnmodifiableListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListBase.E":"1","Iterable.E":"1","UnmodifiableListMixin.E":"1"},"ListBase":{"List":["1"],"EfficientLengthIterable":["1"],"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"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"_ListQueueIterator":{"Iterator":["1"]},"SetBase":{"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_SetBase":{"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_SplayTreeIterator":{"Iterator":["3"]},"_SplayTreeKeyIterator":{"_SplayTreeIterator":["1","2","1"],"Iterator":["1"],"_SplayTreeIterator.K":"1","_SplayTreeIterator.T":"1","_SplayTreeIterator.1":"2"},"SplayTreeSet":{"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"_SplayTree":["1","_SplayTreeSetNode<1>"],"Iterable":["1"],"Iterable.E":"1","_SplayTree.1":"_SplayTreeSetNode<1>","_SplayTree.K":"1"},"Encoding":{"Codec":["String","List"]},"_JsonMap":{"MapBase":["String","@"],"Map":["String","@"],"MapBase.K":"String","MapBase.V":"@"},"_JsonMapKeyIterable":{"ListIterable":["String"],"EfficientLengthIterable":["String"],"Iterable":["String"],"ListIterable.E":"String","Iterable.E":"String"},"AsciiCodec":{"Encoding":[],"Codec":["String","List"],"Codec.S":"String"},"_UnicodeSubsetEncoder":{"Converter":["String","List"]},"AsciiEncoder":{"Converter":["String","List"]},"_UnicodeSubsetDecoder":{"Converter":["List","String"]},"AsciiDecoder":{"Converter":["List","String"]},"Base64Codec":{"Codec":["List","String"],"Codec.S":"List"},"Base64Encoder":{"Converter":["List","String"]},"Base64Decoder":{"Converter":["String","List"]},"JsonUnsupportedObjectError":{"Error":[]},"JsonCyclicError":{"Error":[]},"JsonCodec":{"Codec":["Object?","String"],"Codec.S":"Object?"},"JsonEncoder":{"Converter":["Object?","String"]},"JsonDecoder":{"Converter":["String","Object?"]},"Latin1Codec":{"Encoding":[],"Codec":["String","List"],"Codec.S":"String"},"Latin1Encoder":{"Converter":["String","List"]},"Latin1Decoder":{"Converter":["List","String"]},"Utf8Codec":{"Encoding":[],"Codec":["String","List"],"Codec.S":"String"},"Utf8Encoder":{"Converter":["String","List"]},"Utf8Decoder":{"Converter":["List","String"]},"BigInt":{"Comparable":["BigInt"]},"DateTime":{"Comparable":["DateTime"]},"double":{"num":[],"Comparable":["num"]},"Duration":{"Comparable":["Duration"]},"int":{"num":[],"Comparable":["num"]},"List":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"num":{"Comparable":["num"]},"RegExp":{"Pattern":[]},"RegExpMatch":{"Match":[]},"Set":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"String":{"Comparable":["String"],"Pattern":[]},"_BigIntImpl":{"BigInt":[],"Comparable":["BigInt"]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"_Exception":{"Exception":[]},"FormatException":{"Exception":[]},"IntegerDivisionByZeroException":{"Exception":[],"Error":[]},"_StringStackTrace":{"StackTrace":[]},"StringBuffer":{"StringSink":[]},"_Uri":{"Uri":[]},"_SimpleUri":{"Uri":[]},"_DataUri":{"Uri":[]},"NullRejectionException":{"Exception":[]},"ErrorResult":{"Result":["0&"]},"ValueResult":{"Result":["1"]},"_NextRequest":{"_EventRequest":["1"]},"_HasNextRequest":{"_EventRequest":["1"]},"BuiltList":{"Iterable":["1"]},"_BuiltList":{"BuiltList":["1"],"Iterable":["1"],"Iterable.E":"1"},"_BuiltListMultimap":{"BuiltListMultimap":["1","2"]},"_BuiltMap":{"BuiltMap":["1","2"]},"BuiltSet":{"Iterable":["1"]},"_BuiltSet":{"BuiltSet":["1"],"Iterable":["1"],"Iterable.E":"1"},"_BuiltSetMultimap":{"BuiltSetMultimap":["1","2"]},"BuiltValueNullFieldError":{"Error":[]},"BuiltValueNestedFieldError":{"Error":[]},"BoolJsonObject":{"JsonObject":[]},"ListJsonObject":{"JsonObject":[]},"MapJsonObject":{"JsonObject":[]},"NumJsonObject":{"JsonObject":[]},"StringJsonObject":{"JsonObject":[]},"DeserializationError":{"Error":[]},"BigIntSerializer":{"PrimitiveSerializer":["BigInt"],"Serializer":["BigInt"]},"BoolSerializer":{"PrimitiveSerializer":["bool"],"Serializer":["bool"]},"BuiltJsonSerializers":{"Serializers":[]},"BuiltListMultimapSerializer":{"StructuredSerializer":["BuiltListMultimap<@,@>"],"Serializer":["BuiltListMultimap<@,@>"]},"BuiltListSerializer":{"StructuredSerializer":["BuiltList<@>"],"Serializer":["BuiltList<@>"]},"BuiltMapSerializer":{"StructuredSerializer":["BuiltMap<@,@>"],"Serializer":["BuiltMap<@,@>"]},"BuiltSetMultimapSerializer":{"StructuredSerializer":["BuiltSetMultimap<@,@>"],"Serializer":["BuiltSetMultimap<@,@>"]},"BuiltSetSerializer":{"StructuredSerializer":["BuiltSet<@>"],"Serializer":["BuiltSet<@>"]},"DateTimeSerializer":{"PrimitiveSerializer":["DateTime"],"Serializer":["DateTime"]},"DoubleSerializer":{"PrimitiveSerializer":["double"],"Serializer":["double"]},"DurationSerializer":{"PrimitiveSerializer":["Duration"],"Serializer":["Duration"]},"Int32Serializer":{"PrimitiveSerializer":["Int32"],"Serializer":["Int32"]},"Int64Serializer":{"PrimitiveSerializer":["Int64"],"Serializer":["Int64"]},"IntSerializer":{"PrimitiveSerializer":["int"],"Serializer":["int"]},"JsonObjectSerializer":{"PrimitiveSerializer":["JsonObject"],"Serializer":["JsonObject"]},"ListSerializer":{"StructuredSerializer":["List<@>"],"Serializer":["List<@>"]},"MapSerializer":{"StructuredSerializer":["Map<@,@>"],"Serializer":["Map<@,@>"]},"NullSerializer":{"PrimitiveSerializer":["Null"],"Serializer":["Null"]},"NumSerializer":{"PrimitiveSerializer":["num"],"Serializer":["num"]},"RegExpSerializer":{"PrimitiveSerializer":["RegExp"],"Serializer":["RegExp"]},"SetSerializer":{"StructuredSerializer":["Set<@>"],"Serializer":["Set<@>"]},"StringSerializer":{"PrimitiveSerializer":["String"],"Serializer":["String"]},"Uint8ListSerializer":{"PrimitiveSerializer":["Uint8List"],"Serializer":["Uint8List"]},"UriSerializer":{"PrimitiveSerializer":["Uri"],"Serializer":["Uri"]},"CanonicalizedMap":{"Map":["2","3"]},"DefaultEquality":{"Equality":["1"]},"IterableEquality":{"Equality":["Iterable<1>"]},"ListEquality":{"Equality":["List<1>"]},"_UnorderedEquality":{"Equality":["2"]},"SetEquality":{"_UnorderedEquality":["1","Set<1>"],"Equality":["Set<1>"],"_UnorderedEquality.E":"1","_UnorderedEquality.T":"Set<1>"},"MapEquality":{"Equality":["Map<1,2>"]},"DeepCollectionEquality":{"Equality":["@"]},"QueueList":{"ListBase":["1"],"List":["1"],"Queue":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListBase.E":"1","QueueList.E":"1","Iterable.E":"1"},"_CastQueueList":{"QueueList":["2"],"ListBase":["2"],"List":["2"],"Queue":["2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListBase.E":"2","QueueList.E":"2","Iterable.E":"2"},"_$BuildStatusSerializer":{"PrimitiveSerializer":["BuildStatus"],"Serializer":["BuildStatus"]},"_$BuildResultSerializer":{"StructuredSerializer":["BuildResult"],"Serializer":["BuildResult"]},"_$BuildResult":{"BuildResult":[]},"_$ConnectRequestSerializer":{"StructuredSerializer":["ConnectRequest"],"Serializer":["ConnectRequest"]},"_$ConnectRequest":{"ConnectRequest":[]},"_$DebugEventSerializer":{"StructuredSerializer":["DebugEvent"],"Serializer":["DebugEvent"]},"_$BatchedDebugEventsSerializer":{"StructuredSerializer":["BatchedDebugEvents"],"Serializer":["BatchedDebugEvents"]},"_$DebugEvent":{"DebugEvent":[]},"_$BatchedDebugEvents":{"BatchedDebugEvents":[]},"_$DebugInfoSerializer":{"StructuredSerializer":["DebugInfo"],"Serializer":["DebugInfo"]},"_$DebugInfo":{"DebugInfo":[]},"_$DevToolsRequestSerializer":{"StructuredSerializer":["DevToolsRequest"],"Serializer":["DevToolsRequest"]},"_$DevToolsResponseSerializer":{"StructuredSerializer":["DevToolsResponse"],"Serializer":["DevToolsResponse"]},"_$DevToolsRequest":{"DevToolsRequest":[]},"_$DevToolsResponse":{"DevToolsResponse":[]},"_$ErrorResponseSerializer":{"StructuredSerializer":["ErrorResponse"],"Serializer":["ErrorResponse"]},"_$ErrorResponse":{"ErrorResponse":[]},"_$ExtensionRequestSerializer":{"StructuredSerializer":["ExtensionRequest"],"Serializer":["ExtensionRequest"]},"_$ExtensionResponseSerializer":{"StructuredSerializer":["ExtensionResponse"],"Serializer":["ExtensionResponse"]},"_$ExtensionEventSerializer":{"StructuredSerializer":["ExtensionEvent"],"Serializer":["ExtensionEvent"]},"_$BatchedEventsSerializer":{"StructuredSerializer":["BatchedEvents"],"Serializer":["BatchedEvents"]},"_$ExtensionRequest":{"ExtensionRequest":[]},"_$ExtensionResponse":{"ExtensionResponse":[]},"_$ExtensionEvent":{"ExtensionEvent":[]},"_$BatchedEvents":{"BatchedEvents":[]},"_$HotReloadRequestSerializer":{"StructuredSerializer":["HotReloadRequest"],"Serializer":["HotReloadRequest"]},"_$HotReloadRequest":{"HotReloadRequest":[]},"_$HotReloadResponseSerializer":{"StructuredSerializer":["HotReloadResponse"],"Serializer":["HotReloadResponse"]},"_$HotReloadResponse":{"HotReloadResponse":[]},"_$HotRestartRequestSerializer":{"StructuredSerializer":["HotRestartRequest"],"Serializer":["HotRestartRequest"]},"_$HotRestartRequest":{"HotRestartRequest":[]},"_$HotRestartResponseSerializer":{"StructuredSerializer":["HotRestartResponse"],"Serializer":["HotRestartResponse"]},"_$HotRestartResponse":{"HotRestartResponse":[]},"_$IsolateExitSerializer":{"StructuredSerializer":["IsolateExit"],"Serializer":["IsolateExit"]},"_$IsolateStartSerializer":{"StructuredSerializer":["IsolateStart"],"Serializer":["IsolateStart"]},"_$IsolateExit":{"IsolateExit":[]},"_$IsolateStart":{"IsolateStart":[]},"_$RegisterEventSerializer":{"StructuredSerializer":["RegisterEvent"],"Serializer":["RegisterEvent"]},"_$RegisterEvent":{"RegisterEvent":[]},"_$RunRequestSerializer":{"StructuredSerializer":["RunRequest"],"Serializer":["RunRequest"]},"_$RunRequest":{"RunRequest":[]},"_$ServiceExtensionRequestSerializer":{"StructuredSerializer":["ServiceExtensionRequest"],"Serializer":["ServiceExtensionRequest"]},"_$ServiceExtensionRequest":{"ServiceExtensionRequest":[]},"_$ServiceExtensionResponseSerializer":{"StructuredSerializer":["ServiceExtensionResponse"],"Serializer":["ServiceExtensionResponse"]},"_$ServiceExtensionResponse":{"ServiceExtensionResponse":[]},"PersistentWebSocket":{"StreamChannelMixin":["@"]},"SseSocketClient":{"SocketClient":[]},"WebSocketClient":{"SocketClient":[]},"Int32":{"Comparable":["Object"]},"Int64":{"Comparable":["Object"]},"RequestAbortedException":{"Exception":[]},"ByteStream":{"StreamView":["List"],"Stream":["List"],"Stream.T":"List","StreamView.T":"List"},"ClientException":{"Exception":[]},"Request":{"BaseRequest":[]},"StreamedResponseV2":{"StreamedResponse":[]},"CaseInsensitiveMap":{"CanonicalizedMap":["String","String","1"],"Map":["String","1"],"CanonicalizedMap.K":"String","CanonicalizedMap.V":"1","CanonicalizedMap.C":"String"},"Level":{"Comparable":["Level"]},"PathException":{"Exception":[]},"PosixStyle":{"InternalStyle":[]},"UrlStyle":{"InternalStyle":[]},"WindowsStyle":{"InternalStyle":[]},"FileLocation":{"SourceLocation":[],"Comparable":["SourceLocation"]},"_FileSpan":{"SourceSpanWithContext":[],"SourceSpan":[],"Comparable":["SourceSpan"]},"SourceLocation":{"Comparable":["SourceLocation"]},"SourceLocationMixin":{"SourceLocation":[],"Comparable":["SourceLocation"]},"SourceSpan":{"Comparable":["SourceSpan"]},"SourceSpanBase":{"SourceSpan":[],"Comparable":["SourceSpan"]},"SourceSpanException":{"Exception":[]},"SourceSpanFormatException":{"FormatException":[],"Exception":[]},"SourceSpanMixin":{"SourceSpan":[],"Comparable":["SourceSpan"]},"SourceSpanWithContext":{"SourceSpan":[],"Comparable":["SourceSpan"]},"SseClient":{"StreamChannelMixin":["String?"]},"StringScannerException":{"FormatException":[],"Exception":[]},"_EventStream":{"Stream":["1"],"Stream.T":"1"},"_EventStreamSubscription":{"StreamSubscription":["1"]},"BrowserWebSocket":{"WebSocket":[]},"TextDataReceived":{"WebSocketEvent":[]},"BinaryDataReceived":{"WebSocketEvent":[]},"CloseReceived":{"WebSocketEvent":[]},"WebSocketException":{"Exception":[]},"WebSocketConnectionClosed":{"Exception":[]},"DdcLibraryBundleRestarter":{"Restarter":[]},"DdcRestarter":{"Restarter":[]},"RequireRestarter":{"Restarter":[]},"HotReloadFailedException":{"Exception":[]},"Int8List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint8List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint8ClampedList":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Int16List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint16List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Int32List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint32List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Float32List":{"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"]},"Float64List":{"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"]}}')); A._Universe_addErasedTypes(init.typeUniverse, JSON.parse('{"UnmodifiableListBase":1,"__CastListBase__CastIterableBase_ListMixin":2,"NativeTypedArray":1,"_DelayedEvent":1,"_SplayTreeSet__SplayTree_Iterable":1,"_SplayTreeSet__SplayTree_Iterable_SetMixin":1,"_QueueList_Object_ListMixin":1,"StreamChannelMixin":1}')); var string$ = { x00_____: "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\u03f6\x00\u0404\u03f4 \u03f4\u03f6\u01f6\u01f6\u03f6\u03fc\u01f4\u03ff\u03ff\u0584\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u05d4\u01f4\x00\u01f4\x00\u0504\u05c4\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u0400\x00\u0400\u0200\u03f7\u0200\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u0200\u0200\u0200\u03f7\x00", @@ -29557,6 +29555,7 @@ 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", Hot_reA: "Hot reload is not supported for the AMD module format.", Hot_reD: "Hot reload is not supported for the DDC module format.", + handle: "handleError callback must take either an Object (the error), or both an Object (the error) and a StackTrace.", max_mu: "max must be in range 0 < max \u2264 2^32, was ", serial: "serializer must be StructuredSerializer or PrimitiveSerializer" }; @@ -29630,7 +29629,6 @@ JSArray_int: findType("JSArray"), JSArray_nullable_Object: findType("JSArray"), JSArray_nullable_String: findType("JSArray"), - JSIndexable_dynamic: findType("JSIndexable<@>"), JSNull: findType("JSNull"), JSObject: findType("JSObject"), JavaScriptFunction: findType("JavaScriptFunction"), @@ -29668,6 +29666,7 @@ NativeUint8List: findType("NativeUint8List"), Null: findType("Null"), Object: findType("Object"), + PersistentWebSocket: findType("PersistentWebSocket"), PoolResource: findType("PoolResource"), PrimitiveSerializer_dynamic: findType("PrimitiveSerializer<@>"), QueueList_Result_DebugEvent: findType("QueueList>"), @@ -29694,7 +29693,6 @@ SourceSpanWithContext: findType("SourceSpanWithContext"), SplayTreeSet_String: findType("SplayTreeSet"), StackTrace: findType("StackTrace"), - StreamChannelController_nullable_Object: findType("StreamChannelController"), StreamQueue_DebugEvent: findType("StreamQueue"), StreamedResponse: findType("StreamedResponse"), String: findType("String"), diff --git a/dwds/lib/src/servers/extension_debugger.dart b/dwds/lib/src/servers/extension_debugger.dart index 3c8d24230..21f6ad032 100644 --- a/dwds/lib/src/servers/extension_debugger.dart +++ b/dwds/lib/src/servers/extension_debugger.dart @@ -30,6 +30,9 @@ class ExtensionDebugger implements RemoteDebugger { final _eventStreams = {}; var _completerId = 0; + @override + Future Function()? onReconnect; + /// Null until [close] is called. /// /// All subsequent calls to [close] will return this future. diff --git a/dwds/lib/src/services/chrome/chrome_proxy_service.dart b/dwds/lib/src/services/chrome/chrome_proxy_service.dart index e5745e606..ecdfb1729 100644 --- a/dwds/lib/src/services/chrome/chrome_proxy_service.dart +++ b/dwds/lib/src/services/chrome/chrome_proxy_service.dart @@ -55,8 +55,7 @@ final class ChromeProxyService extends ProxyService { final Modules _modules; /// Provides debugger-related functionality. - Future get debuggerFuture => _debuggerCompleter.future; - final _debuggerCompleter = Completer(); + late final Future debuggerFuture; StreamSubscription? _consoleSubscription; @@ -95,14 +94,13 @@ final class ChromeProxyService extends ProxyService { _skipLists = skipLists, _compiler = compiler, super(root: assetReader.basePath) { - final debugger = Debugger.create( + debuggerFuture = Debugger.create( remoteDebugger, streamNotify, _locations, _skipLists, root, ); - debugger.then(_debuggerCompleter.complete); } static Future create({ @@ -375,7 +373,7 @@ final class ChromeProxyService extends ProxyService { /// Clears out the [_inspector] and all related cached information. @override void destroyIsolate() { - _logger.fine('Destroying isolate'); + _logger.fine('$hashCode Destroying isolate'); if (!isIsolateRunning) return; final isolate = inspector.isolate; diff --git a/dwds/lib/src/sockets.dart b/dwds/lib/src/sockets.dart index 016448f9f..331917e2e 100644 --- a/dwds/lib/src/sockets.dart +++ b/dwds/lib/src/sockets.dart @@ -3,9 +3,13 @@ // found in the LICENSE file. import 'dart:async'; +import 'dart:typed_data'; +import 'package:logging/logging.dart'; import 'package:sse/client/sse_client.dart'; -import 'package:web_socket_channel/web_socket_channel.dart'; +import 'package:stream_channel/stream_channel.dart'; + +import 'package:web_socket/web_socket.dart'; abstract class SocketClient { StreamSink get sink; @@ -28,7 +32,7 @@ class SseSocketClient extends SocketClient { } class WebSocketClient extends SocketClient { - final WebSocketChannel _channel; + final StreamChannelMixin _channel; WebSocketClient(this._channel); @@ -40,3 +44,200 @@ class WebSocketClient extends SocketClient { @override void close() => _channel.sink.close(); } + +typedef ReconnectCallback = FutureOr Function(StreamSink); + +/// A [WebSocket] wrapper that can automatically re-establish a connection +/// when a connection is lost (e.g., upon entering "sleep" mode, flaky network +/// connections, etc.). +class PersistentWebSocket with StreamChannelMixin { + PersistentWebSocket._( + this.uri, + this._ws, { + required this.exponentialBackoffDelayMs, + required this.maxRetryAttempts, + required this.debugName, + this.onReconnect, + this.logger, + }); + + /// Creates a [PersistentWebSocket] instance connected to [url]. + /// + /// [debugName] is a string included in logs written by this class to provide + /// additional information about the purpose of this connection. + /// + /// [maxRetryAttempts] sets the maximum number of retry attempts that can be + /// made before giving up. + /// + /// [exponentialBackoffDelayMs] is the length of the initial delay before + /// attempting to retry the connection in milliseconds. This delay doubles + /// after each unsuccessful retry attempt. + /// + /// If [logger] is provided, messages will be logged when attempting to + /// re-establish a connection. + /// + /// No retries are attempted when making the initial web socket connection, + /// so callers must be prepared to handle both [SocketException]s and + /// [WebSocketException] thrown if the connection to [url] fails. + static Future connect( + Uri uri, { + String debugName = kDefaultDebugName, + int maxRetryAttempts = kDefaultMaxRetryAttempts, + int exponentialBackoffDelayMs = kDefaultBackoffDelayMs, + ReconnectCallback? onReconnect, + Logger? logger, + }) { + return WebSocket.connect(uri).then((socket) { + return PersistentWebSocket._( + uri, + socket, + exponentialBackoffDelayMs: exponentialBackoffDelayMs, + maxRetryAttempts: maxRetryAttempts, + logger: logger, + onReconnect: onReconnect, + debugName: debugName, + ); + }); + } + + final Logger? logger; + + static const kDefaultDebugName = 'Unknown'; + + /// The debug name associated with this connection. + /// + /// Useful when trying to identify the context of a given connection. If + /// [logger] is set, this name will be output as part of messages output + /// while attempting to re-establish connections. + final String debugName; + + static const kDefaultMaxRetryAttempts = 3; + + /// The number of retry attempts to make before giving up. + final int maxRetryAttempts; + + static const kDefaultBackoffDelayMs = 100; + + /// The amount of time to wait before attempting to retry the connection. + /// + /// The retry delay is calculated using exponential backoff, where each + /// successive delay before a retry attempt is twice as long as the last + /// delay. + final int exponentialBackoffDelayMs; + + /// Completes when the web socket connection is disposed of. + Future get done => _doneCompleter.future; + final _doneCompleter = Completer(); + + /// The URI used to establish the web socket connection. + final Uri uri; + + ReconnectCallback? onReconnect; + + WebSocket _ws; + + late final _incomingStreamController = StreamController() + ..onListen = _listenWithRetry; + final _outgoingStreamController = StreamController(); + + /// Used to indicate that the web socket was closed after [close] was + /// invoked. + var _closedManually = false; + + void _writeToWebSocket(dynamic data) { + if (data is String) { + _ws.sendText(data); + } else if (data is Uint8List) { + _ws.sendBytes(data); + } else { + throw UnsupportedError('Unexpected data type: ${data.runtimeType}'); + } + } + + /// Close the web socket connection. + Future close() async { + if (_closedManually) { + return; + } + _closedManually = true; + await _incomingStreamController.close(); + await _outgoingStreamController.close(); + await _ws.close(); + } + + Future _listenWithRetry() async { + var retry = false; + var retryCount = 0; + + _outgoingStreamController.stream.listen(_writeToWebSocket); + + Future attemptRetry(String message) async { + await Future.delayed(Duration(milliseconds: 100 << retryCount)); + retryCount++; + retry = !_closedManually; + if (!_closedManually) { + logger?.info('$message. Retrying ($retryCount / $maxRetryAttempts)'); + } + } + + do { + final wsOnDoneCompleter = Completer(); + + // Check if the connection has been closed during an asynchronous gap. + if (_closedManually) { + break; + } + final retried = retry; + if (retry) { + try { + _ws = await WebSocket.connect(uri); + // Reset the retry counter on a successful reconnection. + retryCount = 0; + } on Exception { + await attemptRetry( + 'Failed to establish connection to $uri ($debugName).', + ); + continue; + } + retry = false; + } + + // If the last web socket connection closed unexpected, try to + // re-establish the connection. + late StreamSubscription eventsSub; + eventsSub = _ws.events.listen((e) async { + switch (e) { + case TextDataReceived(:final text): + _incomingStreamController.sink.add(text); + case BinaryDataReceived(:final data): + _incomingStreamController.sink.add(data); + case CloseReceived(:final code): + if (code == 1006) { + await attemptRetry('Lost connection to $uri ($debugName).'); + await eventsSub.cancel(); + } + wsOnDoneCompleter.complete(); + } + }); + + if (retried) { + await onReconnect?.call(sink); + } + + // Wait for the web socket's onDone handler to run before attempting to + // retry. Waiting on _ws.done can result in a race condition. + await wsOnDoneCompleter.future; + } while (retry && retryCount < maxRetryAttempts); + + _doneCompleter.complete(); + if (!_incomingStreamController.isClosed) { + await _incomingStreamController.sink.close(); + } + } + + @override + StreamSink get sink => _outgoingStreamController.sink; + + @override + Stream get stream => _incomingStreamController.stream.cast(); +} diff --git a/dwds/lib/src/version.dart b/dwds/lib/src/version.dart index 5c9bb9079..f741e76bf 100644 --- a/dwds/lib/src/version.dart +++ b/dwds/lib/src/version.dart @@ -1,2 +1,2 @@ // Generated code. Do not modify. -const packageVersion = '26.2.3-wip'; +const packageVersion = '26.2.3'; diff --git a/dwds/pubspec.yaml b/dwds/pubspec.yaml index 4ef1378ca..3cca23f65 100644 --- a/dwds/pubspec.yaml +++ b/dwds/pubspec.yaml @@ -1,6 +1,6 @@ name: dwds # Every time this changes you need to run `dart run build_runner build`. -version: 26.2.3-wip +version: 26.2.3 description: >- A service that proxies between the Chrome debug protocol and the Dart VM @@ -40,6 +40,7 @@ dependencies: web_socket_channel: ">=2.2.0 <4.0.0" web: ^1.1.0 webkit_inspection_protocol: ^1.0.1 + web_socket: ^1.0.1 dev_dependencies: analysis_config: diff --git a/dwds/test/fixtures/fakes.dart b/dwds/test/fixtures/fakes.dart index 2cd6083b2..219becb76 100644 --- a/dwds/test/fixtures/fakes.dart +++ b/dwds/test/fixtures/fakes.dart @@ -328,6 +328,9 @@ class FakeWebkitDebugger implements WebkitDebugger { @override Future pageReload() async => fakeWipResponse; + + @override + Future Function()? onReconnect; } /// Fake execution context that is needed for id only diff --git a/dwds/web/client.dart b/dwds/web/client.dart index c691c13ee..770a50bac 100644 --- a/dwds/web/client.dart +++ b/dwds/web/client.dart @@ -29,7 +29,6 @@ import 'package:http/browser_client.dart'; import 'package:sse/client/sse_client.dart'; import 'package:uuid/uuid.dart'; import 'package:web/web.dart'; -import 'package:web_socket_channel/web_socket_channel.dart'; import 'reloader/ddc_library_bundle_restarter.dart'; import 'reloader/ddc_restarter.dart'; @@ -67,7 +66,12 @@ Future? main() { final fixedPath = _fixProtocol(dwdsDevHandlerPath); final fixedUri = Uri.parse(fixedPath); final client = fixedUri.isScheme('ws') || fixedUri.isScheme('wss') - ? WebSocketClient(WebSocketChannel.connect(fixedUri)) + ? WebSocketClient( + await PersistentWebSocket.connect( + fixedUri, + onReconnect: initializeConnection, + ), + ) : SseSocketClient(SseClient(fixedPath, debugKey: 'InjectedClient')); final restarter = switch (dartModuleStrategy) { @@ -193,6 +197,7 @@ Future? main() { ); }.toJS; + var mainRun = false; client.stream.listen( (serialized) async { final event = serializers.deserialize(jsonDecode(serialized)); @@ -221,7 +226,13 @@ Future? main() { } } } else if (event is RunRequest) { - runMain(); + // If main has already been run (e.g., in the situation where we + // lost connection to DWDS and reattached), don't try and run main + // again. + if (!mainRun) { + mainRun = true; + runMain(); + } } else if (event is ErrorResponse) { window.reportError( 'Error from backend:\n\n' @@ -264,18 +275,7 @@ Future? main() { } }); } - - if (dartModuleStrategy != 'ddc-library-bundle') { - if (_isChromium) { - _sendConnectRequest(client.sink); - } else { - // If not Chromium we just invoke main, devtools aren't supported. - runMain(); - } - } else { - _sendConnectRequest(client.sink); - } - _launchCommunicationWithDebugExtension(); + initializeConnection(client.sink); }, (error, stackTrace) { print(''' @@ -295,6 +295,20 @@ $stackTrace ); } +void initializeConnection(StreamSink clientSink) { + if (dartModuleStrategy != 'ddc-library-bundle') { + if (_isChromium) { + _sendConnectRequest(clientSink); + } else { + // If not Chromium we just invoke main, devtools aren't supported. + runMain(); + } + } else { + _sendConnectRequest(clientSink); + } + _launchCommunicationWithDebugExtension(); +} + void _trySendEvent(StreamSink sink, T serialized) { try { sink.add(serialized);