diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 5c9d8574d5..417f0f5aa5 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -1,34 +1,15 @@ -name: Publish plugin +# .github/workflows/publish.yml +name: Publish to pub.dev on: - release: - types: [published] + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+*' jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Install Flutter - uses: subosito/flutter-action@v2 - with: - channel: 'stable' - - name: Install project dependencies - run: flutter pub get - - name: Dart Format Check - run: dart format lib/ test/ --set-exit-if-changed - - name: Import Sorter Check - run: flutter pub run import_sorter:main --no-comments --exit-if-changed - - name: Dart Analyze Check - run: flutter analyze - - name: Dart Test Check - run: flutter test - #- name: Check Publish Warnings - # run: dart pub publish --dry-run - - name: Publish - uses: k-paxian/dart-package-publisher@v1.5.1 - with: - credentialJson: ${{ secrets.CREDENTIAL_JSON }} - flutter: true - skipTests: true - force: true + publish: + permissions: + id-token: write # Required for authentication using OIDC + uses: dart-lang/setup-dart/.github/workflows/publish.yml@v1 + # with: + # working-directory: path/to/package/within/repository diff --git a/CHANGELOG.md b/CHANGELOG.md index 35cfc9a872..6120e9fb8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,57 @@ + # Changelog --------------------------------------------- +[0.14.1] - 2025-05-22 + +* [Android] fix: Recording bug (#1839) +* [Android] fix: calls in terminated mode by disabling orientation manager (#1840) +* [Android] fix: Wait for audio and video thread to fully stop to avoid corrupted recordings (#1836) + +[0.14.0] - 2025-05-06 + +* [iOS/Android]feat: Media Recorder implementation Android and iOS (#1810) +* [Wndows] fix: Pickup registrar for plugin by plugin registrar manager (#1752) +* [Linux] fix: add task runner for linux. (#1821) +* [iOS/macOS] fix: Fix deadlock when creating a frame cryptor on iOS/macOS. + +[0.13.1+hotfix.1] - 2025-04-07 + +* [Android] fix: Fix `clearAndroidCommunicationDevice` call blocking. + +[0.13.1] - 2025-04-03 + +* [Android] fix: remove setPreferredInputDevice when getUserAduio. (#1808) +* [Web] fix: race condition in RTCVideoRenderer for Web (#1805) +* [Android] fix: Migrate from onSurfaceDestroyed to onSurfaceCleanup for SurfaceProducer.Callback. (#1806) + +[0.13.0] - 2025-03-24 + +* [All] feat: add getBufferedAmount for DataChannel. (#1796) +* [Windows] fix: fixed non-platform thread call error. (#1795) + +[0.12.12+hotfix.1] - 2025-03-12 + +* [Android] fix: fixed video not rendered after resume from background. + +[0.12.12] - 2025-03-09 + +* [Android] feat: Migrate to the new Surface API. (#1726) +* [Chore] chore: fix sponsors logo and links. + +[0.12.11] - 2025-02-23 + +* [web] bump version for dart_webrtc. +* [web] fix: compile error for web with --wasm. + +[0.12.10] - 2025-02-18 + +* [web] bump version for dart_webrtc. +* [web] fix: compile error for web with --wasm. + +[0.12.9] - 2025-02-13 + +* [iOS] feat: Add option to start capture without broadcast picker (#1764) + [0.12.8] - 2025-02-07 * [Dart] feat: expose rtc video value (#1754) diff --git a/README.md b/README.md index eeb8d8c255..2715e5a31c 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ WebRTC plugin for Flutter Mobile/Desktop/Web

Sponsored with 💖   by
-Stream Chat +Stream Chat
Enterprise Grade APIs for Feeds, Chat, & Video. Try the Flutter Video tutorial 💬 @@ -17,10 +17,10 @@ Enterprise Grade APIs for Feeds, Chat, & Video. -LiveKit +LiveKit
- LiveKit - Open source WebRTC infrastructure + LiveKit - Open source WebRTC and realtime AI infrastructure

## Functionality @@ -38,8 +38,8 @@ Enterprise Grade APIs for Feeds, Chat, & Video. { - plugin.stopListening(); - return false; - }); - } - @Override public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) { startListening(binding.getApplicationContext(), binding.getBinaryMessenger(), diff --git a/android/src/main/java/com/cloudwebrtc/webrtc/GetUserMediaImpl.java b/android/src/main/java/com/cloudwebrtc/webrtc/GetUserMediaImpl.java index b72236600f..0b0998f384 100755 --- a/android/src/main/java/com/cloudwebrtc/webrtc/GetUserMediaImpl.java +++ b/android/src/main/java/com/cloudwebrtc/webrtc/GetUserMediaImpl.java @@ -4,6 +4,7 @@ import android.app.Activity; import android.app.Fragment; import android.app.FragmentTransaction; +import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.content.Intent; @@ -13,12 +14,14 @@ import android.media.AudioDeviceInfo; import android.media.projection.MediaProjection; import android.media.projection.MediaProjectionManager; +import android.net.Uri; import android.os.Build; import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; import android.os.Bundle; import android.os.Handler; import android.os.Looper; +import android.os.ParcelFileDescriptor; import android.os.ResultReceiver; import android.provider.MediaStore; import android.util.Log; @@ -69,6 +72,9 @@ import org.webrtc.audio.JavaAudioDeviceModule; import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -365,17 +371,6 @@ private ConstraintsMap getUserAudio(ConstraintsMap constraints, MediaStream stre String trackId = stateProvider.getNextTrackUUID(); PeerConnectionFactory pcFactory = stateProvider.getPeerConnectionFactory(); AudioSource audioSource = pcFactory.createAudioSource(audioConstraints); - - if (deviceId != null) { - try { - if (VERSION.SDK_INT >= VERSION_CODES.M) { - setPreferredInputDevice(deviceId); - } - } catch (Exception e) { - Log.e(TAG, "setPreferredInputDevice failed", e); - } - } - AudioTrack track = pcFactory.createAudioTrack(trackId, audioSource); stream.addTrack(track); @@ -974,22 +969,64 @@ void startRecordingToFile( mediaRecorders.append(id, mediaRecorder); } - void stopRecording(Integer id) { - MediaRecorderImpl mediaRecorder = mediaRecorders.get(id); - if (mediaRecorder != null) { - mediaRecorder.stopRecording(); - mediaRecorders.remove(id); - File file = mediaRecorder.getRecordFile(); - if (file != null) { - ContentValues values = new ContentValues(3); - values.put(MediaStore.Video.Media.TITLE, file.getName()); - values.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4"); - values.put(MediaStore.Video.Media.DATA, file.getAbsolutePath()); - applicationContext - .getContentResolver() - .insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values); + void stopRecording(Integer id, String albumName) { + try { + MediaRecorderImpl mediaRecorder = mediaRecorders.get(id); + if (mediaRecorder != null) { + mediaRecorder.stopRecording(); + mediaRecorders.remove(id); + File file = mediaRecorder.getRecordFile(); + Uri collection; + + if (file != null) { + ContentValues values = new ContentValues(); + values.put(MediaStore.Video.Media.TITLE, file.getName()); + values.put(MediaStore.Video.Media.DISPLAY_NAME, file.getName()); + values.put(MediaStore.Video.Media.ALBUM, albumName); + values.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4"); + values.put(MediaStore.Video.Media.DATE_ADDED, System.currentTimeMillis() / 1000); + values.put(MediaStore.Video.Media.DATE_TAKEN, System.currentTimeMillis()); + + //Android version above 9 MediaStore uses RELATIVE_PATH + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + values.put(MediaStore.Video.Media.RELATIVE_PATH, "Movies/" + albumName); + values.put(MediaStore.Video.Media.IS_PENDING, 1); + + collection = MediaStore.Video.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY); + } else { + //Android version 9 and below MediaStore uses DATA + values.put(MediaStore.Video.Media.DATA, "/storage/emulated/0/Movies/" + albumName + "/" + file.getName()); + + collection = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; + } + + ContentResolver resolver = applicationContext.getContentResolver(); + Uri uriSavedMedia = resolver.insert(collection, values); + + assert uriSavedMedia != null; + ParcelFileDescriptor pfd = resolver.openFileDescriptor(uriSavedMedia, "w"); + assert pfd != null; + FileOutputStream out = new FileOutputStream(pfd.getFileDescriptor()); + + InputStream in = new FileInputStream(file); + + byte[] buf = new byte[8192]; + int len; + + while ((len = in.read(buf)) > 0) { + out.write(buf, 0, len); + } + + out.close(); + in.close(); + pfd.close(); + values.clear(); + } } + } catch(Exception e){ + } + } diff --git a/android/src/main/java/com/cloudwebrtc/webrtc/MethodCallHandlerImpl.java b/android/src/main/java/com/cloudwebrtc/webrtc/MethodCallHandlerImpl.java index 9c92d2371b..8444c0e66b 100644 --- a/android/src/main/java/com/cloudwebrtc/webrtc/MethodCallHandlerImpl.java +++ b/android/src/main/java/com/cloudwebrtc/webrtc/MethodCallHandlerImpl.java @@ -14,6 +14,7 @@ import android.os.Build; import android.util.Log; import android.util.LongSparseArray; +import android.view.Surface; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -481,6 +482,12 @@ public void onMethodCall(MethodCall call, @NonNull Result notSafeResult) { createDataChannel(peerConnectionId, label, new ConstraintsMap(dataChannelDict), result); break; } + case "dataChannelGetBufferedAmount": { + String peerConnectionId = call.argument("peerConnectionId"); + String dataChannelId = call.argument("dataChannelId"); + dataChannelGetBufferedAmount(peerConnectionId, dataChannelId, result); + break; + } case "dataChannelSend": { String peerConnectionId = call.argument("peerConnectionId"); String dataChannelId = call.argument("dataChannelId"); @@ -565,22 +572,21 @@ public void onMethodCall(MethodCall call, @NonNull Result notSafeResult) { break; } case "createVideoRenderer": { - SurfaceTextureEntry entry = textures.createSurfaceTexture(); - SurfaceTexture surfaceTexture = entry.surfaceTexture(); - FlutterRTCVideoRenderer render = new FlutterRTCVideoRenderer(surfaceTexture, entry); - renders.put(entry.id(), render); + TextureRegistry.SurfaceProducer producer = textures.createSurfaceProducer(); + FlutterRTCVideoRenderer render = new FlutterRTCVideoRenderer(producer); + renders.put(producer.id(), render); EventChannel eventChannel = new EventChannel( messenger, - "FlutterWebRTC/Texture" + entry.id()); + "FlutterWebRTC/Texture" + producer.id()); eventChannel.setStreamHandler(render); render.setEventChannel(eventChannel); - render.setId((int) entry.id()); + render.setId((int) producer.id()); ConstraintsMap params = new ConstraintsMap(); - params.putInt("textureId", (int) entry.id()); + params.putInt("textureId", (int) producer.id()); result.success(params.toMap()); break; } @@ -690,6 +696,7 @@ public void onMethodCall(MethodCall call, @NonNull Result notSafeResult) { } case "clearAndroidCommunicationDevice": { AudioSwitchManager.instance.clearCommunicationDevice(); + result.success(null); break; } case "setMicrophoneMute": @@ -763,7 +770,8 @@ public void onMethodCall(MethodCall call, @NonNull Result notSafeResult) { break; case "stopRecordToFile": Integer recorderId = call.argument("recorderId"); - getUserMediaImpl.stopRecording(recorderId); + String albumName = call.argument("albumName"); + getUserMediaImpl.stopRecording(recorderId, albumName); result.success(null); break; case "captureFrame": { @@ -2039,6 +2047,17 @@ public void dataChannelSend(String peerConnectionId, String dataChannelId, ByteB } } + public void dataChannelGetBufferedAmount(String peerConnectionId, String dataChannelId, Result result) { + PeerConnectionObserver pco + = mPeerConnectionObservers.get(peerConnectionId); + if (pco == null || pco.getPeerConnection() == null) { + Log.d(TAG, "dataChannelGetBufferedAmount() peerConnection is null"); + resultError("dataChannelGetBufferedAmount", "peerConnection is null", result); + } else { + pco.dataChannelGetBufferedAmount(dataChannelId, result); + } + } + public void dataChannelClose(String peerConnectionId, String dataChannelId) { // Forward to PeerConnectionObserver which deals with DataChannels // because DataChannel is owned by PeerConnection. diff --git a/android/src/main/java/com/cloudwebrtc/webrtc/OrientationAwareScreenCapturer.java b/android/src/main/java/com/cloudwebrtc/webrtc/OrientationAwareScreenCapturer.java index 13a46c4964..7bee5d0dc2 100644 --- a/android/src/main/java/com/cloudwebrtc/webrtc/OrientationAwareScreenCapturer.java +++ b/android/src/main/java/com/cloudwebrtc/webrtc/OrientationAwareScreenCapturer.java @@ -15,6 +15,7 @@ import android.view.WindowManager; import android.app.Activity; import android.hardware.display.DisplayManager; +import android.util.DisplayMetrics; import android.hardware.display.VirtualDisplay; import android.media.projection.MediaProjectionManager; import android.os.Looper; @@ -76,9 +77,11 @@ public void onFrame(VideoFrame frame) { } private boolean isDeviceOrientationPortrait() { - final int surfaceRotation = windowManager.getDefaultDisplay().getRotation(); - - return surfaceRotation != Surface.ROTATION_90 && surfaceRotation != Surface.ROTATION_270; + final Display display = windowManager.getDefaultDisplay(); + final DisplayMetrics metrics = new DisplayMetrics(); + display.getRealMetrics(metrics); + + return metrics.heightPixels > metrics.widthPixels; } diff --git a/android/src/main/java/com/cloudwebrtc/webrtc/PeerConnectionObserver.java b/android/src/main/java/com/cloudwebrtc/webrtc/PeerConnectionObserver.java index a4e8736268..9c36dce354 100755 --- a/android/src/main/java/com/cloudwebrtc/webrtc/PeerConnectionObserver.java +++ b/android/src/main/java/com/cloudwebrtc/webrtc/PeerConnectionObserver.java @@ -168,6 +168,18 @@ void dataChannelSend(String dataChannelId, ByteBuffer byteBuffer, Boolean isBina } } + void dataChannelGetBufferedAmount(String dataChannelId, Result result) { + DataChannel dataChannel = dataChannels.get(dataChannelId); + if (dataChannel != null) { + ConstraintsMap params = new ConstraintsMap(); + params.putLong("bufferedAmount", dataChannel.bufferedAmount()); + result.success(params.toMap()); + } else { + Log.d(TAG, "dataChannelGetBufferedAmount() dataChannel is null"); + resultError("dataChannelGetBufferedAmount", "DataChannel is null", result); + } + } + RtpTransceiver getRtpTransceiverById(String id) { RtpTransceiver transceiver = transceivers.get(id); if (null == transceiver) { diff --git a/android/src/main/java/com/cloudwebrtc/webrtc/SurfaceTextureRenderer.java b/android/src/main/java/com/cloudwebrtc/webrtc/SurfaceTextureRenderer.java index d4b7edbddd..faa783a351 100755 --- a/android/src/main/java/com/cloudwebrtc/webrtc/SurfaceTextureRenderer.java +++ b/android/src/main/java/com/cloudwebrtc/webrtc/SurfaceTextureRenderer.java @@ -1,6 +1,7 @@ package com.cloudwebrtc.webrtc; import android.graphics.SurfaceTexture; +import android.view.Surface; import org.webrtc.EglBase; import org.webrtc.EglRenderer; @@ -11,6 +12,8 @@ import java.util.concurrent.CountDownLatch; +import io.flutter.view.TextureRegistry; + /** * Display the video stream on a Surface. * renderFrame() is asynchronous to avoid blocking the calling thread. @@ -95,19 +98,35 @@ public void pauseVideo() { // VideoSink interface. @Override public void onFrame(VideoFrame frame) { - if(!isFirstFrameRendered) { - texture.setDefaultBufferSize(frame.getRotatedWidth(), frame.getRotatedHeight()); - createEglSurface(texture); + if(surface == null) { + producer.setSize(frame.getRotatedWidth(),frame.getRotatedHeight()); + surface = producer.getSurface(); + createEglSurface(surface); } updateFrameDimensionsAndReportEvents(frame); super.onFrame(frame); } - private SurfaceTexture texture; + private Surface surface = null; + + private TextureRegistry.SurfaceProducer producer; - public void surfaceCreated(final SurfaceTexture texture) { + public void surfaceCreated(final TextureRegistry.SurfaceProducer producer) { ThreadUtils.checkIsOnMainThread(); - this.texture = texture; + this.producer = producer; + this.producer.setCallback( + new TextureRegistry.SurfaceProducer.Callback() { + @Override + public void onSurfaceAvailable() { + // Do surface initialization here, and draw the current frame. + } + + @Override + public void onSurfaceCleanup() { + surfaceDestroyed(); + } + } + ); } public void surfaceDestroyed() { @@ -115,6 +134,7 @@ public void surfaceDestroyed() { final CountDownLatch completionLatch = new CountDownLatch(1); releaseEglSurface(completionLatch::countDown); ThreadUtils.awaitUninterruptibly(completionLatch); + surface = null; } // Update frame dimensions and report any changes to |rendererEvents|. @@ -138,7 +158,7 @@ private void updateFrameDimensionsAndReportEvents(VideoFrame frame) { } rotatedFrameWidth = frame.getRotatedWidth(); rotatedFrameHeight = frame.getRotatedHeight(); - texture.setDefaultBufferSize(rotatedFrameWidth, rotatedFrameHeight); + producer.setSize(rotatedFrameWidth, rotatedFrameHeight); frameRotation = frame.getRotation(); } } diff --git a/android/src/main/java/com/cloudwebrtc/webrtc/record/VideoFileRenderer.java b/android/src/main/java/com/cloudwebrtc/webrtc/record/VideoFileRenderer.java index f2a0de795c..030c36bf16 100644 --- a/android/src/main/java/com/cloudwebrtc/webrtc/record/VideoFileRenderer.java +++ b/android/src/main/java/com/cloudwebrtc/webrtc/record/VideoFileRenderer.java @@ -1,3 +1,5 @@ +// Modifications by Signify, Copyright 2025, Signify Holding - SPDX-License-Identifier: MIT + package com.cloudwebrtc.webrtc.record; import android.media.MediaCodec; @@ -19,6 +21,7 @@ import java.io.IOException; import java.nio.ByteBuffer; +import java.util.concurrent.CountDownLatch; class VideoFileRenderer implements VideoSink, SamplesReadyCallback { private static final String TAG = "VideoFileRenderer"; @@ -127,27 +130,50 @@ private void renderFrameOnRenderThread(VideoFrame frame) { /** * Release all resources. All already posted frames will be rendered first. */ + // Start Signify modification void release() { isRunning = false; - if (audioThreadHandler != null) + CountDownLatch latch = new CountDownLatch(audioThreadHandler != null ? 2 : 1); + if (audioThreadHandler != null) { audioThreadHandler.post(() -> { - if (audioEncoder != null) { - audioEncoder.stop(); - audioEncoder.release(); + try{ + if (audioEncoder != null) { + audioEncoder.stop(); + audioEncoder.release(); + } + audioThread.quit(); + } finally { + latch.countDown(); } - audioThread.quit(); }); + } + renderThreadHandler.post(() -> { - if (encoder != null) { - encoder.stop(); - encoder.release(); + try { + if (encoder != null) { + encoder.stop(); + encoder.release(); + } + eglBase.release(); + if (muxerStarted) { + mediaMuxer.stop(); + mediaMuxer.release(); + muxerStarted = false; + } + renderThread.quit(); + } finally { + latch.countDown(); } - eglBase.release(); - mediaMuxer.stop(); - mediaMuxer.release(); - renderThread.quit(); }); + + try { + latch.await(); + } catch (InterruptedException e) { + Log.e(TAG, "Release interrupted", e); + Thread.currentThread().interrupt(); + } } + // End Signify modification private boolean encoderStarted = false; private volatile boolean muxerStarted = false; @@ -174,7 +200,7 @@ private void drainEncoder() { Log.e(TAG, "encoder output format changed: " + newFormat); trackIndex = mediaMuxer.addTrack(newFormat); - if (audioTrackIndex != -1 && !muxerStarted) { + if (trackIndex != -1 && !muxerStarted) { mediaMuxer.start(); muxerStarted = true; } @@ -230,7 +256,7 @@ private void drainAudio() { Log.w(TAG, "encoder output format changed: " + newFormat); audioTrackIndex = mediaMuxer.addTrack(newFormat); - if (trackIndex != -1 && !muxerStarted) { + if (audioTrackIndex != -1 && !muxerStarted) { mediaMuxer.start(); muxerStarted = true; } diff --git a/android/src/main/java/com/cloudwebrtc/webrtc/video/camera/CameraUtils.java b/android/src/main/java/com/cloudwebrtc/webrtc/video/camera/CameraUtils.java index 04c189eeec..12802ce1d0 100644 --- a/android/src/main/java/com/cloudwebrtc/webrtc/video/camera/CameraUtils.java +++ b/android/src/main/java/com/cloudwebrtc/webrtc/video/camera/CameraUtils.java @@ -45,7 +45,14 @@ public CameraUtils(GetUserMediaImpl getUserMediaImpl, Activity activity) { this.getUserMediaImpl = getUserMediaImpl; this.activity = activity; this.deviceOrientationManager = new DeviceOrientationManager(activity, 0); - this.deviceOrientationManager.start(); + // commented out because you cannot register a reciever when the app is terminated + // because the activity is null? + // this causes the call to break if the app is terminated + // the manager seems to end up at handleOrientationChange which does not do + // anything at the moment so this should be ok + + // TODO: get a proper fix at some point + // this.deviceOrientationManager.start(); } public void setFocusMode(MethodCall call, AnyThreadResult result) { diff --git a/assets/sponsors/stream-logo.png b/assets/sponsors/stream-logo.png new file mode 100644 index 0000000000..671eea96df Binary files /dev/null and b/assets/sponsors/stream-logo.png differ diff --git a/common/cpp/include/flutter_common.h b/common/cpp/include/flutter_common.h index f82054d68d..50e6097bf9 100644 --- a/common/cpp/include/flutter_common.h +++ b/common/cpp/include/flutter_common.h @@ -12,8 +12,10 @@ #include #include -#include +#include #include +#include +#include typedef flutter::EncodableValue EncodableValue; typedef flutter::EncodableMap EncodableMap; @@ -27,6 +29,8 @@ typedef flutter::EventSink EventSink; typedef flutter::MethodCall MethodCall; typedef flutter::MethodResult MethodResult; +class TaskRunner; + // foo.StringValue() becomes std::get(foo) // foo.IsString() becomes std::holds_alternative(foo) @@ -90,7 +94,8 @@ inline double findDouble(const EncodableMap& map, const std::string& key) { return 0.0; } -inline std::optional maybeFindDouble(const EncodableMap& map, const std::string& key) { +inline std::optional maybeFindDouble(const EncodableMap& map, + const std::string& key) { auto it = map.find(EncodableValue(key)); if (it != map.end() && TypeIs(it->second)) return GetValue(it->second); @@ -171,6 +176,7 @@ class EventChannelProxy { public: static std::unique_ptr Create( BinaryMessenger* messenger, + TaskRunner* task_runner, const std::string& channelName); virtual ~EventChannelProxy() = default; diff --git a/common/cpp/include/flutter_data_channel.h b/common/cpp/include/flutter_data_channel.h index ccffa511cd..1e5bfd1584 100644 --- a/common/cpp/include/flutter_data_channel.h +++ b/common/cpp/include/flutter_data_channel.h @@ -10,6 +10,7 @@ class FlutterRTCDataChannelObserver : public RTCDataChannelObserver { public: FlutterRTCDataChannelObserver(scoped_refptr data_channel, BinaryMessenger* messenger, + TaskRunner* task_runner, const std::string& channel_name); virtual ~FlutterRTCDataChannelObserver(); @@ -39,6 +40,9 @@ class FlutterDataChannel { const EncodableValue& data, std::unique_ptr); + void DataChannelGetBufferedAmount(RTCDataChannel* data_channel, + std::unique_ptr result); + void DataChannelClose(RTCDataChannel* data_channel, const std::string& data_channel_uuid, std::unique_ptr); diff --git a/common/cpp/include/flutter_frame_cryptor.h b/common/cpp/include/flutter_frame_cryptor.h index 111b2f6abf..36756272f9 100644 --- a/common/cpp/include/flutter_frame_cryptor.h +++ b/common/cpp/include/flutter_frame_cryptor.h @@ -10,8 +10,8 @@ namespace flutter_webrtc_plugin { class FlutterFrameCryptorObserver : public libwebrtc::RTCFrameCryptorObserver { public: - FlutterFrameCryptorObserver(BinaryMessenger* messenger,const std::string& channelName) - : event_channel_(EventChannelProxy::Create(messenger, channelName)) {} + FlutterFrameCryptorObserver(BinaryMessenger* messenger, TaskRunner* task_runner, const std::string& channelName) + : event_channel_(EventChannelProxy::Create(messenger, task_runner, channelName)) {} void OnFrameCryptionStateChanged( const string participant_id, libwebrtc::RTCFrameCryptionState state); diff --git a/common/cpp/include/flutter_peerconnection.h b/common/cpp/include/flutter_peerconnection.h index 5efd1e5a45..699823dfdc 100644 --- a/common/cpp/include/flutter_peerconnection.h +++ b/common/cpp/include/flutter_peerconnection.h @@ -11,6 +11,7 @@ class FlutterPeerConnectionObserver : public RTCPeerConnectionObserver { FlutterPeerConnectionObserver(FlutterWebRTCBase* base, scoped_refptr peerconnection, BinaryMessenger* messenger, + TaskRunner* task_runner, const std::string& channel_name, std::string& peerConnectionId); diff --git a/common/cpp/include/flutter_video_renderer.h b/common/cpp/include/flutter_video_renderer.h index 41bec0c4de..b2454f8458 100644 --- a/common/cpp/include/flutter_video_renderer.h +++ b/common/cpp/include/flutter_video_renderer.h @@ -22,6 +22,7 @@ class FlutterVideoRenderer void initialize(TextureRegistrar* registrar, BinaryMessenger* messenger, + TaskRunner* task_runner, std::unique_ptr texture, int64_t texture_id); diff --git a/common/cpp/include/flutter_webrtc.h b/common/cpp/include/flutter_webrtc.h index 5886a67dff..573956b9aa 100644 --- a/common/cpp/include/flutter_webrtc.h +++ b/common/cpp/include/flutter_webrtc.h @@ -21,6 +21,8 @@ class FlutterWebRTCPlugin : public flutter::Plugin { virtual BinaryMessenger* messenger() = 0; virtual TextureRegistrar* textures() = 0; + + virtual TaskRunner* task_runner() = 0; }; class FlutterWebRTC : public FlutterWebRTCBase, diff --git a/common/cpp/include/flutter_webrtc_base.h b/common/cpp/include/flutter_webrtc_base.h index 9d24455df7..9edabc7680 100644 --- a/common/cpp/include/flutter_webrtc_base.h +++ b/common/cpp/include/flutter_webrtc_base.h @@ -43,7 +43,7 @@ class FlutterWebRTCBase { enum ParseConstraintType { kMandatory, kOptional }; public: - FlutterWebRTCBase(BinaryMessenger* messenger, TextureRegistrar* textures); + FlutterWebRTCBase(BinaryMessenger* messenger, TextureRegistrar* textures, TaskRunner* task_runner); ~FlutterWebRTCBase(); std::string GenerateUUID(); @@ -122,6 +122,7 @@ class FlutterWebRTCBase { protected: BinaryMessenger* messenger_; + TaskRunner *task_runner_; TextureRegistrar* textures_; std::unique_ptr event_channel_; }; diff --git a/common/cpp/include/task_runner.h b/common/cpp/include/task_runner.h new file mode 100644 index 0000000000..74c510c581 --- /dev/null +++ b/common/cpp/include/task_runner.h @@ -0,0 +1,17 @@ +// Copyright 2024 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + #ifndef PACKAGES_FLUTTER_WEBRTC_TASK_RUNNER_H_ + #define PACKAGES_FLUTTER_WEBRTC_TASK_RUNNER_H_ + + #include + + using TaskClosure = std::function; + + class TaskRunner { + public: + virtual void EnqueueTask(TaskClosure task) = 0; + virtual ~TaskRunner() = default; + }; + + #endif // PACKAGES_FLUTTER_WEBRTC_TASK_RUNNER_H_ \ No newline at end of file diff --git a/common/cpp/src/flutter_common.cc b/common/cpp/src/flutter_common.cc index c967f2eb12..1daa606a17 100644 --- a/common/cpp/src/flutter_common.cc +++ b/common/cpp/src/flutter_common.cc @@ -1,4 +1,7 @@ #include "flutter_common.h" +#include "task_runner.h" + +#include class MethodCallProxyImpl : public MethodCallProxy { public: @@ -66,56 +69,75 @@ std::unique_ptr MethodResultProxy::Create( } class EventChannelProxyImpl : public EventChannelProxy { - public: - EventChannelProxyImpl(BinaryMessenger* messenger, - const std::string& channelName) - : channel_(std::make_unique( - messenger, - channelName, - &flutter::StandardMethodCodec::GetInstance())) { - auto handler = std::make_unique< - flutter::StreamHandlerFunctions>( - [&](const EncodableValue* arguments, - std::unique_ptr>&& events) - -> std::unique_ptr> { - sink_ = std::move(events); - for (auto& event : event_queue_) { - sink_->Success(event); - } - event_queue_.clear(); - on_listen_called_ = true; - return nullptr; - }, - [&](const EncodableValue* arguments) - -> std::unique_ptr> { - on_listen_called_ = false; - return nullptr; - }); - - channel_->SetStreamHandler(std::move(handler)); - } - - virtual ~EventChannelProxyImpl() {} - - void Success(const EncodableValue& event, bool cache_event = true) override { - if (on_listen_called_) { + public: + EventChannelProxyImpl(BinaryMessenger* messenger, + TaskRunner* task_runner, + const std::string& channelName) + : channel_(std::make_unique( + messenger, + channelName, + &flutter::StandardMethodCodec::GetInstance())), + task_runner_(task_runner) { + auto handler = std::make_unique< + flutter::StreamHandlerFunctions>( + [&](const EncodableValue* arguments, + std::unique_ptr>&& events) + -> std::unique_ptr> { + sink_ = std::move(events); + std::weak_ptr weak_sink = sink_; + for (auto& event : event_queue_) { + PostEvent(event); + } + event_queue_.clear(); + on_listen_called_ = true; + return nullptr; + }, + [&](const EncodableValue* arguments) + -> std::unique_ptr> { + on_listen_called_ = false; + return nullptr; + }); + + channel_->SetStreamHandler(std::move(handler)); + } + + virtual ~EventChannelProxyImpl() {} + + void Success(const EncodableValue& event, bool cache_event = true) override { + if (on_listen_called_) { + PostEvent(event); + } else { + if (cache_event) { + event_queue_.push_back(event); + } + } + } + + void PostEvent(const EncodableValue& event) { + if(task_runner_) { + std::weak_ptr weak_sink = sink_; + task_runner_->EnqueueTask([weak_sink, event]() { + auto sink = weak_sink.lock(); + if (sink) { + sink->Success(event); + } + }); + } else { sink_->Success(event); - } else { - if (cache_event) { - event_queue_.push_back(event); - } - } - } - - private: - std::unique_ptr channel_; - std::unique_ptr sink_; - std::list event_queue_; - bool on_listen_called_ = false; -}; + } + } + + private: + std::unique_ptr channel_; + std::shared_ptr> sink_; + std::list event_queue_; + bool on_listen_called_ = false; + TaskRunner* task_runner_; + }; std::unique_ptr EventChannelProxy::Create( BinaryMessenger* messenger, + TaskRunner* task_runner, const std::string& channelName) { - return std::make_unique(messenger, channelName); -} + return std::make_unique(messenger, task_runner, channelName); +} \ No newline at end of file diff --git a/common/cpp/src/flutter_data_channel.cc b/common/cpp/src/flutter_data_channel.cc index f333d42a6f..37afd12b54 100644 --- a/common/cpp/src/flutter_data_channel.cc +++ b/common/cpp/src/flutter_data_channel.cc @@ -7,8 +7,9 @@ namespace flutter_webrtc_plugin { FlutterRTCDataChannelObserver::FlutterRTCDataChannelObserver( scoped_refptr data_channel, BinaryMessenger* messenger, + TaskRunner* task_runner, const std::string& channelName) - : event_channel_(EventChannelProxy::Create(messenger, channelName)), + : event_channel_(EventChannelProxy::Create(messenger, task_runner, channelName)), data_channel_(data_channel) { data_channel_->RegisterObserver(this); } @@ -53,7 +54,7 @@ void FlutterDataChannel::CreateDataChannel( "FlutterWebRTC/dataChannelEvent" + peerConnectionId + uuid; std::unique_ptr observer( - new FlutterRTCDataChannelObserver(data_channel, base_->messenger_, + new FlutterRTCDataChannelObserver(data_channel, base_->messenger_, base_->task_runner_, event_channel)); base_->lock(); @@ -86,6 +87,13 @@ void FlutterDataChannel::DataChannelSend( result->Success(); } +void FlutterDataChannel::DataChannelGetBufferedAmount(RTCDataChannel* data_channel, + std::unique_ptr result) { + EncodableMap params; + params[EncodableValue("bufferedAmount")] = EncodableValue((int64_t)data_channel->buffered_amount()); + result->Success(EncodableValue(params)); +} + void FlutterDataChannel::DataChannelClose( RTCDataChannel* data_channel, const std::string& data_channel_uuid, diff --git a/common/cpp/src/flutter_frame_cryptor.cc b/common/cpp/src/flutter_frame_cryptor.cc index 975f400751..a9e44e9bd6 100644 --- a/common/cpp/src/flutter_frame_cryptor.cc +++ b/common/cpp/src/flutter_frame_cryptor.cc @@ -166,7 +166,7 @@ void FlutterFrameCryptor::FrameCryptorFactoryCreateFrameCryptor( keyProvider); std::string event_channel = "FlutterWebRTC/frameCryptorEvent" + uuid; - scoped_refptr observer(new RefCountedObject(base_->messenger_, event_channel)); + scoped_refptr observer(new RefCountedObject(base_->messenger_, base_->task_runner_, event_channel)); frameCryptor->RegisterRTCFrameCryptorObserver(observer); @@ -192,7 +192,7 @@ void FlutterFrameCryptor::FrameCryptorFactoryCreateFrameCryptor( std::string event_channel = "FlutterWebRTC/frameCryptorEvent" + uuid; - scoped_refptr observer(new RefCountedObject(base_->messenger_, event_channel)); + scoped_refptr observer(new RefCountedObject(base_->messenger_, base_->task_runner_, event_channel)); frameCryptor->RegisterRTCFrameCryptorObserver(observer.get()); diff --git a/common/cpp/src/flutter_peerconnection.cc b/common/cpp/src/flutter_peerconnection.cc index d77af9c5f2..691ec29f19 100644 --- a/common/cpp/src/flutter_peerconnection.cc +++ b/common/cpp/src/flutter_peerconnection.cc @@ -338,6 +338,7 @@ void FlutterPeerConnection::CreateRTCPeerConnection( std::unique_ptr observer( new FlutterPeerConnectionObserver(base_, pc, base_->messenger_, + base_->task_runner_, event_channel, uuid)); base_->peerconnection_observers_[uuid] = std::move(observer); @@ -1118,9 +1119,10 @@ FlutterPeerConnectionObserver::FlutterPeerConnectionObserver( FlutterWebRTCBase* base, scoped_refptr peerconnection, BinaryMessenger* messenger, + TaskRunner* task_runner, const std::string& channel_name, std::string& peerConnectionId) - : event_channel_(EventChannelProxy::Create(messenger, channel_name)), + : event_channel_(EventChannelProxy::Create(messenger, task_runner, channel_name)), peerconnection_(peerconnection), base_(base), id_(peerConnectionId) { @@ -1326,6 +1328,7 @@ void FlutterPeerConnectionObserver::OnDataChannel( std::unique_ptr observer( new FlutterRTCDataChannelObserver(data_channel, base_->messenger_, + base_->task_runner_, event_channel)); base_->lock(); diff --git a/common/cpp/src/flutter_video_renderer.cc b/common/cpp/src/flutter_video_renderer.cc index e7e1774a39..77c5dd12c6 100644 --- a/common/cpp/src/flutter_video_renderer.cc +++ b/common/cpp/src/flutter_video_renderer.cc @@ -7,6 +7,7 @@ FlutterVideoRenderer::~FlutterVideoRenderer() {} void FlutterVideoRenderer::initialize( TextureRegistrar* registrar, BinaryMessenger* messenger, + TaskRunner* task_runner, std::unique_ptr texture, int64_t trxture_id) { registrar_ = registrar; @@ -14,7 +15,7 @@ void FlutterVideoRenderer::initialize( texture_id_ = trxture_id; std::string channel_name = "FlutterWebRTC/Texture" + std::to_string(texture_id_); - event_channel_ = EventChannelProxy::Create(messenger, channel_name); + event_channel_ = EventChannelProxy::Create(messenger, task_runner, channel_name); } const FlutterDesktopPixelBuffer* FlutterVideoRenderer::CopyPixelBuffer( @@ -121,7 +122,7 @@ void FlutterVideoRendererManager::CreateVideoRendererTexture( })); auto texture_id = base_->textures_->RegisterTexture(textureVariant.get()); - texture->initialize(base_->textures_, base_->messenger_, + texture->initialize(base_->textures_, base_->messenger_, base_->task_runner_, std::move(textureVariant), texture_id); renderers_[texture_id] = texture; EncodableMap params; diff --git a/common/cpp/src/flutter_webrtc.cc b/common/cpp/src/flutter_webrtc.cc index 77cddc1bd4..a402e47ed9 100644 --- a/common/cpp/src/flutter_webrtc.cc +++ b/common/cpp/src/flutter_webrtc.cc @@ -6,7 +6,8 @@ namespace flutter_webrtc_plugin { FlutterWebRTC::FlutterWebRTC(FlutterWebRTCPlugin* plugin) : FlutterWebRTCBase::FlutterWebRTCBase(plugin->messenger(), - plugin->textures()), + plugin->textures(), + plugin->task_runner()), FlutterVideoRendererManager::FlutterVideoRendererManager(this), FlutterMediaStream::FlutterMediaStream(this), FlutterPeerConnection::FlutterPeerConnection(this), @@ -351,6 +352,29 @@ void FlutterWebRTC::HandleMethodCall( return; } DataChannelSend(data_channel, type, data, std::move(result)); + } else if (method_call.method_name().compare("dataChannelGetBufferedAmount") == 0) { + if (!method_call.arguments()) { + result->Error("Bad Arguments", "Null constraints arguments received"); + return; + } + const EncodableMap params = + GetValue(*method_call.arguments()); + const std::string peerConnectionId = findString(params, "peerConnectionId"); + RTCPeerConnection* pc = PeerConnectionForId(peerConnectionId); + if (pc == nullptr) { + result->Error("dataChannelGetBufferedAmountFailed", + "dataChannelGetBufferedAmount() peerConnection is null"); + return; + } + + const std::string dataChannelId = findString(params, "dataChannelId"); + RTCDataChannel* data_channel = DataChannelForId(dataChannelId); + if (data_channel == nullptr) { + result->Error("dataChannelGetBufferedAmountFailed", + "dataChannelGetBufferedAmount() data_channel is null"); + return; + } + DataChannelGetBufferedAmount(data_channel, std::move(result)); } else if (method_call.method_name().compare("dataChannelClose") == 0) { if (!method_call.arguments()) { result->Error("Bad Arguments", "Null constraints arguments received"); diff --git a/common/cpp/src/flutter_webrtc_base.cc b/common/cpp/src/flutter_webrtc_base.cc index 901ba384eb..a8c184ba15 100644 --- a/common/cpp/src/flutter_webrtc_base.cc +++ b/common/cpp/src/flutter_webrtc_base.cc @@ -8,14 +8,15 @@ namespace flutter_webrtc_plugin { const char* kEventChannelName = "FlutterWebRTC.Event"; FlutterWebRTCBase::FlutterWebRTCBase(BinaryMessenger* messenger, - TextureRegistrar* textures) - : messenger_(messenger), textures_(textures) { + TextureRegistrar* textures, + TaskRunner *task_runner) + : messenger_(messenger), task_runner_(task_runner), textures_(textures) { LibWebRTC::Initialize(); factory_ = LibWebRTC::CreateRTCPeerConnectionFactory(); audio_device_ = factory_->GetAudioDevice(); video_device_ = factory_->GetVideoDevice(); desktop_device_ = factory_->GetDesktopDevice(); - event_channel_ = EventChannelProxy::Create(messenger_, kEventChannelName); + event_channel_ = EventChannelProxy::Create(messenger_, task_runner_, kEventChannelName); } FlutterWebRTCBase::~FlutterWebRTCBase() { diff --git a/common/darwin/Classes/FlutterRTCAudioSink-Interface.h b/common/darwin/Classes/FlutterRTCAudioSink-Interface.h new file mode 100644 index 0000000000..8a0352333d --- /dev/null +++ b/common/darwin/Classes/FlutterRTCAudioSink-Interface.h @@ -0,0 +1,6 @@ +void RTCAudioSinkCallback (void *object, + const void *audio_data, + int bits_per_sample, + int sample_rate, + size_t number_of_channels, + size_t number_of_frames); diff --git a/common/darwin/Classes/FlutterRTCAudioSink.h b/common/darwin/Classes/FlutterRTCAudioSink.h new file mode 100644 index 0000000000..34cf46669c --- /dev/null +++ b/common/darwin/Classes/FlutterRTCAudioSink.h @@ -0,0 +1,14 @@ +#import +#import +#import + +@interface FlutterRTCAudioSink : NSObject + +@property (nonatomic, copy) void (^bufferCallback)(CMSampleBufferRef); +@property (nonatomic) CMAudioFormatDescriptionRef format; + +- (instancetype) initWithAudioTrack:(RTCAudioTrack*)audio; + +- (void) close; + +@end diff --git a/common/darwin/Classes/FlutterRTCAudioSink.mm b/common/darwin/Classes/FlutterRTCAudioSink.mm new file mode 100644 index 0000000000..4fb575b398 --- /dev/null +++ b/common/darwin/Classes/FlutterRTCAudioSink.mm @@ -0,0 +1,67 @@ +#import +#import "FlutterRTCAudioSink.h" +#import "RTCAudioSource+Private.h" +#include "media_stream_interface.h" +#include "audio_sink_bridge.cpp" + +@implementation FlutterRTCAudioSink { + AudioSinkBridge *_bridge; + webrtc::AudioSourceInterface* _audioSource; +} + +- (instancetype) initWithAudioTrack:(RTCAudioTrack* )audio { + self = [super init]; + rtc::scoped_refptr audioSourcePtr = audio.source.nativeAudioSource; + _audioSource = audioSourcePtr.get(); + _bridge = new AudioSinkBridge((void*)CFBridgingRetain(self)); + _audioSource->AddSink(_bridge); + return self; +} + +- (void) close { + _audioSource->RemoveSink(_bridge); + delete _bridge; + _bridge = nil; + _audioSource = nil; +} + +void RTCAudioSinkCallback (void *object, const void *audio_data, int bits_per_sample, int sample_rate, size_t number_of_channels, size_t number_of_frames) +{ + AudioBufferList audioBufferList; + AudioBuffer audioBuffer; + audioBuffer.mData = (void*) audio_data; + audioBuffer.mDataByteSize = bits_per_sample / 8 * number_of_channels * number_of_frames; + audioBuffer.mNumberChannels = number_of_channels; + audioBufferList.mNumberBuffers = 1; + audioBufferList.mBuffers[0] = audioBuffer; + AudioStreamBasicDescription audioDescription; + audioDescription.mBytesPerFrame = bits_per_sample / 8 * number_of_channels; + audioDescription.mBitsPerChannel = bits_per_sample; + audioDescription.mBytesPerPacket = bits_per_sample / 8 * number_of_channels; + audioDescription.mChannelsPerFrame = number_of_channels; + audioDescription.mFormatID = kAudioFormatLinearPCM; + audioDescription.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsPacked; + audioDescription.mFramesPerPacket = 1; + audioDescription.mReserved = 0; + audioDescription.mSampleRate = sample_rate; + CMAudioFormatDescriptionRef formatDesc; + CMAudioFormatDescriptionCreate(kCFAllocatorDefault, &audioDescription, 0, nil, 0, nil, nil, &formatDesc); + CMSampleBufferRef buffer; + CMSampleTimingInfo timing; + timing.decodeTimeStamp = kCMTimeInvalid; + timing.presentationTimeStamp = CMTimeMake(0, sample_rate); + timing.duration = CMTimeMake(1, sample_rate); + CMSampleBufferCreate(kCFAllocatorDefault, nil, false, nil, nil, formatDesc, number_of_frames * number_of_channels, 1, &timing, 0, nil, &buffer); + CMSampleBufferSetDataBufferFromAudioBufferList(buffer, kCFAllocatorDefault, kCFAllocatorDefault, 0, &audioBufferList); + @autoreleasepool { + FlutterRTCAudioSink* sink = (__bridge FlutterRTCAudioSink*)(object); + sink.format = formatDesc; + if (sink.bufferCallback != nil) { + sink.bufferCallback(buffer); + } else { + NSLog(@"Buffer callback is nil"); + } + } +} + +@end diff --git a/common/darwin/Classes/FlutterRTCDataChannel.h b/common/darwin/Classes/FlutterRTCDataChannel.h index 96f4b5b86a..2b1d685274 100644 --- a/common/darwin/Classes/FlutterRTCDataChannel.h +++ b/common/darwin/Classes/FlutterRTCDataChannel.h @@ -24,4 +24,7 @@ data:(nonnull NSString*)data type:(nonnull NSString*)type; +- (void)dataChannelGetBufferedAmount:(nonnull NSString*)peerConnectionId + dataChannelId:(nonnull NSString*)dataChannelId + result:(nonnull FlutterResult)result; @end diff --git a/common/darwin/Classes/FlutterRTCDataChannel.m b/common/darwin/Classes/FlutterRTCDataChannel.m index 03003fcca5..67e1083b2f 100644 --- a/common/darwin/Classes/FlutterRTCDataChannel.m +++ b/common/darwin/Classes/FlutterRTCDataChannel.m @@ -118,6 +118,21 @@ - (void)dataChannelClose:(nonnull NSString*)peerConnectionId } } +- (void)dataChannelGetBufferedAmount:(nonnull NSString*)peerConnectionId + dataChannelId:(nonnull NSString*)dataChannelId + result:(nonnull FlutterResult)result { + RTCPeerConnection* peerConnection = self.peerConnections[peerConnectionId]; + RTCDataChannel* dataChannel = peerConnection.dataChannels[dataChannelId]; + if(dataChannel == NULL || dataChannel.readyState != RTCDataChannelStateOpen) { + result([FlutterError + errorWithCode:[NSString stringWithFormat:@"%@Failed", @"dataChannelGetBufferedAmount"] + message:[NSString stringWithFormat:@"Error: dataChannel not found or not opened!"] + details:nil]); + } else { + result(@{@"bufferedAmount": @(dataChannel.bufferedAmount)}); + } +} + - (void)dataChannelSend:(nonnull NSString*)peerConnectionId dataChannelId:(nonnull NSString*)dataChannelId data:(id)data diff --git a/common/darwin/Classes/FlutterRTCDesktopCapturer.m b/common/darwin/Classes/FlutterRTCDesktopCapturer.m index b719ee3e8c..fd88a8b689 100644 --- a/common/darwin/Classes/FlutterRTCDesktopCapturer.m +++ b/common/darwin/Classes/FlutterRTCDesktopCapturer.m @@ -28,11 +28,16 @@ - (void)getDisplayMedia:(NSDictionary*)constraints result:(FlutterResult)result #if TARGET_OS_IPHONE BOOL useBroadcastExtension = false; + BOOL presentBroadcastPicker = false; + id videoConstraints = constraints[@"video"]; if ([videoConstraints isKindOfClass:[NSDictionary class]]) { // constraints.video.deviceId useBroadcastExtension = - [((NSDictionary*)videoConstraints)[@"deviceId"] isEqualToString:@"broadcast"]; + [((NSDictionary*)videoConstraints)[@"deviceId"] hasPrefix:@"broadcast"]; + presentBroadcastPicker = + useBroadcastExtension && + ![((NSDictionary*)videoConstraints)[@"deviceId"] hasSuffix:@"-manual"]; } id screenCapturer; @@ -52,7 +57,7 @@ - (void)getDisplayMedia:(NSDictionary*)constraints result:(FlutterResult)result [screenCapturer stopCaptureWithCompletionHandler:handler]; }; - if (useBroadcastExtension) { + if (presentBroadcastPicker) { NSString* extension = [[[NSBundle mainBundle] infoDictionary] valueForKey:kRTCScreenSharingExtension]; @@ -112,7 +117,7 @@ - (void)getDisplayMedia:(NSDictionary*)constraints result:(FlutterResult)result } RTCDesktopCapturer* desktopCapturer; RTCDesktopSource* source = nil; - + if (useDefaultScreen) { desktopCapturer = [[RTCDesktopCapturer alloc] initWithDefaultScreen:self captureDelegate:videoProcessingAdapter]; @@ -137,13 +142,13 @@ - (void)getDisplayMedia:(NSDictionary*)constraints result:(FlutterResult)result handler(); }; #endif - + RTCVideoTrack* videoTrack = [self.peerConnectionFactory videoTrackWithSource:videoSource trackId:trackUUID]; [mediaStream addVideoTrack:videoTrack]; LocalVideoTrack *localVideoTrack = [[LocalVideoTrack alloc] initWithTrack:videoTrack videoProcessing:videoProcessingAdapter]; - + [self.localTracks setObject:localVideoTrack forKey:trackUUID]; NSMutableArray* audioTracks = [NSMutableArray array]; diff --git a/common/darwin/Classes/FlutterRTCFrameCapturer.h b/common/darwin/Classes/FlutterRTCFrameCapturer.h index ba4c801d92..7cc0ff28c2 100644 --- a/common/darwin/Classes/FlutterRTCFrameCapturer.h +++ b/common/darwin/Classes/FlutterRTCFrameCapturer.h @@ -12,4 +12,6 @@ toPath:(NSString*)path result:(FlutterResult)result; ++ (CVPixelBufferRef)convertToCVPixelBuffer:(RTCVideoFrame *) frame; + @end diff --git a/common/darwin/Classes/FlutterRTCFrameCapturer.m b/common/darwin/Classes/FlutterRTCFrameCapturer.m index baf12de1e0..fe748b1223 100644 --- a/common/darwin/Classes/FlutterRTCFrameCapturer.m +++ b/common/darwin/Classes/FlutterRTCFrameCapturer.m @@ -41,7 +41,7 @@ - (void)renderFrame:(nullable RTCVideoFrame*)frame { CVPixelBufferRef pixelBufferRef; bool shouldRelease; if (![buffer isKindOfClass:[RTCCVPixelBuffer class]]) { - pixelBufferRef = [self convertToCVPixelBuffer:frame]; + pixelBufferRef = [FlutterRTCFrameCapturer convertToCVPixelBuffer:frame]; shouldRelease = true; } else { pixelBufferRef = ((RTCCVPixelBuffer*)buffer).pixelBuffer; @@ -108,7 +108,7 @@ - (void)renderFrame:(nullable RTCVideoFrame*)frame { }); } -- (CVPixelBufferRef)convertToCVPixelBuffer:(RTCVideoFrame*)frame { ++ (CVPixelBufferRef)convertToCVPixelBuffer:(RTCVideoFrame*)frame { id i420Buffer = [frame.buffer toI420]; CVPixelBufferRef outputPixelBuffer; size_t w = (size_t)roundf(i420Buffer.width); diff --git a/common/darwin/Classes/FlutterRTCMediaRecorder.h b/common/darwin/Classes/FlutterRTCMediaRecorder.h new file mode 100644 index 0000000000..eac82e8b4d --- /dev/null +++ b/common/darwin/Classes/FlutterRTCMediaRecorder.h @@ -0,0 +1,24 @@ +#if TARGET_OS_IPHONE +#import +#elif TARGET_OS_OSX +#import +#endif +#import + +@import Foundation; +@import AVFoundation; + +@interface FlutterRTCMediaRecorder : NSObject + +@property(nonatomic, strong) RTCVideoTrack* _Nullable videoTrack; +@property(nonatomic, strong) NSURL* _Nonnull output; +@property(nonatomic, strong) AVAssetWriter* _Nullable assetWriter; +@property(nonatomic, strong) AVAssetWriterInput* _Nullable writerInput; + +- (instancetype _Nonnull)initWithVideoTrack:(RTCVideoTrack* _Nullable)video + audioTrack:(RTCAudioTrack* _Nullable)audio + outputFile:(NSURL* _Nonnull)out; + +- (void)stop:(_Nonnull FlutterResult)result; + +@end diff --git a/common/darwin/Classes/FlutterRTCMediaRecorder.m b/common/darwin/Classes/FlutterRTCMediaRecorder.m new file mode 100644 index 0000000000..7661aae519 --- /dev/null +++ b/common/darwin/Classes/FlutterRTCMediaRecorder.m @@ -0,0 +1,168 @@ +#import +#import "FlutterRTCMediaRecorder.h" +#import "FlutterRTCAudioSink.h" +#import "FlutterRTCFrameCapturer.h" + +@import AVFoundation; + +@implementation FlutterRTCMediaRecorder { + int framesCount; + bool isInitialized; + CGSize _renderSize; + FlutterRTCAudioSink* _audioSink; + AVAssetWriterInput* _audioWriter; + int64_t _startTime; +} + +- (instancetype)initWithVideoTrack:(RTCVideoTrack *)video audioTrack:(RTCAudioTrack *)audio outputFile:(NSURL *)out { + self = [super init]; + isInitialized = false; + self.videoTrack = video; + self.output = out; + [video addRenderer:self]; + framesCount = 0; + if (audio != nil) + _audioSink = [[FlutterRTCAudioSink alloc] initWithAudioTrack:audio]; + else + NSLog(@"Audio track is nil"); + _startTime = -1; + return self; +} + +- (void)initialize:(CGSize)size { + _renderSize = size; + NSDictionary *videoSettings = @{ + AVVideoCompressionPropertiesKey: @{AVVideoAverageBitRateKey: @(6*1024*1024)}, + AVVideoCodecKey: AVVideoCodecTypeH264, + AVVideoHeightKey: @(size.height), + AVVideoWidthKey: @(size.width), + }; + self.writerInput = [[AVAssetWriterInput alloc] + initWithMediaType:AVMediaTypeVideo + outputSettings:videoSettings]; + self.writerInput.expectsMediaDataInRealTime = true; + self.writerInput.mediaTimeScale = 30; + + if (_audioSink != nil) { + AudioChannelLayout acl; + bzero(&acl, sizeof(acl)); + acl.mChannelLayoutTag = kAudioChannelLayoutTag_Mono; + NSDictionary* audioSettings = @{ + AVFormatIDKey: [NSNumber numberWithInt: kAudioFormatMPEG4AAC], + AVNumberOfChannelsKey: @1, + AVSampleRateKey: @44100.0, + AVChannelLayoutKey: [NSData dataWithBytes:&acl length:sizeof(AudioChannelLayout)], + AVEncoderBitRateKey: @64000, + }; + _audioWriter = [[AVAssetWriterInput alloc] + initWithMediaType:AVMediaTypeAudio + outputSettings:audioSettings + sourceFormatHint:_audioSink.format]; + _audioWriter.expectsMediaDataInRealTime = true; + } + + NSError *error; + self.assetWriter = [[AVAssetWriter alloc] + initWithURL:self.output + fileType:AVFileTypeMPEG4 + error:&error]; + if (error != nil) + NSLog(@"%@",[error localizedDescription]); + self.assetWriter.shouldOptimizeForNetworkUse = true; + [self.assetWriter addInput:self.writerInput]; + if (_audioWriter != nil) { + [self.assetWriter addInput:_audioWriter]; + _audioSink.bufferCallback = ^(CMSampleBufferRef buffer){ + if (self->_audioWriter.readyForMoreMediaData) { + if ([self->_audioWriter appendSampleBuffer:buffer]) + NSLog(@"Audio frame appended"); + else + NSLog(@"Audioframe not appended %@", self.assetWriter.error); + } + }; + } + [self.assetWriter startWriting]; + [self.assetWriter startSessionAtSourceTime:kCMTimeZero]; + + isInitialized = true; +} + +- (void)setSize:(CGSize)size { +} + +- (void)renderFrame:(nullable RTCVideoFrame *)frame { + if (frame == nil) { + return; + } + if (!isInitialized) { + [self initialize:CGSizeMake((CGFloat) frame.width, (CGFloat) frame.height)]; + } + if (!self.writerInput.readyForMoreMediaData) { + NSLog(@"Drop frame, not ready"); + return; + } + id buffer = frame.buffer; + CVPixelBufferRef pixelBufferRef; + BOOL shouldRelease = false; + if ([buffer isKindOfClass:[RTCCVPixelBuffer class]]) { + pixelBufferRef = ((RTCCVPixelBuffer *) buffer).pixelBuffer; + } else { + pixelBufferRef = [FlutterRTCFrameCapturer convertToCVPixelBuffer:frame]; + shouldRelease = true; + } + CMVideoFormatDescriptionRef formatDescription; + OSStatus status = CMVideoFormatDescriptionCreateForImageBuffer(kCFAllocatorDefault, pixelBufferRef, &formatDescription); + + CMSampleTimingInfo timingInfo; + + timingInfo.decodeTimeStamp = kCMTimeInvalid; + if (_startTime == -1) { + _startTime = frame.timeStampNs / 1000; + } + int64_t frameTime = (frame.timeStampNs / 1000) - _startTime; + timingInfo.presentationTimeStamp = CMTimeMake(frameTime, 1000000); + framesCount++; + + CMSampleBufferRef outBuffer; + + status = CMSampleBufferCreateReadyWithImageBuffer( + kCFAllocatorDefault, + pixelBufferRef, + formatDescription, + &timingInfo, + &outBuffer + ); + + if (![self.writerInput appendSampleBuffer:outBuffer]) { + NSLog(@"Frame not appended %@", self.assetWriter.error); + } + #if TARGET_OS_IPHONE + if (shouldRelease) { + CVPixelBufferRelease(pixelBufferRef); + } + #endif +} + +- (void)stop:(FlutterResult _Nonnull) result { + if (_audioSink != nil) { + _audioSink.bufferCallback = nil; + [_audioSink close]; + } + [self.videoTrack removeRenderer:self]; + [self.writerInput markAsFinished]; + [_audioWriter markAsFinished]; + dispatch_async(dispatch_get_main_queue(), ^{ + [self.assetWriter finishWritingWithCompletionHandler:^{ + NSError* error = self.assetWriter.error; + if (error == nil) { + result(nil); + } else { + result([FlutterError errorWithCode:@"Failed to save recording" + message:[error localizedDescription] + details:nil]); + } + }]; + }); +} + +@end diff --git a/common/darwin/Classes/FlutterWebRTCPlugin.h b/common/darwin/Classes/FlutterWebRTCPlugin.h index bd2ae35c5b..ee39d6345f 100644 --- a/common/darwin/Classes/FlutterWebRTCPlugin.h +++ b/common/darwin/Classes/FlutterWebRTCPlugin.h @@ -10,6 +10,7 @@ @class FlutterRTCVideoRenderer; @class FlutterRTCFrameCapturer; +@class FlutterRTCMediaRecorder; @class AudioManager; void postEvent(FlutterEventSink _Nonnull sink, id _Nullable event); @@ -29,18 +30,25 @@ typedef void (^CapturerStopHandler)(CompletionHandler _Nonnull handler); > @property(nonatomic, strong) RTCPeerConnectionFactory* _Nullable peerConnectionFactory; -@property(nonatomic, strong) NSMutableDictionary* _Nullable peerConnections; -@property(nonatomic, strong) NSMutableDictionary* _Nullable localStreams; +@property(nonatomic, strong) + NSMutableDictionary* _Nullable peerConnections; +@property(nonatomic, strong) + NSMutableDictionary* _Nullable localStreams; @property(nonatomic, strong) NSMutableDictionary>* _Nullable localTracks; -@property(nonatomic, strong) NSMutableDictionary* _Nullable renders; +@property(nonatomic, strong) + NSMutableDictionary* _Nullable renders; +@property(nonatomic, strong) NSMutableDictionary* recorders; @property(nonatomic, strong) NSMutableDictionary* _Nullable videoCapturerStopHandlers; -@property(nonatomic, strong) NSMutableDictionary* _Nullable frameCryptors; -@property(nonatomic, strong) NSMutableDictionary* _Nullable keyProviders; +@property(nonatomic, strong) + NSMutableDictionary* _Nullable frameCryptors; +@property(nonatomic, strong) + NSMutableDictionary* _Nullable keyProviders; #if TARGET_OS_IPHONE -@property(nonatomic, retain) UIViewController* _Nullable viewController; /*for broadcast or ReplayKit */ +@property(nonatomic, retain) + UIViewController* _Nullable viewController; /*for broadcast or ReplayKit */ #endif @property(nonatomic, strong) FlutterEventSink _Nullable eventSink; @@ -49,8 +57,8 @@ typedef void (^CapturerStopHandler)(CompletionHandler _Nonnull handler); @property(nonatomic, strong) FlutterRTCFrameCapturer* _Nullable frameCapturer; @property(nonatomic, strong) AVAudioSessionPort _Nullable preferredInput; -@property(nonatomic, strong) NSString * _Nonnull focusMode; -@property(nonatomic, strong) NSString * _Nonnull exposureMode; +@property(nonatomic, strong) NSString* _Nonnull focusMode; +@property(nonatomic, strong) NSString* _Nonnull exposureMode; @property(nonatomic) BOOL _usingFrontCamera; @property(nonatomic) NSInteger _lastTargetWidth; @@ -59,10 +67,15 @@ typedef void (^CapturerStopHandler)(CompletionHandler _Nonnull handler); @property(nonatomic, strong) AudioManager* _Nullable audioManager; -- (RTCMediaStream* _Nullable)streamForId:(NSString* _Nonnull)streamId peerConnectionId:(NSString* _Nullable)peerConnectionId; -- (RTCMediaStreamTrack* _Nullable)trackForId:(NSString* _Nonnull)trackId peerConnectionId:(NSString* _Nullable)peerConnectionId; -- (RTCRtpTransceiver* _Nullable)getRtpTransceiverById:(RTCPeerConnection* _Nonnull)peerConnection Id:(NSString* _Nullable)Id; -- (NSDictionary* _Nullable)mediaStreamToMap:(RTCMediaStream* _Nonnull)stream ownerTag:(NSString* _Nullable)ownerTag; +- (RTCMediaStream* _Nullable)streamForId:(NSString* _Nonnull)streamId + peerConnectionId:(NSString* _Nullable)peerConnectionId; +- (RTCMediaStreamTrack* _Nullable)trackForId:(NSString* _Nonnull)trackId + peerConnectionId:(NSString* _Nullable)peerConnectionId; +- (NSString*)audioTrackIdForVideoTrackId:(NSString*)videoTrackId; +- (RTCRtpTransceiver* _Nullable)getRtpTransceiverById:(RTCPeerConnection* _Nonnull)peerConnection + Id:(NSString* _Nullable)Id; +- (NSDictionary* _Nullable)mediaStreamToMap:(RTCMediaStream* _Nonnull)stream + ownerTag:(NSString* _Nullable)ownerTag; - (NSDictionary* _Nullable)mediaTrackToMap:(RTCMediaStreamTrack* _Nonnull)track; - (NSDictionary* _Nullable)receiverToMap:(RTCRtpReceiver* _Nonnull)receiver; - (NSDictionary* _Nullable)transceiverToMap:(RTCRtpTransceiver* _Nonnull)transceiver; @@ -73,9 +86,11 @@ typedef void (^CapturerStopHandler)(CompletionHandler _Nonnull handler); - (void)ensureAudioSession; - (void)deactiveRtcAudioSession; -- (RTCRtpReceiver* _Nullable)getRtpReceiverById:(RTCPeerConnection* _Nonnull)peerConnection Id:(NSString* _Nonnull)Id; -- (RTCRtpSender* _Nullable)getRtpSenderById:(RTCPeerConnection* _Nonnull)peerConnection Id:(NSString* _Nonnull)Id; +- (RTCRtpReceiver* _Nullable)getRtpReceiverById:(RTCPeerConnection* _Nonnull)peerConnection + Id:(NSString* _Nonnull)Id; +- (RTCRtpSender* _Nullable)getRtpSenderById:(RTCPeerConnection* _Nonnull)peerConnection + Id:(NSString* _Nonnull)Id; -+ (FlutterWebRTCPlugin * _Nullable)sharedSingleton; ++ (FlutterWebRTCPlugin* _Nullable)sharedSingleton; @end diff --git a/common/darwin/Classes/FlutterWebRTCPlugin.m b/common/darwin/Classes/FlutterWebRTCPlugin.m index 7e4867417e..73f01aebe1 100644 --- a/common/darwin/Classes/FlutterWebRTCPlugin.m +++ b/common/darwin/Classes/FlutterWebRTCPlugin.m @@ -8,6 +8,7 @@ #import "FlutterRTCVideoRenderer.h" #import "FlutterRTCFrameCryptor.h" #if TARGET_OS_IPHONE +#import "FlutterRTCMediaRecorder.h" #import "FlutterRTCVideoPlatformViewFactory.h" #import "FlutterRTCVideoPlatformViewController.h" #endif @@ -184,6 +185,7 @@ - (instancetype)initWithChannel:(FlutterMethodChannel*)channel self.frameCryptors = [NSMutableDictionary new]; self.keyProviders = [NSMutableDictionary new]; self.videoCapturerStopHandlers = [NSMutableDictionary new]; + self.recorders = [NSMutableDictionary new]; #if TARGET_OS_IPHONE self.focusMode = @"locked"; self.exposureMode = @"locked"; @@ -570,7 +572,14 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { [self dataChannelSend:peerConnectionId dataChannelId:dataChannelId data:data type:type]; result(nil); - } else if ([@"dataChannelClose" isEqualToString:call.method]) { + } else if ([@"dataChannelGetBufferedAmount" isEqualToString:call.method]) { + NSDictionary* argsMap = call.arguments; + NSString* peerConnectionId = argsMap[@"peerConnectionId"]; + NSString* dataChannelId = argsMap[@"dataChannelId"]; + + [self dataChannelGetBufferedAmount:peerConnectionId dataChannelId:dataChannelId result:result]; + } + else if ([@"dataChannelClose" isEqualToString:call.method]) { NSDictionary* argsMap = call.arguments; NSString* peerConnectionId = argsMap[@"peerConnectionId"]; NSString* dataChannelId = argsMap[@"dataChannelId"]; @@ -1498,7 +1507,41 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { message:[NSString stringWithFormat:@"Error: peerConnection not found!"] details:nil]); } - } else { +#if TARGET_OS_IOS + } else if ([@"startRecordToFile" isEqualToString:call.method]){ + + NSDictionary* argsMap = call.arguments; + NSNumber* recorderId = argsMap[@"recorderId"]; + NSString* path = argsMap[@"path"]; + NSString* trackId = argsMap[@"videoTrackId"]; + NSString* peerConnectionId = argsMap[@"peerConnectionId"]; + NSString* audioTrackId = [self audioTrackIdForVideoTrackId:trackId]; + + RTCMediaStreamTrack *track = [self trackForId:trackId peerConnectionId:peerConnectionId]; + RTCMediaStreamTrack *audioTrack = [self trackForId:audioTrackId peerConnectionId:peerConnectionId]; + if (track != nil && [track isKindOfClass:[RTCVideoTrack class]]) { + NSURL* pathUrl = [NSURL fileURLWithPath:path]; + self.recorders[recorderId] = [[FlutterRTCMediaRecorder alloc] + initWithVideoTrack:(RTCVideoTrack *)track + audioTrack:(RTCAudioTrack *)audioTrack + outputFile:pathUrl + ]; + } + result(nil); + } else if ([@"stopRecordToFile" isEqualToString:call.method]) { + NSDictionary* argsMap = call.arguments; + NSNumber* recorderId = argsMap[@"recorderId"]; + FlutterRTCMediaRecorder* recorder = self.recorders[recorderId]; + if (recorder != nil) { + [recorder stop:result]; + [self.recorders removeObjectForKey:recorderId]; + } else { + result([FlutterError errorWithCode:[NSString stringWithFormat:@"%@ failed",call.method] + message:[NSString stringWithFormat:@"Error: recorder with id %@ not found!",recorderId] + details:nil]); + } +#endif + } else { [self handleFrameCryptorMethodCall:call result:result]; } } @@ -1622,6 +1665,38 @@ - (RTCMediaStreamTrack* _Nullable)remoteTrackForId:(NSString* _Nonnull)trackId { return mediaStreamTrack; } +- (NSString *)audioTrackIdForVideoTrackId:(NSString *)videoTrackId { + NSString *audioTrackId = nil; + + // Iterate through all peerConnections + for (NSString *peerConnectionId in self.peerConnections) { + RTCPeerConnection *peerConnection = self.peerConnections[peerConnectionId]; + + // Iterate through the receivers to find the video track + for (RTCRtpReceiver *receiver in peerConnection.receivers) { + RTCMediaStreamTrack *track = [receiver valueForKey:@"track"]; + if ([track.kind isEqualToString:@"video"] && [track.trackId isEqualToString:videoTrackId]) { + // Found the video track, now look for the audio track in the same peerConnection + for (RTCRtpReceiver *audioReceiver in peerConnection.receivers) { + RTCMediaStreamTrack *audioTrack = [audioReceiver valueForKey:@"track"]; + if ([audioTrack.kind isEqualToString:@"audio"]) { + audioTrackId = audioTrack.trackId; + break; + } + } + break; + } + } + + // If the audioTrackId is found, break out of the loop + if (audioTrackId != nil) { + break; + } + } + + return audioTrackId; +} + - (RTCMediaStreamTrack*)trackForId:(NSString*)trackId peerConnectionId:(NSString*)peerConnectionId { id track = _localTracks[trackId]; RTCMediaStreamTrack *mediaStreamTrack = nil; diff --git a/common/darwin/Classes/RTCAudioSource+Private.h b/common/darwin/Classes/RTCAudioSource+Private.h new file mode 100644 index 0000000000..6e45d12fbf --- /dev/null +++ b/common/darwin/Classes/RTCAudioSource+Private.h @@ -0,0 +1,14 @@ +#ifdef __cplusplus +#import "WebRTC/RTCAudioSource.h" +#include "media_stream_interface.h" + +@interface RTCAudioSource () + +/** + * The AudioSourceInterface object passed to this RTCAudioSource during + * construction. + */ +@property(nonatomic, readonly) rtc::scoped_refptr nativeAudioSource; + +@end +#endif diff --git a/common/darwin/Classes/audio_sink_bridge.cpp b/common/darwin/Classes/audio_sink_bridge.cpp new file mode 100644 index 0000000000..16ce8fa841 --- /dev/null +++ b/common/darwin/Classes/audio_sink_bridge.cpp @@ -0,0 +1,27 @@ +#include "media_stream_interface.h" +#include "FlutterRTCAudioSink-Interface.h" + +class AudioSinkBridge : public webrtc::AudioTrackSinkInterface { +private: + void* sink; + +public: + AudioSinkBridge(void* sink1) { + sink = sink1; + } + void OnData(const void* audio_data, + int bits_per_sample, + int sample_rate, + size_t number_of_channels, + size_t number_of_frames) override + { + RTCAudioSinkCallback(sink, + audio_data, + bits_per_sample, + sample_rate, + number_of_channels, + number_of_frames + ); + }; + int NumPreferredChannels() const override { return 1; } +}; diff --git a/common/darwin/Classes/media_stream_interface.h b/common/darwin/Classes/media_stream_interface.h new file mode 100644 index 0000000000..e25553f9fa --- /dev/null +++ b/common/darwin/Classes/media_stream_interface.h @@ -0,0 +1,199 @@ +/* + * Copyright 2012 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +/// Source https://webrtc.googlesource.com/src/+/master/api/media_stream_interface.h + +#ifdef __cplusplus +#ifndef API_MEDIA_STREAM_INTERFACE_H_ +#define API_MEDIA_STREAM_INTERFACE_H_ + +#include +#include +#include +#include +#include + +namespace webrtc { + + // Generic observer interface. + class ObserverInterface { + public: + virtual void OnChanged() = 0; + protected: + virtual ~ObserverInterface() {} + }; + class NotifierInterface { + public: + virtual void RegisterObserver(ObserverInterface* observer) = 0; + virtual void UnregisterObserver(ObserverInterface* observer) = 0; + virtual ~NotifierInterface() {} + }; + + enum class RefCountReleaseStatus { kDroppedLastRef, kOtherRefsRemained }; + // Interfaces where refcounting is part of the public api should + // inherit this abstract interface. The implementation of these + // methods is usually provided by the RefCountedObject template class, + // applied as a leaf in the inheritance tree. + class RefCountInterface { + public: + virtual void AddRef() const = 0; + virtual RefCountReleaseStatus Release() const = 0; + // Non-public destructor, because Release() has exclusive responsibility for + // destroying the object. + protected: + virtual ~RefCountInterface() {} + }; + + // Base class for sources. A MediaStreamTrack has an underlying source that + // provides media. A source can be shared by multiple tracks. + class MediaSourceInterface : public RefCountInterface, + public NotifierInterface { + public: + enum SourceState { kInitializing, kLive, kEnded, kMuted }; + virtual SourceState state() const = 0; + virtual bool remote() const = 0; + protected: + ~MediaSourceInterface() override = default; + }; + + // Interface for receiving audio data from a AudioTrack. + class AudioTrackSinkInterface { + public: + virtual void OnData(const void* audio_data, + int bits_per_sample, + int sample_rate, + size_t number_of_channels, + size_t number_of_frames) { + + }; + virtual void OnData(const void* audio_data, + int bits_per_sample, + int sample_rate, + size_t number_of_channels, + size_t number_of_frames, + void* absolute_capture_timestamp_ms) { + // TODO(bugs.webrtc.org/10739): Deprecate the old OnData and make this one + // pure virtual. + return OnData(audio_data, bits_per_sample, sample_rate, number_of_channels, + number_of_frames); + } + virtual int NumPreferredChannels() const { return -1; } + protected: + virtual ~AudioTrackSinkInterface() {} + }; + // AudioSourceInterface is a reference counted source used for AudioTracks. + // The same source can be used by multiple AudioTracks. + class AudioSourceInterface : public MediaSourceInterface { + public: + class AudioObserver { + public: + virtual void OnSetVolume(double volume) = 0; + protected: + virtual ~AudioObserver() {} + }; + // TODO(deadbeef): Makes all the interfaces pure virtual after they're + // implemented in chromium. + // Sets the volume of the source. |volume| is in the range of [0, 10]. + // TODO(tommi): This method should be on the track and ideally volume should + // be applied in the track in a way that does not affect clones of the track. + virtual void SetVolume(double volume) {} + // Registers/unregisters observers to the audio source. + virtual void RegisterAudioObserver(AudioObserver* observer) {} + virtual void UnregisterAudioObserver(AudioObserver* observer) {} + // TODO(tommi): Make pure virtual. + virtual void AddSink(AudioTrackSinkInterface* sink) {} + virtual void RemoveSink(AudioTrackSinkInterface* sink) {} + // Returns options for the AudioSource. + // (for some of the settings this approach is broken, e.g. setting + // audio network adaptation on the source is the wrong layer of abstraction). +// virtual const AudioOptions options() const; + }; +} +namespace rtc { + + template + class scoped_refptr { + public: + typedef T element_type; + scoped_refptr() : ptr_(nullptr) {} + scoped_refptr(std::nullptr_t) : ptr_(nullptr) {} // NOLINT(runtime/explicit) + explicit scoped_refptr(T* p) : ptr_(p) { + if (ptr_) + ptr_->AddRef(); + } + scoped_refptr(const scoped_refptr& r) : ptr_(r.ptr_) { + if (ptr_) + ptr_->AddRef(); + } + template + scoped_refptr(const scoped_refptr& r) : ptr_(r.get()) { + if (ptr_) + ptr_->AddRef(); + } + // Move constructors. + scoped_refptr(scoped_refptr&& r) noexcept : ptr_(r.release()) {} + template + scoped_refptr(scoped_refptr&& r) noexcept : ptr_(r.release()) {} + ~scoped_refptr() { + if (ptr_) + ptr_->Release(); + } + T* get() const { return ptr_; } + explicit operator bool() const { return ptr_ != nullptr; } + T& operator*() const { return *ptr_; } + T* operator->() const { return ptr_; } + // Returns the (possibly null) raw pointer, and makes the scoped_refptr hold a + // null pointer, all without touching the reference count of the underlying + // pointed-to object. The object is still reference counted, and the caller of + // release() is now the proud owner of one reference, so it is responsible for + // calling Release() once on the object when no longer using it. + T* release() { + T* retVal = ptr_; + ptr_ = nullptr; + return retVal; + } + scoped_refptr& operator=(T* p) { + // AddRef first so that self assignment should work + if (p) + p->AddRef(); + if (ptr_) + ptr_->Release(); + ptr_ = p; + return *this; + } + scoped_refptr& operator=(const scoped_refptr& r) { + return *this = r.ptr_; + } + template + scoped_refptr& operator=(const scoped_refptr& r) { + return *this = r.get(); + } + scoped_refptr& operator=(scoped_refptr&& r) noexcept { + scoped_refptr(std::move(r)).swap(*this); + return *this; + } + template + scoped_refptr& operator=(scoped_refptr&& r) noexcept { + scoped_refptr(std::move(r)).swap(*this); + return *this; + } + void swap(T** pp) noexcept { + T* p = ptr_; + ptr_ = *pp; + *pp = p; + } + void swap(scoped_refptr& r) noexcept { swap(&r.ptr_); } + protected: + T* ptr_; + }; +}; + +#endif // API_MEDIA_STREAM_INTERFACE_H_ +#endif // __cplusplus diff --git a/elinux/flutter_webrtc_plugin.cc b/elinux/flutter_webrtc_plugin.cc index 9c2c5fd2b6..4e8a36656c 100644 --- a/elinux/flutter_webrtc_plugin.cc +++ b/elinux/flutter_webrtc_plugin.cc @@ -37,6 +37,8 @@ class FlutterWebRTCPluginImpl : public FlutterWebRTCPlugin { TextureRegistrar* textures() { return textures_; } + TaskRunner* task_runner() { return nullptr; } + private: // Creates a plugin that communicates on the given channel. FlutterWebRTCPluginImpl(PluginRegistrar* registrar, diff --git a/example/lib/main.dart b/example/lib/main.dart index 471777a970..64bfc07d0c 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -10,7 +10,7 @@ import 'package:flutter_webrtc_example/src/capture_frame_sample.dart'; import 'src/device_enumeration_sample.dart'; import 'src/get_display_media_sample.dart'; import 'src/get_user_media_sample.dart' - if (dart.library.html) 'src/get_user_media_sample_web.dart'; + if (dart.library.js_interop) 'src/get_user_media_sample_web.dart'; import 'src/loopback_data_channel_sample.dart'; import 'src/loopback_sample_unified_tracks.dart'; import 'src/route_item.dart'; diff --git a/example/lib/src/get_user_media_sample.dart b/example/lib/src/get_user_media_sample.dart index 9fbff0da72..9c2dea81d0 100644 --- a/example/lib/src/get_user_media_sample.dart +++ b/example/lib/src/get_user_media_sample.dart @@ -5,6 +5,7 @@ import 'dart:math'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_webrtc/flutter_webrtc.dart'; +import 'package:gallery_saver_plus/gallery_saver.dart'; import 'package:path_provider/path_provider.dart'; /* @@ -24,6 +25,7 @@ class _GetUserMediaSampleState extends State { bool _isTorchOn = false; bool _isFrontCamera = true; MediaRecorder? _mediaRecorder; + String? _mediaRecorderFilePath; bool get _isRec => _mediaRecorder != null; @@ -101,32 +103,60 @@ class _GetUserMediaSampleState extends State { void _startRecording() async { if (_localStream == null) throw Exception('Stream is not initialized'); - if (Platform.isIOS) { - print('Recording is not available on iOS'); - return; - } // TODO(rostopira): request write storage permission - final storagePath = await getExternalStorageDirectory(); - if (storagePath == null) throw Exception('Can\'t find storagePath'); + final timestamp = DateTime.now().millisecondsSinceEpoch; + + if (!(Platform.isAndroid || Platform.isIOS || Platform.isMacOS)) { + throw 'Unsupported platform'; + } + + final tempDir = await getTemporaryDirectory(); + if (!(await tempDir.exists())) { + await tempDir.create(recursive: true); + } + + _mediaRecorderFilePath = '${tempDir.path}/$timestamp.mp4'; + + if (_mediaRecorderFilePath == null) { + throw Exception('Can\'t find storagePath'); + } - final filePath = storagePath.path + '/webrtc_sample/test.mp4'; - _mediaRecorder = MediaRecorder(); + final file = File(_mediaRecorderFilePath!); + if (await file.exists()) { + await file.delete(); + } + _mediaRecorder = MediaRecorder(albumName: 'FlutterWebRTC'); setState(() {}); final videoTrack = _localStream! .getVideoTracks() .firstWhere((track) => track.kind == 'video'); + await _mediaRecorder!.start( - filePath, + _mediaRecorderFilePath!, videoTrack: videoTrack, + audioChannel: RecorderAudioChannel.OUTPUT, ); } void _stopRecording() async { + if (_mediaRecorderFilePath == null) { + return; + } + + // album name works only for android, for ios use gallerySaver await _mediaRecorder?.stop(); setState(() { _mediaRecorder = null; }); + + // this is only for ios, android already saves to albumName + await GallerySaver.saveVideo( + _mediaRecorderFilePath!, + albumName: 'FlutterWebRTC', + ); + + _mediaRecorderFilePath = null; } void onViewFinderTap(TapDownDetails details, BoxConstraints constraints) { diff --git a/example/lib/src/get_user_media_sample_web.dart b/example/lib/src/get_user_media_sample_web.dart index b8b5b5dfe6..7df81cafad 100644 --- a/example/lib/src/get_user_media_sample_web.dart +++ b/example/lib/src/get_user_media_sample_web.dart @@ -1,11 +1,12 @@ // ignore: uri_does_not_exist import 'dart:core'; -import 'dart:html' as html; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_webrtc/flutter_webrtc.dart'; +import 'package:web/web.dart' as web; + /* * getUserMedia sample */ @@ -115,7 +116,7 @@ class _GetUserMediaSampleState extends State { }); print(objectUrl); // ignore: unsafe_html - html.window.open(objectUrl, '_blank'); + web.window.open(objectUrl, '_blank'); } void _captureFrame() async { diff --git a/example/lib/src/loopback_data_channel_sample.dart b/example/lib/src/loopback_data_channel_sample.dart index 4e94b3030f..ba02873324 100644 --- a/example/lib/src/loopback_data_channel_sample.dart +++ b/example/lib/src/loopback_data_channel_sample.dart @@ -49,12 +49,14 @@ class _DataChannelLoopBackSampleState extends State { _dataChannel2Status += '\ndataChannel2: state: ${state.toString()}'; }); }; - _dataChannel2!.onMessage = (data) { + _dataChannel2!.onMessage = (data) async { + var bufferedAmount = await _dataChannel2!.getBufferedAmount(); setState(() { _dataChannel2Status += - '\ndataChannel2: Received message: ${data.text}'; + '\ndataChannel2: Received message: ${data.text}, bufferedAmount: $bufferedAmount'; }); - _dataChannel2!.send(RTCDataChannelMessage( + + await _dataChannel2!.send(RTCDataChannelMessage( '(dataChannel2 ==> dataChannel1) Hello from dataChannel2 echo !!!')); }; }; @@ -69,10 +71,12 @@ class _DataChannelLoopBackSampleState extends State { } }; - _dataChannel1!.onMessage = (data) => setState(() { - _dataChannel1Status += - '\ndataChannel1: Received message: ${data.text}'; - }); + _dataChannel1!.onMessage = (data) async { + var bufferedAmount = await _dataChannel2!.getBufferedAmount(); + _dataChannel1Status += + '\ndataChannel1: Received message: ${data.text}, bufferedAmount: $bufferedAmount'; + setState(() {}); + }; var offer = await _peerConnection1!.createOffer({}); print('peerConnection1 offer: ${offer.sdp}'); diff --git a/example/lib/src/loopback_sample_unified_tracks.dart b/example/lib/src/loopback_sample_unified_tracks.dart index c3a6168d04..ba84cabbf2 100644 --- a/example/lib/src/loopback_sample_unified_tracks.dart +++ b/example/lib/src/loopback_sample_unified_tracks.dart @@ -132,7 +132,9 @@ class _MyAppState extends State { } void _selectAudioInput(String deviceId) async { - await Helper.selectAudioInput(deviceId); + if (!WebRTC.platformIsWeb) { + await Helper.selectAudioInput(deviceId); + } } void _cleanUp() async { @@ -539,7 +541,9 @@ class _MyAppState extends State { void _switchSpeaker() async { setState(() { _speakerOn = !_speakerOn; - Helper.setSpeakerphoneOn(_speakerOn); + if (!WebRTC.platformIsWeb) { + Helper.setSpeakerphoneOn(_speakerOn); + } }); } diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 7817e98c1b..9c5d1492b5 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -3,8 +3,8 @@ description: Demonstrates how to use the webrtc plugin. version: 1.0.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' - + sdk: ">=3.3.0 <4.0.0" + dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. @@ -15,11 +15,11 @@ dependencies: flutter_webrtc: path: ../ # Required for MediaRecorder example + gallery_saver_plus: 3.2.4 path_provider: ^2.0.2 permission_handler: ^11.3.1 sdp_transform: ^0.3.2 - dev_dependencies: flutter_test: sdk: flutter @@ -31,7 +31,6 @@ dev_dependencies: # The following section is specific to Flutter. flutter: - # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. @@ -65,5 +64,5 @@ flutter: # - asset: fonts/TrajanPro_Bold.ttf # weight: 700 # - # For details regarding fonts from package dependencies, + # For details regarding fonts from package dependencies, # see https://flutter.io/custom-fonts/#from-packages diff --git a/example/web/e2ee.worker.dart.js b/example/web/e2ee.worker.dart.js index 94b7a4bfc1..546a5faa8a 100644 --- a/example/web/e2ee.worker.dart.js +++ b/example/web/e2ee.worker.dart.js @@ -1,4 +1,4 @@ -// Generated by dart2js (NullSafetyMode.sound, csp, deferred-serialization, intern-composite-values), the Dart to JavaScript compiler version: 2.19.6. +// Generated by dart2js (NullSafetyMode.sound, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.7.0. // The code supports the following hooks: // dartPrint(message): // if this function is defined it is called instead of the Dart [print] @@ -9,12 +9,21 @@ // directly. Instead, a closure that will invoke [main], and its arguments // [args] is passed to [dartMainRunner]. // -// dartDeferredLibraryLoader(uri, successCallback, errorCallback, loadId): +// dartDeferredLibraryLoader(uri, successCallback, errorCallback, loadId, loadPriority): // if this function is defined, it will be called when a deferred library // is loaded. It should load and eval the javascript of `uri`, and call // successCallback. If it fails to do so, it should call errorCallback with // an error. The loadId argument is the deferred import that resulted in -// this uri being loaded. +// this uri being loaded. The loadPriority argument is an arbitrary argument +// string forwarded from the 'dart2js:load-priority' pragma option. +// dartDeferredLibraryMultiLoader(uris, successCallback, errorCallback, loadId, loadPriority): +// if this function is defined, it will be called when a deferred library +// is loaded. It should load and eval the javascript of every URI in `uris`, +// and call successCallback. If it fails to do so, it should call +// errorCallback with an error. The loadId argument is the deferred import +// that resulted in this uri being loaded. The loadPriority argument is an +// arbitrary argument string forwarded from the 'dart2js:load-priority' +// pragma option. // // dartCallInstrumentation(id, qualifiedName): // if this function is defined, it will be called at each entry of a @@ -32,8 +41,9 @@ var keys = Object.keys(from); for (var i = 0; i < keys.length; i++) { var key = keys[i]; - if (!to.hasOwnProperty(key)) + if (!to.hasOwnProperty(key)) { to[key] = from[key]; + } } } function mixinPropertiesEasy(from, to) { @@ -44,7 +54,7 @@ }; cls.prototype = {p: {}}; var object = new cls(); - if (!(object.__proto__ && object.__proto__.p === cls.prototype.p)) + if (!(Object.getPrototypeOf(object) && Object.getPrototypeOf(object).p === cls.prototype.p)) return false; try { if (typeof navigator != "undefined" && typeof navigator.userAgent == "string" && navigator.userAgent.indexOf("Chrome/") >= 0) @@ -63,7 +73,7 @@ cls.prototype["$is" + cls.name] = cls; if (sup != null) { if (supportsDirectProtoAccess) { - cls.prototype.__proto__ = sup.prototype; + Object.setPrototypeOf(cls.prototype, sup.prototype); return; } var clsPrototype = Object.create(sup.prototype); @@ -72,8 +82,9 @@ } } function inheritMany(sup, classes) { - for (var i = 0; i < classes.length; i++) + for (var i = 0; i < classes.length; i++) { inherit(classes[i], sup); + } } function mixinEasy(cls, mixin) { mixinPropertiesEasy(mixin.prototype, cls.prototype); @@ -83,37 +94,13 @@ mixinPropertiesHard(mixin.prototype, cls.prototype); cls.prototype.constructor = cls; } - function lazyOld(holder, name, getterName, initializer) { - var uninitializedSentinel = holder; - holder[name] = uninitializedSentinel; - holder[getterName] = function() { - holder[getterName] = function() { - A.throwCyclicInit(name); - }; - var result; - var sentinelInProgress = initializer; - try { - if (holder[name] === uninitializedSentinel) { - result = holder[name] = sentinelInProgress; - result = holder[name] = initializer(); - } else - result = holder[name]; - } finally { - if (result === sentinelInProgress) - holder[name] = null; - holder[getterName] = function() { - return this[name]; - }; - } - return result; - }; - } function lazy(holder, name, getterName, initializer) { var uninitializedSentinel = holder; holder[name] = uninitializedSentinel; holder[getterName] = function() { - if (holder[name] === uninitializedSentinel) + if (holder[name] === uninitializedSentinel) { holder[name] = initializer(); + } holder[getterName] = function() { return this[name]; }; @@ -126,8 +113,9 @@ holder[getterName] = function() { if (holder[name] === uninitializedSentinel) { var value = initializer(); - if (holder[name] !== uninitializedSentinel) + if (holder[name] !== uninitializedSentinel) { A.throwLateFieldADI(name); + } holder[name] = value; } var finalValue = holder[name]; @@ -138,8 +126,7 @@ }; } function makeConstList(list) { - list.immutable$list = Array; - list.fixed$length = Array; + list.$flags = 7; return list; } function convertToFastObject(properties) { @@ -150,8 +137,9 @@ return properties; } function convertAllToFastObject(arrayOfObjects) { - for (var i = 0; i < arrayOfObjects.length; ++i) + for (var i = 0; i < arrayOfObjects.length; ++i) { convertToFastObject(arrayOfObjects[i]); + } } var functionCounter = 0; function instanceTearOffGetter(isIntercepted, parameters) { @@ -176,8 +164,9 @@ } var typesOffset = 0; function tearOffParameters(container, isStatic, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, needsDirectAccess) { - if (typeof funType == "number") + if (typeof funType == "number") { funType += typesOffset; + } return {co: container, iS: isStatic, iI: isIntercepted, rC: requiredParameterCount, dV: optionalParameterDefaultValues, cs: callNames, fs: funsOrNames, fT: funType, aI: applyIndex || 0, nDA: needsDirectAccess}; } function installStaticTearOff(holder, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex) { @@ -228,16 +217,254 @@ return installStaticTearOff(container, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, [name], funType, applyIndex); }; }; - return {inherit: inherit, inheritMany: inheritMany, mixin: mixinEasy, mixinHard: mixinHard, installStaticTearOff: installStaticTearOff, installInstanceTearOff: installInstanceTearOff, _instance_0u: mkInstance(0, 0, null, ["call$0"], 0), _instance_1u: mkInstance(0, 1, null, ["call$1"], 0), _instance_2u: mkInstance(0, 2, null, ["call$2"], 0), _instance_0i: mkInstance(1, 0, null, ["call$0"], 0), _instance_1i: mkInstance(1, 1, null, ["call$1"], 0), _instance_2i: mkInstance(1, 2, null, ["call$2"], 0), _static_0: mkStatic(0, null, ["call$0"], 0), _static_1: mkStatic(1, null, ["call$1"], 0), _static_2: mkStatic(2, null, ["call$2"], 0), makeConstList: makeConstList, lazy: lazy, lazyFinal: lazyFinal, lazyOld: lazyOld, updateHolder: updateHolder, convertToFastObject: convertToFastObject, updateTypes: updateTypes, setOrUpdateInterceptorsByTag: setOrUpdateInterceptorsByTag, setOrUpdateLeafTags: setOrUpdateLeafTags}; + return {inherit: inherit, inheritMany: inheritMany, mixin: mixinEasy, mixinHard: mixinHard, installStaticTearOff: installStaticTearOff, installInstanceTearOff: installInstanceTearOff, _instance_0u: mkInstance(0, 0, null, ["call$0"], 0), _instance_1u: mkInstance(0, 1, null, ["call$1"], 0), _instance_2u: mkInstance(0, 2, null, ["call$2"], 0), _instance_0i: mkInstance(1, 0, null, ["call$0"], 0), _instance_1i: mkInstance(1, 1, null, ["call$1"], 0), _instance_2i: mkInstance(1, 2, null, ["call$2"], 0), _static_0: mkStatic(0, null, ["call$0"], 0), _static_1: mkStatic(1, null, ["call$1"], 0), _static_2: mkStatic(2, null, ["call$2"], 0), makeConstList: makeConstList, lazy: lazy, lazyFinal: lazyFinal, updateHolder: updateHolder, convertToFastObject: convertToFastObject, updateTypes: updateTypes, setOrUpdateInterceptorsByTag: setOrUpdateInterceptorsByTag, setOrUpdateLeafTags: setOrUpdateLeafTags}; }(); function initializeDeferredHunk(hunk) { typesOffset = init.types.length; hunk(hunkHelpers, init, holders, $); } - var A = {JS_CONST: function JS_CONST() { + var J = { + makeDispatchRecord(interceptor, proto, extension, indexability) { + return {i: interceptor, p: proto, e: extension, x: indexability}; + }, + getNativeInterceptor(object) { + var proto, objectProto, $constructor, interceptor, t1, + record = object[init.dispatchPropertyName]; + if (record == null) + if ($.initNativeDispatchFlag == null) { + A.initNativeDispatch(); + record = object[init.dispatchPropertyName]; + } + if (record != null) { + proto = record.p; + if (false === proto) + return record.i; + if (true === proto) + return object; + objectProto = Object.getPrototypeOf(object); + if (proto === objectProto) + return record.i; + if (record.e === objectProto) + throw A.wrapException(A.UnimplementedError$("Return interceptor for " + A.S(proto(object, record)))); + } + $constructor = object.constructor; + if ($constructor == null) + interceptor = null; + else { + t1 = $._JS_INTEROP_INTERCEPTOR_TAG; + if (t1 == null) + t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js"); + interceptor = $constructor[t1]; + } + if (interceptor != null) + return interceptor; + interceptor = A.lookupAndCacheInterceptor(object); + if (interceptor != null) + return interceptor; + if (typeof object == "function") + return B.JavaScriptFunction_methods; + proto = Object.getPrototypeOf(object); + if (proto == null) + return B.PlainJavaScriptObject_methods; + if (proto === Object.prototype) + return B.PlainJavaScriptObject_methods; + if (typeof $constructor == "function") { + t1 = $._JS_INTEROP_INTERCEPTOR_TAG; + if (t1 == null) + t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js"); + Object.defineProperty($constructor, t1, {value: B.UnknownJavaScriptObject_methods, enumerable: false, writable: true, configurable: true}); + return B.UnknownJavaScriptObject_methods; + } + return B.UnknownJavaScriptObject_methods; + }, + JSArray_JSArray$fixed($length, $E) { + if ($length < 0 || $length > 4294967295) + throw A.wrapException(A.RangeError$range($length, 0, 4294967295, "length", null)); + return J.JSArray_JSArray$markFixed(new Array($length), $E); + }, + JSArray_JSArray$markFixed(allocation, $E) { + var t1 = A._setArrayType(allocation, $E._eval$1("JSArray<0>")); + t1.$flags = 1; + return t1; + }, + getInterceptor$(receiver) { + if (typeof receiver == "number") { + if (Math.floor(receiver) == receiver) + return J.JSInt.prototype; + return J.JSNumNotInt.prototype; + } + if (typeof receiver == "string") + return J.JSString.prototype; + if (receiver == null) + return J.JSNull.prototype; + if (typeof receiver == "boolean") + return J.JSBool.prototype; + if (Array.isArray(receiver)) + return J.JSArray.prototype; + if (typeof receiver != "object") { + if (typeof receiver == "function") + return J.JavaScriptFunction.prototype; + if (typeof receiver == "symbol") + return J.JavaScriptSymbol.prototype; + if (typeof receiver == "bigint") + return J.JavaScriptBigInt.prototype; + return receiver; + } + if (receiver instanceof A.Object) + return receiver; + return J.getNativeInterceptor(receiver); + }, + getInterceptor$asx(receiver) { + if (typeof receiver == "string") + return J.JSString.prototype; + if (receiver == null) + return receiver; + if (Array.isArray(receiver)) + return J.JSArray.prototype; + if (typeof receiver != "object") { + if (typeof receiver == "function") + return J.JavaScriptFunction.prototype; + if (typeof receiver == "symbol") + return J.JavaScriptSymbol.prototype; + if (typeof receiver == "bigint") + return J.JavaScriptBigInt.prototype; + return receiver; + } + if (receiver instanceof A.Object) + return receiver; + return J.getNativeInterceptor(receiver); + }, + getInterceptor$ax(receiver) { + if (receiver == null) + return receiver; + if (Array.isArray(receiver)) + return J.JSArray.prototype; + if (typeof receiver != "object") { + if (typeof receiver == "function") + return J.JavaScriptFunction.prototype; + if (typeof receiver == "symbol") + return J.JavaScriptSymbol.prototype; + if (typeof receiver == "bigint") + return J.JavaScriptBigInt.prototype; + return receiver; + } + if (receiver instanceof A.Object) + return receiver; + return J.getNativeInterceptor(receiver); + }, + getInterceptor$x(receiver) { + if (receiver == null) + return receiver; + if (typeof receiver != "object") { + if (typeof receiver == "function") + return J.JavaScriptFunction.prototype; + if (typeof receiver == "symbol") + return J.JavaScriptSymbol.prototype; + if (typeof receiver == "bigint") + return J.JavaScriptBigInt.prototype; + return receiver; + } + if (receiver instanceof A.Object) + return receiver; + return J.getNativeInterceptor(receiver); + }, + get$buffer$x(receiver) { + return J.getInterceptor$x(receiver).get$buffer(receiver); + }, + get$hashCode$(receiver) { + return J.getInterceptor$(receiver).get$hashCode(receiver); + }, + get$iterator$ax(receiver) { + return J.getInterceptor$ax(receiver).get$iterator(receiver); + }, + get$length$asx(receiver) { + return J.getInterceptor$asx(receiver).get$length(receiver); + }, + get$runtimeType$(receiver) { + return J.getInterceptor$(receiver).get$runtimeType(receiver); + }, + $eq$(receiver, a0) { + if (receiver == null) + return a0 == null; + if (typeof receiver != "object") + return a0 != null && receiver === a0; + return J.getInterceptor$(receiver).$eq(receiver, a0); + }, + $index$asx(receiver, a0) { + if (typeof a0 === "number") + if (Array.isArray(receiver) || typeof receiver == "string" || A.isJsIndexable(receiver, receiver[init.dispatchPropertyName])) + if (a0 >>> 0 === a0 && a0 < receiver.length) + return receiver[a0]; + return J.getInterceptor$asx(receiver).$index(receiver, a0); + }, + _setInt8$2$x(receiver, a0, a1) { + return J.getInterceptor$x(receiver)._setInt8$2(receiver, a0, a1); + }, + add$1$ax(receiver, a0) { + return J.getInterceptor$ax(receiver).add$1(receiver, a0); + }, + asUint8List$0$x(receiver) { + return J.getInterceptor$x(receiver).asUint8List$0(receiver); + }, + asUint8List$2$x(receiver, a0, a1) { + return J.getInterceptor$x(receiver).asUint8List$2(receiver, a0, a1); + }, + elementAt$1$ax(receiver, a0) { + return J.getInterceptor$ax(receiver).elementAt$1(receiver, a0); + }, + map$1$1$ax(receiver, a0, $T1) { + return J.getInterceptor$ax(receiver).map$1$1(receiver, a0, $T1); + }, + noSuchMethod$1$(receiver, a0) { + return J.getInterceptor$(receiver).noSuchMethod$1(receiver, a0); + }, + toString$0$(receiver) { + return J.getInterceptor$(receiver).toString$0(receiver); + }, + Interceptor: function Interceptor() { + }, + JSBool: function JSBool() { + }, + JSNull: function JSNull() { }, - LateError$fieldNI(fieldName) { - return new A.LateError("Field '" + fieldName + "' has not been initialized."); + JavaScriptObject: function JavaScriptObject() { + }, + LegacyJavaScriptObject: function LegacyJavaScriptObject() { + }, + PlainJavaScriptObject: function PlainJavaScriptObject() { + }, + UnknownJavaScriptObject: function UnknownJavaScriptObject() { + }, + JavaScriptFunction: function JavaScriptFunction() { + }, + JavaScriptBigInt: function JavaScriptBigInt() { + }, + JavaScriptSymbol: function JavaScriptSymbol() { + }, + JSArray: function JSArray(t0) { + this.$ti = t0; + }, + JSUnmodifiableArray: function JSUnmodifiableArray(t0) { + this.$ti = t0; + }, + ArrayIterator: function ArrayIterator(t0, t1, t2) { + var _ = this; + _._iterable = t0; + _._length = t1; + _._index = 0; + _._current = null; + _.$ti = t2; + }, + JSNumber: function JSNumber() { + }, + JSInt: function JSInt() { + }, + JSNumNotInt: function JSNumNotInt() { + }, + JSString: function JSString() { + } + }, + A = {JS_CONST: function JS_CONST() { }, SystemHash_combine(hash, value) { hash = hash + value & 536870911; @@ -252,14 +479,12 @@ checkNotNullable(value, $name, $T) { return value; }, - SubListIterable$(_iterable, _start, _endOrLength, $E) { - A.RangeError_checkNotNegative(_start, "start"); - if (_endOrLength != null) { - A.RangeError_checkNotNegative(_endOrLength, "end"); - if (_start > _endOrLength) - A.throwExpression(A.RangeError$range(_start, 0, _endOrLength, "start", null)); - } - return new A.SubListIterable(_iterable, _start, _endOrLength, $E._eval$1("SubListIterable<0>")); + isToStringVisiting(object) { + var t1, i; + for (t1 = $.toStringVisiting.length, i = 0; i < t1; ++i) + if (object === $.toStringVisiting[i]) + return true; + return false; }, MappedIterable_MappedIterable(iterable, $function, $S, $T) { if (type$.EfficientLengthIterable_dynamic._is(iterable)) @@ -273,22 +498,12 @@ LateError: function LateError(t0) { this._message = t0; }, - CodeUnits: function CodeUnits(t0) { - this._string = t0; - }, SentinelValue: function SentinelValue() { }, EfficientLengthIterable: function EfficientLengthIterable() { }, ListIterable: function ListIterable() { }, - SubListIterable: function SubListIterable(t0, t1, t2, t3) { - var _ = this; - _.__internal$_iterable = t0; - _._start = t1; - _._endOrLength = t2; - _.$ti = t3; - }, ListIterator: function ListIterator(t0, t1, t2) { var _ = this; _.__internal$_iterable = t0; @@ -331,10 +546,6 @@ }, FixedLengthListMixin: function FixedLengthListMixin() { }, - UnmodifiableListMixin: function UnmodifiableListMixin() { - }, - UnmodifiableListBase: function UnmodifiableListBase() { - }, Symbol: function Symbol(t0) { this.__internal$_name = t0; }, @@ -402,6 +613,15 @@ } return A._rtiToString(A.instanceType(object), null); }, + Primitives_safeToString(object) { + if (typeof object == "number" || A._isBool(object)) + return J.toString$0$(object); + if (typeof object == "string") + return JSON.stringify(object); + if (object instanceof A.Closure) + return object.toString$0(0); + return "Instance of '" + A.Primitives_objectTypeName(object) + "'"; + }, Primitives_stringFromNativeUint8List(charCodes, start, end) { var i, result, i0, chunkEnd; if (end <= 500 && start === 0 && end === charCodes.length) @@ -419,32 +639,25 @@ return receiver.date; }, Primitives_getYear(receiver) { - var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCFullYear() + 0; - return t1; + return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCFullYear() + 0 : A.Primitives_lazyAsJsDate(receiver).getFullYear() + 0; }, Primitives_getMonth(receiver) { - var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCMonth() + 1; - return t1; + return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCMonth() + 1 : A.Primitives_lazyAsJsDate(receiver).getMonth() + 1; }, Primitives_getDay(receiver) { - var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCDate() + 0; - return t1; + return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCDate() + 0 : A.Primitives_lazyAsJsDate(receiver).getDate() + 0; }, Primitives_getHours(receiver) { - var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCHours() + 0; - return t1; + return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCHours() + 0 : A.Primitives_lazyAsJsDate(receiver).getHours() + 0; }, Primitives_getMinutes(receiver) { - var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCMinutes() + 0; - return t1; + return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCMinutes() + 0 : A.Primitives_lazyAsJsDate(receiver).getMinutes() + 0; }, Primitives_getSeconds(receiver) { - var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCSeconds() + 0; - return t1; + return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCSeconds() + 0 : A.Primitives_lazyAsJsDate(receiver).getSeconds() + 0; }, Primitives_getMilliseconds(receiver) { - var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCMilliseconds() + 0; - return t1; + return receiver.isUtc ? A.Primitives_lazyAsJsDate(receiver).getUTCMilliseconds() + 0 : A.Primitives_lazyAsJsDate(receiver).getMilliseconds() + 0; }, Primitives_functionNoSuchMethod($function, positionalArguments, namedArguments) { var $arguments, namedArgumentList, t1 = {}; @@ -454,14 +667,14 @@ t1.argumentCount = positionalArguments.length; B.JSArray_methods.addAll$1($arguments, positionalArguments); t1.names = ""; - if (namedArguments != null && namedArguments._length !== 0) + if (namedArguments != null && namedArguments.__js_helper$_length !== 0) namedArguments.forEach$1(0, new A.Primitives_functionNoSuchMethod_closure(t1, namedArgumentList, $arguments)); return J.noSuchMethod$1$($function, new A.JSInvocationMirror(B.Symbol_call, 0, $arguments, namedArgumentList, 0)); }, Primitives_applyFunction($function, positionalArguments, namedArguments) { var t1, argumentCount, jsStub; if (Array.isArray(positionalArguments)) - t1 = namedArguments == null || namedArguments._length === 0; + t1 = namedArguments == null || namedArguments.__js_helper$_length === 0; else t1 = false; if (t1) { @@ -505,14 +718,14 @@ if (typeof jsFunction == "string") jsFunction = interceptor[jsFunction]; if (t1) { - if (namedArguments != null && namedArguments._length !== 0) + if (namedArguments != null && namedArguments.__js_helper$_length !== 0) return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments); if (argumentCount === requiredParameterCount) return jsFunction.apply($function, $arguments); return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments); } if (Array.isArray(defaultValues)) { - if (namedArguments != null && namedArguments._length !== 0) + if (namedArguments != null && namedArguments.__js_helper$_length !== 0) return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments); maxArguments = requiredParameterCount + defaultValues.length; if (argumentCount > maxArguments) @@ -540,7 +753,7 @@ else { for (t1 = keys.length, used = 0, _i = 0; _i < keys.length; keys.length === t1 || (0, A.throwConcurrentModificationError)(keys), ++_i) { key = A._asString(keys[_i]); - if (namedArguments.containsKey$1(0, key)) { + if (namedArguments.containsKey$1(key)) { ++used; B.JSArray_methods.add$1($arguments, namedArguments.$index(0, key)); } else { @@ -550,12 +763,26 @@ B.JSArray_methods.add$1($arguments, defaultValue); } } - if (used !== namedArguments._length) + if (used !== namedArguments.__js_helper$_length) return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments); } return jsFunction.apply($function, $arguments); } }, + Primitives_extractStackTrace(error) { + var jsError = error.$thrownJsError; + if (jsError == null) + return null; + return A.getTraceFromException(jsError); + }, + Primitives_trySetStackTrace(error, stackTrace) { + var jsError; + if (error.$thrownJsError == null) { + jsError = A.wrapException(error); + error.$thrownJsError = jsError; + jsError.stack = stackTrace.toString$0(0); + } + }, iae(argument) { throw A.wrapException(A.argumentErrorValue(argument)); }, @@ -585,10 +812,12 @@ return new A.ArgumentError(true, object, null, null); }, wrapException(ex) { - var wrapper, t1; - if (ex == null) - ex = new A.NullThrownError(); - wrapper = new Error(); + return A.initializeExceptionWrapper(new Error(), ex); + }, + initializeExceptionWrapper(wrapper, ex) { + var t1; + if (ex == null) + ex = new A.TypeError(); wrapper.dartException = ex; t1 = A.toStringWrapper; if ("defineProperty" in Object) { @@ -604,6 +833,45 @@ throwExpression(ex) { throw A.wrapException(ex); }, + throwExpressionWithWrapper(ex, wrapper) { + throw A.initializeExceptionWrapper(wrapper, ex); + }, + throwUnsupportedOperation(o, operation, verb) { + var wrapper; + if (operation == null) + operation = 0; + if (verb == null) + verb = 0; + wrapper = Error(); + A.throwExpressionWithWrapper(A._diagnoseUnsupportedOperation(o, operation, verb), wrapper); + }, + _diagnoseUnsupportedOperation(o, encodedOperation, encodedVerb) { + var operation, table, tableLength, index, verb, object, flags, article, adjective; + if (typeof encodedOperation == "string") + operation = encodedOperation; + else { + table = "[]=;add;removeWhere;retainWhere;removeRange;setRange;setInt8;setInt16;setInt32;setUint8;setUint16;setUint32;setFloat32;setFloat64".split(";"); + tableLength = table.length; + index = encodedOperation; + if (index > tableLength) { + encodedVerb = index / tableLength | 0; + index %= tableLength; + } + operation = table[index]; + } + verb = typeof encodedVerb == "string" ? encodedVerb : "modify;remove from;add to".split(";")[encodedVerb]; + object = type$.List_dynamic._is(o) ? "list" : "ByteData"; + flags = o.$flags | 0; + article = "a "; + if ((flags & 4) !== 0) + adjective = "constant "; + else if ((flags & 2) !== 0) { + adjective = "unmodifiable "; + article = "an "; + } else + adjective = (flags & 1) !== 0 ? "fixed-length " : ""; + return new A.UnsupportedError("'" + operation + "': Cannot " + verb + " " + article + adjective + object); + }, throwConcurrentModificationError(collection) { throw A.wrapException(A.ConcurrentModificationError$(collection)); }, @@ -665,7 +933,7 @@ return error; }, _unwrapNonDartException(ex) { - var message, number, ieErrorCode, t1, nsme, notClosure, nullCall, nullLiteralCall, undefCall, undefLiteralCall, nullProperty, undefProperty, undefLiteralProperty, match, _null = null; + var message, number, ieErrorCode, nsme, notClosure, nullCall, nullLiteralCall, undefCall, undefLiteralCall, nullProperty, undefProperty, undefLiteralProperty, match; if (!("message" in ex)) return ex; message = ex.message; @@ -675,11 +943,11 @@ if ((B.JSInt_methods._shrOtherPositive$1(number, 16) & 8191) === 10) switch (ieErrorCode) { case 438: - return A.saveStackTrace(ex, A.JsNoSuchMethodError$(A.S(message) + " (Error " + ieErrorCode + ")", _null)); + return A.saveStackTrace(ex, A.JsNoSuchMethodError$(A.S(message) + " (Error " + ieErrorCode + ")", null)); case 445: case 5007: - t1 = A.S(message); - return A.saveStackTrace(ex, new A.NullError(t1 + " (Error " + ieErrorCode + ")", _null)); + A.S(message); + return A.saveStackTrace(ex, new A.NullError()); } } if (ex instanceof TypeError) { @@ -701,41 +969,9 @@ if (match != null) { match.method = "call"; return A.saveStackTrace(ex, A.JsNoSuchMethodError$(A._asString(message), match)); - } else { - match = nullCall.matchTypeError$1(message); - if (match == null) { - match = nullLiteralCall.matchTypeError$1(message); - if (match == null) { - match = undefCall.matchTypeError$1(message); - if (match == null) { - match = undefLiteralCall.matchTypeError$1(message); - if (match == null) { - match = nullProperty.matchTypeError$1(message); - if (match == null) { - match = nullLiteralCall.matchTypeError$1(message); - if (match == null) { - match = undefProperty.matchTypeError$1(message); - if (match == null) { - match = undefLiteralProperty.matchTypeError$1(message); - t1 = match != null; - } else - t1 = true; - } else - t1 = true; - } else - t1 = true; - } else - t1 = true; - } else - t1 = true; - } else - t1 = true; - } else - t1 = true; - if (t1) { - A._asString(message); - return A.saveStackTrace(ex, new A.NullError(message, match == null ? _null : match.method)); - } + } else if (nullCall.matchTypeError$1(message) != null || nullLiteralCall.matchTypeError$1(message) != null || undefCall.matchTypeError$1(message) != null || undefLiteralCall.matchTypeError$1(message) != null || nullProperty.matchTypeError$1(message) != null || nullLiteralCall.matchTypeError$1(message) != null || undefProperty.matchTypeError$1(message) != null || undefLiteralProperty.matchTypeError$1(message) != null) { + A._asString(message); + return A.saveStackTrace(ex, new A.NullError()); } } return A.saveStackTrace(ex, new A.UnknownJsTypeError(typeof message == "string" ? message : "")); @@ -750,7 +986,7 @@ } return null; }(ex); - return A.saveStackTrace(ex, new A.ArgumentError(false, _null, _null, typeof message == "string" ? message.replace(/^RangeError:\s*/, "") : message)); + return A.saveStackTrace(ex, new A.ArgumentError(false, null, null, typeof message == "string" ? message.replace(/^RangeError:\s*/, "") : message)); } if (typeof InternalError == "function" && ex instanceof InternalError) if (typeof message == "string" && message === "too much recursion") @@ -766,13 +1002,17 @@ trace = exception.$cachedTrace; if (trace != null) return trace; - return exception.$cachedTrace = new A._StackTrace(exception); + trace = new A._StackTrace(exception); + if (typeof exception === "object") + exception.$cachedTrace = trace; + return trace; }, objectHashCode(object) { - if (object == null || typeof object != "object") + if (object == null) return J.get$hashCode$(object); - else + if (typeof object == "object") return A.Primitives_objectHashCode(object); + return J.get$hashCode$(object); }, fillLiteralMap(keyValuePairs, result) { var index, index0, index1, @@ -784,7 +1024,7 @@ } return result; }, - invokeClosure(closure, numberOfArguments, arg1, arg2, arg3, arg4) { + _invokeClosure(closure, numberOfArguments, arg1, arg2, arg3, arg4) { type$.Function._as(closure); switch (A._asInt(numberOfArguments)) { case 0: @@ -801,19 +1041,41 @@ throw A.wrapException(A.Exception_Exception("Unsupported number of arguments for wrapped closure")); }, convertDartClosureToJS(closure, arity) { - var $function; - if (closure == null) - return null; - $function = closure.$identity; + var $function = closure.$identity; if (!!$function) return $function; - $function = function(closure, arity, invoke) { + $function = A.convertDartClosureToJSUncached(closure, arity); + closure.$identity = $function; + return $function; + }, + convertDartClosureToJSUncached(closure, arity) { + var entry; + switch (arity) { + case 0: + entry = closure.call$0; + break; + case 1: + entry = closure.call$1; + break; + case 2: + entry = closure.call$2; + break; + case 3: + entry = closure.call$3; + break; + case 4: + entry = closure.call$4; + break; + default: + entry = null; + } + if (entry != null) + return entry.bind(closure); + return function(closure, arity, invoke) { return function(a1, a2, a3, a4) { return invoke(closure, arity, a1, a2, a3, a4); }; - }(closure, arity, A.invokeClosure); - closure.$identity = $function; - return $function; + }(closure, arity, A._invokeClosure); }, Closure_fromTearOff(parameters) { var $prototype, $constructor, t2, trampoline, applyTrampoline, i, stub, stub0, stubName, stubCallName, @@ -831,14 +1093,11 @@ t1.toString; $prototype = isStatic ? Object.create(new A.StaticClosure().constructor.prototype) : Object.create(new A.BoundClosure(null, null).constructor.prototype); $prototype.$initialize = $prototype.constructor; - if (isStatic) - $constructor = function static_tear_off() { - this.$initialize(); - }; - else - $constructor = function tear_off(a, b) { - this.$initialize(a, b); - }; + $constructor = isStatic ? function static_tear_off() { + this.$initialize(); + } : function tear_off(a, b) { + this.$initialize(a, b); + }; $prototype.constructor = $constructor; $constructor.prototype = $prototype; $prototype.$_name = $name; @@ -936,12 +1195,9 @@ } }, Closure_forwardCallTo(stubName, $function, isIntercepted, needsDirectAccess) { - var arity, t1; if (isIntercepted) return A.Closure_forwardInterceptedCallTo(stubName, $function, needsDirectAccess); - arity = $function.length; - t1 = A.Closure_cspForwardCall(arity, needsDirectAccess, stubName, $function); - return t1; + return A.Closure_cspForwardCall($function.length, needsDirectAccess, stubName, $function); }, Closure_cspForwardInterceptedCall(arity, needsDirectAccess, stubName, $function) { var getReceiver = A.BoundClosure_receiverOf, @@ -1018,9 +1274,11 @@ return closure._interceptor; }, BoundClosure__computeFieldNamed(fieldName) { - var t1, i, $name, + var names, i, $name, template = new A.BoundClosure("receiver", "interceptor"), - names = J.JSArray_markFixedList(Object.getOwnPropertyNames(template), type$.nullable_Object); + t1 = Object.getOwnPropertyNames(template); + t1.$flags = 1; + names = t1; for (t1 = names.length, i = 0; i < t1; ++i) { $name = names[i]; if (template[$name] === fieldName) @@ -1037,7 +1295,7 @@ throw A.wrapException(new A._AssertionError(message)); }, throwCyclicInit(staticName) { - throw A.wrapException(new A.CyclicInitializationError(staticName)); + throw A.wrapException(new A._CyclicInitializationError(staticName)); }, getIsolateAffinityTag($name) { return init.getIsolateTag($name); @@ -1166,7 +1424,7 @@ transformers = dartNativeDispatchHooksTransformer; if (typeof transformers == "function") transformers = [transformers]; - if (transformers.constructor == Array) + if (Array.isArray(transformers)) for (i = 0; i < transformers.length; ++i) { transformer = transformers[i]; if (typeof transformer == "function") @@ -1183,6 +1441,17 @@ applyHooksTransformer(transformer, hooks) { return transformer(hooks) || hooks; }, + createRecordTypePredicate(shape, fieldRtis) { + var $length = fieldRtis.length, + $function = init.rttc["" + $length + ";" + shape]; + if ($function == null) + return null; + if ($length === 0) + return $function; + if ($length === $function.length) + return $function.apply(null, fieldRtis); + return $function(fieldRtis); + }, quoteStringForRegExp(string) { if (/[[\]{}()*+?.\\^$|]/.test(string)) return string.replace(/[[\]{}()*+?.\\^$|]/g, "\\$&"); @@ -1194,17 +1463,23 @@ }, ConstantMap: function ConstantMap() { }, - ConstantStringMap: function ConstantStringMap(t0, t1, t2, t3) { - var _ = this; - _._length = t0; - _._jsObject = t1; - _.__js_helper$_keys = t2; - _.$ti = t3; + ConstantStringMap: function ConstantStringMap(t0, t1, t2) { + this._jsIndex = t0; + this._values = t1; + this.$ti = t2; }, - _ConstantMapKeyIterable: function _ConstantMapKeyIterable(t0, t1) { - this._map = t0; + _KeysOrValues: function _KeysOrValues(t0, t1) { + this._elements = t0; this.$ti = t1; }, + _KeysOrValuesOrElementsIterator: function _KeysOrValuesOrElementsIterator(t0, t1, t2) { + var _ = this; + _._elements = t0; + _.__js_helper$_length = t1; + _.__js_helper$_index = 0; + _.__js_helper$_current = null; + _.$ti = t2; + }, JSInvocationMirror: function JSInvocationMirror(t0, t1, t2, t3, t4) { var _ = this; _._memberName = t0; @@ -1227,9 +1502,7 @@ _._method = t4; _._receiver = t5; }, - NullError: function NullError(t0, t1) { - this.__js_helper$_message = t0; - this._method = t1; + NullError: function NullError() { }, JsNoSuchMethodError: function JsNoSuchMethodError(t0, t1, t2) { this.__js_helper$_message = t0; @@ -1264,6 +1537,9 @@ this._receiver = t0; this._interceptor = t1; }, + _CyclicInitializationError: function _CyclicInitializationError(t0) { + this.variableName = t0; + }, RuntimeError: function RuntimeError(t0) { this.message = t0; }, @@ -1274,26 +1550,28 @@ }, JsLinkedHashMap: function JsLinkedHashMap(t0) { var _ = this; - _._length = 0; + _.__js_helper$_length = 0; _._last = _._first = _.__js_helper$_rest = _._nums = _._strings = null; _._modifications = 0; _.$ti = t0; }, LinkedHashMapCell: function LinkedHashMapCell(t0, t1) { - this.hashMapCellKey = t0; - this.hashMapCellValue = t1; - this._next = null; + var _ = this; + _.hashMapCellKey = t0; + _.hashMapCellValue = t1; + _._previous = _._next = null; }, - LinkedHashMapKeyIterable: function LinkedHashMapKeyIterable(t0, t1) { + LinkedHashMapKeysIterable: function LinkedHashMapKeysIterable(t0, t1) { this._map = t0; this.$ti = t1; }, - LinkedHashMapKeyIterator: function LinkedHashMapKeyIterator(t0, t1, t2) { + LinkedHashMapKeyIterator: function LinkedHashMapKeyIterator(t0, t1, t2, t3) { var _ = this; _._map = t0; _._modifications = t1; - _.__js_helper$_current = _._cell = null; - _.$ti = t2; + _._cell = t2; + _.__js_helper$_current = null; + _.$ti = t3; }, initHooks_closure: function initHooks_closure(t0) { this.getTag = t0; @@ -1305,14 +1583,7 @@ this.prototypeForTag = t0; }, _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; }, NativeByteData_NativeByteData($length) { return new DataView(new ArrayBuffer($length)); @@ -1320,9 +1591,6 @@ NativeUint8List_NativeUint8List($length) { return new Uint8Array($length); }, - NativeUint8List_NativeUint8List$fromList(elements) { - return new Uint8Array(A._ensureNativeList(elements)); - }, NativeUint8List_NativeUint8List$view(buffer, offsetInBytes, $length) { return $length == null ? new Uint8Array(buffer, offsetInBytes) : new Uint8Array(buffer, offsetInBytes, $length); }, @@ -1349,6 +1617,9 @@ }, NativeTypedData: function NativeTypedData() { }, + _UnmodifiableNativeByteBufferView: function _UnmodifiableNativeByteBufferView(t0) { + this._data = t0; + }, NativeByteData: function NativeByteData() { }, NativeTypedArray: function NativeTypedArray() { @@ -1357,6 +1628,10 @@ }, NativeTypedArrayOfInt: function NativeTypedArrayOfInt() { }, + NativeFloat32List: function NativeFloat32List() { + }, + NativeFloat64List: function NativeFloat64List() { + }, NativeInt16List: function NativeInt16List() { }, NativeInt32List: function NativeInt32List() { @@ -1400,7 +1675,7 @@ return A._Universe_eval(init.typeUniverse, recipe, false); }, _substitute(universe, rti, typeArguments, depth) { - var baseType, substitutedBaseType, interfaceTypeArguments, substitutedInterfaceTypeArguments, base, substitutedBase, $arguments, substitutedArguments, returnType, substitutedReturnType, functionParameters, substitutedFunctionParameters, bounds, substitutedBounds, index, argument, + var baseType, substitutedBaseType, interfaceTypeArguments, substitutedInterfaceTypeArguments, base, substitutedBase, $arguments, substitutedArguments, t1, fields, substitutedFields, returnType, substitutedReturnType, functionParameters, substitutedFunctionParameters, bounds, substitutedBounds, index, argument, kind = rti._kind; switch (kind) { case 5: @@ -1441,6 +1716,13 @@ if (substitutedBase === base && substitutedArguments === $arguments) return rti; return A._Universe__lookupBindingRti(universe, substitutedBase, substitutedArguments); + case 11: + t1 = rti._primary; + fields = rti._rest; + substitutedFields = A._substituteArray(universe, fields, typeArguments, depth); + if (substitutedFields === fields) + return rti; + return A._Universe__lookupRecordRti(universe, t1, substitutedFields); case 12: returnType = rti._primary; substitutedReturnType = A._substitute(universe, returnType, typeArguments, depth); @@ -1519,13 +1801,11 @@ return target; }, closureFunctionType(closure) { - var t1, - signature = closure.$signature; + var signature = closure.$signature; if (signature != null) { if (typeof signature == "number") return A.getTypeFromTypesTable(signature); - t1 = closure.$signature(); - return t1; + return closure.$signature(); } return null; }, @@ -1540,11 +1820,8 @@ return A.instanceType(object); }, instanceType(object) { - var rti; - if (object instanceof A.Object) { - rti = object.$ti; - return rti != null ? rti : A._instanceTypeFromConstructor(object); - } + if (object instanceof A.Object) + return A._instanceType(object); if (Array.isArray(object)) return A._arrayInstanceType(object); return A._instanceTypeFromConstructor(J.getInterceptor$(object)); @@ -1570,7 +1847,7 @@ return A._instanceTypeFromConstructorMiss(instance, $constructor); }, _instanceTypeFromConstructorMiss(instance, $constructor) { - var effectiveConstructor = instance instanceof A.Closure ? instance.__proto__.__proto__.constructor : $constructor, + var effectiveConstructor = instance instanceof A.Closure ? Object.getPrototypeOf(Object.getPrototypeOf(instance)).constructor : $constructor, rti = A._Universe_findErasedType(init.typeUniverse, effectiveConstructor.name); $constructor.$ccache = rti; return rti; @@ -1586,37 +1863,55 @@ } return type; }, + getRuntimeTypeOfDartObject(object) { + return A.createRuntimeType(A._instanceType(object)); + }, + _structuralTypeOf(object) { + var functionRti = object instanceof A.Closure ? A.closureFunctionType(object) : null; + if (functionRti != null) + return functionRti; + if (type$.TrustedGetRuntimeType._is(object)) + return J.get$runtimeType$(object)._rti; + if (Array.isArray(object)) + return A._arrayInstanceType(object); + return A.instanceType(object); + }, createRuntimeType(rti) { - var s, starErasedRecipe, starErasedRti, - type = rti._cachedRuntimeType; - if (type != null) - return type; - s = rti._canonicalRecipe; - starErasedRecipe = s.replace(/\*/g, ""); + var t1 = rti._cachedRuntimeType; + return t1 == null ? rti._cachedRuntimeType = A._createRuntimeType(rti) : t1; + }, + _createRuntimeType(rti) { + var starErasedRti, t1, + s = rti._canonicalRecipe, + starErasedRecipe = s.replace(/\*/g, ""); if (starErasedRecipe === s) return rti._cachedRuntimeType = new A._Type(rti); starErasedRti = A._Universe_eval(init.typeUniverse, starErasedRecipe, true); - type = starErasedRti._cachedRuntimeType; - return rti._cachedRuntimeType = type == null ? starErasedRti._cachedRuntimeType = new A._Type(starErasedRti) : type; + t1 = starErasedRti._cachedRuntimeType; + return t1 == null ? starErasedRti._cachedRuntimeType = A._createRuntimeType(starErasedRti) : t1; }, typeLiteral(recipe) { return A.createRuntimeType(A._Universe_eval(init.typeUniverse, recipe, false)); }, _installSpecializedIsTest(object) { - var t1, unstarred, isFn, $name, testRti = this; + var t1, unstarred, unstarredKind, isFn, $name, predicate, testRti = this; if (testRti === type$.Object) return A._finishIsFn(testRti, object, A._isObject); - if (!A.isStrongTopType(testRti)) - if (!(testRti === type$.legacy_Object)) - t1 = false; - else - t1 = true; + if (!A.isSoundTopType(testRti)) + t1 = testRti === type$.legacy_Object; else t1 = true; if (t1) return A._finishIsFn(testRti, object, A._isTop); t1 = testRti._kind; + if (t1 === 7) + return A._finishIsFn(testRti, object, A._generalNullableIsTestImplementation); + if (t1 === 1) + return A._finishIsFn(testRti, object, A._isNever); unstarred = t1 === 6 ? testRti._primary : testRti; + unstarredKind = unstarred._kind; + if (unstarredKind === 8) + return A._finishIsFn(testRti, object, A._isFutureOr); if (unstarred === type$.int) isFn = A._isInt; else if (unstarred === type$.double || unstarred === type$.num) @@ -1627,16 +1922,18 @@ isFn = unstarred === type$.bool ? A._isBool : null; if (isFn != null) return A._finishIsFn(testRti, object, isFn); - if (unstarred._kind === 9) { + if (unstarredKind === 9) { $name = unstarred._primary; - if (unstarred._rest.every(A.isTopType)) { + if (unstarred._rest.every(A.isDefinitelyTopType)) { testRti._specializedTestResource = "$is" + $name; if ($name === "List") return A._finishIsFn(testRti, object, A._isListTestViaProperty); return A._finishIsFn(testRti, object, A._isTestViaProperty); } - } else if (t1 === 7) - return A._finishIsFn(testRti, object, A._generalNullableIsTestImplementation); + } else if (unstarredKind === 11) { + predicate = A.createRecordTypePredicate(unstarred._primary, unstarred._rest); + return A._finishIsFn(testRti, object, predicate == null ? A._isNever : predicate); + } return A._finishIsFn(testRti, object, A._generalIsTestImplementation); }, _finishIsFn(testRti, object, isFn) { @@ -1646,11 +1943,8 @@ _installSpecializedAsCheck(object) { var t1, testRti = this, asFn = A._generalAsCheckImplementation; - if (!A.isStrongTopType(testRti)) - if (!(testRti === type$.legacy_Object)) - t1 = false; - else - t1 = true; + if (!A.isSoundTopType(testRti)) + t1 = testRti === type$.legacy_Object; else t1 = true; if (t1) @@ -1666,31 +1960,21 @@ return testRti._as(object); }, _nullIs(testRti) { - var t1, - kind = testRti._kind; - if (!A.isStrongTopType(testRti)) + var kind = testRti._kind, + t1 = true; + if (!A.isSoundTopType(testRti)) if (!(testRti === type$.legacy_Object)) if (!(testRti === type$.legacy_Never)) if (kind !== 7) if (!(kind === 6 && A._nullIs(testRti._primary))) t1 = kind === 8 && A._nullIs(testRti._primary) || testRti === type$.Null || testRti === type$.JSNull; - else - t1 = true; - else - t1 = true; - else - t1 = true; - else - t1 = true; - else - t1 = true; return t1; }, _generalIsTestImplementation(object) { var testRti = this; if (object == null) return A._nullIs(testRti); - return A._isSubtype(init.typeUniverse, A.instanceOrFunctionType(object, testRti), null, testRti, null); + return A.isSubtype(init.typeUniverse, A.instanceOrFunctionType(object, testRti), testRti); }, _generalNullableIsTestImplementation(object) { if (object == null) @@ -1720,10 +2004,9 @@ return !!J.getInterceptor$(object)[tag]; }, _generalAsCheckImplementation(object) { - var t1, testRti = this; + var testRti = this; if (object == null) { - t1 = A.isNullable(testRti); - if (t1) + if (A.isNullable(testRti)) return object; } else if (testRti._is(object)) return object; @@ -1738,17 +2021,21 @@ A._failedAsCheck(object, testRti); }, _failedAsCheck(object, testRti) { - throw A.wrapException(A._TypeError$fromMessage(A._Error_compose(object, A.instanceOrFunctionType(object, testRti), A._rtiToString(testRti, null)))); + throw A.wrapException(A._TypeError$fromMessage(A._Error_compose(object, A._rtiToString(testRti, null)))); }, - _Error_compose(object, objectRti, checkedTypeDescription) { - var objectDescription = A.Error_safeToString(object); - return objectDescription + ": type '" + A._rtiToString(objectRti == null ? A.instanceType(object) : objectRti, null) + "' is not a subtype of type '" + checkedTypeDescription + "'"; + _Error_compose(object, checkedTypeDescription) { + return A.Error_safeToString(object) + ": type '" + A._rtiToString(A._structuralTypeOf(object), null) + "' is not a subtype of type '" + checkedTypeDescription + "'"; }, _TypeError$fromMessage(message) { return new A._TypeError("TypeError: " + message); }, _TypeError__TypeError$forType(object, type) { - return new A._TypeError("TypeError: " + A._Error_compose(object, null, type)); + return new A._TypeError("TypeError: " + A._Error_compose(object, type)); + }, + _isFutureOr(object) { + var testRti = this, + unstarred = testRti._kind === 6 ? testRti._primary : testRti; + return unstarred._primary._is(object) || A.Rti__getFutureFromFutureOr(init.typeUniverse, unstarred)._is(object); }, _isObject(object) { return object != null; @@ -1764,6 +2051,9 @@ _asTop(object) { return object; }, + _isNever(object) { + return false; + }, _isBool(object) { return true === object || false === object; }, @@ -1904,13 +2194,12 @@ return s + "})"; }, _functionRtiToString(functionType, genericContext, bounds) { - var boundsLength, outerContextLength, offset, i, t1, t2, typeParametersText, typeSep, t3, t4, boundRti, kind, parameters, requiredPositional, requiredPositionalLength, optionalPositional, optionalPositionalLength, named, namedLength, returnTypeText, argumentsText, sep, _s2_ = ", "; + var boundsLength, offset, i, t1, t2, typeParametersText, typeSep, t3, t4, boundRti, kind, parameters, requiredPositional, requiredPositionalLength, optionalPositional, optionalPositionalLength, named, namedLength, returnTypeText, argumentsText, sep, _s2_ = ", ", outerContextLength = null; if (bounds != null) { boundsLength = bounds.length; - if (genericContext == null) { + if (genericContext == null) genericContext = A._setArrayType([], type$.JSArray_String); - outerContextLength = null; - } else + else outerContextLength = genericContext.length; offset = genericContext.length; for (i = boundsLength; i > 0; --i) @@ -1920,24 +2209,19 @@ t4 = t3 - 1 - i; if (!(t4 >= 0)) return A.ioore(genericContext, t4); - typeParametersText = B.JSString_methods.$add(typeParametersText + typeSep, genericContext[t4]); + typeParametersText = typeParametersText + typeSep + genericContext[t4]; boundRti = bounds[i]; kind = boundRti._kind; if (!(kind === 2 || kind === 3 || kind === 4 || kind === 5 || boundRti === t1)) - if (!(boundRti === t2)) - t3 = false; - else - t3 = true; + t3 = boundRti === t2; else t3 = true; if (!t3) typeParametersText += " extends " + A._rtiToString(boundRti, genericContext); } typeParametersText += ">"; - } else { + } else typeParametersText = ""; - outerContextLength = null; - } t1 = functionType._primary; parameters = functionType._rest; requiredPositional = parameters._requiredPositional; @@ -1972,7 +2256,7 @@ return typeParametersText + "(" + argumentsText + ") => " + returnTypeText; }, _rtiToString(rti, genericContext) { - var s, questionArgument, argumentKind, $name, $arguments, t1, t2, + var questionArgument, s, argumentKind, $name, $arguments, t1, t2, kind = rti._kind; if (kind === 5) return "erased"; @@ -1984,10 +2268,8 @@ return "Never"; if (kind === 4) return "any"; - if (kind === 6) { - s = A._rtiToString(rti._primary, genericContext); - return s; - } + if (kind === 6) + return A._rtiToString(rti._primary, genericContext); if (kind === 7) { questionArgument = rti._primary; s = A._rtiToString(questionArgument, genericContext); @@ -2119,7 +2401,7 @@ var baseKind, t1, rti; if (normalize) { baseKind = baseType._kind; - if (!A.isStrongTopType(baseType)) + if (!A.isSoundTopType(baseType)) t1 = baseType === type$.Null || baseType === type$.JSNull || baseKind === 7 || baseKind === 6; else t1 = true; @@ -2146,16 +2428,11 @@ var baseKind, t1, starArgument, rti; if (normalize) { baseKind = baseType._kind; - if (!A.isStrongTopType(baseType)) + t1 = true; + if (!A.isSoundTopType(baseType)) if (!(baseType === type$.Null || baseType === type$.JSNull)) if (baseKind !== 7) t1 = baseKind === 8 && A.isNullable(baseType._primary); - else - t1 = true; - else - t1 = true; - else - t1 = true; if (t1) return baseType; else if (baseKind === 1 || baseType === type$.legacy_Never) @@ -2185,17 +2462,10 @@ return t1; }, _Universe__createFutureOrRti(universe, baseType, key, normalize) { - var t1, t2, rti; + var t1, rti; if (normalize) { t1 = baseType._kind; - if (!A.isStrongTopType(baseType)) - if (!(baseType === type$.legacy_Object)) - t2 = false; - else - t2 = true; - else - t2 = true; - if (t2 || baseType === type$.Object) + if (A.isSoundTopType(baseType) || baseType === type$.Object || baseType === type$.legacy_Object) return baseType; else if (t1 === 1) return A._Universe__lookupInterfaceRti(universe, "Future", [baseType]); @@ -2365,7 +2635,7 @@ return {u: universe, e: environment, r: recipe, s: [], p: 0, n: normalize}; }, _Parser_parse(parser) { - var t2, i, ch, t3, array, head, base, end, item, + var t2, i, ch, t3, array, end, item, source = parser.r, t1 = parser.s; for (t2 = source.length, i = 0; i < t2;) { @@ -2407,24 +2677,7 @@ parser.p = t1.length; break; case 62: - t3 = parser.u; - array = t1.splice(parser.p); - A._Parser_toTypes(parser.u, parser.e, array); - parser.p = t1.pop(); - head = t1.pop(); - if (typeof head == "string") - t1.push(A._Universe__lookupInterfaceRti(t3, head, array)); - else { - base = A._Parser_toType(t3, parser.e, head); - switch (base._kind) { - case 12: - t1.push(A._Universe__lookupGenericFunctionRti(t3, base, array, parser.n)); - break; - default: - t1.push(A._Universe__lookupBindingRti(t3, base, array)); - break; - } - } + A._Parser_handleTypeArguments(parser, t1); break; case 38: A._Parser_handleExtendedOperations(parser, t1); @@ -2531,31 +2784,44 @@ stack.push(string); return i; }, - _Parser_handleArguments(parser, stack) { - var optionalPositional, named, requiredPositional, returnType, parameters, _null = null, + _Parser_handleTypeArguments(parser, stack) { + var base, t1 = parser.u, + $arguments = A._Parser_collectArray(parser, stack), head = stack.pop(); + if (typeof head == "string") + stack.push(A._Universe__lookupInterfaceRti(t1, head, $arguments)); + else { + base = A._Parser_toType(t1, parser.e, head); + switch (base._kind) { + case 12: + stack.push(A._Universe__lookupGenericFunctionRti(t1, base, $arguments, parser.n)); + break; + default: + stack.push(A._Universe__lookupBindingRti(t1, base, $arguments)); + break; + } + } + }, + _Parser_handleArguments(parser, stack) { + var requiredPositional, returnType, parameters, + t1 = parser.u, + head = stack.pop(), + optionalPositional = null, named = null; if (typeof head == "number") switch (head) { case -1: optionalPositional = stack.pop(); - named = _null; break; case -2: named = stack.pop(); - optionalPositional = _null; break; default: stack.push(head); - named = _null; - optionalPositional = named; break; } - else { + else stack.push(head); - named = _null; - optionalPositional = named; - } requiredPositional = A._Parser_collectArray(parser, stack); head = stack.pop(); switch (head) { @@ -2640,15 +2906,28 @@ return typeArguments[index - 1]; throw A.wrapException(A.AssertionError$("Bad index " + index + " for " + environment.toString$0(0))); }, - _isSubtype(universe, s, sEnv, t, tEnv) { - var t1, sKind, leftTypeVariable, tKind, sBounds, tBounds, sLength, i, sBound, tBound; + isSubtype(universe, s, t) { + var result, + sCache = s._isSubtypeCache; + if (sCache == null) + sCache = s._isSubtypeCache = new Map(); + result = sCache.get(t); + if (result == null) { + result = A._isSubtype(universe, s, null, t, null, false) ? 1 : 0; + sCache.set(t, result); + } + if (0 === result) + return false; + if (1 === result) + return true; + return true; + }, + _isSubtype(universe, s, sEnv, t, tEnv, isLegacy) { + var t1, sKind, leftTypeVariable, tKind, t2, sBounds, tBounds, sLength, i, sBound, tBound; if (s === t) return true; - if (!A.isStrongTopType(t)) - if (!(t === type$.legacy_Object)) - t1 = false; - else - t1 = true; + if (!A.isSoundTopType(t)) + t1 = t === type$.legacy_Object; else t1 = true; if (t1) @@ -2656,61 +2935,61 @@ sKind = s._kind; if (sKind === 4) return true; - if (A.isStrongTopType(s)) + if (A.isSoundTopType(s)) return false; - if (s._kind !== 1) - t1 = false; - else - t1 = true; - if (t1) + t1 = s._kind; + if (t1 === 1) return true; leftTypeVariable = sKind === 14; if (leftTypeVariable) - if (A._isSubtype(universe, sEnv[s._primary], sEnv, t, tEnv)) + if (A._isSubtype(universe, sEnv[s._primary], sEnv, t, tEnv, false)) return true; tKind = t._kind; t1 = s === type$.Null || s === type$.JSNull; if (t1) { if (tKind === 8) - return A._isSubtype(universe, s, sEnv, t._primary, tEnv); + return A._isSubtype(universe, s, sEnv, t._primary, tEnv, false); return t === type$.Null || t === type$.JSNull || tKind === 7 || tKind === 6; } if (t === type$.Object) { if (sKind === 8) - return A._isSubtype(universe, s._primary, sEnv, t, tEnv); + return A._isSubtype(universe, s._primary, sEnv, t, tEnv, false); if (sKind === 6) - return A._isSubtype(universe, s._primary, sEnv, t, tEnv); + return A._isSubtype(universe, s._primary, sEnv, t, tEnv, false); return sKind !== 7; } if (sKind === 6) - return A._isSubtype(universe, s._primary, sEnv, t, tEnv); + return A._isSubtype(universe, s._primary, sEnv, t, tEnv, false); if (tKind === 6) { t1 = A.Rti__getQuestionFromStar(universe, t); - return A._isSubtype(universe, s, sEnv, t1, tEnv); + return A._isSubtype(universe, s, sEnv, t1, tEnv, false); } if (sKind === 8) { - if (!A._isSubtype(universe, s._primary, sEnv, t, tEnv)) + if (!A._isSubtype(universe, s._primary, sEnv, t, tEnv, false)) return false; - return A._isSubtype(universe, A.Rti__getFutureFromFutureOr(universe, s), sEnv, t, tEnv); + return A._isSubtype(universe, A.Rti__getFutureFromFutureOr(universe, s), sEnv, t, tEnv, false); } if (sKind === 7) { - t1 = A._isSubtype(universe, type$.Null, sEnv, t, tEnv); - return t1 && A._isSubtype(universe, s._primary, sEnv, t, tEnv); + t1 = A._isSubtype(universe, type$.Null, sEnv, t, tEnv, false); + return t1 && A._isSubtype(universe, s._primary, sEnv, t, tEnv, false); } if (tKind === 8) { - if (A._isSubtype(universe, s, sEnv, t._primary, tEnv)) + if (A._isSubtype(universe, s, sEnv, t._primary, tEnv, false)) return true; - return A._isSubtype(universe, s, sEnv, A.Rti__getFutureFromFutureOr(universe, t), tEnv); + return A._isSubtype(universe, s, sEnv, A.Rti__getFutureFromFutureOr(universe, t), tEnv, false); } if (tKind === 7) { - t1 = A._isSubtype(universe, s, sEnv, type$.Null, tEnv); - return t1 || A._isSubtype(universe, s, sEnv, t._primary, tEnv); + t1 = A._isSubtype(universe, s, sEnv, type$.Null, tEnv, false); + return t1 || A._isSubtype(universe, s, sEnv, t._primary, tEnv, false); } if (leftTypeVariable) return false; t1 = sKind !== 12; if ((!t1 || sKind === 13) && t === type$.Function) return true; + t2 = sKind === 11; + if (t2 && t === type$.Record) + return true; if (tKind === 13) { if (s === type$.JavaScriptFunction) return true; @@ -2726,33 +3005,30 @@ for (i = 0; i < sLength; ++i) { sBound = sBounds[i]; tBound = tBounds[i]; - if (!A._isSubtype(universe, sBound, sEnv, tBound, tEnv) || !A._isSubtype(universe, tBound, tEnv, sBound, sEnv)) + if (!A._isSubtype(universe, sBound, sEnv, tBound, tEnv, false) || !A._isSubtype(universe, tBound, tEnv, sBound, sEnv, false)) return false; } - return A._isFunctionSubtype(universe, s._primary, sEnv, t._primary, tEnv); + return A._isFunctionSubtype(universe, s._primary, sEnv, t._primary, tEnv, false); } if (tKind === 12) { if (s === type$.JavaScriptFunction) return true; if (t1) return false; - return A._isFunctionSubtype(universe, s, sEnv, t, tEnv); + return A._isFunctionSubtype(universe, s, sEnv, t, tEnv, false); } if (sKind === 9) { if (tKind !== 9) return false; - return A._isInterfaceSubtype(universe, s, sEnv, t, tEnv); + return A._isInterfaceSubtype(universe, s, sEnv, t, tEnv, false); } - t1 = sKind === 11; - if (t1 && t === type$.Record) - return true; - if (t1 && tKind === 11) - return A._isRecordSubtype(universe, s, sEnv, t, tEnv); + if (t2 && tKind === 11) + return A._isRecordSubtype(universe, s, sEnv, t, tEnv, false); return false; }, - _isFunctionSubtype(universe, s, sEnv, t, tEnv) { + _isFunctionSubtype(universe, s, sEnv, t, tEnv, isLegacy) { var sParameters, tParameters, sRequiredPositional, tRequiredPositional, sRequiredPositionalLength, tRequiredPositionalLength, requiredPositionalDelta, sOptionalPositional, tOptionalPositional, sOptionalPositionalLength, tOptionalPositionalLength, i, t1, sNamed, tNamed, sNamedLength, tNamedLength, sIndex, tIndex, tName, sName, sIsRequired; - if (!A._isSubtype(universe, s._primary, sEnv, t._primary, tEnv)) + if (!A._isSubtype(universe, s._primary, sEnv, t._primary, tEnv, false)) return false; sParameters = s._rest; tParameters = t._rest; @@ -2771,17 +3047,17 @@ return false; for (i = 0; i < sRequiredPositionalLength; ++i) { t1 = sRequiredPositional[i]; - if (!A._isSubtype(universe, tRequiredPositional[i], tEnv, t1, sEnv)) + if (!A._isSubtype(universe, tRequiredPositional[i], tEnv, t1, sEnv, false)) return false; } for (i = 0; i < requiredPositionalDelta; ++i) { t1 = sOptionalPositional[i]; - if (!A._isSubtype(universe, tRequiredPositional[sRequiredPositionalLength + i], tEnv, t1, sEnv)) + if (!A._isSubtype(universe, tRequiredPositional[sRequiredPositionalLength + i], tEnv, t1, sEnv, false)) return false; } for (i = 0; i < tOptionalPositionalLength; ++i) { t1 = sOptionalPositional[requiredPositionalDelta + i]; - if (!A._isSubtype(universe, tOptionalPositional[i], tEnv, t1, sEnv)) + if (!A._isSubtype(universe, tOptionalPositional[i], tEnv, t1, sEnv, false)) return false; } sNamed = sParameters._named; @@ -2807,7 +3083,7 @@ if (sIsRequired && !t1) return false; t1 = sNamed[sIndex - 1]; - if (!A._isSubtype(universe, tNamed[tIndex + 2], tEnv, t1, sEnv)) + if (!A._isSubtype(universe, tNamed[tIndex + 2], tEnv, t1, sEnv, false)) return false; break; } @@ -2819,8 +3095,8 @@ } return true; }, - _isInterfaceSubtype(universe, s, sEnv, t, tEnv) { - var rule, recipes, $length, supertypeArgs, i, t1, t2, + _isInterfaceSubtype(universe, s, sEnv, t, tEnv, isLegacy) { + var rule, recipes, $length, supertypeArgs, i, sName = s._primary, tName = t._primary; for (; sName !== tName;) { @@ -2838,24 +3114,19 @@ supertypeArgs = $length > 0 ? new Array($length) : init.typeUniverse.sEA; for (i = 0; i < $length; ++i) supertypeArgs[i] = A._Universe_evalInEnvironment(universe, s, recipes[i]); - return A._areArgumentsSubtypes(universe, supertypeArgs, null, sEnv, t._rest, tEnv); + return A._areArgumentsSubtypes(universe, supertypeArgs, null, sEnv, t._rest, tEnv, false); } - t1 = s._rest; - t2 = t._rest; - return A._areArgumentsSubtypes(universe, t1, null, sEnv, t2, tEnv); + return A._areArgumentsSubtypes(universe, s._rest, null, sEnv, t._rest, tEnv, false); }, - _areArgumentsSubtypes(universe, sArgs, sVariances, sEnv, tArgs, tEnv) { - var i, t1, t2, + _areArgumentsSubtypes(universe, sArgs, sVariances, sEnv, tArgs, tEnv, isLegacy) { + var i, $length = sArgs.length; - for (i = 0; i < $length; ++i) { - t1 = sArgs[i]; - t2 = tArgs[i]; - if (!A._isSubtype(universe, t1, sEnv, t2, tEnv)) + for (i = 0; i < $length; ++i) + if (!A._isSubtype(universe, sArgs[i], sEnv, tArgs[i], tEnv, false)) return false; - } return true; }, - _isRecordSubtype(universe, s, sEnv, t, tEnv) { + _isRecordSubtype(universe, s, sEnv, t, tEnv, isLegacy) { var i, sFields = s._rest, tFields = t._rest, @@ -2865,40 +3136,29 @@ if (s._primary !== t._primary) return false; for (i = 0; i < sCount; ++i) - if (!A._isSubtype(universe, sFields[i], sEnv, tFields[i], tEnv)) + if (!A._isSubtype(universe, sFields[i], sEnv, tFields[i], tEnv, false)) return false; return true; }, isNullable(t) { - var t1, - kind = t._kind; + var kind = t._kind, + t1 = true; if (!(t === type$.Null || t === type$.JSNull)) - if (!A.isStrongTopType(t)) + if (!A.isSoundTopType(t)) if (kind !== 7) if (!(kind === 6 && A.isNullable(t._primary))) t1 = kind === 8 && A.isNullable(t._primary); - else - t1 = true; - else - t1 = true; - else - t1 = true; - else - t1 = true; return t1; }, - isTopType(t) { + isDefinitelyTopType(t) { var t1; - if (!A.isStrongTopType(t)) - if (!(t === type$.legacy_Object)) - t1 = false; - else - t1 = true; + if (!A.isSoundTopType(t)) + t1 = t === type$.legacy_Object; else t1 = true; return t1; }, - isStrongTopType(t) { + isSoundTopType(t) { var kind = t._kind; return kind === 2 || kind === 3 || kind === 4 || kind === 5 || t === type$.nullable_Object; }, @@ -2918,7 +3178,7 @@ var _ = this; _._as = t0; _._is = t1; - _._cachedRuntimeType = _._specializedTestResource = _._precomputed1 = null; + _._cachedRuntimeType = _._specializedTestResource = _._isSubtypeCache = _._precomputed1 = null; _._kind = 0; _._canonicalRecipe = _._bindCache = _._evalCache = _._rest = _._primary = null; }, @@ -2934,10 +3194,11 @@ this.__rti$_message = t0; }, _AsyncRun__initializeScheduleImmediate() { - var div, span, t1 = {}; + var t1, div, span; if (self.scheduleImmediate != null) return A.async__AsyncRun__scheduleImmediateJsOverride$closure(); if (self.MutationObserver != null && self.document != null) { + t1 = {}; div = self.document.createElement("div"); span = self.document.createElement("span"); t1.storedCallback = null; @@ -2974,7 +3235,7 @@ A._awaitOnObject(object, bodyFunction); }, _asyncReturn(object, completer) { - completer.complete$1(0, object); + completer.complete$1(object); }, _asyncRethrow(object, completer) { completer.completeError$2(A.unwrapException(object), A.getTraceFromException(object)); @@ -2987,7 +3248,7 @@ object._thenAwait$1$2(thenCallback, errorCallback, type$.dynamic); else { t1 = type$.dynamic; - if (type$.Future_dynamic._is(object)) + if (object instanceof A._Future) object.then$1$2$onError(thenCallback, errorCallback, t1); else { future = new A._Future($.Zone__current, type$._Future_dynamic); @@ -3000,7 +3261,7 @@ _wrapJsFunctionForAsync($function) { var $protected = function(fn, ERROR) { return function(errorCode, result) { - while (true) + while (true) { try { fn(errorCode, result); break; @@ -3008,14 +3269,11 @@ result = error; errorCode = ERROR; } + } }; }($function, 1); return $.Zone__current.registerBinaryCallback$3$1(new A._wrapJsFunctionForAsync_closure($protected), type$.void, type$.int, type$.dynamic); }, - AsyncError$(error, stackTrace) { - var t1 = A.checkNotNullable(error, "error", type$.Object); - return new A.AsyncError(t1, stackTrace == null ? A.AsyncError_defaultStackTrace(error) : stackTrace); - }, AsyncError_defaultStackTrace(error) { var stackTrace; if (type$.Error._is(error)) { @@ -3025,20 +3283,62 @@ } return B.C__StringStackTrace; }, - _Future__chainCoreFuture(source, target) { - var t1, t2, listeners; - for (t1 = type$._Future_dynamic; t2 = source._state, (t2 & 4) !== 0;) - source = t1._as(source._resultOrListeners); - if ((t2 & 24) !== 0) { - listeners = target._removeListeners$0(); - target._cloneResult$1(source); - A._Future__propagateToListeners(target, listeners); - } else { + _interceptError(error, stackTrace) { + if ($.Zone__current === B.C__RootZone) + return null; + return null; + }, + _interceptUserError(error, stackTrace) { + if ($.Zone__current !== B.C__RootZone) + A._interceptError(error, stackTrace); + if (stackTrace == null) + if (type$.Error._is(error)) { + stackTrace = error.get$stackTrace(); + if (stackTrace == null) { + A.Primitives_trySetStackTrace(error, B.C__StringStackTrace); + stackTrace = B.C__StringStackTrace; + } + } else + stackTrace = B.C__StringStackTrace; + else if (type$.Error._is(error)) + A.Primitives_trySetStackTrace(error, stackTrace); + return new A.AsyncError(error, stackTrace); + }, + _Future__chainCoreFuture(source, target, sync) { + var t2, t3, ignoreError, listeners, _box_0 = {}, + t1 = _box_0.source = source; + for (t2 = type$._Future_dynamic; t3 = t1._state, (t3 & 4) !== 0; t1 = source) { + source = t2._as(t1._resultOrListeners); + _box_0.source = source; + } + if (t1 === target) { + target._asyncCompleteError$2(new A.ArgumentError(true, t1, null, "Cannot complete a future with itself"), A.StackTrace_current()); + return; + } + ignoreError = target._state & 1; + t2 = t1._state = t3 | ignoreError; + if ((t2 & 24) === 0) { listeners = type$.nullable__FutureListener_dynamic_dynamic._as(target._resultOrListeners); target._state = target._state & 1 | 4; - target._resultOrListeners = source; - source._prependListeners$1(listeners); + target._resultOrListeners = t1; + t1._prependListeners$1(listeners); + return; + } + if (!sync) + if (target._resultOrListeners == null) + t1 = (t2 & 16) === 0 || ignoreError !== 0; + else + t1 = false; + else + t1 = true; + if (t1) { + listeners = target._removeListeners$0(); + target._cloneResult$1(_box_0.source); + A._Future__propagateToListeners(target, listeners); + return; } + target._state ^= 2; + A._rootScheduleMicrotask(null, null, target._zone, type$.void_Function._as(new A._Future__chainCoreFuture_closure(_box_0, target))); }, _Future__propagateToListeners(source, listeners) { var t2, t3, t4, _box_0, t5, t6, hasError, asyncError, nextListener, nextListener0, sourceResult, t7, zone, oldZone, result, current, _box_1 = {}, @@ -3100,7 +3400,7 @@ if (oldZone != null) $.Zone__current = oldZone; t1 = _box_0.listenerValueOrError; - if (t4._is(t1)) { + if (t1 instanceof A._Future) { t5 = _box_0.listener.$ti; t5 = t5._eval$1("Future<2>")._is(t1) || !t5._rest[1]._is(t1); } else @@ -3117,7 +3417,7 @@ _box_1.source = t1; continue; } else - A._Future__chainCoreFuture(t1, result); + A._Future__chainCoreFuture(t1, result, true); return; } } @@ -3203,23 +3503,35 @@ } }, scheduleMicrotask(callback) { - var t1, _null = null, + var _null = null, currentZone = $.Zone__current; if (B.C__RootZone === currentZone) { A._rootScheduleMicrotask(_null, _null, B.C__RootZone, callback); return; } - t1 = false; - if (t1) { - A._rootScheduleMicrotask(_null, _null, currentZone, type$.void_Function._as(callback)); - return; - } A._rootScheduleMicrotask(_null, _null, currentZone, type$.void_Function._as(currentZone.bindCallbackGuarded$1(callback))); }, StreamIterator_StreamIterator(stream, $T) { A.checkNotNullable(stream, "stream", type$.Object); return new A._StreamIterator($T._eval$1("_StreamIterator<0>")); }, + _runGuarded(notificationHandler) { + return; + }, + _BufferingStreamSubscription__registerErrorHandler(zone, handleError) { + if (handleError == null) + handleError = A.async___nullErrorHandler$closure(); + if (type$.void_Function_Object_StackTrace._is(handleError)) + return zone.registerBinaryCallback$3$1(handleError, type$.dynamic, type$.Object, type$.StackTrace); + if (type$.void_Function_Object._is(handleError)) + return type$.dynamic_Function_Object._as(handleError); + throw A.wrapException(A.ArgumentError$("handleError callback must take either an Object (the error), or both an Object (the error) and a StackTrace.", null)); + }, + _nullErrorHandler(error, stackTrace) { + A._rootHandleError(error, stackTrace); + }, + _nullDoneHandler() { + }, _rootHandleError(error, stackTrace) { A._schedulePriorityAsyncCallback(new A._rootHandleError_closure(error, stackTrace)); }, @@ -3309,6 +3621,35 @@ this.error = t0; this.stackTrace = t1; }, + _BroadcastStream: function _BroadcastStream(t0, t1) { + this._async$_controller = t0; + this.$ti = t1; + }, + _BroadcastSubscription: function _BroadcastSubscription(t0, t1, t2, t3, t4) { + var _ = this; + _._eventState = 0; + _._async$_previous = _._async$_next = null; + _._async$_controller = t0; + _._onData = t1; + _._zone = t2; + _._state = t3; + _._pending = null; + _.$ti = t4; + }, + _BroadcastStreamController: function _BroadcastStreamController() { + }, + _SyncBroadcastStreamController: function _SyncBroadcastStreamController(t0, t1, t2) { + var _ = this; + _.onListen = t0; + _.onCancel = t1; + _._state = 0; + _._lastSubscription = _._firstSubscription = null; + _.$ti = t2; + }, + _SyncBroadcastStreamController__sendData_closure: function _SyncBroadcastStreamController__sendData_closure(t0, t1) { + this.$this = t0; + this.data = t1; + }, _Completer: function _Completer() { }, _AsyncCompleter: function _AsyncCompleter(t0, t1) { @@ -3350,11 +3691,11 @@ this.e = t1; this.s = t2; }, - _Future__asyncCompleteWithValue_closure: function _Future__asyncCompleteWithValue_closure(t0, t1) { - this.$this = t0; - this.value = t1; + _Future__chainCoreFuture_closure: function _Future__chainCoreFuture_closure(t0, t1) { + this._box_0 = t0; + this.target = t1; }, - _Future__chainFuture_closure: function _Future__chainFuture_closure(t0, t1) { + _Future__asyncCompleteWithValue_closure: function _Future__asyncCompleteWithValue_closure(t0, t1) { this.$this = t0; this.value = t1; }, @@ -3368,8 +3709,12 @@ this._box_1 = t1; this.hasError = t2; }, - _Future__propagateToListeners_handleWhenCompleteCallback_closure: function _Future__propagateToListeners_handleWhenCompleteCallback_closure(t0) { - this.originalSource = t0; + _Future__propagateToListeners_handleWhenCompleteCallback_closure: function _Future__propagateToListeners_handleWhenCompleteCallback_closure(t0, t1) { + this.joinedResult = t0; + this.originalSource = t1; + }, + _Future__propagateToListeners_handleWhenCompleteCallback_closure0: function _Future__propagateToListeners_handleWhenCompleteCallback_closure0(t0) { + this.joinedResult = t0; }, _Future__propagateToListeners_handleValueCallback: function _Future__propagateToListeners_handleValueCallback(t0, t1) { this._box_0 = t0; @@ -3393,9 +3738,37 @@ this._box_0 = t0; this.future = t1; }, - StreamSubscription: function StreamSubscription() { + _ControllerStream: function _ControllerStream() { + }, + _ControllerSubscription: function _ControllerSubscription() { + }, + _BufferingStreamSubscription: function _BufferingStreamSubscription() { }, - StreamTransformerBase: function StreamTransformerBase() { + _StreamImpl: function _StreamImpl() { + }, + _DelayedEvent: function _DelayedEvent() { + }, + _DelayedData: function _DelayedData(t0, t1) { + this.value = t0; + this.next = null; + this.$ti = t1; + }, + _PendingEvents: function _PendingEvents(t0) { + var _ = this; + _._state = 0; + _.lastPendingEvent = _.firstPendingEvent = null; + _.$ti = t0; + }, + _PendingEvents_schedule_closure: function _PendingEvents_schedule_closure(t0, t1) { + this.$this = t0; + this.dispatch = t1; + }, + _DoneStreamSubscription: function _DoneStreamSubscription(t0, t1) { + var _ = this; + _._state = 1; + _._zone = t0; + _._onDone = null; + _.$ti = t1; }, _StreamIterator: function _StreamIterator(t0) { this.$ti = t0; @@ -3412,11 +3785,6 @@ this.$this = t0; this.f = t1; }, - _RootZone_bindUnaryCallbackGuarded_closure: function _RootZone_bindUnaryCallbackGuarded_closure(t0, t1, t2) { - this.$this = t0; - this.f = t1; - this.T = t2; - }, _HashMap__getTableEntry(table, key) { var entry = table[key]; return entry === table ? null : entry; @@ -3439,148 +3807,24 @@ LinkedHashMap_LinkedHashMap$_empty($K, $V) { return new A.JsLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsLinkedHashMap<1,2>")); }, - IterableBase_iterableToShortString(iterable, leftDelimiter, rightDelimiter) { - var parts, t1; - if (A._isToStringVisiting(iterable)) { - if (leftDelimiter === "(" && rightDelimiter === ")") - return "(...)"; - return leftDelimiter + "..." + rightDelimiter; - } - parts = A._setArrayType([], type$.JSArray_String); - B.JSArray_methods.add$1($._toStringVisiting, iterable); + MapBase_mapToString(m) { + var result, t1; + if (A.isToStringVisiting(m)) + return "{...}"; + result = new A.StringBuffer(""); try { - A._iterablePartsToStrings(iterable, parts); + t1 = {}; + B.JSArray_methods.add$1($.toStringVisiting, m); + result._contents += "{"; + t1.first = true; + m.forEach$1(0, new A.MapBase_mapToString_closure(t1, result)); + result._contents += "}"; } finally { - if (0 >= $._toStringVisiting.length) - return A.ioore($._toStringVisiting, -1); - $._toStringVisiting.pop(); + if (0 >= $.toStringVisiting.length) + return A.ioore($.toStringVisiting, -1); + $.toStringVisiting.pop(); } - t1 = A.StringBuffer__writeAll(leftDelimiter, type$.Iterable_dynamic._as(parts), ", ") + rightDelimiter; - return t1.charCodeAt(0) == 0 ? t1 : t1; - }, - IterableBase_iterableToFullString(iterable, leftDelimiter, rightDelimiter) { - var buffer, t1; - if (A._isToStringVisiting(iterable)) - return leftDelimiter + "..." + rightDelimiter; - buffer = new A.StringBuffer(leftDelimiter); - B.JSArray_methods.add$1($._toStringVisiting, iterable); - try { - t1 = buffer; - t1._contents = A.StringBuffer__writeAll(t1._contents, iterable, ", "); - } finally { - if (0 >= $._toStringVisiting.length) - return A.ioore($._toStringVisiting, -1); - $._toStringVisiting.pop(); - } - buffer._contents += rightDelimiter; - t1 = buffer._contents; - return t1.charCodeAt(0) == 0 ? t1 : t1; - }, - _isToStringVisiting(o) { - var t1, i; - for (t1 = $._toStringVisiting.length, i = 0; i < t1; ++i) - if (o === $._toStringVisiting[i]) - return true; - return false; - }, - _iterablePartsToStrings(iterable, parts) { - var next, ultimateString, penultimateString, penultimate, ultimate, ultimate0, elision, - it = iterable.get$iterator(iterable), - $length = 0, count = 0; - while (true) { - if (!($length < 80 || count < 3)) - break; - if (!it.moveNext$0()) - return; - next = A.S(it.get$current(it)); - B.JSArray_methods.add$1(parts, next); - $length += next.length + 2; - ++count; - } - if (!it.moveNext$0()) { - if (count <= 5) - return; - if (0 >= parts.length) - return A.ioore(parts, -1); - ultimateString = parts.pop(); - if (0 >= parts.length) - return A.ioore(parts, -1); - penultimateString = parts.pop(); - } else { - penultimate = it.get$current(it); - ++count; - if (!it.moveNext$0()) { - if (count <= 4) { - B.JSArray_methods.add$1(parts, A.S(penultimate)); - return; - } - ultimateString = A.S(penultimate); - if (0 >= parts.length) - return A.ioore(parts, -1); - penultimateString = parts.pop(); - $length += ultimateString.length + 2; - } else { - ultimate = it.get$current(it); - ++count; - for (; it.moveNext$0(); penultimate = ultimate, ultimate = ultimate0) { - ultimate0 = it.get$current(it); - ++count; - if (count > 100) { - while (true) { - if (!($length > 75 && count > 3)) - break; - if (0 >= parts.length) - return A.ioore(parts, -1); - $length -= parts.pop().length + 2; - --count; - } - B.JSArray_methods.add$1(parts, "..."); - return; - } - } - penultimateString = A.S(penultimate); - ultimateString = A.S(ultimate); - $length += ultimateString.length + penultimateString.length + 4; - } - } - if (count > parts.length + 2) { - $length += 5; - elision = "..."; - } else - elision = null; - while (true) { - if (!($length > 80 && parts.length > 3)) - break; - if (0 >= parts.length) - return A.ioore(parts, -1); - $length -= parts.pop().length + 2; - if (elision == null) { - $length += 5; - elision = "..."; - } - } - if (elision != null) - B.JSArray_methods.add$1(parts, elision); - B.JSArray_methods.add$1(parts, penultimateString); - B.JSArray_methods.add$1(parts, ultimateString); - }, - MapBase_mapToString(m) { - var result, t1 = {}; - if (A._isToStringVisiting(m)) - return "{...}"; - result = new A.StringBuffer(""); - try { - B.JSArray_methods.add$1($._toStringVisiting, m); - result._contents += "{"; - t1.first = true; - J.forEach$1$x(m, new A.MapBase_mapToString_closure(t1, result)); - result._contents += "}"; - } finally { - if (0 >= $._toStringVisiting.length) - return A.ioore($._toStringVisiting, -1); - $._toStringVisiting.pop(); - } - t1 = result._contents; + t1 = result._contents; return t1.charCodeAt(0) == 0 ? t1 : t1; }, _HashMap: function _HashMap() { @@ -3588,7 +3832,7 @@ _IdentityHashMap: function _IdentityHashMap(t0) { var _ = this; _._collection$_length = 0; - _._keys = _._collection$_rest = _._collection$_nums = _._collection$_strings = null; + _._collection$_keys = _._collection$_rest = _._collection$_nums = _._collection$_strings = null; _.$ti = t0; }, _HashMapKeyIterable: function _HashMapKeyIterable(t0, t1) { @@ -3598,38 +3842,32 @@ _HashMapKeyIterator: function _HashMapKeyIterator(t0, t1, t2) { var _ = this; _._collection$_map = t0; - _._keys = t1; + _._collection$_keys = t1; _._offset = 0; _._collection$_current = null; _.$ti = t2; }, ListBase: function ListBase() { }, - ListMixin: function ListMixin() { - }, MapBase: function MapBase() { }, MapBase_mapToString_closure: function MapBase_mapToString_closure(t0, t1) { this._box_0 = t0; this.result = t1; }, - MapMixin: function MapMixin() { - }, _UnmodifiableMapMixin: function _UnmodifiableMapMixin() { }, MapView: function MapView() { }, UnmodifiableMapView: function UnmodifiableMapView() { }, - _ListBase_Object_ListMixin: function _ListBase_Object_ListMixin() { - }, _UnmodifiableMapView_MapView__UnmodifiableMapMixin: function _UnmodifiableMapView_MapView__UnmodifiableMapMixin() { }, _Base64Encoder_encodeChunk(alphabet, bytes, start, end, isLast, output, outputIndex, state) { - var t1, t2, i, byteOr, byte, outputIndex0, t3, outputIndex1, + var t1, t2, t3, i, byteOr, byte, outputIndex0, t4, t5, outputIndex1, bits = state >>> 2, expectedChars = 3 - (state & 3); - for (t1 = bytes.length, t2 = output.length, i = start, byteOr = 0; i < end; ++i) { + for (t1 = bytes.length, t2 = alphabet.length, t3 = output.$flags | 0, i = start, byteOr = 0; i < end; ++i) { if (!(i < t1)) return A.ioore(bytes, i); byte = bytes[i]; @@ -3638,25 +3876,35 @@ --expectedChars; if (expectedChars === 0) { outputIndex0 = outputIndex + 1; - t3 = B.JSString_methods._codeUnitAt$1(alphabet, bits >>> 18 & 63); - if (!(outputIndex < t2)) + t4 = bits >>> 18 & 63; + if (!(t4 < t2)) + return A.ioore(alphabet, t4); + t3 & 2 && A.throwUnsupportedOperation(output); + t5 = output.length; + if (!(outputIndex < t5)) return A.ioore(output, outputIndex); - output[outputIndex] = t3; + output[outputIndex] = alphabet.charCodeAt(t4); outputIndex = outputIndex0 + 1; - t3 = B.JSString_methods._codeUnitAt$1(alphabet, bits >>> 12 & 63); - if (!(outputIndex0 < t2)) + t4 = bits >>> 12 & 63; + if (!(t4 < t2)) + return A.ioore(alphabet, t4); + if (!(outputIndex0 < t5)) return A.ioore(output, outputIndex0); - output[outputIndex0] = t3; + output[outputIndex0] = alphabet.charCodeAt(t4); outputIndex0 = outputIndex + 1; - t3 = B.JSString_methods._codeUnitAt$1(alphabet, bits >>> 6 & 63); - if (!(outputIndex < t2)) + t4 = bits >>> 6 & 63; + if (!(t4 < t2)) + return A.ioore(alphabet, t4); + if (!(outputIndex < t5)) return A.ioore(output, outputIndex); - output[outputIndex] = t3; + output[outputIndex] = alphabet.charCodeAt(t4); outputIndex = outputIndex0 + 1; - t3 = B.JSString_methods._codeUnitAt$1(alphabet, bits & 63); - if (!(outputIndex0 < t2)) + t4 = bits & 63; + if (!(t4 < t2)) + return A.ioore(alphabet, t4); + if (!(outputIndex0 < t5)) return A.ioore(output, outputIndex0); - output[outputIndex0] = t3; + output[outputIndex0] = alphabet.charCodeAt(t4); bits = 0; expectedChars = 3; } @@ -3666,36 +3914,50 @@ outputIndex0 = outputIndex + 1; outputIndex1 = outputIndex0 + 1; if (3 - expectedChars === 1) { - t1 = B.JSString_methods._codeUnitAt$1(alphabet, bits >>> 2 & 63); - if (!(outputIndex < t2)) + t1 = bits >>> 2 & 63; + if (!(t1 < t2)) + return A.ioore(alphabet, t1); + t3 & 2 && A.throwUnsupportedOperation(output); + t3 = output.length; + if (!(outputIndex < t3)) return A.ioore(output, outputIndex); - output[outputIndex] = t1; - t1 = B.JSString_methods._codeUnitAt$1(alphabet, bits << 4 & 63); - if (!(outputIndex0 < t2)) + output[outputIndex] = alphabet.charCodeAt(t1); + t1 = bits << 4 & 63; + if (!(t1 < t2)) + return A.ioore(alphabet, t1); + if (!(outputIndex0 < t3)) return A.ioore(output, outputIndex0); - output[outputIndex0] = t1; + output[outputIndex0] = alphabet.charCodeAt(t1); outputIndex = outputIndex1 + 1; - if (!(outputIndex1 < t2)) + if (!(outputIndex1 < t3)) return A.ioore(output, outputIndex1); output[outputIndex1] = 61; - if (!(outputIndex < t2)) + if (!(outputIndex < t3)) return A.ioore(output, outputIndex); output[outputIndex] = 61; } else { - t1 = B.JSString_methods._codeUnitAt$1(alphabet, bits >>> 10 & 63); - if (!(outputIndex < t2)) + t1 = bits >>> 10 & 63; + if (!(t1 < t2)) + return A.ioore(alphabet, t1); + t3 & 2 && A.throwUnsupportedOperation(output); + t3 = output.length; + if (!(outputIndex < t3)) return A.ioore(output, outputIndex); - output[outputIndex] = t1; - t1 = B.JSString_methods._codeUnitAt$1(alphabet, bits >>> 4 & 63); - if (!(outputIndex0 < t2)) + output[outputIndex] = alphabet.charCodeAt(t1); + t1 = bits >>> 4 & 63; + if (!(t1 < t2)) + return A.ioore(alphabet, t1); + if (!(outputIndex0 < t3)) return A.ioore(output, outputIndex0); - output[outputIndex0] = t1; + output[outputIndex0] = alphabet.charCodeAt(t1); outputIndex = outputIndex1 + 1; - t1 = B.JSString_methods._codeUnitAt$1(alphabet, bits << 2 & 63); - if (!(outputIndex1 < t2)) + t1 = bits << 2 & 63; + if (!(t1 < t2)) + return A.ioore(alphabet, t1); + if (!(outputIndex1 < t3)) return A.ioore(output, outputIndex1); - output[outputIndex1] = t1; - if (!(outputIndex < t2)) + output[outputIndex1] = alphabet.charCodeAt(t1); + if (!(outputIndex < t3)) return A.ioore(output, outputIndex); output[outputIndex] = 61; } @@ -3716,33 +3978,37 @@ throw A.wrapException(A.ArgumentError$value(bytes, "Not a byte value at index " + i + ": 0x" + B.JSInt_methods.toRadixString$1(bytes[i], 16), null)); }, _Base64Decoder_decodeChunk(input, start, end, output, outIndex, state) { - var t1, t2, i, charOr, char, t3, code, outIndex0, expectedPadding, + var t1, t2, t3, i, charOr, char, t4, code, outIndex0, expectedPadding, _s31_ = "Invalid encoding before padding", _s17_ = "Invalid character", bits = B.JSInt_methods._shrOtherPositive$1(state, 2), count = state & 3, inverseAlphabet = $.$get$_Base64Decoder__inverseAlphabet(); - for (t1 = inverseAlphabet.length, t2 = output.length, i = start, charOr = 0; i < end; ++i) { - char = B.JSString_methods._codeUnitAt$1(input, i); + for (t1 = input.length, t2 = inverseAlphabet.length, t3 = output.$flags | 0, i = start, charOr = 0; i < end; ++i) { + if (!(i < t1)) + return A.ioore(input, i); + char = input.charCodeAt(i); charOr |= char; - t3 = char & 127; - if (!(t3 < t1)) - return A.ioore(inverseAlphabet, t3); - code = inverseAlphabet[t3]; + t4 = char & 127; + if (!(t4 < t2)) + return A.ioore(inverseAlphabet, t4); + code = inverseAlphabet[t4]; if (code >= 0) { bits = (bits << 6 | code) & 16777215; count = count + 1 & 3; if (count === 0) { outIndex0 = outIndex + 1; - if (!(outIndex < t2)) + t3 & 2 && A.throwUnsupportedOperation(output); + t4 = output.length; + if (!(outIndex < t4)) return A.ioore(output, outIndex); output[outIndex] = bits >>> 16 & 255; outIndex = outIndex0 + 1; - if (!(outIndex0 < t2)) + if (!(outIndex0 < t4)) return A.ioore(output, outIndex0); output[outIndex0] = bits >>> 8 & 255; outIndex0 = outIndex + 1; - if (!(outIndex < t2)) + if (!(outIndex < t4)) return A.ioore(output, outIndex); output[outIndex] = bits & 255; outIndex = outIndex0; @@ -3756,16 +4022,19 @@ if ((bits & 3) !== 0) throw A.wrapException(A.FormatException$(_s31_, input, i)); outIndex0 = outIndex + 1; - if (!(outIndex < t2)) + t3 & 2 && A.throwUnsupportedOperation(output); + t1 = output.length; + if (!(outIndex < t1)) return A.ioore(output, outIndex); output[outIndex] = bits >>> 10; - if (!(outIndex0 < t2)) + if (!(outIndex0 < t1)) return A.ioore(output, outIndex0); output[outIndex0] = bits >>> 2; } else { if ((bits & 15) !== 0) throw A.wrapException(A.FormatException$(_s31_, input, i)); - if (!(outIndex < t2)) + t3 & 2 && A.throwUnsupportedOperation(output); + if (!(outIndex < output.length)) return A.ioore(output, outIndex); output[outIndex] = bits >>> 4; } @@ -3779,8 +4048,9 @@ if (charOr >= 0 && charOr <= 127) return (bits << 2 | count) >>> 0; for (i = start; i < end; ++i) { - char = B.JSString_methods._codeUnitAt$1(input, i); - if (char > 127) + if (!(i < t1)) + return A.ioore(input, i); + if (input.charCodeAt(i) > 127) break; } throw A.wrapException(A.FormatException$(_s17_, input, i)); @@ -3798,6 +4068,7 @@ }, _Base64Decoder__trimPaddingChars(input, start, end) { var char, + t1 = input.length, newEnd = end, index = newEnd, padding = 0; @@ -3806,7 +4077,9 @@ break; c$0: { --index; - char = B.JSString_methods.codeUnitAt$1(input, index); + if (!(index >= 0 && index < t1)) + return A.ioore(input, index); + char = input.charCodeAt(index); if (char === 61) { ++padding; newEnd = index; @@ -3816,13 +4089,17 @@ if (index === start) break; --index; - char = B.JSString_methods.codeUnitAt$1(input, index); + if (!(index >= 0 && index < t1)) + return A.ioore(input, index); + char = input.charCodeAt(index); } if (char === 51) { if (index === start) break; --index; - char = B.JSString_methods.codeUnitAt$1(input, index); + if (!(index >= 0 && index < t1)) + return A.ioore(input, index); + char = input.charCodeAt(index); } if (char === 37) { ++padding; @@ -3835,12 +4112,14 @@ return newEnd; }, _Base64Decoder__checkPadding(input, start, end, state) { - var expectedPadding, char; + var expectedPadding, t1, char; if (start === end) return state; expectedPadding = -state - 1; - for (; expectedPadding > 0;) { - char = B.JSString_methods._codeUnitAt$1(input, start); + for (t1 = input.length; expectedPadding > 0;) { + if (!(start < t1)) + return A.ioore(input, start); + char = input.charCodeAt(start); if (expectedPadding === 3) { if (char === 61) { expectedPadding -= 3; @@ -3852,7 +4131,9 @@ ++start; if (start === end) break; - char = B.JSString_methods._codeUnitAt$1(input, start); + if (!(start < t1)) + return A.ioore(input, start); + char = input.charCodeAt(start); } else break; } @@ -3863,7 +4144,9 @@ --expectedPadding; if (start === end) break; - char = B.JSString_methods._codeUnitAt$1(input, start); + if (!(start < t1)) + return A.ioore(input, start); + char = input.charCodeAt(start); } if ((char | 32) !== 100) break; @@ -3893,11 +4176,6 @@ }, Converter: function Converter() { }, - Error__objectToString(object) { - if (object instanceof A.Closure) - return object.toString$0(0); - return "Instance of '" + A.Primitives_objectTypeName(object) + "'"; - }, Error__throw(error, stackTrace) { error = A.wrapException(error); if (error == null) @@ -3924,30 +4202,41 @@ return A._setArrayType(elements.slice(0), $E._eval$1("JSArray<0>")); list = A._setArrayType([], $E._eval$1("JSArray<0>")); for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();) - B.JSArray_methods.add$1(list, t1.get$current(t1)); + B.JSArray_methods.add$1(list, t1.get$current()); return list; }, String_String$fromCharCodes(charCodes) { - var t1 = A.Primitives_stringFromNativeUint8List(charCodes, 0, A.RangeError_checkValidRange(0, null, charCodes.length)); + var t1; + A.RangeError_checkNotNegative(0, "start"); + t1 = A.String__stringFromUint8List(charCodes, 0, null); return t1; }, + String__stringFromUint8List(charCodes, start, endOrNull) { + var len = charCodes.length; + if (start >= len) + return ""; + return A.Primitives_stringFromNativeUint8List(charCodes, start, len); + }, StringBuffer__writeAll(string, objects, separator) { var iterator = J.get$iterator$ax(objects); if (!iterator.moveNext$0()) return string; if (separator.length === 0) { do - string += A.S(iterator.get$current(iterator)); + string += A.S(iterator.get$current()); while (iterator.moveNext$0()); } else { - string += A.S(iterator.get$current(iterator)); + string += A.S(iterator.get$current()); for (; iterator.moveNext$0();) - string = string + separator + A.S(iterator.get$current(iterator)); + string = string + separator + A.S(iterator.get$current()); } return string; }, - NoSuchMethodError$_(receiver, memberName, positionalArguments, namedArguments, existingArgumentNames) { - return new A.NoSuchMethodError(receiver, memberName, positionalArguments, namedArguments, existingArgumentNames); + NoSuchMethodError_NoSuchMethodError$withInvocation(receiver, invocation) { + return new A.NoSuchMethodError(receiver, invocation.get$memberName(), invocation.get$positionalArguments(), invocation.get$namedArguments()); + }, + StackTrace_current() { + return A.getTraceFromException(new Error()); }, DateTime__fourDigits(n) { var absN = Math.abs(n), @@ -3977,7 +4266,12 @@ return J.toString$0$(object); if (typeof object == "string") return JSON.stringify(object); - return A.Error__objectToString(object); + return A.Primitives_safeToString(object); + }, + Error_throwWithStackTrace(error, stackTrace) { + A.checkNotNullable(error, "error", type$.Object); + A.checkNotNullable(stackTrace, "stackTrace", type$.StackTrace); + A.Error__throw(error, stackTrace); }, AssertionError$(message) { return new A.AssertionError(message); @@ -4030,25 +4324,138 @@ FormatException$(message, source, offset) { return new A.FormatException(message, source, offset); }, - Object_hash(object1, object2, object3, object4) { - var t2, - t1 = B.JSNumber_methods.get$hashCode(object1); - object2 = B.JSNumber_methods.get$hashCode(object2); - object3 = B.JSNumber_methods.get$hashCode(object3); - object4 = B.JSNumber_methods.get$hashCode(object4); - t2 = $.$get$_hashSeed(); - return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(t2, t1), object2), object3), object4)); + Iterable_iterableToShortString(iterable, leftDelimiter, rightDelimiter) { + var parts, t1; + if (A.isToStringVisiting(iterable)) { + if (leftDelimiter === "(" && rightDelimiter === ")") + return "(...)"; + return leftDelimiter + "..." + rightDelimiter; + } + parts = A._setArrayType([], type$.JSArray_String); + B.JSArray_methods.add$1($.toStringVisiting, iterable); + try { + A._iterablePartsToStrings(iterable, parts); + } finally { + if (0 >= $.toStringVisiting.length) + return A.ioore($.toStringVisiting, -1); + $.toStringVisiting.pop(); + } + t1 = A.StringBuffer__writeAll(leftDelimiter, type$.Iterable_dynamic._as(parts), ", ") + rightDelimiter; + return t1.charCodeAt(0) == 0 ? t1 : t1; + }, + Iterable_iterableToFullString(iterable, leftDelimiter, rightDelimiter) { + var buffer, t1; + if (A.isToStringVisiting(iterable)) + return leftDelimiter + "..." + rightDelimiter; + buffer = new A.StringBuffer(leftDelimiter); + B.JSArray_methods.add$1($.toStringVisiting, iterable); + try { + t1 = buffer; + t1._contents = A.StringBuffer__writeAll(t1._contents, iterable, ", "); + } finally { + if (0 >= $.toStringVisiting.length) + return A.ioore($.toStringVisiting, -1); + $.toStringVisiting.pop(); + } + buffer._contents += rightDelimiter; + t1 = buffer._contents; + return t1.charCodeAt(0) == 0 ? t1 : t1; + }, + _iterablePartsToStrings(iterable, parts) { + var next, ultimateString, penultimateString, penultimate, ultimate, ultimate0, elision, + it = iterable.get$iterator(iterable), + $length = 0, count = 0; + while (true) { + if (!($length < 80 || count < 3)) + break; + if (!it.moveNext$0()) + return; + next = A.S(it.get$current()); + B.JSArray_methods.add$1(parts, next); + $length += next.length + 2; + ++count; + } + if (!it.moveNext$0()) { + if (count <= 5) + return; + if (0 >= parts.length) + return A.ioore(parts, -1); + ultimateString = parts.pop(); + if (0 >= parts.length) + return A.ioore(parts, -1); + penultimateString = parts.pop(); + } else { + penultimate = it.get$current(); + ++count; + if (!it.moveNext$0()) { + if (count <= 4) { + B.JSArray_methods.add$1(parts, A.S(penultimate)); + return; + } + ultimateString = A.S(penultimate); + if (0 >= parts.length) + return A.ioore(parts, -1); + penultimateString = parts.pop(); + $length += ultimateString.length + 2; + } else { + ultimate = it.get$current(); + ++count; + for (; it.moveNext$0(); penultimate = ultimate, ultimate = ultimate0) { + ultimate0 = it.get$current(); + ++count; + if (count > 100) { + while (true) { + if (!($length > 75 && count > 3)) + break; + if (0 >= parts.length) + return A.ioore(parts, -1); + $length -= parts.pop().length + 2; + --count; + } + B.JSArray_methods.add$1(parts, "..."); + return; + } + } + penultimateString = A.S(penultimate); + ultimateString = A.S(ultimate); + $length += ultimateString.length + penultimateString.length + 4; + } + } + if (count > parts.length + 2) { + $length += 5; + elision = "..."; + } else + elision = null; + while (true) { + if (!($length > 80 && parts.length > 3)) + break; + if (0 >= parts.length) + return A.ioore(parts, -1); + $length -= parts.pop().length + 2; + if (elision == null) { + $length += 5; + elision = "..."; + } + } + if (elision != null) + B.JSArray_methods.add$1(parts, elision); + B.JSArray_methods.add$1(parts, penultimateString); + B.JSArray_methods.add$1(parts, ultimateString); }, - print(object) { - A.printString(object); + Object_hash(object1, object2) { + var t1 = B.JSInt_methods.get$hashCode(object1); + object2 = B.JSInt_methods.get$hashCode(object2); + object2 = A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine($.$get$_hashSeed(), t1), object2)); + return object2; }, NoSuchMethodError_toString_closure: function NoSuchMethodError_toString_closure(t0, t1) { this._box_0 = t0; this.sb = t1; }, - DateTime: function DateTime(t0, t1) { + DateTime: function DateTime(t0, t1, t2) { this._value = t0; - this.isUtc = t1; + this._microsecond = t1; + this.isUtc = t2; }, _Enum: function _Enum() { }, @@ -4059,8 +4466,6 @@ }, TypeError: function TypeError() { }, - NullThrownError: function NullThrownError() { - }, ArgumentError: function ArgumentError(t0, t1, t2, t3) { var _ = this; _._hasValue = t0; @@ -4085,13 +4490,12 @@ _.name = t3; _.message = t4; }, - NoSuchMethodError: function NoSuchMethodError(t0, t1, t2, t3, t4) { + NoSuchMethodError: function NoSuchMethodError(t0, t1, t2, t3) { var _ = this; _._core$_receiver = t0; _._core$_memberName = t1; _._core$_arguments = t2; _._namedArguments = t3; - _._existingArgumentNames = t4; }, UnsupportedError: function UnsupportedError(t0) { this.message = t0; @@ -4109,9 +4513,6 @@ }, StackOverflowError: function StackOverflowError() { }, - CyclicInitializationError: function CyclicInitializationError(t0) { - this.variableName = t0; - }, _Exception: function _Exception(t0) { this.message = t0; }, @@ -4122,8 +4523,6 @@ }, Iterable: function Iterable() { }, - Iterator: function Iterator() { - }, Null: function Null() { }, Object: function Object() { @@ -4133,357 +4532,59 @@ StringBuffer: function StringBuffer(t0) { this._contents = t0; }, - _EventStreamSubscription$(_target, _eventType, onData, _useCapture, $T) { - var t1 = A._wrapZone(new A._EventStreamSubscription_closure(onData), type$.Event); - if (t1 != null && true) - B.DedicatedWorkerGlobalScope_methods.addEventListener$3(_target, _eventType, t1, false); - return new A._EventStreamSubscription(_target, _eventType, t1, false, $T._eval$1("_EventStreamSubscription<0>")); - }, - _wrapZone(callback, $T) { - var t1 = $.Zone__current; - if (t1 === B.C__RootZone) - return callback; - return t1.bindUnaryCallbackGuarded$1$1(callback, $T); + _convertDartFunctionFast(f) { + var ret, + existing = f.$dart_jsFunction; + if (existing != null) + return existing; + ret = function(_call, f) { + return function() { + return _call(f, Array.prototype.slice.apply(arguments)); + }; + }(A._callDartFunctionFast, f); + ret[$.$get$DART_CLOSURE_PROPERTY_NAME()] = f; + f.$dart_jsFunction = ret; + return ret; }, - HtmlElement: function HtmlElement() { + _callDartFunctionFast(callback, $arguments) { + type$.List_dynamic._as($arguments); + type$.Function._as(callback); + return A.Primitives_applyFunction(callback, $arguments, null); }, - AccessibleNodeList: function AccessibleNodeList() { + allowInterop(f, $F) { + if (typeof f == "function") + return f; + else + return $F._as(A._convertDartFunctionFast(f)); }, - AnchorElement: function AnchorElement() { + _functionToJS1(f) { + var result; + if (typeof f == "function") + throw A.wrapException(A.ArgumentError$("Attempting to rewrap a JS function.", null)); + result = function(_call, f) { + return function(arg1) { + return _call(f, arg1, arguments.length); + }; + }(A._callDartFunctionFast1, f); + result[$.$get$DART_CLOSURE_PROPERTY_NAME()] = f; + return result; }, - AreaElement: function AreaElement() { + _callDartFunctionFast1(callback, arg1, $length) { + type$.Function._as(callback); + if (A._asInt($length) >= 1) + return callback.call$1(arg1); + return callback.call$0(); }, - Blob: function Blob() { + _noJsifyRequired(o) { + return o == null || A._isBool(o) || typeof o == "number" || typeof o == "string" || type$.Int8List._is(o) || type$.Uint8List._is(o) || type$.Uint8ClampedList._is(o) || type$.Int16List._is(o) || type$.Uint16List._is(o) || type$.Int32List._is(o) || type$.Uint32List._is(o) || type$.Float32List._is(o) || type$.Float64List._is(o) || type$.ByteBuffer._is(o) || type$.ByteData._is(o); }, - CharacterData: function CharacterData() { + jsify(object) { + if (A._noJsifyRequired(object)) + return object; + return new A.jsify__convert(new A._IdentityHashMap(type$._IdentityHashMap_of_nullable_Object_and_nullable_Object)).call$1(object); }, - CryptoKey: function CryptoKey() { - }, - CssPerspective: function CssPerspective() { - }, - CssRule: function CssRule() { - }, - CssStyleDeclaration: function CssStyleDeclaration() { - }, - CssStyleDeclarationBase: function CssStyleDeclarationBase() { - }, - CssStyleValue: function CssStyleValue() { - }, - CssTransformComponent: function CssTransformComponent() { - }, - CssTransformValue: function CssTransformValue() { - }, - CssUnparsedValue: function CssUnparsedValue() { - }, - DataTransferItem: function DataTransferItem() { - }, - DataTransferItemList: function DataTransferItemList() { - }, - DedicatedWorkerGlobalScope: function DedicatedWorkerGlobalScope() { - }, - DomException: function DomException() { - }, - DomRectList: function DomRectList() { - }, - DomRectReadOnly: function DomRectReadOnly() { - }, - DomStringList: function DomStringList() { - }, - DomTokenList: function DomTokenList() { - }, - Element: function Element() { - }, - Event: function Event() { - }, - EventTarget: function EventTarget() { - }, - File: function File() { - }, - FileList: function FileList() { - }, - FileWriter: function FileWriter() { - }, - FormElement: function FormElement() { - }, - Gamepad: function Gamepad() { - }, - History: function History() { - }, - HtmlCollection: function HtmlCollection() { - }, - ImageData: function ImageData() { - }, - Location: function Location() { - }, - MediaDeviceInfo: function MediaDeviceInfo() { - }, - MediaList: function MediaList() { - }, - MediaStreamTrack: function MediaStreamTrack() { - }, - MessageEvent: function MessageEvent() { - }, - MessagePort: function MessagePort() { - }, - MidiInputMap: function MidiInputMap() { - }, - MidiInputMap_keys_closure: function MidiInputMap_keys_closure(t0) { - this.keys = t0; - }, - MidiOutputMap: function MidiOutputMap() { - }, - MidiOutputMap_keys_closure: function MidiOutputMap_keys_closure(t0) { - this.keys = t0; - }, - MimeType: function MimeType() { - }, - MimeTypeArray: function MimeTypeArray() { - }, - Node: function Node() { - }, - NodeList: function NodeList() { - }, - Plugin: function Plugin() { - }, - PluginArray: function PluginArray() { - }, - RtcStatsReport: function RtcStatsReport() { - }, - RtcStatsReport_keys_closure: function RtcStatsReport_keys_closure(t0) { - this.keys = t0; - }, - SelectElement: function SelectElement() { - }, - SharedArrayBuffer: function SharedArrayBuffer() { - }, - SourceBuffer: function SourceBuffer() { - }, - SourceBufferList: function SourceBufferList() { - }, - SpeechGrammar: function SpeechGrammar() { - }, - SpeechGrammarList: function SpeechGrammarList() { - }, - SpeechRecognitionResult: function SpeechRecognitionResult() { - }, - Storage: function Storage() { - }, - Storage_keys_closure: function Storage_keys_closure(t0) { - this.keys = t0; - }, - StyleSheet: function StyleSheet() { - }, - TextTrack: function TextTrack() { - }, - TextTrackCue: function TextTrackCue() { - }, - TextTrackCueList: function TextTrackCueList() { - }, - TextTrackList: function TextTrackList() { - }, - TimeRanges: function TimeRanges() { - }, - Touch: function Touch() { - }, - TouchList: function TouchList() { - }, - TrackDefaultList: function TrackDefaultList() { - }, - TrackElement: function TrackElement() { - }, - Url: function Url() { - }, - VideoTrack: function VideoTrack() { - }, - VideoTrackList: function VideoTrackList() { - }, - WorkerGlobalScope: function WorkerGlobalScope() { - }, - _CssRuleList: function _CssRuleList() { - }, - _DomRect: function _DomRect() { - }, - _GamepadList: function _GamepadList() { - }, - _NamedNodeMap: function _NamedNodeMap() { - }, - _SpeechRecognitionResultList: function _SpeechRecognitionResultList() { - }, - _StyleSheetList: function _StyleSheetList() { - }, - EventStreamProvider: function EventStreamProvider(t0) { - this.$ti = t0; - }, - _EventStream: function _EventStream(t0, t1, t2, t3) { - var _ = this; - _._target = t0; - _._eventType = t1; - _._useCapture = t2; - _.$ti = t3; - }, - _EventStreamSubscription: function _EventStreamSubscription(t0, t1, t2, t3, t4) { - var _ = this; - _._target = t0; - _._eventType = t1; - _._onData = t2; - _._useCapture = t3; - _.$ti = t4; - }, - _EventStreamSubscription_closure: function _EventStreamSubscription_closure(t0) { - this.onData = t0; - }, - ImmutableListMixin: function ImmutableListMixin() { - }, - FixedSizeListIterator: function FixedSizeListIterator(t0, t1, t2) { - var _ = this; - _._array = t0; - _._html$_length = t1; - _._position = -1; - _._html$_current = null; - _.$ti = t2; - }, - _CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase: function _CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase() { - }, - _DomRectList_JavaScriptObject_ListMixin: function _DomRectList_JavaScriptObject_ListMixin() { - }, - _DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin: function _DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - _DomStringList_JavaScriptObject_ListMixin: function _DomStringList_JavaScriptObject_ListMixin() { - }, - _DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin: function _DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - _FileList_JavaScriptObject_ListMixin: function _FileList_JavaScriptObject_ListMixin() { - }, - _FileList_JavaScriptObject_ListMixin_ImmutableListMixin: function _FileList_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - _HtmlCollection_JavaScriptObject_ListMixin: function _HtmlCollection_JavaScriptObject_ListMixin() { - }, - _HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin: function _HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - _MidiInputMap_JavaScriptObject_MapMixin: function _MidiInputMap_JavaScriptObject_MapMixin() { - }, - _MidiOutputMap_JavaScriptObject_MapMixin: function _MidiOutputMap_JavaScriptObject_MapMixin() { - }, - _MimeTypeArray_JavaScriptObject_ListMixin: function _MimeTypeArray_JavaScriptObject_ListMixin() { - }, - _MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin: function _MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - _NodeList_JavaScriptObject_ListMixin: function _NodeList_JavaScriptObject_ListMixin() { - }, - _NodeList_JavaScriptObject_ListMixin_ImmutableListMixin: function _NodeList_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - _PluginArray_JavaScriptObject_ListMixin: function _PluginArray_JavaScriptObject_ListMixin() { - }, - _PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin: function _PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - _RtcStatsReport_JavaScriptObject_MapMixin: function _RtcStatsReport_JavaScriptObject_MapMixin() { - }, - _SourceBufferList_EventTarget_ListMixin: function _SourceBufferList_EventTarget_ListMixin() { - }, - _SourceBufferList_EventTarget_ListMixin_ImmutableListMixin: function _SourceBufferList_EventTarget_ListMixin_ImmutableListMixin() { - }, - _SpeechGrammarList_JavaScriptObject_ListMixin: function _SpeechGrammarList_JavaScriptObject_ListMixin() { - }, - _SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin: function _SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - _Storage_JavaScriptObject_MapMixin: function _Storage_JavaScriptObject_MapMixin() { - }, - _TextTrackCueList_JavaScriptObject_ListMixin: function _TextTrackCueList_JavaScriptObject_ListMixin() { - }, - _TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin: function _TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - _TextTrackList_EventTarget_ListMixin: function _TextTrackList_EventTarget_ListMixin() { - }, - _TextTrackList_EventTarget_ListMixin_ImmutableListMixin: function _TextTrackList_EventTarget_ListMixin_ImmutableListMixin() { - }, - _TouchList_JavaScriptObject_ListMixin: function _TouchList_JavaScriptObject_ListMixin() { - }, - _TouchList_JavaScriptObject_ListMixin_ImmutableListMixin: function _TouchList_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - __CssRuleList_JavaScriptObject_ListMixin: function __CssRuleList_JavaScriptObject_ListMixin() { - }, - __CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin: function __CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - __GamepadList_JavaScriptObject_ListMixin: function __GamepadList_JavaScriptObject_ListMixin() { - }, - __GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin: function __GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - __NamedNodeMap_JavaScriptObject_ListMixin: function __NamedNodeMap_JavaScriptObject_ListMixin() { - }, - __NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin: function __NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - __SpeechRecognitionResultList_JavaScriptObject_ListMixin: function __SpeechRecognitionResultList_JavaScriptObject_ListMixin() { - }, - __SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin: function __SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - __StyleSheetList_JavaScriptObject_ListMixin: function __StyleSheetList_JavaScriptObject_ListMixin() { - }, - __StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin: function __StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - _convertNativeToDart_Value(value) { - var values, i; - if (value == null) - return value; - if (typeof value == "string" || typeof value == "number" || A._isBool(value)) - return value; - if (A.isJavaScriptSimpleObject(value)) - return A.convertNativeToDart_Dictionary(value); - if (Array.isArray(value)) { - values = []; - for (i = 0; i < value.length; ++i) - values.push(A._convertNativeToDart_Value(value[i])); - return values; - } - return value; - }, - convertNativeToDart_Dictionary(object) { - var dict, keys, t1, _i, key; - if (object == null) - return null; - dict = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.dynamic); - keys = Object.getOwnPropertyNames(object); - for (t1 = keys.length, _i = 0; _i < keys.length; keys.length === t1 || (0, A.throwConcurrentModificationError)(keys), ++_i) { - key = keys[_i]; - dict.$indexSet(0, key, A._convertNativeToDart_Value(object[key])); - } - return dict; - }, - isJavaScriptSimpleObject(value) { - var proto = Object.getPrototypeOf(value); - return proto === Object.prototype || proto === null; - }, - _StructuredClone: function _StructuredClone() { - }, - _StructuredClone_walk_closure: function _StructuredClone_walk_closure(t0, t1) { - this._box_0 = t0; - this.$this = t1; - }, - _StructuredClone_walk_closure0: function _StructuredClone_walk_closure0(t0, t1) { - this._box_0 = t0; - this.$this = t1; - }, - _AcceptStructuredClone: function _AcceptStructuredClone() { - }, - _AcceptStructuredClone_walk_closure: function _AcceptStructuredClone_walk_closure(t0, t1) { - this.$this = t0; - this.map = t1; - }, - _StructuredCloneDart2Js: function _StructuredCloneDart2Js(t0, t1) { - this.values = t0; - this.copies = t1; - }, - _AcceptStructuredCloneDart2Js: function _AcceptStructuredCloneDart2Js(t0, t1) { - this.values = t0; - this.copies = t1; - this.mustCopy = false; - }, - jsify(object) { - return A._convertDataTree(object); - }, - _convertDataTree(data) { - var t1 = new A._convertDataTree__convert(new A._IdentityHashMap(type$._IdentityHashMap_dynamic_dynamic)).call$1(data); - t1.toString; - return t1; + callMethod(o, method, args, $T) { + return $T._as(o[method].apply(o, args)); }, promiseToFuture(jsPromise, $T) { var t1 = new A._Future($.Zone__current, $T._eval$1("_Future<0>")), @@ -4491,7 +4592,15 @@ jsPromise.then(A.convertDartClosureToJS(new A.promiseToFuture_closure(completer, $T), 1), A.convertDartClosureToJS(new A.promiseToFuture_closure0(completer), 1)); return t1; }, - _convertDataTree__convert: function _convertDataTree__convert(t0) { + _noDartifyRequired(o) { + return o == null || typeof o === "boolean" || typeof o === "number" || typeof o === "string" || o instanceof Int8Array || o instanceof Uint8Array || o instanceof Uint8ClampedArray || o instanceof Int16Array || o instanceof Uint16Array || o instanceof Int32Array || o instanceof Uint32Array || o instanceof Float32Array || o instanceof Float64Array || o instanceof ArrayBuffer || o instanceof DataView; + }, + dartify(o) { + if (A._noDartifyRequired(o)) + return o; + return new A.dartify_convert(new A._IdentityHashMap(type$._IdentityHashMap_of_nullable_Object_and_nullable_Object)).call$1(o); + }, + jsify__convert: function jsify__convert(t0) { this._convertedObjects = t0; }, promiseToFuture_closure: function promiseToFuture_closure(t0, t1) { @@ -4501,126 +4610,15 @@ promiseToFuture_closure0: function promiseToFuture_closure0(t0) { this.completer = t0; }, + dartify_convert: function dartify_convert(t0) { + this._convertedObjects = t0; + }, NullRejectionException: function NullRejectionException(t0) { this.isUndefined = t0; }, _JSSecureRandom: function _JSSecureRandom(t0) { this._math$_buffer = t0; }, - Length: function Length() { - }, - LengthList: function LengthList() { - }, - Number: function Number() { - }, - NumberList: function NumberList() { - }, - PointList: function PointList() { - }, - StringList: function StringList() { - }, - Transform: function Transform() { - }, - TransformList: function TransformList() { - }, - _LengthList_JavaScriptObject_ListMixin: function _LengthList_JavaScriptObject_ListMixin() { - }, - _LengthList_JavaScriptObject_ListMixin_ImmutableListMixin: function _LengthList_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - _NumberList_JavaScriptObject_ListMixin: function _NumberList_JavaScriptObject_ListMixin() { - }, - _NumberList_JavaScriptObject_ListMixin_ImmutableListMixin: function _NumberList_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - _StringList_JavaScriptObject_ListMixin: function _StringList_JavaScriptObject_ListMixin() { - }, - _StringList_JavaScriptObject_ListMixin_ImmutableListMixin: function _StringList_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - _TransformList_JavaScriptObject_ListMixin: function _TransformList_JavaScriptObject_ListMixin() { - }, - _TransformList_JavaScriptObject_ListMixin_ImmutableListMixin: function _TransformList_JavaScriptObject_ListMixin_ImmutableListMixin() { - }, - AudioBuffer: function AudioBuffer() { - }, - AudioParamMap: function AudioParamMap() { - }, - AudioParamMap_keys_closure: function AudioParamMap_keys_closure(t0) { - this.keys = t0; - }, - AudioTrack: function AudioTrack() { - }, - AudioTrackList: function AudioTrackList() { - }, - BaseAudioContext: function BaseAudioContext() { - }, - OfflineAudioContext: function OfflineAudioContext() { - }, - _AudioParamMap_JavaScriptObject_MapMixin: function _AudioParamMap_JavaScriptObject_MapMixin() { - }, - WritableStream: function WritableStream() { - }, - ReadableStream: function ReadableStream() { - }, - TransformStream: function TransformStream() { - }, - TransformStreamDefaultController: function TransformStreamDefaultController() { - }, - EncodedStreams: function EncodedStreams() { - }, - RTCEncodedFrame: function RTCEncodedFrame() { - }, - RTCEncodedAudioFrame: function RTCEncodedAudioFrame() { - }, - RTCEncodedVideoFrame: function RTCEncodedVideoFrame() { - }, - RTCEncodedFrameMetadata: function RTCEncodedFrameMetadata() { - }, - RTCEncodedAudioFrameMetadata: function RTCEncodedAudioFrameMetadata() { - }, - RTCEncodedVideoFrameMetadata: function RTCEncodedVideoFrameMetadata() { - }, - RTCTransformEvent: function RTCTransformEvent() { - }, - RTCRtpScriptTransformer: function RTCRtpScriptTransformer() { - }, - RTCRtpScriptTransform: function RTCRtpScriptTransform() { - }, - jsArrayBufferFrom(data) { - if (type$.Uint8List._is(data) && data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) - return data.buffer; - return new Uint8Array(A._ensureNativeList(data)).buffer; - }, - impportKeyFromRawData(secretKeyData, keyUsages, webCryptoAlgorithm) { - var $async$goto = 0, - $async$completer = A._makeAsyncAwaitCompleter(type$.CryptoKey), - $async$returnValue, t1; - var $async$impportKeyFromRawData = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { - if ($async$errorCode === 1) - return A._asyncRethrow($async$result, $async$completer); - while (true) - switch ($async$goto) { - case 0: - // Function start - t1 = type$.String; - $async$returnValue = A.promiseToFuture(self.crypto.subtle.importKey("raw", A.jsArrayBufferFrom(secretKeyData), A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["name", webCryptoAlgorithm], t1, t1)), false, keyUsages), type$.CryptoKey); - // goto return - $async$goto = 1; - break; - case 1: - // return - return A._asyncReturn($async$returnValue, $async$completer); - } - }); - return A._asyncStartSync($async$impportKeyFromRawData, $async$completer); - }, - Promise: function Promise() { - }, - Algorithm: function Algorithm() { - }, - AesGcmParams: function AesGcmParams() { - }, - KeyOptions$(ratchetSalt, ratchetWindowSize, sharedKey) { - return new A.KeyOptions(sharedKey, ratchetSalt, ratchetWindowSize); - }, findNALUIndices(stream) { var start, pos0, t1, end, result = A._setArrayType([], type$.JSArray_int), @@ -4662,52 +4660,123 @@ } return result; }, - Cryptor$(keyOptions, participantId, trackId, worker) { - var t1 = type$.int; - return new A.Cryptor(A.LinkedHashMap_LinkedHashMap$_empty(t1, t1), participantId, trackId, keyOptions, B.CryptorError_0, worker, A.List_List$filled(16, null, false, type$.nullable_KeySet)); - }, - KeyOptions: function KeyOptions(t0, t1, t2) { - this.sharedKey = t0; - this.ratchetSalt = t1; - this.ratchetWindowSize = t2; - }, CryptorError: function CryptorError(t0) { this._name = t0; }, - KeySet: function KeySet(t0, t1) { - this.material = t0; - this.encryptionKey = t1; + FrameInfo: function FrameInfo(t0, t1, t2, t3) { + var _ = this; + _.frameType = t0; + _.ssrc = t1; + _.timestamp = t2; + _.buffer = t3; }, - Cryptor: function Cryptor(t0, t1, t2, t3, t4, t5, t6) { + FrameCryptor: function FrameCryptor(t0, t1, t2, t3, t4, t5, t6) { var _ = this; _.sendCounts = t0; - _.participantId = t1; + _.participantIdentity = t1; _.trackId = t2; _.codec = null; - _.keyOptions = t3; - _.__Cryptor_kind_A = $; - _.enabled = false; + _.keyHandler = t3; + _.__FrameCryptor_kind_A = $; + _._enabled = false; _.lastError = t4; - _.worker = t5; _.currentKeyIndex = 0; - _._ratchetCompleter = null; - _.cryptoKeyRing = t6; + _.worker = t5; + _.sifGuard = t6; }, - Cryptor_ratchetKey_closure: function Cryptor_ratchetKey_closure(t0, t1) { - this.$this = t0; - this.keyIndex = t1; + FrameCryptor_decodeFunction_decryptFrameInternal: function FrameCryptor_decodeFunction_decryptFrameInternal(t0, t1, t2, t3, t4, t5, t6) { + var _ = this; + _._box_1 = t0; + _._box_0 = t1; + _.$this = t2; + _.iv = t3; + _.srcFrame = t4; + _.headerLength = t5; + _.ivLength = t6; + }, + FrameCryptor_decodeFunction_ratchedKeyInternal: function FrameCryptor_decodeFunction_ratchedKeyInternal(t0, t1, t2, t3) { + var _ = this; + _._box_1 = t0; + _._box_0 = t1; + _.$this = t2; + _.decryptFrameInternal = t3; + }, + ParticipantKeyHandler$(keyOptions, participantIdentity, worker) { + var t1 = new A.ParticipantKeyHandler(keyOptions, worker, participantIdentity), + t2 = keyOptions.keyRingSze; + if (t2 <= 0 || t2 > 255) + A.throwExpression(A.Exception_Exception("Invalid key ring size")); + t1.set$__ParticipantKeyHandler_cryptoKeyRing_A(type$.List_nullable_KeySet._as(A.List_List$filled(t2, null, false, type$.nullable_KeySet))); + return t1; }, - Cryptor_ratchetKey__closure: function Cryptor_ratchetKey__closure(t0, t1) { - this.$this = t0; - this.keyIndex = t1; + KeyOptions: function KeyOptions(t0, t1, t2, t3, t4, t5, t6) { + var _ = this; + _.sharedKey = t0; + _.ratchetSalt = t1; + _.ratchetWindowSize = t2; + _.failureTolerance = t3; + _.uncryptedMagicBytes = t4; + _.keyRingSze = t5; + _.discardFrameWhenCryptorNotReady = t6; + }, + KeyProvider: function KeyProvider(t0, t1, t2, t3) { + var _ = this; + _.worker = t0; + _.keyProviderOptions = t1; + _.participantKeys = t2; + _.sharedKeyHandler = null; + _.sharedKey = t3; }, - Cryptor_ratchetKey___closure: function Cryptor_ratchetKey___closure(t0) { - this.$this = t0; + KeySet: function KeySet(t0, t1) { + this.material = t0; + this.encryptionKey = t1; + }, + ParticipantKeyHandler: function ParticipantKeyHandler(t0, t1, t2) { + var _ = this; + _.currentKeyIndex = 0; + _.__ParticipantKeyHandler_cryptoKeyRing_A = $; + _._hasValidKey = false; + _.keyOptions = t0; + _.worker = t1; + _.participantIdentity = t2; + _._decryptionFailureCount = 0; + }, + SifGuard: function SifGuard() { + var _ = this; + _.consecutiveSifCount = 0; + _.sifSequenceStartedAt = null; + _.userFramesSinceSif = _.lastSifReceivedAt = 0; + }, + getTrackCryptor(participantIdentity, trackId, keyProvider) { + var t1, t2, _null = null, + cryptor = A.IterableExtension_firstWhereOrNull($.participantCryptors, new A.getTrackCryptor_closure(trackId), type$.FrameCryptor); + if (cryptor == null) { + $.$get$logger().log$4(B.Level_INFO_800, "creating new cryptor for " + participantIdentity + ", trackId " + trackId, _null, _null); + t1 = type$.JSObject._as(self.self); + t2 = type$.int; + cryptor = new A.FrameCryptor(A.LinkedHashMap_LinkedHashMap$_empty(t2, t2), participantIdentity, trackId, keyProvider.getParticipantKeyHandler$1(participantIdentity), B.CryptorError_0, t1, new A.SifGuard()); + B.JSArray_methods.add$1($.participantCryptors, cryptor); + } else if (participantIdentity !== cryptor.participantIdentity) { + t1 = keyProvider.getParticipantKeyHandler$1(participantIdentity); + if (cryptor.lastError !== B.CryptorError_1) { + $.$get$logger().log$4(B.Level_INFO_800, "setParticipantId: lastError != CryptorError.kOk, reset state to kNew", _null, _null); + cryptor.lastError = B.CryptorError_0; + } + cryptor.participantIdentity = participantIdentity; + cryptor.keyHandler = t1; + cryptor.sifGuard.reset$0(); + } + return cryptor; + }, + unsetCryptorParticipant(trackId) { + var t1 = A.IterableExtension_firstWhereOrNull($.participantCryptors, new A.unsetCryptorParticipant_closure(trackId), type$.FrameCryptor); + if (t1 != null) + t1.participantIdentity = null; }, main() { var $async$goto = 0, - $async$completer = A._makeAsyncAwaitCompleter(type$.dynamic), - t1, t2; + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + t2, t3, t1; var $async$main = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { if ($async$errorCode === 1) return A._asyncRethrow($async$result, $async$completer); @@ -4715,36 +4784,41 @@ switch ($async$goto) { case 0: // Function start - A.print("E2EE Worker created"); - if (self.self.RTCTransformEvent != null) { - A.print("setup transform event handler"); - self.self.onrtctransform = A.allowInterop(new A.main_closure(), type$.dynamic_Function_dynamic); + t1 = $.$get$Logger_root(); + if (t1.parent != null) + A.throwExpression(A.UnsupportedError$('Please set "hierarchicalLoggingEnabled" to true if you want to change the level on a non-root logger.')); + J.$eq$(t1._level, B.Level_WARNING_900); + t1._level = B.Level_WARNING_900; + t1._getStream$0().listen$1(new A.main_closure()); + t1 = $.$get$logger(); + t1.log$4(B.Level_INFO_800, "Worker created", null, null); + t2 = self; + t3 = type$.JSObject; + if ("RTCTransformEvent" in t3._as(t2.self)) { + t1.log$4(B.Level_INFO_800, "setup RTCTransformEvent event handler", null, null); + t3._as(t2.self).onrtctransform = A._functionToJS1(new A.main_closure0()); } - t1 = type$.nullable_EventTarget._as(self.self); - t2 = type$.nullable_void_Function_MessageEvent._as(new A.main_closure0()); - type$.nullable_void_Function._as(null); - A._EventStreamSubscription$(t1, "message", t2, false, type$.MessageEvent); + t3._as(t2.self).onmessage = A._functionToJS1(new A.main_closure1(new A.main_closure2())); // implicit return return A._asyncReturn(null, $async$completer); } }); return A._asyncStartSync($async$main, $async$completer); }, - TransformMessage: function TransformMessage() { - }, - EnableTransformMessage: function EnableTransformMessage() { + getTrackCryptor_closure: function getTrackCryptor_closure(t0) { + this.trackId = t0; }, - RemoveTransformMessage: function RemoveTransformMessage() { + unsetCryptorParticipant_closure: function unsetCryptorParticipant_closure(t0) { + this.trackId = t0; }, main_closure: function main_closure() { }, - main__closure8: function main__closure8(t0) { - this.trackId = t0; - }, main_closure0: function main_closure0() { }, - main__closure: function main__closure(t0) { - this.participantId = t0; + main_closure2: function main_closure2() { + }, + main__closure: function main__closure(t0) { + this.trackId = t0; }, main__closure0: function main__closure0(t0) { this.trackId = t0; @@ -4753,24 +4827,33 @@ this.trackId = t0; }, main__closure2: function main__closure2(t0) { - this.participantId = t0; + this.trackId = t0; }, - main__closure3: function main__closure3(t0) { - this.participantId = t0; + main_closure1: function main_closure1(t0) { + this.handleMessage = t0; }, - main__closure4: function main__closure4(t0, t1, t2) { - this.c = t0; - this.keySet = t1; - this.participantId = t2; + Level: function Level(t0, t1) { + this.name = t0; + this.value = t1; }, - main__closure5: function main__closure5(t0) { - this.participantId = t0; + LogRecord: function LogRecord(t0, t1, t2) { + this.level = t0; + this.message = t1; + this.loggerName = t2; }, - main__closure6: function main__closure6(t0) { - this.trackId = t0; + Logger_Logger($name) { + return $.Logger__loggers.putIfAbsent$2($name, new A.Logger_Logger_closure($name)); }, - main__closure7: function main__closure7(t0) { - this.trackId = t0; + Logger: function Logger(t0, t1, t2) { + var _ = this; + _.name = t0; + _.parent = t1; + _._level = null; + _._children = t2; + _._controller = null; + }, + Logger_Logger_closure: function Logger_Logger_closure(t0) { + this.name = t0; }, printString(string) { if (typeof dartPrint == "function") { @@ -4781,8 +4864,6 @@ console.log(string); return; } - if (typeof window == "object") - return; if (typeof print == "function") { print(string); return; @@ -4790,35 +4871,10 @@ throw "Unable to print message: " + String(string); }, throwLateFieldNI(fieldName) { - return A.throwExpression(A.LateError$fieldNI(fieldName)); + A.throwExpressionWithWrapper(new A.LateError("Field '" + fieldName + "' has not been initialized."), new Error()); }, throwLateFieldADI(fieldName) { - return A.throwExpression(new A.LateError("Field '" + fieldName + "' has been assigned during initialization.")); - }, - _convertDartFunctionFast(f) { - var ret, - existing = f.$dart_jsFunction; - if (existing != null) - return existing; - ret = function(_call, f) { - return function() { - return _call(f, Array.prototype.slice.apply(arguments)); - }; - }(A._callDartFunctionFast, f); - ret[$.$get$DART_CLOSURE_PROPERTY_NAME()] = f; - f.$dart_jsFunction = ret; - return ret; - }, - _callDartFunctionFast(callback, $arguments) { - type$.List_dynamic._as($arguments); - type$.Function._as(callback); - return A.Primitives_applyFunction(callback, $arguments, null); - }, - allowInterop(f, $F) { - if (typeof f == "function") - return f; - else - return $F._as(A._convertDartFunctionFast(f)); + A.throwExpressionWithWrapper(new A.LateError("Field '" + fieldName + "' has been assigned during initialization."), new Error()); }, IterableExtension_firstWhereOrNull(_this, test, $T) { var t1, _i, element; @@ -4830,265 +4886,16 @@ return null; }, getAlgoOptions(algorithmName, salt) { - var t1; switch (algorithmName) { case "HKDF": - t1 = A.jsArrayBufferFrom(salt); - return A.LinkedHashMap_LinkedHashMap$_literal(["name", "HKDF", "salt", t1, "hash", "SHA-256", "info", A.jsArrayBufferFrom(new Uint8Array(128))], type$.String, type$.Object); + return A.LinkedHashMap_LinkedHashMap$_literal(["name", "HKDF", "salt", salt, "hash", "SHA-256", "info", new Uint8Array(128)], type$.String, type$.dynamic); case "PBKDF2": - return A.LinkedHashMap_LinkedHashMap$_literal(["name", "PBKDF2", "salt", A.jsArrayBufferFrom(salt), "hash", "SHA-256", "iterations", 100000], type$.String, type$.Object); + return A.LinkedHashMap_LinkedHashMap$_literal(["name", "PBKDF2", "salt", salt, "hash", "SHA-256", "iterations", 100000], type$.String, type$.dynamic); default: throw A.wrapException(A.Exception_Exception("algorithm " + algorithmName + " is currently unsupported")); } } }, - J = { - makeDispatchRecord(interceptor, proto, extension, indexability) { - return {i: interceptor, p: proto, e: extension, x: indexability}; - }, - getNativeInterceptor(object) { - var proto, objectProto, $constructor, interceptor, t1, - record = object[init.dispatchPropertyName]; - if (record == null) - if ($.initNativeDispatchFlag == null) { - A.initNativeDispatch(); - record = object[init.dispatchPropertyName]; - } - if (record != null) { - proto = record.p; - if (false === proto) - return record.i; - if (true === proto) - return object; - objectProto = Object.getPrototypeOf(object); - if (proto === objectProto) - return record.i; - if (record.e === objectProto) - throw A.wrapException(A.UnimplementedError$("Return interceptor for " + A.S(proto(object, record)))); - } - $constructor = object.constructor; - if ($constructor == null) - interceptor = null; - else { - t1 = $._JS_INTEROP_INTERCEPTOR_TAG; - if (t1 == null) - t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js"); - interceptor = $constructor[t1]; - } - if (interceptor != null) - return interceptor; - interceptor = A.lookupAndCacheInterceptor(object); - if (interceptor != null) - return interceptor; - if (typeof object == "function") - return B.JavaScriptFunction_methods; - proto = Object.getPrototypeOf(object); - if (proto == null) - return B.PlainJavaScriptObject_methods; - if (proto === Object.prototype) - return B.PlainJavaScriptObject_methods; - if (typeof $constructor == "function") { - t1 = $._JS_INTEROP_INTERCEPTOR_TAG; - if (t1 == null) - t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js"); - Object.defineProperty($constructor, t1, {value: B.UnknownJavaScriptObject_methods, enumerable: false, writable: true, configurable: true}); - return B.UnknownJavaScriptObject_methods; - } - return B.UnknownJavaScriptObject_methods; - }, - JSArray_JSArray$fixed($length, $E) { - if ($length < 0 || $length > 4294967295) - throw A.wrapException(A.RangeError$range($length, 0, 4294967295, "length", null)); - return J.JSArray_JSArray$markFixed(new Array($length), $E); - }, - JSArray_JSArray$markFixed(allocation, $E) { - return J.JSArray_markFixedList(A._setArrayType(allocation, $E._eval$1("JSArray<0>")), $E); - }, - JSArray_markFixedList(list, $T) { - list.fixed$length = Array; - return list; - }, - getInterceptor$(receiver) { - if (typeof receiver == "number") { - if (Math.floor(receiver) == receiver) - return J.JSInt.prototype; - return J.JSNumNotInt.prototype; - } - if (typeof receiver == "string") - return J.JSString.prototype; - if (receiver == null) - return J.JSNull.prototype; - if (typeof receiver == "boolean") - return J.JSBool.prototype; - if (receiver.constructor == Array) - return J.JSArray.prototype; - if (typeof receiver != "object") { - if (typeof receiver == "function") - return J.JavaScriptFunction.prototype; - return receiver; - } - if (receiver instanceof A.Object) - return receiver; - return J.getNativeInterceptor(receiver); - }, - getInterceptor$asx(receiver) { - if (typeof receiver == "string") - return J.JSString.prototype; - if (receiver == null) - return receiver; - if (receiver.constructor == Array) - return J.JSArray.prototype; - if (typeof receiver != "object") { - if (typeof receiver == "function") - return J.JavaScriptFunction.prototype; - return receiver; - } - if (receiver instanceof A.Object) - return receiver; - return J.getNativeInterceptor(receiver); - }, - getInterceptor$ax(receiver) { - if (receiver == null) - return receiver; - if (receiver.constructor == Array) - return J.JSArray.prototype; - if (typeof receiver != "object") { - if (typeof receiver == "function") - return J.JavaScriptFunction.prototype; - return receiver; - } - if (receiver instanceof A.Object) - return receiver; - return J.getNativeInterceptor(receiver); - }, - getInterceptor$x(receiver) { - if (receiver == null) - return receiver; - if (typeof receiver != "object") { - if (typeof receiver == "function") - return J.JavaScriptFunction.prototype; - return receiver; - } - if (receiver instanceof A.Object) - return receiver; - return J.getNativeInterceptor(receiver); - }, - get$data$x(receiver) { - return J.getInterceptor$x(receiver).get$data(receiver); - }, - get$hashCode$(receiver) { - return J.getInterceptor$(receiver).get$hashCode(receiver); - }, - get$iterator$ax(receiver) { - return J.getInterceptor$ax(receiver).get$iterator(receiver); - }, - get$length$asx(receiver) { - return J.getInterceptor$asx(receiver).get$length(receiver); - }, - get$name$x(receiver) { - return J.getInterceptor$x(receiver).get$name(receiver); - }, - get$synchronizationSource$x(receiver) { - return J.getInterceptor$x(receiver).get$synchronizationSource(receiver); - }, - get$type$x(receiver) { - return J.getInterceptor$x(receiver).get$type(receiver); - }, - $eq$(receiver, a0) { - if (receiver == null) - return a0 == null; - if (typeof receiver != "object") - return a0 != null && receiver === a0; - return J.getInterceptor$(receiver).$eq(receiver, a0); - }, - $index$asx(receiver, a0) { - if (typeof a0 === "number") - if (receiver.constructor == Array || typeof receiver == "string" || A.isJsIndexable(receiver, receiver[init.dispatchPropertyName])) - if (a0 >>> 0 === a0 && a0 < receiver.length) - return receiver[a0]; - return J.getInterceptor$asx(receiver).$index(receiver, a0); - }, - add$1$ax(receiver, a0) { - return J.getInterceptor$ax(receiver).add$1(receiver, a0); - }, - elementAt$1$ax(receiver, a0) { - return J.getInterceptor$ax(receiver).elementAt$1(receiver, a0); - }, - enqueue$1$x(receiver, a0) { - return J.getInterceptor$x(receiver).enqueue$1(receiver, a0); - }, - forEach$1$x(receiver, a0) { - return J.getInterceptor$x(receiver).forEach$1(receiver, a0); - }, - map$1$1$ax(receiver, a0, $T1) { - return J.getInterceptor$ax(receiver).map$1$1(receiver, a0, $T1); - }, - noSuchMethod$1$(receiver, a0) { - return J.getInterceptor$(receiver).noSuchMethod$1(receiver, a0); - }, - pipeThrough$1$x(receiver, a0) { - return J.getInterceptor$x(receiver).pipeThrough$1(receiver, a0); - }, - pipeTo$1$x(receiver, a0) { - return J.getInterceptor$x(receiver).pipeTo$1(receiver, a0); - }, - postMessage$1$x(receiver, a0) { - return J.getInterceptor$x(receiver).postMessage$1(receiver, a0); - }, - setInt8$2$x(receiver, a0, a1) { - return J.getInterceptor$x(receiver).setInt8$2(receiver, a0, a1); - }, - skip$1$ax(receiver, a0) { - return J.getInterceptor$ax(receiver).skip$1(receiver, a0); - }, - sublist$1$x(receiver, a0) { - return J.getInterceptor$x(receiver).sublist$1(receiver, a0); - }, - sublist$2$x(receiver, a0, a1) { - return J.getInterceptor$x(receiver).sublist$2(receiver, a0, a1); - }, - toString$0$(receiver) { - return J.getInterceptor$(receiver).toString$0(receiver); - }, - Interceptor: function Interceptor() { - }, - JSBool: function JSBool() { - }, - JSNull: function JSNull() { - }, - JavaScriptObject: function JavaScriptObject() { - }, - LegacyJavaScriptObject: function LegacyJavaScriptObject() { - }, - PlainJavaScriptObject: function PlainJavaScriptObject() { - }, - UnknownJavaScriptObject: function UnknownJavaScriptObject() { - }, - JavaScriptFunction: function JavaScriptFunction() { - }, - JSArray: function JSArray(t0) { - this.$ti = t0; - }, - JSUnmodifiableArray: function JSUnmodifiableArray(t0) { - this.$ti = t0; - }, - ArrayIterator: function ArrayIterator(t0, t1, t2) { - var _ = this; - _._iterable = t0; - _.__interceptors$_length = t1; - _._index = 0; - _._current = null; - _.$ti = t2; - }, - JSNumber: function JSNumber() { - }, - JSInt: function JSInt() { - }, - JSNumNotInt: function JSNumNotInt() { - }, - JSString: function JSString() { - } - }, B = {}; var holders = [A, J, B]; var $ = {}; @@ -5104,8 +4911,10 @@ return "Instance of '" + A.Primitives_objectTypeName(receiver) + "'"; }, noSuchMethod$1(receiver, invocation) { - type$.Invocation._as(invocation); - throw A.wrapException(new A.NoSuchMethodError(receiver, invocation.get$memberName(), invocation.get$positionalArguments(), invocation.get$namedArguments(), null)); + throw A.wrapException(A.NoSuchMethodError_NoSuchMethodError$withInvocation(receiver, type$.Invocation._as(invocation))); + }, + get$runtimeType(receiver) { + return A.createRuntimeType(A._instanceTypeFromConstructor(this)); } }; J.JSBool.prototype = { @@ -5115,6 +4924,10 @@ get$hashCode(receiver) { return receiver ? 519018 : 218159; }, + get$runtimeType(receiver) { + return A.createRuntimeType(type$.bool); + }, + $isTrustedGetRuntimeType: 1, $isbool: 1 }; J.JSNull.prototype = { @@ -5127,67 +4940,19 @@ get$hashCode(receiver) { return 0; }, + $isTrustedGetRuntimeType: 1, $isNull: 1 }; - J.JavaScriptObject.prototype = {}; + J.JavaScriptObject.prototype = {$isJSObject: 1}; J.LegacyJavaScriptObject.prototype = { get$hashCode(receiver) { return 0; }, + get$runtimeType(receiver) { + return B.Type_JSObject_ttY; + }, toString$0(receiver) { return String(receiver); - }, - $isJSObject: 1, - $isWritableStream: 1, - $isReadableStream: 1, - $isTransformStreamDefaultController: 1, - $isRTCEncodedFrame: 1, - $isRTCTransformEvent: 1, - $isAlgorithm: 1, - pipeThrough$1(receiver, p0) { - return receiver.pipeThrough(p0); - }, - pipeTo$1(receiver, p0) { - return receiver.pipeTo(p0); - }, - enqueue$1(receiver, p0) { - return receiver.enqueue(p0); - }, - get$timestamp(obj) { - return obj.timestamp; - }, - get$data(obj) { - return obj.data; - }, - set$data(obj, v) { - return obj.data = v; - }, - getMetadata$0(receiver) { - return receiver.getMetadata(); - }, - get$type(obj) { - return obj.type; - }, - get$synchronizationSource(obj) { - return obj.synchronizationSource; - }, - get$name(obj) { - return obj.name; - }, - get$msgType(obj) { - return obj.msgType; - }, - get$kind(obj) { - return obj.kind; - }, - get$participantId(obj) { - return obj.participantId; - }, - get$trackId(obj) { - return obj.trackId; - }, - get$codec(obj) { - return obj.codec; } }; J.PlainJavaScriptObject.prototype = {}; @@ -5201,43 +4966,38 @@ }, $isFunction: 1 }; + J.JavaScriptBigInt.prototype = { + get$hashCode(receiver) { + return 0; + }, + toString$0(receiver) { + return String(receiver); + } + }; + J.JavaScriptSymbol.prototype = { + get$hashCode(receiver) { + return 0; + }, + toString$0(receiver) { + return String(receiver); + } + }; J.JSArray.prototype = { add$1(receiver, value) { A._arrayInstanceType(receiver)._precomputed1._as(value); - if (!!receiver.fixed$length) - A.throwExpression(A.UnsupportedError$("add")); + receiver.$flags & 1 && A.throwUnsupportedOperation(receiver, 29); receiver.push(value); }, - _removeWhere$2(receiver, test, removeMatching) { - var retained, end, i, element, t1; - A._arrayInstanceType(receiver)._eval$1("bool(1)")._as(test); - retained = []; - end = receiver.length; - for (i = 0; i < end; ++i) { - element = receiver[i]; - if (!A.boolConversionCheck(test.call$1(element))) - retained.push(element); - if (receiver.length !== end) - throw A.wrapException(A.ConcurrentModificationError$(receiver)); - } - t1 = retained.length; - if (t1 === end) - return; - this.set$length(receiver, t1); - for (i = 0; i < retained.length; ++i) - receiver[i] = retained[i]; - }, addAll$1(receiver, collection) { var t1; A._arrayInstanceType(receiver)._eval$1("Iterable<1>")._as(collection); - if (!!receiver.fixed$length) - A.throwExpression(A.UnsupportedError$("addAll")); + receiver.$flags & 1 && A.throwUnsupportedOperation(receiver, "addAll", 2); if (Array.isArray(collection)) { this._addAllFromArray$1(receiver, collection); return; } for (t1 = J.get$iterator$ax(collection); t1.moveNext$0();) - receiver.push(t1.get$current(t1)); + receiver.push(t1.get$current()); }, _addAllFromArray$1(receiver, array) { var len, i; @@ -5254,16 +5014,13 @@ var t1 = A._arrayInstanceType(receiver); return new A.MappedListIterable(receiver, t1._bind$1($T)._eval$1("1(2)")._as(f), t1._eval$1("@<1>")._bind$1($T)._eval$1("MappedListIterable<1,2>")); }, - skip$1(receiver, n) { - return A.SubListIterable$(receiver, n, null, A._arrayInstanceType(receiver)._precomputed1); - }, elementAt$1(receiver, index) { if (!(index >= 0 && index < receiver.length)) return A.ioore(receiver, index); return receiver[index]; }, toString$0(receiver) { - return A.IterableBase_iterableToFullString(receiver, "[", "]"); + return A.Iterable_iterableToFullString(receiver, "[", "]"); }, get$iterator(receiver) { return new J.ArrayIterator(receiver, receiver.length, A._arrayInstanceType(receiver)._eval$1("ArrayIterator<1>")); @@ -5274,13 +5031,6 @@ get$length(receiver) { return receiver.length; }, - set$length(receiver, newLength) { - if (!!receiver.fixed$length) - A.throwExpression(A.UnsupportedError$("set length")); - if (newLength > receiver.length) - A._arrayInstanceType(receiver)._precomputed1._as(null); - receiver.length = newLength; - }, $index(receiver, index) { A._asInt(index); if (!(index >= 0 && index < receiver.length)) @@ -5289,20 +5039,21 @@ }, $indexSet(receiver, index, value) { A._arrayInstanceType(receiver)._precomputed1._as(value); - if (!!receiver.immutable$list) - A.throwExpression(A.UnsupportedError$("indexed set")); + receiver.$flags & 2 && A.throwUnsupportedOperation(receiver); if (!(index >= 0 && index < receiver.length)) throw A.wrapException(A.diagnoseIndexError(receiver, index)); receiver[index] = value; }, - $isJSIndexable: 1, + get$runtimeType(receiver) { + return A.createRuntimeType(A._arrayInstanceType(receiver)); + }, $isEfficientLengthIterable: 1, $isIterable: 1, $isList: 1 }; J.JSUnmodifiableArray.prototype = {}; J.ArrayIterator.prototype = { - get$current(_) { + get$current() { var t1 = this._current; return t1 == null ? this.$ti._precomputed1._as(t1) : t1; }, @@ -5310,8 +5061,10 @@ var t2, _this = this, t1 = _this._iterable, $length = t1.length; - if (_this.__interceptors$_length !== $length) - throw A.wrapException(A.throwConcurrentModificationError(t1)); + if (_this._length !== $length) { + t1 = A.throwConcurrentModificationError(t1); + throw A.wrapException(t1); + } t2 = _this._index; if (t2 >= $length) { _this.set$_current(null); @@ -5327,12 +5080,26 @@ $isIterator: 1 }; J.JSNumber.prototype = { + toInt$0(receiver) { + var t1; + if (receiver >= -2147483648 && receiver <= 2147483647) + return receiver | 0; + if (isFinite(receiver)) { + t1 = receiver < 0 ? Math.ceil(receiver) : Math.floor(receiver); + return t1 + 0; + } + throw A.wrapException(A.UnsupportedError$("" + receiver + ".toInt()")); + }, toRadixString$1(receiver, radix) { - var result, match, t1, exponent; + var result, t1, t2, match, exponent; if (radix < 2 || radix > 36) throw A.wrapException(A.RangeError$range(radix, 2, 36, "radix", null)); result = receiver.toString(radix); - if (B.JSString_methods.codeUnitAt$1(result, result.length - 1) !== 41) + t1 = result.length; + t2 = t1 - 1; + if (!(t2 >= 0)) + return A.ioore(result, t2); + if (result.charCodeAt(t2) !== 41) return result; match = /^([\da-z]+)(?:\.([\da-z]+))?\(e\+(\d+)\)$/.exec(result); if (match == null) @@ -5403,30 +5170,45 @@ _shrBothPositive$1(receiver, other) { return other > 31 ? 0 : receiver >>> other; }, + get$runtimeType(receiver) { + return A.createRuntimeType(type$.num); + }, $isdouble: 1, $isnum: 1 }; - J.JSInt.prototype = {$isint: 1}; - J.JSNumNotInt.prototype = {}; - J.JSString.prototype = { - codeUnitAt$1(receiver, index) { - if (index < 0) - throw A.wrapException(A.diagnoseIndexError(receiver, index)); - if (index >= receiver.length) - A.throwExpression(A.diagnoseIndexError(receiver, index)); - return receiver.charCodeAt(index); + J.JSInt.prototype = { + get$runtimeType(receiver) { + return A.createRuntimeType(type$.int); }, - _codeUnitAt$1(receiver, index) { - if (index >= receiver.length) - throw A.wrapException(A.diagnoseIndexError(receiver, index)); - return receiver.charCodeAt(index); + $isTrustedGetRuntimeType: 1, + $isint: 1 + }; + J.JSNumNotInt.prototype = { + get$runtimeType(receiver) { + return A.createRuntimeType(type$.double); + }, + $isTrustedGetRuntimeType: 1 + }; + J.JSString.prototype = { + endsWith$1(receiver, other) { + var otherLength = other.length, + t1 = receiver.length; + if (otherLength > t1) + return false; + return other === this.substring$1(receiver, t1 - otherLength); }, - $add(receiver, other) { - return receiver + other; + startsWith$1(receiver, pattern) { + var otherLength = pattern.length; + if (otherLength > receiver.length) + return false; + return pattern === receiver.substring(0, otherLength); }, substring$2(receiver, start, end) { return receiver.substring(start, A.RangeError_checkValidRange(start, end, receiver.length)); }, + substring$1(receiver, start) { + return this.substring$2(receiver, start, null); + }, $mul(receiver, times) { var s, result; if (0 >= times) @@ -5445,6 +5227,13 @@ } return result; }, + lastIndexOf$1(receiver, pattern) { + var start = receiver.length, + t1 = pattern.length; + if (start + t1 > start) + start -= t1; + return receiver.lastIndexOf(pattern, start); + }, toString$0(receiver) { return receiver; }, @@ -5459,6 +5248,9 @@ hash ^= hash >> 11; return hash + ((hash & 16383) << 15) & 536870911; }, + get$runtimeType(receiver) { + return A.createRuntimeType(type$.String); + }, get$length(receiver) { return receiver.length; }, @@ -5468,7 +5260,8 @@ throw A.wrapException(A.diagnoseIndexError(receiver, index)); return receiver[index]; }, - $isJSIndexable: 1, + $isTrustedGetRuntimeType: 1, + $isPattern: 1, $isString: 1 }; A._CopyingBytesBuilder.prototype = { @@ -5502,30 +5295,21 @@ _this.__internal$_length = required; }, toBytes$0() { - var t2, - t1 = this.__internal$_length; - if (t1 === 0) + var _this = this; + if (_this.__internal$_length === 0) return $.$get$_CopyingBytesBuilder__emptyList(); - t2 = this._buffer; - return new Uint8Array(A._ensureNativeList(A.NativeUint8List_NativeUint8List$view(t2.buffer, t2.byteOffset, t1))); + return new Uint8Array(A._ensureNativeList(J.asUint8List$2$x(B.NativeUint8List_methods.get$buffer(_this._buffer), _this._buffer.byteOffset, _this.__internal$_length))); }, get$length(_) { return this.__internal$_length; - } + }, + $isBytesBuilder: 1 }; A.LateError.prototype = { toString$0(_) { return "LateInitializationError: " + this._message; } }; - A.CodeUnits.prototype = { - get$length(_) { - return this._string.length; - }, - $index(_, i) { - return B.JSString_methods.codeUnitAt$1(this._string, A._asInt(i)); - } - }; A.SentinelValue.prototype = {}; A.EfficientLengthIterable.prototype = {}; A.ListIterable.prototype = { @@ -5538,66 +5322,8 @@ return new A.MappedListIterable(this, t1._bind$1($T)._eval$1("1(ListIterable.E)")._as(toElement), t1._eval$1("@")._bind$1($T)._eval$1("MappedListIterable<1,2>")); } }; - A.SubListIterable.prototype = { - get$_endIndex() { - var $length = J.get$length$asx(this.__internal$_iterable), - endOrLength = this._endOrLength; - if (endOrLength == null || endOrLength > $length) - return $length; - return endOrLength; - }, - get$_startIndex() { - var $length = J.get$length$asx(this.__internal$_iterable), - t1 = this._start; - if (t1 > $length) - return $length; - return t1; - }, - get$length(_) { - var endOrLength, - $length = J.get$length$asx(this.__internal$_iterable), - t1 = this._start; - if (t1 >= $length) - return 0; - endOrLength = this._endOrLength; - if (endOrLength == null || endOrLength >= $length) - return $length - t1; - if (typeof endOrLength !== "number") - return endOrLength.$sub(); - return endOrLength - t1; - }, - elementAt$1(_, index) { - var _this = this, - realIndex = _this.get$_startIndex() + index; - if (index < 0 || realIndex >= _this.get$_endIndex()) - throw A.wrapException(A.IndexError$withLength(index, _this.get$length(_this), _this, "index")); - return J.elementAt$1$ax(_this.__internal$_iterable, realIndex); - }, - toList$1$growable(_, growable) { - var $length, result, i, _this = this, - start = _this._start, - t1 = _this.__internal$_iterable, - t2 = J.getInterceptor$asx(t1), - end = t2.get$length(t1), - endOrLength = _this._endOrLength; - if (endOrLength != null && endOrLength < end) - end = endOrLength; - $length = end - start; - if ($length <= 0) { - t1 = J.JSArray_JSArray$fixed(0, _this.$ti._precomputed1); - return t1; - } - result = A.List_List$filled($length, t2.elementAt$1(t1, start), false, _this.$ti._precomputed1); - for (i = 1; i < $length; ++i) { - B.JSArray_methods.$indexSet(result, i, t2.elementAt$1(t1, start + i)); - if (t2.get$length(t1) < end) - throw A.wrapException(A.ConcurrentModificationError$(_this)); - } - return result; - } - }; A.ListIterator.prototype = { - get$current(_) { + get$current() { var t1 = this.__internal$_current; return t1 == null ? this.$ti._precomputed1._as(t1) : t1; }, @@ -5624,9 +5350,8 @@ }; A.MappedIterable.prototype = { get$iterator(_) { - var t1 = this.__internal$_iterable, - t2 = A._instanceType(this); - return new A.MappedIterator(t1.get$iterator(t1), this._f, t2._eval$1("@<1>")._bind$1(t2._rest[1])._eval$1("MappedIterator<1,2>")); + var t1 = this.__internal$_iterable; + return new A.MappedIterator(t1.get$iterator(t1), this._f, A._instanceType(this)._eval$1("MappedIterator<1,2>")); }, get$length(_) { var t1 = this.__internal$_iterable; @@ -5639,19 +5364,20 @@ var _this = this, t1 = _this._iterator; if (t1.moveNext$0()) { - _this.set$__internal$_current(_this._f.call$1(t1.get$current(t1))); + _this.set$__internal$_current(_this._f.call$1(t1.get$current())); return true; } _this.set$__internal$_current(null); return false; }, - get$current(_) { + get$current() { var t1 = this.__internal$_current; return t1 == null ? this.$ti._rest[1]._as(t1) : t1; }, set$__internal$_current(_current) { this.__internal$_current = this.$ti._eval$1("2?")._as(_current); - } + }, + $isIterator: 1 }; A.MappedListIterable.prototype = { get$length(_) { @@ -5674,39 +5400,32 @@ moveNext$0() { var t1, t2; for (t1 = this._iterator, t2 = this._f; t1.moveNext$0();) - if (A.boolConversionCheck(t2.call$1(t1.get$current(t1)))) + if (A.boolConversionCheck(t2.call$1(t1.get$current()))) return true; return false; }, - get$current(_) { - var t1 = this._iterator; - return t1.get$current(t1); - } + get$current() { + return this._iterator.get$current(); + }, + $isIterator: 1 }; A.FixedLengthListMixin.prototype = {}; - A.UnmodifiableListMixin.prototype = { - $indexSet(_, index, value) { - A._instanceType(this)._eval$1("UnmodifiableListMixin.E")._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot modify an unmodifiable list")); - } - }; - A.UnmodifiableListBase.prototype = {}; A.Symbol.prototype = { get$hashCode(_) { var hash = this._hashCode; if (hash != null) return hash; - hash = 664597 * J.get$hashCode$(this.__internal$_name) & 536870911; + hash = 664597 * B.JSString_methods.get$hashCode(this.__internal$_name) & 536870911; this._hashCode = hash; return hash; }, toString$0(_) { - return 'Symbol("' + A.S(this.__internal$_name) + '")'; + return 'Symbol("' + this.__internal$_name + '")'; }, $eq(_, other) { if (other == null) return false; - return other instanceof A.Symbol && this.__internal$_name == other.__internal$_name; + return other instanceof A.Symbol && this.__internal$_name === other.__internal$_name; }, $isSymbol0: 1 }; @@ -5719,86 +5438,107 @@ }; A.ConstantStringMap.prototype = { get$length(_) { - return this._length; + return this._values.length; }, - containsKey$1(_, key) { + get$_keys() { + var keys = this.$keys; + if (keys == null) { + keys = Object.keys(this._jsIndex); + this.$keys = keys; + } + return keys; + }, + containsKey$1(key) { if (typeof key != "string") return false; if ("__proto__" === key) return false; - return this._jsObject.hasOwnProperty(key); + return this._jsIndex.hasOwnProperty(key); }, $index(_, key) { - if (!this.containsKey$1(0, key)) + if (!this.containsKey$1(key)) return null; - return this._jsObject[A._asString(key)]; + return this._values[this._jsIndex[key]]; }, forEach$1(_, f) { - var keys, t2, t3, i, t4, - t1 = this.$ti; - t1._eval$1("~(1,2)")._as(f); - keys = this.__js_helper$_keys; - for (t2 = keys.length, t3 = this._jsObject, t1 = t1._rest[1], i = 0; i < t2; ++i) { - t4 = A._asString(keys[i]); - f.call$2(t4, t1._as(t3[t4])); - } + var keys, values, t1, i; + this.$ti._eval$1("~(1,2)")._as(f); + keys = this.get$_keys(); + values = this._values; + for (t1 = keys.length, i = 0; i < t1; ++i) + f.call$2(keys[i], values[i]); }, - get$keys(_) { - return new A._ConstantMapKeyIterable(this, this.$ti._eval$1("_ConstantMapKeyIterable<1>")); + get$keys() { + return new A._KeysOrValues(this.get$_keys(), this.$ti._eval$1("_KeysOrValues<1>")); } }; - A._ConstantMapKeyIterable.prototype = { - get$iterator(_) { - var t1 = this._map.__js_helper$_keys; - return new J.ArrayIterator(t1, t1.length, A._arrayInstanceType(t1)._eval$1("ArrayIterator<1>")); - }, + A._KeysOrValues.prototype = { get$length(_) { - return this._map.__js_helper$_keys.length; + return this._elements.length; + }, + get$iterator(_) { + var t1 = this._elements; + return new A._KeysOrValuesOrElementsIterator(t1, t1.length, this.$ti._eval$1("_KeysOrValuesOrElementsIterator<1>")); } }; + A._KeysOrValuesOrElementsIterator.prototype = { + get$current() { + var t1 = this.__js_helper$_current; + return t1 == null ? this.$ti._precomputed1._as(t1) : t1; + }, + moveNext$0() { + var _this = this, + t1 = _this.__js_helper$_index; + if (t1 >= _this.__js_helper$_length) { + _this.set$__js_helper$_current(null); + return false; + } + _this.set$__js_helper$_current(_this._elements[t1]); + ++_this.__js_helper$_index; + return true; + }, + set$__js_helper$_current(_current) { + this.__js_helper$_current = this.$ti._eval$1("1?")._as(_current); + }, + $isIterator: 1 + }; A.JSInvocationMirror.prototype = { get$memberName() { var t1 = this._memberName; - return t1; + if (t1 instanceof A.Symbol) + return t1; + return this._memberName = new A.Symbol(A._asString(t1)); }, get$positionalArguments() { - var t1, argumentCount, list, index, _this = this; + var t1, t2, argumentCount, list, index, _this = this; if (_this.__js_helper$_kind === 1) return B.List_empty; t1 = _this._arguments; - argumentCount = t1.length - _this._namedArgumentNames.length - _this._typeArgumentCount; + t2 = J.getInterceptor$asx(t1); + argumentCount = t2.get$length(t1) - J.get$length$asx(_this._namedArgumentNames) - _this._typeArgumentCount; if (argumentCount === 0) return B.List_empty; list = []; - for (index = 0; index < argumentCount; ++index) { - if (!(index < t1.length)) - return A.ioore(t1, index); - list.push(t1[index]); - } - list.fixed$length = Array; - list.immutable$list = Array; + for (index = 0; index < argumentCount; ++index) + list.push(t2.$index(t1, index)); + list.$flags = 3; return list; }, get$namedArguments() { - var t1, namedArgumentCount, t2, namedArgumentsStartIndex, map, i, t3, t4, _this = this; + var t1, t2, namedArgumentCount, t3, t4, namedArgumentsStartIndex, map, i, _this = this; if (_this.__js_helper$_kind !== 0) return B.Map_empty; t1 = _this._namedArgumentNames; - namedArgumentCount = t1.length; - t2 = _this._arguments; - namedArgumentsStartIndex = t2.length - namedArgumentCount - _this._typeArgumentCount; + t2 = J.getInterceptor$asx(t1); + namedArgumentCount = t2.get$length(t1); + t3 = _this._arguments; + t4 = J.getInterceptor$asx(t3); + namedArgumentsStartIndex = t4.get$length(t3) - namedArgumentCount - _this._typeArgumentCount; if (namedArgumentCount === 0) return B.Map_empty; map = new A.JsLinkedHashMap(type$.JsLinkedHashMap_Symbol_dynamic); - for (i = 0; i < namedArgumentCount; ++i) { - if (!(i < t1.length)) - return A.ioore(t1, i); - t3 = t1[i]; - t4 = namedArgumentsStartIndex + i; - if (!(t4 >= 0 && t4 < t2.length)) - return A.ioore(t2, t4); - map.$indexSet(0, new A.Symbol(t3), t2[t4]); - } + for (i = 0; i < namedArgumentCount; ++i) + map.$indexSet(0, new A.Symbol(A._asString(t2.$index(t1, i))), t4.$index(t3, namedArgumentsStartIndex + i)); return new A.ConstantMapView(map, type$.ConstantMapView_Symbol_dynamic); }, $isInvocation: 1 @@ -5813,7 +5553,7 @@ B.JSArray_methods.add$1(this.$arguments, argument); ++t1.argumentCount; }, - $signature: 2 + $signature: 12 }; A.TypeErrorDecoder.prototype = { matchTypeError$1(message) { @@ -5842,10 +5582,7 @@ }; A.NullError.prototype = { toString$0(_) { - var t1 = this._method; - if (t1 == null) - return "NoSuchMethodError: " + this.__js_helper$_message; - return "NoSuchMethodError: method not found: '" + t1 + "' on null"; + return "Null check operator used on a null value"; } }; A.JsNoSuchMethodError.prototype = { @@ -5927,6 +5664,11 @@ return "Closure '" + this.$_name + "' of " + ("Instance of '" + A.Primitives_objectTypeName(this._receiver) + "'"); } }; + A._CyclicInitializationError.prototype = { + toString$0(_) { + return "Reading static variable '" + this.variableName + "' during its initialization"; + } + }; A.RuntimeError.prototype = { toString$0(_) { return "RuntimeError: " + this.message; @@ -5940,12 +5682,12 @@ A._Required.prototype = {}; A.JsLinkedHashMap.prototype = { get$length(_) { - return this._length; + return this.__js_helper$_length; }, - get$keys(_) { - return new A.LinkedHashMapKeyIterable(this, A._instanceType(this)._eval$1("LinkedHashMapKeyIterable<1>")); + get$keys() { + return new A.LinkedHashMapKeysIterable(this, A._instanceType(this)._eval$1("LinkedHashMapKeysIterable<1>")); }, - containsKey$1(_, key) { + containsKey$1(key) { var strings = this._strings; if (strings == null) return false; @@ -5982,38 +5724,49 @@ return bucket[index].hashMapCellValue; }, $indexSet(_, key, value) { - var strings, nums, _this = this, + var strings, nums, rest, hash, bucket, index, _this = this, t1 = A._instanceType(_this); t1._precomputed1._as(key); t1._rest[1]._as(value); if (typeof key == "string") { strings = _this._strings; - _this._addHashTableEntry$3(strings == null ? _this._strings = _this._newHashTable$0() : strings, key, value); + _this.__js_helper$_addHashTableEntry$3(strings == null ? _this._strings = _this._newHashTable$0() : strings, key, value); } else if (typeof key == "number" && (key & 0x3fffffff) === key) { nums = _this._nums; - _this._addHashTableEntry$3(nums == null ? _this._nums = _this._newHashTable$0() : nums, key, value); - } else - _this.internalSet$2(key, value); + _this.__js_helper$_addHashTableEntry$3(nums == null ? _this._nums = _this._newHashTable$0() : nums, key, value); + } else { + rest = _this.__js_helper$_rest; + if (rest == null) + rest = _this.__js_helper$_rest = _this._newHashTable$0(); + hash = _this.internalComputeHashCode$1(key); + bucket = rest[hash]; + if (bucket == null) + rest[hash] = [_this._newLinkedCell$2(key, value)]; + else { + index = _this.internalFindBucketIndex$2(bucket, key); + if (index >= 0) + bucket[index].hashMapCellValue = value; + else + bucket.push(_this._newLinkedCell$2(key, value)); + } + } }, - internalSet$2(key, value) { - var rest, hash, bucket, index, _this = this, + putIfAbsent$2(key, ifAbsent) { + var t2, value, _this = this, t1 = A._instanceType(_this); t1._precomputed1._as(key); - t1._rest[1]._as(value); - rest = _this.__js_helper$_rest; - if (rest == null) - rest = _this.__js_helper$_rest = _this._newHashTable$0(); - hash = _this.internalComputeHashCode$1(key); - bucket = rest[hash]; - if (bucket == null) - rest[hash] = [_this._newLinkedCell$2(key, value)]; - else { - index = _this.internalFindBucketIndex$2(bucket, key); - if (index >= 0) - bucket[index].hashMapCellValue = value; - else - bucket.push(_this._newLinkedCell$2(key, value)); + t1._eval$1("2()")._as(ifAbsent); + if (_this.containsKey$1(key)) { + t2 = _this.$index(0, key); + return t2 == null ? t1._rest[1]._as(t2) : t2; } + value = ifAbsent.call$0(); + _this.$indexSet(0, key, value); + return value; + }, + remove$1(_, key) { + var t1 = this._removeHashTableEntry$2(this._strings, key); + return t1; }, forEach$1(_, action) { var cell, modifications, _this = this; @@ -6027,7 +5780,7 @@ cell = cell._next; } }, - _addHashTableEntry$3(table, key, value) { + __js_helper$_addHashTableEntry$3(table, key, value) { var cell, t1 = A._instanceType(this); t1._precomputed1._as(key); @@ -6038,20 +5791,53 @@ else cell.hashMapCellValue = value; }, + _removeHashTableEntry$2(table, key) { + var cell; + if (table == null) + return null; + cell = table[key]; + if (cell == null) + return null; + this._unlinkCell$1(cell); + delete table[key]; + return cell.hashMapCellValue; + }, + _modified$0() { + this._modifications = this._modifications + 1 & 1073741823; + }, _newLinkedCell$2(key, value) { var _this = this, t1 = A._instanceType(_this), cell = new A.LinkedHashMapCell(t1._precomputed1._as(key), t1._rest[1]._as(value)); if (_this._first == null) _this._first = _this._last = cell; - else - _this._last = _this._last._next = cell; - ++_this._length; - _this._modifications = _this._modifications + 1 & 1073741823; + else { + t1 = _this._last; + t1.toString; + cell._previous = t1; + _this._last = t1._next = cell; + } + ++_this.__js_helper$_length; + _this._modified$0(); return cell; }, + _unlinkCell$1(cell) { + var _this = this, + previous = cell._previous, + next = cell._next; + if (previous == null) + _this._first = next; + else + previous._next = next; + if (next == null) + _this._last = previous; + else + next._previous = previous; + --_this.__js_helper$_length; + _this._modified$0(); + }, internalComputeHashCode$1(key) { - return J.get$hashCode$(key) & 0x3fffffff; + return J.get$hashCode$(key) & 1073741823; }, internalFindBucketIndex$2(bucket, key) { var $length, i; @@ -6075,19 +5861,17 @@ $isLinkedHashMap: 1 }; A.LinkedHashMapCell.prototype = {}; - A.LinkedHashMapKeyIterable.prototype = { + A.LinkedHashMapKeysIterable.prototype = { get$length(_) { - return this._map._length; + return this._map.__js_helper$_length; }, get$iterator(_) { - var t1 = this._map, - t2 = new A.LinkedHashMapKeyIterator(t1, t1._modifications, this.$ti._eval$1("LinkedHashMapKeyIterator<1>")); - t2._cell = t1._first; - return t2; + var t1 = this._map; + return new A.LinkedHashMapKeyIterator(t1, t1._modifications, t1._first, this.$ti._eval$1("LinkedHashMapKeyIterator<1>")); } }; A.LinkedHashMapKeyIterator.prototype = { - get$current(_) { + get$current() { return this.__js_helper$_current; }, moveNext$0() { @@ -6114,22 +5898,41 @@ call$1(o) { return this.getTag(o); }, - $signature: 8 + $signature: 13 }; A.initHooks_closure0.prototype = { call$2(o, tag) { return this.getUnknownTag(o, tag); }, - $signature: 9 + $signature: 14 }; A.initHooks_closure1.prototype = { call$1(tag) { return this.prototypeForTag(A._asString(tag)); }, - $signature: 10 + $signature: 15 + }; + A.NativeByteBuffer.prototype = { + get$runtimeType(receiver) { + return B.Type_ByteBuffer_rqD; + }, + asUint8List$2(receiver, offsetInBytes, $length) { + return $length == null ? new Uint8Array(receiver, offsetInBytes) : new Uint8Array(receiver, offsetInBytes, $length); + }, + asUint8List$0(receiver) { + return this.asUint8List$2(receiver, 0, null); + }, + $isTrustedGetRuntimeType: 1, + $isNativeByteBuffer: 1, + $isByteBuffer: 1 }; - A.NativeByteBuffer.prototype = {$isNativeByteBuffer: 1, $isByteBuffer: 1}; A.NativeTypedData.prototype = { + get$buffer(receiver) { + if (((receiver.$flags | 0) & 2) !== 0) + return new A._UnmodifiableNativeByteBufferView(receiver.buffer); + else + return receiver.buffer; + }, _invalidPosition$3(receiver, position, $length, $name) { var t1 = A.RangeError$range(position, 0, $length, $name, null); throw A.wrapException(t1); @@ -6137,41 +5940,33 @@ _checkPosition$3(receiver, position, $length, $name) { if (position >>> 0 !== position || position > $length) this._invalidPosition$3(receiver, position, $length, $name); + } + }; + A._UnmodifiableNativeByteBufferView.prototype = { + asUint8List$2(_, offsetInBytes, $length) { + var result = A.NativeUint8List_NativeUint8List$view(this._data, offsetInBytes, $length); + result.$flags = 3; + return result; + }, + asUint8List$0(_) { + return this.asUint8List$2(0, 0, null); }, - $isNativeTypedData: 1 + $isByteBuffer: 1 }; A.NativeByteData.prototype = { - _getUint32$2(receiver, byteOffset, littleEndian) { - return receiver.getUint32(byteOffset, littleEndian); + get$runtimeType(receiver) { + return B.Type_ByteData_9dB; }, - setInt8$2(receiver, byteOffset, value) { + _setInt8$2(receiver, byteOffset, value) { return receiver.setInt8(byteOffset, value); }, - _setUint32$3(receiver, byteOffset, value, littleEndian) { - return receiver.setUint32(byteOffset, value, littleEndian); - }, + $isTrustedGetRuntimeType: 1, $isByteData: 1 }; A.NativeTypedArray.prototype = { get$length(receiver) { return receiver.length; }, - _setRangeFast$4(receiver, start, end, source, skipCount) { - var count, sourceLength, - targetLength = receiver.length; - this._checkPosition$3(receiver, start, targetLength, "start"); - this._checkPosition$3(receiver, end, targetLength, "end"); - if (start > end) - throw A.wrapException(A.RangeError$range(start, 0, end, null, null)); - count = end - start; - sourceLength = source.length; - if (sourceLength - skipCount < count) - throw A.wrapException(A.StateError$("Not enough elements")); - if (skipCount !== 0 || sourceLength !== count) - source = source.subarray(skipCount, skipCount + count); - receiver.set(source, start); - }, - $isJSIndexable: 1, $isJavaScriptIndexingBehavior: 1 }; A.NativeTypedArrayOfDouble.prototype = { @@ -6180,69 +5975,110 @@ A._checkValidIndex(index, receiver, receiver.length); return receiver[index]; }, - $indexSet(receiver, index, value) { - A._asDouble(value); - A._checkValidIndex(index, receiver, receiver.length); - receiver[index] = value; - }, $isEfficientLengthIterable: 1, $isIterable: 1, $isList: 1 }; A.NativeTypedArrayOfInt.prototype = { - $indexSet(receiver, index, value) { - A._asInt(value); - A._checkValidIndex(index, receiver, receiver.length); - receiver[index] = value; - }, setRange$3(receiver, start, end, iterable) { + var targetLength, count, sourceLength, source; type$.Iterable_int._as(iterable); - if (type$.NativeTypedArrayOfInt._is(iterable)) { - this._setRangeFast$4(receiver, start, end, iterable, 0); - return; - } - this.super$ListMixin$setRange(receiver, start, end, iterable, 0); + receiver.$flags & 2 && A.throwUnsupportedOperation(receiver, 5); + targetLength = receiver.length; + this._checkPosition$3(receiver, start, targetLength, "start"); + this._checkPosition$3(receiver, end, targetLength, "end"); + if (start > end) + A.throwExpression(A.RangeError$range(start, 0, end, null, null)); + count = end - start; + sourceLength = iterable.length; + if (sourceLength < count) + A.throwExpression(A.StateError$("Not enough elements")); + source = sourceLength !== count ? iterable.subarray(0, count) : iterable; + receiver.set(source, start); + return; }, $isEfficientLengthIterable: 1, $isIterable: 1, $isList: 1 }; + A.NativeFloat32List.prototype = { + get$runtimeType(receiver) { + return B.Type_Float32List_9Kz; + }, + $isTrustedGetRuntimeType: 1, + $isFloat32List: 1 + }; + A.NativeFloat64List.prototype = { + get$runtimeType(receiver) { + return B.Type_Float64List_9Kz; + }, + $isTrustedGetRuntimeType: 1, + $isFloat64List: 1 + }; A.NativeInt16List.prototype = { + get$runtimeType(receiver) { + return B.Type_Int16List_s5h; + }, $index(receiver, index) { A._asInt(index); A._checkValidIndex(index, receiver, receiver.length); return receiver[index]; - } + }, + $isTrustedGetRuntimeType: 1, + $isInt16List: 1 }; A.NativeInt32List.prototype = { + get$runtimeType(receiver) { + return B.Type_Int32List_O8Z; + }, $index(receiver, index) { A._asInt(index); A._checkValidIndex(index, receiver, receiver.length); return receiver[index]; - } + }, + $isTrustedGetRuntimeType: 1, + $isInt32List: 1 }; A.NativeInt8List.prototype = { + get$runtimeType(receiver) { + return B.Type_Int8List_rFV; + }, $index(receiver, index) { A._asInt(index); A._checkValidIndex(index, receiver, receiver.length); return receiver[index]; - } + }, + $isTrustedGetRuntimeType: 1, + $isInt8List: 1 }; A.NativeUint16List.prototype = { + get$runtimeType(receiver) { + return B.Type_Uint16List_kmP; + }, $index(receiver, index) { A._asInt(index); A._checkValidIndex(index, receiver, receiver.length); return receiver[index]; - } + }, + $isTrustedGetRuntimeType: 1, + $isUint16List: 1 }; A.NativeUint32List.prototype = { + get$runtimeType(receiver) { + return B.Type_Uint32List_kmP; + }, $index(receiver, index) { A._asInt(index); A._checkValidIndex(index, receiver, receiver.length); return receiver[index]; - } + }, + $isTrustedGetRuntimeType: 1, + $isUint32List: 1 }; A.NativeUint8ClampedList.prototype = { + get$runtimeType(receiver) { + return B.Type_Uint8ClampedList_04U; + }, get$length(receiver) { return receiver.length; }, @@ -6250,9 +6086,14 @@ A._asInt(index); A._checkValidIndex(index, receiver, receiver.length); return receiver[index]; - } + }, + $isTrustedGetRuntimeType: 1, + $isUint8ClampedList: 1 }; A.NativeUint8List.prototype = { + get$runtimeType(receiver) { + return B.Type_Uint8List_8Eb; + }, get$length(receiver) { return receiver.length; }, @@ -6264,9 +6105,10 @@ sublist$2(receiver, start, end) { return new Uint8Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length))); }, - sublist$1($receiver, start) { - return this.sublist$2($receiver, start, null); + sublist$1(receiver, start) { + return this.sublist$2(receiver, start, null); }, + $isTrustedGetRuntimeType: 1, $isUint8List: 1 }; A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.prototype = {}; @@ -6294,13 +6136,13 @@ }; A._TypeError.prototype = {$isTypeError: 1}; A._AsyncRun__initializeScheduleImmediate_internalCallback.prototype = { - call$1(_) { + call$1(__wc0_formal) { var t1 = this._box_0, f = t1.storedCallback; t1.storedCallback = null; f.call$0(); }, - $signature: 3 + $signature: 2 }; A._AsyncRun__initializeScheduleImmediate_closure.prototype = { call$1(callback) { @@ -6310,19 +6152,19 @@ t2 = this.span; t1.firstChild ? t1.removeChild(t2) : t1.appendChild(t2); }, - $signature: 11 + $signature: 16 }; A._AsyncRun__scheduleImmediateJsOverride_internalCallback.prototype = { call$0() { this.callback.call$0(); }, - $signature: 6 + $signature: 5 }; A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback.prototype = { call$0() { this.callback.call$0(); }, - $signature: 6 + $signature: 5 }; A._TimerImpl.prototype = { _TimerImpl$2(milliseconds, callback) { @@ -6339,12 +6181,12 @@ $signature: 0 }; A._AsyncAwaitCompleter.prototype = { - complete$1(_, value) { + complete$1(value) { var t2, _this = this, t1 = _this.$ti; t1._eval$1("1/?")._as(value); if (value == null) - t1._precomputed1._as(value); + value = t1._precomputed1._as(value); if (!_this.isSync) _this._future._asyncComplete$1(value); else { @@ -6352,7 +6194,7 @@ if (t1._eval$1("Future<1>")._is(value)) t2._chainFuture$1(value); else - t2._completeWithValue$1(t1._precomputed1._as(value)); + t2._completeWithValue$1(value); } }, completeError$2(e, st) { @@ -6361,26 +6203,25 @@ t1._completeError$2(e, st); else t1._asyncCompleteError$2(e, st); - }, - $isCompleter: 1 + } }; A._awaitOnObject_closure.prototype = { call$1(result) { return this.bodyFunction.call$2(0, result); }, - $signature: 4 + $signature: 3 }; A._awaitOnObject_closure0.prototype = { call$2(error, stackTrace) { this.bodyFunction.call$2(1, new A.ExceptionAndStackTrace(error, type$.StackTrace._as(stackTrace))); }, - $signature: 12 + $signature: 17 }; A._wrapJsFunctionForAsync_closure.prototype = { call$2(errorCode, result) { this.$protected(A._asInt(errorCode), result); }, - $signature: 13 + $signature: 18 }; A.AsyncError.prototype = { toString$0(_) { @@ -6391,54 +6232,199 @@ return this.stackTrace; } }; - A._Completer.prototype = { - completeError$2(error, stackTrace) { - var t1; - A.checkNotNullable(error, "error", type$.Object); - t1 = this.future; - if ((t1._state & 30) !== 0) - throw A.wrapException(A.StateError$("Future already completed")); - if (stackTrace == null) - stackTrace = A.AsyncError_defaultStackTrace(error); - t1._asyncCompleteError$2(error, stackTrace); + A._BroadcastStream.prototype = {}; + A._BroadcastSubscription.prototype = { + _onPause$0() { }, - completeError$1(error) { - return this.completeError$2(error, null); + _onResume$0() { }, - $isCompleter: 1 - }; - A._AsyncCompleter.prototype = { - complete$1(_, value) { - var t2, - t1 = this.$ti; - t1._eval$1("1/?")._as(value); - t2 = this.future; - if ((t2._state & 30) !== 0) - throw A.wrapException(A.StateError$("Future already completed")); - t2._asyncComplete$1(t1._eval$1("1/")._as(value)); + set$_async$_next(_next) { + this._async$_next = this.$ti._eval$1("_BroadcastSubscription<1>?")._as(_next); }, - complete$0($receiver) { - return this.complete$1($receiver, null); + set$_async$_previous(_previous) { + this._async$_previous = this.$ti._eval$1("_BroadcastSubscription<1>?")._as(_previous); } }; - A._FutureListener.prototype = { - matchesErrorTest$1(asyncError) { - if ((this.state & 15) !== 6) - return true; - return this.result._zone.runUnary$2$2(type$.bool_Function_Object._as(this.callback), asyncError.error, type$.bool, type$.Object); + A._BroadcastStreamController.prototype = { + get$_mayAddEvent() { + return this._state < 4; }, - handleError$1(asyncError) { - var exception, _this = this, - errorCallback = _this.errorCallback, - result = null, - t1 = type$.dynamic, - t2 = type$.Object, - t3 = asyncError.error, - t4 = _this.result._zone; - if (type$.dynamic_Function_Object_StackTrace._is(errorCallback)) - result = t4.runBinary$3$3(errorCallback, t3, asyncError.stackTrace, t1, t2, type$.StackTrace); + _subscribe$4(onData, onError, onDone, cancelOnError) { + var t2, t3, t4, t5, subscription, oldLast, _this = this, + t1 = A._instanceType(_this); + t1._eval$1("~(1)?")._as(onData); + type$.nullable_void_Function._as(onDone); + if ((_this._state & 4) !== 0) { + t1 = new A._DoneStreamSubscription($.Zone__current, t1._eval$1("_DoneStreamSubscription<1>")); + A.scheduleMicrotask(t1.get$_onMicrotask()); + if (onDone != null) + t1.set$_onDone(type$.void_Function._as(onDone)); + return t1; + } + t2 = $.Zone__current; + t3 = cancelOnError ? 1 : 0; + t4 = onError != null ? 32 : 0; + type$.$env_1_1_void._bind$1(t1._precomputed1)._eval$1("1(2)")._as(onData); + A._BufferingStreamSubscription__registerErrorHandler(t2, onError); + t5 = onDone == null ? A.async___nullDoneHandler$closure() : onDone; + type$.void_Function._as(t5); + t1 = t1._eval$1("_BroadcastSubscription<1>"); + subscription = new A._BroadcastSubscription(_this, onData, t2, t3 | t4, t1); + subscription.set$_async$_previous(subscription); + subscription.set$_async$_next(subscription); + t1._as(subscription); + subscription._eventState = _this._state & 1; + oldLast = _this._lastSubscription; + _this.set$_lastSubscription(subscription); + subscription.set$_async$_next(null); + subscription.set$_async$_previous(oldLast); + if (oldLast == null) + _this.set$_firstSubscription(subscription); else - result = t4.runUnary$2$2(type$.dynamic_Function_Object._as(errorCallback), t3, t1, t2); + oldLast.set$_async$_next(subscription); + if (_this._firstSubscription == _this._lastSubscription) + A._runGuarded(_this.onListen); + return subscription; + }, + _addEventError$0() { + if ((this._state & 4) !== 0) + return new A.StateError("Cannot add new events after calling close"); + return new A.StateError("Cannot add new events while doing an addStream"); + }, + _forEachListener$1(action) { + var t2, subscription, id, next, previous, _this = this, + t1 = A._instanceType(_this); + t1._eval$1("~(_BufferingStreamSubscription<1>)")._as(action); + t2 = _this._state; + if ((t2 & 2) !== 0) + throw A.wrapException(A.StateError$(string$.Cannot)); + subscription = _this._firstSubscription; + if (subscription == null) + return; + id = t2 & 1; + _this._state = t2 ^ 3; + for (t1 = t1._eval$1("_BroadcastSubscription<1>"); subscription != null;) { + t2 = subscription._eventState; + if ((t2 & 1) === id) { + subscription._eventState = t2 | 2; + action.call$1(subscription); + t2 = subscription._eventState ^= 1; + next = subscription._async$_next; + if ((t2 & 4) !== 0) { + t1._as(subscription); + previous = subscription._async$_previous; + if (previous == null) + _this.set$_firstSubscription(next); + else + previous.set$_async$_next(next); + if (next == null) + _this.set$_lastSubscription(previous); + else + next.set$_async$_previous(previous); + subscription.set$_async$_previous(subscription); + subscription.set$_async$_next(subscription); + } + subscription._eventState &= 4294967293; + subscription = next; + } else + subscription = subscription._async$_next; + } + _this._state &= 4294967293; + if (_this._firstSubscription == null) + _this._callOnCancel$0(); + }, + _callOnCancel$0() { + if ((this._state & 4) !== 0) + if (null.get$_mayComplete()) + null._asyncComplete$1(null); + A._runGuarded(this.onCancel); + }, + set$_firstSubscription(_firstSubscription) { + this._firstSubscription = A._instanceType(this)._eval$1("_BroadcastSubscription<1>?")._as(_firstSubscription); + }, + set$_lastSubscription(_lastSubscription) { + this._lastSubscription = A._instanceType(this)._eval$1("_BroadcastSubscription<1>?")._as(_lastSubscription); + }, + $isStreamController: 1, + $is_StreamControllerLifecycle: 1, + $is_EventDispatch: 1 + }; + A._SyncBroadcastStreamController.prototype = { + get$_mayAddEvent() { + return A._BroadcastStreamController.prototype.get$_mayAddEvent.call(this) && (this._state & 2) === 0; + }, + _addEventError$0() { + if ((this._state & 2) !== 0) + return new A.StateError(string$.Cannot); + return this.super$_BroadcastStreamController$_addEventError(); + }, + _sendData$1(data) { + var t1, _this = this; + _this.$ti._precomputed1._as(data); + t1 = _this._firstSubscription; + if (t1 == null) + return; + if (t1 === _this._lastSubscription) { + _this._state |= 2; + t1._add$1(data); + _this._state &= 4294967293; + if (_this._firstSubscription == null) + _this._callOnCancel$0(); + return; + } + _this._forEachListener$1(new A._SyncBroadcastStreamController__sendData_closure(_this, data)); + } + }; + A._SyncBroadcastStreamController__sendData_closure.prototype = { + call$1(subscription) { + this.$this.$ti._eval$1("_BufferingStreamSubscription<1>")._as(subscription)._add$1(this.data); + }, + $signature() { + return this.$this.$ti._eval$1("~(_BufferingStreamSubscription<1>)"); + } + }; + A._Completer.prototype = { + completeError$2(error, stackTrace) { + var _0_0, + t1 = this.future; + if ((t1._state & 30) !== 0) + throw A.wrapException(A.StateError$("Future already completed")); + _0_0 = A._interceptUserError(error, stackTrace); + t1._asyncCompleteError$2(_0_0.error, _0_0.stackTrace); + }, + completeError$1(error) { + return this.completeError$2(error, null); + } + }; + A._AsyncCompleter.prototype = { + complete$1(value) { + var t2, + t1 = this.$ti; + t1._eval$1("1/?")._as(value); + t2 = this.future; + if ((t2._state & 30) !== 0) + throw A.wrapException(A.StateError$("Future already completed")); + t2._asyncComplete$1(t1._eval$1("1/")._as(value)); + } + }; + A._FutureListener.prototype = { + matchesErrorTest$1(asyncError) { + if ((this.state & 15) !== 6) + return true; + return this.result._zone.runUnary$2$2(type$.bool_Function_Object._as(this.callback), asyncError.error, type$.bool, type$.Object); + }, + handleError$1(asyncError) { + var exception, _this = this, + errorCallback = _this.errorCallback, + result = null, + t1 = type$.dynamic, + t2 = type$.Object, + t3 = asyncError.error, + t4 = _this.result._zone; + if (type$.dynamic_Function_Object_StackTrace._is(errorCallback)) + result = t4.runBinary$3$3(errorCallback, t3, asyncError.stackTrace, t1, t2, type$.StackTrace); + else + result = t4.runUnary$2$2(type$.dynamic_Function_Object._as(errorCallback), t3, t1, t2); try { t1 = _this.$ti._eval$1("2/")._as(result); return t1; @@ -6454,32 +6440,27 @@ }; A._Future.prototype = { then$1$2$onError(f, onError, $R) { - var currentZone, result, t2, + var currentZone, result, t1 = this.$ti; t1._bind$1($R)._eval$1("1/(2)")._as(f); currentZone = $.Zone__current; if (currentZone === B.C__RootZone) { - if (onError != null && !type$.dynamic_Function_Object_StackTrace._is(onError) && !type$.dynamic_Function_Object._is(onError)) + if (!type$.dynamic_Function_Object_StackTrace._is(onError) && !type$.dynamic_Function_Object._is(onError)) throw A.wrapException(A.ArgumentError$value(onError, "onError", string$.Error_)); } else { $R._eval$1("@<0/>")._bind$1(t1._precomputed1)._eval$1("1(2)")._as(f); - if (onError != null) - onError = A._registerErrorHandler(onError, currentZone); + onError = A._registerErrorHandler(onError, currentZone); } result = new A._Future(currentZone, $R._eval$1("_Future<0>")); - t2 = onError == null ? 1 : 3; - this._addListener$1(new A._FutureListener(result, t2, f, onError, t1._eval$1("@<1>")._bind$1($R)._eval$1("_FutureListener<1,2>"))); + this._addListener$1(new A._FutureListener(result, 3, f, onError, t1._eval$1("@<1>")._bind$1($R)._eval$1("_FutureListener<1,2>"))); return result; }, - then$1$1(f, $R) { - return this.then$1$2$onError(f, null, $R); - }, _thenAwait$1$2(f, onError, $E) { var result, t1 = this.$ti; t1._bind$1($E)._eval$1("1/(2)")._as(f); result = new A._Future($.Zone__current, $E._eval$1("_Future<0>")); - this._addListener$1(new A._FutureListener(result, 3, f, onError, t1._eval$1("@<1>")._bind$1($E)._eval$1("_FutureListener<1,2>"))); + this._addListener$1(new A._FutureListener(result, 19, f, onError, t1._eval$1("@<1>")._bind$1($E)._eval$1("_FutureListener<1,2>"))); return result; }, _setErrorObject$1(error) { @@ -6568,11 +6549,25 @@ _this._resultOrListeners = value; A._Future__propagateToListeners(_this, listeners); }, + _completeWithResultOf$1(source) { + var t1, listeners, _this = this; + if ((source._state & 16) !== 0) { + t1 = _this._zone === source._zone; + t1 = !(t1 || t1); + } else + t1 = false; + if (t1) + return; + listeners = _this._removeListeners$0(); + _this._cloneResult$1(source); + A._Future__propagateToListeners(_this, listeners); + }, _completeError$2(error, stackTrace) { var listeners; + type$.Object._as(error); type$.StackTrace._as(stackTrace); listeners = this._removeListeners$0(); - this._setErrorObject$1(A.AsyncError$(error, stackTrace)); + this._setErrorObject$1(new A.AsyncError(error, stackTrace)); A._Future__propagateToListeners(this, listeners); }, _asyncComplete$1(value) { @@ -6582,7 +6577,7 @@ this._chainFuture$1(value); return; } - this._asyncCompleteWithValue$1(t1._precomputed1._as(value)); + this._asyncCompleteWithValue$1(value); }, _asyncCompleteWithValue$1(value) { var _this = this; @@ -6591,18 +6586,13 @@ A._rootScheduleMicrotask(null, null, _this._zone, type$.void_Function._as(new A._Future__asyncCompleteWithValue_closure(_this, value))); }, _chainFuture$1(value) { - var _this = this, - t1 = _this.$ti; + var t1 = this.$ti; t1._eval$1("Future<1>")._as(value); if (t1._is(value)) { - if ((value._state & 16) !== 0) { - _this._state ^= 2; - A._rootScheduleMicrotask(null, null, _this._zone, type$.void_Function._as(new A._Future__chainFuture_closure(_this, value))); - } else - A._Future__chainCoreFuture(value, _this); + A._Future__chainCoreFuture(value, this, false); return; } - _this._chainForeignFuture$1(value); + this._chainForeignFuture$1(value); }, _asyncCompleteError$2(error, stackTrace) { this._state ^= 2; @@ -6635,13 +6625,13 @@ t1._completeError$2(error, stackTrace); } }, - $signature: 3 + $signature: 2 }; A._Future__chainForeignFuture_closure0.prototype = { call$2(error, stackTrace) { this.$this._completeError$2(type$.Object._as(error), type$.StackTrace._as(stackTrace)); }, - $signature: 14 + $signature: 7 }; A._Future__chainForeignFuture_closure1.prototype = { call$0() { @@ -6649,15 +6639,15 @@ }, $signature: 0 }; - A._Future__asyncCompleteWithValue_closure.prototype = { + A._Future__chainCoreFuture_closure.prototype = { call$0() { - this.$this._completeWithValue$1(this.value); + A._Future__chainCoreFuture(this._box_0.source, this.target, true); }, $signature: 0 }; - A._Future__chainFuture_closure.prototype = { + A._Future__asyncCompleteWithValue_closure.prototype = { call$0() { - A._Future__chainCoreFuture(this.value, this.$this); + this.$this._completeWithValue$1(this.value); }, $signature: 0 }; @@ -6669,20 +6659,26 @@ }; A._Future__propagateToListeners_handleWhenCompleteCallback.prototype = { call$0() { - var e, s, t1, exception, t2, originalSource, _this = this, completeResult = null; + var e, s, t1, exception, t2, t3, originalSource, joinedResult, _this = this, completeResult = null; try { t1 = _this._box_0.listener; completeResult = t1.result._zone.run$1$1(type$.dynamic_Function._as(t1.callback), type$.dynamic); } catch (exception) { e = A.unwrapException(exception); s = A.getTraceFromException(exception); - t1 = _this.hasError && type$.AsyncError._as(_this._box_1.source._resultOrListeners).error === e; - t2 = _this._box_0; - if (t1) - t2.listenerValueOrError = type$.AsyncError._as(_this._box_1.source._resultOrListeners); - else - t2.listenerValueOrError = A.AsyncError$(e, s); - t2.listenerHasError = true; + if (_this.hasError && type$.AsyncError._as(_this._box_1.source._resultOrListeners).error === e) { + t1 = _this._box_0; + t1.listenerValueOrError = type$.AsyncError._as(_this._box_1.source._resultOrListeners); + } else { + t1 = e; + t2 = s; + if (t2 == null) + t2 = A.AsyncError_defaultStackTrace(t1); + t3 = _this._box_0; + t3.listenerValueOrError = new A.AsyncError(t1, t2); + t1 = t3; + } + t1.listenerHasError = true; return; } if (completeResult instanceof A._Future && (completeResult._state & 24) !== 0) { @@ -6693,20 +6689,28 @@ } return; } - if (type$.Future_dynamic._is(completeResult)) { + if (completeResult instanceof A._Future) { originalSource = _this._box_1.source; + joinedResult = new A._Future(originalSource._zone, originalSource.$ti); + completeResult.then$1$2$onError(new A._Future__propagateToListeners_handleWhenCompleteCallback_closure(joinedResult, originalSource), new A._Future__propagateToListeners_handleWhenCompleteCallback_closure0(joinedResult), type$.void); t1 = _this._box_0; - t1.listenerValueOrError = completeResult.then$1$1(new A._Future__propagateToListeners_handleWhenCompleteCallback_closure(originalSource), type$.dynamic); + t1.listenerValueOrError = joinedResult; t1.listenerHasError = false; } }, $signature: 0 }; A._Future__propagateToListeners_handleWhenCompleteCallback_closure.prototype = { - call$1(_) { - return this.originalSource; + call$1(__wc0_formal) { + this.joinedResult._completeWithResultOf$1(this.originalSource); }, - $signature: 15 + $signature: 2 + }; + A._Future__propagateToListeners_handleWhenCompleteCallback_closure0.prototype = { + call$2(e, s) { + this.joinedResult._completeError$2(type$.Object._as(e), type$.StackTrace._as(s)); + }, + $signature: 7 }; A._Future__propagateToListeners_handleValueCallback.prototype = { call$0() { @@ -6721,16 +6725,20 @@ } catch (exception) { e = A.unwrapException(exception); s = A.getTraceFromException(exception); - t1 = this._box_0; - t1.listenerValueOrError = A.AsyncError$(e, s); - t1.listenerHasError = true; + t1 = e; + t2 = s; + if (t2 == null) + t2 = A.AsyncError_defaultStackTrace(t1); + t3 = this._box_0; + t3.listenerValueOrError = new A.AsyncError(t1, t2); + t3.listenerHasError = true; } }, $signature: 0 }; A._Future__propagateToListeners_handleError.prototype = { call$0() { - var asyncError, e, s, t1, exception, t2, _this = this; + var asyncError, e, s, t1, exception, t2, t3, _this = this; try { asyncError = type$.AsyncError._as(_this._box_1.source._resultOrListeners); t1 = _this._box_0; @@ -6742,12 +6750,20 @@ e = A.unwrapException(exception); s = A.getTraceFromException(exception); t1 = type$.AsyncError._as(_this._box_1.source._resultOrListeners); - t2 = _this._box_0; - if (t1.error === e) + if (t1.error === e) { + t2 = _this._box_0; t2.listenerValueOrError = t1; - else - t2.listenerValueOrError = A.AsyncError$(e, s); - t2.listenerHasError = true; + t1 = t2; + } else { + t1 = e; + t2 = s; + if (t2 == null) + t2 = A.AsyncError_defaultStackTrace(t1); + t3 = _this._box_0; + t3.listenerValueOrError = new A.AsyncError(t1, t2); + t1 = t3; + } + t1.listenerHasError = true; } }, $signature: 0 @@ -6755,19 +6771,16 @@ A._AsyncCallbackEntry.prototype = {}; A.Stream.prototype = { get$length(_) { - var t2, t3, _this = this, t1 = {}, + var t1 = {}, future = new A._Future($.Zone__current, type$._Future_int); t1.count = 0; - t2 = _this.$ti; - t3 = t2._eval$1("~(1)?")._as(new A.Stream_length_closure(t1, _this)); - type$.nullable_void_Function._as(new A.Stream_length_closure0(t1, future)); - A._EventStreamSubscription$(_this._target, _this._eventType, t3, false, t2._precomputed1); + this.listen$4$cancelOnError$onDone$onError(new A.Stream_length_closure(t1, this), true, new A.Stream_length_closure0(t1, future), future.get$_completeError()); return future; } }; A.Stream_length_closure.prototype = { - call$1(_) { - this.$this.$ti._precomputed1._as(_); + call$1(__wc0_formal) { + this.$this.$ti._precomputed1._as(__wc0_formal); ++this._box_0.count; }, $signature() { @@ -6787,17 +6800,184 @@ }, $signature: 0 }; - A.StreamSubscription.prototype = {}; - A.StreamTransformerBase.prototype = {}; + A._ControllerStream.prototype = { + get$hashCode(_) { + return (A.Primitives_objectHashCode(this._async$_controller) ^ 892482866) >>> 0; + }, + $eq(_, other) { + if (other == null) + return false; + if (this === other) + return true; + return other instanceof A._BroadcastStream && other._async$_controller === this._async$_controller; + } + }; + A._ControllerSubscription.prototype = { + _onPause$0() { + A._instanceType(this._async$_controller)._eval$1("StreamSubscription<1>")._as(this); + }, + _onResume$0() { + A._instanceType(this._async$_controller)._eval$1("StreamSubscription<1>")._as(this); + } + }; + A._BufferingStreamSubscription.prototype = { + _add$1(data) { + var t2, _this = this, + t1 = A._instanceType(_this); + t1._precomputed1._as(data); + t2 = _this._state; + if ((t2 & 8) !== 0) + return; + if (t2 < 64) + _this._sendData$1(data); + else + _this._addPending$1(new A._DelayedData(data, t1._eval$1("_DelayedData<1>"))); + }, + _onPause$0() { + }, + _onResume$0() { + }, + _addPending$1($event) { + var lastEvent, t1, _this = this, + pending = _this._pending; + if (pending == null) { + pending = new A._PendingEvents(A._instanceType(_this)._eval$1("_PendingEvents<1>")); + _this.set$_pending(pending); + } + lastEvent = pending.lastPendingEvent; + if (lastEvent == null) + pending.firstPendingEvent = pending.lastPendingEvent = $event; + else + pending.lastPendingEvent = lastEvent.next = $event; + t1 = _this._state; + if ((t1 & 128) === 0) { + t1 |= 128; + _this._state = t1; + if (t1 < 256) + pending.schedule$1(_this); + } + }, + _sendData$1(data) { + var t2, _this = this, + t1 = A._instanceType(_this)._precomputed1; + t1._as(data); + t2 = _this._state; + _this._state = t2 | 64; + _this._zone.runUnaryGuarded$1$2(_this._onData, data, t1); + _this._state &= 4294967231; + _this._checkState$1((t2 & 4) !== 0); + }, + _checkState$1(wasInputPaused) { + var t2, isInputPaused, _this = this, + t1 = _this._state; + if ((t1 & 128) !== 0 && _this._pending.lastPendingEvent == null) { + t1 = _this._state = t1 & 4294967167; + t2 = false; + if ((t1 & 4) !== 0) + if (t1 < 256) { + t2 = _this._pending; + t2 = t2 == null ? null : t2.lastPendingEvent == null; + t2 = t2 !== false; + } + if (t2) { + t1 &= 4294967291; + _this._state = t1; + } + } + for (; true; wasInputPaused = isInputPaused) { + if ((t1 & 8) !== 0) { + _this.set$_pending(null); + return; + } + isInputPaused = (t1 & 4) !== 0; + if (wasInputPaused === isInputPaused) + break; + _this._state = t1 ^ 64; + if (isInputPaused) + _this._onPause$0(); + else + _this._onResume$0(); + t1 = _this._state &= 4294967231; + } + if ((t1 & 128) !== 0 && t1 < 256) + _this._pending.schedule$1(_this); + }, + set$_pending(_pending) { + this._pending = A._instanceType(this)._eval$1("_PendingEvents<1>?")._as(_pending); + }, + $isStreamSubscription: 1, + $is_EventDispatch: 1 + }; + A._StreamImpl.prototype = { + listen$4$cancelOnError$onDone$onError(onData, cancelOnError, onDone, onError) { + var t1 = this.$ti; + t1._eval$1("~(1)?")._as(onData); + type$.nullable_void_Function._as(onDone); + return this._async$_controller._subscribe$4(t1._eval$1("~(1)?")._as(onData), onError, onDone, cancelOnError === true); + }, + listen$1(onData) { + return this.listen$4$cancelOnError$onDone$onError(onData, null, null, null); + } + }; + A._DelayedEvent.prototype = {}; + A._DelayedData.prototype = {}; + A._PendingEvents.prototype = { + schedule$1(dispatch) { + var t1, _this = this; + _this.$ti._eval$1("_EventDispatch<1>")._as(dispatch); + t1 = _this._state; + if (t1 === 1) + return; + if (t1 >= 1) { + _this._state = 1; + return; + } + A.scheduleMicrotask(new A._PendingEvents_schedule_closure(_this, dispatch)); + _this._state = 1; + } + }; + A._PendingEvents_schedule_closure.prototype = { + call$0() { + var t2, $event, nextEvent, + t1 = this.$this, + oldState = t1._state; + t1._state = 0; + if (oldState === 3) + return; + t2 = t1.$ti._eval$1("_EventDispatch<1>")._as(this.dispatch); + $event = t1.firstPendingEvent; + nextEvent = $event.next; + t1.firstPendingEvent = nextEvent; + if (nextEvent == null) + t1.lastPendingEvent = null; + A._instanceType($event)._eval$1("_EventDispatch<1>")._as(t2)._sendData$1($event.value); + }, + $signature: 0 + }; + A._DoneStreamSubscription.prototype = { + _onMicrotask$0() { + var _0_0, _this = this, + unscheduledState = _this._state - 1; + if (unscheduledState === 0) { + _this._state = -1; + _0_0 = _this._onDone; + if (_0_0 != null) { + _this.set$_onDone(null); + _this._zone.runGuarded$1(_0_0); + } + } else + _this._state = unscheduledState; + }, + set$_onDone(_onDone) { + this._onDone = type$.nullable_void_Function._as(_onDone); + }, + $isStreamSubscription: 1 + }; A._StreamIterator.prototype = {}; A._Zone.prototype = {$isZone: 1}; A._rootHandleError_closure.prototype = { call$0() { - var t1 = this.error, - t2 = this.stackTrace; - A.checkNotNullable(t1, "error", type$.Object); - A.checkNotNullable(t2, "stackTrace", type$.StackTrace); - A.Error__throw(t1, t2); + A.Error_throwWithStackTrace(this.error, this.stackTrace); }, $signature: 0 }; @@ -6836,9 +7016,6 @@ bindCallbackGuarded$1(f) { return new A._RootZone_bindCallbackGuarded_closure(this, type$.void_Function._as(f)); }, - bindUnaryCallbackGuarded$1$1(f, $T) { - return new A._RootZone_bindUnaryCallbackGuarded_closure(this, $T._eval$1("~(0)")._as(f), $T); - }, $index(_, key) { return null; }, @@ -6873,23 +7050,14 @@ }, $signature: 0 }; - A._RootZone_bindUnaryCallbackGuarded_closure.prototype = { - call$1(arg) { - var t1 = this.T; - return this.$this.runUnaryGuarded$1$2(this.f, t1._as(arg), t1); - }, - $signature() { - return this.T._eval$1("~(0)"); - } - }; A._HashMap.prototype = { get$length(_) { return this._collection$_length; }, - get$keys(_) { + get$keys() { return new A._HashMapKeyIterable(this, this.$ti._eval$1("_HashMapKeyIterable<1>")); }, - containsKey$1(_, key) { + containsKey$1(key) { var strings, nums; if (typeof key == "string" && key !== "__proto__") { strings = this._collection$_strings; @@ -6917,9 +7085,9 @@ t1 = nums == null ? null : A._HashMap__getTableEntry(nums, key); return t1; } else - return this._get$1(0, key); + return this._get$1(key); }, - _get$1(_, key) { + _get$1(key) { var bucket, index, rest = this._collection$_rest; if (rest == null) @@ -6929,27 +7097,35 @@ return index < 0 ? null : bucket[index + 1]; }, $indexSet(_, key, value) { - var rest, hash, bucket, index, _this = this, + var strings, nums, rest, hash, bucket, index, _this = this, t1 = _this.$ti; t1._precomputed1._as(key); t1._rest[1]._as(value); - rest = _this._collection$_rest; - if (rest == null) - rest = _this._collection$_rest = A._HashMap__newHashTable(); - hash = A.objectHashCode(key) & 1073741823; - bucket = rest[hash]; - if (bucket == null) { - A._HashMap__setTableEntry(rest, hash, [key, value]); - ++_this._collection$_length; - _this._keys = null; + if (typeof key == "string" && key !== "__proto__") { + strings = _this._collection$_strings; + _this._addHashTableEntry$3(strings == null ? _this._collection$_strings = A._HashMap__newHashTable() : strings, key, value); + } else if (typeof key == "number" && (key & 1073741823) === key) { + nums = _this._collection$_nums; + _this._addHashTableEntry$3(nums == null ? _this._collection$_nums = A._HashMap__newHashTable() : nums, key, value); } else { - index = _this._findBucketIndex$2(bucket, key); - if (index >= 0) - bucket[index + 1] = value; - else { - bucket.push(key, value); + rest = _this._collection$_rest; + if (rest == null) + rest = _this._collection$_rest = A._HashMap__newHashTable(); + hash = A.objectHashCode(key) & 1073741823; + bucket = rest[hash]; + if (bucket == null) { + A._HashMap__setTableEntry(rest, hash, [key, value]); ++_this._collection$_length; - _this._keys = null; + _this._collection$_keys = null; + } else { + index = _this._findBucketIndex$2(bucket, key); + if (index >= 0) + bucket[index + 1] = value; + else { + bucket.push(key, value); + ++_this._collection$_length; + _this._collection$_keys = null; + } } } }, @@ -6963,26 +7139,26 @@ t2._as(key); t3 = _this.$index(0, key); action.call$2(key, t3 == null ? t1._as(t3) : t3); - if (keys !== _this._keys) + if (keys !== _this._collection$_keys) throw A.wrapException(A.ConcurrentModificationError$(_this)); } }, _computeKeys$0() { - var strings, names, entries, index, i, nums, rest, bucket, $length, i0, _this = this, - result = _this._keys; + var strings, index, names, entries, i, nums, rest, bucket, $length, i0, _this = this, + result = _this._collection$_keys; if (result != null) return result; result = A.List_List$filled(_this._collection$_length, null, false, type$.dynamic); strings = _this._collection$_strings; + index = 0; if (strings != null) { names = Object.getOwnPropertyNames(strings); entries = names.length; - for (index = 0, i = 0; i < entries; ++i) { + for (i = 0; i < entries; ++i) { result[index] = names[i]; ++index; } - } else - index = 0; + } nums = _this._collection$_nums; if (nums != null) { names = Object.getOwnPropertyNames(nums); @@ -7005,7 +7181,17 @@ } } } - return _this._keys = result; + return _this._collection$_keys = result; + }, + _addHashTableEntry$3(table, key, value) { + var t1 = this.$ti; + t1._precomputed1._as(key); + t1._rest[1]._as(value); + if (table[key] == null) { + ++this._collection$_length; + this._collection$_keys = null; + } + A._HashMap__setTableEntry(table, key, value); }, _getBucket$2(table, key) { return table[A.objectHashCode(key) & 1073741823]; @@ -7035,16 +7221,16 @@ } }; A._HashMapKeyIterator.prototype = { - get$current(_) { + get$current() { var t1 = this._collection$_current; return t1 == null ? this.$ti._precomputed1._as(t1) : t1; }, moveNext$0() { var _this = this, - keys = _this._keys, + keys = _this._collection$_keys, offset = _this._offset, t1 = _this._collection$_map; - if (keys !== t1._keys) + if (keys !== t1._collection$_keys) throw A.wrapException(A.ConcurrentModificationError$(t1)); else if (offset >= keys.length) { _this.set$_collection$_current(null); @@ -7060,59 +7246,41 @@ }, $isIterator: 1 }; - A.ListBase.prototype = {$isEfficientLengthIterable: 1, $isIterable: 1, $isList: 1}; - A.ListMixin.prototype = { + A.ListBase.prototype = { get$iterator(receiver) { - return new A.ListIterator(receiver, this.get$length(receiver), A.instanceType(receiver)._eval$1("ListIterator")); + return new A.ListIterator(receiver, this.get$length(receiver), A.instanceType(receiver)._eval$1("ListIterator")); }, elementAt$1(receiver, index) { return this.$index(receiver, index); }, map$1$1(receiver, f, $T) { var t1 = A.instanceType(receiver); - return new A.MappedListIterable(receiver, t1._bind$1($T)._eval$1("1(ListMixin.E)")._as(f), t1._eval$1("@")._bind$1($T)._eval$1("MappedListIterable<1,2>")); - }, - skip$1(receiver, count) { - return A.SubListIterable$(receiver, count, null, A.instanceType(receiver)._eval$1("ListMixin.E")); - }, - setRange$4(receiver, start, end, iterable, skipCount) { - var $length, otherStart, otherList, i, - t1 = A.instanceType(receiver); - t1._eval$1("Iterable")._as(iterable); - A.RangeError_checkValidRange(start, end, this.get$length(receiver)); - $length = end - start; - if ($length === 0) - return; - A.RangeError_checkNotNegative(skipCount, "skipCount"); - if (t1._eval$1("List")._is(iterable)) { - otherStart = skipCount; - otherList = iterable; - } else { - otherList = J.skip$1$ax(iterable, skipCount).toList$1$growable(0, false); - otherStart = 0; - } - if (otherStart + $length > otherList.length) - throw A.wrapException(A.StateError$("Too few elements")); - if (otherStart < start) - for (i = $length - 1; i >= 0; --i) { - t1 = otherStart + i; - if (!(t1 < otherList.length)) - return A.ioore(otherList, t1); - this.$indexSet(receiver, start + i, otherList[t1]); - } - else - for (i = 0; i < $length; ++i) { - t1 = otherStart + i; - if (!(t1 < otherList.length)) - return A.ioore(otherList, t1); - this.$indexSet(receiver, start + i, otherList[t1]); - } + return new A.MappedListIterable(receiver, t1._bind$1($T)._eval$1("1(ListBase.E)")._as(f), t1._eval$1("@")._bind$1($T)._eval$1("MappedListIterable<1,2>")); }, toString$0(receiver) { - return A.IterableBase_iterableToFullString(receiver, "[", "]"); + return A.Iterable_iterableToFullString(receiver, "[", "]"); } }; - A.MapBase.prototype = {}; + A.MapBase.prototype = { + forEach$1(_, action) { + var t2, key, t3, + t1 = A._instanceType(this); + t1._eval$1("~(1,2)")._as(action); + for (t2 = this.get$keys(), t2 = t2.get$iterator(t2), t1 = t1._rest[1]; t2.moveNext$0();) { + key = t2.get$current(); + t3 = this.$index(0, key); + action.call$2(key, t3 == null ? t1._as(t3) : t3); + } + }, + get$length(_) { + var t1 = this.get$keys(); + return t1.get$length(t1); + }, + toString$0(_) { + return A.MapBase_mapToString(this); + }, + $isMap: 1 + }; A.MapBase_mapToString_closure.prototype = { call$2(k, v) { var t2, @@ -7121,30 +7289,13 @@ this.result._contents += ", "; t1.first = false; t1 = this.result; - t2 = t1._contents += A.S(k); + t2 = A.S(k); + t2 = t1._contents += t2; t1._contents = t2 + ": "; - t1._contents += A.S(v); - }, - $signature: 16 - }; - A.MapMixin.prototype = { - forEach$1(receiver, action) { - var t2, key, t3, - t1 = A.instanceType(receiver); - t1._eval$1("~(MapMixin.K,MapMixin.V)")._as(action); - for (t2 = J.get$iterator$ax(this.get$keys(receiver)), t1 = t1._eval$1("MapMixin.V"); t2.moveNext$0();) { - key = t2.get$current(t2); - t3 = this.$index(receiver, key); - action.call$2(key, t3 == null ? t1._as(t3) : t3); - } - }, - get$length(receiver) { - return J.get$length$asx(this.get$keys(receiver)); - }, - toString$0(receiver) { - return A.MapBase_mapToString(receiver); + t2 = A.S(v); + t1._contents += t2; }, - $isMap: 1 + $signature: 19 }; A._UnmodifiableMapMixin.prototype = {}; A.MapView.prototype = { @@ -7152,14 +7303,14 @@ return this._collection$_map.$index(0, key); }, forEach$1(_, action) { - this._collection$_map.forEach$1(0, this.$ti._eval$1("~(1,2)")._as(action)); + this._collection$_map.forEach$1(0, A._instanceType(this)._eval$1("~(1,2)")._as(action)); }, get$length(_) { - return this._collection$_map._length; + return this._collection$_map.__js_helper$_length; }, - get$keys(_) { + get$keys() { var t1 = this._collection$_map; - return new A.LinkedHashMapKeyIterable(t1, t1.$ti._eval$1("LinkedHashMapKeyIterable<1>")); + return new A.LinkedHashMapKeysIterable(t1, A._instanceType(t1)._eval$1("LinkedHashMapKeysIterable<1>")); }, toString$0(_) { return A.MapBase_mapToString(this._collection$_map); @@ -7167,7 +7318,6 @@ $isMap: 1 }; A.UnmodifiableMapView.prototype = {}; - A._ListBase_Object_ListMixin.prototype = {}; A._UnmodifiableMapView_MapView__UnmodifiableMapMixin.prototype = {}; A.Base64Codec.prototype = {}; A.Base64Encoder.prototype = { @@ -7206,7 +7356,7 @@ if (0 === end) return new Uint8Array(0); decoder = new A._Base64Decoder(); - t1 = decoder.decode$3(0, input, 0, end); + t1 = decoder.decode$3(input, 0, end); t1.toString; t2 = decoder._convert$_state; if (t2 < -1) @@ -7218,7 +7368,7 @@ } }; A._Base64Decoder.prototype = { - decode$3(_, input, start, end) { + decode$3(input, start, end) { var buffer, _this = this, t1 = _this._convert$_state; if (t1 < 0) { @@ -7244,20 +7394,20 @@ t3 += key.__internal$_name; t1._contents = t3; t1._contents = t3 + ": "; - t1._contents += A.Error_safeToString(value); + t3 = A.Error_safeToString(value); + t1._contents += t3; t2.comma = ", "; }, - $signature: 17 + $signature: 20 }; A.DateTime.prototype = { $eq(_, other) { if (other == null) return false; - return other instanceof A.DateTime && this._value === other._value && true; + return other instanceof A.DateTime && this._value === other._value && this._microsecond === other._microsecond && this.isUtc === other.isUtc; }, get$hashCode(_) { - var t1 = this._value; - return (t1 ^ B.JSInt_methods._shrOtherPositive$1(t1, 30)) & 1073741823; + return A.Object_hash(this._value, this._microsecond); }, toString$0(_) { var _this = this, @@ -7267,8 +7417,14 @@ h = A.DateTime__twoDigits(A.Primitives_getHours(_this)), min = A.DateTime__twoDigits(A.Primitives_getMinutes(_this)), sec = A.DateTime__twoDigits(A.Primitives_getSeconds(_this)), - ms = A.DateTime__threeDigits(A.Primitives_getMilliseconds(_this)); - return y + "-" + m + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms + "Z"; + ms = A.DateTime__threeDigits(A.Primitives_getMilliseconds(_this)), + t1 = _this._microsecond, + us = t1 === 0 ? "" : A.DateTime__threeDigits(t1); + t1 = y + "-" + m; + if (_this.isUtc) + return t1 + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms + us + "Z"; + else + return t1 + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms + us; } }; A._Enum.prototype = { @@ -7278,7 +7434,7 @@ }; A.Error.prototype = { get$stackTrace() { - return A.getTraceFromException(this.$thrownJsError); + return A.Primitives_extractStackTrace(this); } }; A.AssertionError.prototype = { @@ -7290,12 +7446,6 @@ } }; A.TypeError.prototype = {}; - A.NullThrownError.prototype = { - toString$0(_) { - return "Throw of null."; - }, - $isTypeError: 1 - }; A.ArgumentError.prototype = { get$_errorName() { return "Invalid argument" + (!this._hasValue ? "(s)" : ""); @@ -7368,7 +7518,8 @@ for (t1 = $arguments.length, _i = 0, t2 = "", t3 = ""; _i < t1; ++_i, t3 = ", ") { argument = $arguments[_i]; sb._contents = t2 + t3; - t2 = sb._contents += A.Error_safeToString(argument); + t2 = A.Error_safeToString(argument); + t2 = sb._contents += t2; _box_0.comma = ", "; } _this._namedArguments.forEach$1(0, new A.NoSuchMethodError_toString_closure(_box_0, sb)); @@ -7418,11 +7569,6 @@ }, $isError: 1 }; - A.CyclicInitializationError.prototype = { - toString$0(_) { - return "Reading static variable '" + this.variableName + "' during its initialization"; - } - }; A._Exception.prototype = { toString$0(_) { return "Exception: " + this.message; @@ -7430,7 +7576,7 @@ }; A.FormatException.prototype = { toString$0(_) { - var lineNum, lineStart, previousCharWasCR, i, char, lineEnd, end, start, prefix, postfix, + var lineEnd, lineNum, lineStart, previousCharWasCR, i, char, prefix, postfix, end, start, message = this.message, report = "" !== message ? "FormatException: " + message : "FormatException", offset = this.offset, @@ -7443,8 +7589,10 @@ source = B.JSString_methods.substring$2(source, 0, 75) + "..."; return report + "\n" + source; } - for (lineNum = 1, lineStart = 0, previousCharWasCR = false, i = 0; i < offset; ++i) { - char = B.JSString_methods._codeUnitAt$1(source, i); + for (lineEnd = source.length, lineNum = 1, lineStart = 0, previousCharWasCR = false, i = 0; i < offset; ++i) { + if (!(i < lineEnd)) + return A.ioore(source, i); + char = source.charCodeAt(i); if (char === 10) { if (lineStart !== i || !previousCharWasCR) ++lineNum; @@ -7457,20 +7605,21 @@ } } report = lineNum > 1 ? report + (" (at line " + lineNum + ", character " + (offset - lineStart + 1) + ")\n") : report + (" (at character " + (offset + 1) + ")\n"); - lineEnd = source.length; for (i = offset; i < lineEnd; ++i) { - char = B.JSString_methods.codeUnitAt$1(source, i); + if (!(i >= 0)) + return A.ioore(source, i); + char = source.charCodeAt(i); if (char === 10 || char === 13) { lineEnd = i; break; } } - if (lineEnd - lineStart > 78) + prefix = ""; + if (lineEnd - lineStart > 78) { + postfix = "..."; if (offset - lineStart < 75) { end = lineStart + 75; start = lineStart; - prefix = ""; - postfix = "..."; } else { if (lineEnd - offset < 75) { start = lineEnd - 75; @@ -7479,14 +7628,12 @@ } else { start = offset - 36; end = offset + 36; - postfix = "..."; } prefix = "..."; } - else { + } else { end = lineEnd; start = lineStart; - prefix = ""; postfix = ""; } return report + prefix + B.JSString_methods.substring$2(source, start, end) + postfix + "\n" + B.JSString_methods.$mul(" ", offset - start + prefix.length) + "^\n"; @@ -7505,24 +7652,23 @@ return count; }, elementAt$1(_, index) { - var t1, elementIndex, element; + var iterator, skipCount; A.RangeError_checkNotNegative(index, "index"); - for (t1 = this.get$iterator(this), elementIndex = 0; t1.moveNext$0();) { - element = t1.get$current(t1); - if (index === elementIndex) - return element; - ++elementIndex; + iterator = this.get$iterator(this); + for (skipCount = index; iterator.moveNext$0();) { + if (skipCount === 0) + return iterator.get$current(); + --skipCount; } - throw A.wrapException(A.IndexError$withLength(index, elementIndex, this, "index")); + throw A.wrapException(A.IndexError$withLength(index, index - skipCount, this, "index")); }, toString$0(_) { - return A.IterableBase_iterableToShortString(this, "(", ")"); + return A.Iterable_iterableToShortString(this, "(", ")"); } }; - A.Iterator.prototype = {}; A.Null.prototype = { get$hashCode(_) { - return A.Object.prototype.get$hashCode.call(this, this); + return A.Object.prototype.get$hashCode.call(this, 0); }, toString$0(_) { return "null"; @@ -7539,8 +7685,10 @@ return "Instance of '" + A.Primitives_objectTypeName(this) + "'"; }, noSuchMethod$1(_, invocation) { - type$.Invocation._as(invocation); - throw A.wrapException(A.NoSuchMethodError$_(this, invocation.get$memberName(), invocation.get$positionalArguments(), invocation.get$namedArguments(), null)); + throw A.wrapException(A.NoSuchMethodError_NoSuchMethodError$withInvocation(this, type$.Invocation._as(invocation))); + }, + get$runtimeType(_) { + return A.getRuntimeTypeOfDartObject(this); }, toString() { return this.toString$0(this); @@ -7561,1470 +7709,847 @@ return t1.charCodeAt(0) == 0 ? t1 : t1; } }; - A.HtmlElement.prototype = {}; - A.AccessibleNodeList.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A.AnchorElement.prototype = { - toString$0(receiver) { - return String(receiver); - } - }; - A.AreaElement.prototype = { - toString$0(receiver) { - return String(receiver); - } + A.jsify__convert.prototype = { + call$1(o) { + var t1, convertedMap, key, convertedList; + if (A._noJsifyRequired(o)) + return o; + t1 = this._convertedObjects; + if (t1.containsKey$1(o)) + return t1.$index(0, o); + if (type$.Map_of_nullable_Object_and_nullable_Object._is(o)) { + convertedMap = {}; + t1.$indexSet(0, o, convertedMap); + for (t1 = o.get$keys(), t1 = t1.get$iterator(t1); t1.moveNext$0();) { + key = t1.get$current(); + convertedMap[key] = this.call$1(o.$index(0, key)); + } + return convertedMap; + } else if (type$.Iterable_nullable_Object._is(o)) { + convertedList = []; + t1.$indexSet(0, o, convertedList); + B.JSArray_methods.addAll$1(convertedList, J.map$1$1$ax(o, this, type$.dynamic)); + return convertedList; + } else + return o; + }, + $signature: 8 }; - A.Blob.prototype = {$isBlob: 1}; - A.CharacterData.prototype = { - get$length(receiver) { - return receiver.length; - } + A.promiseToFuture_closure.prototype = { + call$1(r) { + return this.completer.complete$1(this.T._eval$1("0/?")._as(r)); + }, + $signature: 3 }; - A.CryptoKey.prototype = {$isCryptoKey: 1}; - A.CssPerspective.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A.CssRule.prototype = {$isCssRule: 1}; - A.CssStyleDeclaration.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A.CssStyleDeclarationBase.prototype = {}; - A.CssStyleValue.prototype = {}; - A.CssTransformComponent.prototype = {}; - A.CssTransformValue.prototype = { - get$length(receiver) { - return receiver.length; - } + A.promiseToFuture_closure0.prototype = { + call$1(e) { + if (e == null) + return this.completer.completeError$1(new A.NullRejectionException(e === undefined)); + return this.completer.completeError$1(e); + }, + $signature: 3 }; - A.CssUnparsedValue.prototype = { - get$length(receiver) { - return receiver.length; - } + A.dartify_convert.prototype = { + call$1(o) { + var t1, millisSinceEpoch, proto, t2, dartObject, originalKeys, dartKeys, i, jsKey, dartKey, l, $length; + if (A._noDartifyRequired(o)) + return o; + t1 = this._convertedObjects; + o.toString; + if (t1.containsKey$1(o)) + return t1.$index(0, o); + if (o instanceof Date) { + millisSinceEpoch = o.getTime(); + if (millisSinceEpoch < -864e13 || millisSinceEpoch > 864e13) + A.throwExpression(A.RangeError$range(millisSinceEpoch, -864e13, 864e13, "millisecondsSinceEpoch", null)); + A.checkNotNullable(true, "isUtc", type$.bool); + return new A.DateTime(millisSinceEpoch, 0, true); + } + if (o instanceof RegExp) + throw A.wrapException(A.ArgumentError$("structured clone of RegExp", null)); + if (typeof Promise != "undefined" && o instanceof Promise) + return A.promiseToFuture(o, type$.nullable_Object); + proto = Object.getPrototypeOf(o); + if (proto === Object.prototype || proto === null) { + t2 = type$.nullable_Object; + dartObject = A.LinkedHashMap_LinkedHashMap$_empty(t2, t2); + t1.$indexSet(0, o, dartObject); + originalKeys = Object.keys(o); + dartKeys = []; + for (t1 = J.getInterceptor$ax(originalKeys), t2 = t1.get$iterator(originalKeys); t2.moveNext$0();) + dartKeys.push(A.dartify(t2.get$current())); + for (i = 0; i < t1.get$length(originalKeys); ++i) { + jsKey = t1.$index(originalKeys, i); + if (!(i < dartKeys.length)) + return A.ioore(dartKeys, i); + dartKey = dartKeys[i]; + if (jsKey != null) + dartObject.$indexSet(0, dartKey, this.call$1(o[jsKey])); + } + return dartObject; + } + if (o instanceof Array) { + l = o; + dartObject = []; + t1.$indexSet(0, o, dartObject); + $length = A._asInt(o.length); + for (t1 = J.getInterceptor$asx(l), i = 0; i < $length; ++i) + dartObject.push(this.call$1(t1.$index(l, i))); + return dartObject; + } + return o; + }, + $signature: 8 }; - A.DataTransferItem.prototype = { - get$kind(receiver) { - return receiver.kind; + A.NullRejectionException.prototype = { + toString$0(_) { + return "Promise was rejected with a value of `" + (this.isUndefined ? "undefined" : "null") + "`."; } }; - A.DataTransferItemList.prototype = { - get$length(receiver) { - return receiver.length; + A._JSSecureRandom.prototype = { + _JSSecureRandom$0() { + var $crypto = self.crypto; + if ($crypto != null) + if ($crypto.getRandomValues != null) + return; + throw A.wrapException(A.UnsupportedError$("No source of cryptographically secure random numbers available.")); }, - $index(receiver, index) { - return receiver[A._asInt(index)]; + nextInt$1(max) { + var byteCount, t1, start, randomLimit, t2, t3, random, result, _null = null; + if (max <= 0 || max > 4294967296) + throw A.wrapException(new A.RangeError(_null, _null, false, _null, _null, "max must be in range 0 < max \u2264 2^32, was " + max)); + if (max > 255) + if (max > 65535) + byteCount = max > 16777215 ? 4 : 3; + else + byteCount = 2; + else + byteCount = 1; + t1 = this._math$_buffer; + t1.$flags & 2 && A.throwUnsupportedOperation(t1, 11); + t1.setUint32(0, 0, false); + start = 4 - byteCount; + randomLimit = A._asInt(Math.pow(256, byteCount)); + for (t2 = max - 1, t3 = (max & t2) === 0; true;) { + crypto.getRandomValues(J.asUint8List$2$x(B.NativeByteData_methods.get$buffer(t1), start, byteCount)); + random = t1.getUint32(0, false); + if (t3) + return (random & t2) >>> 0; + result = random % max; + if (random - result + max < randomLimit) + return result; + } } }; - A.DedicatedWorkerGlobalScope.prototype = { - postMessage$1(receiver, message) { - receiver.postMessage(new A._StructuredCloneDart2Js([], []).walk$1(message)); - return; - }, - $isDedicatedWorkerGlobalScope: 1 - }; - A.DomException.prototype = { - toString$0(receiver) { - return String(receiver); + A.CryptorError.prototype = { + _enumToString$0() { + return "CryptorError." + this._name; } }; - A.DomRectList.prototype = { - get$length(receiver) { - return receiver.length; + A.FrameInfo.prototype = {}; + A.FrameCryptor.prototype = { + get$enabled() { + if (this.participantIdentity == null) + return false; + return this._enabled; }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; + setupTransform$6$codec$kind$operation$readable$trackId$writable(codec, kind, operation, readable, trackId, writable) { + return this.setupTransform$body$FrameCryptor(codec, kind, operation, readable, trackId, writable); }, - $indexSet(receiver, index, value) { - type$.Rectangle_num._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + setupTransform$5$kind$operation$readable$trackId$writable(kind, operation, readable, trackId, writable) { + return this.setupTransform$6$codec$kind$operation$readable$trackId$writable(null, kind, operation, readable, trackId, writable); }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; + setupTransform$body$FrameCryptor(codec, kind, operation, readable, trackId, writable) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + $async$self = this, transformer, e, t2, t3, t4, t5, exception, t1; + var $async$setupTransform$6$codec$kind$operation$readable$trackId$writable = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + if ($async$errorCode === 1) + return A._asyncRethrow($async$result, $async$completer); + while (true) + switch ($async$goto) { + case 0: + // Function start + t1 = $.$get$logger(); + t1.log$4(B.Level_INFO_800, "setupTransform " + operation + " kind " + kind, null, null); + $async$self.__FrameCryptor_kind_A = kind; + if (codec != null) { + t1.log$4(B.Level_INFO_800, "setting codec on cryptor to " + codec, null, null); + $async$self.codec = codec; + } + t1 = self.TransformStream; + t2 = operation === "encode" ? $async$self.get$encodeFunction() : $async$self.get$decodeFunction(); + t3 = type$.Future_void_Function_JSObject_JSObject; + t4 = type$.String; + t5 = type$.JSObject; + transformer = t5._as(new t1(t5._as(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["transform", A.allowInterop(t2, t3)], t4, t3))))); + try { + t5._as(t5._as(readable.pipeThrough(transformer)).pipeTo(writable)); + } catch (exception) { + e = A.unwrapException(exception); + $.$get$logger().log$4(B.Level_WARNING_900, "e " + J.toString$0$(e), null, null); + if ($async$self.lastError !== B.CryptorError_7) { + $async$self.lastError = B.CryptorError_7; + $async$self.worker.postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "msgType", "event", "participantId", $async$self.participantIdentity, "state", "internalError", "error", "Internal error: " + J.toString$0$(e)], t4, type$.nullable_String))); + } + } + $async$self.trackId = trackId; + // implicit return + return A._asyncReturn(null, $async$completer); + } + }); + return A._asyncStartSync($async$setupTransform$6$codec$kind$operation$readable$trackId$writable, $async$completer); }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A.DomRectReadOnly.prototype = { - toString$0(receiver) { - var t2, - t1 = receiver.left; - t1.toString; - t2 = receiver.top; - t2.toString; - return "Rectangle (" + A.S(t1) + ", " + A.S(t2) + ") " + A.S(this.get$width(receiver)) + " x " + A.S(this.get$height(receiver)); + getUnencryptedBytes$2(obj, codec) { + var naluIndices, t1, t2, _i, index, type, _null = null, frameType = "", + data = A.NativeUint8List_NativeUint8List$view(type$.NativeByteBuffer._as(obj.data), 0, _null); + if ("type" in obj) { + frameType = A._asString(obj.type); + $.$get$logger().log$4(B.Level_FINER_400, "frameType: " + frameType, _null, _null); + } + if (codec != null && codec.toLowerCase() === "h264") { + type$.Uint8List._as(data); + naluIndices = A.findNALUIndices(data); + for (t1 = naluIndices.length, t2 = data.length, _i = 0; _i < naluIndices.length; naluIndices.length === t1 || (0, A.throwConcurrentModificationError)(naluIndices), ++_i) { + index = naluIndices[_i]; + if (!(index < t2)) + return A.ioore(data, index); + type = data[index] & 31; + switch (type) { + case 5: + case 1: + t1 = index + 2; + $.$get$logger().log$4(B.Level_FINER_400, "unEncryptedBytes NALU of type " + type + ", offset " + t1, _null, _null); + return t1; + default: + $.$get$logger().log$4(B.Level_FINER_400, "skipping NALU of type " + type, _null, _null); + break; + } + } + throw A.wrapException(A.Exception_Exception("Could not find NALU")); + } + switch (frameType) { + case "key": + return 10; + case "delta": + return 3; + case "audio": + return 1; + default: + return 0; + } }, - $eq(receiver, other) { - var t1, t2; - if (other == null) - return false; - if (type$.Rectangle_num._is(other)) { - t1 = receiver.left; - t1.toString; - t2 = other.left; - t2.toString; - if (t1 === t2) { - t1 = receiver.top; - t1.toString; - t2 = other.top; - t2.toString; - if (t1 === t2) { - t1 = J.getInterceptor$x(other); - t1 = this.get$width(receiver) === t1.get$width(other) && this.get$height(receiver) === t1.get$height(other); - } else - t1 = false; - } else - t1 = false; + readFrameInfo$1(frameObj) { + var buffer, frameType, t1, synchronizationSource, timestamp; + new Uint8Array(0); + buffer = A.NativeUint8List_NativeUint8List$view(type$.NativeByteBuffer._as(frameObj.data), 0, null); + if ("type" in frameObj) { + frameType = A._asString(frameObj.type); + $.$get$logger().log$4(B.Level_FINER_400, "frameType: " + frameType, null, null); } else - t1 = false; - return t1; - }, - get$hashCode(receiver) { - var t2, - t1 = receiver.left; - t1.toString; - t2 = receiver.top; - t2.toString; - return A.Object_hash(t1, t2, this.get$width(receiver), this.get$height(receiver)); - }, - get$_height(receiver) { - return receiver.height; - }, - get$height(receiver) { - var t1 = this.get$_height(receiver); - t1.toString; - return t1; - }, - get$_width(receiver) { - return receiver.width; + frameType = ""; + t1 = type$.JSObject; + synchronizationSource = A._asInt(t1._as(frameObj.getMetadata()).synchronizationSource); + if ("rtpTimestamp" in t1._as(frameObj.getMetadata())) + timestamp = B.JSInt_methods.toInt$0(A._asInt(t1._as(frameObj.getMetadata()).rtpTimestamp)); + else + timestamp = "timestamp" in frameObj ? A._asInt(A._asDouble(frameObj.timestamp)) : 0; + return new A.FrameInfo(frameType, synchronizationSource, timestamp, buffer); }, - get$width(receiver) { - var t1 = this.get$_width(receiver); - t1.toString; - return t1; + enqueueFrame$3(frameObj, controller, buffer) { + var t1 = type$.NativeByteBuffer._as(B.NativeUint8List_methods.get$buffer(buffer.toBytes$0())); + frameObj.data = t1; + controller.enqueue(frameObj); }, - $isRectangle: 1 - }; - A.DomStringList.prototype = { - get$length(receiver) { - return receiver.length; + encodeFunction$2(frameObj, controller) { + var t1 = type$.JSObject; + return this.encodeFunction$body$FrameCryptor(t1._as(frameObj), t1._as(controller)); }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; + encodeFunction$body$FrameCryptor(frameObj, controller) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$self = this, srcFrame, secretKey, keyIndex, headerLength, iv, frameTrailer, cipherText, finalBuffer, e, t1, t2, t3, t4, iv0, sendCount, t5, t6, t7, exception, $async$exception, $async$temp1; + var $async$encodeFunction$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + if ($async$errorCode === 1) { + $async$errorStack.push($async$result); + $async$goto = $async$handler; + } + while (true) + switch ($async$goto) { + case 0: + // Function start + $async$handler = 4; + t1 = true; + if ($async$self.get$enabled()) { + t2 = type$.NativeByteBuffer; + if (!(t2._as(frameObj.data).byteLength === 0)) + t1 = t2._as(frameObj.data).byteLength === 0; + } + if (t1) { + if ($async$self.keyHandler.keyOptions.discardFrameWhenCryptorNotReady) { + // goto return + $async$goto = 1; + break; + } + controller.enqueue(frameObj); + // goto return + $async$goto = 1; + break; + } + srcFrame = $async$self.readFrameInfo$1(frameObj); + t1 = $.$get$logger(); + t1.log$4(B.Level_FINE_500, "encodeFunction: buffer " + srcFrame.buffer.length + ", synchronizationSource " + srcFrame.ssrc + " frameType " + srcFrame.frameType, null, null); + t2 = $async$self.keyHandler.getKeySet$1($async$self.currentKeyIndex); + secretKey = t2 == null ? null : t2.encryptionKey; + keyIndex = $async$self.currentKeyIndex; + if (secretKey == null) { + if ($async$self.lastError !== B.CryptorError_5) { + $async$self.lastError = B.CryptorError_5; + t1 = $async$self.participantIdentity; + t2 = $async$self.trackId; + t3 = $async$self.__FrameCryptor_kind_A; + t3 === $ && A.throwLateFieldNI("kind"); + $async$self.worker.postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "msgType", "event", "participantId", t1, "trackId", t2, "kind", t3, "state", "missingKey", "error", "Missing key for track " + t2], type$.String, type$.nullable_String))); + } + // goto return + $async$goto = 1; + break; + } + t2 = $async$self.__FrameCryptor_kind_A; + t2 === $ && A.throwLateFieldNI("kind"); + headerLength = t2 === "video" ? $async$self.getUnencryptedBytes$2(frameObj, $async$self.codec) : 1; + t3 = srcFrame.ssrc; + t4 = srcFrame.timestamp; + iv0 = new DataView(new ArrayBuffer(12)); + t2 = $async$self.sendCounts; + if (t2.$index(0, t3) == null) + t2.$indexSet(0, t3, $.$get$Random__secureRandom().nextInt$1(65535)); + sendCount = t2.$index(0, t3); + if (sendCount == null) + sendCount = 0; + iv0.setUint32(0, t3, false); + iv0.setUint32(4, t4, false); + iv0.setUint32(8, t4 - B.JSInt_methods.$mod(sendCount, 65535), false); + t2.$indexSet(0, t3, sendCount + 1); + iv = J.asUint8List$0$x(B.NativeByteData_methods.get$buffer(iv0)); + frameTrailer = new DataView(new ArrayBuffer(2)); + t2 = frameTrailer; + t2.$flags & 2 && A.throwUnsupportedOperation(t2, 6); + J._setInt8$2$x(t2, 0, 12); + t2 = frameTrailer; + t3 = A._asInt(keyIndex); + t2.$flags & 2 && A.throwUnsupportedOperation(t2, 6); + J._setInt8$2$x(t2, 1, t3); + t3 = $async$self.worker; + t2 = type$.JSObject; + t4 = t2._as(t2._as(t3.crypto).subtle); + t5 = type$.String; + t6 = type$.Object; + t7 = A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["name", "AES-GCM", "iv", iv, "additionalData", B.NativeUint8List_methods.sublist$2(srcFrame.buffer, 0, headerLength)], t5, t6)); + t6 = t7 == null ? t6._as(t7) : t7; + $async$temp1 = type$.NativeByteBuffer; + $async$goto = 7; + return A._asyncAwait(A.promiseToFuture(t2._as(t4.encrypt(t6, secretKey, B.NativeUint8List_methods.sublist$2(srcFrame.buffer, headerLength, srcFrame.buffer.length))), type$.nullable_Object), $async$encodeFunction$2); + case 7: + // returning from await. + cipherText = $async$temp1._as($async$result); + t1.log$4(B.Level_FINER_400, "encodeFunction: encrypted buffer: " + srcFrame.buffer.length + ", cipherText: " + A.NativeUint8List_NativeUint8List$view(cipherText, 0, null).length, null, null); + t2 = $.$get$_CopyingBytesBuilder__emptyList(); + finalBuffer = new A._CopyingBytesBuilder(t2); + J.add$1$ax(finalBuffer, new Uint8Array(A._ensureNativeList(B.NativeUint8List_methods.sublist$2(srcFrame.buffer, 0, headerLength)))); + J.add$1$ax(finalBuffer, A.NativeUint8List_NativeUint8List$view(cipherText, 0, null)); + J.add$1$ax(finalBuffer, iv); + J.add$1$ax(finalBuffer, J.asUint8List$0$x(J.get$buffer$x(frameTrailer))); + $async$self.enqueueFrame$3(frameObj, controller, finalBuffer); + if ($async$self.lastError !== B.CryptorError_1) { + $async$self.lastError = B.CryptorError_1; + t3.postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "msgType", "event", "participantId", $async$self.participantIdentity, "trackId", $async$self.trackId, "kind", $async$self.__FrameCryptor_kind_A, "state", "ok", "error", "encryption ok"], t5, type$.nullable_String))); + } + t1.log$4(B.Level_FINER_400, "encodeFunction[CryptorError.kOk]: frame enqueued kind " + $async$self.__FrameCryptor_kind_A + ",codec " + A.S($async$self.codec) + " headerLength: " + A.S(headerLength) + ", timestamp: " + srcFrame.timestamp + ", ssrc: " + srcFrame.ssrc + ", data length: " + srcFrame.buffer.length + ", encrypted length: " + finalBuffer.toBytes$0().length + ", iv " + A.S(iv), null, null); + $async$handler = 2; + // goto after finally + $async$goto = 6; + break; + case 4: + // catch + $async$handler = 3; + $async$exception = $async$errorStack.pop(); + e = A.unwrapException($async$exception); + $.$get$logger().log$4(B.Level_WARNING_900, "encodeFunction encrypt: e " + J.toString$0$(e), null, null); + if ($async$self.lastError !== B.CryptorError_3) { + $async$self.lastError = B.CryptorError_3; + t1 = $async$self.participantIdentity; + t2 = $async$self.trackId; + t3 = $async$self.__FrameCryptor_kind_A; + t3 === $ && A.throwLateFieldNI("kind"); + $async$self.worker.postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "msgType", "event", "participantId", t1, "trackId", t2, "kind", t3, "state", "encryptError", "error", J.toString$0$(e)], type$.String, type$.nullable_String))); + } + // goto after finally + $async$goto = 6; + break; + case 3: + // uncaught + // goto rethrow + $async$goto = 2; + break; + case 6: + // after finally + case 1: + // return + return A._asyncReturn($async$returnValue, $async$completer); + case 2: + // rethrow + return A._asyncRethrow($async$errorStack.at(-1), $async$completer); + } + }); + return A._asyncStartSync($async$encodeFunction$2, $async$completer); }, - $indexSet(receiver, index, value) { - A._asString(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + decodeFunction$2(frameObj, controller) { + var t1 = type$.JSObject; + return this.decodeFunction$body$FrameCryptor(t1._as(frameObj), t1._as(controller)); }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A.DomTokenList.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A.Element.prototype = { - toString$0(receiver) { - return receiver.localName; - } - }; - A.Event.prototype = {$isEvent: 1}; - A.EventTarget.prototype = { - addEventListener$3(receiver, type, listener, useCapture) { - type$.nullable_dynamic_Function_Event._as(listener); - if (listener != null) - this._addEventListener$3(receiver, type, listener, false); - }, - _addEventListener$3(receiver, type, listener, options) { - return receiver.addEventListener(type, A.convertDartClosureToJS(type$.nullable_dynamic_Function_Event._as(listener), 1), false); - }, - $isEventTarget: 1 - }; - A.File.prototype = {$isFile: 1}; - A.FileList.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; - }, - $indexSet(receiver, index, value) { - type$.File._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1, - $isFileList: 1 - }; - A.FileWriter.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A.FormElement.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A.Gamepad.prototype = {$isGamepad: 1}; - A.History.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A.HtmlCollection.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; - }, - $indexSet(receiver, index, value) { - type$.Node._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A.ImageData.prototype = {$isImageData: 1}; - A.Location.prototype = { - toString$0(receiver) { - return String(receiver); - } - }; - A.MediaDeviceInfo.prototype = { - get$kind(receiver) { - return receiver.kind; - } - }; - A.MediaList.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A.MediaStreamTrack.prototype = { - get$kind(receiver) { - return receiver.kind; - } - }; - A.MessageEvent.prototype = {$isMessageEvent: 1}; - A.MessagePort.prototype = {$isMessagePort: 1}; - A.MidiInputMap.prototype = { - $index(receiver, key) { - return A.convertNativeToDart_Dictionary(receiver.get(A._asString(key))); - }, - forEach$1(receiver, f) { - var entries, entry; - type$.void_Function_String_dynamic._as(f); - entries = receiver.entries(); - for (; true;) { - entry = entries.next(); - if (entry.done) - return; - f.call$2(entry.value[0], A.convertNativeToDart_Dictionary(entry.value[1])); - } - }, - get$keys(receiver) { - var keys = A._setArrayType([], type$.JSArray_String); - this.forEach$1(receiver, new A.MidiInputMap_keys_closure(keys)); - return keys; - }, - get$length(receiver) { - return receiver.size; - }, - $isMap: 1 - }; - A.MidiInputMap_keys_closure.prototype = { - call$2(k, v) { - return B.JSArray_methods.add$1(this.keys, k); - }, - $signature: 2 - }; - A.MidiOutputMap.prototype = { - $index(receiver, key) { - return A.convertNativeToDart_Dictionary(receiver.get(A._asString(key))); - }, - forEach$1(receiver, f) { - var entries, entry; - type$.void_Function_String_dynamic._as(f); - entries = receiver.entries(); - for (; true;) { - entry = entries.next(); - if (entry.done) - return; - f.call$2(entry.value[0], A.convertNativeToDart_Dictionary(entry.value[1])); - } - }, - get$keys(receiver) { - var keys = A._setArrayType([], type$.JSArray_String); - this.forEach$1(receiver, new A.MidiOutputMap_keys_closure(keys)); - return keys; - }, - get$length(receiver) { - return receiver.size; - }, - $isMap: 1 - }; - A.MidiOutputMap_keys_closure.prototype = { - call$2(k, v) { - return B.JSArray_methods.add$1(this.keys, k); - }, - $signature: 2 - }; - A.MimeType.prototype = {$isMimeType: 1}; - A.MimeTypeArray.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; - }, - $indexSet(receiver, index, value) { - type$.MimeType._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A.Node.prototype = { - toString$0(receiver) { - var value = receiver.nodeValue; - return value == null ? this.super$Interceptor$toString(receiver) : value; - }, - $isNode: 1 - }; - A.NodeList.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; - }, - $indexSet(receiver, index, value) { - type$.Node._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A.Plugin.prototype = { - get$length(receiver) { - return receiver.length; - }, - $isPlugin: 1 - }; - A.PluginArray.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; - }, - $indexSet(receiver, index, value) { - type$.Plugin._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A.RtcStatsReport.prototype = { - $index(receiver, key) { - return A.convertNativeToDart_Dictionary(receiver.get(A._asString(key))); - }, - forEach$1(receiver, f) { - var entries, entry; - type$.void_Function_String_dynamic._as(f); - entries = receiver.entries(); - for (; true;) { - entry = entries.next(); - if (entry.done) - return; - f.call$2(entry.value[0], A.convertNativeToDart_Dictionary(entry.value[1])); - } - }, - get$keys(receiver) { - var keys = A._setArrayType([], type$.JSArray_String); - this.forEach$1(receiver, new A.RtcStatsReport_keys_closure(keys)); - return keys; - }, - get$length(receiver) { - return receiver.size; - }, - $isMap: 1 - }; - A.RtcStatsReport_keys_closure.prototype = { - call$2(k, v) { - return B.JSArray_methods.add$1(this.keys, k); - }, - $signature: 2 - }; - A.SelectElement.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A.SharedArrayBuffer.prototype = {$isSharedArrayBuffer: 1}; - A.SourceBuffer.prototype = {$isSourceBuffer: 1}; - A.SourceBufferList.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; - }, - $indexSet(receiver, index, value) { - type$.SourceBuffer._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A.SpeechGrammar.prototype = {$isSpeechGrammar: 1}; - A.SpeechGrammarList.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; - }, - $indexSet(receiver, index, value) { - type$.SpeechGrammar._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A.SpeechRecognitionResult.prototype = { - get$length(receiver) { - return receiver.length; - }, - $isSpeechRecognitionResult: 1 - }; - A.Storage.prototype = { - $index(receiver, key) { - return receiver.getItem(A._asString(key)); - }, - forEach$1(receiver, f) { - var i, key, t1; - type$.void_Function_String_String._as(f); - for (i = 0; true; ++i) { - key = receiver.key(i); - if (key == null) - return; - t1 = receiver.getItem(key); - t1.toString; - f.call$2(key, t1); - } - }, - get$keys(receiver) { - var keys = A._setArrayType([], type$.JSArray_String); - this.forEach$1(receiver, new A.Storage_keys_closure(keys)); - return keys; - }, - get$length(receiver) { - return receiver.length; - }, - $isMap: 1 - }; - A.Storage_keys_closure.prototype = { - call$2(k, v) { - return B.JSArray_methods.add$1(this.keys, k); - }, - $signature: 18 - }; - A.StyleSheet.prototype = {$isStyleSheet: 1}; - A.TextTrack.prototype = { - get$kind(receiver) { - return receiver.kind; - }, - $isTextTrack: 1 - }; - A.TextTrackCue.prototype = {$isTextTrackCue: 1}; - A.TextTrackCueList.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; - }, - $indexSet(receiver, index, value) { - type$.TextTrackCue._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A.TextTrackList.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; - }, - $indexSet(receiver, index, value) { - type$.TextTrack._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A.TimeRanges.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A.Touch.prototype = {$isTouch: 1}; - A.TouchList.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; - }, - $indexSet(receiver, index, value) { - type$.Touch._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A.TrackDefaultList.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A.TrackElement.prototype = { - get$kind(receiver) { - return receiver.kind; - } - }; - A.Url.prototype = { - toString$0(receiver) { - return String(receiver); - } - }; - A.VideoTrack.prototype = { - get$kind(receiver) { - return receiver.kind; - } - }; - A.VideoTrackList.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A.WorkerGlobalScope.prototype = {}; - A._CssRuleList.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; - }, - $indexSet(receiver, index, value) { - type$.CssRule._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A._DomRect.prototype = { - toString$0(receiver) { - var t2, t3, t4, - t1 = receiver.left; - t1.toString; - t2 = receiver.top; - t2.toString; - t3 = receiver.width; - t3.toString; - t4 = receiver.height; - t4.toString; - return "Rectangle (" + A.S(t1) + ", " + A.S(t2) + ") " + A.S(t3) + " x " + A.S(t4); - }, - $eq(receiver, other) { - var t1, t2; - if (other == null) - return false; - if (type$.Rectangle_num._is(other)) { - t1 = receiver.left; - t1.toString; - t2 = other.left; - t2.toString; - if (t1 === t2) { - t1 = receiver.top; - t1.toString; - t2 = other.top; - t2.toString; - if (t1 === t2) { - t1 = receiver.width; - t1.toString; - t2 = J.getInterceptor$x(other); - if (t1 === t2.get$width(other)) { - t1 = receiver.height; + decodeFunction$body$FrameCryptor(frameObj, controller) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$self = this, headerLength, frameTrailer, ivLength, keyIndex, iv, decryptFrameInternal, ratchedKeyInternal, e, finalBuffer, e0, t2, t3, t4, t5, t6, magicBytesBuffer, t7, initialKeySet, exception, t1, srcFrame, $async$exception, $async$exception1; + var $async$decodeFunction$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + if ($async$errorCode === 1) { + $async$errorStack.push($async$result); + $async$goto = $async$handler; + } + while (true) + switch ($async$goto) { + case 0: + // Function start + t1 = {}; + srcFrame = $async$self.readFrameInfo$1(frameObj); + t1.ratchetCount = 0; + t2 = $.$get$logger(); + t2.log$4(B.Level_FINE_500, "decodeFunction: frame lenght " + srcFrame.buffer.length, null, null); + t1.initialKeySet = t1.decrypted = null; + t1.initialKeyIndex = $async$self.currentKeyIndex; + if (!$async$self.get$enabled() || srcFrame.buffer.length === 0) { + $async$self.sifGuard.recordUserFrame$0(); + if ($async$self.keyHandler.keyOptions.discardFrameWhenCryptorNotReady) { + // goto return + $async$goto = 1; + break; + } + t2.log$4(B.Level_FINE_500, "enqueing empty frame", null, null); + controller.enqueue(frameObj); + t2.log$4(B.Level_FINER_400, "enqueing silent frame", null, null); + // goto return + $async$goto = 1; + break; + } + t3 = $async$self.keyHandler.keyOptions.uncryptedMagicBytes; + if (t3 != null) { + t4 = srcFrame.buffer; + t5 = t3.length; + t6 = t5 + 1; + if (t4.length > t6) { + magicBytesBuffer = B.NativeUint8List_methods.sublist$2(srcFrame.buffer, srcFrame.buffer.length - t5 - 1, srcFrame.buffer.length - 1); + t2.log$4(B.Level_FINER_400, "magicBytesBuffer " + A.S(magicBytesBuffer) + ", magicBytes " + A.S(t3), null, null); + t4 = $async$self.sifGuard; + if (A.Iterable_iterableToFullString(magicBytesBuffer, "[", "]") === A.Iterable_iterableToFullString(t3, "[", "]")) { + ++t4.consecutiveSifCount; + if (t4.sifSequenceStartedAt == null) + t4.sifSequenceStartedAt = Date.now(); + t4.lastSifReceivedAt = Date.now(); + if (t4.consecutiveSifCount < 100) + if (t4.sifSequenceStartedAt != null) { + t1 = Date.now(); + t4 = t4.sifSequenceStartedAt; + t4.toString; + t4 = t1 - t4 < 2000; + t1 = t4; + } else + t1 = true; + else + t1 = false; + if (t1) { + t1 = B.NativeUint8List_methods.sublist$1(srcFrame.buffer, srcFrame.buffer.length - 1); + if (0 >= t1.length) { + $async$returnValue = A.ioore(t1, 0); + // goto return + $async$goto = 1; + break; + } + t2.log$4(B.Level_FINER_400, "ecodeFunction: skip uncrypted frame, type " + t1[0], null, null); + finalBuffer = new A._CopyingBytesBuilder($.$get$_CopyingBytesBuilder__emptyList()); + finalBuffer.add$1(0, new Uint8Array(A._ensureNativeList(B.NativeUint8List_methods.sublist$2(srcFrame.buffer, 0, srcFrame.buffer.length - t6)))); + $async$self.enqueueFrame$3(frameObj, controller, finalBuffer); + t2.log$4(B.Level_FINE_500, "ecodeFunction: enqueing silent frame", null, null); + controller.enqueue(frameObj); + } else + t2.log$4(B.Level_FINER_400, "ecodeFunction: SIF limit reached, dropping frame", null, null); + t2.log$4(B.Level_FINER_400, "ecodeFunction: enqueing silent frame", null, null); + controller.enqueue(frameObj); + // goto return + $async$goto = 1; + break; + } else + t4.recordUserFrame$0(); + } + } + $async$handler = 4; + t3 = {}; + t4 = $async$self.__FrameCryptor_kind_A; + t4 === $ && A.throwLateFieldNI("kind"); + headerLength = t4 === "video" ? $async$self.getUnencryptedBytes$2(frameObj, $async$self.codec) : 1; + frameTrailer = B.NativeUint8List_methods.sublist$1(srcFrame.buffer, srcFrame.buffer.length - 2); + ivLength = J.$index$asx(frameTrailer, 0); + keyIndex = J.$index$asx(frameTrailer, 1); + t5 = srcFrame.buffer; + t6 = srcFrame.buffer; + t7 = ivLength; + if (typeof t7 !== "number") { + $async$returnValue = A.iae(t7); + // goto return + $async$goto = 1; + break; + } + iv = B.NativeUint8List_methods.sublist$2(t5, t6.length - t7 - 2, srcFrame.buffer.length - 2); + initialKeySet = t1.initialKeySet = $async$self.keyHandler.getKeySet$1(keyIndex); + t1.initialKeyIndex = keyIndex; + t2.log$4(B.Level_FINER_400, "decodeFunction: start decrypting frame headerLength " + A.S(headerLength) + " " + srcFrame.buffer.length + " frameTrailer " + A.S(frameTrailer) + ", ivLength " + A.S(ivLength) + ", keyIndex " + A.S(keyIndex) + ", iv " + A.S(iv), null, null); + if (initialKeySet == null || !$async$self.keyHandler._hasValidKey) { + if ($async$self.lastError !== B.CryptorError_5) { + $async$self.lastError = B.CryptorError_5; + t1 = $async$self.participantIdentity; + t2 = $async$self.trackId; + $async$self.worker.postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "msgType", "event", "participantId", t1, "trackId", t2, "kind", $async$self.__FrameCryptor_kind_A, "state", "missingKey", "error", "Missing key for track " + t2], type$.String, type$.nullable_String))); + } + // goto return + $async$goto = 1; + break; + } + t3.currentkeySet = initialKeySet; + decryptFrameInternal = new A.FrameCryptor_decodeFunction_decryptFrameInternal(t1, t3, $async$self, iv, srcFrame, headerLength, ivLength); + ratchedKeyInternal = new A.FrameCryptor_decodeFunction_ratchedKeyInternal(t1, t3, $async$self, decryptFrameInternal); + $async$handler = 8; + $async$goto = 11; + return A._asyncAwait(decryptFrameInternal.call$0(), $async$decodeFunction$2); + case 11: + // returning from await. + $async$handler = 4; + // goto after finally + $async$goto = 10; + break; + case 8: + // catch + $async$handler = 7; + $async$exception = $async$errorStack.pop(); + e = A.unwrapException($async$exception); + $async$self.lastError = B.CryptorError_7; + t2 = $.$get$logger(); + t2.log$4(B.Level_FINER_400, "decodeFunction: kInternalError catch " + A.S(e), null, null); + $async$goto = 12; + return A._asyncAwait(ratchedKeyInternal.call$0(), $async$decodeFunction$2); + case 12: + // returning from await. + // goto after finally + $async$goto = 10; + break; + case 7: + // uncaught + // goto catch + $async$goto = 4; + break; + case 10: + // after finally + t3 = t1.decrypted; + if (t3 == null) { + t1 = A.Exception_Exception("[decodeFunction] decryption failed even after ratchting"); + throw A.wrapException(t1); + } + t4 = $async$self.keyHandler; + t4._decryptionFailureCount = 0; + t4._hasValidKey = true; + t2.log$4(B.Level_FINER_400, "decodeFunction: decryption success, buffer length " + srcFrame.buffer.length + ", decrypted: " + A.NativeUint8List_NativeUint8List$view(t3, 0, null).length, null, null); + t3 = $.$get$_CopyingBytesBuilder__emptyList(); + finalBuffer = new A._CopyingBytesBuilder(t3); + J.add$1$ax(finalBuffer, new Uint8Array(A._ensureNativeList(B.NativeUint8List_methods.sublist$2(srcFrame.buffer, 0, headerLength)))); + t1 = t1.decrypted; t1.toString; - t2 = t1 === t2.get$height(other); - t1 = t2; - } else - t1 = false; - } else - t1 = false; - } else - t1 = false; - } else - t1 = false; - return t1; - }, - get$hashCode(receiver) { - var t2, t3, t4, - t1 = receiver.left; - t1.toString; - t2 = receiver.top; - t2.toString; - t3 = receiver.width; - t3.toString; - t4 = receiver.height; - t4.toString; - return A.Object_hash(t1, t2, t3, t4); - }, - get$_height(receiver) { - return receiver.height; - }, - get$height(receiver) { - var t1 = receiver.height; - t1.toString; - return t1; - }, - get$_width(receiver) { - return receiver.width; - }, - get$width(receiver) { - var t1 = receiver.width; - t1.toString; - return t1; - } - }; - A._GamepadList.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; - }, - $indexSet(receiver, index, value) { - type$.nullable_Gamepad._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A._NamedNodeMap.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; - }, - $indexSet(receiver, index, value) { - type$.Node._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A._SpeechRecognitionResultList.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; - }, - $indexSet(receiver, index, value) { - type$.SpeechRecognitionResult._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A._StyleSheetList.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - var t1; - A._asInt(index); - t1 = receiver.length; - if (index >>> 0 !== index || index >= t1) - throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); - return receiver[index]; - }, - $indexSet(receiver, index, value) { - type$.StyleSheet._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - if (!(index >= 0 && index < receiver.length)) - return A.ioore(receiver, index); - return receiver[index]; - }, - $isJSIndexable: 1, - $isEfficientLengthIterable: 1, - $isJavaScriptIndexingBehavior: 1, - $isIterable: 1, - $isList: 1 - }; - A.EventStreamProvider.prototype = {}; - A._EventStream.prototype = {}; - A._EventStreamSubscription.prototype = {}; - A._EventStreamSubscription_closure.prototype = { - call$1(e) { - return this.onData.call$1(type$.Event._as(e)); - }, - $signature: 19 - }; - A.ImmutableListMixin.prototype = { - get$iterator(receiver) { - return new A.FixedSizeListIterator(receiver, this.get$length(receiver), A.instanceType(receiver)._eval$1("FixedSizeListIterator")); - } - }; - A.FixedSizeListIterator.prototype = { - moveNext$0() { - var _this = this, - nextPosition = _this._position + 1, - t1 = _this._html$_length; - if (nextPosition < t1) { - _this.set$_html$_current(J.$index$asx(_this._array, nextPosition)); - _this._position = nextPosition; - return true; - } - _this.set$_html$_current(null); - _this._position = t1; - return false; - }, - get$current(_) { - var t1 = this._html$_current; - return t1 == null ? this.$ti._precomputed1._as(t1) : t1; - }, - set$_html$_current(_current) { - this._html$_current = this.$ti._eval$1("1?")._as(_current); - }, - $isIterator: 1 - }; - A._CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase.prototype = {}; - A._DomRectList_JavaScriptObject_ListMixin.prototype = {}; - A._DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A._DomStringList_JavaScriptObject_ListMixin.prototype = {}; - A._DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A._FileList_JavaScriptObject_ListMixin.prototype = {}; - A._FileList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A._HtmlCollection_JavaScriptObject_ListMixin.prototype = {}; - A._HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A._MidiInputMap_JavaScriptObject_MapMixin.prototype = {}; - A._MidiOutputMap_JavaScriptObject_MapMixin.prototype = {}; - A._MimeTypeArray_JavaScriptObject_ListMixin.prototype = {}; - A._MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A._NodeList_JavaScriptObject_ListMixin.prototype = {}; - A._NodeList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A._PluginArray_JavaScriptObject_ListMixin.prototype = {}; - A._PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A._RtcStatsReport_JavaScriptObject_MapMixin.prototype = {}; - A._SourceBufferList_EventTarget_ListMixin.prototype = {}; - A._SourceBufferList_EventTarget_ListMixin_ImmutableListMixin.prototype = {}; - A._SpeechGrammarList_JavaScriptObject_ListMixin.prototype = {}; - A._SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A._Storage_JavaScriptObject_MapMixin.prototype = {}; - A._TextTrackCueList_JavaScriptObject_ListMixin.prototype = {}; - A._TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A._TextTrackList_EventTarget_ListMixin.prototype = {}; - A._TextTrackList_EventTarget_ListMixin_ImmutableListMixin.prototype = {}; - A._TouchList_JavaScriptObject_ListMixin.prototype = {}; - A._TouchList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A.__CssRuleList_JavaScriptObject_ListMixin.prototype = {}; - A.__CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A.__GamepadList_JavaScriptObject_ListMixin.prototype = {}; - A.__GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A.__NamedNodeMap_JavaScriptObject_ListMixin.prototype = {}; - A.__NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin.prototype = {}; - A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A.__StyleSheetList_JavaScriptObject_ListMixin.prototype = {}; - A.__StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A._StructuredClone.prototype = { - findSlot$1(value) { - var i, - t1 = this.values, - $length = t1.length; - for (i = 0; i < $length; ++i) - if (t1[i] === value) - return i; - B.JSArray_methods.add$1(t1, value); - B.JSArray_methods.add$1(this.copies, null); - return $length; - }, - walk$1(e) { - var slot, t2, copy, _this = this, t1 = {}; - if (e == null) - return e; - if (A._isBool(e)) - return e; - if (typeof e == "number") - return e; - if (typeof e == "string") - return e; - if (e instanceof A.DateTime) - return new Date(e._value); - if (type$.File._is(e)) - return e; - if (type$.Blob._is(e)) - return e; - if (type$.FileList._is(e)) - return e; - if (type$.ImageData._is(e)) - return e; - if (type$.NativeByteBuffer._is(e) || type$.NativeTypedData._is(e) || type$.MessagePort._is(e) || type$.SharedArrayBuffer._is(e)) - return e; - if (type$.Map_dynamic_dynamic._is(e)) { - slot = _this.findSlot$1(e); - t2 = _this.copies; - if (!(slot < t2.length)) - return A.ioore(t2, slot); - copy = t1.copy = t2[slot]; - if (copy != null) - return copy; - copy = {}; - t1.copy = copy; - B.JSArray_methods.$indexSet(t2, slot, copy); - J.forEach$1$x(e, new A._StructuredClone_walk_closure(t1, _this)); - return t1.copy; - } - if (type$.List_dynamic._is(e)) { - slot = _this.findSlot$1(e); - t1 = _this.copies; - if (!(slot < t1.length)) - return A.ioore(t1, slot); - copy = t1[slot]; - if (copy != null) - return copy; - return _this.copyList$2(e, slot); - } - if (type$.JSObject._is(e)) { - slot = _this.findSlot$1(e); - t2 = _this.copies; - if (!(slot < t2.length)) - return A.ioore(t2, slot); - copy = t1.copy = t2[slot]; - if (copy != null) - return copy; - copy = {}; - t1.copy = copy; - B.JSArray_methods.$indexSet(t2, slot, copy); - _this.forEachObjectKey$2(e, new A._StructuredClone_walk_closure0(t1, _this)); - return t1.copy; - } - throw A.wrapException(A.UnimplementedError$("structured clone of other type")); - }, - copyList$2(e, slot) { - var i, - t1 = J.getInterceptor$asx(e), - $length = t1.get$length(e), - copy = new Array($length); - B.JSArray_methods.$indexSet(this.copies, slot, copy); - for (i = 0; i < $length; ++i) - B.JSArray_methods.$indexSet(copy, i, this.walk$1(t1.$index(e, i))); - return copy; - } - }; - A._StructuredClone_walk_closure.prototype = { - call$2(key, value) { - this._box_0.copy[key] = this.$this.walk$1(value); - }, - $signature: 20 - }; - A._StructuredClone_walk_closure0.prototype = { - call$2(key, value) { - this._box_0.copy[key] = this.$this.walk$1(value); - }, - $signature: 21 - }; - A._AcceptStructuredClone.prototype = { - findSlot$1(value) { - var i, - t1 = this.values, - $length = t1.length; - for (i = 0; i < $length; ++i) - if (t1[i] === value) - return i; - B.JSArray_methods.add$1(t1, value); - B.JSArray_methods.add$1(this.copies, null); - return $length; - }, - walk$1(e) { - var millisSinceEpoch, t1, slot, copy, t2, map, l, $length, i, _this = this; - if (e == null) - return e; - if (A._isBool(e)) - return e; - if (typeof e == "number") - return e; - if (typeof e == "string") - return e; - if (e instanceof Date) { - millisSinceEpoch = e.getTime(); - if (Math.abs(millisSinceEpoch) <= 864e13) - t1 = false; - else - t1 = true; - if (t1) - A.throwExpression(A.ArgumentError$("DateTime is outside valid range: " + millisSinceEpoch, null)); - A.checkNotNullable(true, "isUtc", type$.bool); - return new A.DateTime(millisSinceEpoch, true); - } - if (e instanceof RegExp) - throw A.wrapException(A.UnimplementedError$("structured clone of RegExp")); - if (typeof Promise != "undefined" && e instanceof Promise) - return A.promiseToFuture(e, type$.dynamic); - if (A.isJavaScriptSimpleObject(e)) { - slot = _this.findSlot$1(e); - t1 = _this.copies; - if (!(slot < t1.length)) - return A.ioore(t1, slot); - copy = t1[slot]; - if (copy != null) - return copy; - t2 = type$.dynamic; - map = A.LinkedHashMap_LinkedHashMap$_empty(t2, t2); - B.JSArray_methods.$indexSet(t1, slot, map); - _this.forEachJsField$2(e, new A._AcceptStructuredClone_walk_closure(_this, map)); - return map; - } - if (e instanceof Array) { - l = e; - slot = _this.findSlot$1(l); - t1 = _this.copies; - if (!(slot < t1.length)) - return A.ioore(t1, slot); - copy = t1[slot]; - if (copy != null) - return copy; - t2 = J.getInterceptor$asx(l); - $length = t2.get$length(l); - copy = _this.mustCopy ? new Array($length) : l; - B.JSArray_methods.$indexSet(t1, slot, copy); - for (t1 = J.getInterceptor$ax(copy), i = 0; i < $length; ++i) - t1.$indexSet(copy, i, _this.walk$1(t2.$index(l, i))); - return copy; - } - return e; - } - }; - A._AcceptStructuredClone_walk_closure.prototype = { - call$2(key, value) { - var t1 = this.$this.walk$1(value); - this.map.$indexSet(0, key, t1); - return t1; - }, - $signature: 22 - }; - A._StructuredCloneDart2Js.prototype = { - forEachObjectKey$2(object, action) { - var t1, t2, _i, key; - type$.dynamic_Function_dynamic_dynamic._as(action); - for (t1 = Object.keys(object), t2 = t1.length, _i = 0; _i < t2; ++_i) { - key = t1[_i]; - action.call$2(key, object[key]); - } - } - }; - A._AcceptStructuredCloneDart2Js.prototype = { - forEachJsField$2(object, action) { - var t1, t2, _i, key; - type$.dynamic_Function_dynamic_dynamic._as(action); - for (t1 = Object.keys(object), t2 = t1.length, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) { - key = t1[_i]; - action.call$2(key, object[key]); - } + J.add$1$ax(finalBuffer, A.NativeUint8List_NativeUint8List$view(t1, 0, null)); + $async$self.enqueueFrame$3(frameObj, controller, finalBuffer); + if ($async$self.lastError !== B.CryptorError_1) { + $async$self.lastError = B.CryptorError_1; + $async$self.worker.postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "msgType", "event", "participantId", $async$self.participantIdentity, "trackId", $async$self.trackId, "kind", $async$self.__FrameCryptor_kind_A, "state", "ok", "error", "decryption ok"], type$.String, type$.nullable_String))); + } + t2.log$4(B.Level_FINE_500, "decodeFunction[CryptorError.kOk]: decryption success kind " + $async$self.__FrameCryptor_kind_A + ", headerLength: " + A.S(headerLength) + ", timestamp: " + srcFrame.timestamp + ", ssrc: " + srcFrame.ssrc + ", data length: " + srcFrame.buffer.length + ", decrypted length: " + finalBuffer.toBytes$0().length + ", keyindex " + A.S(keyIndex) + " iv " + A.S(iv), null, null); + $async$handler = 2; + // goto after finally + $async$goto = 6; + break; + case 4: + // catch + $async$handler = 3; + $async$exception1 = $async$errorStack.pop(); + e0 = A.unwrapException($async$exception1); + if ($async$self.lastError !== B.CryptorError_2) { + $async$self.lastError = B.CryptorError_2; + t1 = $async$self.participantIdentity; + t2 = $async$self.trackId; + t3 = $async$self.__FrameCryptor_kind_A; + t3 === $ && A.throwLateFieldNI("kind"); + $async$self.worker.postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "msgType", "event", "participantId", t1, "trackId", t2, "kind", t3, "state", "decryptError", "error", J.toString$0$(e0)], type$.String, type$.nullable_String))); + } + $async$self.keyHandler.decryptionFailure$0(); + // goto after finally + $async$goto = 6; + break; + case 3: + // uncaught + // goto rethrow + $async$goto = 2; + break; + case 6: + // after finally + case 1: + // return + return A._asyncReturn($async$returnValue, $async$completer); + case 2: + // rethrow + return A._asyncRethrow($async$errorStack.at(-1), $async$completer); + } + }); + return A._asyncStartSync($async$decodeFunction$2, $async$completer); } }; - A._convertDataTree__convert.prototype = { - call$1(o) { - var convertedMap, t2, key, convertedList, - t1 = this._convertedObjects; - if (t1.containsKey$1(0, o)) - return t1.$index(0, o); - if (type$.Map_dynamic_dynamic._is(o)) { - convertedMap = {}; - t1.$indexSet(0, o, convertedMap); - for (t1 = J.getInterceptor$x(o), t2 = J.get$iterator$ax(t1.get$keys(o)); t2.moveNext$0();) { - key = t2.get$current(t2); - convertedMap[key] = this.call$1(t1.$index(o, key)); - } - return convertedMap; - } else if (type$.Iterable_dynamic._is(o)) { - convertedList = []; - t1.$indexSet(0, o, convertedList); - B.JSArray_methods.addAll$1(convertedList, J.map$1$1$ax(o, this, type$.dynamic)); - return convertedList; - } else - return o; - }, - $signature: 23 - }; - A.promiseToFuture_closure.prototype = { - call$1(r) { - return this.completer.complete$1(0, this.T._eval$1("0/?")._as(r)); + A.FrameCryptor_decodeFunction_decryptFrameInternal.prototype = { + call$0() { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + $async$self = this, decrypted, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, $async$temp1; + var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + if ($async$errorCode === 1) + return A._asyncRethrow($async$result, $async$completer); + while (true) + switch ($async$goto) { + case 0: + // Function start + t1 = $async$self.$this; + t2 = t1.worker; + t3 = type$.JSObject; + t4 = t3._as(t3._as(t2.crypto).subtle); + t5 = $async$self.srcFrame; + t6 = t5.buffer; + t7 = $async$self.headerLength; + t8 = type$.String; + t9 = type$.Object; + t10 = A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["name", "AES-GCM", "iv", $async$self.iv, "additionalData", B.NativeUint8List_methods.sublist$2(t6, 0, t7)], t8, t9)); + t9 = t10 == null ? t9._as(t10) : t10; + t10 = $async$self._box_0; + $async$temp1 = type$.NativeByteBuffer; + $async$goto = 2; + return A._asyncAwait(A.promiseToFuture(t3._as(t4.decrypt(t9, t10.currentkeySet.encryptionKey, B.NativeUint8List_methods.sublist$2(t6, t7, t6.length - $async$self.ivLength - 2))), type$.nullable_Object), $async$call$0); + case 2: + // returning from await. + decrypted = $async$temp1._as($async$result); + t6 = $async$self._box_1; + t6.decrypted = decrypted; + t7 = $.$get$logger(); + t7.log$4(B.Level_FINER_400, string$.decode + A.NativeUint8List_NativeUint8List$view(decrypted, 0, null).length, null, null); + t3 = t6.decrypted; + if (t3 == null) + throw A.wrapException(A.Exception_Exception("[decryptFrameInternal] could not decrypt")); + t7.log$4(B.Level_FINER_400, string$.decode + A.NativeUint8List_NativeUint8List$view(t3, 0, null).length, null, null); + $async$goto = t10.currentkeySet !== t6.initialKeySet ? 3 : 4; + break; + case 3: + // then + t7.log$4(B.Level_FINE_500, "decodeFunction::decryptFrameInternal: ratchetKey: decryption ok, newState: kKeyRatcheted", null, null); + $async$goto = 5; + return A._asyncAwait(t1.keyHandler.setKeySetFromMaterial$2(t10.currentkeySet, t6.initialKeyIndex), $async$call$0); + case 5: + // returning from await. + case 4: + // join + t3 = t1.lastError; + if (t3 !== B.CryptorError_1 && t3 !== B.CryptorError_6 && t6.ratchetCount > 0) { + t7.log$4(B.Level_FINER_400, "decodeFunction::decryptFrameInternal: KeyRatcheted: ssrc " + t5.ssrc + " timestamp " + t5.timestamp + " ratchetCount " + t6.ratchetCount + " participantId: " + A.S(t1.participantIdentity), null, null); + t7.log$4(B.Level_FINER_400, "decodeFunction::decryptFrameInternal: ratchetKey: lastError != CryptorError.kKeyRatcheted, reset state to kKeyRatcheted", null, null); + t1.lastError = B.CryptorError_6; + t3 = t1.participantIdentity; + t4 = t1.trackId; + t1 = t1.__FrameCryptor_kind_A; + t1 === $ && A.throwLateFieldNI("kind"); + t2.postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "msgType", "event", "participantId", t3, "trackId", t4, "kind", t1, "state", "keyRatcheted", "error", "Key ratcheted ok"], t8, type$.nullable_String))); + } + // implicit return + return A._asyncReturn(null, $async$completer); + } + }); + return A._asyncStartSync($async$call$0, $async$completer); }, - $signature: 4 + $signature: 10 }; - A.promiseToFuture_closure0.prototype = { - call$1(e) { - if (e == null) - return this.completer.completeError$1(new A.NullRejectionException(e === undefined)); - return this.completer.completeError$1(e); + A.FrameCryptor_decodeFunction_ratchedKeyInternal.prototype = { + call$0() { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + $async$self = this, newKeyBuffer, newMaterial, t1, t2, t3, t4, t5, t6, $async$temp1; + var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + if ($async$errorCode === 1) + return A._asyncRethrow($async$result, $async$completer); + while (true) + switch ($async$goto) { + case 0: + // Function start + t1 = $async$self._box_1; + t2 = t1.ratchetCount; + t3 = $async$self.$this; + t4 = t3.keyHandler; + t5 = t4.keyOptions; + t6 = t5.ratchetWindowSize; + if (t2 >= t6 || t6 <= 0) + throw A.wrapException(A.Exception_Exception("[ratchedKeyInternal] cannot ratchet anymore")); + t2 = $async$self._box_0; + $async$goto = 2; + return A._asyncAwait(t4.ratchet$2(t2.currentkeySet.material, t5.ratchetSalt), $async$call$0); + case 2: + // returning from await. + newKeyBuffer = $async$result; + $async$goto = 3; + return A._asyncAwait(t3.keyHandler.ratchetMaterial$2(t2.currentkeySet.material, J.get$buffer$x(newKeyBuffer)), $async$call$0); + case 3: + // returning from await. + newMaterial = $async$result; + t3 = t3.keyHandler; + $async$temp1 = t2; + $async$goto = 4; + return A._asyncAwait(t3.deriveKeys$2(newMaterial, t3.keyOptions.ratchetSalt), $async$call$0); + case 4: + // returning from await. + $async$temp1.currentkeySet = $async$result; + ++t1.ratchetCount; + $async$goto = 5; + return A._asyncAwait($async$self.decryptFrameInternal.call$0(), $async$call$0); + case 5: + // returning from await. + // implicit return + return A._asyncReturn(null, $async$completer); + } + }); + return A._asyncStartSync($async$call$0, $async$completer); }, - $signature: 4 + $signature: 10 }; - A.NullRejectionException.prototype = { + A.KeyOptions.prototype = { toString$0(_) { - return "Promise was rejected with a value of `" + (this.isUndefined ? "undefined" : "null") + "`."; - } - }; - A._JSSecureRandom.prototype = { - _JSSecureRandom$0() { - var $crypto = self.crypto; - if ($crypto != null) - if ($crypto.getRandomValues != null) - return; - throw A.wrapException(A.UnsupportedError$("No source of cryptographically secure random numbers available.")); - }, - nextInt$1(max) { - var byteCount, t1, start, randomLimit, t2, t3, t4, random, result, _null = null; - if (max <= 0 || max > 4294967296) - throw A.wrapException(new A.RangeError(_null, _null, false, _null, _null, "max must be in range 0 < max \u2264 2^32, was " + max)); - if (max > 255) - if (max > 65535) - byteCount = max > 16777215 ? 4 : 3; - else - byteCount = 2; - else - byteCount = 1; - t1 = this._math$_buffer; - B.NativeByteData_methods._setUint32$3(t1, 0, 0, false); - start = 4 - byteCount; - randomLimit = A._asInt(Math.pow(256, byteCount)); - for (t2 = max - 1, t3 = (max & t2) === 0; true;) { - t4 = t1.buffer; - t4 = new Uint8Array(t4, start, byteCount); - crypto.getRandomValues(t4); - random = B.NativeByteData_methods._getUint32$2(t1, 0, false); - if (t3) - return (random & t2) >>> 0; - result = random % max; - if (random - result + max < randomLimit) - return result; - } - } - }; - A.Length.prototype = {$isLength: 1}; - A.LengthList.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - A._asInt(index); - if (index >>> 0 !== index || index >= receiver.length) - throw A.wrapException(A.IndexError$withLength(index, this.get$length(receiver), receiver, null)); - return receiver.getItem(index); - }, - $indexSet(receiver, index, value) { - type$.Length._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - return this.$index(receiver, index); - }, - $isEfficientLengthIterable: 1, - $isIterable: 1, - $isList: 1 - }; - A.Number.prototype = {$isNumber: 1}; - A.NumberList.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - A._asInt(index); - if (index >>> 0 !== index || index >= receiver.length) - throw A.wrapException(A.IndexError$withLength(index, this.get$length(receiver), receiver, null)); - return receiver.getItem(index); - }, - $indexSet(receiver, index, value) { - type$.Number._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - return this.$index(receiver, index); - }, - $isEfficientLengthIterable: 1, - $isIterable: 1, - $isList: 1 - }; - A.PointList.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A.StringList.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - A._asInt(index); - if (index >>> 0 !== index || index >= receiver.length) - throw A.wrapException(A.IndexError$withLength(index, this.get$length(receiver), receiver, null)); - return receiver.getItem(index); - }, - $indexSet(receiver, index, value) { - A._asString(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - return this.$index(receiver, index); - }, - $isEfficientLengthIterable: 1, - $isIterable: 1, - $isList: 1 - }; - A.Transform.prototype = {$isTransform: 1}; - A.TransformList.prototype = { - get$length(receiver) { - return receiver.length; - }, - $index(receiver, index) { - A._asInt(index); - if (index >>> 0 !== index || index >= receiver.length) - throw A.wrapException(A.IndexError$withLength(index, this.get$length(receiver), receiver, null)); - return receiver.getItem(index); - }, - $indexSet(receiver, index, value) { - type$.Transform._as(value); - throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); - }, - elementAt$1(receiver, index) { - return this.$index(receiver, index); - }, - $isEfficientLengthIterable: 1, - $isIterable: 1, - $isList: 1 - }; - A._LengthList_JavaScriptObject_ListMixin.prototype = {}; - A._LengthList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A._NumberList_JavaScriptObject_ListMixin.prototype = {}; - A._NumberList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A._StringList_JavaScriptObject_ListMixin.prototype = {}; - A._StringList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A._TransformList_JavaScriptObject_ListMixin.prototype = {}; - A._TransformList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; - A.AudioBuffer.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A.AudioParamMap.prototype = { - $index(receiver, key) { - return A.convertNativeToDart_Dictionary(receiver.get(A._asString(key))); - }, - forEach$1(receiver, f) { - var entries, entry; - type$.void_Function_String_dynamic._as(f); - entries = receiver.entries(); - for (; true;) { - entry = entries.next(); - if (entry.done) - return; - f.call$2(entry.value[0], A.convertNativeToDart_Dictionary(entry.value[1])); + var _this = this; + return "KeyOptions{sharedKey: " + _this.sharedKey + ", ratchetWindowSize: " + _this.ratchetWindowSize + ", failureTolerance: " + _this.failureTolerance + ", uncryptedMagicBytes: " + A.S(_this.uncryptedMagicBytes) + ", ratchetSalt: " + A.S(_this.ratchetSalt) + "}"; + } + }; + A.KeyProvider.prototype = { + getParticipantKeyHandler$1(participantIdentity) { + var t2, keys, _this = this, + t1 = _this.keyProviderOptions; + if (t1.sharedKey) + return _this.getSharedKeyHandler$0(); + t2 = _this.participantKeys; + keys = t2.$index(0, participantIdentity); + if (keys == null) { + keys = A.ParticipantKeyHandler$(t1, participantIdentity, _this.worker); + t1 = _this.sharedKey; + if (t1.length !== 0) + keys.setKey$1(t1); + t2.$indexSet(0, participantIdentity, keys); } - }, - get$keys(receiver) { - var keys = A._setArrayType([], type$.JSArray_String); - this.forEach$1(receiver, new A.AudioParamMap_keys_closure(keys)); return keys; }, - get$length(receiver) { - return receiver.size; - }, - $isMap: 1 - }; - A.AudioParamMap_keys_closure.prototype = { - call$2(k, v) { - return B.JSArray_methods.add$1(this.keys, k); - }, - $signature: 2 - }; - A.AudioTrack.prototype = { - get$kind(receiver) { - return receiver.kind; - } - }; - A.AudioTrackList.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A.BaseAudioContext.prototype = {}; - A.OfflineAudioContext.prototype = { - get$length(receiver) { - return receiver.length; - } - }; - A._AudioParamMap_JavaScriptObject_MapMixin.prototype = {}; - A.WritableStream.prototype = {}; - A.ReadableStream.prototype = {}; - A.TransformStream.prototype = {}; - A.TransformStreamDefaultController.prototype = {}; - A.EncodedStreams.prototype = {}; - A.RTCEncodedFrame.prototype = {}; - A.RTCEncodedAudioFrame.prototype = {}; - A.RTCEncodedVideoFrame.prototype = {}; - A.RTCEncodedFrameMetadata.prototype = {}; - A.RTCEncodedAudioFrameMetadata.prototype = {}; - A.RTCEncodedVideoFrameMetadata.prototype = {}; - A.RTCTransformEvent.prototype = {}; - A.RTCRtpScriptTransformer.prototype = {}; - A.RTCRtpScriptTransform.prototype = {}; - A.Promise.prototype = {}; - A.Algorithm.prototype = {}; - A.AesGcmParams.prototype = {}; - A.KeyOptions.prototype = { - toString$0(_) { - return "KeyOptions{sharedKey: " + this.sharedKey + ", ratchetWindowSize: " + this.ratchetWindowSize + "}"; - } - }; - A.CryptorError.prototype = { - _enumToString$0() { - return "CryptorError." + this._name; + getSharedKeyHandler$0() { + var _this = this, + t1 = _this.sharedKeyHandler; + return t1 == null ? _this.sharedKeyHandler = A.ParticipantKeyHandler$(_this.keyProviderOptions, "shared-key", _this.worker) : t1; } }; A.KeySet.prototype = {}; - A.Cryptor.prototype = { - get$kind(_) { - var t1 = this.__Cryptor_kind_A; - t1 === $ && A.throwLateFieldNI("kind"); - return t1; + A.ParticipantKeyHandler.prototype = { + decryptionFailure$0() { + var _this = this, + t1 = _this.keyOptions.failureTolerance; + if (t1 < 0) + return; + if (++_this._decryptionFailureCount > t1) { + $.$get$logger().log$4(B.Level_WARNING_900, "key for " + _this.participantIdentity + " is being marked as invalid", null, null); + _this._hasValidKey = false; + } + }, + exportKey$1(keyIndex) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Uint8List), + $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$self = this, key, e, exception, t1, currentMaterial, $async$exception, $async$temp1; + var $async$exportKey$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + if ($async$errorCode === 1) { + $async$errorStack.push($async$result); + $async$goto = $async$handler; + } + while (true) + switch ($async$goto) { + case 0: + // Function start + t1 = $async$self.getKeySet$1(keyIndex); + currentMaterial = t1 == null ? null : t1.material; + if (currentMaterial == null) { + $async$returnValue = null; + // goto return + $async$goto = 1; + break; + } + $async$handler = 4; + t1 = type$.JSObject; + $async$temp1 = type$.NativeByteBuffer; + $async$goto = 7; + return A._asyncAwait(A.promiseToFuture(t1._as(t1._as(t1._as($async$self.worker.crypto).subtle).exportKey("raw", currentMaterial)), type$.nullable_Object), $async$exportKey$1); + case 7: + // returning from await. + key = $async$temp1._as($async$result); + t1 = A.NativeUint8List_NativeUint8List$view(key, 0, null); + $async$returnValue = t1; + // goto return + $async$goto = 1; + break; + $async$handler = 2; + // goto after finally + $async$goto = 6; + break; + case 4: + // catch + $async$handler = 3; + $async$exception = $async$errorStack.pop(); + e = A.unwrapException($async$exception); + $.$get$logger().log$4(B.Level_WARNING_900, "exportKey: " + A.S(e), null, null); + $async$returnValue = null; + // goto return + $async$goto = 1; + break; + // goto after finally + $async$goto = 6; + break; + case 3: + // uncaught + // goto rethrow + $async$goto = 2; + break; + case 6: + // after finally + case 1: + // return + return A._asyncReturn($async$returnValue, $async$completer); + case 2: + // rethrow + return A._asyncRethrow($async$errorStack.at(-1), $async$completer); + } + }); + return A._asyncStartSync($async$exportKey$1, $async$completer); }, ratchetKey$1(keyIndex) { var $async$goto = 0, - $async$completer = A._makeAsyncAwaitCompleter(type$.void), - $async$returnValue, $async$self = this, t1, currentMaterial; + $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Uint8List), + $async$returnValue, $async$self = this, newKey, newKeySet, t1, currentMaterial; var $async$ratchetKey$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { if ($async$errorCode === 1) return A._asyncRethrow($async$result, $async$completer); @@ -9032,20 +8557,34 @@ switch ($async$goto) { case 0: // Function start - if ($async$self._ratchetCompleter == null) { - $async$self._ratchetCompleter = new A._AsyncCompleter(new A._Future($.Zone__current, type$._Future_void), type$._AsyncCompleter_void); - t1 = $async$self.getKeySet$1(keyIndex); - currentMaterial = t1 == null ? null : t1.material; - if (currentMaterial == null) { - $async$self._ratchetCompleter.complete$0(0); - $async$self._ratchetCompleter = null; - // goto return - $async$goto = 1; - break; - } - $async$self.ratchetMaterial$1(currentMaterial).then$1$1(new A.Cryptor_ratchetKey_closure($async$self, keyIndex), type$.Null); + t1 = $async$self.getKeySet$1(keyIndex); + currentMaterial = t1 == null ? null : t1.material; + if (currentMaterial == null) { + $async$returnValue = null; + // goto return + $async$goto = 1; + break; } - $async$returnValue = $async$self._ratchetCompleter.future; + t1 = $async$self.keyOptions.ratchetSalt; + $async$goto = 3; + return A._asyncAwait($async$self.ratchet$2(currentMaterial, t1), $async$ratchetKey$1); + case 3: + // returning from await. + newKey = $async$result; + $async$goto = 5; + return A._asyncAwait($async$self.ratchetMaterial$2(currentMaterial, B.NativeUint8List_methods.get$buffer(newKey)), $async$ratchetKey$1); + case 5: + // returning from await. + $async$goto = 4; + return A._asyncAwait($async$self.deriveKeys$2($async$result, t1), $async$ratchetKey$1); + case 4: + // returning from await. + newKeySet = $async$result; + $async$goto = 6; + return A._asyncAwait($async$self.setKeySetFromMaterial$2(newKeySet, keyIndex == null ? $async$self.currentKeyIndex : keyIndex), $async$ratchetKey$1); + case 6: + // returning from await. + $async$returnValue = newKey; // goto return $async$goto = 1; break; @@ -9056,30 +8595,23 @@ }); return A._asyncStartSync($async$ratchetKey$1, $async$completer); }, - ratchetMaterial$1(currentMaterial) { + ratchetMaterial$2(currentMaterial, newKeyBuffer) { var $async$goto = 0, - $async$completer = A._makeAsyncAwaitCompleter(type$.CryptoKey), - $async$returnValue, $async$self = this, $async$temp1, $async$temp2, $async$temp3, $async$temp4; - var $async$ratchetMaterial$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + $async$completer = A._makeAsyncAwaitCompleter(type$.JSObject), + $async$returnValue, $async$self = this, t1; + var $async$ratchetMaterial$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { if ($async$errorCode === 1) return A._asyncRethrow($async$result, $async$completer); while (true) switch ($async$goto) { case 0: // Function start - $async$temp1 = type$.FutureOr_CryptoKey; - $async$temp2 = A; - $async$temp3 = self.crypto.subtle; - $async$temp4 = A; - $async$goto = 4; - return A._asyncAwait($async$self.ratchet$2(currentMaterial, $async$self.keyOptions.ratchetSalt), $async$ratchetMaterial$1); - case 4: - // returning from await. + t1 = type$.JSObject; $async$goto = 3; - return A._asyncAwait($async$temp2.promiseToFuture($async$temp3.importKey("raw", $async$temp4.jsArrayBufferFrom($async$result), J.get$name$x(type$.Algorithm._as(currentMaterial.algorithm)), false, A._setArrayType(["deriveBits", "deriveKey"], type$.JSArray_String)), type$.dynamic), $async$ratchetMaterial$1); + return A._asyncAwait(A.promiseToFuture(A.callMethod(t1._as(t1._as($async$self.worker.crypto).subtle), "importKey", ["raw", type$.NativeByteBuffer._as(newKeyBuffer), type$.Object._as(t1._as(currentMaterial.algorithm).name), false, type$.JSArray_nullable_Object._as(A.jsify(A._setArrayType(["deriveBits", "deriveKey"], type$.JSArray_String)))], t1), t1), $async$ratchetMaterial$2); case 3: // returning from await. - $async$returnValue = $async$temp1._as($async$result); + $async$returnValue = $async$result; // goto return $async$goto = 1; break; @@ -9088,52 +8620,61 @@ return A._asyncReturn($async$returnValue, $async$completer); } }); - return A._asyncStartSync($async$ratchetMaterial$1, $async$completer); + return A._asyncStartSync($async$ratchetMaterial$2, $async$completer); }, getKeySet$1(keyIndex) { - var t1 = this.cryptoKeyRing, - t2 = keyIndex == null ? this.currentKeyIndex : keyIndex; - if (!(t2 >= 0 && t2 < 16)) + var t2, + t1 = this.__ParticipantKeyHandler_cryptoKeyRing_A; + t1 === $ && A.throwLateFieldNI("cryptoKeyRing"); + t2 = keyIndex == null ? this.currentKeyIndex : keyIndex; + if (!(t2 >= 0 && t2 < t1.length)) return A.ioore(t1, t2); return t1[t2]; }, - setKey$2(keyIndex, key) { + setKey$2$keyIndex(key, keyIndex) { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.void), - $async$self = this; - var $async$setKey$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + $async$self = this, t1, t2, t3; + var $async$setKey$2$keyIndex = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { if ($async$errorCode === 1) return A._asyncRethrow($async$result, $async$completer); while (true) switch ($async$goto) { case 0: // Function start - if ($async$self.lastError !== B.CryptorError_1) { - A.print("setKey: lastError != CryptorError.kOk, reset state to kNew"); - $async$self.lastError = B.CryptorError_0; - } + t1 = type$.JSObject; + t2 = t1._as(t1._as($async$self.worker.crypto).subtle); + t3 = type$.String; + t3 = A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["name", "PBKDF2"], t3, t3)); + if (t3 == null) + t3 = type$.Object._as(t3); $async$goto = 4; - return A._asyncAwait(A.impportKeyFromRawData(key, A._setArrayType(["deriveBits", "deriveKey"], type$.JSArray_String), "PBKDF2"), $async$setKey$2); + return A._asyncAwait(A.promiseToFuture(A.callMethod(t2, "importKey", ["raw", key, t3, false, type$.JSArray_nullable_Object._as(A.jsify(A._setArrayType(["deriveBits", "deriveKey"], type$.JSArray_String)))], t1), t1), $async$setKey$2$keyIndex); case 4: // returning from await. $async$goto = 3; - return A._asyncAwait($async$self.deriveKeys$2($async$result, $async$self.keyOptions.ratchetSalt), $async$setKey$2); + return A._asyncAwait($async$self.deriveKeys$2($async$result, $async$self.keyOptions.ratchetSalt), $async$setKey$2$keyIndex); case 3: // returning from await. $async$goto = 2; - return A._asyncAwait($async$self.setKeySetFromMaterial$2($async$result, keyIndex), $async$setKey$2); + return A._asyncAwait($async$self.setKeySetFromMaterial$2($async$result, keyIndex), $async$setKey$2$keyIndex); case 2: // returning from await. + $async$self._decryptionFailureCount = 0; + $async$self._hasValidKey = true; // implicit return return A._asyncReturn(null, $async$completer); } }); - return A._asyncStartSync($async$setKey$2, $async$completer); + return A._asyncStartSync($async$setKey$2$keyIndex, $async$completer); + }, + setKey$1(key) { + return this.setKey$2$keyIndex(key, 0); }, setKeySetFromMaterial$2(keySet, keyIndex) { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.void), - $async$self = this; + $async$self = this, t1; var $async$setKeySetFromMaterial$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { if ($async$errorCode === 1) return A._asyncRethrow($async$result, $async$completer); @@ -9141,10 +8682,15 @@ switch ($async$goto) { case 0: // Function start - A.print("setting new key"); - if (keyIndex >= 0) - $async$self.currentKeyIndex = B.JSInt_methods.$mod(keyIndex, 16); - B.JSArray_methods.$indexSet($async$self.cryptoKeyRing, $async$self.currentKeyIndex, keySet); + $.$get$logger().log$4(B.Level_CONFIG_700, "setKeySetFromMaterial: set new key, index: " + keyIndex, null, null); + if (keyIndex >= 0) { + t1 = $async$self.__ParticipantKeyHandler_cryptoKeyRing_A; + t1 === $ && A.throwLateFieldNI("cryptoKeyRing"); + $async$self.currentKeyIndex = B.JSInt_methods.$mod(keyIndex, t1.length); + } + t1 = $async$self.__ParticipantKeyHandler_cryptoKeyRing_A; + t1 === $ && A.throwLateFieldNI("cryptoKeyRing"); + B.JSArray_methods.$indexSet(t1, $async$self.currentKeyIndex, keySet); // implicit return return A._asyncReturn(null, $async$completer); } @@ -9154,7 +8700,7 @@ deriveKeys$2(material, salt) { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.KeySet), - $async$returnValue, algorithmOptions, $async$temp1, $async$temp2; + $async$returnValue, $async$self = this, t4, t5, t1, algorithmOptions, t2, t3, $async$temp1, $async$temp2, $async$temp3; var $async$deriveKeys$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { if ($async$errorCode === 1) return A._asyncRethrow($async$result, $async$completer); @@ -9162,14 +8708,23 @@ switch ($async$goto) { case 0: // Function start - algorithmOptions = A.getAlgoOptions(J.get$name$x(type$.Algorithm._as(material.algorithm)), salt); + t1 = type$.JSObject; + algorithmOptions = A.getAlgoOptions(A._asString(t1._as(material.algorithm).name), salt); + t2 = t1._as(t1._as($async$self.worker.crypto).subtle); + t3 = A.jsify(algorithmOptions); + if (t3 == null) + t3 = type$.Object._as(t3); + t4 = type$.Object; + t5 = A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["name", "AES-GCM", "length", 128], type$.String, t4)); + t4 = t5 == null ? t4._as(t5) : t5; $async$temp1 = A; $async$temp2 = material; + $async$temp3 = t1; $async$goto = 3; - return A._asyncAwait(A.promiseToFuture(self.crypto.subtle.deriveKey(A.jsify(algorithmOptions), material, A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["name", "AES-GCM", "length", 128], type$.String, type$.Object)), false, A._setArrayType(["encrypt", "decrypt"], type$.JSArray_String)), type$.CryptoKey), $async$deriveKeys$2); + return A._asyncAwait(A.promiseToFuture(A.callMethod(t2, "deriveKey", [t3, material, t4, false, type$.JSArray_nullable_Object._as(A.jsify(A._setArrayType(["encrypt", "decrypt"], type$.JSArray_String)))], t1), type$.nullable_Object), $async$deriveKeys$2); case 3: // returning from await. - $async$returnValue = new $async$temp1.KeySet($async$temp2, $async$result); + $async$returnValue = new $async$temp1.KeySet($async$temp2, $async$temp3._as($async$result)); // goto return $async$goto = 1; break; @@ -9183,7 +8738,7 @@ ratchet$2(material, salt) { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.Uint8List), - $async$returnValue, algorithmOptions, $async$temp1; + $async$returnValue, $async$self = this, algorithmOptions, t1, t2, t3, $async$temp1; var $async$ratchet$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { if ($async$errorCode === 1) return A._asyncRethrow($async$result, $async$completer); @@ -9192,9 +8747,14 @@ case 0: // Function start algorithmOptions = A.getAlgoOptions("PBKDF2", salt); + t1 = type$.JSObject; + t2 = t1._as(t1._as($async$self.worker.crypto).subtle); + t3 = A.jsify(algorithmOptions); + if (t3 == null) + t3 = type$.Object._as(t3); $async$temp1 = A; $async$goto = 3; - return A._asyncAwait(A.promiseToFuture(self.crypto.subtle.deriveBits(A.jsify(algorithmOptions), material, 256), type$.ByteBuffer), $async$ratchet$2); + return A._asyncAwait(A.promiseToFuture(t1._as(t2.deriveBits(t3, material, 256)), type$.NativeByteBuffer), $async$ratchet$2); case 3: // returning from await. $async$returnValue = $async$temp1.NativeUint8List_NativeUint8List$view($async$result, 0, null); @@ -9208,802 +8768,668 @@ }); return A._asyncStartSync($async$ratchet$2, $async$completer); }, - setupTransform$6$codec$kind$operation$readable$trackId$writable(codec, kind, operation, readable, trackId, writable) { - return this.setupTransform$body$Cryptor(codec, kind, operation, readable, trackId, writable); + set$__ParticipantKeyHandler_cryptoKeyRing_A(__ParticipantKeyHandler_cryptoKeyRing_A) { + this.__ParticipantKeyHandler_cryptoKeyRing_A = type$.List_nullable_KeySet._as(__ParticipantKeyHandler_cryptoKeyRing_A); + } + }; + A.SifGuard.prototype = { + recordUserFrame$0() { + var _this = this; + if (_this.sifSequenceStartedAt == null) + return; + if (++_this.userFramesSinceSif > _this.consecutiveSifCount || Date.now() - _this.lastSifReceivedAt > 2000) + _this.reset$0(); }, - setupTransform$5$kind$operation$readable$trackId$writable(kind, operation, readable, trackId, writable) { - return this.setupTransform$6$codec$kind$operation$readable$trackId$writable(null, kind, operation, readable, trackId, writable); + reset$0() { + this.consecutiveSifCount = this.userFramesSinceSif = 0; + this.sifSequenceStartedAt = null; + } + }; + A.getTrackCryptor_closure.prototype = { + call$1(c) { + return type$.FrameCryptor._as(c).trackId === this.trackId; }, - setupTransform$body$Cryptor(codec, kind, operation, readable, trackId, writable) { - var $async$goto = 0, - $async$completer = A._makeAsyncAwaitCompleter(type$.void), - $async$self = this, transformer, e, t1, t2, t3, exception; - var $async$setupTransform$6$codec$kind$operation$readable$trackId$writable = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { - if ($async$errorCode === 1) - return A._asyncRethrow($async$result, $async$completer); - while (true) - switch ($async$goto) { - case 0: - // Function start - A.print("setupTransform " + operation); - $async$self.__Cryptor_kind_A = kind; - if (codec != null) { - A.print("setting codec on cryptor to " + codec); - $async$self.codec = codec; - } - t1 = operation === "encode" ? $async$self.get$encodeFunction() : $async$self.get$decodeFunction(); - t2 = type$.Future_void_Function_RTCEncodedFrame_TransformStreamDefaultController; - t3 = type$.String; - transformer = new self.TransformStream(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["transform", A.allowInterop(t1, t2)], t3, t2))); - try { - J.pipeTo$1$x(J.pipeThrough$1$x(readable, transformer), writable); - } catch (exception) { - e = A.unwrapException(exception); - A.print("e " + J.toString$0$(e)); - if ($async$self.lastError !== B.CryptorError_7) { - $async$self.lastError = B.CryptorError_7; - B.DedicatedWorkerGlobalScope_methods.postMessage$1($async$self.worker, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", $async$self.participantId, "state", "internalError", "error", "Internal error: " + J.toString$0$(e)], t3, type$.nullable_String)); - } - } - $async$self.trackId = trackId; - // implicit return - return A._asyncReturn(null, $async$completer); - } - }); - return A._asyncStartSync($async$setupTransform$6$codec$kind$operation$readable$trackId$writable, $async$completer); + $signature: 1 + }; + A.unsetCryptorParticipant_closure.prototype = { + call$1(c) { + return type$.FrameCryptor._as(c).trackId === this.trackId; }, - getUnencryptedBytes$2(frame, codec) { - var data, naluIndices, t1, t2, _i, index; - if (codec != null && codec.toLowerCase() === "h264") { - data = A.NativeUint8List_NativeUint8List$view(J.get$data$x(frame), 0, null); - naluIndices = A.findNALUIndices(data); - for (t1 = naluIndices.length, t2 = data.length, _i = 0; _i < t1; ++_i) { - index = naluIndices[_i]; - if (!(index < t2)) - return A.ioore(data, index); - switch (data[index] & 31) { - case 5: - case 1: - return index + 2; - default: - break; - } - } - throw A.wrapException(A.Exception_Exception("Could not find NALU")); - } - switch (J.get$type$x(frame)) { - case "key": - return 10; - case "delta": - return 3; - case "audio": - return 1; - default: - return 0; - } + $signature: 1 + }; + A.main_closure.prototype = { + call$1(record) { + type$.LogRecord._as(record); + A.printString("[" + record.loggerName + "] " + record.level.name + ": " + record.message); }, - encodeFunction$2(frame, controller) { - return this.encodeFunction$body$Cryptor(type$.RTCEncodedFrame._as(frame), type$.TransformStreamDefaultController._as(controller)); + $signature: 21 + }; + A.main_closure0.prototype = { + call$1($event) { + var t2, transformer, options, kind, participantId, trackId, codec, msgType, keyProviderId, keyProvider, cryptor, _null = null, + t1 = type$.JSObject; + t1._as($event); + t2 = $.$get$logger(); + t2.log$4(B.Level_INFO_800, "Got onrtctransform event", _null, _null); + transformer = t1._as($event.transformer); + transformer.handled = true; + options = t1._as(transformer.options); + kind = A._asString(options.kind); + participantId = A._asString(options.participantId); + trackId = A._asString(options.trackId); + codec = A._asStringQ(options.codec); + msgType = A._asString(options.msgType); + keyProviderId = A._asString(options.keyProviderId); + keyProvider = $.keyProviders.$index(0, keyProviderId); + if (keyProvider == null) { + t2.log$4(B.Level_WARNING_900, "KeyProvider not found for " + keyProviderId, _null, _null); + return; + } + cryptor = A.getTrackCryptor(participantId, trackId, keyProvider); + t2 = t1._as(transformer.readable); + t1 = t1._as(transformer.writable); + cryptor.setupTransform$6$codec$kind$operation$readable$trackId$writable(codec == null ? _null : codec, kind, msgType, t2, trackId, t1); }, - encodeFunction$body$Cryptor(frame, controller) { + $signature: 11 + }; + A.main_closure2.prototype = { + call$1(e) { var $async$goto = 0, - $async$completer = A._makeAsyncAwaitCompleter(type$.void), - $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, secretKey, keyIndex, headerLength, metaData, iv, frameTrailer, cipherText, finalBuffer, e, t2, t3, t4, iv0, sendCount, exception, t1, buffer, $async$exception; - var $async$encodeFunction$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { - if ($async$errorCode === 1) { - $async$currentError = $async$result; - $async$goto = $async$handler; - } + $async$completer = A._makeAsyncAwaitCompleter(type$.Null), + $async$returnValue, options, keyProviderId, t2, t3, t4, t5, t6, t7, t8, keyProviderOptions, enabled, trackId, cryptors, _i, cryptor, kind, exist, participantId, readable, writable, keyProvider, key, keyIndex, newKey, c, sifTrailer, codec, msg, msgType, msgId, t1; + var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + if ($async$errorCode === 1) + return A._asyncRethrow($async$result, $async$completer); while (true) switch ($async$goto) { case 0: // Function start - t1 = J.getInterceptor$x(frame); - buffer = A.NativeUint8List_NativeUint8List$view(t1.get$data(frame), 0, null); - if (!$async$self.enabled || J.get$length$asx(buffer) === 0) { - J.enqueue$1$x(controller, frame); - // goto return - $async$goto = 1; - break; - } - t2 = $async$self.getKeySet$1($async$self.currentKeyIndex); - secretKey = t2 == null ? null : t2.encryptionKey; - keyIndex = $async$self.currentKeyIndex; - if (secretKey == null) { - if ($async$self.lastError !== B.CryptorError_5) { - $async$self.lastError = B.CryptorError_5; - t1 = $async$self.participantId; - t2 = $async$self.trackId; - t3 = $async$self.__Cryptor_kind_A; - t3 === $ && A.throwLateFieldNI("kind"); - B.DedicatedWorkerGlobalScope_methods.postMessage$1($async$self.worker, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", t1, "trackId", t2, "kind", t3, "state", "missingKey", "error", "Missing key for track " + A.S(t2)], type$.String, type$.nullable_String)); - } - // goto return - $async$goto = 1; - break; - } - $async$handler = 4; - t2 = $async$self.__Cryptor_kind_A; - t2 === $ && A.throwLateFieldNI("kind"); - headerLength = t2 === "video" ? $async$self.getUnencryptedBytes$2(frame, $async$self.codec) : 1; - metaData = t1.getMetadata$0(frame); - t3 = J.get$synchronizationSource$x(metaData); - t4 = t1.get$timestamp(frame); - A._asInt(t3); - A._asInt(t4); - iv0 = new DataView(new ArrayBuffer(12)); - t2 = $async$self.sendCounts; - if (t2.$index(0, t3) == null) - t2.$indexSet(0, t3, $.$get$Random__secureRandom().nextInt$1(65535)); - sendCount = t2.$index(0, t3); - if (sendCount == null) - sendCount = 0; - B.NativeByteData_methods._setUint32$3(iv0, 0, t3, false); - B.NativeByteData_methods._setUint32$3(iv0, 4, t4, false); - B.NativeByteData_methods._setUint32$3(iv0, 8, t4 - B.JSInt_methods.$mod(sendCount, 65535), false); - t2.$indexSet(0, t3, sendCount + 1); - iv = A.NativeUint8List_NativeUint8List$view(iv0.buffer, 0, null); - frameTrailer = new DataView(new ArrayBuffer(2)); - J.setInt8$2$x(frameTrailer, 0, 12); - J.setInt8$2$x(frameTrailer, 1, keyIndex); - $async$goto = 7; - return A._asyncAwait(A.promiseToFuture(self.crypto.subtle.encrypt({name: "AES-GCM", iv: A.jsArrayBufferFrom(iv), additionalData: A.jsArrayBufferFrom(J.sublist$2$x(buffer, 0, headerLength))}, secretKey, A.jsArrayBufferFrom(J.sublist$2$x(buffer, headerLength, J.get$length$asx(buffer)))), type$.ByteBuffer), $async$encodeFunction$2); - case 7: - // returning from await. - cipherText = $async$result; - t2 = $.$get$_CopyingBytesBuilder__emptyList(); - finalBuffer = new A._CopyingBytesBuilder(t2); - J.add$1$ax(finalBuffer, new Uint8Array(A._ensureNativeList(J.sublist$2$x(buffer, 0, headerLength)))); - J.add$1$ax(finalBuffer, A.NativeUint8List_NativeUint8List$view(cipherText, 0, null)); - J.add$1$ax(finalBuffer, iv); - J.add$1$ax(finalBuffer, A.NativeUint8List_NativeUint8List$view(frameTrailer.buffer, 0, null)); - t1.set$data(frame, A.jsArrayBufferFrom(finalBuffer.toBytes$0())); - J.enqueue$1$x(controller, frame); - if ($async$self.lastError !== B.CryptorError_1) { - $async$self.lastError = B.CryptorError_1; - B.DedicatedWorkerGlobalScope_methods.postMessage$1($async$self.worker, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", $async$self.participantId, "trackId", $async$self.trackId, "kind", $async$self.__Cryptor_kind_A, "state", "ok", "error", "encryption ok"], type$.String, type$.nullable_String)); - } - $async$handler = 2; - // goto after finally - $async$goto = 6; - break; - case 4: - // catch - $async$handler = 3; - $async$exception = $async$currentError; - e = A.unwrapException($async$exception); - if ($async$self.lastError !== B.CryptorError_3) { - $async$self.lastError = B.CryptorError_3; - t1 = $async$self.participantId; - t2 = $async$self.trackId; - t3 = $async$self.__Cryptor_kind_A; - t3 === $ && A.throwLateFieldNI("kind"); - B.DedicatedWorkerGlobalScope_methods.postMessage$1($async$self.worker, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", t1, "trackId", t2, "kind", t3, "state", "encryptError", "error", J.toString$0$(e)], type$.String, type$.nullable_String)); + msg = type$.Map_dynamic_dynamic._as(A.dartify(e.data)); + msgType = msg.$index(0, "msgType"); + msgId = A._asStringQ(msg.$index(0, "msgId")); + t1 = $.$get$logger(); + t1.log$4(B.Level_CONFIG_700, "Got message " + A.S(msgType) + ", msgId " + A.S(msgId), null, null); + case 3: + // switch + switch (msgType) { + case "keyProviderInit": + // goto case + $async$goto = 5; + break; + case "keyProviderDispose": + // goto case + $async$goto = 6; + break; + case "enable": + // goto case + $async$goto = 7; + break; + case "decode": + // goto case + $async$goto = 8; + break; + case "encode": + // goto case + $async$goto = 9; + break; + case "removeTransform": + // goto case + $async$goto = 10; + break; + case "setKey": + // goto case + $async$goto = 11; + break; + case "setSharedKey": + // goto case + $async$goto = 12; + break; + case "ratchetKey": + // goto case + $async$goto = 13; + break; + case "ratchetSharedKey": + // goto case + $async$goto = 14; + break; + case "setKeyIndex": + // goto case + $async$goto = 15; + break; + case "exportKey": + // goto case + $async$goto = 16; + break; + case "exportSharedKey": + // goto case + $async$goto = 17; + break; + case "setSifTrailer": + // goto case + $async$goto = 18; + break; + case "updateCodec": + // goto case + $async$goto = 19; + break; + case "dispose": + // goto case + $async$goto = 20; + break; + default: + // goto default + $async$goto = 21; + break; } - // goto after finally - $async$goto = 6; break; - case 3: - // uncaught - // goto rethrow - $async$goto = 2; + case 5: + // case + options = msg.$index(0, "keyOptions"); + keyProviderId = A._asString(msg.$index(0, "keyProviderId")); + t2 = J.getInterceptor$asx(options); + t3 = A._asBool(t2.$index(options, "sharedKey")); + t4 = new Uint8Array(A._ensureNativeList(B.C_Base64Decoder.convert$1(A._asString(t2.$index(options, "ratchetSalt"))))); + t5 = A._asInt(t2.$index(options, "ratchetWindowSize")); + t6 = t2.$index(options, "failureTolerance"); + t6 = A._asInt(t6 == null ? -1 : t6); + t7 = t2.$index(options, "uncryptedMagicBytes") != null ? new Uint8Array(A._ensureNativeList(B.C_Base64Decoder.convert$1(A._asString(t2.$index(options, "uncryptedMagicBytes"))))) : null; + t8 = t2.$index(options, "keyRingSize"); + t8 = A._asInt(t8 == null ? 16 : t8); + t2 = t2.$index(options, "discardFrameWhenCryptorNotReady"); + keyProviderOptions = new A.KeyOptions(t3, t4, t5, t6, t7, t8, A._asBool(t2 == null ? false : t2)); + t1.log$4(B.Level_CONFIG_700, "Init with keyProviderOptions:\n " + keyProviderOptions.toString$0(0), null, null); + t1 = self; + t2 = type$.JSObject; + t3 = t2._as(t1.self); + t4 = type$.String; + t5 = new Uint8Array(0); + $.keyProviders.$indexSet(0, keyProviderId, new A.KeyProvider(t3, keyProviderOptions, A.LinkedHashMap_LinkedHashMap$_empty(t4, type$.ParticipantKeyHandler), t5)); + t2._as(t1.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "init", "msgId", msgId, "msgType", "response"], t4, type$.nullable_String))); + // goto after switch + $async$goto = 4; break; case 6: - // after finally - case 1: - // return - return A._asyncReturn($async$returnValue, $async$completer); - case 2: - // rethrow - return A._asyncRethrow($async$currentError, $async$completer); - } - }); - return A._asyncStartSync($async$encodeFunction$2, $async$completer); - }, - decodeFunction$2(frame, controller) { - return this.decodeFunction$body$Cryptor(type$.RTCEncodedFrame._as(frame), type$.TransformStreamDefaultController._as(controller)); - }, - decodeFunction$body$Cryptor(frame, controller) { - var $async$goto = 0, - $async$completer = A._makeAsyncAwaitCompleter(type$.void), - $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, headerLength, metaData, frameTrailer, ivLength, keyIndex, iv, currentkeySet, endDecLoop, finalBuffer, e, t2, t3, t4, t5, t6, t7, endDecLoop0, t8, t9, t10, t11, t12, t13, exception, ratchetCount, t1, buffer, decrypted, initialKeySet, initialKeyIndex, $async$exception, $async$exception1; - var $async$decodeFunction$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { - if ($async$errorCode === 1) { - $async$currentError = $async$result; - $async$goto = $async$handler; - } - while (true) - switch ($async$goto) { - case 0: - // Function start - ratchetCount = 0; - t1 = J.getInterceptor$x(frame); - buffer = A.NativeUint8List_NativeUint8List$view(t1.get$data(frame), 0, null); - decrypted = null; - initialKeySet = null; - initialKeyIndex = $async$self.currentKeyIndex; - if (!$async$self.enabled || J.get$length$asx(buffer) === 0) { - J.enqueue$1$x(controller, frame); - // goto return - $async$goto = 1; - break; - } - $async$handler = 4; - t2 = $async$self.__Cryptor_kind_A; - t2 === $ && A.throwLateFieldNI("kind"); - headerLength = t2 === "video" ? $async$self.getUnencryptedBytes$2(frame, $async$self.codec) : 1; - metaData = t1.getMetadata$0(frame); - frameTrailer = J.sublist$1$x(buffer, J.get$length$asx(buffer) - 2); - ivLength = J.$index$asx(frameTrailer, 0); - keyIndex = J.$index$asx(frameTrailer, 1); - t3 = J.get$length$asx(buffer); - t4 = ivLength; - if (typeof t4 !== "number") { - $async$returnValue = A.iae(t4); - // goto return - $async$goto = 1; - break; - } - iv = J.sublist$2$x(buffer, t3 - t4 - 2, J.get$length$asx(buffer) - 2); - currentkeySet = $async$self.getKeySet$1(keyIndex); - initialKeySet = currentkeySet; - initialKeyIndex = keyIndex; - if (currentkeySet == null) { - if ($async$self.lastError !== B.CryptorError_5) { - $async$self.lastError = B.CryptorError_5; - t1 = $async$self.participantId; - t2 = $async$self.trackId; - B.DedicatedWorkerGlobalScope_methods.postMessage$1($async$self.worker, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", t1, "trackId", t2, "kind", $async$self.__Cryptor_kind_A, "state", "missingKey", "error", "Missing key for track " + A.S(t2)], type$.String, type$.nullable_String)); - } - J.enqueue$1$x(controller, frame); - // goto return - $async$goto = 1; - break; - } - endDecLoop = false; - t2 = $async$self.cryptoKeyRing, t3 = $async$self.keyOptions.ratchetWindowSize, t4 = type$.ByteBuffer, t5 = type$.String, t6 = type$.nullable_String, t7 = $async$self.worker, endDecLoop0 = t3 <= 0; + // case + keyProviderId = A._asString(msg.$index(0, "keyProviderId")); + t1.log$4(B.Level_CONFIG_700, "Dispose keyProvider " + keyProviderId, null, null); + $.keyProviders.remove$1(0, keyProviderId); + type$.JSObject._as(self.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "dispose", "msgId", msgId, "msgType", "response"], type$.String, type$.nullable_String))); + // goto after switch + $async$goto = 4; + break; case 7: - // for condition - if (!!A.boolConversionCheck(endDecLoop)) { - // goto after for - $async$goto = 8; - break; - } - $async$handler = 10; - t8 = buffer; - t8 = {name: "AES-GCM", iv: A.jsArrayBufferFrom(iv), additionalData: A.jsArrayBufferFrom(new Uint8Array(t8.subarray(0, A._checkValidRange(0, A._asIntQ(headerLength), J.get$length$asx(t8)))))}; - t9 = currentkeySet.encryptionKey; - t10 = buffer; - t11 = J.get$length$asx(buffer); - t12 = ivLength; - if (typeof t12 !== "number") { - $async$returnValue = A.iae(t12); - // goto return - $async$goto = 1; - break; - } - t13 = A._asInt(headerLength); - $async$goto = 13; - return A._asyncAwait(A.promiseToFuture(self.crypto.subtle.decrypt(t8, t9, A.jsArrayBufferFrom(new Uint8Array(t10.subarray(t13, A._checkValidRange(t13, A._asIntQ(t11 - t12 - 2), J.get$length$asx(t10)))))), t4), $async$decodeFunction$2); - case 13: - // returning from await. - decrypted = $async$result; - endDecLoop = true; - t8 = $async$self.lastError; - if (t8 !== B.CryptorError_1) - if (t8 !== B.CryptorError_6) { - t8 = ratchetCount; - if (typeof t8 !== "number") { - $async$returnValue = t8.$gt(); - // goto return - $async$goto = 1; - break; - } - t8 = t8 > 0; - } else - t8 = false; - else - t8 = false; - if (t8) { - A.printString("KeyRatcheted: ssrc " + A.S(J.get$synchronizationSource$x(metaData)) + " timestamp " + A.S(t1.get$timestamp(frame)) + " ratchetCount " + A.S(ratchetCount) + " participantId: " + A.S($async$self.participantId)); - A.printString("ratchetKey: lastError != CryptorError.kKeyRatcheted, reset state to kKeyRatcheted"); - $async$self.lastError = B.CryptorError_6; - B.DedicatedWorkerGlobalScope_methods.postMessage$1(t7, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", $async$self.participantId, "trackId", $async$self.trackId, "kind", $async$self.__Cryptor_kind_A, "state", "keyRatcheted", "error", "Key ratcheted ok"], t5, t6)); + // case + enabled = A._asBool(msg.$index(0, "enabled")); + trackId = A._asString(msg.$index(0, "trackId")); + t2 = $.participantCryptors; + t3 = A._arrayInstanceType(t2); + t4 = t3._eval$1("WhereIterable<1>"); + cryptors = A.List_List$of(new A.WhereIterable(t2, t3._eval$1("bool(1)")._as(new A.main__closure(trackId)), t4), true, t4._eval$1("Iterable.E")); + for (t2 = cryptors.length, t3 = "" + enabled, t4 = "Set enable " + t3 + " for trackId ", t5 = "setEnabled[" + t3 + string$.___las, _i = 0; _i < t2; ++_i) { + cryptor = cryptors[_i]; + t1.log$4(B.Level_CONFIG_700, t4 + cryptor.trackId, null, null); + if (cryptor.lastError !== B.CryptorError_1) { + t1.log$4(B.Level_INFO_800, t5, null, null); + cryptor.lastError = B.CryptorError_0; + } + t1.log$4(B.Level_CONFIG_700, "setEnabled for " + A.S(cryptor.participantIdentity) + ", enabled: " + t3, null, null); + cryptor._enabled = enabled; } - $async$handler = 4; - // goto after finally - $async$goto = 12; - break; - case 10: - // catch - $async$handler = 9; - $async$exception = $async$currentError; - $async$self.lastError = B.CryptorError_7; - t8 = ratchetCount; - if (typeof t8 !== "number") { - $async$returnValue = t8.$ge(); + type$.JSObject._as(self.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorEnabled", "enable", enabled, "msgId", msgId, "msgType", "response"], type$.String, type$.nullable_Object))); + // goto after switch + $async$goto = 4; + break; + case 8: + // case + case 9: + // case + kind = msg.$index(0, "kind"); + exist = A._asBool(msg.$index(0, "exist")); + participantId = A._asString(msg.$index(0, "participantId")); + trackId = msg.$index(0, "trackId"); + t2 = type$.JSObject; + readable = t2._as(msg.$index(0, "readableStream")); + writable = t2._as(msg.$index(0, "writableStream")); + keyProviderId = A._asString(msg.$index(0, "keyProviderId")); + t1.log$4(B.Level_CONFIG_700, "SetupTransform for kind " + A.S(kind) + ", trackId " + A.S(trackId) + ", participantId " + participantId + ", " + J.get$runtimeType$(readable).toString$0(0) + " " + J.get$runtimeType$(writable).toString$0(0) + "}", null, null); + keyProvider = $.keyProviders.$index(0, keyProviderId); + if (keyProvider == null) { + t1.log$4(B.Level_WARNING_900, "KeyProvider not found for " + keyProviderId, null, null); + t2._as(self.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorSetup", "participantId", participantId, "trackId", trackId, "exist", exist, "operation", msgType, "error", "KeyProvider not found", "msgId", msgId, "msgType", "response"], type$.String, type$.dynamic))); // goto return $async$goto = 1; break; } - endDecLoop = t8 >= t3 || endDecLoop0; - if (A.boolConversionCheck(endDecLoop)) - throw $async$exception; - t8 = currentkeySet; - t9 = A._asIntQ(keyIndex); - if (t9 == null) - t9 = $async$self.currentKeyIndex; - if (!(t9 >= 0 && t9 < 16)) { - $async$returnValue = A.ioore(t2, t9); + A._asString(trackId); + cryptor = A.getTrackCryptor(participantId, trackId, keyProvider); + A._asString(msgType); + $async$goto = 22; + return A._asyncAwait(cryptor.setupTransform$5$kind$operation$readable$trackId$writable(A._asString(kind), msgType, readable, trackId, writable), $async$call$1); + case 22: + // returning from await. + t2._as(self.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorSetup", "participantId", participantId, "trackId", trackId, "exist", exist, "operation", msgType, "msgId", msgId, "msgType", "response"], type$.String, type$.dynamic))); + cryptor.lastError = B.CryptorError_0; + // goto after switch + $async$goto = 4; + break; + case 10: + // case + trackId = A._asString(msg.$index(0, "trackId")); + t1.log$4(B.Level_CONFIG_700, "Removing trackId " + trackId, null, null); + A.unsetCryptorParticipant(trackId); + type$.JSObject._as(self.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorRemoved", "trackId", trackId, "msgId", msgId, "msgType", "response"], type$.String, type$.nullable_String))); + // goto after switch + $async$goto = 4; + break; + case 11: + // case + case 12: + // case + key = new Uint8Array(A._ensureNativeList(B.C_Base64Decoder.convert$1(A._asString(msg.$index(0, "key"))))); + keyIndex = A._asInt(msg.$index(0, "keyIndex")); + keyProviderId = A._asString(msg.$index(0, "keyProviderId")); + keyProvider = $.keyProviders.$index(0, keyProviderId); + if (keyProvider == null) { + t1.log$4(B.Level_WARNING_900, "KeyProvider not found for " + keyProviderId, null, null); + type$.JSObject._as(self.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "setKey", "error", "KeyProvider not found", "msgId", msgId, "msgType", "response"], type$.String, type$.nullable_String))); // goto return $async$goto = 1; break; } - $async$goto = J.$eq$(t8, t2[t9]) ? 14 : 15; + t2 = keyProvider.keyProviderOptions.sharedKey; + t3 = "" + keyIndex; + $async$goto = t2 ? 23 : 25; break; - case 14: + case 23: // then - t8 = ratchetCount; - if (typeof t8 !== "number") { - $async$returnValue = t8.$add(); + t1.log$4(B.Level_CONFIG_700, "Set SharedKey keyIndex " + t3, null, null); + t1.log$4(B.Level_INFO_800, "setting shared key", null, null); + keyProvider.sharedKey = key; + keyProvider.getSharedKeyHandler$0().setKey$2$keyIndex(key, keyIndex); + // goto join + $async$goto = 24; + break; + case 25: + // else + participantId = A._asString(msg.$index(0, "participantId")); + t1.log$4(B.Level_CONFIG_700, "Set key for participant " + participantId + ", keyIndex " + t3, null, null); + $async$goto = 26; + return A._asyncAwait(keyProvider.getParticipantKeyHandler$1(participantId).setKey$2$keyIndex(key, keyIndex), $async$call$1); + case 26: + // returning from await. + case 24: + // join + type$.JSObject._as(self.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "setKey", "participantId", msg.$index(0, "participantId"), "sharedKey", t2, "keyIndex", keyIndex, "msgId", msgId, "msgType", "response"], type$.String, type$.dynamic))); + // goto after switch + $async$goto = 4; + break; + case 13: + // case + case 14: + // case + keyIndex = msg.$index(0, "keyIndex"); + participantId = A._asString(msg.$index(0, "participantId")); + keyProviderId = A._asString(msg.$index(0, "keyProviderId")); + keyProvider = $.keyProviders.$index(0, keyProviderId); + if (keyProvider == null) { + t1.log$4(B.Level_WARNING_900, "KeyProvider not found for " + keyProviderId, null, null); + type$.JSObject._as(self.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "setKey", "error", "KeyProvider not found", "msgId", msgId, "msgType", "response"], type$.String, type$.nullable_String))); // goto return $async$goto = 1; break; } - ratchetCount = t8 + 1; - $async$goto = 16; - return A._asyncAwait($async$self.ratchetKey$1(keyIndex), $async$decodeFunction$2); - case 16: + t2 = keyProvider.keyProviderOptions.sharedKey; + $async$goto = t2 ? 27 : 29; + break; + case 27: + // then + t1.log$4(B.Level_CONFIG_700, "RatchetKey for SharedKey, keyIndex " + A.S(keyIndex), null, null); + $async$goto = 30; + return A._asyncAwait(keyProvider.getSharedKeyHandler$0().ratchetKey$1(A._asIntQ(keyIndex)), $async$call$1); + case 30: // returning from await. - case 15: + newKey = $async$result; + // goto join + $async$goto = 28; + break; + case 29: + // else + t1.log$4(B.Level_CONFIG_700, "RatchetKey for participant " + participantId + ", keyIndex " + A.S(keyIndex), null, null); + $async$goto = 31; + return A._asyncAwait(keyProvider.getParticipantKeyHandler$1(participantId).ratchetKey$1(A._asIntQ(keyIndex)), $async$call$1); + case 31: + // returning from await. + newKey = $async$result; + case 28: // join - t8 = A._asIntQ(keyIndex); - if (t8 == null) - t8 = $async$self.currentKeyIndex; - if (!(t8 >= 0 && t8 < 16)) { - $async$returnValue = A.ioore(t2, t8); + t1 = type$.JSObject._as(self.self); + t1.postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "ratchetKey", "sharedKey", t2, "participantId", participantId, "newKey", newKey != null ? B.C_Base64Encoder.convert$1(type$.Base64Codec._eval$1("Codec.S")._as(newKey)) : "", "keyIndex", keyIndex, "msgId", msgId, "msgType", "response"], type$.String, type$.dynamic))); + // goto after switch + $async$goto = 4; + break; + case 15: + // case + keyIndex = msg.$index(0, "index"); + trackId = A._asString(msg.$index(0, "trackId")); + t1.log$4(B.Level_CONFIG_700, "Setup key index for track " + trackId, null, null); + t2 = $.participantCryptors; + t3 = A._arrayInstanceType(t2); + t4 = t3._eval$1("WhereIterable<1>"); + cryptors = A.List_List$of(new A.WhereIterable(t2, t3._eval$1("bool(1)")._as(new A.main__closure0(trackId)), t4), true, t4._eval$1("Iterable.E")); + for (t2 = cryptors.length, _i = 0; _i < t2; ++_i) { + c = cryptors[_i]; + t1.log$4(B.Level_CONFIG_700, "Set keyIndex for trackId " + c.trackId, null, null); + A._asInt(keyIndex); + if (c.lastError !== B.CryptorError_1) { + t1.log$4(B.Level_INFO_800, "setKeyIndex: lastError != CryptorError.kOk, reset state to kNew", null, null); + c.lastError = B.CryptorError_0; + } + t1.log$4(B.Level_CONFIG_700, "setKeyIndex for " + A.S(c.participantIdentity) + ", newIndex: " + keyIndex, null, null); + c.currentKeyIndex = keyIndex; + } + type$.JSObject._as(self.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "setKeyIndex", "keyIndex", keyIndex, "msgId", msgId, "msgType", "response"], type$.String, type$.dynamic))); + // goto after switch + $async$goto = 4; + break; + case 16: + // case + case 17: + // case + keyIndex = A._asInt(msg.$index(0, "keyIndex")); + participantId = A._asString(msg.$index(0, "participantId")); + keyProviderId = A._asString(msg.$index(0, "keyProviderId")); + keyProvider = $.keyProviders.$index(0, keyProviderId); + if (keyProvider == null) { + t1.log$4(B.Level_WARNING_900, "KeyProvider not found for " + keyProviderId, null, null); + type$.JSObject._as(self.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "setKey", "error", "KeyProvider not found", "msgId", msgId, "msgType", "response"], type$.String, type$.nullable_String))); // goto return $async$goto = 1; break; } - currentkeySet = t2[t8]; - // goto after finally - $async$goto = 12; + t2 = "" + keyIndex; + $async$goto = keyProvider.keyProviderOptions.sharedKey ? 32 : 34; break; - case 9: - // uncaught - // goto catch - $async$goto = 4; + case 32: + // then + t1.log$4(B.Level_CONFIG_700, "Export SharedKey keyIndex " + t2, null, null); + $async$goto = 35; + return A._asyncAwait(keyProvider.getSharedKeyHandler$0().exportKey$1(keyIndex), $async$call$1); + case 35: + // returning from await. + key = $async$result; + // goto join + $async$goto = 33; break; - case 12: - // after finally - // goto for condition - $async$goto = 7; + case 34: + // else + t1.log$4(B.Level_CONFIG_700, "Export key for participant " + participantId + ", keyIndex " + t2, null, null); + $async$goto = 36; + return A._asyncAwait(keyProvider.getParticipantKeyHandler$1(participantId).exportKey$1(keyIndex), $async$call$1); + case 36: + // returning from await. + key = $async$result; + case 33: + // join + t1 = type$.JSObject._as(self.self); + t1.postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "exportKey", "participantId", participantId, "keyIndex", keyIndex, "exportedKey", key != null ? B.C_Base64Encoder.convert$1(type$.Base64Codec._eval$1("Codec.S")._as(key)) : "", "msgId", msgId, "msgType", "response"], type$.String, type$.nullable_Object))); + // goto after switch + $async$goto = 4; break; - case 8: - // after for - t2 = $.$get$_CopyingBytesBuilder__emptyList(); - finalBuffer = new A._CopyingBytesBuilder(t2); - J.add$1$ax(finalBuffer, new Uint8Array(A._ensureNativeList(J.sublist$2$x(buffer, 0, headerLength)))); - t2 = decrypted; - t2.toString; - J.add$1$ax(finalBuffer, A.NativeUint8List_NativeUint8List$view(t2, 0, null)); - t1.set$data(frame, A.jsArrayBufferFrom(finalBuffer.toBytes$0())); - J.enqueue$1$x(controller, frame); - if ($async$self.lastError !== B.CryptorError_1) { - $async$self.lastError = B.CryptorError_1; - B.DedicatedWorkerGlobalScope_methods.postMessage$1(t7, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", $async$self.participantId, "trackId", $async$self.trackId, "kind", $async$self.__Cryptor_kind_A, "state", "ok", "error", "decryption ok"], t5, t6)); + case 18: + // case + sifTrailer = new Uint8Array(A._ensureNativeList(B.C_Base64Decoder.convert$1(A._asString(msg.$index(0, "sifTrailer"))))); + keyProviderId = A._asString(msg.$index(0, "keyProviderId")); + keyProvider = $.keyProviders.$index(0, keyProviderId); + if (keyProvider == null) { + t1.log$4(B.Level_WARNING_900, "KeyProvider not found for " + keyProviderId, null, null); + type$.JSObject._as(self.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "setKey", "error", "KeyProvider not found", "msgId", msgId, "msgType", "response"], type$.String, type$.nullable_String))); + // goto return + $async$goto = 1; + break; } - $async$handler = 2; - // goto after finally - $async$goto = 6; - break; - case 4: - // catch - $async$handler = 3; - $async$exception1 = $async$currentError; - e = A.unwrapException($async$exception1); - if ($async$self.lastError !== B.CryptorError_2) { - $async$self.lastError = B.CryptorError_2; - t1 = $async$self.participantId; - t2 = $async$self.trackId; - t3 = $async$self.__Cryptor_kind_A; - t3 === $ && A.throwLateFieldNI("kind"); - B.DedicatedWorkerGlobalScope_methods.postMessage$1($async$self.worker, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", t1, "trackId", t2, "kind", t3, "state", "decryptError", "error", J.toString$0$(e)], type$.String, type$.nullable_String)); + keyProvider.keyProviderOptions.uncryptedMagicBytes = sifTrailer; + t1.log$4(B.Level_CONFIG_700, "SetSifTrailer = " + A.S(sifTrailer), null, null); + for (t2 = $.participantCryptors, t3 = t2.length, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i) { + c = t2[_i]; + t1.log$4(B.Level_CONFIG_700, "setSifTrailer for " + A.S(c.participantIdentity) + ", magicBytes: " + A.S(sifTrailer), null, null); + c.keyHandler.keyOptions.uncryptedMagicBytes = sifTrailer; } - $async$goto = initialKeySet != null ? 17 : 18; + type$.JSObject._as(self.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "setSifTrailer", "msgId", msgId, "msgType", "response"], type$.String, type$.nullable_String))); + // goto after switch + $async$goto = 4; break; - case 17: - // then - $async$goto = 19; - return A._asyncAwait($async$self.setKeySetFromMaterial$2(initialKeySet, initialKeyIndex), $async$decodeFunction$2); case 19: - // returning from await. - case 18: - // join - // goto after finally - $async$goto = 6; + // case + codec = A._asString(msg.$index(0, "codec")); + trackId = A._asString(msg.$index(0, "trackId")); + t1.log$4(B.Level_CONFIG_700, "Update codec for trackId " + trackId + ", codec " + codec, null, null); + cryptor = A.IterableExtension_firstWhereOrNull($.participantCryptors, new A.main__closure1(trackId), type$.FrameCryptor); + if (cryptor != null) { + if (cryptor.lastError !== B.CryptorError_1) { + t1.log$4(B.Level_INFO_800, "updateCodec[" + codec + string$.___las, null, null); + cryptor.lastError = B.CryptorError_0; + } + t1.log$4(B.Level_CONFIG_700, "updateCodec for " + A.S(cryptor.participantIdentity) + ", codec: " + codec, null, null); + cryptor.codec = codec; + } + type$.JSObject._as(self.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "updateCodec", "msgId", msgId, "msgType", "response"], type$.String, type$.nullable_String))); + // goto after switch + $async$goto = 4; break; - case 3: - // uncaught - // goto rethrow - $async$goto = 2; + case 20: + // case + trackId = A._asString(msg.$index(0, "trackId")); + t1.log$4(B.Level_CONFIG_700, "Dispose for trackId " + trackId, null, null); + cryptor = A.IterableExtension_firstWhereOrNull($.participantCryptors, new A.main__closure2(trackId), type$.FrameCryptor); + t1 = type$.JSObject; + t2 = type$.String; + t3 = type$.nullable_String; + if (cryptor != null) { + cryptor.lastError = B.CryptorError_8; + t1._as(self.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorDispose", "participantId", cryptor.participantIdentity, "trackId", trackId, "msgId", msgId, "msgType", "response"], t2, t3))); + } else + t1._as(self.self).postMessage(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorDispose", "error", "cryptor not found", "msgId", msgId, "msgType", "response"], t2, t3))); + // goto after switch + $async$goto = 4; break; - case 6: - // after finally + case 21: + // default + t1.log$4(B.Level_WARNING_900, "Unknown message kind " + msg.toString$0(0), null, null); + case 4: + // after switch case 1: // return return A._asyncReturn($async$returnValue, $async$completer); - case 2: - // rethrow - return A._asyncRethrow($async$currentError, $async$completer); } }); - return A._asyncStartSync($async$decodeFunction$2, $async$completer); - }, - get$participantId(receiver) { - return this.participantId; - }, - get$trackId(receiver) { - return this.trackId; - }, - get$codec(receiver) { - return this.codec; - } - }; - A.Cryptor_ratchetKey_closure.prototype = { - call$1(newMaterial) { - var t1 = this.$this; - t1.deriveKeys$2(type$.CryptoKey._as(newMaterial), t1.keyOptions.ratchetSalt).then$1$1(new A.Cryptor_ratchetKey__closure(t1, this.keyIndex), type$.Null); - }, - $signature: 24 - }; - A.Cryptor_ratchetKey__closure.prototype = { - call$1(newKeySet) { - var t1, t2; - type$.KeySet._as(newKeySet); - t1 = this.$this; - t2 = this.keyIndex; - t1.setKeySetFromMaterial$2(newKeySet, t2 == null ? t1.currentKeyIndex : t2).then$1$1(new A.Cryptor_ratchetKey___closure(t1), type$.Null); - }, - $signature: 25 - }; - A.Cryptor_ratchetKey___closure.prototype = { - call$1(_) { - var t1 = this.$this; - t1._ratchetCompleter.complete$0(0); - t1._ratchetCompleter = null; - }, - $signature: 26 - }; - A.TransformMessage.prototype = {}; - A.EnableTransformMessage.prototype = {}; - A.RemoveTransformMessage.prototype = {}; - A.main_closure.prototype = { - call$1($event) { - var t1, options, t2, kind, participantId, trackId, codec, msgType, cryptor; - A.print("got transform event"); - t1 = type$.JavaScriptObject._as(type$.RTCTransformEvent._as($event).transformer); - t1.handled = true; - options = t1.options; - t2 = J.getInterceptor$x(options); - kind = t2.get$kind(options); - participantId = t2.get$participantId(options); - trackId = t2.get$trackId(options); - codec = t2.get$codec(options); - msgType = t2.get$msgType(options); - cryptor = A.IterableExtension_firstWhereOrNull($.participantCryptors, new A.main__closure8(trackId), type$.Cryptor); - if (cryptor == null) { - t2 = self.self; - A._asStringQ(participantId); - A._asStringQ(trackId); - cryptor = A.Cryptor$($.$get$keyProviderOptions(), participantId, trackId, t2); - B.JSArray_methods.add$1($.participantCryptors, cryptor); - } - A._asString(msgType); - t2 = type$.ReadableStream._as(t1.readable); - t1 = type$.WritableStream._as(t1.writable); - A._asString(trackId); - A._asString(kind); - cryptor.setupTransform$6$codec$kind$operation$readable$trackId$writable(A._asStringQ(codec), kind, msgType, t2, trackId, t1); - }, - $signature: 3 - }; - A.main__closure8.prototype = { - call$1(c) { - return type$.Cryptor._as(c).trackId == this.trackId; - }, - $signature: 1 - }; - A.main_closure0.prototype = { - call$1(e) { - var copy, msgType, options, t3, enabled, participantId, t4, cryptors, line, _i, cryptor, kind, exist, trackId, readable, writable, key, keyIndex, c, keySet, codec, - _s13_ = "participantId", - _s53_ = "]: lastError != CryptorError.kOk, reset state to kNew", - _s7_ = "trackId", - _s8_ = "keyIndex", - t1 = type$.MessageEvent._as(e).data, - t2 = new A._AcceptStructuredCloneDart2Js([], []); - t2.mustCopy = true; - copy = t2.walk$1(t1); - t1 = J.getInterceptor$asx(copy); - msgType = t1.$index(copy, "msgType"); - switch (msgType) { - case "init": - options = t1.$index(copy, "keyOptions"); - t1 = J.getInterceptor$asx(options); - t2 = A._asBool(t1.$index(options, "sharedKey")); - t3 = new Uint8Array(A._ensureNativeList(B.C_Base64Decoder.convert$1(A._asString(t1.$index(options, "ratchetSalt"))))); - t1 = A._asInt(t1.$index(options, "ratchetWindowSize")); - $.keyProviderOptions = new A.KeyOptions(t2, t3, t1); - A.print("worker: init with keyOptions " + ("KeyOptions{sharedKey: " + t2 + ", ratchetWindowSize: " + t1 + "}")); - break; - case "enable": - enabled = A._asBool(t1.$index(copy, "enabled")); - participantId = A._asString(t1.$index(copy, _s13_)); - t1 = "" + enabled; - A.print("worker: set enable " + t1 + " for participantId " + participantId); - t2 = $.participantCryptors; - t3 = A._arrayInstanceType(t2); - t4 = t3._eval$1("WhereIterable<1>"); - cryptors = A.List_List$of(new A.WhereIterable(t2, t3._eval$1("bool(1)")._as(new A.main__closure(participantId)), t4), true, t4._eval$1("Iterable.E")); - for (t2 = cryptors.length, line = "setEnabled[" + t1 + _s53_, _i = 0; _i < t2; ++_i) { - cryptor = cryptors[_i]; - if (cryptor.lastError !== B.CryptorError_1) { - A.printString(line); - cryptor.lastError = B.CryptorError_0; - } - cryptor.enabled = enabled; - } - J.postMessage$1$x(self.self, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorEnabled", "participantId", participantId, "enable", enabled], type$.String, type$.Object)); - break; - case "decode": - case "encode": - kind = t1.$index(copy, "kind"); - exist = A._asBool(t1.$index(copy, "exist")); - participantId = A._asString(t1.$index(copy, _s13_)); - trackId = t1.$index(copy, _s7_); - readable = type$.ReadableStream._as(t1.$index(copy, "readableStream")); - writable = type$.WritableStream._as(t1.$index(copy, "writableStream")); - A.print("worker: got " + A.S(msgType) + ", kind " + A.S(kind) + ", trackId " + A.S(trackId) + ", participantId " + participantId + ", " + B.Type_JSObject_8k0.toString$0(0) + " " + B.Type_JSObject_8k0.toString$0(0) + "}"); - cryptor = A.IterableExtension_firstWhereOrNull($.participantCryptors, new A.main__closure0(trackId), type$.Cryptor); - if (cryptor == null) { - t1 = self.self; - A._asStringQ(trackId); - cryptor = A.Cryptor$($.$get$keyProviderOptions(), participantId, trackId, t1); - B.JSArray_methods.add$1($.participantCryptors, cryptor); - } - if (!exist) { - A._asString(msgType); - A._asString(trackId); - cryptor.setupTransform$5$kind$operation$readable$trackId$writable(A._asString(kind), msgType, readable, trackId, writable); - } - if (cryptor.lastError !== B.CryptorError_1) { - A.print("setParticipantId: lastError != CryptorError.kOk, reset state to kNew"); - cryptor.lastError = B.CryptorError_0; - } - cryptor.participantId = participantId; - J.postMessage$1$x(self.self, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorSetup", "participantId", participantId, "trackId", trackId, "exist", exist, "operation", msgType], type$.String, type$.dynamic)); - cryptor.lastError = B.CryptorError_0; - break; - case "removeTransform": - trackId = A._asString(t1.$index(copy, _s7_)); - A.print("worker: removing trackId " + trackId); - t1 = $.participantCryptors; - t2 = A._arrayInstanceType(t1)._eval$1("bool(1)")._as(new A.main__closure1(trackId)); - if (!!t1.fixed$length) - A.throwExpression(A.UnsupportedError$("removeWhere")); - B.JSArray_methods._removeWhere$2(t1, t2, true); - break; - case "setKey": - key = new Uint8Array(A._ensureNativeList(B.C_Base64Decoder.convert$1(A._asString(t1.$index(copy, "key"))))); - keyIndex = t1.$index(copy, _s8_); - participantId = A._asString(t1.$index(copy, _s13_)); - A.print("worker: setup key for participant " + participantId); - if ($.$get$keyProviderOptions().sharedKey) { - for (t1 = $.participantCryptors, t2 = t1.length, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) - t1[_i].setKey$2(A._asInt(keyIndex), key); - return; - } - t1 = $.participantCryptors; - t2 = A._arrayInstanceType(t1); - t3 = t2._eval$1("WhereIterable<1>"); - cryptors = A.List_List$of(new A.WhereIterable(t1, t2._eval$1("bool(1)")._as(new A.main__closure2(participantId)), t3), true, t3._eval$1("Iterable.E")); - for (t1 = cryptors.length, _i = 0; _i < t1; ++_i) - cryptors[_i].setKey$2(A._asInt(keyIndex), key); - break; - case "ratchetKey": - keyIndex = t1.$index(copy, _s8_); - participantId = A._asString(t1.$index(copy, _s13_)); - A.print("worker: ratchetKey for participant " + participantId + ", keyIndex " + A.S(keyIndex)); - t1 = $.participantCryptors; - t2 = A._arrayInstanceType(t1); - t3 = t2._eval$1("WhereIterable<1>"); - cryptors = A.List_List$of(new A.WhereIterable(t1, t2._eval$1("bool(1)")._as(new A.main__closure3(participantId)), t3), true, t3._eval$1("Iterable.E")); - for (t1 = cryptors.length, t2 = type$.Null, _i = 0; _i < t1; ++_i) { - c = cryptors[_i]; - A._asIntQ(keyIndex); - t3 = c.cryptoKeyRing; - t4 = keyIndex == null ? c.currentKeyIndex : keyIndex; - if (!(t4 >= 0 && t4 < 16)) - return A.ioore(t3, t4); - keySet = t3[t4]; - c.ratchetKey$1(keyIndex).then$1$1(new A.main__closure4(c, keySet, participantId), t2); - } - break; - case "setKeyIndex": - keyIndex = t1.$index(copy, "index"); - participantId = A._asString(t1.$index(copy, _s13_)); - A.print("worker: setup key index for participant " + participantId); - t1 = $.participantCryptors; - t2 = A._arrayInstanceType(t1); - t3 = t2._eval$1("WhereIterable<1>"); - cryptors = A.List_List$of(new A.WhereIterable(t1, t2._eval$1("bool(1)")._as(new A.main__closure5(participantId)), t3), true, t3._eval$1("Iterable.E")); - for (t1 = cryptors.length, _i = 0; _i < t1; ++_i) { - c = cryptors[_i]; - A._asInt(keyIndex); - if (c.lastError !== B.CryptorError_1) { - A.printString("setKeyIndex: lastError != CryptorError.kOk, reset state to kNew"); - c.lastError = B.CryptorError_0; - } - c.currentKeyIndex = keyIndex; - } - break; - case "updateCodec": - codec = A._asString(t1.$index(copy, "codec")); - trackId = A._asString(t1.$index(copy, _s7_)); - A.print("worker: update codec for trackId " + trackId + ", codec " + codec); - cryptor = A.IterableExtension_firstWhereOrNull($.participantCryptors, new A.main__closure6(trackId), type$.Cryptor); - if (cryptor != null) { - if (cryptor.lastError !== B.CryptorError_1) { - A.print("updateCodec[" + codec + _s53_); - cryptor.lastError = B.CryptorError_0; - } - cryptor.codec = codec; - } - break; - case "dispose": - trackId = A._asString(t1.$index(copy, _s7_)); - A.print("worker: dispose trackId " + trackId); - cryptor = A.IterableExtension_firstWhereOrNull($.participantCryptors, new A.main__closure7(trackId), type$.Cryptor); - if (cryptor != null) { - cryptor.lastError = B.CryptorError_8; - J.postMessage$1$x(self.self, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorDispose", "participantId", cryptor.participantId, "trackId", trackId], type$.String, type$.nullable_String)); - } - break; - default: - A.print("worker: unknown message kind " + A.S(copy)); - } + return A._asyncStartSync($async$call$1, $async$completer); }, - $signature: 27 + $signature: 22 }; A.main__closure.prototype = { call$1(c) { - return type$.Cryptor._as(c).participantId === this.participantId; + return type$.FrameCryptor._as(c).trackId === this.trackId; }, $signature: 1 }; A.main__closure0.prototype = { call$1(c) { - var t1 = type$.Cryptor._as(c).trackId, - t2 = this.trackId; - return t1 == null ? t2 == null : t1 === t2; + return type$.FrameCryptor._as(c).trackId === this.trackId; }, $signature: 1 }; A.main__closure1.prototype = { call$1(c) { - return type$.Cryptor._as(c).trackId === this.trackId; + return type$.FrameCryptor._as(c).trackId === this.trackId; }, $signature: 1 }; A.main__closure2.prototype = { call$1(c) { - return type$.Cryptor._as(c).participantId === this.participantId; + return type$.FrameCryptor._as(c).trackId === this.trackId; }, $signature: 1 }; - A.main__closure3.prototype = { - call$1(c) { - return type$.Cryptor._as(c).participantId === this.participantId; + A.main_closure1.prototype = { + call$1(e) { + this.handleMessage.call$1(type$.JSObject._as(e)); }, - $signature: 1 + $signature: 11 }; - A.main__closure4.prototype = { - call$1(_) { - var $async$goto = 0, - $async$completer = A._makeAsyncAwaitCompleter(type$.Null), - $async$self = this, t1, newKey; - var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { - if ($async$errorCode === 1) - return A._asyncRethrow($async$result, $async$completer); - while (true) - switch ($async$goto) { - case 0: - // Function start - t1 = $async$self.c; - $async$goto = 2; - return A._asyncAwait(t1.ratchet$2($async$self.keySet.material, $.$get$keyProviderOptions().ratchetSalt), $async$call$1); - case 2: - // returning from await. - newKey = $async$result; - J.postMessage$1$x(self.self, A.LinkedHashMap_LinkedHashMap$_literal(["type", "ratchetKey", "participantId", $async$self.participantId, "trackId", t1.trackId, "key", B.C_Base64Encoder.convert$1(type$.Base64Codec._eval$1("Codec.S")._as(newKey))], type$.String, type$.nullable_String)); - // implicit return - return A._asyncReturn(null, $async$completer); - } - }); - return A._asyncStartSync($async$call$1, $async$completer); + A.Level.prototype = { + $eq(_, other) { + if (other == null) + return false; + return other instanceof A.Level && this.value === other.value; }, - $signature: 28 - }; - A.main__closure5.prototype = { - call$1(c) { - return type$.Cryptor._as(c).participantId === this.participantId; + get$hashCode(_) { + return this.value; }, - $signature: 1 + toString$0(_) { + return this.name; + } }; - A.main__closure6.prototype = { - call$1(c) { - return type$.Cryptor._as(c).trackId === this.trackId; + A.LogRecord.prototype = { + toString$0(_) { + return "[" + this.level.name + "] " + this.loggerName + ": " + this.message; + } + }; + A.Logger.prototype = { + get$fullName() { + var t1 = this.parent, + t2 = t1 == null ? null : t1.name.length !== 0, + t3 = this.name; + return t2 === true ? t1.get$fullName() + "." + t3 : t3; }, - $signature: 1 + get$level() { + var t1, effectiveLevel; + if (this.parent == null) { + t1 = this._level; + t1.toString; + effectiveLevel = t1; + } else { + t1 = $.$get$Logger_root()._level; + t1.toString; + effectiveLevel = t1; + } + return effectiveLevel; + }, + log$4(logLevel, message, error, stackTrace) { + var record, _this = this, + t1 = logLevel.value; + if (t1 >= _this.get$level().value) { + if (t1 >= 2000) { + A.StackTrace_current(); + logLevel.toString$0(0); + } + t1 = _this.get$fullName(); + Date.now(); + $.LogRecord__nextNumber = $.LogRecord__nextNumber + 1; + record = new A.LogRecord(logLevel, message, t1); + if (_this.parent == null) + _this._publish$1(record); + else + $.$get$Logger_root()._publish$1(record); + } + }, + _getStream$0() { + if (this.parent == null) { + var t1 = this._controller; + if (t1 == null) { + t1 = new A._SyncBroadcastStreamController(null, null, type$._SyncBroadcastStreamController_LogRecord); + this.set$_controller(t1); + } + return new A._BroadcastStream(t1, A._instanceType(t1)._eval$1("_BroadcastStream<1>")); + } else + return $.$get$Logger_root()._getStream$0(); + }, + _publish$1(record) { + var t1 = this._controller; + if (t1 != null) { + A._instanceType(t1)._precomputed1._as(record); + if (!t1.get$_mayAddEvent()) + A.throwExpression(t1._addEventError$0()); + t1._sendData$1(record); + } + return null; + }, + set$_controller(_controller) { + this._controller = type$.nullable_StreamController_LogRecord._as(_controller); + } }; - A.main__closure7.prototype = { - call$1(c) { - return type$.Cryptor._as(c).trackId === this.trackId; + A.Logger_Logger_closure.prototype = { + call$0() { + var dot, $parent, t1, + thisName = this.name; + if (B.JSString_methods.startsWith$1(thisName, ".")) + A.throwExpression(A.ArgumentError$("name shouldn't start with a '.'", null)); + if (B.JSString_methods.endsWith$1(thisName, ".")) + A.throwExpression(A.ArgumentError$("name shouldn't end with a '.'", null)); + dot = B.JSString_methods.lastIndexOf$1(thisName, "."); + if (dot === -1) + $parent = thisName !== "" ? A.Logger_Logger("") : null; + else { + $parent = A.Logger_Logger(B.JSString_methods.substring$2(thisName, 0, dot)); + thisName = B.JSString_methods.substring$1(thisName, dot + 1); + } + t1 = new A.Logger(thisName, $parent, A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.Logger)); + if ($parent == null) + t1._level = B.Level_INFO_800; + else + $parent._children.$indexSet(0, thisName, t1); + return t1; }, - $signature: 1 + $signature: 23 }; (function aliases() { - var _ = J.Interceptor.prototype; - _.super$Interceptor$toString = _.toString$0; - _ = J.LegacyJavaScriptObject.prototype; + var _ = J.LegacyJavaScriptObject.prototype; _.super$LegacyJavaScriptObject$toString = _.toString$0; - _ = A.ListMixin.prototype; - _.super$ListMixin$setRange = _.setRange$4; + _ = A._BroadcastStreamController.prototype; + _.super$_BroadcastStreamController$_addEventError = _._addEventError$0; })(); (function installTearOffs() { var _static_1 = hunkHelpers._static_1, _static_0 = hunkHelpers._static_0, - _instance_2_u = hunkHelpers._instance_2u; - _static_1(A, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 5); - _static_1(A, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 5); - _static_1(A, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 5); + _static_2 = hunkHelpers._static_2, + _instance_2_u = hunkHelpers._instance_2u, + _instance_0_u = hunkHelpers._instance_0u; + _static_1(A, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 4); + _static_1(A, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 4); + _static_1(A, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 4); _static_0(A, "async___startMicrotaskLoop$closure", "_startMicrotaskLoop", 0); + _static_2(A, "async___nullErrorHandler$closure", "_nullErrorHandler", 6); + _static_0(A, "async___nullDoneHandler$closure", "_nullDoneHandler", 0); + _instance_2_u(A._Future.prototype, "get$_completeError", "_completeError$2", 6); + _instance_0_u(A._DoneStreamSubscription.prototype, "get$_onMicrotask", "_onMicrotask$0", 0); var _; - _instance_2_u(_ = A.Cryptor.prototype, "get$encodeFunction", "encodeFunction$2", 7); - _instance_2_u(_, "get$decodeFunction", "decodeFunction$2", 7); + _instance_2_u(_ = A.FrameCryptor.prototype, "get$encodeFunction", "encodeFunction$2", 9); + _instance_2_u(_, "get$decodeFunction", "decodeFunction$2", 9); })(); (function inheritance() { var _mixin = hunkHelpers.mixin, _inherit = hunkHelpers.inherit, _inheritMany = hunkHelpers.inheritMany; _inherit(A.Object, null); - _inheritMany(A.Object, [A.JS_CONST, J.Interceptor, J.ArrayIterator, A._CopyingBytesBuilder, A.Error, A._ListBase_Object_ListMixin, A.SentinelValue, A.Iterable, A.ListIterator, A.Iterator, A.FixedLengthListMixin, A.UnmodifiableListMixin, A.Symbol, A.MapView, A.ConstantMap, A.JSInvocationMirror, A.Closure, A.TypeErrorDecoder, A.NullThrownFromJavaScriptException, A.ExceptionAndStackTrace, A._StackTrace, A._Required, A.MapMixin, A.LinkedHashMapCell, A.LinkedHashMapKeyIterator, A.Rti, A._FunctionParameters, A._Type, A._TimerImpl, A._AsyncAwaitCompleter, A.AsyncError, A._Completer, A._FutureListener, A._Future, A._AsyncCallbackEntry, A.Stream, A.StreamSubscription, A.StreamTransformerBase, A._StreamIterator, A._Zone, A._HashMapKeyIterator, A.ListMixin, A._UnmodifiableMapMixin, A.Codec, A._Base64Encoder, A._Base64Decoder, A.DateTime, A._Enum, A.OutOfMemoryError, A.StackOverflowError, A._Exception, A.FormatException, A.Null, A._StringStackTrace, A.StringBuffer, A.CssStyleDeclarationBase, A.EventStreamProvider, A.ImmutableListMixin, A.FixedSizeListIterator, A._StructuredClone, A._AcceptStructuredClone, A.NullRejectionException, A._JSSecureRandom, A.KeyOptions, A.KeySet, A.Cryptor]); - _inheritMany(J.Interceptor, [J.JSBool, J.JSNull, J.JavaScriptObject, J.JSArray, J.JSNumber, J.JSString, A.NativeByteBuffer, A.NativeTypedData]); - _inheritMany(J.JavaScriptObject, [J.LegacyJavaScriptObject, A.EventTarget, A.AccessibleNodeList, A.Blob, A.CryptoKey, A.CssTransformComponent, A.CssRule, A._CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase, A.CssStyleValue, A.DataTransferItem, A.DataTransferItemList, A.DomException, A._DomRectList_JavaScriptObject_ListMixin, A.DomRectReadOnly, A._DomStringList_JavaScriptObject_ListMixin, A.DomTokenList, A.Event, A._FileList_JavaScriptObject_ListMixin, A.Gamepad, A.History, A._HtmlCollection_JavaScriptObject_ListMixin, A.ImageData, A.Location, A.MediaDeviceInfo, A.MediaList, A._MidiInputMap_JavaScriptObject_MapMixin, A._MidiOutputMap_JavaScriptObject_MapMixin, A.MimeType, A._MimeTypeArray_JavaScriptObject_ListMixin, A._NodeList_JavaScriptObject_ListMixin, A.Plugin, A._PluginArray_JavaScriptObject_ListMixin, A._RtcStatsReport_JavaScriptObject_MapMixin, A.SharedArrayBuffer, A.SpeechGrammar, A._SpeechGrammarList_JavaScriptObject_ListMixin, A.SpeechRecognitionResult, A._Storage_JavaScriptObject_MapMixin, A.StyleSheet, A._TextTrackCueList_JavaScriptObject_ListMixin, A.TimeRanges, A.Touch, A._TouchList_JavaScriptObject_ListMixin, A.TrackDefaultList, A.Url, A.VideoTrack, A.__CssRuleList_JavaScriptObject_ListMixin, A.__GamepadList_JavaScriptObject_ListMixin, A.__NamedNodeMap_JavaScriptObject_ListMixin, A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin, A.__StyleSheetList_JavaScriptObject_ListMixin, A.Length, A._LengthList_JavaScriptObject_ListMixin, A.Number, A._NumberList_JavaScriptObject_ListMixin, A.PointList, A._StringList_JavaScriptObject_ListMixin, A.Transform, A._TransformList_JavaScriptObject_ListMixin, A.AudioBuffer, A._AudioParamMap_JavaScriptObject_MapMixin, A.AudioTrack]); - _inheritMany(J.LegacyJavaScriptObject, [J.PlainJavaScriptObject, J.UnknownJavaScriptObject, J.JavaScriptFunction, A.WritableStream, A.ReadableStream, A.TransformStream, A.TransformStreamDefaultController, A.EncodedStreams, A.RTCEncodedFrame, A.RTCEncodedAudioFrame, A.RTCEncodedVideoFrame, A.RTCEncodedFrameMetadata, A.RTCEncodedAudioFrameMetadata, A.RTCEncodedVideoFrameMetadata, A.RTCTransformEvent, A.RTCRtpScriptTransformer, A.RTCRtpScriptTransform, A.Promise, A.Algorithm, A.AesGcmParams, A.TransformMessage, A.EnableTransformMessage, A.RemoveTransformMessage]); + _inheritMany(A.Object, [A.JS_CONST, J.Interceptor, J.ArrayIterator, A._CopyingBytesBuilder, A.Error, A.SentinelValue, A.Iterable, A.ListIterator, A.MappedIterator, A.WhereIterator, A.FixedLengthListMixin, A.Symbol, A.MapView, A.ConstantMap, A._KeysOrValuesOrElementsIterator, A.JSInvocationMirror, A.Closure, A.TypeErrorDecoder, A.NullThrownFromJavaScriptException, A.ExceptionAndStackTrace, A._StackTrace, A._Required, A.MapBase, A.LinkedHashMapCell, A.LinkedHashMapKeyIterator, A._UnmodifiableNativeByteBufferView, A.Rti, A._FunctionParameters, A._Type, A._TimerImpl, A._AsyncAwaitCompleter, A.AsyncError, A.Stream, A._BufferingStreamSubscription, A._BroadcastStreamController, A._Completer, A._FutureListener, A._Future, A._AsyncCallbackEntry, A._DelayedEvent, A._PendingEvents, A._DoneStreamSubscription, A._StreamIterator, A._Zone, A._HashMapKeyIterator, A.ListBase, A._UnmodifiableMapMixin, A.Codec, A.Converter, A._Base64Encoder, A._Base64Decoder, A.DateTime, A._Enum, A.OutOfMemoryError, A.StackOverflowError, A._Exception, A.FormatException, A.Null, A._StringStackTrace, A.StringBuffer, A.NullRejectionException, A._JSSecureRandom, A.FrameInfo, A.FrameCryptor, A.KeyOptions, A.KeyProvider, A.KeySet, A.ParticipantKeyHandler, A.SifGuard, A.Level, A.LogRecord, A.Logger]); + _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.JSUnmodifiableArray, J.JSArray); _inheritMany(J.JSNumber, [J.JSInt, J.JSNumNotInt]); - _inheritMany(A.Error, [A.LateError, A.TypeError, A.JsNoSuchMethodError, A.UnknownJsTypeError, A.RuntimeError, A.AssertionError, A._Error, A.NullThrownError, A.ArgumentError, A.NoSuchMethodError, A.UnsupportedError, A.UnimplementedError, A.StateError, A.ConcurrentModificationError, A.CyclicInitializationError]); - _inherit(A.ListBase, A._ListBase_Object_ListMixin); - _inherit(A.UnmodifiableListBase, A.ListBase); - _inherit(A.CodeUnits, A.UnmodifiableListBase); - _inheritMany(A.Iterable, [A.EfficientLengthIterable, A.MappedIterable, A.WhereIterable, A._ConstantMapKeyIterable]); - _inheritMany(A.EfficientLengthIterable, [A.ListIterable, A.LinkedHashMapKeyIterable, A._HashMapKeyIterable]); - _inheritMany(A.ListIterable, [A.SubListIterable, A.MappedListIterable]); + _inheritMany(A.Error, [A.LateError, A.TypeError, A.JsNoSuchMethodError, A.UnknownJsTypeError, A._CyclicInitializationError, A.RuntimeError, A.AssertionError, A._Error, A.ArgumentError, A.NoSuchMethodError, A.UnsupportedError, A.UnimplementedError, A.StateError, A.ConcurrentModificationError]); + _inheritMany(A.Iterable, [A.EfficientLengthIterable, A.MappedIterable, A.WhereIterable, A._KeysOrValues]); + _inheritMany(A.EfficientLengthIterable, [A.ListIterable, A.LinkedHashMapKeysIterable, A._HashMapKeyIterable]); _inherit(A.EfficientLengthMappedIterable, A.MappedIterable); - _inheritMany(A.Iterator, [A.MappedIterator, A.WhereIterator]); + _inherit(A.MappedListIterable, A.ListIterable); _inherit(A._UnmodifiableMapView_MapView__UnmodifiableMapMixin, A.MapView); _inherit(A.UnmodifiableMapView, A._UnmodifiableMapView_MapView__UnmodifiableMapMixin); _inherit(A.ConstantMapView, A.UnmodifiableMapView); _inherit(A.ConstantStringMap, A.ConstantMap); - _inheritMany(A.Closure, [A.Closure2Args, A.Closure0Args, A.TearOffClosure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A._Future__chainForeignFuture_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A.Stream_length_closure, A._RootZone_bindUnaryCallbackGuarded_closure, A._EventStreamSubscription_closure, A._convertDataTree__convert, A.promiseToFuture_closure, A.promiseToFuture_closure0, A.Cryptor_ratchetKey_closure, A.Cryptor_ratchetKey__closure, A.Cryptor_ratchetKey___closure, A.main_closure, A.main__closure8, A.main_closure0, A.main__closure, A.main__closure0, A.main__closure1, A.main__closure2, A.main__closure3, A.main__closure4, A.main__closure5, A.main__closure6, A.main__closure7]); - _inheritMany(A.Closure2Args, [A.Primitives_functionNoSuchMethod_closure, A.initHooks_closure0, A._awaitOnObject_closure0, A._wrapJsFunctionForAsync_closure, A._Future__chainForeignFuture_closure0, A.MapBase_mapToString_closure, A.NoSuchMethodError_toString_closure, A.MidiInputMap_keys_closure, A.MidiOutputMap_keys_closure, A.RtcStatsReport_keys_closure, A.Storage_keys_closure, A._StructuredClone_walk_closure, A._StructuredClone_walk_closure0, A._AcceptStructuredClone_walk_closure, A.AudioParamMap_keys_closure]); + _inheritMany(A.Closure, [A.Closure2Args, A.Closure0Args, A.TearOffClosure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A._SyncBroadcastStreamController__sendData_closure, A._Future__chainForeignFuture_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A.Stream_length_closure, A.jsify__convert, A.promiseToFuture_closure, A.promiseToFuture_closure0, A.dartify_convert, A.getTrackCryptor_closure, A.unsetCryptorParticipant_closure, A.main_closure, A.main_closure0, A.main_closure2, A.main__closure, A.main__closure0, A.main__closure1, A.main__closure2, A.main_closure1]); + _inheritMany(A.Closure2Args, [A.Primitives_functionNoSuchMethod_closure, A.initHooks_closure0, A._awaitOnObject_closure0, A._wrapJsFunctionForAsync_closure, A._Future__chainForeignFuture_closure0, A._Future__propagateToListeners_handleWhenCompleteCallback_closure0, A.MapBase_mapToString_closure, A.NoSuchMethodError_toString_closure]); _inherit(A.NullError, A.TypeError); _inheritMany(A.TearOffClosure, [A.StaticClosure, A.BoundClosure]); _inherit(A._AssertionError, A.AssertionError); - _inherit(A.MapBase, A.MapMixin); _inheritMany(A.MapBase, [A.JsLinkedHashMap, A._HashMap]); _inheritMany(A.NativeTypedData, [A.NativeByteData, A.NativeTypedArray]); _inheritMany(A.NativeTypedArray, [A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin]); @@ -10011,228 +9437,107 @@ _inherit(A.NativeTypedArrayOfDouble, A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin); _inherit(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin); _inherit(A.NativeTypedArrayOfInt, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin); + _inheritMany(A.NativeTypedArrayOfDouble, [A.NativeFloat32List, A.NativeFloat64List]); _inheritMany(A.NativeTypedArrayOfInt, [A.NativeInt16List, A.NativeInt32List, A.NativeInt8List, A.NativeUint16List, A.NativeUint32List, A.NativeUint8ClampedList, A.NativeUint8List]); _inherit(A._TypeError, A._Error); - _inheritMany(A.Closure0Args, [A._AsyncRun__scheduleImmediateJsOverride_internalCallback, A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, A._TimerImpl_internalCallback, A._Future__addListener_closure, A._Future__prependListeners_closure, A._Future__chainForeignFuture_closure1, A._Future__asyncCompleteWithValue_closure, A._Future__chainFuture_closure, A._Future__asyncCompleteError_closure, A._Future__propagateToListeners_handleWhenCompleteCallback, A._Future__propagateToListeners_handleValueCallback, A._Future__propagateToListeners_handleError, A.Stream_length_closure0, A._rootHandleError_closure, A._RootZone_bindCallbackGuarded_closure]); + _inheritMany(A.Closure0Args, [A._AsyncRun__scheduleImmediateJsOverride_internalCallback, A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, A._TimerImpl_internalCallback, A._Future__addListener_closure, A._Future__prependListeners_closure, A._Future__chainForeignFuture_closure1, A._Future__chainCoreFuture_closure, A._Future__asyncCompleteWithValue_closure, A._Future__asyncCompleteError_closure, A._Future__propagateToListeners_handleWhenCompleteCallback, A._Future__propagateToListeners_handleValueCallback, A._Future__propagateToListeners_handleError, A.Stream_length_closure0, A._PendingEvents_schedule_closure, A._rootHandleError_closure, A._RootZone_bindCallbackGuarded_closure, A.FrameCryptor_decodeFunction_decryptFrameInternal, A.FrameCryptor_decodeFunction_ratchedKeyInternal, A.Logger_Logger_closure]); + _inherit(A._StreamImpl, A.Stream); + _inherit(A._ControllerStream, A._StreamImpl); + _inherit(A._BroadcastStream, A._ControllerStream); + _inherit(A._ControllerSubscription, A._BufferingStreamSubscription); + _inherit(A._BroadcastSubscription, A._ControllerSubscription); + _inherit(A._SyncBroadcastStreamController, A._BroadcastStreamController); _inherit(A._AsyncCompleter, A._Completer); + _inherit(A._DelayedData, A._DelayedEvent); _inherit(A._RootZone, A._Zone); _inherit(A._IdentityHashMap, A._HashMap); _inherit(A.Base64Codec, A.Codec); - _inherit(A.Converter, A.StreamTransformerBase); _inheritMany(A.Converter, [A.Base64Encoder, A.Base64Decoder]); _inheritMany(A.ArgumentError, [A.RangeError, A.IndexError]); - _inheritMany(A.EventTarget, [A.Node, A.WorkerGlobalScope, A.FileWriter, A.MediaStreamTrack, A.MessagePort, A.SourceBuffer, A._SourceBufferList_EventTarget_ListMixin, A.TextTrack, A.TextTrackCue, A._TextTrackList_EventTarget_ListMixin, A.VideoTrackList, A.AudioTrackList, A.BaseAudioContext]); - _inheritMany(A.Node, [A.Element, A.CharacterData]); - _inherit(A.HtmlElement, A.Element); - _inheritMany(A.HtmlElement, [A.AnchorElement, A.AreaElement, A.FormElement, A.SelectElement, A.TrackElement]); - _inherit(A.CssPerspective, A.CssTransformComponent); - _inherit(A.CssStyleDeclaration, A._CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase); - _inheritMany(A.CssStyleValue, [A.CssTransformValue, A.CssUnparsedValue]); - _inherit(A.DedicatedWorkerGlobalScope, A.WorkerGlobalScope); - _inherit(A._DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin, A._DomRectList_JavaScriptObject_ListMixin); - _inherit(A.DomRectList, A._DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A._DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin, A._DomStringList_JavaScriptObject_ListMixin); - _inherit(A.DomStringList, A._DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A.File, A.Blob); - _inherit(A._FileList_JavaScriptObject_ListMixin_ImmutableListMixin, A._FileList_JavaScriptObject_ListMixin); - _inherit(A.FileList, A._FileList_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A._HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin, A._HtmlCollection_JavaScriptObject_ListMixin); - _inherit(A.HtmlCollection, A._HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A.MessageEvent, A.Event); - _inherit(A.MidiInputMap, A._MidiInputMap_JavaScriptObject_MapMixin); - _inherit(A.MidiOutputMap, A._MidiOutputMap_JavaScriptObject_MapMixin); - _inherit(A._MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin, A._MimeTypeArray_JavaScriptObject_ListMixin); - _inherit(A.MimeTypeArray, A._MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A._NodeList_JavaScriptObject_ListMixin_ImmutableListMixin, A._NodeList_JavaScriptObject_ListMixin); - _inherit(A.NodeList, A._NodeList_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A._PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin, A._PluginArray_JavaScriptObject_ListMixin); - _inherit(A.PluginArray, A._PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A.RtcStatsReport, A._RtcStatsReport_JavaScriptObject_MapMixin); - _inherit(A._SourceBufferList_EventTarget_ListMixin_ImmutableListMixin, A._SourceBufferList_EventTarget_ListMixin); - _inherit(A.SourceBufferList, A._SourceBufferList_EventTarget_ListMixin_ImmutableListMixin); - _inherit(A._SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin, A._SpeechGrammarList_JavaScriptObject_ListMixin); - _inherit(A.SpeechGrammarList, A._SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A.Storage, A._Storage_JavaScriptObject_MapMixin); - _inherit(A._TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin, A._TextTrackCueList_JavaScriptObject_ListMixin); - _inherit(A.TextTrackCueList, A._TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A._TextTrackList_EventTarget_ListMixin_ImmutableListMixin, A._TextTrackList_EventTarget_ListMixin); - _inherit(A.TextTrackList, A._TextTrackList_EventTarget_ListMixin_ImmutableListMixin); - _inherit(A._TouchList_JavaScriptObject_ListMixin_ImmutableListMixin, A._TouchList_JavaScriptObject_ListMixin); - _inherit(A.TouchList, A._TouchList_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A.__CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin, A.__CssRuleList_JavaScriptObject_ListMixin); - _inherit(A._CssRuleList, A.__CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A._DomRect, A.DomRectReadOnly); - _inherit(A.__GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin, A.__GamepadList_JavaScriptObject_ListMixin); - _inherit(A._GamepadList, A.__GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A.__NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin, A.__NamedNodeMap_JavaScriptObject_ListMixin); - _inherit(A._NamedNodeMap, A.__NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin, A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin); - _inherit(A._SpeechRecognitionResultList, A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A.__StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin, A.__StyleSheetList_JavaScriptObject_ListMixin); - _inherit(A._StyleSheetList, A.__StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A._EventStream, A.Stream); - _inherit(A._EventStreamSubscription, A.StreamSubscription); - _inherit(A._StructuredCloneDart2Js, A._StructuredClone); - _inherit(A._AcceptStructuredCloneDart2Js, A._AcceptStructuredClone); - _inherit(A._LengthList_JavaScriptObject_ListMixin_ImmutableListMixin, A._LengthList_JavaScriptObject_ListMixin); - _inherit(A.LengthList, A._LengthList_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A._NumberList_JavaScriptObject_ListMixin_ImmutableListMixin, A._NumberList_JavaScriptObject_ListMixin); - _inherit(A.NumberList, A._NumberList_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A._StringList_JavaScriptObject_ListMixin_ImmutableListMixin, A._StringList_JavaScriptObject_ListMixin); - _inherit(A.StringList, A._StringList_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A._TransformList_JavaScriptObject_ListMixin_ImmutableListMixin, A._TransformList_JavaScriptObject_ListMixin); - _inherit(A.TransformList, A._TransformList_JavaScriptObject_ListMixin_ImmutableListMixin); - _inherit(A.AudioParamMap, A._AudioParamMap_JavaScriptObject_MapMixin); - _inherit(A.OfflineAudioContext, A.BaseAudioContext); _inherit(A.CryptorError, A._Enum); - _mixin(A.UnmodifiableListBase, A.UnmodifiableListMixin); - _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A.ListMixin); + _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A.ListBase); _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin); - _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin, A.ListMixin); + _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin, A.ListBase); _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin); - _mixin(A._ListBase_Object_ListMixin, A.ListMixin); _mixin(A._UnmodifiableMapView_MapView__UnmodifiableMapMixin, A._UnmodifiableMapMixin); - _mixin(A._CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase, A.CssStyleDeclarationBase); - _mixin(A._DomRectList_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A._DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._DomStringList_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A._DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._FileList_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A._FileList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._HtmlCollection_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A._HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._MidiInputMap_JavaScriptObject_MapMixin, A.MapMixin); - _mixin(A._MidiOutputMap_JavaScriptObject_MapMixin, A.MapMixin); - _mixin(A._MimeTypeArray_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A._MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._NodeList_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A._NodeList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._PluginArray_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A._PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._RtcStatsReport_JavaScriptObject_MapMixin, A.MapMixin); - _mixin(A._SourceBufferList_EventTarget_ListMixin, A.ListMixin); - _mixin(A._SourceBufferList_EventTarget_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._SpeechGrammarList_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A._SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._Storage_JavaScriptObject_MapMixin, A.MapMixin); - _mixin(A._TextTrackCueList_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A._TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._TextTrackList_EventTarget_ListMixin, A.ListMixin); - _mixin(A._TextTrackList_EventTarget_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._TouchList_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A._TouchList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A.__CssRuleList_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A.__CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A.__GamepadList_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A.__GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A.__NamedNodeMap_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A.__NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A.__StyleSheetList_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A.__StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._LengthList_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A._LengthList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._NumberList_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A._NumberList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._StringList_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A._StringList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._TransformList_JavaScriptObject_ListMixin, A.ListMixin); - _mixin(A._TransformList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); - _mixin(A._AudioParamMap_JavaScriptObject_MapMixin, A.MapMixin); })(); var init = { typeUniverse: {eC: new Map(), tR: {}, eT: {}, tPV: {}, sEA: []}, - mangledGlobalNames: {int: "int", double: "double", num: "num", String: "String", bool: "bool", Null: "Null", List: "List"}, + mangledGlobalNames: {int: "int", double: "double", num: "num", String: "String", bool: "bool", Null: "Null", List: "List", Object: "Object", Map: "Map"}, mangledNames: {}, - types: ["~()", "bool(Cryptor)", "~(String,@)", "Null(@)", "~(@)", "~(~())", "Null()", "Future<~>(RTCEncodedFrame,TransformStreamDefaultController)", "@(@)", "@(@,String)", "@(String)", "Null(~())", "Null(@,StackTrace)", "~(int,@)", "Null(Object,StackTrace)", "_Future<@>(@)", "~(Object?,Object?)", "~(Symbol0,@)", "~(String,String)", "~(Event)", "~(@,@)", "Null(@,@)", "@(@,@)", "Object?(Object?)", "Null(CryptoKey)", "Null(KeySet)", "Null(~)", "~(MessageEvent)", "Future(~)"], + types: ["~()", "bool(FrameCryptor)", "Null(@)", "~(@)", "~(~())", "Null()", "~(Object,StackTrace)", "Null(Object,StackTrace)", "Object?(Object?)", "Future<~>(JSObject,JSObject)", "Future<~>()", "Null(JSObject)", "~(String,@)", "@(@)", "@(@,String)", "@(String)", "Null(~())", "Null(@,StackTrace)", "~(int,@)", "~(Object?,Object?)", "~(Symbol0,@)", "~(LogRecord)", "Future(JSObject)", "Logger()"], interceptorsByTag: null, leafTags: null, arrayRti: Symbol("$ti") }; - A._Universe_addRules(init.typeUniverse, JSON.parse('{"PlainJavaScriptObject":"LegacyJavaScriptObject","UnknownJavaScriptObject":"LegacyJavaScriptObject","JavaScriptFunction":"LegacyJavaScriptObject","WritableStream":"LegacyJavaScriptObject","ReadableStream":"LegacyJavaScriptObject","TransformStreamDefaultController":"LegacyJavaScriptObject","RTCEncodedFrame":"LegacyJavaScriptObject","TransformStream":"LegacyJavaScriptObject","EncodedStreams":"LegacyJavaScriptObject","RTCEncodedAudioFrame":"LegacyJavaScriptObject","RTCEncodedVideoFrame":"LegacyJavaScriptObject","RTCEncodedFrameMetadata":"LegacyJavaScriptObject","RTCEncodedAudioFrameMetadata":"LegacyJavaScriptObject","RTCEncodedVideoFrameMetadata":"LegacyJavaScriptObject","RTCTransformEvent":"LegacyJavaScriptObject","RTCRtpScriptTransformer":"LegacyJavaScriptObject","RTCRtpScriptTransform":"LegacyJavaScriptObject","Promise":"LegacyJavaScriptObject","Algorithm":"LegacyJavaScriptObject","AesGcmParams":"LegacyJavaScriptObject","TransformMessage":"LegacyJavaScriptObject","EnableTransformMessage":"LegacyJavaScriptObject","RemoveTransformMessage":"LegacyJavaScriptObject","KeyframeEffect":"JavaScriptObject","KeyframeEffectReadOnly":"JavaScriptObject","AnimationEffectReadOnly":"JavaScriptObject","AbortPaymentEvent":"Event","ExtendableEvent":"Event","AudioContext":"BaseAudioContext","AbsoluteOrientationSensor":"EventTarget","OrientationSensor":"EventTarget","Sensor":"EventTarget","MathMLElement":"Element","AudioElement":"HtmlElement","MediaElement":"HtmlElement","HtmlDocument":"Node","Document":"Node","VttCue":"TextTrackCue","ServiceWorkerGlobalScope":"WorkerGlobalScope","CDataSection":"CharacterData","Text":"CharacterData","HtmlFormControlsCollection":"HtmlCollection","CssCharsetRule":"CssRule","CssMatrixComponent":"CssTransformComponent","CssStyleSheet":"StyleSheet","CssurlImageValue":"CssStyleValue","CssImageValue":"CssStyleValue","CssResourceValue":"CssStyleValue","CanvasCaptureMediaStreamTrack":"MediaStreamTrack","NativeFloat32List":"NativeTypedArrayOfDouble","JSBool":{"bool":[]},"JSNull":{"Null":[]},"LegacyJavaScriptObject":{"JavaScriptObject":[],"JSObject":[],"WritableStream":[],"ReadableStream":[],"TransformStreamDefaultController":[],"RTCEncodedFrame":[],"RTCTransformEvent":[],"Algorithm":[]},"JSArray":{"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"JSIndexable":["1"]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"JSIndexable":["1"]},"ArrayIterator":{"Iterator":["1"]},"JSNumber":{"double":[],"num":[]},"JSInt":{"double":[],"int":[],"num":[]},"JSNumNotInt":{"double":[],"num":[]},"JSString":{"String":[],"JSIndexable":["@"]},"LateError":{"Error":[]},"CodeUnits":{"ListMixin":["int"],"UnmodifiableListMixin":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"ListMixin.E":"int","UnmodifiableListMixin.E":"int"},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"SubListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1","ListIterable.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"],"Iterable.E":"2","ListIterable.E":"2"},"WhereIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereIterator":{"Iterator":["1"]},"UnmodifiableListBase":{"ListMixin":["1"],"UnmodifiableListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"Symbol":{"Symbol0":[]},"ConstantMapView":{"UnmodifiableMapView":["1","2"],"_UnmodifiableMapView_MapView__UnmodifiableMapMixin":["1","2"],"MapView":["1","2"],"_UnmodifiableMapMixin":["1","2"],"Map":["1","2"]},"ConstantMap":{"Map":["1","2"]},"ConstantStringMap":{"ConstantMap":["1","2"],"Map":["1","2"]},"_ConstantMapKeyIterable":{"Iterable":["1"],"Iterable.E":"1"},"JSInvocationMirror":{"Invocation":[]},"NullError":{"TypeError":[],"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"Closure0Args":{"Function":[]},"Closure2Args":{"Function":[]},"TearOffClosure":{"Function":[]},"StaticClosure":{"Function":[]},"BoundClosure":{"Function":[]},"RuntimeError":{"Error":[]},"_AssertionError":{"Error":[]},"JsLinkedHashMap":{"MapMixin":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapMixin.K":"1","MapMixin.V":"2"},"LinkedHashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"LinkedHashMapKeyIterator":{"Iterator":["1"]},"NativeByteBuffer":{"ByteBuffer":[]},"NativeByteData":{"NativeTypedData":[],"ByteData":[]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"],"NativeTypedData":[],"JSIndexable":["1"]},"NativeTypedArrayOfDouble":{"NativeTypedArray":["double"],"ListMixin":["double"],"JavaScriptIndexingBehavior":["double"],"List":["double"],"NativeTypedData":[],"EfficientLengthIterable":["double"],"JSIndexable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"ListMixin.E":"double"},"NativeTypedArrayOfInt":{"NativeTypedArray":["int"],"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeInt16List":{"NativeTypedArrayOfInt":[],"NativeTypedArray":["int"],"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeInt32List":{"NativeTypedArrayOfInt":[],"NativeTypedArray":["int"],"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeInt8List":{"NativeTypedArrayOfInt":[],"NativeTypedArray":["int"],"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint16List":{"NativeTypedArrayOfInt":[],"NativeTypedArray":["int"],"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint32List":{"NativeTypedArrayOfInt":[],"NativeTypedArray":["int"],"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint8ClampedList":{"NativeTypedArrayOfInt":[],"NativeTypedArray":["int"],"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint8List":{"NativeTypedArrayOfInt":[],"NativeTypedArray":["int"],"ListMixin":["int"],"Uint8List":[],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"_Error":{"Error":[]},"_TypeError":{"TypeError":[],"Error":[]},"_Future":{"Future":["1"]},"_AsyncAwaitCompleter":{"Completer":["1"]},"AsyncError":{"Error":[]},"_Completer":{"Completer":["1"]},"_AsyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_Zone":{"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"_HashMap":{"MapMixin":["1","2"],"Map":["1","2"]},"_IdentityHashMap":{"_HashMap":["1","2"],"MapMixin":["1","2"],"Map":["1","2"],"MapMixin.K":"1","MapMixin.V":"2"},"_HashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_HashMapKeyIterator":{"Iterator":["1"]},"ListBase":{"ListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"MapBase":{"MapMixin":["1","2"],"Map":["1","2"]},"MapMixin":{"Map":["1","2"]},"MapView":{"Map":["1","2"]},"UnmodifiableMapView":{"_UnmodifiableMapView_MapView__UnmodifiableMapMixin":["1","2"],"MapView":["1","2"],"_UnmodifiableMapMixin":["1","2"],"Map":["1","2"]},"Base64Codec":{"Codec":["List","String"],"Codec.S":"List"},"double":{"num":[]},"int":{"num":[]},"List":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"NullThrownError":{"TypeError":[],"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"NoSuchMethodError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"CyclicInitializationError":{"Error":[]},"_StringStackTrace":{"StackTrace":[]},"CryptoKey":{"JavaScriptObject":[]},"CssRule":{"JavaScriptObject":[]},"Event":{"JavaScriptObject":[]},"File":{"Blob":[],"JavaScriptObject":[]},"Gamepad":{"JavaScriptObject":[]},"MessageEvent":{"Event":[],"JavaScriptObject":[]},"MimeType":{"JavaScriptObject":[]},"Node":{"EventTarget":[],"JavaScriptObject":[]},"Plugin":{"JavaScriptObject":[]},"SourceBuffer":{"EventTarget":[],"JavaScriptObject":[]},"SpeechGrammar":{"JavaScriptObject":[]},"SpeechRecognitionResult":{"JavaScriptObject":[]},"StyleSheet":{"JavaScriptObject":[]},"TextTrack":{"EventTarget":[],"JavaScriptObject":[]},"TextTrackCue":{"EventTarget":[],"JavaScriptObject":[]},"Touch":{"JavaScriptObject":[]},"HtmlElement":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"AccessibleNodeList":{"JavaScriptObject":[]},"AnchorElement":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"AreaElement":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"Blob":{"JavaScriptObject":[]},"CharacterData":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"CssPerspective":{"JavaScriptObject":[]},"CssStyleDeclaration":{"JavaScriptObject":[]},"CssStyleValue":{"JavaScriptObject":[]},"CssTransformComponent":{"JavaScriptObject":[]},"CssTransformValue":{"JavaScriptObject":[]},"CssUnparsedValue":{"JavaScriptObject":[]},"DataTransferItem":{"JavaScriptObject":[]},"DataTransferItemList":{"JavaScriptObject":[]},"DedicatedWorkerGlobalScope":{"EventTarget":[],"JavaScriptObject":[]},"DomException":{"JavaScriptObject":[]},"DomRectList":{"ListMixin":["Rectangle"],"ImmutableListMixin":["Rectangle"],"List":["Rectangle"],"JavaScriptIndexingBehavior":["Rectangle"],"JavaScriptObject":[],"EfficientLengthIterable":["Rectangle"],"Iterable":["Rectangle"],"JSIndexable":["Rectangle"],"ImmutableListMixin.E":"Rectangle","ListMixin.E":"Rectangle"},"DomRectReadOnly":{"JavaScriptObject":[],"Rectangle":["num"]},"DomStringList":{"ListMixin":["String"],"ImmutableListMixin":["String"],"List":["String"],"JavaScriptIndexingBehavior":["String"],"JavaScriptObject":[],"EfficientLengthIterable":["String"],"Iterable":["String"],"JSIndexable":["String"],"ImmutableListMixin.E":"String","ListMixin.E":"String"},"DomTokenList":{"JavaScriptObject":[]},"Element":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"EventTarget":{"JavaScriptObject":[]},"FileList":{"ListMixin":["File"],"ImmutableListMixin":["File"],"List":["File"],"JavaScriptIndexingBehavior":["File"],"JavaScriptObject":[],"EfficientLengthIterable":["File"],"Iterable":["File"],"JSIndexable":["File"],"ImmutableListMixin.E":"File","ListMixin.E":"File"},"FileWriter":{"EventTarget":[],"JavaScriptObject":[]},"FormElement":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"History":{"JavaScriptObject":[]},"HtmlCollection":{"ListMixin":["Node"],"ImmutableListMixin":["Node"],"List":["Node"],"JavaScriptIndexingBehavior":["Node"],"JavaScriptObject":[],"EfficientLengthIterable":["Node"],"Iterable":["Node"],"JSIndexable":["Node"],"ImmutableListMixin.E":"Node","ListMixin.E":"Node"},"ImageData":{"JavaScriptObject":[]},"Location":{"JavaScriptObject":[]},"MediaDeviceInfo":{"JavaScriptObject":[]},"MediaList":{"JavaScriptObject":[]},"MediaStreamTrack":{"EventTarget":[],"JavaScriptObject":[]},"MessagePort":{"EventTarget":[],"JavaScriptObject":[]},"MidiInputMap":{"JavaScriptObject":[],"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"MidiOutputMap":{"JavaScriptObject":[],"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"MimeTypeArray":{"ListMixin":["MimeType"],"ImmutableListMixin":["MimeType"],"List":["MimeType"],"JavaScriptIndexingBehavior":["MimeType"],"JavaScriptObject":[],"EfficientLengthIterable":["MimeType"],"Iterable":["MimeType"],"JSIndexable":["MimeType"],"ImmutableListMixin.E":"MimeType","ListMixin.E":"MimeType"},"NodeList":{"ListMixin":["Node"],"ImmutableListMixin":["Node"],"List":["Node"],"JavaScriptIndexingBehavior":["Node"],"JavaScriptObject":[],"EfficientLengthIterable":["Node"],"Iterable":["Node"],"JSIndexable":["Node"],"ImmutableListMixin.E":"Node","ListMixin.E":"Node"},"PluginArray":{"ListMixin":["Plugin"],"ImmutableListMixin":["Plugin"],"List":["Plugin"],"JavaScriptIndexingBehavior":["Plugin"],"JavaScriptObject":[],"EfficientLengthIterable":["Plugin"],"Iterable":["Plugin"],"JSIndexable":["Plugin"],"ImmutableListMixin.E":"Plugin","ListMixin.E":"Plugin"},"RtcStatsReport":{"JavaScriptObject":[],"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"SelectElement":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"SharedArrayBuffer":{"JavaScriptObject":[]},"SourceBufferList":{"ListMixin":["SourceBuffer"],"ImmutableListMixin":["SourceBuffer"],"EventTarget":[],"List":["SourceBuffer"],"JavaScriptIndexingBehavior":["SourceBuffer"],"JavaScriptObject":[],"EfficientLengthIterable":["SourceBuffer"],"Iterable":["SourceBuffer"],"JSIndexable":["SourceBuffer"],"ImmutableListMixin.E":"SourceBuffer","ListMixin.E":"SourceBuffer"},"SpeechGrammarList":{"ListMixin":["SpeechGrammar"],"ImmutableListMixin":["SpeechGrammar"],"List":["SpeechGrammar"],"JavaScriptIndexingBehavior":["SpeechGrammar"],"JavaScriptObject":[],"EfficientLengthIterable":["SpeechGrammar"],"Iterable":["SpeechGrammar"],"JSIndexable":["SpeechGrammar"],"ImmutableListMixin.E":"SpeechGrammar","ListMixin.E":"SpeechGrammar"},"Storage":{"JavaScriptObject":[],"MapMixin":["String","String"],"Map":["String","String"],"MapMixin.K":"String","MapMixin.V":"String"},"TextTrackCueList":{"ListMixin":["TextTrackCue"],"ImmutableListMixin":["TextTrackCue"],"List":["TextTrackCue"],"JavaScriptIndexingBehavior":["TextTrackCue"],"JavaScriptObject":[],"EfficientLengthIterable":["TextTrackCue"],"Iterable":["TextTrackCue"],"JSIndexable":["TextTrackCue"],"ImmutableListMixin.E":"TextTrackCue","ListMixin.E":"TextTrackCue"},"TextTrackList":{"ListMixin":["TextTrack"],"ImmutableListMixin":["TextTrack"],"EventTarget":[],"List":["TextTrack"],"JavaScriptIndexingBehavior":["TextTrack"],"JavaScriptObject":[],"EfficientLengthIterable":["TextTrack"],"Iterable":["TextTrack"],"JSIndexable":["TextTrack"],"ImmutableListMixin.E":"TextTrack","ListMixin.E":"TextTrack"},"TimeRanges":{"JavaScriptObject":[]},"TouchList":{"ListMixin":["Touch"],"ImmutableListMixin":["Touch"],"List":["Touch"],"JavaScriptIndexingBehavior":["Touch"],"JavaScriptObject":[],"EfficientLengthIterable":["Touch"],"Iterable":["Touch"],"JSIndexable":["Touch"],"ImmutableListMixin.E":"Touch","ListMixin.E":"Touch"},"TrackDefaultList":{"JavaScriptObject":[]},"TrackElement":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"Url":{"JavaScriptObject":[]},"VideoTrack":{"JavaScriptObject":[]},"VideoTrackList":{"EventTarget":[],"JavaScriptObject":[]},"WorkerGlobalScope":{"EventTarget":[],"JavaScriptObject":[]},"_CssRuleList":{"ListMixin":["CssRule"],"ImmutableListMixin":["CssRule"],"List":["CssRule"],"JavaScriptIndexingBehavior":["CssRule"],"JavaScriptObject":[],"EfficientLengthIterable":["CssRule"],"Iterable":["CssRule"],"JSIndexable":["CssRule"],"ImmutableListMixin.E":"CssRule","ListMixin.E":"CssRule"},"_DomRect":{"JavaScriptObject":[],"Rectangle":["num"]},"_GamepadList":{"ListMixin":["Gamepad?"],"ImmutableListMixin":["Gamepad?"],"List":["Gamepad?"],"JavaScriptIndexingBehavior":["Gamepad?"],"JavaScriptObject":[],"EfficientLengthIterable":["Gamepad?"],"Iterable":["Gamepad?"],"JSIndexable":["Gamepad?"],"ImmutableListMixin.E":"Gamepad?","ListMixin.E":"Gamepad?"},"_NamedNodeMap":{"ListMixin":["Node"],"ImmutableListMixin":["Node"],"List":["Node"],"JavaScriptIndexingBehavior":["Node"],"JavaScriptObject":[],"EfficientLengthIterable":["Node"],"Iterable":["Node"],"JSIndexable":["Node"],"ImmutableListMixin.E":"Node","ListMixin.E":"Node"},"_SpeechRecognitionResultList":{"ListMixin":["SpeechRecognitionResult"],"ImmutableListMixin":["SpeechRecognitionResult"],"List":["SpeechRecognitionResult"],"JavaScriptIndexingBehavior":["SpeechRecognitionResult"],"JavaScriptObject":[],"EfficientLengthIterable":["SpeechRecognitionResult"],"Iterable":["SpeechRecognitionResult"],"JSIndexable":["SpeechRecognitionResult"],"ImmutableListMixin.E":"SpeechRecognitionResult","ListMixin.E":"SpeechRecognitionResult"},"_StyleSheetList":{"ListMixin":["StyleSheet"],"ImmutableListMixin":["StyleSheet"],"List":["StyleSheet"],"JavaScriptIndexingBehavior":["StyleSheet"],"JavaScriptObject":[],"EfficientLengthIterable":["StyleSheet"],"Iterable":["StyleSheet"],"JSIndexable":["StyleSheet"],"ImmutableListMixin.E":"StyleSheet","ListMixin.E":"StyleSheet"},"_EventStream":{"Stream":["1"]},"_EventStreamSubscription":{"StreamSubscription":["1"]},"FixedSizeListIterator":{"Iterator":["1"]},"Length":{"JavaScriptObject":[]},"Number":{"JavaScriptObject":[]},"Transform":{"JavaScriptObject":[]},"LengthList":{"ListMixin":["Length"],"ImmutableListMixin":["Length"],"List":["Length"],"JavaScriptObject":[],"EfficientLengthIterable":["Length"],"Iterable":["Length"],"ImmutableListMixin.E":"Length","ListMixin.E":"Length"},"NumberList":{"ListMixin":["Number"],"ImmutableListMixin":["Number"],"List":["Number"],"JavaScriptObject":[],"EfficientLengthIterable":["Number"],"Iterable":["Number"],"ImmutableListMixin.E":"Number","ListMixin.E":"Number"},"PointList":{"JavaScriptObject":[]},"StringList":{"ListMixin":["String"],"ImmutableListMixin":["String"],"List":["String"],"JavaScriptObject":[],"EfficientLengthIterable":["String"],"Iterable":["String"],"ImmutableListMixin.E":"String","ListMixin.E":"String"},"TransformList":{"ListMixin":["Transform"],"ImmutableListMixin":["Transform"],"List":["Transform"],"JavaScriptObject":[],"EfficientLengthIterable":["Transform"],"Iterable":["Transform"],"ImmutableListMixin.E":"Transform","ListMixin.E":"Transform"},"AudioBuffer":{"JavaScriptObject":[]},"AudioParamMap":{"JavaScriptObject":[],"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"AudioTrack":{"JavaScriptObject":[]},"AudioTrackList":{"EventTarget":[],"JavaScriptObject":[]},"BaseAudioContext":{"EventTarget":[],"JavaScriptObject":[]},"OfflineAudioContext":{"EventTarget":[],"JavaScriptObject":[]},"Uint8List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]}}')); - A._Universe_addErasedTypes(init.typeUniverse, JSON.parse('{"EfficientLengthIterable":1,"UnmodifiableListBase":1,"NativeTypedArray":1,"StreamTransformerBase":2,"ListBase":1,"MapBase":2,"_ListBase_Object_ListMixin":1,"Converter":2,"Promise":1}')); + A._Universe_addRules(init.typeUniverse, JSON.parse('{"JavaScriptFunction":"LegacyJavaScriptObject","PlainJavaScriptObject":"LegacyJavaScriptObject","UnknownJavaScriptObject":"LegacyJavaScriptObject","JSBool":{"bool":[],"TrustedGetRuntimeType":[]},"JSNull":{"Null":[],"TrustedGetRuntimeType":[]},"JavaScriptObject":{"JSObject":[]},"LegacyJavaScriptObject":{"JSObject":[]},"JSArray":{"List":["1"],"EfficientLengthIterable":["1"],"JSObject":[],"Iterable":["1"]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"EfficientLengthIterable":["1"],"JSObject":[],"Iterable":["1"]},"ArrayIterator":{"Iterator":["1"]},"JSNumber":{"double":[],"num":[]},"JSInt":{"double":[],"int":[],"num":[],"TrustedGetRuntimeType":[]},"JSNumNotInt":{"double":[],"num":[],"TrustedGetRuntimeType":[]},"JSString":{"String":[],"Pattern":[],"TrustedGetRuntimeType":[]},"_CopyingBytesBuilder":{"BytesBuilder":[]},"LateError":{"Error":[]},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"EfficientLengthIterable":["1"],"Iterable":["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"],"Iterable.E":"2","ListIterable.E":"2"},"WhereIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereIterator":{"Iterator":["1"]},"Symbol":{"Symbol0":[]},"ConstantMapView":{"UnmodifiableMapView":["1","2"],"_UnmodifiableMapView_MapView__UnmodifiableMapMixin":["1","2"],"MapView":["1","2"],"_UnmodifiableMapMixin":["1","2"],"Map":["1","2"]},"ConstantMap":{"Map":["1","2"]},"ConstantStringMap":{"ConstantMap":["1","2"],"Map":["1","2"]},"_KeysOrValues":{"Iterable":["1"],"Iterable.E":"1"},"_KeysOrValuesOrElementsIterator":{"Iterator":["1"]},"JSInvocationMirror":{"Invocation":[]},"NullError":{"TypeError":[],"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"Closure0Args":{"Function":[]},"Closure2Args":{"Function":[]},"TearOffClosure":{"Function":[]},"StaticClosure":{"Function":[]},"BoundClosure":{"Function":[]},"_CyclicInitializationError":{"Error":[]},"RuntimeError":{"Error":[]},"_AssertionError":{"Error":[]},"JsLinkedHashMap":{"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"]},"LinkedHashMapKeysIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"LinkedHashMapKeyIterator":{"Iterator":["1"]},"NativeByteBuffer":{"JSObject":[],"ByteBuffer":[],"TrustedGetRuntimeType":[]},"NativeTypedData":{"JSObject":[]},"_UnmodifiableNativeByteBufferView":{"ByteBuffer":[]},"NativeByteData":{"ByteData":[],"JSObject":[],"TrustedGetRuntimeType":[]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"],"JSObject":[]},"NativeTypedArrayOfDouble":{"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"EfficientLengthIterable":["double"],"JSObject":[],"Iterable":["double"],"FixedLengthListMixin":["double"]},"NativeTypedArrayOfInt":{"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeFloat32List":{"Float32List":[],"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"EfficientLengthIterable":["double"],"JSObject":[],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double"},"NativeFloat64List":{"Float64List":[],"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"EfficientLengthIterable":["double"],"JSObject":[],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double"},"NativeInt16List":{"Int16List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeInt32List":{"Int32List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeInt8List":{"Int8List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint16List":{"Uint16List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint32List":{"Uint32List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint8ClampedList":{"Uint8ClampedList":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint8List":{"Uint8List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"EfficientLengthIterable":["int"],"JSObject":[],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"_Error":{"Error":[]},"_TypeError":{"TypeError":[],"Error":[]},"_BufferingStreamSubscription":{"StreamSubscription":["1"],"_EventDispatch":["1"]},"AsyncError":{"Error":[]},"_BroadcastStream":{"_ControllerStream":["1"],"_StreamImpl":["1"],"Stream":["1"]},"_BroadcastSubscription":{"_ControllerSubscription":["1"],"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventDispatch":["1"]},"_BroadcastStreamController":{"StreamController":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_SyncBroadcastStreamController":{"_BroadcastStreamController":["1"],"StreamController":["1"],"_StreamControllerLifecycle":["1"],"_EventDispatch":["1"]},"_AsyncCompleter":{"_Completer":["1"]},"_Future":{"Future":["1"]},"_ControllerStream":{"_StreamImpl":["1"],"Stream":["1"]},"_ControllerSubscription":{"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventDispatch":["1"]},"_StreamImpl":{"Stream":["1"]},"_DelayedData":{"_DelayedEvent":["1"]},"_DoneStreamSubscription":{"StreamSubscription":["1"]},"_Zone":{"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"_HashMap":{"MapBase":["1","2"],"Map":["1","2"]},"_IdentityHashMap":{"_HashMap":["1","2"],"MapBase":["1","2"],"Map":["1","2"]},"_HashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_HashMapKeyIterator":{"Iterator":["1"]},"MapBase":{"Map":["1","2"]},"MapView":{"Map":["1","2"]},"UnmodifiableMapView":{"_UnmodifiableMapView_MapView__UnmodifiableMapMixin":["1","2"],"MapView":["1","2"],"_UnmodifiableMapMixin":["1","2"],"Map":["1","2"]},"Base64Codec":{"Codec":["List","String"],"Codec.S":"List"},"double":{"num":[]},"int":{"num":[]},"List":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"String":{"Pattern":[]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"NoSuchMethodError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"_StringStackTrace":{"StackTrace":[]},"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('{"EfficientLengthIterable":1,"NativeTypedArray":1,"_DelayedEvent":1,"Converter":2}')); var string$ = { - Error_: "Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type" + Cannot: "Cannot fire new event. Controller is already firing an event", + 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", + ___las: "]: lastError != CryptorError.kOk, reset state to kNew", + decode: "decodeFunction::decryptFrameInternal: decrypted: " }; var type$ = (function rtii() { var findType = A.findType; return { - Algorithm: findType("Algorithm"), + $env_1_1_void: findType("@<~>"), AsyncError: findType("AsyncError"), Base64Codec: findType("Base64Codec"), - Blob: findType("Blob"), ByteBuffer: findType("ByteBuffer"), + ByteData: findType("ByteData"), ConstantMapView_Symbol_dynamic: findType("ConstantMapView"), - CryptoKey: findType("CryptoKey"), - Cryptor: findType("Cryptor"), - CssRule: findType("CssRule"), EfficientLengthIterable_dynamic: findType("EfficientLengthIterable<@>"), Error: findType("Error"), - Event: findType("Event"), - File: findType("File"), - FileList: findType("FileList"), + Float32List: findType("Float32List"), + Float64List: findType("Float64List"), + FrameCryptor: findType("FrameCryptor"), Function: findType("Function"), - FutureOr_CryptoKey: findType("CryptoKey/"), Future_dynamic: findType("Future<@>"), - Future_void_Function_RTCEncodedFrame_TransformStreamDefaultController: findType("Future<~>(RTCEncodedFrame,TransformStreamDefaultController)"), - ImageData: findType("ImageData"), + Future_void_Function_JSObject_JSObject: findType("Future<~>(JSObject,JSObject)"), + Int16List: findType("Int16List"), + Int32List: findType("Int32List"), + Int8List: findType("Int8List"), Invocation: findType("Invocation"), Iterable_dynamic: findType("Iterable<@>"), Iterable_int: findType("Iterable"), + Iterable_nullable_Object: findType("Iterable"), JSArray_String: findType("JSArray"), JSArray_dynamic: findType("JSArray<@>"), JSArray_int: findType("JSArray"), - JSIndexable_dynamic: findType("JSIndexable<@>"), + JSArray_nullable_Object: findType("JSArray"), JSNull: findType("JSNull"), JSObject: findType("JSObject"), JavaScriptFunction: findType("JavaScriptFunction"), JavaScriptIndexingBehavior_dynamic: findType("JavaScriptIndexingBehavior<@>"), - JavaScriptObject: findType("JavaScriptObject"), JsLinkedHashMap_Symbol_dynamic: findType("JsLinkedHashMap"), KeySet: findType("KeySet"), - Length: findType("Length"), List_dynamic: findType("List<@>"), List_int: findType("List"), + List_nullable_KeySet: findType("List"), + LogRecord: findType("LogRecord"), + Logger: findType("Logger"), Map_dynamic_dynamic: findType("Map<@,@>"), - MessageEvent: findType("MessageEvent"), - MessagePort: findType("MessagePort"), - MimeType: findType("MimeType"), + Map_of_nullable_Object_and_nullable_Object: findType("Map"), NativeByteBuffer: findType("NativeByteBuffer"), - NativeTypedArrayOfInt: findType("NativeTypedArrayOfInt"), - NativeTypedData: findType("NativeTypedData"), - Node: findType("Node"), Null: findType("Null"), - Number: findType("Number"), Object: findType("Object"), - Plugin: findType("Plugin"), - RTCEncodedFrame: findType("RTCEncodedFrame"), - RTCTransformEvent: findType("RTCTransformEvent"), - ReadableStream: findType("ReadableStream"), + ParticipantKeyHandler: findType("ParticipantKeyHandler"), Record: findType("Record"), - Rectangle_num: findType("Rectangle"), - SharedArrayBuffer: findType("SharedArrayBuffer"), - SourceBuffer: findType("SourceBuffer"), - SpeechGrammar: findType("SpeechGrammar"), - SpeechRecognitionResult: findType("SpeechRecognitionResult"), StackTrace: findType("StackTrace"), String: findType("String"), - StyleSheet: findType("StyleSheet"), Symbol: findType("Symbol0"), - TextTrack: findType("TextTrack"), - TextTrackCue: findType("TextTrackCue"), - Touch: findType("Touch"), - Transform: findType("Transform"), - TransformStreamDefaultController: findType("TransformStreamDefaultController"), + TrustedGetRuntimeType: findType("TrustedGetRuntimeType"), TypeError: findType("TypeError"), + Uint16List: findType("Uint16List"), + Uint32List: findType("Uint32List"), + Uint8ClampedList: findType("Uint8ClampedList"), Uint8List: findType("Uint8List"), UnknownJavaScriptObject: findType("UnknownJavaScriptObject"), - WritableStream: findType("WritableStream"), - _AsyncCompleter_void: findType("_AsyncCompleter<~>"), _Future_dynamic: findType("_Future<@>"), _Future_int: findType("_Future"), - _Future_void: findType("_Future<~>"), - _IdentityHashMap_dynamic_dynamic: findType("_IdentityHashMap<@,@>"), + _IdentityHashMap_of_nullable_Object_and_nullable_Object: findType("_IdentityHashMap"), + _SyncBroadcastStreamController_LogRecord: findType("_SyncBroadcastStreamController"), bool: findType("bool"), bool_Function_Object: findType("bool(Object)"), double: findType("double"), @@ -10240,35 +9545,29 @@ dynamic_Function: findType("@()"), dynamic_Function_Object: findType("@(Object)"), dynamic_Function_Object_StackTrace: findType("@(Object,StackTrace)"), - dynamic_Function_dynamic: findType("@(@)"), - dynamic_Function_dynamic_dynamic: findType("@(@,@)"), int: findType("int"), legacy_Never: findType("0&*"), legacy_Object: findType("Object*"), - nullable_EventTarget: findType("EventTarget?"), nullable_Future_Null: findType("Future?"), - nullable_Gamepad: findType("Gamepad?"), nullable_KeySet: findType("KeySet?"), nullable_Object: findType("Object?"), + nullable_StreamController_LogRecord: findType("StreamController?"), nullable_String: findType("String?"), + nullable_Uint8List: findType("Uint8List?"), nullable__FutureListener_dynamic_dynamic: findType("_FutureListener<@,@>?"), - nullable_dynamic_Function_Event: findType("@(Event)?"), nullable_void_Function: findType("~()?"), - nullable_void_Function_MessageEvent: findType("~(MessageEvent)?"), num: findType("num"), void: findType("~"), void_Function: findType("~()"), - void_Function_String_String: findType("~(String,String)"), - void_Function_String_dynamic: findType("~(String,@)") + void_Function_Object: findType("~(Object)"), + void_Function_Object_StackTrace: findType("~(Object,StackTrace)") }; })(); (function constants() { var makeConstList = hunkHelpers.makeConstList; - B.DedicatedWorkerGlobalScope_methods = A.DedicatedWorkerGlobalScope.prototype; B.Interceptor_methods = J.Interceptor.prototype; B.JSArray_methods = J.JSArray.prototype; B.JSInt_methods = J.JSInt.prototype; - B.JSNumber_methods = J.JSNumber.prototype; B.JSString_methods = J.JSString.prototype; B.JavaScriptFunction_methods = J.JavaScriptFunction.prototype; B.JavaScriptObject_methods = J.JavaScriptObject.prototype; @@ -10296,7 +9595,7 @@ } } function getUnknownTagGenericBrowser(object, tag) { - if (self.HTMLElement && object instanceof HTMLElement) return "HTMLElement"; + if (object instanceof HTMLElement) return "HTMLElement"; return getUnknownTag(object, tag); } function prototypeForTag(tag) { @@ -10307,7 +9606,7 @@ return constructor.prototype; } function discriminator(tag) { return null; } - var isBrowser = typeof navigator == "object"; + var isBrowser = typeof HTMLElement == "function"; return { getTag: getTag, getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag, @@ -10317,9 +9616,10 @@ B.C_JS_CONST6 = function(getTagFallback) { return function(hooks) { if (typeof navigator != "object") return hooks; - var ua = navigator.userAgent; - if (ua.indexOf("DumpRenderTree") >= 0) return hooks; - if (ua.indexOf("Chrome") >= 0) { + var userAgent = navigator.userAgent; + if (typeof userAgent != "string") return hooks; + if (userAgent.indexOf("DumpRenderTree") >= 0) return hooks; + if (userAgent.indexOf("Chrome") >= 0) { function confirm(p) { return typeof window == "object" && window[p] && window[p].name == p; } @@ -10331,27 +9631,11 @@ B.C_JS_CONST1 = function(hooks) { if (typeof dartExperimentalFixupGetTag != "function") return hooks; hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag); -}; - B.C_JS_CONST2 = function(hooks) { - var getTag = hooks.getTag; - var prototypeForTag = hooks.prototypeForTag; - function getTagFixed(o) { - var tag = getTag(o); - if (tag == "Document") { - if (!!o.xmlVersion) return "!Document"; - return "!HTMLDocument"; - } - return tag; - } - function prototypeForTagFixed(tag) { - if (tag == "Document") return null; - return prototypeForTag(tag); - } - hooks.getTag = getTagFixed; - hooks.prototypeForTag = prototypeForTagFixed; }; B.C_JS_CONST5 = function(hooks) { - var userAgent = typeof navigator == "object" ? navigator.userAgent : ""; + if (typeof navigator != "object") return hooks; + var userAgent = navigator.userAgent; + if (typeof userAgent != "string") return hooks; if (userAgent.indexOf("Firefox") == -1) return hooks; var getTag = hooks.getTag; var quickMap = { @@ -10368,7 +9652,9 @@ hooks.getTag = getTagFirefox; }; B.C_JS_CONST4 = function(hooks) { - var userAgent = typeof navigator == "object" ? navigator.userAgent : ""; + if (typeof navigator != "object") return hooks; + var userAgent = navigator.userAgent; + if (typeof userAgent != "string") return hooks; if (userAgent.indexOf("Trident/") == -1) return hooks; var getTag = hooks.getTag; var quickMap = { @@ -10395,6 +9681,24 @@ } hooks.getTag = getTagIE; hooks.prototypeForTag = prototypeForTagIE; +}; + B.C_JS_CONST2 = function(hooks) { + var getTag = hooks.getTag; + var prototypeForTag = hooks.prototypeForTag; + function getTagFixed(o) { + var tag = getTag(o); + if (tag == "Document") { + if (!!o.xmlVersion) return "!Document"; + return "!HTMLDocument"; + } + return tag; + } + function prototypeForTagFixed(tag) { + if (tag == "Document") return null; + return prototypeForTag(tag); + } + hooks.getTag = getTagFixed; + hooks.prototypeForTag = prototypeForTagFixed; }; B.C_JS_CONST3 = function(hooks) { return hooks; } ; @@ -10411,15 +9715,32 @@ B.CryptorError_6 = new A.CryptorError("kKeyRatcheted"); B.CryptorError_7 = new A.CryptorError("kInternalError"); B.CryptorError_8 = new A.CryptorError("kDisposed"); + B.Level_CONFIG_700 = new A.Level("CONFIG", 700); + B.Level_FINER_400 = new A.Level("FINER", 400); + B.Level_FINE_500 = new A.Level("FINE", 500); + B.Level_INFO_800 = new A.Level("INFO", 800); + B.Level_WARNING_900 = new A.Level("WARNING", 900); B.List_empty = A._setArrayType(makeConstList([]), type$.JSArray_dynamic); - B.List_empty0 = A._setArrayType(makeConstList([]), A.findType("JSArray")); - B.Map_empty = new A.ConstantStringMap(0, {}, B.List_empty0, A.findType("ConstantStringMap")); + B.Object_empty = {}; + B.Map_empty = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap")); B.Symbol_call = new A.Symbol("call"); - B.Type_JSObject_8k0 = A.typeLiteral("JSObject"); - B.Type_Object_xQ6 = A.typeLiteral("Object"); + B.Type_ByteBuffer_rqD = A.typeLiteral("ByteBuffer"); + B.Type_ByteData_9dB = A.typeLiteral("ByteData"); + B.Type_Float32List_9Kz = A.typeLiteral("Float32List"); + B.Type_Float64List_9Kz = A.typeLiteral("Float64List"); + B.Type_Int16List_s5h = A.typeLiteral("Int16List"); + B.Type_Int32List_O8Z = A.typeLiteral("Int32List"); + B.Type_Int8List_rFV = A.typeLiteral("Int8List"); + B.Type_JSObject_ttY = A.typeLiteral("JSObject"); + B.Type_Object_A4p = A.typeLiteral("Object"); + B.Type_Uint16List_kmP = A.typeLiteral("Uint16List"); + B.Type_Uint32List_kmP = A.typeLiteral("Uint32List"); + B.Type_Uint8ClampedList_04U = A.typeLiteral("Uint8ClampedList"); + B.Type_Uint8List_8Eb = A.typeLiteral("Uint8List"); })(); (function staticFields() { $._JS_INTEROP_INTERCEPTOR_TAG = null; + $.toStringVisiting = A._setArrayType([], A.findType("JSArray")); $.Primitives__identityHashCodeProperty = null; $.BoundClosure__receiverFieldNameCache = null; $.BoundClosure__interceptorFieldNameCache = null; @@ -10434,8 +9755,10 @@ $._lastPriorityCallback = null; $._isInCallbackLoop = false; $.Zone__current = B.C__RootZone; - $._toStringVisiting = A._setArrayType([], A.findType("JSArray")); - $.participantCryptors = A._setArrayType([], A.findType("JSArray")); + $.participantCryptors = A._setArrayType([], A.findType("JSArray")); + $.keyProviders = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, A.findType("KeyProvider")); + $.LogRecord__nextNumber = 0; + $.Logger__loggers = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.Logger); })(); (function lazyInitializers() { var _lazyFinal = hunkHelpers.lazyFinal, @@ -10489,13 +9812,14 @@ _lazyFinal($, "_AsyncRun__scheduleImmediateClosure", "$get$_AsyncRun__scheduleImmediateClosure", () => A._AsyncRun__initializeScheduleImmediate()); _lazyFinal($, "_Base64Decoder__inverseAlphabet", "$get$_Base64Decoder__inverseAlphabet", () => new Int8Array(A._ensureNativeList(A._setArrayType([-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -2, -2, -2, -2, -2, 62, -2, 62, -2, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -2, -2, -2, -1, -2, -2, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -2, -2, -2, -2, 63, -2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -2, -2, -2, -2, -2], type$.JSArray_int)))); _lazy($, "_Base64Decoder__emptyBuffer", "$get$_Base64Decoder__emptyBuffer", () => A.NativeUint8List_NativeUint8List(0)); - _lazyFinal($, "_hashSeed", "$get$_hashSeed", () => A.objectHashCode(B.Type_Object_xQ6)); + _lazyFinal($, "_hashSeed", "$get$_hashSeed", () => A.objectHashCode(B.Type_Object_A4p)); _lazyFinal($, "Random__secureRandom", "$get$Random__secureRandom", () => { var t1 = new A._JSSecureRandom(A.NativeByteData_NativeByteData(8)); t1._JSSecureRandom$0(); return t1; }); - _lazy($, "keyProviderOptions", "$get$keyProviderOptions", () => A.KeyOptions$(A.NativeUint8List_NativeUint8List$fromList(new A.CodeUnits("ratchetSalt")), 16, true)); + _lazyFinal($, "logger", "$get$logger", () => A.Logger_Logger("E2EE.Worker")); + _lazyFinal($, "Logger_root", "$get$Logger_root", () => A.Logger_Logger("")); })(); (function nativeSupport() { !function() { @@ -10520,8 +9844,8 @@ } init.dispatchPropertyName = init.getIsolateTag("dispatch_record"); }(); - hunkHelpers.setOrUpdateInterceptorsByTag({WebGL: J.Interceptor, AnimationEffectReadOnly: J.JavaScriptObject, AnimationEffectTiming: J.JavaScriptObject, AnimationEffectTimingReadOnly: J.JavaScriptObject, AnimationTimeline: J.JavaScriptObject, AnimationWorkletGlobalScope: J.JavaScriptObject, AuthenticatorAssertionResponse: J.JavaScriptObject, AuthenticatorAttestationResponse: J.JavaScriptObject, AuthenticatorResponse: J.JavaScriptObject, BackgroundFetchFetch: J.JavaScriptObject, BackgroundFetchManager: J.JavaScriptObject, BackgroundFetchSettledFetch: J.JavaScriptObject, BarProp: J.JavaScriptObject, BarcodeDetector: J.JavaScriptObject, BluetoothRemoteGATTDescriptor: J.JavaScriptObject, Body: J.JavaScriptObject, BudgetState: J.JavaScriptObject, CacheStorage: J.JavaScriptObject, CanvasGradient: J.JavaScriptObject, CanvasPattern: J.JavaScriptObject, CanvasRenderingContext2D: J.JavaScriptObject, Client: J.JavaScriptObject, Clients: J.JavaScriptObject, CookieStore: J.JavaScriptObject, Coordinates: J.JavaScriptObject, Credential: J.JavaScriptObject, CredentialUserData: J.JavaScriptObject, CredentialsContainer: J.JavaScriptObject, Crypto: J.JavaScriptObject, CSS: J.JavaScriptObject, CSSVariableReferenceValue: J.JavaScriptObject, CustomElementRegistry: J.JavaScriptObject, DataTransfer: J.JavaScriptObject, DeprecatedStorageInfo: J.JavaScriptObject, DeprecatedStorageQuota: J.JavaScriptObject, DeprecationReport: J.JavaScriptObject, DetectedBarcode: J.JavaScriptObject, DetectedFace: J.JavaScriptObject, DetectedText: J.JavaScriptObject, DeviceAcceleration: J.JavaScriptObject, DeviceRotationRate: J.JavaScriptObject, DirectoryEntry: J.JavaScriptObject, webkitFileSystemDirectoryEntry: J.JavaScriptObject, FileSystemDirectoryEntry: J.JavaScriptObject, DirectoryReader: J.JavaScriptObject, WebKitDirectoryReader: J.JavaScriptObject, webkitFileSystemDirectoryReader: J.JavaScriptObject, FileSystemDirectoryReader: J.JavaScriptObject, DocumentOrShadowRoot: J.JavaScriptObject, DocumentTimeline: J.JavaScriptObject, DOMError: J.JavaScriptObject, DOMImplementation: J.JavaScriptObject, Iterator: J.JavaScriptObject, DOMMatrix: J.JavaScriptObject, DOMMatrixReadOnly: J.JavaScriptObject, DOMParser: J.JavaScriptObject, DOMPoint: J.JavaScriptObject, DOMPointReadOnly: J.JavaScriptObject, DOMQuad: J.JavaScriptObject, DOMStringMap: J.JavaScriptObject, Entry: J.JavaScriptObject, webkitFileSystemEntry: J.JavaScriptObject, FileSystemEntry: J.JavaScriptObject, External: J.JavaScriptObject, FaceDetector: J.JavaScriptObject, FederatedCredential: J.JavaScriptObject, FileEntry: J.JavaScriptObject, webkitFileSystemFileEntry: J.JavaScriptObject, FileSystemFileEntry: J.JavaScriptObject, DOMFileSystem: J.JavaScriptObject, WebKitFileSystem: J.JavaScriptObject, webkitFileSystem: J.JavaScriptObject, FileSystem: J.JavaScriptObject, FontFace: J.JavaScriptObject, FontFaceSource: J.JavaScriptObject, FormData: J.JavaScriptObject, GamepadButton: J.JavaScriptObject, GamepadPose: J.JavaScriptObject, Geolocation: J.JavaScriptObject, Position: J.JavaScriptObject, GeolocationPosition: J.JavaScriptObject, Headers: J.JavaScriptObject, HTMLHyperlinkElementUtils: J.JavaScriptObject, IdleDeadline: J.JavaScriptObject, ImageBitmap: J.JavaScriptObject, ImageBitmapRenderingContext: J.JavaScriptObject, ImageCapture: J.JavaScriptObject, InputDeviceCapabilities: J.JavaScriptObject, IntersectionObserver: J.JavaScriptObject, IntersectionObserverEntry: J.JavaScriptObject, InterventionReport: J.JavaScriptObject, KeyframeEffect: J.JavaScriptObject, KeyframeEffectReadOnly: J.JavaScriptObject, MediaCapabilities: J.JavaScriptObject, MediaCapabilitiesInfo: J.JavaScriptObject, MediaError: J.JavaScriptObject, MediaKeyStatusMap: J.JavaScriptObject, MediaKeySystemAccess: J.JavaScriptObject, MediaKeys: J.JavaScriptObject, MediaKeysPolicy: J.JavaScriptObject, MediaMetadata: J.JavaScriptObject, MediaSession: J.JavaScriptObject, MediaSettingsRange: J.JavaScriptObject, MemoryInfo: J.JavaScriptObject, MessageChannel: J.JavaScriptObject, Metadata: J.JavaScriptObject, MutationObserver: J.JavaScriptObject, WebKitMutationObserver: J.JavaScriptObject, MutationRecord: J.JavaScriptObject, NavigationPreloadManager: J.JavaScriptObject, Navigator: J.JavaScriptObject, NavigatorAutomationInformation: J.JavaScriptObject, NavigatorConcurrentHardware: J.JavaScriptObject, NavigatorCookies: J.JavaScriptObject, NavigatorUserMediaError: J.JavaScriptObject, NodeFilter: J.JavaScriptObject, NodeIterator: J.JavaScriptObject, NonDocumentTypeChildNode: J.JavaScriptObject, NonElementParentNode: J.JavaScriptObject, NoncedElement: J.JavaScriptObject, OffscreenCanvasRenderingContext2D: J.JavaScriptObject, OverconstrainedError: J.JavaScriptObject, PaintRenderingContext2D: J.JavaScriptObject, PaintSize: J.JavaScriptObject, PaintWorkletGlobalScope: J.JavaScriptObject, PasswordCredential: J.JavaScriptObject, Path2D: J.JavaScriptObject, PaymentAddress: J.JavaScriptObject, PaymentInstruments: J.JavaScriptObject, PaymentManager: J.JavaScriptObject, PaymentResponse: J.JavaScriptObject, PerformanceEntry: J.JavaScriptObject, PerformanceLongTaskTiming: J.JavaScriptObject, PerformanceMark: J.JavaScriptObject, PerformanceMeasure: J.JavaScriptObject, PerformanceNavigation: J.JavaScriptObject, PerformanceNavigationTiming: J.JavaScriptObject, PerformanceObserver: J.JavaScriptObject, PerformanceObserverEntryList: J.JavaScriptObject, PerformancePaintTiming: J.JavaScriptObject, PerformanceResourceTiming: J.JavaScriptObject, PerformanceServerTiming: J.JavaScriptObject, PerformanceTiming: J.JavaScriptObject, Permissions: J.JavaScriptObject, PhotoCapabilities: J.JavaScriptObject, PositionError: J.JavaScriptObject, GeolocationPositionError: J.JavaScriptObject, Presentation: J.JavaScriptObject, PresentationReceiver: J.JavaScriptObject, PublicKeyCredential: J.JavaScriptObject, PushManager: J.JavaScriptObject, PushMessageData: J.JavaScriptObject, PushSubscription: J.JavaScriptObject, PushSubscriptionOptions: J.JavaScriptObject, Range: J.JavaScriptObject, RelatedApplication: J.JavaScriptObject, ReportBody: J.JavaScriptObject, ReportingObserver: J.JavaScriptObject, ResizeObserver: J.JavaScriptObject, ResizeObserverEntry: J.JavaScriptObject, RTCCertificate: J.JavaScriptObject, RTCIceCandidate: J.JavaScriptObject, mozRTCIceCandidate: J.JavaScriptObject, RTCLegacyStatsReport: J.JavaScriptObject, RTCRtpContributingSource: J.JavaScriptObject, RTCRtpReceiver: J.JavaScriptObject, RTCRtpSender: J.JavaScriptObject, RTCSessionDescription: J.JavaScriptObject, mozRTCSessionDescription: J.JavaScriptObject, RTCStatsResponse: J.JavaScriptObject, Screen: J.JavaScriptObject, ScrollState: J.JavaScriptObject, ScrollTimeline: J.JavaScriptObject, Selection: J.JavaScriptObject, SpeechRecognitionAlternative: J.JavaScriptObject, SpeechSynthesisVoice: J.JavaScriptObject, StaticRange: J.JavaScriptObject, StorageManager: J.JavaScriptObject, StyleMedia: J.JavaScriptObject, StylePropertyMap: J.JavaScriptObject, StylePropertyMapReadonly: J.JavaScriptObject, SyncManager: J.JavaScriptObject, TaskAttributionTiming: J.JavaScriptObject, TextDetector: J.JavaScriptObject, TextMetrics: J.JavaScriptObject, TrackDefault: J.JavaScriptObject, TreeWalker: J.JavaScriptObject, TrustedHTML: J.JavaScriptObject, TrustedScriptURL: J.JavaScriptObject, TrustedURL: J.JavaScriptObject, UnderlyingSourceBase: J.JavaScriptObject, URLSearchParams: J.JavaScriptObject, VRCoordinateSystem: J.JavaScriptObject, VRDisplayCapabilities: J.JavaScriptObject, VREyeParameters: J.JavaScriptObject, VRFrameData: J.JavaScriptObject, VRFrameOfReference: J.JavaScriptObject, VRPose: J.JavaScriptObject, VRStageBounds: J.JavaScriptObject, VRStageBoundsPoint: J.JavaScriptObject, VRStageParameters: J.JavaScriptObject, ValidityState: J.JavaScriptObject, VideoPlaybackQuality: J.JavaScriptObject, VTTRegion: J.JavaScriptObject, WindowClient: J.JavaScriptObject, WorkletAnimation: J.JavaScriptObject, WorkletGlobalScope: J.JavaScriptObject, XPathEvaluator: J.JavaScriptObject, XPathExpression: J.JavaScriptObject, XPathNSResolver: J.JavaScriptObject, XPathResult: J.JavaScriptObject, XMLSerializer: J.JavaScriptObject, XSLTProcessor: J.JavaScriptObject, Bluetooth: J.JavaScriptObject, BluetoothCharacteristicProperties: J.JavaScriptObject, BluetoothRemoteGATTServer: J.JavaScriptObject, BluetoothRemoteGATTService: J.JavaScriptObject, BluetoothUUID: J.JavaScriptObject, BudgetService: J.JavaScriptObject, Cache: J.JavaScriptObject, DOMFileSystemSync: J.JavaScriptObject, DirectoryEntrySync: J.JavaScriptObject, DirectoryReaderSync: J.JavaScriptObject, EntrySync: J.JavaScriptObject, FileEntrySync: J.JavaScriptObject, FileReaderSync: J.JavaScriptObject, FileWriterSync: J.JavaScriptObject, HTMLAllCollection: J.JavaScriptObject, Mojo: J.JavaScriptObject, MojoHandle: J.JavaScriptObject, MojoWatcher: J.JavaScriptObject, NFC: J.JavaScriptObject, PagePopupController: J.JavaScriptObject, Report: J.JavaScriptObject, Request: J.JavaScriptObject, Response: J.JavaScriptObject, SubtleCrypto: J.JavaScriptObject, USBAlternateInterface: J.JavaScriptObject, USBConfiguration: J.JavaScriptObject, USBDevice: J.JavaScriptObject, USBEndpoint: J.JavaScriptObject, USBInTransferResult: J.JavaScriptObject, USBInterface: J.JavaScriptObject, USBIsochronousInTransferPacket: J.JavaScriptObject, USBIsochronousInTransferResult: J.JavaScriptObject, USBIsochronousOutTransferPacket: J.JavaScriptObject, USBIsochronousOutTransferResult: J.JavaScriptObject, USBOutTransferResult: J.JavaScriptObject, WorkerLocation: J.JavaScriptObject, WorkerNavigator: J.JavaScriptObject, Worklet: J.JavaScriptObject, IDBCursor: J.JavaScriptObject, IDBCursorWithValue: J.JavaScriptObject, IDBFactory: J.JavaScriptObject, IDBIndex: J.JavaScriptObject, IDBKeyRange: J.JavaScriptObject, IDBObjectStore: J.JavaScriptObject, IDBObservation: J.JavaScriptObject, IDBObserver: J.JavaScriptObject, IDBObserverChanges: J.JavaScriptObject, SVGAngle: J.JavaScriptObject, SVGAnimatedAngle: J.JavaScriptObject, SVGAnimatedBoolean: J.JavaScriptObject, SVGAnimatedEnumeration: J.JavaScriptObject, SVGAnimatedInteger: J.JavaScriptObject, SVGAnimatedLength: J.JavaScriptObject, SVGAnimatedLengthList: J.JavaScriptObject, SVGAnimatedNumber: J.JavaScriptObject, SVGAnimatedNumberList: J.JavaScriptObject, SVGAnimatedPreserveAspectRatio: J.JavaScriptObject, SVGAnimatedRect: J.JavaScriptObject, SVGAnimatedString: J.JavaScriptObject, SVGAnimatedTransformList: J.JavaScriptObject, SVGMatrix: J.JavaScriptObject, SVGPoint: J.JavaScriptObject, SVGPreserveAspectRatio: J.JavaScriptObject, SVGRect: J.JavaScriptObject, SVGUnitTypes: J.JavaScriptObject, AudioListener: J.JavaScriptObject, AudioParam: J.JavaScriptObject, AudioWorkletGlobalScope: J.JavaScriptObject, AudioWorkletProcessor: J.JavaScriptObject, PeriodicWave: J.JavaScriptObject, WebGLActiveInfo: J.JavaScriptObject, ANGLEInstancedArrays: J.JavaScriptObject, ANGLE_instanced_arrays: J.JavaScriptObject, WebGLBuffer: J.JavaScriptObject, WebGLCanvas: J.JavaScriptObject, WebGLColorBufferFloat: J.JavaScriptObject, WebGLCompressedTextureASTC: J.JavaScriptObject, WebGLCompressedTextureATC: J.JavaScriptObject, WEBGL_compressed_texture_atc: J.JavaScriptObject, WebGLCompressedTextureETC1: J.JavaScriptObject, WEBGL_compressed_texture_etc1: J.JavaScriptObject, WebGLCompressedTextureETC: J.JavaScriptObject, WebGLCompressedTexturePVRTC: J.JavaScriptObject, WEBGL_compressed_texture_pvrtc: J.JavaScriptObject, WebGLCompressedTextureS3TC: J.JavaScriptObject, WEBGL_compressed_texture_s3tc: J.JavaScriptObject, WebGLCompressedTextureS3TCsRGB: J.JavaScriptObject, WebGLDebugRendererInfo: J.JavaScriptObject, WEBGL_debug_renderer_info: J.JavaScriptObject, WebGLDebugShaders: J.JavaScriptObject, WEBGL_debug_shaders: J.JavaScriptObject, WebGLDepthTexture: J.JavaScriptObject, WEBGL_depth_texture: J.JavaScriptObject, WebGLDrawBuffers: J.JavaScriptObject, WEBGL_draw_buffers: J.JavaScriptObject, EXTsRGB: J.JavaScriptObject, EXT_sRGB: J.JavaScriptObject, EXTBlendMinMax: J.JavaScriptObject, EXT_blend_minmax: J.JavaScriptObject, EXTColorBufferFloat: J.JavaScriptObject, EXTColorBufferHalfFloat: J.JavaScriptObject, EXTDisjointTimerQuery: J.JavaScriptObject, EXTDisjointTimerQueryWebGL2: J.JavaScriptObject, EXTFragDepth: J.JavaScriptObject, EXT_frag_depth: J.JavaScriptObject, EXTShaderTextureLOD: J.JavaScriptObject, EXT_shader_texture_lod: J.JavaScriptObject, EXTTextureFilterAnisotropic: J.JavaScriptObject, EXT_texture_filter_anisotropic: J.JavaScriptObject, WebGLFramebuffer: J.JavaScriptObject, WebGLGetBufferSubDataAsync: J.JavaScriptObject, WebGLLoseContext: J.JavaScriptObject, WebGLExtensionLoseContext: J.JavaScriptObject, WEBGL_lose_context: J.JavaScriptObject, OESElementIndexUint: J.JavaScriptObject, OES_element_index_uint: J.JavaScriptObject, OESStandardDerivatives: J.JavaScriptObject, OES_standard_derivatives: J.JavaScriptObject, OESTextureFloat: J.JavaScriptObject, OES_texture_float: J.JavaScriptObject, OESTextureFloatLinear: J.JavaScriptObject, OES_texture_float_linear: J.JavaScriptObject, OESTextureHalfFloat: J.JavaScriptObject, OES_texture_half_float: J.JavaScriptObject, OESTextureHalfFloatLinear: J.JavaScriptObject, OES_texture_half_float_linear: J.JavaScriptObject, OESVertexArrayObject: J.JavaScriptObject, OES_vertex_array_object: J.JavaScriptObject, WebGLProgram: J.JavaScriptObject, WebGLQuery: J.JavaScriptObject, WebGLRenderbuffer: J.JavaScriptObject, WebGLRenderingContext: J.JavaScriptObject, WebGL2RenderingContext: J.JavaScriptObject, WebGLSampler: J.JavaScriptObject, WebGLShader: J.JavaScriptObject, WebGLShaderPrecisionFormat: J.JavaScriptObject, WebGLSync: J.JavaScriptObject, WebGLTexture: J.JavaScriptObject, WebGLTimerQueryEXT: J.JavaScriptObject, WebGLTransformFeedback: J.JavaScriptObject, WebGLUniformLocation: J.JavaScriptObject, WebGLVertexArrayObject: J.JavaScriptObject, WebGLVertexArrayObjectOES: J.JavaScriptObject, WebGL2RenderingContextBase: J.JavaScriptObject, ArrayBuffer: A.NativeByteBuffer, ArrayBufferView: A.NativeTypedData, DataView: A.NativeByteData, Float32Array: A.NativeTypedArrayOfDouble, Float64Array: A.NativeTypedArrayOfDouble, Int16Array: A.NativeInt16List, Int32Array: A.NativeInt32List, Int8Array: A.NativeInt8List, Uint16Array: A.NativeUint16List, Uint32Array: A.NativeUint32List, Uint8ClampedArray: A.NativeUint8ClampedList, CanvasPixelArray: A.NativeUint8ClampedList, Uint8Array: A.NativeUint8List, HTMLAudioElement: A.HtmlElement, HTMLBRElement: A.HtmlElement, HTMLBaseElement: A.HtmlElement, HTMLBodyElement: A.HtmlElement, HTMLButtonElement: A.HtmlElement, HTMLCanvasElement: A.HtmlElement, HTMLContentElement: A.HtmlElement, HTMLDListElement: A.HtmlElement, HTMLDataElement: A.HtmlElement, HTMLDataListElement: A.HtmlElement, HTMLDetailsElement: A.HtmlElement, HTMLDialogElement: A.HtmlElement, HTMLDivElement: A.HtmlElement, HTMLEmbedElement: A.HtmlElement, HTMLFieldSetElement: A.HtmlElement, HTMLHRElement: A.HtmlElement, HTMLHeadElement: A.HtmlElement, HTMLHeadingElement: A.HtmlElement, HTMLHtmlElement: A.HtmlElement, HTMLIFrameElement: A.HtmlElement, HTMLImageElement: A.HtmlElement, HTMLInputElement: A.HtmlElement, HTMLLIElement: A.HtmlElement, HTMLLabelElement: A.HtmlElement, HTMLLegendElement: A.HtmlElement, HTMLLinkElement: A.HtmlElement, HTMLMapElement: A.HtmlElement, HTMLMediaElement: A.HtmlElement, HTMLMenuElement: A.HtmlElement, HTMLMetaElement: A.HtmlElement, HTMLMeterElement: A.HtmlElement, HTMLModElement: A.HtmlElement, HTMLOListElement: A.HtmlElement, HTMLObjectElement: A.HtmlElement, HTMLOptGroupElement: A.HtmlElement, HTMLOptionElement: A.HtmlElement, HTMLOutputElement: A.HtmlElement, HTMLParagraphElement: A.HtmlElement, HTMLParamElement: A.HtmlElement, HTMLPictureElement: A.HtmlElement, HTMLPreElement: A.HtmlElement, HTMLProgressElement: A.HtmlElement, HTMLQuoteElement: A.HtmlElement, HTMLScriptElement: A.HtmlElement, HTMLShadowElement: A.HtmlElement, HTMLSlotElement: A.HtmlElement, HTMLSourceElement: A.HtmlElement, HTMLSpanElement: A.HtmlElement, HTMLStyleElement: A.HtmlElement, HTMLTableCaptionElement: A.HtmlElement, HTMLTableCellElement: A.HtmlElement, HTMLTableDataCellElement: A.HtmlElement, HTMLTableHeaderCellElement: A.HtmlElement, HTMLTableColElement: A.HtmlElement, HTMLTableElement: A.HtmlElement, HTMLTableRowElement: A.HtmlElement, HTMLTableSectionElement: A.HtmlElement, HTMLTemplateElement: A.HtmlElement, HTMLTextAreaElement: A.HtmlElement, HTMLTimeElement: A.HtmlElement, HTMLTitleElement: A.HtmlElement, HTMLUListElement: A.HtmlElement, HTMLUnknownElement: A.HtmlElement, HTMLVideoElement: A.HtmlElement, HTMLDirectoryElement: A.HtmlElement, HTMLFontElement: A.HtmlElement, HTMLFrameElement: A.HtmlElement, HTMLFrameSetElement: A.HtmlElement, HTMLMarqueeElement: A.HtmlElement, HTMLElement: A.HtmlElement, AccessibleNodeList: A.AccessibleNodeList, HTMLAnchorElement: A.AnchorElement, HTMLAreaElement: A.AreaElement, Blob: A.Blob, CDATASection: A.CharacterData, CharacterData: A.CharacterData, Comment: A.CharacterData, ProcessingInstruction: A.CharacterData, Text: A.CharacterData, CryptoKey: A.CryptoKey, CSSPerspective: A.CssPerspective, CSSCharsetRule: A.CssRule, CSSConditionRule: A.CssRule, CSSFontFaceRule: A.CssRule, CSSGroupingRule: A.CssRule, CSSImportRule: A.CssRule, CSSKeyframeRule: A.CssRule, MozCSSKeyframeRule: A.CssRule, WebKitCSSKeyframeRule: A.CssRule, CSSKeyframesRule: A.CssRule, MozCSSKeyframesRule: A.CssRule, WebKitCSSKeyframesRule: A.CssRule, CSSMediaRule: A.CssRule, CSSNamespaceRule: A.CssRule, CSSPageRule: A.CssRule, CSSRule: A.CssRule, CSSStyleRule: A.CssRule, CSSSupportsRule: A.CssRule, CSSViewportRule: A.CssRule, CSSStyleDeclaration: A.CssStyleDeclaration, MSStyleCSSProperties: A.CssStyleDeclaration, CSS2Properties: A.CssStyleDeclaration, CSSImageValue: A.CssStyleValue, CSSKeywordValue: A.CssStyleValue, CSSNumericValue: A.CssStyleValue, CSSPositionValue: A.CssStyleValue, CSSResourceValue: A.CssStyleValue, CSSUnitValue: A.CssStyleValue, CSSURLImageValue: A.CssStyleValue, CSSStyleValue: A.CssStyleValue, CSSMatrixComponent: A.CssTransformComponent, CSSRotation: A.CssTransformComponent, CSSScale: A.CssTransformComponent, CSSSkew: A.CssTransformComponent, CSSTranslation: A.CssTransformComponent, CSSTransformComponent: A.CssTransformComponent, CSSTransformValue: A.CssTransformValue, CSSUnparsedValue: A.CssUnparsedValue, DataTransferItem: A.DataTransferItem, DataTransferItemList: A.DataTransferItemList, DedicatedWorkerGlobalScope: A.DedicatedWorkerGlobalScope, DOMException: A.DomException, ClientRectList: A.DomRectList, DOMRectList: A.DomRectList, DOMRectReadOnly: A.DomRectReadOnly, DOMStringList: A.DomStringList, DOMTokenList: A.DomTokenList, MathMLElement: A.Element, SVGAElement: A.Element, SVGAnimateElement: A.Element, SVGAnimateMotionElement: A.Element, SVGAnimateTransformElement: A.Element, SVGAnimationElement: A.Element, SVGCircleElement: A.Element, SVGClipPathElement: A.Element, SVGDefsElement: A.Element, SVGDescElement: A.Element, SVGDiscardElement: A.Element, SVGEllipseElement: A.Element, SVGFEBlendElement: A.Element, SVGFEColorMatrixElement: A.Element, SVGFEComponentTransferElement: A.Element, SVGFECompositeElement: A.Element, SVGFEConvolveMatrixElement: A.Element, SVGFEDiffuseLightingElement: A.Element, SVGFEDisplacementMapElement: A.Element, SVGFEDistantLightElement: A.Element, SVGFEFloodElement: A.Element, SVGFEFuncAElement: A.Element, SVGFEFuncBElement: A.Element, SVGFEFuncGElement: A.Element, SVGFEFuncRElement: A.Element, SVGFEGaussianBlurElement: A.Element, SVGFEImageElement: A.Element, SVGFEMergeElement: A.Element, SVGFEMergeNodeElement: A.Element, SVGFEMorphologyElement: A.Element, SVGFEOffsetElement: A.Element, SVGFEPointLightElement: A.Element, SVGFESpecularLightingElement: A.Element, SVGFESpotLightElement: A.Element, SVGFETileElement: A.Element, SVGFETurbulenceElement: A.Element, SVGFilterElement: A.Element, SVGForeignObjectElement: A.Element, SVGGElement: A.Element, SVGGeometryElement: A.Element, SVGGraphicsElement: A.Element, SVGImageElement: A.Element, SVGLineElement: A.Element, SVGLinearGradientElement: A.Element, SVGMarkerElement: A.Element, SVGMaskElement: A.Element, SVGMetadataElement: A.Element, SVGPathElement: A.Element, SVGPatternElement: A.Element, SVGPolygonElement: A.Element, SVGPolylineElement: A.Element, SVGRadialGradientElement: A.Element, SVGRectElement: A.Element, SVGScriptElement: A.Element, SVGSetElement: A.Element, SVGStopElement: A.Element, SVGStyleElement: A.Element, SVGElement: A.Element, SVGSVGElement: A.Element, SVGSwitchElement: A.Element, SVGSymbolElement: A.Element, SVGTSpanElement: A.Element, SVGTextContentElement: A.Element, SVGTextElement: A.Element, SVGTextPathElement: A.Element, SVGTextPositioningElement: A.Element, SVGTitleElement: A.Element, SVGUseElement: A.Element, SVGViewElement: A.Element, SVGGradientElement: A.Element, SVGComponentTransferFunctionElement: A.Element, SVGFEDropShadowElement: A.Element, SVGMPathElement: A.Element, Element: A.Element, AbortPaymentEvent: A.Event, AnimationEvent: A.Event, AnimationPlaybackEvent: A.Event, ApplicationCacheErrorEvent: A.Event, BackgroundFetchClickEvent: A.Event, BackgroundFetchEvent: A.Event, BackgroundFetchFailEvent: A.Event, BackgroundFetchedEvent: A.Event, BeforeInstallPromptEvent: A.Event, BeforeUnloadEvent: A.Event, BlobEvent: A.Event, CanMakePaymentEvent: A.Event, ClipboardEvent: A.Event, CloseEvent: A.Event, CompositionEvent: A.Event, CustomEvent: A.Event, DeviceMotionEvent: A.Event, DeviceOrientationEvent: A.Event, ErrorEvent: A.Event, ExtendableEvent: A.Event, ExtendableMessageEvent: A.Event, FetchEvent: A.Event, FocusEvent: A.Event, FontFaceSetLoadEvent: A.Event, ForeignFetchEvent: A.Event, GamepadEvent: A.Event, HashChangeEvent: A.Event, InstallEvent: A.Event, KeyboardEvent: A.Event, MediaEncryptedEvent: A.Event, MediaKeyMessageEvent: A.Event, MediaQueryListEvent: A.Event, MediaStreamEvent: A.Event, MediaStreamTrackEvent: A.Event, MIDIConnectionEvent: A.Event, MIDIMessageEvent: A.Event, MouseEvent: A.Event, DragEvent: A.Event, MutationEvent: A.Event, NotificationEvent: A.Event, PageTransitionEvent: A.Event, PaymentRequestEvent: A.Event, PaymentRequestUpdateEvent: A.Event, PointerEvent: A.Event, PopStateEvent: A.Event, PresentationConnectionAvailableEvent: A.Event, PresentationConnectionCloseEvent: A.Event, ProgressEvent: A.Event, PromiseRejectionEvent: A.Event, PushEvent: A.Event, RTCDataChannelEvent: A.Event, RTCDTMFToneChangeEvent: A.Event, RTCPeerConnectionIceEvent: A.Event, RTCTrackEvent: A.Event, SecurityPolicyViolationEvent: A.Event, SensorErrorEvent: A.Event, SpeechRecognitionError: A.Event, SpeechRecognitionEvent: A.Event, SpeechSynthesisEvent: A.Event, StorageEvent: A.Event, SyncEvent: A.Event, TextEvent: A.Event, TouchEvent: A.Event, TrackEvent: A.Event, TransitionEvent: A.Event, WebKitTransitionEvent: A.Event, UIEvent: A.Event, VRDeviceEvent: A.Event, VRDisplayEvent: A.Event, VRSessionEvent: A.Event, WheelEvent: A.Event, MojoInterfaceRequestEvent: A.Event, ResourceProgressEvent: A.Event, USBConnectionEvent: A.Event, IDBVersionChangeEvent: A.Event, AudioProcessingEvent: A.Event, OfflineAudioCompletionEvent: A.Event, WebGLContextEvent: A.Event, Event: A.Event, InputEvent: A.Event, SubmitEvent: A.Event, AbsoluteOrientationSensor: A.EventTarget, Accelerometer: A.EventTarget, AccessibleNode: A.EventTarget, AmbientLightSensor: A.EventTarget, Animation: A.EventTarget, ApplicationCache: A.EventTarget, DOMApplicationCache: A.EventTarget, OfflineResourceList: A.EventTarget, BackgroundFetchRegistration: A.EventTarget, BatteryManager: A.EventTarget, BroadcastChannel: A.EventTarget, EventSource: A.EventTarget, FileReader: A.EventTarget, FontFaceSet: A.EventTarget, Gyroscope: A.EventTarget, XMLHttpRequest: A.EventTarget, XMLHttpRequestEventTarget: A.EventTarget, XMLHttpRequestUpload: A.EventTarget, LinearAccelerationSensor: A.EventTarget, Magnetometer: A.EventTarget, MediaDevices: A.EventTarget, MediaKeySession: A.EventTarget, MediaQueryList: A.EventTarget, MediaRecorder: A.EventTarget, MediaSource: A.EventTarget, MediaStream: A.EventTarget, MIDIAccess: A.EventTarget, MIDIInput: A.EventTarget, MIDIOutput: A.EventTarget, MIDIPort: A.EventTarget, NetworkInformation: A.EventTarget, Notification: A.EventTarget, OffscreenCanvas: A.EventTarget, OrientationSensor: A.EventTarget, PaymentRequest: A.EventTarget, Performance: A.EventTarget, PermissionStatus: A.EventTarget, PresentationAvailability: A.EventTarget, PresentationConnection: A.EventTarget, PresentationConnectionList: A.EventTarget, PresentationRequest: A.EventTarget, RelativeOrientationSensor: A.EventTarget, RemotePlayback: A.EventTarget, RTCDataChannel: A.EventTarget, DataChannel: A.EventTarget, RTCDTMFSender: A.EventTarget, RTCPeerConnection: A.EventTarget, webkitRTCPeerConnection: A.EventTarget, mozRTCPeerConnection: A.EventTarget, ScreenOrientation: A.EventTarget, Sensor: A.EventTarget, ServiceWorker: A.EventTarget, ServiceWorkerContainer: A.EventTarget, ServiceWorkerRegistration: A.EventTarget, SharedWorker: A.EventTarget, SpeechRecognition: A.EventTarget, SpeechSynthesis: A.EventTarget, SpeechSynthesisUtterance: A.EventTarget, VR: A.EventTarget, VRDevice: A.EventTarget, VRDisplay: A.EventTarget, VRSession: A.EventTarget, VisualViewport: A.EventTarget, WebSocket: A.EventTarget, Window: A.EventTarget, DOMWindow: A.EventTarget, Worker: A.EventTarget, WorkerPerformance: A.EventTarget, BluetoothDevice: A.EventTarget, BluetoothRemoteGATTCharacteristic: A.EventTarget, Clipboard: A.EventTarget, MojoInterfaceInterceptor: A.EventTarget, USB: A.EventTarget, IDBDatabase: A.EventTarget, IDBOpenDBRequest: A.EventTarget, IDBVersionChangeRequest: A.EventTarget, IDBRequest: A.EventTarget, IDBTransaction: A.EventTarget, AnalyserNode: A.EventTarget, RealtimeAnalyserNode: A.EventTarget, AudioBufferSourceNode: A.EventTarget, AudioDestinationNode: A.EventTarget, AudioNode: A.EventTarget, AudioScheduledSourceNode: A.EventTarget, AudioWorkletNode: A.EventTarget, BiquadFilterNode: A.EventTarget, ChannelMergerNode: A.EventTarget, AudioChannelMerger: A.EventTarget, ChannelSplitterNode: A.EventTarget, AudioChannelSplitter: A.EventTarget, ConstantSourceNode: A.EventTarget, ConvolverNode: A.EventTarget, DelayNode: A.EventTarget, DynamicsCompressorNode: A.EventTarget, GainNode: A.EventTarget, AudioGainNode: A.EventTarget, IIRFilterNode: A.EventTarget, MediaElementAudioSourceNode: A.EventTarget, MediaStreamAudioDestinationNode: A.EventTarget, MediaStreamAudioSourceNode: A.EventTarget, OscillatorNode: A.EventTarget, Oscillator: A.EventTarget, PannerNode: A.EventTarget, AudioPannerNode: A.EventTarget, webkitAudioPannerNode: A.EventTarget, ScriptProcessorNode: A.EventTarget, JavaScriptAudioNode: A.EventTarget, StereoPannerNode: A.EventTarget, WaveShaperNode: A.EventTarget, EventTarget: A.EventTarget, File: A.File, FileList: A.FileList, FileWriter: A.FileWriter, HTMLFormElement: A.FormElement, Gamepad: A.Gamepad, History: A.History, HTMLCollection: A.HtmlCollection, HTMLFormControlsCollection: A.HtmlCollection, HTMLOptionsCollection: A.HtmlCollection, ImageData: A.ImageData, Location: A.Location, MediaDeviceInfo: A.MediaDeviceInfo, MediaList: A.MediaList, CanvasCaptureMediaStreamTrack: A.MediaStreamTrack, MediaStreamTrack: A.MediaStreamTrack, MessageEvent: A.MessageEvent, MessagePort: A.MessagePort, MIDIInputMap: A.MidiInputMap, MIDIOutputMap: A.MidiOutputMap, MimeType: A.MimeType, MimeTypeArray: A.MimeTypeArray, Document: A.Node, DocumentFragment: A.Node, HTMLDocument: A.Node, ShadowRoot: A.Node, XMLDocument: A.Node, Attr: A.Node, DocumentType: A.Node, Node: A.Node, NodeList: A.NodeList, RadioNodeList: A.NodeList, Plugin: A.Plugin, PluginArray: A.PluginArray, RTCStatsReport: A.RtcStatsReport, HTMLSelectElement: A.SelectElement, SharedArrayBuffer: A.SharedArrayBuffer, SourceBuffer: A.SourceBuffer, SourceBufferList: A.SourceBufferList, SpeechGrammar: A.SpeechGrammar, SpeechGrammarList: A.SpeechGrammarList, SpeechRecognitionResult: A.SpeechRecognitionResult, Storage: A.Storage, CSSStyleSheet: A.StyleSheet, StyleSheet: A.StyleSheet, TextTrack: A.TextTrack, TextTrackCue: A.TextTrackCue, VTTCue: A.TextTrackCue, TextTrackCueList: A.TextTrackCueList, TextTrackList: A.TextTrackList, TimeRanges: A.TimeRanges, Touch: A.Touch, TouchList: A.TouchList, TrackDefaultList: A.TrackDefaultList, HTMLTrackElement: A.TrackElement, URL: A.Url, VideoTrack: A.VideoTrack, VideoTrackList: A.VideoTrackList, ServiceWorkerGlobalScope: A.WorkerGlobalScope, SharedWorkerGlobalScope: A.WorkerGlobalScope, WorkerGlobalScope: A.WorkerGlobalScope, CSSRuleList: A._CssRuleList, ClientRect: A._DomRect, DOMRect: A._DomRect, GamepadList: A._GamepadList, NamedNodeMap: A._NamedNodeMap, MozNamedAttrMap: A._NamedNodeMap, SpeechRecognitionResultList: A._SpeechRecognitionResultList, StyleSheetList: A._StyleSheetList, SVGLength: A.Length, SVGLengthList: A.LengthList, SVGNumber: A.Number, SVGNumberList: A.NumberList, SVGPointList: A.PointList, SVGStringList: A.StringList, SVGTransform: A.Transform, SVGTransformList: A.TransformList, AudioBuffer: A.AudioBuffer, AudioParamMap: A.AudioParamMap, AudioTrack: A.AudioTrack, AudioTrackList: A.AudioTrackList, AudioContext: A.BaseAudioContext, webkitAudioContext: A.BaseAudioContext, BaseAudioContext: A.BaseAudioContext, OfflineAudioContext: A.OfflineAudioContext}); - hunkHelpers.setOrUpdateLeafTags({WebGL: true, AnimationEffectReadOnly: true, AnimationEffectTiming: true, AnimationEffectTimingReadOnly: true, AnimationTimeline: true, AnimationWorkletGlobalScope: true, AuthenticatorAssertionResponse: true, AuthenticatorAttestationResponse: true, AuthenticatorResponse: true, BackgroundFetchFetch: true, BackgroundFetchManager: true, BackgroundFetchSettledFetch: true, BarProp: true, BarcodeDetector: true, BluetoothRemoteGATTDescriptor: true, Body: true, BudgetState: true, CacheStorage: true, CanvasGradient: true, CanvasPattern: true, CanvasRenderingContext2D: true, Client: true, Clients: true, CookieStore: true, Coordinates: true, Credential: true, CredentialUserData: true, CredentialsContainer: true, Crypto: true, CSS: true, CSSVariableReferenceValue: true, CustomElementRegistry: true, DataTransfer: true, DeprecatedStorageInfo: true, DeprecatedStorageQuota: true, DeprecationReport: true, DetectedBarcode: true, DetectedFace: true, DetectedText: true, DeviceAcceleration: true, DeviceRotationRate: true, DirectoryEntry: true, webkitFileSystemDirectoryEntry: true, FileSystemDirectoryEntry: true, DirectoryReader: true, WebKitDirectoryReader: true, webkitFileSystemDirectoryReader: true, FileSystemDirectoryReader: true, DocumentOrShadowRoot: true, DocumentTimeline: true, DOMError: true, DOMImplementation: true, Iterator: true, DOMMatrix: true, DOMMatrixReadOnly: true, DOMParser: true, DOMPoint: true, DOMPointReadOnly: true, DOMQuad: true, DOMStringMap: true, Entry: true, webkitFileSystemEntry: true, FileSystemEntry: true, External: true, FaceDetector: true, FederatedCredential: true, FileEntry: true, webkitFileSystemFileEntry: true, FileSystemFileEntry: true, DOMFileSystem: true, WebKitFileSystem: true, webkitFileSystem: true, FileSystem: true, FontFace: true, FontFaceSource: true, FormData: true, GamepadButton: true, GamepadPose: true, Geolocation: true, Position: true, GeolocationPosition: true, Headers: true, HTMLHyperlinkElementUtils: true, IdleDeadline: true, ImageBitmap: true, ImageBitmapRenderingContext: true, ImageCapture: true, InputDeviceCapabilities: true, IntersectionObserver: true, IntersectionObserverEntry: true, InterventionReport: true, KeyframeEffect: true, KeyframeEffectReadOnly: true, MediaCapabilities: true, MediaCapabilitiesInfo: true, MediaError: true, MediaKeyStatusMap: true, MediaKeySystemAccess: true, MediaKeys: true, MediaKeysPolicy: true, MediaMetadata: true, MediaSession: true, MediaSettingsRange: true, MemoryInfo: true, MessageChannel: true, Metadata: true, MutationObserver: true, WebKitMutationObserver: true, MutationRecord: true, NavigationPreloadManager: true, Navigator: true, NavigatorAutomationInformation: true, NavigatorConcurrentHardware: true, NavigatorCookies: true, NavigatorUserMediaError: true, NodeFilter: true, NodeIterator: true, NonDocumentTypeChildNode: true, NonElementParentNode: true, NoncedElement: true, OffscreenCanvasRenderingContext2D: true, OverconstrainedError: true, PaintRenderingContext2D: true, PaintSize: true, PaintWorkletGlobalScope: true, PasswordCredential: true, Path2D: true, PaymentAddress: true, PaymentInstruments: true, PaymentManager: true, PaymentResponse: true, PerformanceEntry: true, PerformanceLongTaskTiming: true, PerformanceMark: true, PerformanceMeasure: true, PerformanceNavigation: true, PerformanceNavigationTiming: true, PerformanceObserver: true, PerformanceObserverEntryList: true, PerformancePaintTiming: true, PerformanceResourceTiming: true, PerformanceServerTiming: true, PerformanceTiming: true, Permissions: true, PhotoCapabilities: true, PositionError: true, GeolocationPositionError: true, Presentation: true, PresentationReceiver: true, PublicKeyCredential: true, PushManager: true, PushMessageData: true, PushSubscription: true, PushSubscriptionOptions: true, Range: true, RelatedApplication: true, ReportBody: true, ReportingObserver: true, ResizeObserver: true, ResizeObserverEntry: true, RTCCertificate: true, RTCIceCandidate: true, mozRTCIceCandidate: true, RTCLegacyStatsReport: true, RTCRtpContributingSource: true, RTCRtpReceiver: true, RTCRtpSender: true, RTCSessionDescription: true, mozRTCSessionDescription: true, RTCStatsResponse: true, Screen: true, ScrollState: true, ScrollTimeline: true, Selection: true, SpeechRecognitionAlternative: true, SpeechSynthesisVoice: true, StaticRange: true, StorageManager: true, StyleMedia: true, StylePropertyMap: true, StylePropertyMapReadonly: true, SyncManager: true, TaskAttributionTiming: true, TextDetector: true, TextMetrics: true, TrackDefault: true, TreeWalker: true, TrustedHTML: true, TrustedScriptURL: true, TrustedURL: true, UnderlyingSourceBase: true, URLSearchParams: true, VRCoordinateSystem: true, VRDisplayCapabilities: true, VREyeParameters: true, VRFrameData: true, VRFrameOfReference: true, VRPose: true, VRStageBounds: true, VRStageBoundsPoint: true, VRStageParameters: true, ValidityState: true, VideoPlaybackQuality: true, VTTRegion: true, WindowClient: true, WorkletAnimation: true, WorkletGlobalScope: true, XPathEvaluator: true, XPathExpression: true, XPathNSResolver: true, XPathResult: true, XMLSerializer: true, XSLTProcessor: true, Bluetooth: true, BluetoothCharacteristicProperties: true, BluetoothRemoteGATTServer: true, BluetoothRemoteGATTService: true, BluetoothUUID: true, BudgetService: true, Cache: true, DOMFileSystemSync: true, DirectoryEntrySync: true, DirectoryReaderSync: true, EntrySync: true, FileEntrySync: true, FileReaderSync: true, FileWriterSync: true, HTMLAllCollection: true, Mojo: true, MojoHandle: true, MojoWatcher: true, NFC: true, PagePopupController: true, Report: true, Request: true, Response: true, SubtleCrypto: true, USBAlternateInterface: true, USBConfiguration: true, USBDevice: true, USBEndpoint: true, USBInTransferResult: true, USBInterface: true, USBIsochronousInTransferPacket: true, USBIsochronousInTransferResult: true, USBIsochronousOutTransferPacket: true, USBIsochronousOutTransferResult: true, USBOutTransferResult: true, WorkerLocation: true, WorkerNavigator: true, Worklet: true, IDBCursor: true, IDBCursorWithValue: true, IDBFactory: true, IDBIndex: true, IDBKeyRange: true, IDBObjectStore: true, IDBObservation: true, IDBObserver: true, IDBObserverChanges: true, SVGAngle: true, SVGAnimatedAngle: true, SVGAnimatedBoolean: true, SVGAnimatedEnumeration: true, SVGAnimatedInteger: true, SVGAnimatedLength: true, SVGAnimatedLengthList: true, SVGAnimatedNumber: true, SVGAnimatedNumberList: true, SVGAnimatedPreserveAspectRatio: true, SVGAnimatedRect: true, SVGAnimatedString: true, SVGAnimatedTransformList: true, SVGMatrix: true, SVGPoint: true, SVGPreserveAspectRatio: true, SVGRect: true, SVGUnitTypes: true, AudioListener: true, AudioParam: true, AudioWorkletGlobalScope: true, AudioWorkletProcessor: true, PeriodicWave: true, WebGLActiveInfo: true, ANGLEInstancedArrays: true, ANGLE_instanced_arrays: true, WebGLBuffer: true, WebGLCanvas: true, WebGLColorBufferFloat: true, WebGLCompressedTextureASTC: true, WebGLCompressedTextureATC: true, WEBGL_compressed_texture_atc: true, WebGLCompressedTextureETC1: true, WEBGL_compressed_texture_etc1: true, WebGLCompressedTextureETC: true, WebGLCompressedTexturePVRTC: true, WEBGL_compressed_texture_pvrtc: true, WebGLCompressedTextureS3TC: true, WEBGL_compressed_texture_s3tc: true, WebGLCompressedTextureS3TCsRGB: true, WebGLDebugRendererInfo: true, WEBGL_debug_renderer_info: true, WebGLDebugShaders: true, WEBGL_debug_shaders: true, WebGLDepthTexture: true, WEBGL_depth_texture: true, WebGLDrawBuffers: true, WEBGL_draw_buffers: true, EXTsRGB: true, EXT_sRGB: true, EXTBlendMinMax: true, EXT_blend_minmax: true, EXTColorBufferFloat: true, EXTColorBufferHalfFloat: true, EXTDisjointTimerQuery: true, EXTDisjointTimerQueryWebGL2: true, EXTFragDepth: true, EXT_frag_depth: true, EXTShaderTextureLOD: true, EXT_shader_texture_lod: true, EXTTextureFilterAnisotropic: true, EXT_texture_filter_anisotropic: true, WebGLFramebuffer: true, WebGLGetBufferSubDataAsync: true, WebGLLoseContext: true, WebGLExtensionLoseContext: true, WEBGL_lose_context: true, OESElementIndexUint: true, OES_element_index_uint: true, OESStandardDerivatives: true, OES_standard_derivatives: true, OESTextureFloat: true, OES_texture_float: true, OESTextureFloatLinear: true, OES_texture_float_linear: true, OESTextureHalfFloat: true, OES_texture_half_float: true, OESTextureHalfFloatLinear: true, OES_texture_half_float_linear: true, OESVertexArrayObject: true, OES_vertex_array_object: true, WebGLProgram: true, WebGLQuery: true, WebGLRenderbuffer: true, WebGLRenderingContext: true, WebGL2RenderingContext: true, WebGLSampler: true, WebGLShader: true, WebGLShaderPrecisionFormat: true, WebGLSync: true, WebGLTexture: true, WebGLTimerQueryEXT: true, WebGLTransformFeedback: true, WebGLUniformLocation: true, WebGLVertexArrayObject: true, WebGLVertexArrayObjectOES: true, WebGL2RenderingContextBase: true, ArrayBuffer: true, ArrayBufferView: false, DataView: true, Float32Array: true, Float64Array: true, Int16Array: true, Int32Array: true, Int8Array: true, Uint16Array: true, Uint32Array: true, Uint8ClampedArray: true, CanvasPixelArray: true, Uint8Array: false, HTMLAudioElement: true, HTMLBRElement: true, HTMLBaseElement: true, HTMLBodyElement: true, HTMLButtonElement: true, HTMLCanvasElement: true, HTMLContentElement: true, HTMLDListElement: true, HTMLDataElement: true, HTMLDataListElement: true, HTMLDetailsElement: true, HTMLDialogElement: true, HTMLDivElement: true, HTMLEmbedElement: true, HTMLFieldSetElement: true, HTMLHRElement: true, HTMLHeadElement: true, HTMLHeadingElement: true, HTMLHtmlElement: true, HTMLIFrameElement: true, HTMLImageElement: true, HTMLInputElement: true, HTMLLIElement: true, HTMLLabelElement: true, HTMLLegendElement: true, HTMLLinkElement: true, HTMLMapElement: true, HTMLMediaElement: true, HTMLMenuElement: true, HTMLMetaElement: true, HTMLMeterElement: true, HTMLModElement: true, HTMLOListElement: true, HTMLObjectElement: true, HTMLOptGroupElement: true, HTMLOptionElement: true, HTMLOutputElement: true, HTMLParagraphElement: true, HTMLParamElement: true, HTMLPictureElement: true, HTMLPreElement: true, HTMLProgressElement: true, HTMLQuoteElement: true, HTMLScriptElement: true, HTMLShadowElement: true, HTMLSlotElement: true, HTMLSourceElement: true, HTMLSpanElement: true, HTMLStyleElement: true, HTMLTableCaptionElement: true, HTMLTableCellElement: true, HTMLTableDataCellElement: true, HTMLTableHeaderCellElement: true, HTMLTableColElement: true, HTMLTableElement: true, HTMLTableRowElement: true, HTMLTableSectionElement: true, HTMLTemplateElement: true, HTMLTextAreaElement: true, HTMLTimeElement: true, HTMLTitleElement: true, HTMLUListElement: true, HTMLUnknownElement: true, HTMLVideoElement: true, HTMLDirectoryElement: true, HTMLFontElement: true, HTMLFrameElement: true, HTMLFrameSetElement: true, HTMLMarqueeElement: true, HTMLElement: false, AccessibleNodeList: true, HTMLAnchorElement: true, HTMLAreaElement: true, Blob: false, CDATASection: true, CharacterData: true, Comment: true, ProcessingInstruction: true, Text: true, CryptoKey: true, CSSPerspective: true, CSSCharsetRule: true, CSSConditionRule: true, CSSFontFaceRule: true, CSSGroupingRule: true, CSSImportRule: true, CSSKeyframeRule: true, MozCSSKeyframeRule: true, WebKitCSSKeyframeRule: true, CSSKeyframesRule: true, MozCSSKeyframesRule: true, WebKitCSSKeyframesRule: true, CSSMediaRule: true, CSSNamespaceRule: true, CSSPageRule: true, CSSRule: true, CSSStyleRule: true, CSSSupportsRule: true, CSSViewportRule: true, CSSStyleDeclaration: true, MSStyleCSSProperties: true, CSS2Properties: true, CSSImageValue: true, CSSKeywordValue: true, CSSNumericValue: true, CSSPositionValue: true, CSSResourceValue: true, CSSUnitValue: true, CSSURLImageValue: true, CSSStyleValue: false, CSSMatrixComponent: true, CSSRotation: true, CSSScale: true, CSSSkew: true, CSSTranslation: true, CSSTransformComponent: false, CSSTransformValue: true, CSSUnparsedValue: true, DataTransferItem: true, DataTransferItemList: true, DedicatedWorkerGlobalScope: true, DOMException: true, ClientRectList: true, DOMRectList: true, DOMRectReadOnly: false, DOMStringList: true, DOMTokenList: true, MathMLElement: true, SVGAElement: true, SVGAnimateElement: true, SVGAnimateMotionElement: true, SVGAnimateTransformElement: true, SVGAnimationElement: true, SVGCircleElement: true, SVGClipPathElement: true, SVGDefsElement: true, SVGDescElement: true, SVGDiscardElement: true, SVGEllipseElement: true, SVGFEBlendElement: true, SVGFEColorMatrixElement: true, SVGFEComponentTransferElement: true, SVGFECompositeElement: true, SVGFEConvolveMatrixElement: true, SVGFEDiffuseLightingElement: true, SVGFEDisplacementMapElement: true, SVGFEDistantLightElement: true, SVGFEFloodElement: true, SVGFEFuncAElement: true, SVGFEFuncBElement: true, SVGFEFuncGElement: true, SVGFEFuncRElement: true, SVGFEGaussianBlurElement: true, SVGFEImageElement: true, SVGFEMergeElement: true, SVGFEMergeNodeElement: true, SVGFEMorphologyElement: true, SVGFEOffsetElement: true, SVGFEPointLightElement: true, SVGFESpecularLightingElement: true, SVGFESpotLightElement: true, SVGFETileElement: true, SVGFETurbulenceElement: true, SVGFilterElement: true, SVGForeignObjectElement: true, SVGGElement: true, SVGGeometryElement: true, SVGGraphicsElement: true, SVGImageElement: true, SVGLineElement: true, SVGLinearGradientElement: true, SVGMarkerElement: true, SVGMaskElement: true, SVGMetadataElement: true, SVGPathElement: true, SVGPatternElement: true, SVGPolygonElement: true, SVGPolylineElement: true, SVGRadialGradientElement: true, SVGRectElement: true, SVGScriptElement: true, SVGSetElement: true, SVGStopElement: true, SVGStyleElement: true, SVGElement: true, SVGSVGElement: true, SVGSwitchElement: true, SVGSymbolElement: true, SVGTSpanElement: true, SVGTextContentElement: true, SVGTextElement: true, SVGTextPathElement: true, SVGTextPositioningElement: true, SVGTitleElement: true, SVGUseElement: true, SVGViewElement: true, SVGGradientElement: true, SVGComponentTransferFunctionElement: true, SVGFEDropShadowElement: true, SVGMPathElement: true, Element: false, AbortPaymentEvent: true, AnimationEvent: true, AnimationPlaybackEvent: true, ApplicationCacheErrorEvent: true, BackgroundFetchClickEvent: true, BackgroundFetchEvent: true, BackgroundFetchFailEvent: true, BackgroundFetchedEvent: true, BeforeInstallPromptEvent: true, BeforeUnloadEvent: true, BlobEvent: true, CanMakePaymentEvent: true, ClipboardEvent: true, CloseEvent: true, CompositionEvent: true, CustomEvent: true, DeviceMotionEvent: true, DeviceOrientationEvent: true, ErrorEvent: true, ExtendableEvent: true, ExtendableMessageEvent: true, FetchEvent: true, FocusEvent: true, FontFaceSetLoadEvent: true, ForeignFetchEvent: true, GamepadEvent: true, HashChangeEvent: true, InstallEvent: true, KeyboardEvent: true, MediaEncryptedEvent: true, MediaKeyMessageEvent: true, MediaQueryListEvent: true, MediaStreamEvent: true, MediaStreamTrackEvent: true, MIDIConnectionEvent: true, MIDIMessageEvent: true, MouseEvent: true, DragEvent: true, MutationEvent: true, NotificationEvent: true, PageTransitionEvent: true, PaymentRequestEvent: true, PaymentRequestUpdateEvent: true, PointerEvent: true, PopStateEvent: true, PresentationConnectionAvailableEvent: true, PresentationConnectionCloseEvent: true, ProgressEvent: true, PromiseRejectionEvent: true, PushEvent: true, RTCDataChannelEvent: true, RTCDTMFToneChangeEvent: true, RTCPeerConnectionIceEvent: true, RTCTrackEvent: true, SecurityPolicyViolationEvent: true, SensorErrorEvent: true, SpeechRecognitionError: true, SpeechRecognitionEvent: true, SpeechSynthesisEvent: true, StorageEvent: true, SyncEvent: true, TextEvent: true, TouchEvent: true, TrackEvent: true, TransitionEvent: true, WebKitTransitionEvent: true, UIEvent: true, VRDeviceEvent: true, VRDisplayEvent: true, VRSessionEvent: true, WheelEvent: true, MojoInterfaceRequestEvent: true, ResourceProgressEvent: true, USBConnectionEvent: true, IDBVersionChangeEvent: true, AudioProcessingEvent: true, OfflineAudioCompletionEvent: true, WebGLContextEvent: true, Event: false, InputEvent: false, SubmitEvent: false, AbsoluteOrientationSensor: true, Accelerometer: true, AccessibleNode: true, AmbientLightSensor: true, Animation: true, ApplicationCache: true, DOMApplicationCache: true, OfflineResourceList: true, BackgroundFetchRegistration: true, BatteryManager: true, BroadcastChannel: true, EventSource: true, FileReader: true, FontFaceSet: true, Gyroscope: true, XMLHttpRequest: true, XMLHttpRequestEventTarget: true, XMLHttpRequestUpload: true, LinearAccelerationSensor: true, Magnetometer: true, MediaDevices: true, MediaKeySession: true, MediaQueryList: true, MediaRecorder: true, MediaSource: true, MediaStream: true, MIDIAccess: true, MIDIInput: true, MIDIOutput: true, MIDIPort: true, NetworkInformation: true, Notification: true, OffscreenCanvas: true, OrientationSensor: true, PaymentRequest: true, Performance: true, PermissionStatus: true, PresentationAvailability: true, PresentationConnection: true, PresentationConnectionList: true, PresentationRequest: true, RelativeOrientationSensor: true, RemotePlayback: true, RTCDataChannel: true, DataChannel: true, RTCDTMFSender: true, RTCPeerConnection: true, webkitRTCPeerConnection: true, mozRTCPeerConnection: true, ScreenOrientation: true, Sensor: true, ServiceWorker: true, ServiceWorkerContainer: true, ServiceWorkerRegistration: true, SharedWorker: true, SpeechRecognition: true, SpeechSynthesis: true, SpeechSynthesisUtterance: true, VR: true, VRDevice: true, VRDisplay: true, VRSession: true, VisualViewport: true, WebSocket: true, Window: true, DOMWindow: true, Worker: true, WorkerPerformance: true, BluetoothDevice: true, BluetoothRemoteGATTCharacteristic: true, Clipboard: true, MojoInterfaceInterceptor: true, USB: true, IDBDatabase: true, IDBOpenDBRequest: true, IDBVersionChangeRequest: true, IDBRequest: true, IDBTransaction: true, AnalyserNode: true, RealtimeAnalyserNode: true, AudioBufferSourceNode: true, AudioDestinationNode: true, AudioNode: true, AudioScheduledSourceNode: true, AudioWorkletNode: true, BiquadFilterNode: true, ChannelMergerNode: true, AudioChannelMerger: true, ChannelSplitterNode: true, AudioChannelSplitter: true, ConstantSourceNode: true, ConvolverNode: true, DelayNode: true, DynamicsCompressorNode: true, GainNode: true, AudioGainNode: true, IIRFilterNode: true, MediaElementAudioSourceNode: true, MediaStreamAudioDestinationNode: true, MediaStreamAudioSourceNode: true, OscillatorNode: true, Oscillator: true, PannerNode: true, AudioPannerNode: true, webkitAudioPannerNode: true, ScriptProcessorNode: true, JavaScriptAudioNode: true, StereoPannerNode: true, WaveShaperNode: true, EventTarget: false, File: true, FileList: true, FileWriter: true, HTMLFormElement: true, Gamepad: true, History: true, HTMLCollection: true, HTMLFormControlsCollection: true, HTMLOptionsCollection: true, ImageData: true, Location: true, MediaDeviceInfo: true, MediaList: true, CanvasCaptureMediaStreamTrack: true, MediaStreamTrack: true, MessageEvent: true, MessagePort: true, MIDIInputMap: true, MIDIOutputMap: true, MimeType: true, MimeTypeArray: true, Document: true, DocumentFragment: true, HTMLDocument: true, ShadowRoot: true, XMLDocument: true, Attr: true, DocumentType: true, Node: false, NodeList: true, RadioNodeList: true, Plugin: true, PluginArray: true, RTCStatsReport: true, HTMLSelectElement: true, SharedArrayBuffer: true, SourceBuffer: true, SourceBufferList: true, SpeechGrammar: true, SpeechGrammarList: true, SpeechRecognitionResult: true, Storage: true, CSSStyleSheet: true, StyleSheet: true, TextTrack: true, TextTrackCue: true, VTTCue: true, TextTrackCueList: true, TextTrackList: true, TimeRanges: true, Touch: true, TouchList: true, TrackDefaultList: true, HTMLTrackElement: true, URL: true, VideoTrack: true, VideoTrackList: true, ServiceWorkerGlobalScope: true, SharedWorkerGlobalScope: true, WorkerGlobalScope: false, CSSRuleList: true, ClientRect: true, DOMRect: true, GamepadList: true, NamedNodeMap: true, MozNamedAttrMap: true, SpeechRecognitionResultList: true, StyleSheetList: true, SVGLength: true, SVGLengthList: true, SVGNumber: true, SVGNumberList: true, SVGPointList: true, SVGStringList: true, SVGTransform: true, SVGTransformList: true, AudioBuffer: true, AudioParamMap: true, AudioTrack: true, AudioTrackList: true, AudioContext: true, webkitAudioContext: true, BaseAudioContext: false, OfflineAudioContext: true}); + hunkHelpers.setOrUpdateInterceptorsByTag({ArrayBuffer: A.NativeByteBuffer, ArrayBufferView: A.NativeTypedData, DataView: A.NativeByteData, Float32Array: A.NativeFloat32List, Float64Array: A.NativeFloat64List, Int16Array: A.NativeInt16List, Int32Array: A.NativeInt32List, Int8Array: A.NativeInt8List, Uint16Array: A.NativeUint16List, Uint32Array: A.NativeUint32List, Uint8ClampedArray: A.NativeUint8ClampedList, CanvasPixelArray: A.NativeUint8ClampedList, Uint8Array: A.NativeUint8List}); + hunkHelpers.setOrUpdateLeafTags({ArrayBuffer: true, ArrayBufferView: false, DataView: true, Float32Array: true, Float64Array: true, Int16Array: true, Int32Array: true, Int8Array: true, Uint16Array: true, Uint32Array: true, Uint8ClampedArray: true, CanvasPixelArray: true, Uint8Array: false}); A.NativeTypedArray.$nativeSuperclassTag = "ArrayBufferView"; A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView"; A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView"; @@ -10529,20 +9853,16 @@ A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView"; A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView"; A.NativeTypedArrayOfInt.$nativeSuperclassTag = "ArrayBufferView"; - A._SourceBufferList_EventTarget_ListMixin.$nativeSuperclassTag = "EventTarget"; - A._SourceBufferList_EventTarget_ListMixin_ImmutableListMixin.$nativeSuperclassTag = "EventTarget"; - A._TextTrackList_EventTarget_ListMixin.$nativeSuperclassTag = "EventTarget"; - A._TextTrackList_EventTarget_ListMixin_ImmutableListMixin.$nativeSuperclassTag = "EventTarget"; })(); Function.prototype.call$1 = function(a) { return this(a); }; - Function.prototype.call$2 = function(a, b) { - return this(a, b); - }; Function.prototype.call$0 = function() { return this(); }; + Function.prototype.call$2 = function(a, b) { + return this(a, b); + }; Function.prototype.call$3 = function(a, b, c) { return this(a, b, c); }; @@ -10565,19 +9885,22 @@ } var scripts = document.scripts; function onLoad(event) { - for (var i = 0; i < scripts.length; ++i) + for (var i = 0; i < scripts.length; ++i) { scripts[i].removeEventListener("load", onLoad, false); + } callback(event.target); } - for (var i = 0; i < scripts.length; ++i) + for (var i = 0; i < scripts.length; ++i) { scripts[i].addEventListener("load", onLoad, false); + } })(function(currentScript) { init.currentScript = currentScript; var callMain = A.main; - if (typeof dartMainRunner === "function") + if (typeof dartMainRunner === "function") { dartMainRunner(callMain, []); - else + } else { callMain([]); + } }); })(); diff --git a/example/web/e2ee.worker.dart.js.deps b/example/web/e2ee.worker.dart.js.deps index 33e159ddeb..45a7692f9d 100644 --- a/example/web/e2ee.worker.dart.js.deps +++ b/example/web/e2ee.worker.dart.js.deps @@ -1,38 +1,231 @@ -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/collection.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/algorithms.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/boollist.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/canonicalized_map.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/combined_wrappers/combined_iterable.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/combined_wrappers/combined_iterator.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/combined_wrappers/combined_list.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/combined_wrappers/combined_map.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/comparators.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/empty_unmodifiable_set.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/equality.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/equality_map.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/equality_set.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/functions.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/iterable_extensions.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/iterable_zip.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/list_extensions.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/priority_queue.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/queue_list.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/union_set.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/union_set_controller.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/unmodifiable_wrappers.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/utils.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/wrappers.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/js-0.6.5/lib/js.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/meta-1.8.0/lib/meta.dart -file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/meta-1.8.0/lib/meta_meta.dart -file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/.dart_tool/package_config.json -file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/lib/src/web/rtc_transform_stream.dart -file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/web/crypto.dart -file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/web/e2ee.cryptor.dart -file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/web/e2ee.utils.dart -file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/web/e2ee.worker.dart -file:///Users/weiweiduan/bin/flutter/bin/cache/dart-sdk/lib/_internal/dart2js_platform.dill -file:///Users/weiweiduan/bin/flutter/bin/cache/dart-sdk/lib/libraries.json +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/collection.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/algorithms.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/boollist.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/canonicalized_map.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/combined_wrappers/combined_iterable.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/combined_wrappers/combined_iterator.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/combined_wrappers/combined_list.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/combined_wrappers/combined_map.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/comparators.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/empty_unmodifiable_set.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/equality.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/equality_map.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/equality_set.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/functions.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/iterable_extensions.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/iterable_zip.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/list_extensions.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/priority_queue.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/queue_list.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/union_set.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/union_set_controller.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/unmodifiable_wrappers.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/utils.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/wrappers.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/js-0.7.1/lib/js.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/js-0.7.1/lib/js_util.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/logging-1.3.0/lib/logging.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/logging-1.3.0/lib/src/level.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/logging-1.3.0/lib/src/log_record.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/logging-1.3.0/lib/src/logger.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/accelerometer.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/angle_instanced_arrays.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/attribution_reporting_api.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/background_sync.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/battery_status.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/clipboard_apis.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/compression.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/console.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/cookie_store.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/credential_management.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/csp.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_animations.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_animations_2.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_cascade.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_cascade_6.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_conditional.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_conditional_5.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_contain.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_counter_styles.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_font_loading.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_fonts.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_highlight_api.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_masking.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_paint_api.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_properties_values_api.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_transitions.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_transitions_2.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_typed_om.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_view_transitions.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/css_view_transitions_2.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/cssom.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/cssom_view.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/digital_identities.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/dom.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/dom_parsing.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/encoding.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/encrypted_media.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/entries_api.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/event_timing.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/ext_blend_minmax.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/ext_color_buffer_float.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/ext_color_buffer_half_float.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/ext_disjoint_timer_query.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/ext_disjoint_timer_query_webgl2.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/ext_float_blend.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/ext_frag_depth.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/ext_shader_texture_lod.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/ext_srgb.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/ext_texture_compression_bptc.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/ext_texture_compression_rgtc.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/ext_texture_filter_anisotropic.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/ext_texture_norm16.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/fedcm.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/fetch.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/fido.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/fileapi.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/filter_effects.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/fs.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/fullscreen.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/gamepad.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/generic_sensor.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/geolocation.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/geometry.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/gyroscope.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/hr_time.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/html.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/image_capture.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/indexeddb.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/intersection_observer.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/khr_parallel_shader_compile.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/largest_contentful_paint.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/mathml_core.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/media_capabilities.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/media_playback_quality.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/media_source.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/mediacapture_fromelement.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/mediacapture_streams.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/mediacapture_transform.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/mediasession.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/mediastream_recording.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/mst_content_hint.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/navigation_timing.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/netinfo.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/notifications.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/oes_draw_buffers_indexed.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/oes_element_index_uint.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/oes_fbo_render_mipmap.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/oes_standard_derivatives.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/oes_texture_float.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/oes_texture_float_linear.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/oes_texture_half_float.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/oes_texture_half_float_linear.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/oes_vertex_array_object.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/orientation_event.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/orientation_sensor.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/ovr_multiview2.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/paint_timing.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/payment_request.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/performance_timeline.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/permissions.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/picture_in_picture.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/pointerevents.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/pointerlock.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/private_network_access.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/push_api.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/referrer_policy.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/remote_playback.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/reporting.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/requestidlecallback.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/resize_observer.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/resource_timing.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/saa_non_cookie_storage.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/sanitizer_api.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/scheduling_apis.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/screen_capture.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/screen_orientation.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/screen_wake_lock.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/secure_payment_confirmation.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/selection_api.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/server_timing.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/service_workers.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/speech_api.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/storage.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/streams.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/svg.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/svg_animations.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/touch_events.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/trust_token_api.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/trusted_types.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/uievents.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/url.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/user_timing.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/vibration.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/video_rvfc.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/wasm_js_api.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/web_animations.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/web_animations_2.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/web_bluetooth.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/web_locks.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/web_otp.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/web_share.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webaudio.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webauthn.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webcodecs.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webcodecs_av1_codec_registration.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webcodecs_avc_codec_registration.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webcodecs_hevc_codec_registration.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webcodecs_vp9_codec_registration.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webcryptoapi.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgl1.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgl2.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgl_color_buffer_float.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgl_compressed_texture_astc.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgl_compressed_texture_etc.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgl_compressed_texture_etc1.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgl_compressed_texture_pvrtc.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgl_compressed_texture_s3tc.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgl_compressed_texture_s3tc_srgb.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgl_debug_renderer_info.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgl_debug_shaders.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgl_depth_texture.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgl_draw_buffers.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgl_lose_context.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgl_multi_draw.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webgpu.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webidl.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webmidi.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webrtc.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webrtc_encoded_transform.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webrtc_identity.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webrtc_priority.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/websockets.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webtransport.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webvtt.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webxr.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/webxr_hand_input.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/dom/xhr.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/helpers.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/helpers/cross_origin.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/helpers/enums.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/helpers/events/events.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/helpers/events/providers.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/helpers/events/streams.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/helpers/extensions.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/helpers/http.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/helpers/lists.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/src/helpers/renames.dart +file:///Users/duan/.pub-cache/hosted/pub.dev/web-1.1.0/lib/web.dart +file:///Users/duan/Desktop/dart-webrtc/.dart_tool/package_config.json +file:///Users/duan/Desktop/dart-webrtc/lib/src/e2ee.worker/e2ee.cryptor.dart +file:///Users/duan/Desktop/dart-webrtc/lib/src/e2ee.worker/e2ee.keyhandler.dart +file:///Users/duan/Desktop/dart-webrtc/lib/src/e2ee.worker/e2ee.logger.dart +file:///Users/duan/Desktop/dart-webrtc/lib/src/e2ee.worker/e2ee.sfi_guard.dart +file:///Users/duan/Desktop/dart-webrtc/lib/src/e2ee.worker/e2ee.utils.dart +file:///Users/duan/Desktop/dart-webrtc/lib/src/e2ee.worker/e2ee.worker.dart +file:///Users/duan/bin/flutter/bin/cache/dart-sdk/lib/_internal/dart2js_platform.dill +file:///Users/duan/bin/flutter/bin/cache/dart-sdk/lib/libraries.json org-dartlang-sdk:///lib/_http/crypto.dart org-dartlang-sdk:///lib/_http/embedder_config.dart org-dartlang-sdk:///lib/_http/http.dart @@ -47,10 +240,12 @@ org-dartlang-sdk:///lib/_http/websocket.dart org-dartlang-sdk:///lib/_http/websocket_impl.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/annotations.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/async_patch.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/bigint_patch.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/collection_patch.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/constant_map.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/convert_patch.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/core_patch.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/dart2js_only.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/dart2js_runtime_metrics.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/developer_patch.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/foreign_helper.dart @@ -59,6 +254,7 @@ org-dartlang-sdk:///lib/_internal/js_runtime/lib/interceptors.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/internal_patch.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/io_patch.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/isolate_patch.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_allow_interop_patch.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_array.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_names.dart @@ -71,14 +267,21 @@ org-dartlang-sdk:///lib/_internal/js_runtime/lib/linked_hash_map.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/math_patch.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_helper.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_typed_data.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/records.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/regexp_helper.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/string_helper.dart -org-dartlang-sdk:///lib/_internal/js_runtime/lib/synced/async_await_error_codes.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/synced/array_flags.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/synced/embedded_names.dart -org-dartlang-sdk:///lib/_internal/js_runtime/lib/synced/load_library_priority.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/synced/invocation_mirror_constants.dart org-dartlang-sdk:///lib/_internal/js_runtime/lib/typed_data_patch.dart +org-dartlang-sdk:///lib/_internal/js_shared/lib/convert_utf_patch.dart +org-dartlang-sdk:///lib/_internal/js_shared/lib/date_time_patch.dart +org-dartlang-sdk:///lib/_internal/js_shared/lib/js_interop_patch.dart +org-dartlang-sdk:///lib/_internal/js_shared/lib/js_interop_unsafe_patch.dart +org-dartlang-sdk:///lib/_internal/js_shared/lib/js_types.dart org-dartlang-sdk:///lib/_internal/js_shared/lib/js_util_patch.dart org-dartlang-sdk:///lib/_internal/js_shared/lib/rti.dart +org-dartlang-sdk:///lib/_internal/js_shared/lib/synced/async_status_codes.dart org-dartlang-sdk:///lib/_internal/js_shared/lib/synced/embedded_names.dart org-dartlang-sdk:///lib/_internal/js_shared/lib/synced/recipe_syntax.dart org-dartlang-sdk:///lib/async/async.dart @@ -86,6 +289,7 @@ org-dartlang-sdk:///lib/async/async_error.dart org-dartlang-sdk:///lib/async/broadcast_stream_controller.dart org-dartlang-sdk:///lib/async/deferred_load.dart org-dartlang-sdk:///lib/async/future.dart +org-dartlang-sdk:///lib/async/future_extensions.dart org-dartlang-sdk:///lib/async/future_impl.dart org-dartlang-sdk:///lib/async/schedule_microtask.dart org-dartlang-sdk:///lib/async/stream.dart @@ -135,6 +339,7 @@ org-dartlang-sdk:///lib/core/enum.dart org-dartlang-sdk:///lib/core/errors.dart org-dartlang-sdk:///lib/core/exceptions.dart org-dartlang-sdk:///lib/core/function.dart +org-dartlang-sdk:///lib/core/identical.dart org-dartlang-sdk:///lib/core/int.dart org-dartlang-sdk:///lib/core/invocation.dart org-dartlang-sdk:///lib/core/iterable.dart @@ -161,6 +366,7 @@ org-dartlang-sdk:///lib/core/uri.dart org-dartlang-sdk:///lib/core/weak.dart org-dartlang-sdk:///lib/developer/developer.dart org-dartlang-sdk:///lib/developer/extension.dart +org-dartlang-sdk:///lib/developer/http_profiling.dart org-dartlang-sdk:///lib/developer/profiler.dart org-dartlang-sdk:///lib/developer/service.dart org-dartlang-sdk:///lib/developer/timeline.dart @@ -220,6 +426,8 @@ org-dartlang-sdk:///lib/js/_js.dart org-dartlang-sdk:///lib/js/_js_annotations.dart org-dartlang-sdk:///lib/js/_js_client.dart org-dartlang-sdk:///lib/js/js.dart +org-dartlang-sdk:///lib/js_interop/js_interop.dart +org-dartlang-sdk:///lib/js_interop_unsafe/js_interop_unsafe.dart org-dartlang-sdk:///lib/js_util/js_util.dart org-dartlang-sdk:///lib/math/math.dart org-dartlang-sdk:///lib/math/point.dart @@ -227,6 +435,5 @@ org-dartlang-sdk:///lib/math/random.dart org-dartlang-sdk:///lib/math/rectangle.dart org-dartlang-sdk:///lib/svg/dart2js/svg_dart2js.dart org-dartlang-sdk:///lib/typed_data/typed_data.dart -org-dartlang-sdk:///lib/typed_data/unmodifiable_typed_data.dart org-dartlang-sdk:///lib/web_audio/dart2js/web_audio_dart2js.dart org-dartlang-sdk:///lib/web_gl/dart2js/web_gl_dart2js.dart \ No newline at end of file diff --git a/example/web/e2ee.worker.dart.js.map b/example/web/e2ee.worker.dart.js.map index 0f3d15e5e4..8288579a95 100644 --- a/example/web/e2ee.worker.dart.js.map +++ b/example/web/e2ee.worker.dart.js.map @@ -3,14 +3,14 @@ "engine": "v2", "file": "e2ee.worker.dart.js", "sourceRoot": "", - "sources": ["org-dartlang-sdk:///lib/internal/errors.dart","org-dartlang-sdk:///lib/internal/internal.dart","org-dartlang-sdk:///lib/internal/iterable.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/rti.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/core_patch.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/linked_hash_map.dart","org-dartlang-sdk:///lib/core/errors.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/interceptors.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/string_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_typed_data.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_names.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/synced/recipe_syntax.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/async_patch.dart","org-dartlang-sdk:///lib/async/future_impl.dart","org-dartlang-sdk:///lib/async/zone.dart","org-dartlang-sdk:///lib/async/async_error.dart","org-dartlang-sdk:///lib/async/schedule_microtask.dart","org-dartlang-sdk:///lib/async/stream.dart","org-dartlang-sdk:///lib/async/stream_impl.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/collection_patch.dart","org-dartlang-sdk:///lib/collection/iterable.dart","org-dartlang-sdk:///lib/collection/maps.dart","org-dartlang-sdk:///lib/convert/base64.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_string.dart","org-dartlang-sdk:///lib/core/date_time.dart","org-dartlang-sdk:///lib/core/exceptions.dart","org-dartlang-sdk:///lib/core/object.dart","org-dartlang-sdk:///lib/core/print.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/internal_patch.dart","org-dartlang-sdk:///lib/html/dart2js/html_dart2js.dart","org-dartlang-sdk:///lib/html/html_common/conversions_dart2js.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/js_util_patch.dart","../../web/crypto.dart","../../web/e2ee.cryptor.dart","../../web/e2ee.worker.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_primitives.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/late_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_patch.dart","../../../../../.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/iterable_extensions.dart","../../web/e2ee.utils.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_array.dart","org-dartlang-sdk:///lib/collection/list.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_number.dart","org-dartlang-sdk:///lib/internal/bytes_builder.dart","org-dartlang-sdk:///lib/internal/list.dart","org-dartlang-sdk:///lib/internal/symbol.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/constant_map.dart","org-dartlang-sdk:///lib/core/enum.dart","org-dartlang-sdk:///lib/core/iterable.dart","org-dartlang-sdk:///lib/core/null.dart","org-dartlang-sdk:///lib/core/stacktrace.dart","org-dartlang-sdk:///lib/html/html_common/conversions.dart","org-dartlang-sdk:///lib/js_util/js_util.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/math_patch.dart","org-dartlang-sdk:///lib/svg/dart2js/svg_dart2js.dart","org-dartlang-sdk:///lib/web_audio/dart2js/web_audio_dart2js.dart","org-dartlang-sdk:///lib/convert/codec.dart","org-dartlang-sdk:///lib/async/future.dart","org-dartlang-sdk:///lib/typed_data/typed_data.dart","../../lib/src/web/rtc_transform_stream.dart"], - "names": ["LateError.fieldNI","SystemHash.combine","SystemHash.finish","checkNotNullable","SubListIterable","MappedIterable","unminifyOrTag","isJsIndexable","S","Primitives.objectHashCode","Primitives.objectTypeName","Primitives._objectTypeNameNewRti","Primitives.stringFromNativeUint8List","Primitives.lazyAsJsDate","Primitives.getYear","Primitives.getMonth","Primitives.getDay","Primitives.getHours","Primitives.getMinutes","Primitives.getSeconds","Primitives.getMilliseconds","Primitives.functionNoSuchMethod","createUnmangledInvocationMirror","Primitives.applyFunction","Primitives._generalApplyFunction","JsLinkedHashMap.isNotEmpty","iae","ioore","diagnoseIndexError","diagnoseRangeError","argumentErrorValue","wrapException","toStringWrapper","throwExpression","throwConcurrentModificationError","TypeErrorDecoder.extractPattern","TypeErrorDecoder.provokeCallErrorOn","TypeErrorDecoder.provokePropertyErrorOn","JsNoSuchMethodError","unwrapException","saveStackTrace","_unwrapNonDartException","getTraceFromException","objectHashCode","fillLiteralMap","invokeClosure","convertDartClosureToJS","Closure.fromTearOff","Closure._computeSignatureFunctionNewRti","Closure.cspForwardCall","Closure.forwardCallTo","Closure.cspForwardInterceptedCall","Closure.forwardInterceptedCallTo","closureFromTearOff","BoundClosure.evalRecipe","evalInInstance","BoundClosure.receiverOf","BoundClosure.interceptorOf","BoundClosure._computeFieldNamed","boolConversionCheck","assertThrow","throwCyclicInit","getIsolateAffinityTag","defineProperty","lookupAndCacheInterceptor","patchProto","patchInteriorProto","makeLeafDispatchRecord","makeDefaultDispatchRecord","initNativeDispatch","initNativeDispatchContinue","lookupInterceptor","initHooks","applyHooksTransformer","quoteStringForRegExp","_ensureNativeList","NativeByteData","NativeUint8List","NativeUint8List.fromList","NativeUint8List.view","_checkValidIndex","_checkValidRange","Rti._getQuestionFromStar","Rti._getFutureFromFutureOr","Rti._isUnionOfFunctionType","Rti._getCanonicalRecipe","findType","_substitute","_substituteArray","_substituteNamed","_substituteFunctionParameters","_FunctionParameters.allocate","_setArrayType","closureFunctionType","instanceOrFunctionType","_isClosure","instanceType","_isDartObject","_arrayInstanceType","_instanceType","_instanceTypeFromConstructor","_instanceTypeFromConstructorMiss","getTypeFromTypesTable","createRuntimeType","_Type","typeLiteral","_installSpecializedIsTest","_finishIsFn","_installSpecializedAsCheck","_nullIs","_generalIsTestImplementation","_generalNullableIsTestImplementation","_isTestViaProperty","_isListTestViaProperty","_generalAsCheckImplementation","_generalNullableAsCheckImplementation","_failedAsCheck","_Error.compose","_TypeError.fromMessage","_TypeError.forType","_isObject","_asObject","_isTop","_asTop","_isBool","_asBool","_asBoolS","_asBoolQ","_asDouble","_asDoubleS","_asDoubleQ","_isInt","_asInt","_asIntS","_asIntQ","_isNum","_asNum","_asNumS","_asNumQ","_isString","_asString","_asStringS","_asStringQ","_rtiArrayToString","_recordRtiToString","_functionRtiToString","isTopType","Rti._getReturnType","_rtiToString","Rti._getGenericFunctionParameterIndex","_unminifyOrTag","_Universe.findRule","_Universe.findErasedType","_Universe.addRules","_Universe.addErasedTypes","_Universe.eval","_Universe.evalInEnvironment","_Universe.bind","_Universe._installTypeTests","_Universe._lookupTerminalRti","Rti.allocate","_Universe._createTerminalRti","_Universe._lookupStarRti","_Universe._canonicalRecipeOfStar","_Universe._createStarRti","_Universe._lookupQuestionRti","_Universe._canonicalRecipeOfQuestion","_Universe._createQuestionRti","_Universe._lookupFutureOrRti","_Universe._canonicalRecipeOfFutureOr","_Universe._createFutureOrRti","_Universe._lookupGenericFunctionParameterRti","_Universe._createGenericFunctionParameterRti","_Universe._canonicalRecipeJoin","_Universe._canonicalRecipeJoinNamed","_Universe._lookupInterfaceRti","_Universe._createInterfaceRti","_Universe._lookupBindingRti","_Universe._canonicalRecipeOfBinding","_Universe._createBindingRti","_Universe._lookupRecordRti","_Universe._createRecordRti","_Universe._lookupFunctionRti","_Universe._canonicalRecipeOfFunction","_Universe._createFunctionRti","_Universe._lookupGenericFunctionRti","_Universe._canonicalRecipeOfGenericFunction","_Universe._createGenericFunctionRti","_Parser.create","_Parser.parse","_Parser.pushStackFrame","_Parser.handleTypeArguments","_Parser.collectArray","_Parser.handleOptionalGroup","_Parser.handleNamedGroup","_Parser.collectNamed","_Parser.handleStartRecord","_Parser.handleDigit","_Parser.handleIdentifier","_Parser.handleArguments","_Parser.handleExtendedOperations","_Parser.toType","_Parser.toTypes","_Parser.toTypesNamed","_Parser.indexToType","_isSubtype","_isFunctionSubtype","_isInterfaceSubtype","Rti._getInterfaceTypeArguments","_areArgumentsSubtypes","_isRecordSubtype","isNullable","isStrongTopType","_Utils.objectAssign","_Utils.newArrayOrEmpty","_AsyncRun._initializeScheduleImmediate","_AsyncRun._scheduleImmediateJsOverride","_AsyncRun._scheduleImmediateWithSetImmediate","_AsyncRun._scheduleImmediateWithTimer","_TimerImpl","_makeAsyncAwaitCompleter","_AsyncAwaitCompleter._future","_asyncStartSync","_asyncAwait","_asyncReturn","_asyncRethrow","_awaitOnObject","_wrapJsFunctionForAsync","AsyncError","AsyncError.defaultStackTrace","_Future._chainCoreFuture","_Future._propagateToListeners","_registerErrorHandler","_microtaskLoop","_startMicrotaskLoop","_scheduleAsyncCallback","_schedulePriorityAsyncCallback","scheduleMicrotask","StreamIterator","_rootHandleError","_rootRun","_rootRunUnary","_rootRunBinary","_rootScheduleMicrotask","_HashMap._getTableEntry","_HashMap._setTableEntry","_HashMap._newHashTable","LinkedHashMap._literal","LinkedHashMap._empty","IterableBase.iterableToShortString","IterableBase.iterableToFullString","_isToStringVisiting","_iterablePartsToStrings","MapBase.mapToString","_Base64Encoder.encodeChunk","_Base64Decoder.decodeChunk","_Base64Decoder._allocateBuffer","_Base64Decoder._trimPaddingChars","_Base64Decoder._checkPadding","Error._objectToString","Error._throw","List.filled","List.of","List._of","String.fromCharCodes","StringBuffer._writeAll","NoSuchMethodError._","DateTime._fourDigits","DateTime._threeDigits","DateTime._twoDigits","Error.safeToString","AssertionError","ArgumentError","ArgumentError.value","RangeError.value","RangeError.range","RangeError.checkValidRange","RangeError.checkNotNegative","IndexError.withLength","UnsupportedError","UnimplementedError","StateError","ConcurrentModificationError","Exception","FormatException","Object.hash","print","_EventStreamSubscription","_wrapZone","_convertNativeToDart_Value","convertNativeToDart_Dictionary","isJavaScriptSimpleObject","jsify","_convertDataTree","promiseToFuture","_Completer.future","Completer","jsArrayBufferFrom","impportKeyFromRawData","KeyOptions","findNALUIndices","Cryptor","main","DedicatedWorkerGlobalScope.onMessage","printString","throwLateFieldNI","throwLateFieldADI","_convertDartFunctionFast","_callDartFunctionFast","allowInterop","IterableExtension.firstWhereOrNull","getAlgoOptions","makeDispatchRecord","getNativeInterceptor","lookupInterceptorByConstructor","cacheInterceptorOnConstructor","JSArray.fixed","JSArray.markFixed","JSArray.markFixedList","Interceptor.hashCode","Interceptor.==","Interceptor.toString","Interceptor.noSuchMethod","JSBool.toString","JSBool.hashCode","JSNull.==","JSNull.toString","JSNull.hashCode","LegacyJavaScriptObject.hashCode","LegacyJavaScriptObject.toString","JavaScriptFunction.toString","JSArray.add","JSArray._removeWhere","JSArray.addAll","JSArray._addAllFromArray","JSArray.map","JSArray.skip","JSArray.elementAt","JSArray.toString","JSArray.iterator","JSArray.hashCode","JSArray.length","JSArray.[]","JSArray.[]=","ArrayIterator.current","ArrayIterator.moveNext","ArrayIterator._current","JSNumber.toRadixString","JSNumber.toString","JSNumber.hashCode","JSNumber.%","JSNumber._tdivFast","JSNumber._tdivSlow","JSNumber._shrOtherPositive","JSNumber._shrBothPositive","JSString.codeUnitAt","JSString._codeUnitAt","JSString.+","JSString.substring","JSString.*","JSString.toString","JSString.hashCode","JSString.length","JSString.[]","_CopyingBytesBuilder.add","_CopyingBytesBuilder._grow","_CopyingBytesBuilder.toBytes","Uint8List.view","_CopyingBytesBuilder.length","LateError.toString","CodeUnits.[]","CodeUnits.length","ListIterable.iterator","ListIterable.map","SubListIterable._endIndex","SubListIterable._startIndex","SubListIterable.length","SubListIterable.elementAt","SubListIterable.toList","ListIterator.current","ListIterator.moveNext","ListIterator._current","MappedIterable.iterator","MappedIterable.length","MappedIterator.moveNext","MappedIterator.current","MappedIterator._current","MappedListIterable.length","MappedListIterable.elementAt","WhereIterable.iterator","WhereIterable.map","WhereIterator.moveNext","WhereIterator.current","UnmodifiableListMixin.[]=","Symbol.hashCode","Symbol.toString","Symbol.==","ConstantMap.toString","ConstantStringMap.length","ConstantStringMap.containsKey","ConstantStringMap.[]","ConstantStringMap.forEach","ConstantStringMap.keys","_ConstantMapKeyIterable.iterator","_ConstantMapKeyIterable.length","JSInvocationMirror.memberName","JSInvocationMirror.positionalArguments","JSInvocationMirror.namedArguments","Primitives.functionNoSuchMethod.","TypeErrorDecoder.matchTypeError","NullError.toString","JsNoSuchMethodError.toString","UnknownJsTypeError.toString","NullThrownFromJavaScriptException.toString","_StackTrace.toString","Closure.toString","StaticClosure.toString","BoundClosure.==","BoundClosure.hashCode","BoundClosure.toString","RuntimeError.toString","_AssertionError.toString","JsLinkedHashMap.keys","JsLinkedHashMap.length","JsLinkedHashMap.containsKey","JsLinkedHashMap.[]","JsLinkedHashMap.internalGet","JsLinkedHashMap.[]=","JsLinkedHashMap.internalSet","JsLinkedHashMap.forEach","JsLinkedHashMap._addHashTableEntry","JsLinkedHashMap._newLinkedCell","JsLinkedHashMap.internalComputeHashCode","JsLinkedHashMap.internalFindBucketIndex","JsLinkedHashMap.toString","JsLinkedHashMap._newHashTable","LinkedHashMapKeyIterable.length","LinkedHashMapKeyIterable.iterator","LinkedHashMapKeyIterator","LinkedHashMapKeyIterator.current","LinkedHashMapKeyIterator.moveNext","LinkedHashMapKeyIterator._current","initHooks.","NativeTypedData._invalidPosition","NativeTypedData._checkPosition","NativeByteData._getUint32","NativeByteData.setInt8","NativeByteData._setUint32","NativeTypedArray.length","NativeTypedArray._setRangeFast","NativeTypedArrayOfDouble.[]","NativeTypedArrayOfDouble.[]=","NativeTypedArrayOfInt.[]=","NativeTypedArrayOfInt.setRange","NativeInt16List.[]","NativeInt32List.[]","NativeInt8List.[]","NativeUint16List.[]","NativeUint32List.[]","NativeUint8ClampedList.length","NativeUint8ClampedList.[]","NativeUint8List.length","NativeUint8List.[]","NativeUint8List.sublist","NativeUint8List.sublist[function-entry$1]","Rti._eval","Rti._bind","_Type.toString","_Error.toString","_AsyncRun._initializeScheduleImmediate.internalCallback","_AsyncRun._initializeScheduleImmediate.","_AsyncRun._scheduleImmediateJsOverride.internalCallback","_AsyncRun._scheduleImmediateWithSetImmediate.internalCallback","_TimerImpl.internalCallback","_AsyncAwaitCompleter.complete","_AsyncAwaitCompleter.completeError","_awaitOnObject.","_wrapJsFunctionForAsync.","AsyncError.toString","_Completer.completeError","_Completer.completeError[function-entry$1]","_AsyncCompleter.complete","_AsyncCompleter.complete[function-entry$0]","_FutureListener.matchesErrorTest","_FutureListener._errorTest","_FutureListener.handleError","_Future.then","_Future.then[function-entry$1]","_Future._thenAwait","_Future._setErrorObject","_Future._cloneResult","_Future._addListener","_Future._prependListeners","_Future._removeListeners","_Future._reverseListeners","_Future._chainForeignFuture","_Future._completeWithValue","_Future._completeError","_Future._asyncComplete","_Future._asyncCompleteWithValue","_Future._chainFuture","_Future._asyncCompleteError","_Future._addListener.","_Future._prependListeners.","_Future._chainForeignFuture.","_Future._asyncCompleteWithValue.","_Future._chainFuture.","_Future._asyncCompleteError.","_Future._propagateToListeners.handleWhenCompleteCallback","_FutureListener.handleWhenComplete","_FutureListener._whenCompleteAction","_Future._propagateToListeners.handleWhenCompleteCallback.","_Future._propagateToListeners.handleValueCallback","_FutureListener.handleValue","_FutureListener._onValue","_Future._propagateToListeners.handleError","_FutureListener.hasErrorCallback","Stream.length","Stream.length.","Stream_length_closure","_Future._complete","_rootHandleError.","_RootZone.runGuarded","_RootZone.runUnaryGuarded","_RootZone.bindCallbackGuarded","_RootZone.bindUnaryCallbackGuarded","_RootZone.[]","_RootZone.run","_RootZone.runUnary","_RootZone.runBinary","_RootZone.registerBinaryCallback","_RootZone.bindCallbackGuarded.","_RootZone.bindUnaryCallbackGuarded.","_RootZone_bindUnaryCallbackGuarded_closure","_HashMap.keys","_HashMap.length","_HashMap.containsKey","_HashMap._containsKey","_HashMap.[]","_HashMap._get","_HashMap.[]=","_IdentityHashMap._computeHashCode","_HashMap.forEach","_HashMap._computeKeys","_HashMap._getBucket","_IdentityHashMap._findBucketIndex","_HashMapKeyIterable.length","_HashMapKeyIterable.iterator","_HashMapKeyIterator.current","_HashMapKeyIterator.moveNext","_HashMapKeyIterator._current","ListMixin.iterator","ListMixin.elementAt","ListMixin.map","ListMixin.skip","ListMixin.setRange","ListMixin.toString","MapBase.mapToString.","StringBuffer.write","MapMixin.forEach","MapMixin.length","MapMixin.toString","MapView.[]","MapView.forEach","MapView.length","MapView.keys","MapView.toString","Base64Encoder.convert","_Base64Encoder.encode","Base64Decoder.convert","_Base64Decoder.decode","NoSuchMethodError.toString.","_symbolToString","DateTime.==","DateTime.hashCode","DateTime.toString","_Enum.toString","Error.stackTrace","AssertionError.toString","NullThrownError.toString","ArgumentError._errorName","ArgumentError._errorExplanation","ArgumentError.toString","RangeError.invalidValue","RangeError._errorName","RangeError._errorExplanation","IndexError.invalidValue","IndexError._errorName","IndexError._errorExplanation","NoSuchMethodError.toString","UnsupportedError.toString","UnimplementedError.toString","StateError.toString","ConcurrentModificationError.toString","OutOfMemoryError.toString","OutOfMemoryError.stackTrace","StackOverflowError.toString","StackOverflowError.stackTrace","CyclicInitializationError.toString","_Exception.toString","FormatException.toString","Iterable.map","Iterable.length","Iterable.elementAt","Iterable.toString","Null.hashCode","Null.toString","Object.hashCode","Object.==","Object.toString","Object.noSuchMethod","_StringStackTrace.toString","StringBuffer.length","StringBuffer.toString","AccessibleNodeList.length","AnchorElement.toString","AreaElement.toString","CharacterData.length","CssPerspective.length","CssStyleDeclaration.length","CssTransformValue.length","CssUnparsedValue.length","DataTransferItem.kind","DataTransferItemList.[]","DataTransferItemList.length","DedicatedWorkerGlobalScope.postMessage","convertDartToNative_PrepareForStructuredClone","DomException.toString","DomRectList.length","DomRectList.[]","DomRectList.[]=","DomRectList.elementAt","DomRectReadOnly.toString","DomRectReadOnly.==","DomRectReadOnly.hashCode","DomRectReadOnly._height","DomRectReadOnly.height","DomRectReadOnly._width","DomRectReadOnly.width","DomStringList.length","DomStringList.[]","DomStringList.[]=","DomStringList.elementAt","DomTokenList.length","Element.toString","EventTarget.addEventListener","EventTarget._addEventListener","FileList.length","FileList.[]","FileList.[]=","FileList.elementAt","FileWriter.length","FormElement.length","History.length","HtmlCollection.length","HtmlCollection.[]","HtmlCollection.[]=","HtmlCollection.elementAt","Location.toString","MediaDeviceInfo.kind","MediaList.length","MediaStreamTrack.kind","MidiInputMap.[]","MidiInputMap.forEach","MidiInputMap.keys","MidiInputMap.length","MidiInputMap.keys.","MidiOutputMap.[]","MidiOutputMap.forEach","MidiOutputMap.keys","MidiOutputMap.length","MidiOutputMap.keys.","MimeTypeArray.length","MimeTypeArray.[]","MimeTypeArray.[]=","MimeTypeArray.elementAt","Node.toString","NodeList.length","NodeList.[]","NodeList.[]=","NodeList.elementAt","Plugin.length","PluginArray.length","PluginArray.[]","PluginArray.[]=","PluginArray.elementAt","RtcStatsReport.[]","RtcStatsReport.forEach","RtcStatsReport.keys","RtcStatsReport.length","RtcStatsReport.keys.","SelectElement.length","SourceBufferList.length","SourceBufferList.[]","SourceBufferList.[]=","SourceBufferList.elementAt","SpeechGrammarList.length","SpeechGrammarList.[]","SpeechGrammarList.[]=","SpeechGrammarList.elementAt","SpeechRecognitionResult.length","Storage.[]","Storage.forEach","Storage.keys","Storage.length","Storage.keys.","TextTrack.kind","TextTrackCueList.length","TextTrackCueList.[]","TextTrackCueList.[]=","TextTrackCueList.elementAt","TextTrackList.length","TextTrackList.[]","TextTrackList.[]=","TextTrackList.elementAt","TimeRanges.length","TouchList.length","TouchList.[]","TouchList.[]=","TouchList.elementAt","TrackDefaultList.length","TrackElement.kind","Url.toString","VideoTrack.kind","VideoTrackList.length","_CssRuleList.length","_CssRuleList.[]","_CssRuleList.[]=","_CssRuleList.elementAt","_DomRect.toString","_DomRect.==","_DomRect.hashCode","_DomRect._height","_DomRect.height","_DomRect._width","_DomRect.width","_GamepadList.length","_GamepadList.[]","_GamepadList.[]=","_GamepadList.elementAt","_NamedNodeMap.length","_NamedNodeMap.[]","_NamedNodeMap.[]=","_NamedNodeMap.elementAt","_SpeechRecognitionResultList.length","_SpeechRecognitionResultList.[]","_SpeechRecognitionResultList.[]=","_SpeechRecognitionResultList.elementAt","_StyleSheetList.length","_StyleSheetList.[]","_StyleSheetList.[]=","_StyleSheetList.elementAt","_EventStreamSubscription.","ImmutableListMixin.iterator","FixedSizeListIterator.moveNext","FixedSizeListIterator.current","FixedSizeListIterator._current","_StructuredClone.findSlot","_StructuredClone.walk","convertDartToNative_DateTime","_StructuredClone.copyList","_StructuredClone.walk.","_AcceptStructuredClone.findSlot","_AcceptStructuredClone.walk","DateTime._withValue","convertNativeToDart_DateTime","_AcceptStructuredClone.walk.","_StructuredCloneDart2Js.forEachObjectKey","_AcceptStructuredCloneDart2Js.forEachJsField","_convertDataTree._convert","promiseToFuture.","NullRejectionException.toString","_JSSecureRandom","_JSSecureRandom.nextInt","LengthList.length","LengthList.[]","LengthList.[]=","LengthList.elementAt","NumberList.length","NumberList.[]","NumberList.[]=","NumberList.elementAt","PointList.length","StringList.length","StringList.[]","StringList.[]=","StringList.elementAt","TransformList.length","TransformList.[]","TransformList.[]=","TransformList.elementAt","AudioBuffer.length","AudioParamMap.[]","AudioParamMap.forEach","AudioParamMap.keys","AudioParamMap.length","AudioParamMap.keys.","AudioTrack.kind","AudioTrackList.length","OfflineAudioContext.length","KeyOptions.toString","CryptorError._enumToString","Cryptor.kind","Cryptor.ratchetKey","Cryptor.ratchetMaterial","Cryptor.getKeySet","Cryptor.setKey","Cryptor.setKeySetFromMaterial","Cryptor.deriveKeys","Cryptor.ratchet","Cryptor.setupTransform","Cryptor.setupTransform[function-entry$0$kind$operation$readable$trackId$writable]","Cryptor.getUnencryptedBytes","Cryptor.encodeFunction","Cryptor.makeIv","BytesBuilder","Cryptor.decodeFunction","Cryptor.ratchetKey.","Cryptor.ratchetKey..","Cryptor.ratchetKey...","main.","PropsRTCTransformEvent.transformer","PropsRTCRtpScriptTransformer.options","PropsRTCRtpScriptTransformer.readable","PropsRTCRtpScriptTransformer.writable","main..","convertNativeToDart_AcceptStructuredClone","base64Decode","Base64Codec.decode","JSArray.where","JSArray.removeWhere","base64Encode","Codec.encode","DART_CLOSURE_PROPERTY_NAME","_CopyingBytesBuilder._emptyList","TypeErrorDecoder.noSuchMethodPattern","TypeErrorDecoder.notClosurePattern","TypeErrorDecoder.nullCallPattern","TypeErrorDecoder.nullLiteralCallPattern","TypeErrorDecoder.undefinedCallPattern","TypeErrorDecoder.undefinedLiteralCallPattern","TypeErrorDecoder.nullPropertyPattern","TypeErrorDecoder.nullLiteralPropertyPattern","TypeErrorDecoder.undefinedPropertyPattern","TypeErrorDecoder.undefinedLiteralPropertyPattern","_AsyncRun._scheduleImmediateClosure","_Base64Decoder._inverseAlphabet","_Base64Decoder._emptyBuffer","_hashSeed","Random._secureRandom","keyProviderOptions","JSString.codeUnits","patchInstance","JS_INTEROP_INTERCEPTOR_TAG","main_closure","","LateError","NullThrownError","mapToString","StringBuffer","_toStringVisiting","MapBase_mapToString_closure","_empty","LinkedHashMapCell","safeToString","_objectToString","Closure","objectTypeName","_objectTypeNameNewRti","Object","JsLinkedHashMap","hash","combine","finish","eval","create","parse","handleDigit","handleIdentifier","toType","_lookupGenericFunctionParameterRti","_lookupTerminalRti","toTypes","_lookupInterfaceRti","_lookupGenericFunctionRti","_lookupBindingRti","handleExtendedOperations","_lookupStarRti","_lookupQuestionRti","_lookupFutureOrRti","handleArguments","toTypesNamed","collectArray","_FunctionParameters","_lookupFunctionRti","_lookupRecordRti","_canonicalRecipeJoin","Rti","_installTypeTests","_canonicalRecipeJoinNamed","_createFutureOrRti","Future","_createQuestionRti","_getQuestionFromStar","_createStarRti","_createGenericFunctionRti","newArrayOrEmpty","indexToType","findRule","_getCanonicalRecipe","evalInEnvironment","_identityHashCodeProperty","MapMixin","ArrayIterator","JSArray","LinkedHashMapKeyIterable","iterableToShortString","_writeAll","FixedSizeListIterator","ImmutableListMixin","withLength","IndexError","List","ListIterator","ListMixin","checkNotNegative","range","RangeError","value","_Future","_current","_propagateToListeners","_Future__propagateToListeners_handleWhenCompleteCallback","_Future__propagateToListeners_handleValueCallback","_Future__propagateToListeners_handleError","_chainCoreFuture","_Future__prependListeners_closure","_AsyncCallbackEntry","_lastCallback","_nextCallback","_isInCallbackLoop","_lastPriorityCallback","_initializeScheduleImmediate","_AsyncRun__initializeScheduleImmediate_internalCallback","_AsyncRun__initializeScheduleImmediate_closure","_TimerImpl_internalCallback","_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback","_AsyncRun__scheduleImmediateJsOverride_internalCallback","_Exception","_RootZone_bindCallbackGuarded_closure","ExceptionAndStackTrace","_StackTrace","NullThrownFromJavaScriptException","NullError","UnknownJsTypeError","StackOverflowError","extractPattern","TypeErrorDecoder","provokePropertyErrorOn","provokeCallErrorOn","defaultStackTrace","_Future__propagateToListeners_handleWhenCompleteCallback_closure","_FutureListener","_Future__addListener_closure","_rootHandleError_closure","_throw","Iterable","AudioParamMap_keys_closure","Storage_keys_closure","RtcStatsReport_keys_closure","MidiOutputMap_keys_closure","MidiInputMap_keys_closure","iterableToFullString","initNativeDispatchFlag","_JS_INTEROP_INTERCEPTOR_TAG","getTagFunction","dispatchRecordsForInstanceTags","interceptorsForUncacheableTags","alternateTagFunction","JavaScriptIndexingBehavior","prototypeForTagFunction","initHooks_closure","CyclicInitializationError","fromTearOff","StaticClosure","BoundClosure","forwardCallTo","_computeSignatureFunctionNewRti","evalRecipe","forwardInterceptedCallTo","cspForwardCall","receiverOf","_interceptorFieldNameCache","_computeFieldNamed","_receiverFieldNameCache","cspForwardInterceptedCall","interceptorOf","RuntimeError","markFixedList","_wrapJsFunctionForAsync_closure","_StreamIterator","StreamSubscription","_awaitOnObject_closure","forType","_TypeError","compose","fromMessage","_isUnionOfFunctionType","_getFutureFromFutureOr","bind","findErasedType","_AsyncAwaitCompleter","_Future__asyncCompleteError_closure","_Future__chainFuture_closure","_Future__chainForeignFuture_closure","_Future__asyncCompleteWithValue_closure","_EventStreamSubscription_closure","_AcceptStructuredCloneDart2Js","participantCryptors","WhereIterable","bool","main__closure","of","_literal","IterableExtension|firstWhereOrNull","view","_CopyingBytesBuilder","checkValidRange","ListIterable","fixed","filled","markFixed","_AsyncCompleter","promiseToFuture_closure","NullRejectionException","_AssertionError","fieldNI","_convertDataTree__convert","_IdentityHashMap","_getTableEntry","_HashMapKeyIterable","_HashMapKeyIterator","MappedListIterable","MappedIterator","Iterator","EfficientLengthMappedIterable","_newHashTable","_setTableEntry","Cryptor_ratchetKey_closure","Cryptor_ratchetKey__closure","Cryptor_ratchetKey___closure","KeySet","WhereIterator","_StructuredCloneDart2Js","DateTime","_StructuredClone_walk_closure","Codec","_Base64Encoder","fromCharCodes","stringFromNativeUint8List","encodeChunk","LinkedHashMap","_of","CodeUnits","fromList","UnmodifiableListMixin","_Base64Decoder","_checkPadding","_allocateBuffer","decodeChunk","_trimPaddingChars","_AcceptStructuredClone_walk_closure","getYear","_fourDigits","getMonth","_twoDigits","getDay","getHours","getMinutes","getSeconds","getMilliseconds","_threeDigits","lazyAsJsDate","applyFunction","_generalApplyFunction","functionNoSuchMethod","Primitives_functionNoSuchMethod_closure","JSInvocationMirror","Symbol","_","NoSuchMethodError_toString_closure","NoSuchMethodError","ConstantMapView","_ConstantMapKeyIterable","ConstantStringMap","Map","objectAssign","JS_CONST","Interceptor","JSBool","Null","JSNull","JavaScriptObject","JSObject","LegacyJavaScriptObject","PlainJavaScriptObject","UnknownJavaScriptObject","Function","JavaScriptFunction","EfficientLengthIterable","JSIndexable","JSUnmodifiableArray","double","num","JSNumber","int","JSInt","JSNumNotInt","String","JSString","SentinelValue","FixedLengthListMixin","UnmodifiableListBase","ConstantMap","Invocation","StackTrace","Closure0Args","Closure2Args","TearOffClosure","_Required","NativeByteBuffer","ByteBuffer","NativeTypedData","ByteData","NativeTypedArray","NativeTypedArrayOfDouble","NativeTypedArrayOfInt","NativeFloat32List","NativeFloat64List","NativeInt16List","NativeInt32List","NativeInt8List","NativeUint16List","NativeUint32List","NativeUint8ClampedList","Uint8List","_Error","TypeError","Error","_Completer","Stream","StreamTransformerBase","Zone","_Zone","_RootZone","_HashMap","ListBase","MapBase","_UnmodifiableMapMixin","MapView","UnmodifiableMapView","Base64Codec","Base64Encoder","Base64Decoder","Converter","_Enum","OutOfMemoryError","_StringStackTrace","HtmlElement","AbortPaymentEvent","AbsoluteOrientationSensor","Accelerometer","AccessibleNode","AccessibleNodeList","AmbientLightSensor","AnchorElement","Animation","AnimationEffectReadOnly","AnimationEffectTiming","AnimationEffectTimingReadOnly","AnimationEvent","AnimationPlaybackEvent","AnimationTimeline","AnimationWorkletGlobalScope","ApplicationCache","ApplicationCacheErrorEvent","AreaElement","AudioElement","AuthenticatorAssertionResponse","AuthenticatorAttestationResponse","AuthenticatorResponse","BRElement","BackgroundFetchClickEvent","BackgroundFetchEvent","BackgroundFetchFailEvent","BackgroundFetchFetch","BackgroundFetchManager","BackgroundFetchRegistration","BackgroundFetchSettledFetch","BackgroundFetchedEvent","BarProp","BarcodeDetector","BaseElement","BatteryManager","BeforeInstallPromptEvent","BeforeUnloadEvent","Blob","BlobEvent","BluetoothRemoteGattDescriptor","Body","BodyElement","BroadcastChannel","BudgetState","ButtonElement","CDataSection","CacheStorage","CanMakePaymentEvent","CanvasCaptureMediaStreamTrack","CanvasElement","CanvasGradient","CanvasPattern","CanvasRenderingContext2D","CharacterData","Client","Clients","ClipboardEvent","CloseEvent","Comment","CompositionEvent","ContentElement","CookieStore","Coordinates","Credential","CredentialUserData","CredentialsContainer","Crypto","CryptoKey","Css","CssCharsetRule","CssConditionRule","CssFontFaceRule","CssGroupingRule","CssImageValue","CssImportRule","CssKeyframeRule","CssKeyframesRule","CssKeywordValue","CssMatrixComponent","CssMediaRule","CssNamespaceRule","CssNumericValue","CssPageRule","CssPerspective","CssPositionValue","CssResourceValue","CssRotation","CssRule","CssScale","CssSkew","CssStyleDeclaration","CssStyleDeclarationBase","CssStyleRule","CssStyleSheet","CssStyleValue","CssSupportsRule","CssTransformComponent","CssTransformValue","CssTranslation","CssUnitValue","CssUnparsedValue","CssVariableReferenceValue","CssViewportRule","CssurlImageValue","CustomElementRegistry","CustomEvent","DListElement","DataElement","DataListElement","DataTransfer","DataTransferItem","DataTransferItemList","DedicatedWorkerGlobalScope","DeprecatedStorageInfo","DeprecatedStorageQuota","DeprecationReport","DetailsElement","DetectedBarcode","DetectedFace","DetectedText","DeviceAcceleration","DeviceMotionEvent","DeviceOrientationEvent","DeviceRotationRate","DialogElement","DirectoryEntry","DirectoryReader","DivElement","Document","DocumentFragment","DocumentOrShadowRoot","DocumentTimeline","DomError","DomException","DomImplementation","DomIterator","DomMatrix","DomMatrixReadOnly","DomParser","DomPoint","DomPointReadOnly","DomQuad","DomRectList","Rectangle","DomRectReadOnly","DomStringList","DomStringMap","DomTokenList","Element","EmbedElement","Entry","ErrorEvent","Event","EventSource","EventTarget","ExtendableEvent","ExtendableMessageEvent","External","FaceDetector","FederatedCredential","FetchEvent","FieldSetElement","File","FileEntry","FileList","FileReader","FileSystem","FileWriter","FocusEvent","FontFace","FontFaceSet","FontFaceSetLoadEvent","FontFaceSource","ForeignFetchEvent","FormData","FormElement","Gamepad","GamepadButton","GamepadEvent","GamepadPose","Geolocation","Geoposition","Gyroscope","HRElement","HashChangeEvent","HeadElement","Headers","HeadingElement","History","HtmlCollection","HtmlDocument","HtmlFormControlsCollection","HtmlHtmlElement","HtmlHyperlinkElementUtils","HtmlOptionsCollection","HttpRequest","HttpRequestEventTarget","HttpRequestUpload","IFrameElement","IdleDeadline","ImageBitmap","ImageBitmapRenderingContext","ImageCapture","ImageData","ImageElement","InputDeviceCapabilities","InputElement","InstallEvent","IntersectionObserver","IntersectionObserverEntry","InterventionReport","KeyboardEvent","KeyframeEffect","KeyframeEffectReadOnly","LIElement","LabelElement","LegendElement","LinearAccelerationSensor","LinkElement","Location","Magnetometer","MapElement","MathMLElement","MediaCapabilities","MediaCapabilitiesInfo","MediaDeviceInfo","MediaDevices","MediaElement","MediaEncryptedEvent","MediaError","MediaKeyMessageEvent","MediaKeySession","MediaKeyStatusMap","MediaKeySystemAccess","MediaKeys","MediaKeysPolicy","MediaList","MediaMetadata","MediaQueryList","MediaQueryListEvent","MediaRecorder","MediaSession","MediaSettingsRange","MediaSource","MediaStream","MediaStreamEvent","MediaStreamTrack","MediaStreamTrackEvent","MemoryInfo","MenuElement","MessageChannel","MessageEvent","MessagePort","MetaElement","Metadata","MeterElement","MidiAccess","MidiConnectionEvent","MidiInput","MidiInputMap","MidiMessageEvent","MidiOutput","MidiOutputMap","MidiPort","MimeType","MimeTypeArray","ModElement","MouseEvent","MutationEvent","MutationObserver","MutationRecord","NavigationPreloadManager","Navigator","NavigatorAutomationInformation","NavigatorConcurrentHardware","NavigatorCookies","NavigatorUserMediaError","NetworkInformation","Node","NodeFilter","NodeIterator","NodeList","NonDocumentTypeChildNode","NonElementParentNode","NoncedElement","Notification","NotificationEvent","OListElement","ObjectElement","OffscreenCanvas","OffscreenCanvasRenderingContext2D","OptGroupElement","OptionElement","OrientationSensor","OutputElement","OverconstrainedError","PageTransitionEvent","PaintRenderingContext2D","PaintSize","PaintWorkletGlobalScope","ParagraphElement","ParamElement","PasswordCredential","Path2D","PaymentAddress","PaymentInstruments","PaymentManager","PaymentRequest","PaymentRequestEvent","PaymentRequestUpdateEvent","PaymentResponse","Performance","PerformanceEntry","PerformanceLongTaskTiming","PerformanceMark","PerformanceMeasure","PerformanceNavigation","PerformanceNavigationTiming","PerformanceObserver","PerformanceObserverEntryList","PerformancePaintTiming","PerformanceResourceTiming","PerformanceServerTiming","PerformanceTiming","PermissionStatus","Permissions","PhotoCapabilities","PictureElement","Plugin","PluginArray","PointerEvent","PopStateEvent","PositionError","PreElement","Presentation","PresentationAvailability","PresentationConnection","PresentationConnectionAvailableEvent","PresentationConnectionCloseEvent","PresentationConnectionList","PresentationReceiver","PresentationRequest","ProcessingInstruction","ProgressElement","ProgressEvent","PromiseRejectionEvent","PublicKeyCredential","PushEvent","PushManager","PushMessageData","PushSubscription","PushSubscriptionOptions","QuoteElement","Range","RelatedApplication","RelativeOrientationSensor","RemotePlayback","ReportBody","ReportingObserver","ResizeObserver","ResizeObserverEntry","RtcCertificate","RtcDataChannel","RtcDataChannelEvent","RtcDtmfSender","RtcDtmfToneChangeEvent","RtcIceCandidate","RtcLegacyStatsReport","RtcPeerConnection","RtcPeerConnectionIceEvent","RtcRtpContributingSource","RtcRtpReceiver","RtcRtpSender","RtcSessionDescription","RtcStatsReport","RtcStatsResponse","RtcTrackEvent","Screen","ScreenOrientation","ScriptElement","ScrollState","ScrollTimeline","SecurityPolicyViolationEvent","SelectElement","Selection","Sensor","SensorErrorEvent","ServiceWorker","ServiceWorkerContainer","ServiceWorkerGlobalScope","ServiceWorkerRegistration","ShadowElement","ShadowRoot","SharedArrayBuffer","SharedWorker","SharedWorkerGlobalScope","SlotElement","SourceBuffer","SourceBufferList","SourceElement","SpanElement","SpeechGrammar","SpeechGrammarList","SpeechRecognition","SpeechRecognitionAlternative","SpeechRecognitionError","SpeechRecognitionEvent","SpeechRecognitionResult","SpeechSynthesis","SpeechSynthesisEvent","SpeechSynthesisUtterance","SpeechSynthesisVoice","StaticRange","Storage","StorageEvent","StorageManager","StyleElement","StyleMedia","StylePropertyMap","StylePropertyMapReadonly","StyleSheet","SyncEvent","SyncManager","TableCaptionElement","TableCellElement","TableColElement","TableElement","TableRowElement","TableSectionElement","TaskAttributionTiming","TemplateElement","Text","TextAreaElement","TextDetector","TextEvent","TextMetrics","TextTrack","TextTrackCue","TextTrackCueList","TextTrackList","TimeElement","TimeRanges","TitleElement","Touch","TouchEvent","TouchList","TrackDefault","TrackDefaultList","TrackElement","TrackEvent","TransitionEvent","TreeWalker","TrustedHtml","TrustedScriptUrl","TrustedUrl","UIEvent","UListElement","UnderlyingSourceBase","UnknownElement","Url","UrlSearchParams","VR","VRCoordinateSystem","VRDevice","VRDeviceEvent","VRDisplay","VRDisplayCapabilities","VRDisplayEvent","VREyeParameters","VRFrameData","VRFrameOfReference","VRPose","VRSession","VRSessionEvent","VRStageBounds","VRStageBoundsPoint","VRStageParameters","ValidityState","VideoElement","VideoPlaybackQuality","VideoTrack","VideoTrackList","VisualViewport","VttCue","VttRegion","WebSocket","WheelEvent","Window","WindowClient","Worker","WorkerGlobalScope","WorkerPerformance","WorkletAnimation","WorkletGlobalScope","XPathEvaluator","XPathExpression","XPathNSResolver","XPathResult","XmlDocument","XmlSerializer","XsltProcessor","_Attr","_Bluetooth","_BluetoothCharacteristicProperties","_BluetoothDevice","_BluetoothRemoteGATTCharacteristic","_BluetoothRemoteGATTServer","_BluetoothRemoteGATTService","_BluetoothUUID","_BudgetService","_Cache","_Clipboard","_CssRuleList","_DOMFileSystemSync","_DirectoryEntrySync","_DirectoryReaderSync","_DocumentType","_DomRect","_EntrySync","_FileEntrySync","_FileReaderSync","_FileWriterSync","_GamepadList","_HTMLAllCollection","_HTMLDirectoryElement","_HTMLFontElement","_HTMLFrameElement","_HTMLFrameSetElement","_HTMLMarqueeElement","_Mojo","_MojoHandle","_MojoInterfaceInterceptor","_MojoInterfaceRequestEvent","_MojoWatcher","_NFC","_NamedNodeMap","_PagePopupController","_Report","_Request","_ResourceProgressEvent","_Response","_SpeechRecognitionResultList","_StyleSheetList","_SubtleCrypto","_USB","_USBAlternateInterface","_USBConfiguration","_USBConnectionEvent","_USBDevice","_USBEndpoint","_USBInTransferResult","_USBInterface","_USBIsochronousInTransferPacket","_USBIsochronousInTransferResult","_USBIsochronousOutTransferPacket","_USBIsochronousOutTransferResult","_USBOutTransferResult","_WorkerLocation","_WorkerNavigator","_Worklet","EventStreamProvider","_EventStream","_StructuredClone","_AcceptStructuredClone","Cursor","CursorWithValue","Database","IdbFactory","Index","KeyRange","ObjectStore","Observation","Observer","ObserverChanges","OpenDBRequest","Request","Transaction","VersionChangeEvent","AElement","Angle","AnimateElement","AnimateMotionElement","AnimateTransformElement","AnimatedAngle","AnimatedBoolean","AnimatedEnumeration","AnimatedInteger","AnimatedLength","AnimatedLengthList","AnimatedNumber","AnimatedNumberList","AnimatedPreserveAspectRatio","AnimatedRect","AnimatedString","AnimatedTransformList","AnimationElement","CircleElement","ClipPathElement","DefsElement","DescElement","DiscardElement","EllipseElement","FEBlendElement","FEColorMatrixElement","FEComponentTransferElement","FECompositeElement","FEConvolveMatrixElement","FEDiffuseLightingElement","FEDisplacementMapElement","FEDistantLightElement","FEFloodElement","FEFuncAElement","FEFuncBElement","FEFuncGElement","FEFuncRElement","FEGaussianBlurElement","FEImageElement","FEMergeElement","FEMergeNodeElement","FEMorphologyElement","FEOffsetElement","FEPointLightElement","FESpecularLightingElement","FESpotLightElement","FETileElement","FETurbulenceElement","FilterElement","ForeignObjectElement","GElement","GeometryElement","GraphicsElement","Length","LengthList","LineElement","LinearGradientElement","MarkerElement","MaskElement","Matrix","MetadataElement","Number","NumberList","PathElement","PatternElement","Point","PointList","PolygonElement","PolylineElement","PreserveAspectRatio","RadialGradientElement","Rect","RectElement","SetElement","StopElement","StringList","SvgElement","SvgSvgElement","SwitchElement","SymbolElement","TSpanElement","TextContentElement","TextElement","TextPathElement","TextPositioningElement","Transform","TransformList","UnitTypes","UseElement","ViewElement","_GradientElement","_SVGComponentTransferFunctionElement","_SVGFEDropShadowElement","_SVGMPathElement","AnalyserNode","AudioBuffer","AudioBufferSourceNode","AudioContext","AudioDestinationNode","AudioListener","AudioNode","AudioParam","AudioParamMap","AudioProcessingEvent","AudioScheduledSourceNode","AudioTrack","AudioTrackList","AudioWorkletGlobalScope","AudioWorkletNode","AudioWorkletProcessor","BaseAudioContext","BiquadFilterNode","ChannelMergerNode","ChannelSplitterNode","ConstantSourceNode","ConvolverNode","DelayNode","DynamicsCompressorNode","GainNode","IirFilterNode","MediaElementAudioSourceNode","MediaStreamAudioDestinationNode","MediaStreamAudioSourceNode","OfflineAudioCompletionEvent","OfflineAudioContext","OscillatorNode","PannerNode","PeriodicWave","ScriptProcessorNode","StereoPannerNode","WaveShaperNode","ActiveInfo","AngleInstancedArrays","Buffer","Canvas","ColorBufferFloat","CompressedTextureAstc","CompressedTextureAtc","CompressedTextureETC1","CompressedTextureEtc","CompressedTexturePvrtc","CompressedTextureS3TC","CompressedTextureS3TCsRgb","ContextEvent","DebugRendererInfo","DebugShaders","DepthTexture","DrawBuffers","EXTsRgb","ExtBlendMinMax","ExtColorBufferFloat","ExtColorBufferHalfFloat","ExtDisjointTimerQuery","ExtDisjointTimerQueryWebGL2","ExtFragDepth","ExtShaderTextureLod","ExtTextureFilterAnisotropic","Framebuffer","GetBufferSubDataAsync","LoseContext","OesElementIndexUint","OesStandardDerivatives","OesTextureFloat","OesTextureFloatLinear","OesTextureHalfFloat","OesTextureHalfFloatLinear","OesVertexArrayObject","Program","Query","Renderbuffer","RenderingContext","RenderingContext2","Sampler","Shader","ShaderPrecisionFormat","Sync","Texture","TimerQueryExt","TransformFeedback","UniformLocation","VertexArrayObject","VertexArrayObjectOes","WebGL","_WebGL2RenderingContextBase","WritableStream","ReadableStream","TransformStream","TransformStreamDefaultController","EncodedStreams","RTCEncodedFrame","RTCEncodedAudioFrame","RTCEncodedVideoFrame","RTCEncodedFrameMetadata","RTCEncodedAudioFrameMetadata","RTCEncodedVideoFrameMetadata","RTCTransformEvent","RTCRtpScriptTransformer","RTCRtpScriptTransform","Promise","Algorithm","AesGcmParams","CryptorError","TransformMessage","EnableTransformMessage","RemoveTransformMessage","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin&FixedLengthListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin&FixedLengthListMixin","_ListBase&Object&ListMixin","_UnmodifiableMapView&MapView&_UnmodifiableMapMixin","_CssStyleDeclaration&JavaScriptObject&CssStyleDeclarationBase","_DomRectList&JavaScriptObject&ListMixin","_DomRectList&JavaScriptObject&ListMixin&ImmutableListMixin","_DomStringList&JavaScriptObject&ListMixin","_DomStringList&JavaScriptObject&ListMixin&ImmutableListMixin","_FileList&JavaScriptObject&ListMixin","_FileList&JavaScriptObject&ListMixin&ImmutableListMixin","_HtmlCollection&JavaScriptObject&ListMixin","_HtmlCollection&JavaScriptObject&ListMixin&ImmutableListMixin","_MidiInputMap&JavaScriptObject&MapMixin","_MidiOutputMap&JavaScriptObject&MapMixin","_MimeTypeArray&JavaScriptObject&ListMixin","_MimeTypeArray&JavaScriptObject&ListMixin&ImmutableListMixin","_NodeList&JavaScriptObject&ListMixin","_NodeList&JavaScriptObject&ListMixin&ImmutableListMixin","_PluginArray&JavaScriptObject&ListMixin","_PluginArray&JavaScriptObject&ListMixin&ImmutableListMixin","_RtcStatsReport&JavaScriptObject&MapMixin","_SourceBufferList&EventTarget&ListMixin","_SourceBufferList&EventTarget&ListMixin&ImmutableListMixin","_SpeechGrammarList&JavaScriptObject&ListMixin","_SpeechGrammarList&JavaScriptObject&ListMixin&ImmutableListMixin","_Storage&JavaScriptObject&MapMixin","_TextTrackCueList&JavaScriptObject&ListMixin","_TextTrackCueList&JavaScriptObject&ListMixin&ImmutableListMixin","_TextTrackList&EventTarget&ListMixin","_TextTrackList&EventTarget&ListMixin&ImmutableListMixin","_TouchList&JavaScriptObject&ListMixin","_TouchList&JavaScriptObject&ListMixin&ImmutableListMixin","__CssRuleList&JavaScriptObject&ListMixin","__CssRuleList&JavaScriptObject&ListMixin&ImmutableListMixin","__GamepadList&JavaScriptObject&ListMixin","__GamepadList&JavaScriptObject&ListMixin&ImmutableListMixin","__NamedNodeMap&JavaScriptObject&ListMixin","__NamedNodeMap&JavaScriptObject&ListMixin&ImmutableListMixin","__SpeechRecognitionResultList&JavaScriptObject&ListMixin","__SpeechRecognitionResultList&JavaScriptObject&ListMixin&ImmutableListMixin","__StyleSheetList&JavaScriptObject&ListMixin","__StyleSheetList&JavaScriptObject&ListMixin&ImmutableListMixin","_LengthList&JavaScriptObject&ListMixin","_LengthList&JavaScriptObject&ListMixin&ImmutableListMixin","_NumberList&JavaScriptObject&ListMixin","_NumberList&JavaScriptObject&ListMixin&ImmutableListMixin","_StringList&JavaScriptObject&ListMixin","_StringList&JavaScriptObject&ListMixin&ImmutableListMixin","_TransformList&JavaScriptObject&ListMixin","_TransformList&JavaScriptObject&ListMixin&ImmutableListMixin","_AudioParamMap&JavaScriptObject&MapMixin","addRules","addErasedTypes","_scheduleImmediateJsOverride","_scheduleImmediateWithSetImmediate","_scheduleImmediateWithTimer","_emptyList","noSuchMethodPattern","notClosurePattern","nullCallPattern","nullLiteralCallPattern","undefinedCallPattern","undefinedLiteralCallPattern","nullPropertyPattern","nullLiteralPropertyPattern","undefinedPropertyPattern","undefinedLiteralPropertyPattern","_scheduleImmediateClosure","_inverseAlphabet","_emptyBuffer","_secureRandom","Record","getInterceptor$","getInterceptor$x","getInterceptor$asx","async___startMicrotaskLoop$closure","async__AsyncRun__scheduleImmediateJsOverride$closure","async__AsyncRun__scheduleImmediateWithSetImmediate$closure","async__AsyncRun__scheduleImmediateWithTimer$closure","getInterceptor$ax","toString","_captured_this_0","future","dart:_js_helper#_box_0","callback","_captured_div_1","_captured_span_2","_captured_f_1","dart:async#_box_1","_captured_sourceResult_1","_captured_hasError_2","listener","_captured_originalSource_0","error","stackTrace","keys","result","_captured_prototypeForTag_0","_captured_getUnknownTag_0","_captured_getTag_0","_captured_protected_0","_captured_bodyFunction_0","_captured_e_1","_captured_s_2","_captured_value_1","_captured_T_1","_captured_onData_0","setupTransform","decodeFunction","setRange","_captured_completer_0","encodeFunction","_captured__convertedObjects_0","_captured_keyIndex_1","trackId","participantId","_captured_c_0","_captured_keySet_1","map","_captured_sb_1","_captured_namedArgumentList_1","_captured_arguments_2","_withValue","dart:_rti#_as","dart:html#_useCapture","dart:_internal#_message","forEach","add","dart:core#_contents","first","dart:_rti#_precomputed1","dart:_rti#_rest","dart:_js_helper#_strings","dart:_js_helper#_newHashTable","dart:_js_helper#_addHashTableEntry","dart:_js_helper#_nums","internalSet","dart:_js_helper#_rest","internalComputeHashCode","dart:_js_helper#_newLinkedCell","internalFindBucketIndex","hashMapCellValue","dart:_js_helper#_first","dart:_js_helper#_last","dart:_js_helper#_next","dart:_js_helper#_length","dart:_js_helper#_modifications","hashMapCellKey","modifiedObject","dart:_rti#_is","dart:_rti#_kind","dart:_rti#_primary","dart:_rti#_requiredPositional","dart:_rti#_optionalPositional","dart:_rti#_named","dart:_rti#_eval","dart:_rti#_bind","width","height","dart:html#_height","dart:html#_width","hashCode","dart:_rti#_rti","message","dart:_rti#_canonicalRecipe","dart:_rti#_bindCache","dart:_rti#_evalCache","dart:_rti#_cachedRuntimeType","dart:_rti#_specializedTestResource","iterator","moveNext","current","internalGet","dart:_interceptors#_iterable","dart:_interceptors#_length","dart:_interceptors#_index","dart:_interceptors#_current=","length","dart:html#_current","dart:html#_position","dart:html#_length","dart:html#_array","name","dart:core#_errorName","dart:core#_hasValue","dart:core#_errorExplanation","invalidValue","dart:_internal#_iterable","dart:_internal#_length","dart:_internal#_index","dart:_internal#_current=","elementAt","start","end","dart:_js_helper#_map","count","dart:html#_target","dart:html#_eventType","dart:async#_resultOrListeners","dart:async#_zone","dart:async#_state","dart:async#_removeListeners","source","dart:async#_nextListener","listenerHasError","listenerValueOrError","state","dart:async#_reverseListeners","dart:async#_cloneResult","dart:async#_prependListeners","listeners","bindCallbackGuarded","next","storedCallback","runGuarded","dart:_js_helper#_trace","dart:_js_helper#_exception","dartException","dart:_js_helper#_irritant","dart:_interceptors#_shrOtherPositive","matchTypeError","dart:_js_helper#_message","dart:_js_helper#_method","dart:_js_helper#_receiver","dart:_js_helper#_pattern","dart:_js_helper#_arguments","dart:_js_helper#_argumentsExpr","dart:_js_helper#_expr","dart:_interceptors#_shrBothPositive","matchesErrorTest","errorCallback","handleError","runBinary","runUnary","run","then","dart:async#_addListener","registerBinaryCallback","dart:_js_helper#_cell","dart:_js_helper#_current=","variableName","dart:html#_onData","dart:_js_helper#_interceptor","isSync","dart:async#_future","completeError","complete","dart:async#_thenAwait","dart:_rti#_message","dart:async#_completeError","dart:async#_asyncCompleteError","dart:async#_setErrorObject","dart:async#_asyncComplete","dart:async#_chainFuture","dart:async#_completeWithValue","dart:async#_chainForeignFuture","dart:async#_asyncCompleteWithValue","addEventListener","dart:html#_addEventListener","bindUnaryCallbackGuarded","runUnaryGuarded","postMessage","mustCopy","walk","convert","lastError","enabled","dart:_interceptors#_removeWhere","sharedKey","setKey","cryptoKeyRing","currentKeyIndex","ratchetKey","codec","dart:core#_enumToString","dart:core#_name","pipeThrough","pipeTo","file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/web/e2ee.cryptor.dart#_#Cryptor#kind#A","worker","enqueue","sublist","synchronizationSource","data","getUnencryptedBytes","getMetadata","getKeySet","keyOptions","ratchetWindowSize","encryptionKey","timestamp","toBytes","setKeySetFromMaterial","dart:_internal#_buffer","dart:_native_typed_data#_setRangeFast","skip","toList","dart:_internal#_startIndex","dart:_internal#_endIndex","dart:_internal#_endOrLength","dart:_internal#_start","dart:_native_typed_data#_checkPosition","dart:_native_typed_data#_invalidPosition","isUndefined","type","setInt8","sendCounts","nextInt","dart:_native_typed_data#_setUint32","dart:math#_buffer","dart:_native_typed_data#_getUint32","dart:collection#_computeKeys","dart:collection#_keys","dart:collection#_length","dart:collection#_strings","dart:collection#_nums","dart:collection#_rest","dart:collection#_get","dart:collection#_getBucket","dart:collection#_findBucketIndex","dart:collection#_map","dart:collection#_offset","dart:collection#_current=","containsKey","addAll","dart:_internal#_f","dart:_internal#_source","dart:_internal#_iterator","dart:_interceptors#_addAllFromArray","dart:collection#_containsKey","file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/web/e2ee.cryptor.dart#_ratchetCompleter","material","ratchetMaterial","ratchetSalt","deriveKeys","ratchet","copies","values","dart:core#_value","findSlot","copy","copyList","forEachObjectKey","encode","dart:convert#_alphabet","dart:convert#_state","dart:_interceptors#_tdivFast","dart:_interceptors#_codeUnitAt","toRadixString","codeUnitAt","dart:_interceptors#_tdivSlow","dart:_internal#_string","decode","offset","substring","forEachJsField","isUtc","noSuchMethod","argumentCount","names","dart:_internal#_name","dart:_js_helper#_typeArgumentCount","dart:_js_helper#_namedArgumentNames","dart:_js_helper#_kind","dart:_js_helper#_memberName","memberName","positionalArguments","namedArguments","comma","dart:core#_arguments","dart:core#_namedArguments","dart:core#_receiver","dart:core#_memberName","dart:core#_existingArgumentNames","dart:_js_helper#_keys","dart:_js_helper#_jsObject","kind","msgType","code","==","runtimeType","checkMutable","checkGrowable","removeLast","removeWhere","where","join","last","contains","isEmpty","isNotEmpty","dart:_interceptors#_toListGrowable","dart:_interceptors#_toListFixed","[]","[]=","remainder","abs","%","dart:_interceptors#_isInt32","dart:_interceptors#_shlPositive","dart:_interceptors#_shrReceiverPositive","matchAsPrefix","+","toLowerCase","*","padLeft","codeUnits","indexOf","dart:_internal#_grow","id","dart:_js_helper#_keysArray","dart:_js_helper#_fetch","isGetter","isAccessor","dart:_js_helper#_internalName","dart:_js_helper#_captured_namedArgumentList_1","dart:_js_helper#_captured_arguments_2","call","dart:_js_helper#_name","dart:_js_helper#_target","internalContainsKey","dart:_js_helper#_modified","dart:_js_helper#_getBucket","dart:_js_helper#_getTableCell","dart:_js_helper#_getTableBucket","dart:_js_helper#_setTableEntry","dart:_js_helper#_deleteTableEntry","dart:_js_helper#_containsTableEntry","dart:_js_helper#_previous","dart:_js_helper#_captured_getTag_0","dart:_js_helper#_captured_getUnknownTag_0","dart:_js_helper#_captured_prototypeForTag_0","lengthInBytes","asUint8List","buffer","offsetInBytes","getUint32","setUint32","dart:_rti#_precomputed2","dart:_rti#_precomputed3","dart:_rti#_precomputed4","dart:async#_box_0","dart:async#_captured_div_1","dart:async#_captured_span_2","dart:async#_captured_callback_0","dart:async#_once","dart:async#_handle","dart:async#_tick","dart:async#_captured_this_0","dart:async#_captured_callback_1","dart:async#_captured_bodyFunction_0","dart:async#_captured_protected_0","handlesValue","handlesError","hasErrorTest","handlesComplete","dart:async#_onValue","dart:async#_onError","dart:async#_errorTest","dart:async#_whenCompleteAction","hasErrorCallback","handleValue","handleWhenComplete","shouldChain","dart:async#_mayComplete","dart:async#_isPendingComplete","dart:async#_mayAddListener","dart:async#_isChained","dart:async#_isComplete","dart:async#_hasError","dart:async#_ignoreError","dart:async#_setChained","dart:async#_setPendingComplete","dart:async#_clearPendingComplete","dart:async#_error","dart:async#_chainSource","dart:async#_setValue","dart:async#_setError","dart:async#_complete","dart:async#_captured_listener_1","dart:async#_captured_this_1","dart:async#_captured_e_1","dart:async#_captured_s_2","dart:async#_captured_value_1","dart:async#_captured_error_1","dart:async#_captured_stackTrace_2","dart:async#_captured_hasError_2","dart:async#_captured_originalSource_0","dart:async#_captured_sourceResult_1","dart:async#_captured_future_1","dart:async#_subscription","dart:async#_stateData","dart:async#_hasValue","inSameErrorZone","dart:async#_captured_error_0","dart:async#_captured_stackTrace_1","dart:async#_scheduleMicrotask","errorZone","bindCallback","handleUncaughtError","registerCallback","registerUnaryCallback","dart:async#_captured_f_1","dart:async#_captured_T_2","dart:collection#_set","dart:collection#_addHashTableEntry","dart:collection#_computeHashCode","dart:collection#_filter","getRange","dart:collection#_box_0","dart:collection#_captured_result_1","encoder","decoder","dart:convert#_encoder","dart:convert#_urlSafe","createBuffer","close","dart:core#_box_0","dart:core#_captured_sb_1","millisecondsSinceEpoch","year","month","day","hour","minute","second","millisecond","microsecond","indexable","dart:core#_stackTrace","write","writeAll","dart:core#_writeString","algorithm","dart:html#_postMessage_1","dart:html#_postMessage_2","onMessage","dart:html#_left","left","dart:html#_top","top","localName","dart:html#_localName","dart:html#_get_data","dart:html#_start","dart:html#_getItem","dart:html#_captured_keys_0","nodeValue","dart:html#_key","dart:html#_setItem","forTarget","listen","isPaused","dart:html#_tryResume","dart:html#_pauseCount","dart:html#_captured_onData_0","readSlot","writeSlot","cleanupSlots","dart:html_common#_box_0","dart:html_common#_captured_this_1","dart:html_common#_captured_this_0","dart:html_common#_captured_map_1","newJsObject","putIntoObject","newJsMap","putIntoMap","newJsList","cloneNotRequired","newDartList","identicalInJs","dart:js_util#_captured__convertedObjects_0","dart:js_util#_captured_completer_0","dart:js_util#_captured_T_1","dart:math#_getRandomBytes","getItem","dart:web_audio#_getItem","dart:web_audio#_captured_keys_0","index","setParticipantId","setKeyIndex","setEnabled","updateCodec","makeIv","file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/web/e2ee.cryptor.dart#_captured_this_0","file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/web/e2ee.cryptor.dart#_captured_keyIndex_1","file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/web/e2ee.worker.dart#_captured_trackId_0","file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/web/e2ee.worker.dart#_captured_participantId_0","file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/web/e2ee.worker.dart#_captured_c_0","file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/web/e2ee.worker.dart#_captured_keySet_1","file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/web/e2ee.worker.dart#_captured_participantId_2","$indexSet","$add","$eq","$index","$gt","$ge","$sub","$mod","$lt","$mul","$negate","$div","$tdiv","$shl","$shr","$and","$or","$xor","$le","instanceTypeName","constructorNameFallback","isRequired","interceptorFieldName","receiverFieldName","_rtiEval","setDispatchProperty","propertyGet","_setPrecomputed1","_lookupFutureRti","asString","asBool","allocate","_setRequiredPositional","_setOptionalPositional","_setNamed","asRti","instanceOf","_setCachedRuntimeType","_getKind","_setSpecializedTestResource","_setIsTestFunction","_setAsCheckFunction","isSubtype","_getSpecializedTestResource","_getReturnType","_getPrimary","_getGenericFunctionParameterIndex","unmangleGlobalNameIfPreservedAnyways","_lookupErasedRti","_parseRecipe","_getEvalCache","_setEvalCache","_getBindCache","_setBindCache","_createTerminalRti","_setKind","_setCanonicalRecipe","_canonicalRecipeOfStar","_recipeJoin","_setPrimary","_canonicalRecipeOfQuestion","_canonicalRecipeOfFutureOr","_createGenericFunctionParameterRti","_canonicalRecipeOfInterface","_createInterfaceRti","_setRest","arrayConcat","_canonicalRecipeOfBinding","_recipeJoin5","_createBindingRti","_canonicalRecipeOfRecord","_createRecordRti","_canonicalRecipeOfFunction","_canonicalRecipeOfFunctionParameters","_createFunctionRti","_canonicalRecipeOfGenericFunction","_recipeJoin4","charCodeAt","toGenericFunctionParameter","_lookupDynamicRti","_lookupVoidRti","pushStackFrame","push","setPosition","handleTypeArguments","arraySplice","handleOptionalGroup","handleNamedGroup","collectNamed","handleStartRecord","isDigit","evalTypeVariable","_lookupNeverRti","_lookupAnyRti","stringLessThan","lookupSupertype","_getInterfaceTypeArguments","_getRest","_createTimer","_future","_setValue","_isChained","_chainSource","_setChained","_hasError","_error","_zone","_isComplete","_removeListeners","_cloneResult","_setErrorObject","_scheduleImmediate","writeFinalChunk","_stateBits","_statePadding","objectToHumanReadableString","_stringFromUint8List","_writeOne","hash4","printToConsole","_tryResume","fieldADI","apply","listToString","_handleIEtoString","_codeUnitAt","_grow","_pow2roundup","empty","_fetch","markUnmodifiableList","unvalidated","_containsTableEntry","_getBucket","_modified","_rtiBind","_mayComplete","_completeError","_errorTest","unsafeCast","thenAwait","_mayAddListener","_setError","_whenCompleteAction","_onValue","_onError","_complete","throwWithStackTrace","_hasTableEntry","_set","_computeHashCode","_HashMap._set","identityHashCode","tooFew","_writeString","getName","extractStackTrace","withInvocation","convertDartToNative_SerializedScriptValue","_getItem","fromMillisecondsSinceEpoch","_getRandomBytes","secure","PropsRTCTransformEvent|get#transformer","getProperty","PropsRTCRtpScriptTransformer|get#options","PropsRTCRtpScriptTransformer|get#readable","PropsRTCRtpScriptTransformer|get#writable","convertNativeToDart_SerializedScriptValue","MessageEvent.data","Cryptor.setEnabled","Cryptor.setKeyIndex","provokeCallErrorOnNull","provokeCallErrorOnUndefined","provokePropertyErrorOnNull","provokePropertyErrorOnUndefined","_buffer"], - "mappings": "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", + "sources": ["org-dartlang-sdk:///lib/_internal/js_runtime/lib/interceptors.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_array.dart","org-dartlang-sdk:///lib/internal/internal.dart","org-dartlang-sdk:///lib/internal/iterable.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_names.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/rti.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/date_time_patch.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/linked_hash_map.dart","org-dartlang-sdk:///lib/core/errors.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/records.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/string_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_typed_data.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/synced/recipe_syntax.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/async_patch.dart","org-dartlang-sdk:///lib/async/future_impl.dart","org-dartlang-sdk:///lib/async/zone.dart","org-dartlang-sdk:///lib/async/async_error.dart","org-dartlang-sdk:///lib/async/schedule_microtask.dart","org-dartlang-sdk:///lib/async/stream.dart","org-dartlang-sdk:///lib/async/stream_impl.dart","org-dartlang-sdk:///lib/async/stream_controller.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/collection_patch.dart","org-dartlang-sdk:///lib/collection/maps.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/core_patch.dart","org-dartlang-sdk:///lib/convert/base64.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_string.dart","org-dartlang-sdk:///lib/core/date_time.dart","org-dartlang-sdk:///lib/core/exceptions.dart","org-dartlang-sdk:///lib/core/iterable.dart","org-dartlang-sdk:///lib/core/object.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_allow_interop_patch.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/js_util_patch.dart","../lib/src/e2ee.worker/e2ee.cryptor.dart","../lib/src/e2ee.worker/e2ee.keyhandler.dart","../lib/src/e2ee.worker/e2ee.worker.dart","../../../.pub-cache/hosted/pub.dev/logging-1.3.0/lib/src/logger.dart","../lib/src/e2ee.worker/e2ee.sfi_guard.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_primitives.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/late_helper.dart","org-dartlang-sdk:///lib/internal/errors.dart","../../../.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/iterable_extensions.dart","../lib/src/e2ee.worker/e2ee.utils.dart","org-dartlang-sdk:///lib/collection/list.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_number.dart","org-dartlang-sdk:///lib/internal/bytes_builder.dart","org-dartlang-sdk:///lib/typed_data/typed_data.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/internal_patch.dart","org-dartlang-sdk:///lib/internal/symbol.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/constant_map.dart","org-dartlang-sdk:///lib/async/broadcast_stream_controller.dart","org-dartlang-sdk:///lib/core/enum.dart","org-dartlang-sdk:///lib/core/null.dart","org-dartlang-sdk:///lib/core/stacktrace.dart","org-dartlang-sdk:///lib/js_util/js_util.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/math_patch.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/js_interop_patch.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/js_interop_unsafe_patch.dart","org-dartlang-sdk:///lib/convert/codec.dart","../../../.pub-cache/hosted/pub.dev/logging-1.3.0/lib/src/level.dart","../../../.pub-cache/hosted/pub.dev/logging-1.3.0/lib/src/log_record.dart","../lib/src/e2ee.worker/e2ee.logger.dart","org-dartlang-sdk:///lib/async/future.dart","org-dartlang-sdk:///lib/core/print.dart"], + "names": ["makeDispatchRecord","getNativeInterceptor","lookupInterceptorByConstructor","JS_INTEROP_INTERCEPTOR_TAG","cacheInterceptorOnConstructor","JSArray.fixed","JSArray.markFixed","SystemHash.combine","SystemHash.finish","checkNotNullable","isToStringVisiting","MappedIterable","unminifyOrTag","isJsIndexable","S","Primitives.objectHashCode","Primitives.objectTypeName","Primitives._objectTypeNameNewRti","Primitives.safeToString","Primitives.stringSafeToString","Primitives.stringFromNativeUint8List","Primitives.lazyAsJsDate","Primitives.getYear","Primitives.getMonth","Primitives.getDay","Primitives.getHours","Primitives.getMinutes","Primitives.getSeconds","Primitives.getMilliseconds","Primitives.functionNoSuchMethod","createUnmangledInvocationMirror","Primitives.applyFunction","Primitives._generalApplyFunction","JsLinkedHashMap.isNotEmpty","Primitives.extractStackTrace","Primitives.trySetStackTrace","iae","ioore","diagnoseIndexError","diagnoseRangeError","argumentErrorValue","wrapException","initializeExceptionWrapper","toStringWrapper","throwExpression","throwExpressionWithWrapper","throwUnsupportedOperation","_diagnoseUnsupportedOperation","throwConcurrentModificationError","TypeErrorDecoder.extractPattern","TypeErrorDecoder.provokeCallErrorOn","TypeErrorDecoder.provokePropertyErrorOn","JsNoSuchMethodError","unwrapException","saveStackTrace","_unwrapNonDartException","getTraceFromException","objectHashCode","fillLiteralMap","_invokeClosure","convertDartClosureToJS","convertDartClosureToJSUncached","Closure.fromTearOff","Closure._computeSignatureFunctionNewRti","Closure.cspForwardCall","Closure.forwardCallTo","Closure.cspForwardInterceptedCall","Closure.forwardInterceptedCallTo","closureFromTearOff","BoundClosure.evalRecipe","evalInInstance","_rtiEval","BoundClosure.receiverOf","BoundClosure.interceptorOf","BoundClosure._computeFieldNamed","boolConversionCheck","assertThrow","throwCyclicInit","getIsolateAffinityTag","defineProperty","lookupAndCacheInterceptor","setDispatchProperty","patchInstance","lookupInterceptor","patchProto","patchInteriorProto","makeLeafDispatchRecord","makeDefaultDispatchRecord","initNativeDispatch","initNativeDispatchContinue","initHooks","applyHooksTransformer","createRecordTypePredicate","quoteStringForRegExp","NativeByteData","_ensureNativeList","NativeUint8List","NativeUint8List.view","_checkValidIndex","_checkValidRange","Rti._getQuestionFromStar","Rti._getStarArgument","Rti._getFutureFromFutureOr","Rti._getFutureOrArgument","Rti._isUnionOfFunctionType","Rti._getKind","Rti._getCanonicalRecipe","findType","_substitute","Rti._getInterfaceName","Rti._getBindingBase","Rti._getRecordPartialShapeTag","Rti._getReturnType","Rti._getGenericFunctionBase","Rti._getGenericFunctionParameterIndex","_substituteArray","_substituteNamed","_substituteFunctionParameters","_FunctionParameters.allocate","_setArrayType","closureFunctionType","instanceOrFunctionType","instanceType","_arrayInstanceType","_instanceType","_instanceTypeFromConstructor","_instanceTypeFromConstructorMiss","getTypeFromTypesTable","getRuntimeTypeOfDartObject","_structuralTypeOf","_instanceFunctionType","createRuntimeType","_createAndCacheRuntimeType","_createRuntimeType","_Type","typeLiteral","_installSpecializedIsTest","isDefinitelyTopType","_recordSpecializedIsTest","_finishIsFn","_installSpecializedAsCheck","_nullIs","_generalIsTestImplementation","_generalNullableIsTestImplementation","Rti._getQuestionArgument","_isTestViaProperty","_isListTestViaProperty","_generalAsCheckImplementation","_generalNullableAsCheckImplementation","_failedAsCheck","_Error.compose","_TypeError.fromMessage","_TypeError.forType","_isFutureOr","_isObject","_asObject","_isTop","_asTop","_isNever","_isBool","_asBool","_asBoolS","_asBoolQ","_asDouble","_asDoubleS","_asDoubleQ","_isInt","_asInt","_asIntS","_asIntQ","_isNum","_asNum","_asNumS","_asNumQ","_isString","_asString","_asStringS","_asStringQ","_rtiArrayToString","_recordRtiToString","_functionRtiToString","isLegacyObjectType","_rtiToString","_unminifyOrTag","_Universe.findRule","_Universe._findRule","_Universe.findErasedType","_Universe.addRules","_Universe.addErasedTypes","_Universe.eval","_Universe.evalInEnvironment","_Universe.bind","_Universe._installTypeTests","_Universe._lookupTerminalRti","Rti.allocate","_Universe._createTerminalRti","_Universe._installRti","_Universe._lookupStarRti","_Universe._createStarRti","_Universe._lookupQuestionRti","_Universe._createQuestionRti","_Universe._lookupFutureOrRti","_Universe._createFutureOrRti","_Universe._lookupGenericFunctionParameterRti","_Universe._createGenericFunctionParameterRti","_Universe._canonicalRecipeJoin","_Universe._canonicalRecipeJoinNamed","_Universe._lookupInterfaceRti","_Universe._canonicalRecipeOfInterface","_Universe._createInterfaceRti","_Universe._lookupBindingRti","_Universe._createBindingRti","_Universe._lookupRecordRti","_Universe._createRecordRti","_Universe._lookupFunctionRti","_Universe._canonicalRecipeOfFunction","_Universe._canonicalRecipeOfFunctionParameters","_Universe._createFunctionRti","_Universe._lookupGenericFunctionRti","_Universe._createGenericFunctionRti","_Parser.create","_Parser.parse","_Parser.toGenericFunctionParameter","_Parser.pushStackFrame","_Parser.collectArray","_Parser.handleOptionalGroup","_Parser.collectNamed","_Parser.handleNamedGroup","_Parser.handleStartRecord","_Parser.handleDigit","_Parser.handleIdentifier","_Universe.evalTypeVariable","_Parser.handleTypeArguments","_Parser.handleArguments","_Parser.handleExtendedOperations","_Parser.toType","_Parser.toTypes","_Parser.toTypesNamed","_Parser.indexToType","isSubtype","_isSubtype","isBottomType","_isFunctionSubtype","_isInterfaceSubtype","_Utils.newArrayOrEmpty","_areArgumentsSubtypes","_isRecordSubtype","isNullable","isSoundTopType","_Utils.objectAssign","_AsyncRun._initializeScheduleImmediate","_AsyncRun._scheduleImmediateJsOverride","_AsyncRun._scheduleImmediateWithSetImmediate","_AsyncRun._scheduleImmediateWithTimer","_TimerImpl","_makeAsyncAwaitCompleter","_AsyncAwaitCompleter._future","_asyncStartSync","_asyncAwait","_asyncReturn","_asyncRethrow","_awaitOnObject","_wrapJsFunctionForAsync","AsyncError.defaultStackTrace","_interceptError","_interceptUserError","_Future._chainCoreFuture","_Future._propagateToListeners","_registerErrorHandler","_microtaskLoop","_startMicrotaskLoop","_scheduleAsyncCallback","_schedulePriorityAsyncCallback","scheduleMicrotask","StreamIterator","_runGuarded","_BufferingStreamSubscription._registerErrorHandler","_nullErrorHandler","_nullDoneHandler","_rootHandleError","_rootRun","_rootRunUnary","_rootRunBinary","_rootScheduleMicrotask","_HashMap._getTableEntry","_HashMap._setTableEntry","_HashMap._newHashTable","LinkedHashMap._literal","LinkedHashMap._empty","MapBase.mapToString","_Base64Encoder.encodeChunk","_Base64Decoder.decodeChunk","_Base64Decoder._allocateBuffer","_Base64Decoder._trimPaddingChars","_Base64Decoder._checkPadding","Error._throw","List.filled","List.of","List._of","List._ofArray","JSArray.markGrowable","String.fromCharCodes","String._stringFromUint8List","StringBuffer._writeAll","NoSuchMethodError.withInvocation","StackTrace.current","DateTime._fourDigits","DateTime._threeDigits","DateTime._twoDigits","Error.safeToString","Error.throwWithStackTrace","AssertionError","ArgumentError","ArgumentError.value","RangeError.value","RangeError.range","RangeError.checkValidRange","RangeError.checkNotNegative","IndexError.withLength","UnsupportedError","UnimplementedError","StateError","ConcurrentModificationError","Exception","FormatException","Iterable.iterableToShortString","Iterable.iterableToFullString","_iterablePartsToStrings","Object.hash","_convertDartFunctionFast","_callDartFunctionFast","allowInterop","_functionToJS1","_callDartFunctionFast1","_noJsifyRequired","jsify","callMethod","promiseToFuture","_Completer.future","Completer","_noDartifyRequired","dartify","findNALUIndices","ParticipantKeyHandler","getTrackCryptor","FrameCryptor","FrameCryptor.sifGuard","FrameCryptor.setParticipant","unsetCryptorParticipant","main","Logger","printString","throwLateFieldNI","throwLateFieldADI","IterableExtension.firstWhereOrNull","getAlgoOptions","Interceptor.hashCode","Interceptor.==","Interceptor.toString","Interceptor.noSuchMethod","Interceptor.runtimeType","JSBool.toString","JSBool.hashCode","JSBool.runtimeType","JSNull.==","JSNull.toString","JSNull.hashCode","LegacyJavaScriptObject.toString","LegacyJavaScriptObject.hashCode","LegacyJavaScriptObject.runtimeType","JavaScriptFunction.toString","JavaScriptBigInt.toString","JavaScriptBigInt.hashCode","JavaScriptSymbol.toString","JavaScriptSymbol.hashCode","JSArray.add","JSArray.addAll","JSArray._addAllFromArray","JSArray.map","JSArray.elementAt","JSArray.toString","JSArray.iterator","JSArray.hashCode","JSArray.length","JSArray.[]","JSArray.[]=","JSArray.runtimeType","getRuntimeTypeOfArray","ArrayIterator.current","ArrayIterator.moveNext","ArrayIterator._current","JSNumber.toInt","JSNumber.truncateToDouble","JSNumber.toRadixString","JSNumber.toString","JSNumber.hashCode","JSNumber.%","JSNumber._tdivFast","JSNumber._tdivSlow","JSNumber._shrOtherPositive","JSNumber._shrBothPositive","JSNumber.runtimeType","JSInt.runtimeType","JSNumNotInt.runtimeType","JSString.endsWith","JSString.startsWith","JSString.substring","JSString.substring[function-entry$1]","JSString.*","JSString.lastIndexOf","JSString.toString","JSString.hashCode","JSString.runtimeType","JSString.length","JSString.[]","_CopyingBytesBuilder.add","_CopyingBytesBuilder._grow","_CopyingBytesBuilder.toBytes","NativeUint8List.fromList","_CopyingBytesBuilder.length","LateError.toString","ListIterable.iterator","ListIterable.map","ListIterator.current","ListIterator.moveNext","ListIterator._current","MappedIterable.iterator","MappedIterable.length","MappedIterator.moveNext","MappedIterator.current","MappedIterator._current","MappedListIterable.length","MappedListIterable.elementAt","WhereIterable.iterator","WhereIterable.map","WhereIterator.moveNext","WhereIterator.current","Symbol.hashCode","Symbol.toString","Symbol.==","ConstantMap.toString","ConstantStringMap.length","ConstantStringMap._keys","ConstantStringMap.containsKey","ConstantStringMap.[]","ConstantStringMap.forEach","ConstantStringMap.keys","_KeysOrValues.length","_KeysOrValues.iterator","_KeysOrValuesOrElementsIterator.current","_KeysOrValuesOrElementsIterator.moveNext","_KeysOrValuesOrElementsIterator._current","JSInvocationMirror.memberName","JSInvocationMirror.positionalArguments","JSInvocationMirror.namedArguments","Primitives.functionNoSuchMethod.","TypeErrorDecoder.matchTypeError","NullError.toString","JsNoSuchMethodError.toString","UnknownJsTypeError.toString","NullThrownFromJavaScriptException.toString","_StackTrace.toString","Closure.toString","StaticClosure.toString","BoundClosure.==","BoundClosure.hashCode","BoundClosure.toString","_CyclicInitializationError.toString","RuntimeError.toString","_AssertionError.toString","JsLinkedHashMap.keys","JsLinkedHashMap.length","JsLinkedHashMap.containsKey","JsLinkedHashMap._containsTableEntry","JsLinkedHashMap.[]","JsLinkedHashMap.internalGet","JsLinkedHashMap._getBucket","JsLinkedHashMap.[]=","JsLinkedHashMap.internalSet","JsLinkedHashMap.putIfAbsent","JsLinkedHashMap.remove","JsLinkedHashMap.forEach","JsLinkedHashMap._addHashTableEntry","JsLinkedHashMap._removeHashTableEntry","JsLinkedHashMap._modified","JsLinkedHashMap._newLinkedCell","JsLinkedHashMap._unlinkCell","JsLinkedHashMap.internalComputeHashCode","JsLinkedHashMap.internalFindBucketIndex","JsLinkedHashMap.toString","JsLinkedHashMap._newHashTable","LinkedHashMapKeysIterable.length","LinkedHashMapKeysIterable.iterator","LinkedHashMapKeyIterator.current","LinkedHashMapKeyIterator.moveNext","LinkedHashMapKeyIterator._current","initHooks.","NativeByteBuffer.runtimeType","NativeByteBuffer.asUint8List","NativeByteBuffer.asUint8List[function-entry$0]","NativeTypedData.buffer","NativeTypedData._invalidPosition","NativeTypedData._checkPosition","_UnmodifiableNativeByteBufferView.asUint8List","_UnmodifiableNativeByteBufferView.asUint8List[function-entry$0]","NativeByteData.runtimeType","NativeByteData._setInt8","NativeTypedArray.length","NativeTypedArrayOfDouble.[]","NativeTypedArrayOfInt.setRange","NativeFloat32List.runtimeType","NativeFloat64List.runtimeType","NativeInt16List.runtimeType","NativeInt16List.[]","NativeInt32List.runtimeType","NativeInt32List.[]","NativeInt8List.runtimeType","NativeInt8List.[]","NativeUint16List.runtimeType","NativeUint16List.[]","NativeUint32List.runtimeType","NativeUint32List.[]","NativeUint8ClampedList.runtimeType","NativeUint8ClampedList.length","NativeUint8ClampedList.[]","NativeUint8List.runtimeType","NativeUint8List.length","NativeUint8List.[]","NativeUint8List.sublist","NativeUint8List.sublist[function-entry$1]","Rti._eval","Rti._bind","_rtiBind","_Type.toString","_Error.toString","_AsyncRun._initializeScheduleImmediate.internalCallback","_AsyncRun._initializeScheduleImmediate.","_AsyncRun._scheduleImmediateJsOverride.internalCallback","_AsyncRun._scheduleImmediateWithSetImmediate.internalCallback","_TimerImpl.internalCallback","_AsyncAwaitCompleter.complete","_AsyncAwaitCompleter.completeError","_awaitOnObject.","_wrapJsFunctionForAsync.","AsyncError.toString","_BroadcastSubscription._onPause","_BroadcastSubscription._onResume","_BroadcastSubscription._next","_BroadcastSubscription._previous","_BroadcastStreamController._mayAddEvent","_BroadcastStreamController._subscribe","_DoneStreamSubscription","_BufferingStreamSubscription","_BufferingStreamSubscription._registerDataHandler","_BufferingStreamSubscription.zoned","_BufferingStreamSubscription._registerDoneHandler","_BroadcastSubscription","_BroadcastStreamController._addEventError","_BroadcastStreamController._forEachListener","_BroadcastStreamController._callOnCancel","_BroadcastStreamController._firstSubscription","_BroadcastStreamController._lastSubscription","_SyncBroadcastStreamController._mayAddEvent","_SyncBroadcastStreamController._addEventError","_SyncBroadcastStreamController._sendData","_SyncBroadcastStreamController._sendData.","_SyncBroadcastStreamController__sendData_closure","_Completer.completeError","_Completer.completeError[function-entry$1]","_AsyncCompleter.complete","_FutureListener.matchesErrorTest","_FutureListener._errorTest","_FutureListener.handleError","_Future.then","_Future._thenAwait","_Future._setErrorObject","_Future._cloneResult","_Future._addListener","_Future._prependListeners","_Future._removeListeners","_Future._reverseListeners","_Future._chainForeignFuture","_Future._completeWithValue","_Future._completeWithResultOf","_Future._completeError","_Future._setError","_Future._asyncComplete","_Future._asyncCompleteWithValue","_Future._chainFuture","_Future._asyncCompleteError","_Future._addListener.","_Future._prependListeners.","_Future._chainForeignFuture.","_Future._chainCoreFuture.","_Future._asyncCompleteWithValue.","_Future._asyncCompleteError.","_Future._propagateToListeners.handleWhenCompleteCallback","_FutureListener.handleWhenComplete","_FutureListener._whenCompleteAction","_Future._newFutureWithSameType","_Future._propagateToListeners.handleWhenCompleteCallback.","_Future._propagateToListeners.handleValueCallback","_FutureListener.handleValue","_FutureListener._onValue","_Future._propagateToListeners.handleError","_FutureListener.hasErrorCallback","Stream.length","Stream.length.","Stream_length_closure","_Future._complete","_ControllerStream.hashCode","_ControllerStream.==","_ControllerSubscription._onPause","_ControllerSubscription._onResume","_BufferingStreamSubscription._add","_BufferingStreamSubscription._onPause","_BufferingStreamSubscription._onResume","_BufferingStreamSubscription._addPending","_BufferingStreamSubscription._sendData","_BufferingStreamSubscription._checkState","_BufferingStreamSubscription._mayResumeInput","_BufferingStreamSubscription._pending","_StreamImpl.listen","_StreamImpl.listen[function-entry$1]","_PendingEvents.schedule","_PendingEvents.schedule.","_PendingEvents.handleNext","_DoneStreamSubscription._onMicrotask","_DoneStreamSubscription._onDone","_rootHandleError.","_RootZone.runGuarded","_RootZone.runUnaryGuarded","_RootZone.bindCallbackGuarded","_RootZone.[]","_RootZone.run","_RootZone.runUnary","_RootZone.runBinary","_RootZone.registerBinaryCallback","_RootZone.bindCallbackGuarded.","_HashMap.keys","_HashMap.length","_HashMap.containsKey","_HashMap._containsKey","_HashMap.[]","_HashMap._get","_HashMap.[]=","_IdentityHashMap._computeHashCode","_HashMap.forEach","_HashMap._computeKeys","_HashMap._addHashTableEntry","_HashMap._getBucket","_IdentityHashMap._findBucketIndex","_HashMapKeyIterable.length","_HashMapKeyIterable.iterator","_HashMapKeyIterator.current","_HashMapKeyIterator.moveNext","_HashMapKeyIterator._current","ListBase.iterator","ListBase.elementAt","ListBase.map","ListBase.toString","MapBase.forEach","MapBase.length","MapBase.toString","MapBase.mapToString.","StringBuffer.write","MapView.[]","MapView.forEach","MapView.length","MapView.keys","MapView.toString","Base64Encoder.convert","_Base64Encoder.encode","Base64Decoder.convert","_Base64Decoder.decode","NoSuchMethodError.toString.","_symbolToString","DateTime.==","DateTime.hashCode","DateTime.toString","_Enum.toString","Error.stackTrace","AssertionError.toString","ArgumentError._errorName","ArgumentError._errorExplanation","ArgumentError.toString","RangeError.invalidValue","RangeError._errorName","RangeError._errorExplanation","IndexError.invalidValue","IndexError._errorName","IndexError._errorExplanation","NoSuchMethodError.toString","UnsupportedError.toString","UnimplementedError.toString","StateError.toString","ConcurrentModificationError.toString","OutOfMemoryError.toString","OutOfMemoryError.stackTrace","StackOverflowError.toString","StackOverflowError.stackTrace","_Exception.toString","FormatException.toString","Iterable.map","Iterable.length","Iterable.elementAt","Iterable.toString","Null.hashCode","Null.toString","Object.hashCode","Object.==","Object.toString","Object.noSuchMethod","Object.runtimeType","_StringStackTrace.toString","StringBuffer.length","StringBuffer.toString","jsify._convert","promiseToFuture.","dartify.convert","DateTime._withValueChecked","_dateToDateTime","NullRejectionException.toString","_JSSecureRandom","_JSSecureRandom.nextInt","NativeByteData.setUint32","CryptorError._enumToString","FrameCryptor.enabled","FrameCryptor.setupTransform","FrameCryptor.setupTransform[function-entry$0$kind$operation$readable$trackId$writable]","FrameCryptor.postMessage","FrameCryptor.getUnencryptedBytes","FrameCryptor.readFrameInfo","FrameCryptor.enqueueFrame","FrameCryptor.encodeFunction","FrameCryptor.makeIv","NativeByteData.setInt8","BytesBuilder","FrameCryptor.decodeFunction","DateTime._now","DateTime.now","ParticipantKeyHandler.decryptionSuccess","FrameCryptor.decodeFunction.decryptFrameInternal","FrameCryptor.decodeFunction.ratchedKeyInternal","KeyOptions.toString","KeyProvider.getParticipantKeyHandler","ListBase.isNotEmpty","KeyProvider.getSharedKeyHandler","ParticipantKeyHandler.decryptionFailure","ParticipantKeyHandler.exportKey","ParticipantKeyHandler.ratchetKey","ParticipantKeyHandler.ratchetMaterial","ParticipantKeyHandler.getKeySet","ParticipantKeyHandler.setKey","ParticipantKeyHandler.setKey[function-entry$1]","ParticipantKeyHandler.setKeySetFromMaterial","ParticipantKeyHandler.deriveKeys","ParticipantKeyHandler.ratchet","ParticipantKeyHandler._#ParticipantKeyHandler#cryptoKeyRing#A","SifGuard.recordUserFrame","SifGuard.reset","getTrackCryptor.","unsetCryptorParticipant.","main.","print","base64Decode","Base64Codec.decode","KeyProvider","JSArray.where","FrameCryptor.setEnabled","KeyProvider.setSharedKey","base64Encode","Codec.encode","FrameCryptor.setKeyIndex","FrameCryptor.setSifTrailer","FrameCryptor.updateCodec","main..","Level.==","Level.hashCode","Level.toString","LogRecord.toString","Logger.fullName","JSString.isNotEmpty","Logger.level","Logger.log","Logger.isLoggable","Logger._getStream","StreamController.broadcast","_BroadcastStreamController.stream","Logger._publish","Logger._controller","Logger.","Logger._named","Logger._internal","DART_CLOSURE_PROPERTY_NAME","_CopyingBytesBuilder._emptyList","TypeErrorDecoder.noSuchMethodPattern","TypeErrorDecoder.notClosurePattern","TypeErrorDecoder.nullCallPattern","TypeErrorDecoder.nullLiteralCallPattern","TypeErrorDecoder.undefinedCallPattern","TypeErrorDecoder.undefinedLiteralCallPattern","TypeErrorDecoder.nullPropertyPattern","TypeErrorDecoder.nullLiteralPropertyPattern","TypeErrorDecoder.undefinedPropertyPattern","TypeErrorDecoder.undefinedLiteralPropertyPattern","_AsyncRun._scheduleImmediateClosure","_Base64Decoder._inverseAlphabet","NativeInt8List.fromList","_Base64Decoder._emptyBuffer","_hashSeed","Random._secureRandom","logger","Logger.root","","ArrayIterator","AsyncError","Base64Codec","Base64Decoder","Base64Encoder","BoundClosure","ByteBuffer","ByteData","Closure","Closure0Args","Closure2Args","Codec","ConstantMap","ConstantMapView","ConstantStringMap","Converter","CryptorError","DateTime","EfficientLengthIterable","EfficientLengthMappedIterable","Error","ExceptionAndStackTrace","FixedLengthListMixin","Float32List","Float64List","FrameCryptor_decodeFunction_decryptFrameInternal","FrameCryptor_decodeFunction_ratchedKeyInternal","FrameInfo","Function","Future","IndexError","Int16List","Int32List","Int8List","Interceptor","Invocation","Iterable","IterableExtension|firstWhereOrNull","Iterator","JSArray","JSBool","JSInt","JSInvocationMirror","JSNull","JSNumNotInt","JSNumber","JSObject","JSString","JSUnmodifiableArray","JS_CONST","JavaScriptBigInt","JavaScriptFunction","JavaScriptIndexingBehavior","JavaScriptObject","JavaScriptSymbol","JsLinkedHashMap","KeyOptions","KeySet","LateError","LegacyJavaScriptObject","Level","LinkedHashMap","LinkedHashMapCell","LinkedHashMapKeyIterator","LinkedHashMapKeysIterable","List","ListBase","ListIterable","ListIterator","LogRecord","Logger_Logger_closure","Map","MapBase","MapBase_mapToString_closure","MapView","MappedIterator","MappedListIterable","NativeByteBuffer","NativeFloat32List","NativeFloat64List","NativeInt16List","NativeInt32List","NativeInt8List","NativeTypedArray","NativeTypedArrayOfDouble","NativeTypedArrayOfInt","NativeTypedData","NativeUint16List","NativeUint32List","NativeUint8ClampedList","NoSuchMethodError","NoSuchMethodError_toString_closure","Null","NullError","NullRejectionException","NullThrownFromJavaScriptException","Object","OutOfMemoryError","Pattern","PlainJavaScriptObject","Primitives_functionNoSuchMethod_closure","RangeError","Record","Rti","RuntimeError","SentinelValue","SifGuard","StackOverflowError","StackTrace","StaticClosure","Stream","StreamController","StreamSubscription","String","StringBuffer","Symbol","TearOffClosure","TrustedGetRuntimeType","TypeError","TypeErrorDecoder","Uint16List","Uint32List","Uint8ClampedList","Uint8List","UnknownJavaScriptObject","UnknownJsTypeError","UnmodifiableMapView","WhereIterable","WhereIterator","Zone","_AddStreamState","_AssertionError","_AsyncAwaitCompleter","_AsyncCallbackEntry","_AsyncCompleter","_AsyncRun__initializeScheduleImmediate_closure","_AsyncRun__initializeScheduleImmediate_internalCallback","_AsyncRun__scheduleImmediateJsOverride_internalCallback","_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback","_Base64Decoder","_Base64Encoder","_BroadcastStream","_BroadcastStreamController","_Completer","_ControllerStream","_ControllerSubscription","_CopyingBytesBuilder","_CyclicInitializationError","_DelayedData","_DelayedEvent","_Enum","_Error","_EventDispatch","_Exception","_FunctionParameters","_Future","_FutureListener","_Future__addListener_closure","_Future__asyncCompleteError_closure","_Future__asyncCompleteWithValue_closure","_Future__chainCoreFuture_closure","_Future__chainForeignFuture_closure","_Future__prependListeners_closure","_Future__propagateToListeners_handleError","_Future__propagateToListeners_handleValueCallback","_Future__propagateToListeners_handleWhenCompleteCallback","_Future__propagateToListeners_handleWhenCompleteCallback_closure","_HashMap","_HashMapKeyIterable","_HashMapKeyIterator","_IdentityHashMap","_JS_INTEROP_INTERCEPTOR_TAG","_KeysOrValues","_KeysOrValuesOrElementsIterator","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin&FixedLengthListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin&FixedLengthListMixin","_PendingEvents","_PendingEvents_schedule_closure","_Required","_RootZone","_RootZone_bindCallbackGuarded_closure","_StackTrace","_StreamControllerLifecycle","_StreamImpl","_StreamIterator","_StringStackTrace","_SyncBroadcastStreamController","_TimerImpl_internalCallback","_TypeError","_UnmodifiableMapMixin","_UnmodifiableMapView&MapView&_UnmodifiableMapMixin","_UnmodifiableNativeByteBufferView","_Zone","_allocateBuffer","_awaitOnObject_closure","_canonicalRecipeJoin","_canonicalRecipeJoinNamed","_chainCoreFuture","_checkPadding","_computeFieldNamed","_computeSignatureFunctionNewRti","_createFutureOrRti","_createGenericFunctionRti","_createQuestionRti","_createStarRti","_current","_empty","_emptyBuffer","_emptyList","_fourDigits","_generalApplyFunction","_getCanonicalRecipe","_getFutureFromFutureOr","_getQuestionFromStar","_getTableEntry","_identityHashCodeProperty","_initializeScheduleImmediate","_installTypeTests","_interceptorFieldNameCache","_inverseAlphabet","_isInCallbackLoop","_isUnionOfFunctionType","_lastCallback","_lastPriorityCallback","_literal","_loggers","_lookupBindingRti","_lookupFunctionRti","_lookupFutureOrRti","_lookupGenericFunctionParameterRti","_lookupGenericFunctionRti","_lookupInterfaceRti","_lookupQuestionRti","_lookupRecordRti","_lookupStarRti","_lookupTerminalRti","_newHashTable","_nextCallback","_nextNumber","_objectTypeNameNewRti","_of","_propagateToListeners","_receiverFieldNameCache","_rootHandleError_closure","_scheduleImmediateClosure","_scheduleImmediateJsOverride","_scheduleImmediateWithSetImmediate","_scheduleImmediateWithTimer","_secureRandom","_setTableEntry","_stringFromUint8List","_threeDigits","_throw","_trimPaddingChars","_twoDigits","_wrapJsFunctionForAsync_closure","_writeAll","addErasedTypes","addRules","alternateTagFunction","applyFunction","async__AsyncRun__scheduleImmediateJsOverride$closure","async__AsyncRun__scheduleImmediateWithSetImmediate$closure","async__AsyncRun__scheduleImmediateWithTimer$closure","async___nullDoneHandler$closure","async___nullErrorHandler$closure","async___startMicrotaskLoop$closure","bind","bool","checkNotNegative","checkValidRange","collectArray","combine","compose","create","cspForwardCall","cspForwardInterceptedCall","current","dartify_convert","decodeChunk","defaultStackTrace","dispatchRecordsForInstanceTags","double","encodeChunk","eval","evalInEnvironment","evalRecipe","extractPattern","extractStackTrace","filled","findErasedType","findRule","finish","fixed","forType","forwardCallTo","forwardInterceptedCallTo","fromCharCodes","fromMessage","fromTearOff","functionNoSuchMethod","getDay","getHours","getInterceptor$","getInterceptor$asx","getInterceptor$ax","getInterceptor$x","getMilliseconds","getMinutes","getMonth","getSeconds","getTagFunction","getTrackCryptor_closure","getYear","handleArguments","handleDigit","handleExtendedOperations","handleIdentifier","handleTypeArguments","hash","indexToType","initHooks_closure","initNativeDispatchFlag","int","interceptorOf","interceptorsForUncacheableTags","iterableToFullString","iterableToShortString","jsify__convert","keyProviders","lazyAsJsDate","main__closure","main_closure","mapToString","markFixed","newArrayOrEmpty","noSuchMethodPattern","notClosurePattern","nullCallPattern","nullLiteralCallPattern","nullLiteralPropertyPattern","nullPropertyPattern","num","objectAssign","objectTypeName","of","parse","participantCryptors","promiseToFuture_closure","prototypeForTagFunction","provokeCallErrorOn","provokePropertyErrorOn","range","receiverOf","root","safeToString","stringFromNativeUint8List","throwWithStackTrace","toStringVisiting","toType","toTypes","toTypesNamed","trySetStackTrace","undefinedCallPattern","undefinedLiteralCallPattern","undefinedLiteralPropertyPattern","undefinedPropertyPattern","unsetCryptorParticipant_closure","value","view","withInvocation","withLength","$add","$and","$div","$eq","$ge","$gt","$index","$indexSet","$le","$lt","$mod","$mul","$negate","$or","$shl","$shr","$sub","$tdiv","$xor","%","*","==","[]","[]=","_addEventError","_captured_T_1","_captured__convertedObjects_0","_captured_arguments_2","_captured_bodyFunction_0","_captured_completer_0","_captured_data_1","_captured_decryptFrameInternal_3","_captured_dispatch_1","_captured_div_1","_captured_e_1","_captured_f_1","_captured_getTag_0","_captured_getUnknownTag_0","_captured_handleMessage_0","_captured_hasError_2","_captured_headerLength_5","_captured_ivLength_6","_captured_iv_3","_captured_joinedResult_0","_captured_namedArgumentList_1","_captured_originalSource_1","_captured_protected_0","_captured_prototypeForTag_0","_captured_s_2","_captured_sb_1","_captured_sourceResult_1","_captured_span_2","_captured_srcFrame_4","_captured_target_1","_captured_this_0","abs","add","addAll","argumentCount","asUint8List","bindCallback","bindCallbackGuarded","buffer","call","callback","ceilToDouble","checkGrowable","children","close","code","codeUnitAt","codec","comma","complete","completeError","config","consecutiveSifCount","contains","containsKey","convert","count","createBuffer","cryptoKeyRing","currentKeyIndex","currentkeySet","dart:_interceptors#_addAllFromArray","dart:_interceptors#_codeUnitAt","dart:_interceptors#_current=","dart:_interceptors#_index","dart:_interceptors#_isInt32","dart:_interceptors#_iterable","dart:_interceptors#_length","dart:_interceptors#_shlPositive","dart:_interceptors#_shrBothPositive","dart:_interceptors#_shrOtherPositive","dart:_interceptors#_shrReceiverPositive","dart:_interceptors#_tdivFast","dart:_interceptors#_tdivSlow","dart:_interceptors#_toListFixed","dart:_interceptors#_toListGrowable","dart:_internal#_buffer","dart:_internal#_current=","dart:_internal#_f","dart:_internal#_grow","dart:_internal#_index","dart:_internal#_iterable","dart:_internal#_iterator","dart:_internal#_length","dart:_internal#_message","dart:_internal#_name","dart:_internal#_source","dart:_js_helper#_addHashTableEntry","dart:_js_helper#_arguments","dart:_js_helper#_argumentsExpr","dart:_js_helper#_box_0","dart:_js_helper#_captured_arguments_2","dart:_js_helper#_captured_getTag_0","dart:_js_helper#_captured_getUnknownTag_0","dart:_js_helper#_captured_namedArgumentList_1","dart:_js_helper#_captured_prototypeForTag_0","dart:_js_helper#_cell","dart:_js_helper#_containsTableEntry","dart:_js_helper#_current=","dart:_js_helper#_deleteTableEntry","dart:_js_helper#_elements","dart:_js_helper#_exception","dart:_js_helper#_expr","dart:_js_helper#_first","dart:_js_helper#_getBucket","dart:_js_helper#_getTableBucket","dart:_js_helper#_getTableCell","dart:_js_helper#_index","dart:_js_helper#_interceptor","dart:_js_helper#_internalName","dart:_js_helper#_irritant","dart:_js_helper#_jsIndex","dart:_js_helper#_keys","dart:_js_helper#_kind","dart:_js_helper#_last","dart:_js_helper#_length","dart:_js_helper#_map","dart:_js_helper#_memberName","dart:_js_helper#_message","dart:_js_helper#_method","dart:_js_helper#_modifications","dart:_js_helper#_modified","dart:_js_helper#_name","dart:_js_helper#_namedArgumentNames","dart:_js_helper#_newHashTable","dart:_js_helper#_newLinkedCell","dart:_js_helper#_next","dart:_js_helper#_nums","dart:_js_helper#_pattern","dart:_js_helper#_previous","dart:_js_helper#_receiver","dart:_js_helper#_removeHashTableEntry","dart:_js_helper#_rest","dart:_js_helper#_setKeys","dart:_js_helper#_setTableEntry","dart:_js_helper#_strings","dart:_js_helper#_target","dart:_js_helper#_trace","dart:_js_helper#_typeArgumentCount","dart:_js_helper#_unlinkCell","dart:_js_helper#_values","dart:_native_typed_data#_checkMutable","dart:_native_typed_data#_checkPosition","dart:_native_typed_data#_data","dart:_native_typed_data#_getUint32","dart:_native_typed_data#_invalidPosition","dart:_native_typed_data#_isUnmodifiable","dart:_native_typed_data#_nativeBuffer","dart:_native_typed_data#_setInt8","dart:_native_typed_data#_setRangeFast","dart:_native_typed_data#_setUint32","dart:_rti#_as","dart:_rti#_bind","dart:_rti#_bindCache","dart:_rti#_cachedRuntimeType","dart:_rti#_canonicalRecipe","dart:_rti#_dynamicCheckData","dart:_rti#_eval","dart:_rti#_evalCache","dart:_rti#_is","dart:_rti#_isSubtypeCache","dart:_rti#_kind","dart:_rti#_message","dart:_rti#_named","dart:_rti#_optionalPositional","dart:_rti#_precomputed1","dart:_rti#_primary","dart:_rti#_requiredPositional","dart:_rti#_rest","dart:_rti#_rti","dart:_rti#_specializedTestResource","dart:async#_add","dart:async#_addEventError","dart:async#_addListener","dart:async#_addPending","dart:async#_addStreamState","dart:async#_asyncComplete","dart:async#_asyncCompleteError","dart:async#_asyncCompleteWithValue","dart:async#_box_0","dart:async#_box_1","dart:async#_callOnCancel","dart:async#_canFire","dart:async#_cancelFuture","dart:async#_captured_bodyFunction_0","dart:async#_captured_callback_0","dart:async#_captured_callback_1","dart:async#_captured_data_1","dart:async#_captured_dispatch_1","dart:async#_captured_div_1","dart:async#_captured_e_1","dart:async#_captured_error_0","dart:async#_captured_error_1","dart:async#_captured_f_1","dart:async#_captured_future_1","dart:async#_captured_hasError_2","dart:async#_captured_joinedResult_0","dart:async#_captured_listener_1","dart:async#_captured_originalSource_1","dart:async#_captured_protected_0","dart:async#_captured_s_2","dart:async#_captured_sourceResult_1","dart:async#_captured_span_2","dart:async#_captured_stackTrace_1","dart:async#_captured_stackTrace_2","dart:async#_captured_target_1","dart:async#_captured_this_0","dart:async#_captured_this_1","dart:async#_captured_value_1","dart:async#_chainForeignFuture","dart:async#_chainFuture","dart:async#_chainSource","dart:async#_checkState","dart:async#_clearPendingComplete","dart:async#_cloneResult","dart:async#_complete","dart:async#_completeError","dart:async#_completeWithResultOf","dart:async#_completeWithValue","dart:async#_controller","dart:async#_createSubscription","dart:async#_doneFuture","dart:async#_error","dart:async#_errorTest","dart:async#_eventScheduled","dart:async#_eventState","dart:async#_expectsEvent","dart:async#_firstSubscription=","dart:async#_forEachListener","dart:async#_future","dart:async#_handle","dart:async#_hasError","dart:async#_hasOneListener","dart:async#_hasPending","dart:async#_hasValue","dart:async#_ignoreError","dart:async#_isCanceled","dart:async#_isChained","dart:async#_isComplete","dart:async#_isEmpty","dart:async#_isFiring","dart:async#_isInputPaused","dart:async#_isPaused","dart:async#_lastSubscription","dart:async#_mayAddEvent","dart:async#_mayAddListener","dart:async#_mayComplete","dart:async#_mayResumeInput","dart:async#_newFutureWithSameType","dart:async#_next=","dart:async#_nextListener","dart:async#_onData","dart:async#_onDone=","dart:async#_onError","dart:async#_onListen","dart:async#_onMicrotask","dart:async#_onPause","dart:async#_onResume","dart:async#_onValue","dart:async#_once","dart:async#_pending","dart:async#_prependListeners","dart:async#_previous=","dart:async#_recordPause","dart:async#_recordResume","dart:async#_removeAfterFiring","dart:async#_removeListener","dart:async#_removeListeners","dart:async#_resultOrListeners","dart:async#_reverseListeners","dart:async#_scheduleMicrotask","dart:async#_sendData","dart:async#_setChained","dart:async#_setError","dart:async#_setErrorObject","dart:async#_setPendingComplete","dart:async#_setValue","dart:async#_state","dart:async#_stateData","dart:async#_subscribe","dart:async#_subscription","dart:async#_thenAwait","dart:async#_tick","dart:async#_toggleEventId","dart:async#_whenCompleteAction","dart:async#_zone","dart:collection#_addHashTableEntry","dart:collection#_box_0","dart:collection#_captured_result_1","dart:collection#_computeHashCode","dart:collection#_computeKeys","dart:collection#_containsKey","dart:collection#_current=","dart:collection#_findBucketIndex","dart:collection#_get","dart:collection#_getBucket","dart:collection#_keys","dart:collection#_length","dart:collection#_map","dart:collection#_nums","dart:collection#_offset","dart:collection#_remove","dart:collection#_removeHashTableEntry","dart:collection#_rest","dart:collection#_set","dart:collection#_strings","dart:convert#_alphabet","dart:convert#_encoder","dart:convert#_state","dart:convert#_urlSafe","dart:core#_arguments","dart:core#_box_0","dart:core#_captured_sb_1","dart:core#_contents","dart:core#_enumToString","dart:core#_errorExplanation","dart:core#_errorName","dart:core#_existingArgumentNames","dart:core#_hasValue","dart:core#_memberName","dart:core#_microsecond","dart:core#_name","dart:core#_namedArguments","dart:core#_receiver","dart:core#_stackTrace","dart:core#_value","dart:core#_writeString","dart:js_util#_captured_T_1","dart:js_util#_captured__convertedObjects_0","dart:js_util#_captured_completer_0","dart:math#_buffer","dart:math#_getRandomBytes","dartException","day","decode","decodeFunction","decoder","decrypted","decryptionFailure","decryptionSuccess","deriveKeys","discardFrameWhenCryptorNotReady","elementAt","enabled","encode","encodeFunction","encoder","encryptionKey","end","endsWith","enqueueFrame","error","errorCallback","errorZone","exportKey","failureTolerance","fine","finer","first","firstPendingEvent","floorToDouble","forEach","frameType","fullName","future","getKeySet","getParticipantKeyHandler","getRange","getSharedKeyHandler","getUint32","getUnencryptedBytes","handleError","handleNext","handleUncaughtError","handleValue","handleWhenComplete","handlesComplete","handlesError","handlesValue","hasErrorCallback","hasErrorTest","hasValidKey","hashCode","hashMapCellKey","hashMapCellValue","hour","id","inSameErrorZone","index","indexable","info","initialKeyIndex","initialKeySet","internalComputeHashCode","internalContainsKey","internalFindBucketIndex","internalGet","internalRemove","internalSet","invalidValue","isAccessor","isClosed","isEmpty","isGetter","isLoggable","isNotEmpty","isScheduled","isSifAllowed","isSync","isUndefined","isUtc","iterator","join","keyHandler","keyOptions","keyProviderOptions","keyRingSze","keys","kind","lastError","lastIndexOf","lastPendingEvent","lastSifReceivedAt","length","lengthInBytes","level","listen","listener","listenerHasError","listenerValueOrError","listeners","log","loggerName","makeIv","map","matchAsPrefix","matchTypeError","matchesErrorTest","material","memberName","message","microsecond","millisecond","millisecondsSinceEpoch","minute","modifiedObject","month","moveNext","name","namedArguments","names","next","nextInt","noSuchMethod","object","offset","offsetInBytes","onCancel","onListen","onRecord","package:dart_webrtc/src/e2ee.worker/e2ee.cryptor.dart#_#FrameCryptor#kind#A","package:dart_webrtc/src/e2ee.worker/e2ee.cryptor.dart#_box_0","package:dart_webrtc/src/e2ee.worker/e2ee.cryptor.dart#_box_1","package:dart_webrtc/src/e2ee.worker/e2ee.cryptor.dart#_captured_decryptFrameInternal_3","package:dart_webrtc/src/e2ee.worker/e2ee.cryptor.dart#_captured_headerLength_5","package:dart_webrtc/src/e2ee.worker/e2ee.cryptor.dart#_captured_ivLength_6","package:dart_webrtc/src/e2ee.worker/e2ee.cryptor.dart#_captured_iv_3","package:dart_webrtc/src/e2ee.worker/e2ee.cryptor.dart#_captured_srcFrame_4","package:dart_webrtc/src/e2ee.worker/e2ee.cryptor.dart#_captured_this_2","package:dart_webrtc/src/e2ee.worker/e2ee.cryptor.dart#_enabled","package:dart_webrtc/src/e2ee.worker/e2ee.keyhandler.dart#_#ParticipantKeyHandler#cryptoKeyRing#A","package:dart_webrtc/src/e2ee.worker/e2ee.keyhandler.dart#_decryptionFailureCount","package:dart_webrtc/src/e2ee.worker/e2ee.keyhandler.dart#_hasValidKey","package:dart_webrtc/src/e2ee.worker/e2ee.worker.dart#_captured_handleMessage_0","package:dart_webrtc/src/e2ee.worker/e2ee.worker.dart#_captured_trackId_0","package:logging/src/logger.dart#_captured_name_0","package:logging/src/logger.dart#_children","package:logging/src/logger.dart#_controller","package:logging/src/logger.dart#_getStream","package:logging/src/logger.dart#_level","package:logging/src/logger.dart#_levelChangedController","package:logging/src/logger.dart#_publish","padLeft","parent","participantIdentity","participantKeys","perform","positionalArguments","postMessage","putIfAbsent","ratchet","ratchetCount","ratchetKey","ratchetMaterial","ratchetSalt","ratchetWindowSize","readFrameInfo","recordSif","recordUserFrame","registerBinaryCallback","registerCallback","registerUnaryCallback","remainder","remove","removeLast","reset","resetKeyStatus","result","run","runBinary","runGuarded","runUnary","runUnaryGuarded","runtimeType","schedule","second","sendCounts","sequenceNumber","setEnabled","setInt8","setKey","setKeyIndex","setKeySetFromMaterial","setParticipant","setRange","setSharedKey","setSifTrailer","setUint32","setupTransform","sharedKey","sharedKeyHandler","shouldChain","sifGuard","sifSequenceStartedAt","skip","source","ssrc","stackTrace","start","startsWith","state","storedCallback","stream","sublist","substring","take","then","time","timestamp","toBytes","toInt","toList","toLowerCase","toRadixString","toString","trackId","truncateToDouble","uncryptedMagicBytes","unsetParticipant","updateCodec","userFramesSinceSif","variableName","warning","where","worker","write","writeAll","year","zone","Rti._unstar","isTopType","_Universe._canonicalRecipeOfStar","_Universe._canonicalRecipeOfQuestion","_Universe._canonicalRecipeOfFutureOr","_Universe._canonicalRecipeOfBinding","_Universe._canonicalRecipeOfGenericFunction","Error._stringToSafeString","_HashMap._set","_Base64Encoder.createBuffer","DateTime.fromMillisecondsSinceEpoch","SifGuard.recordSif","SifGuard.isSifAllowed",">=","ByteBufferToJSArrayBuffer|get#toJS","JSAnyUtilityExtension|dartify","JSNumberToNumber|get#toDartInt","JSObjectUnsafeUtilExtension|getProperty","JSPromiseToFuture|get#toDart","NullableObjectUtilExtension|jsify","_","_addListener","_asCheck","_buffer","_callConstructorUnchecked1","_callMethodUnchecked0","_callMethodUnchecked1","_callMethodUnchecked2","_callMethodUnchecked3","_canonicalRecipeOfBinding","_canonicalRecipeOfFunction","_canonicalRecipeOfFunctionParameters","_canonicalRecipeOfFutureOr","_canonicalRecipeOfGenericFunction","_canonicalRecipeOfInterface","_canonicalRecipeOfQuestion","_canonicalRecipeOfRecord","_canonicalRecipeOfStar","_chainSource","_checkMutable","_cloneResult","_complete","_completeError","_computeHashCode","_computeIdentityHashCodeProperty","_containsTableEntry","_create1","_create2","_create3","_createBindingRti","_createFunctionRti","_createGenericFunctionParameterRti","_createInterfaceRti","_createLength","_createRecordRti","_createSubscription","_createTerminalRti","_createTimer","_error","_errorTest","_expectsEvent","_failedAsCheckError","_findRule","_future","_getBindCache","_getBindingArguments","_getBindingBase","_getBucket","_getCachedRuntimeType","_getEvalCache","_getFunctionParameters","_getFutureOrArgument","_getGenericFunctionBase","_getGenericFunctionBounds","_getGenericFunctionParameterIndex","_getInterfaceName","_getInterfaceTypeArguments","_getIsSubtypeCache","_getKind","_getNamed","_getOptionalPositional","_getPrimary","_getPropertyTrustType","_getQuestionArgument","_getRandomBytes","_getRecordFields","_getRecordPartialShapeTag","_getRequiredPositional","_getReturnType","_getRuntimeTypeOfArrayAsRti","_getSpecializedTestResource","_getStarArgument","_getTableBucket","_getTableCell","_grow","_handleIEtoString","_hasError","_hasOneListener","_hasPending","_hasTableEntry","_hasTimer","_installRti","_internal","_isCanceled","_isChained","_isCheck","_isClosure","_isComplete","_isDartObject","_isEmpty","_isFiring","_isInputPaused","_isSubtypeUncached","_keysFromIndex","_lookupAnyRti","_lookupDynamicRti","_lookupErasedRti","_lookupFutureRti","_lookupNeverRti","_lookupVoidRti","_mayAddListener","_mayComplete","_mayResumeInput","_name","_named","_newFutureWithSameType","_now","_objectToString","_ofArray","_onError","_onValue","_parseRecipe","_pow2roundup","_recipeJoin","_registerDataHandler","_registerDoneHandler","_removeListener","_removeListeners","_scheduleImmediate","_set","_setAsCheckFunction","_setBindCache","_setCachedRuntimeType","_setCanonicalRecipe","_setChained","_setError","_setErrorObject","_setEvalCache","_setIsTestFunction","_setKind","_setNamed","_setOptionalPositional","_setPrecomputed1","_setPrimary","_setRangeFast","_setRequiredPositional","_setRest","_setSpecializedTestResource","_setValue","_stateBits","_statePadding","_stringToSafeString","_target","_theUniverse","_trySetStackTrace","_unstar","_validate","_whenCompleteAction","_withValueChecked","_writeOne","_writeString","_zone","allocate","apply","arrayAt","arrayConcat","arrayLength","arraySplice","asBool","asInt","asRti","asRtiOrNull","asString","as_Type","broadcast","charCodeAt","collectNamed","constructorNameFallback","dateNow","dispatchRecordExtension","dispatchRecordIndexability","dispatchRecordInterceptor","dispatchRecordProto","environment","erasedTypes","evalCache","evalTypeVariable","fieldADI","fieldNI","fromList","fromMillisecondsSinceEpoch","getDispatchProperty","getIndex","getLegacyErasedRecipe","getLength","getName","getProperty","getRuntimeTypeOfInterceptorNotArray","handleNamedGroup","handleOptionalGroup","handleStartRecord","hash2","identityHashCode","instanceTypeName","interceptorFieldName","interceptorsByTag","isArray","isDigit","isIdentical","isJavaScriptSimpleObject","isRequired","jsHasOwnProperty","jsonEncodeNative","leafTags","listToString","lookupSupertype","lookupTypeVariable","mapGet","mapSet","markFixedList","markGrowable","markUnmodifiableList","normalize","now","objectKeys","objectToHumanReadableString","pop","position","pow","printToConsole","propertyGet","provokeCallErrorOnNull","provokeCallErrorOnUndefined","provokePropertyErrorOnNull","provokePropertyErrorOnUndefined","push","pushStackFrame","receiverFieldName","recipe","secure","sharedEmptyArray","stack","staticInteropGlobalContext","stringIndexOf","stringLastIndexOfUnchecked","stringSafeToString","stringSplit","thenAwait","toGenericFunctionParameter","tryStringifyException","typeRules","typed","universe","unmangleGlobalNameIfPreservedAnyways","unsafeCast","unvalidated","writeFinalChunk","zoned"], + "mappings": "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", "x_org_dartlang_dart2js": { "minified_names": { - "global": "print,286,main_closure,854,allowInterop,309,main_closure0,854,_EventStreamSubscription$,855,main,302,_asyncStartSync,222,_asyncAwait,223,_asyncReturn,224,_asyncRethrow,225,_wrapJsFunctionForAsync,227,_makeAsyncAwaitCompleter,220,_asBool,125,LateError,856,throwExpression,33,_asStringQ,142,wrapException,31,NullThrownError,857,toStringWrapper,32,getIsolateAffinityTag,62,unminifyOrTag,6,S,8,MapBase_mapToString,858,_isToStringVisiting,251,StringBuffer,859,_toStringVisiting,860,MapBase_mapToString_closure,861,ioore,27,convertNativeToDart_Dictionary,290,LinkedHashMap_LinkedHashMap$_empty,862,throwConcurrentModificationError,34,_convertNativeToDart_Value,289,_instanceType,99,LinkedHashMapCell,863,_asInt,132,_isBool,124,isJavaScriptSimpleObject,291,ConcurrentModificationError$,855,Error_safeToString,864,Error__objectToString,865,Closure,866,Primitives_objectTypeName,867,Primitives__objectTypeNameNewRti,868,Object,869,instanceType,96,_rtiToString,148,_asString,140,_unminifyOrTag,150,_rtiArrayToString,143,_recordRtiToString,144,_functionRtiToString,145,_setArrayType,92,ConcurrentModificationError,282,JsLinkedHashMap,870,Object_hash,871,SystemHash_combine,872,SystemHash_finish,873,objectHashCode,43,_Universe_eval,874,createRuntimeType,103,_Parser_create,875,_Parser_parse,876,_Parser_handleDigit,877,_Parser_handleIdentifier,878,_Parser_toType,879,_Universe__lookupGenericFunctionParameterRti,880,_Universe__lookupTerminalRti,881,_Parser_toTypes,882,_Universe__lookupInterfaceRti,883,_Universe__lookupGenericFunctionRti,884,_Universe__lookupBindingRti,885,_Parser_handleExtendedOperations,886,_Universe__lookupStarRti,887,_Universe__lookupQuestionRti,888,_Universe__lookupFutureOrRti,889,_Parser_handleArguments,890,_Parser_toTypesNamed,891,_Parser_collectArray,892,_FunctionParameters,893,_Universe__lookupFunctionRti,894,_Universe__lookupRecordRti,895,AssertionError$,855,AssertionError,271,_Universe__canonicalRecipeJoin,896,Rti,897,_Universe__installTypeTests,898,_installSpecializedAsCheck,108,_installSpecializedIsTest,106,_Universe__canonicalRecipeJoinNamed,899,_Universe__createFutureOrRti,900,Future,901,isStrongTopType,212,_Universe__createQuestionRti,902,isNullable,211,Rti__getQuestionFromStar,903,_Universe__createStarRti,904,_Universe__createGenericFunctionRti,905,_Utils_newArrayOrEmpty,906,_substitute,87,_substituteArray,88,_substituteFunctionParameters,90,_substituteNamed,89,_Parser_indexToType,907,_Universe_findRule,908,Rti__getCanonicalRecipe,909,_Universe_evalInEnvironment,910,_Type,104,Primitives_objectHashCode,43,Primitives__identityHashCodeProperty,911,MapMixin,912,ArrayIterator,913,_arrayInstanceType,98,JSArray,914,LinkedHashMapKeyIterable,915,IterableBase_iterableToShortString,916,_iterablePartsToStrings,252,StringBuffer__writeAll,917,FixedSizeListIterator,918,ImmutableListMixin,919,IndexError$withLength,920,IndexError,921,List,922,ListIterator,923,ListMixin,924,RangeError_checkNotNegative,925,RangeError$range,926,_asNumQ,138,RangeError,927,_checkValidIndex,80,diagnoseIndexError,28,_isInt,131,ArgumentError,272,RangeError$value,928,_Future,929,Zone__current,930,Stream_length_closure,519,Stream_length_closure0,519,_Future__propagateToListeners,931,_rootHandleError,239,_Future__propagateToListeners_handleWhenCompleteCallback,932,_Future__propagateToListeners_handleValueCallback,933,_Future__propagateToListeners_handleError,934,_Future__chainCoreFuture,935,_Future__prependListeners_closure,936,_rootScheduleMicrotask,243,_scheduleAsyncCallback,235,_AsyncCallbackEntry,937,_lastCallback,938,_nextCallback,939,_isInCallbackLoop,940,_microtaskLoop,233,_lastPriorityCallback,941,_AsyncRun__initializeScheduleImmediate,942,_AsyncRun__initializeScheduleImmediate_internalCallback,943,convertDartClosureToJS,46,_AsyncRun__initializeScheduleImmediate_closure,944,_TimerImpl$,855,_asIntQ,134,_TimerImpl,219,_TimerImpl_internalCallback,945,UnsupportedError$,855,UnsupportedError,279,_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback,946,_AsyncRun__scheduleImmediateJsOverride_internalCallback,947,invokeClosure,45,Exception_Exception,855,_Exception,948,_RootZone_bindCallbackGuarded_closure,949,_rootRun,240,unwrapException,39,getTraceFromException,42,ExceptionAndStackTrace,950,_StackTrace,951,NullThrownFromJavaScriptException,952,saveStackTrace,40,_unwrapNonDartException,41,JsNoSuchMethodError$,855,NullError,953,UnknownJsTypeError,954,StackOverflowError,955,TypeErrorDecoder_extractPattern,956,quoteStringForRegExp,74,TypeErrorDecoder,957,TypeErrorDecoder_provokePropertyErrorOn,958,TypeErrorDecoder_provokeCallErrorOn,959,JsNoSuchMethodError,38,AsyncError$,855,checkNotNullable,3,AsyncError,228,AsyncError_defaultStackTrace,960,ArgumentError$,855,_rootRunUnary,241,_rootRunBinary,242,_Future__propagateToListeners_handleWhenCompleteCallback_closure,961,ArgumentError$value,928,_registerErrorHandler,232,_FutureListener,962,_Future__addListener_closure,963,_rootHandleError_closure,964,_schedulePriorityAsyncCallback,236,Error__throw,965,Iterable,966,LinkedHashMapKeyIterator,438,AudioParamMap_keys_closure,967,Storage_keys_closure,968,RtcStatsReport_keys_closure,969,MidiOutputMap_keys_closure,970,MidiInputMap_keys_closure,971,IterableBase_iterableToFullString,972,initNativeDispatchFlag,973,initNativeDispatch,69,UnimplementedError$,855,_JS_INTEROP_INTERCEPTOR_TAG,974,lookupAndCacheInterceptor,64,getTagFunction,975,dispatchRecordsForInstanceTags,976,interceptorsForUncacheableTags,977,alternateTagFunction,978,makeLeafDispatchRecord,67,patchInteriorProto,66,makeDispatchRecord,312,JavaScriptIndexingBehavior,979,UnimplementedError,280,initNativeDispatchContinue,70,initHooks,72,prototypeForTagFunction,980,makeDefaultDispatchRecord,68,applyHooksTransformer,73,initHooks_closure,981,initHooks_closure0,981,initHooks_closure1,981,CyclicInitializationError,982,Closure_fromTearOff,983,StaticClosure,984,BoundClosure,985,Closure_forwardCallTo,986,Closure__computeSignatureFunctionNewRti,987,BoundClosure_evalRecipe,988,Closure_forwardInterceptedCallTo,989,Closure_cspForwardCall,990,BoundClosure_receiverOf,991,BoundClosure__interceptorFieldNameCache,992,BoundClosure__computeFieldNamed,993,BoundClosure__receiverFieldNameCache,994,Closure_cspForwardInterceptedCall,995,BoundClosure_interceptorOf,996,RuntimeError,997,JSArray_markFixedList,998,_wrapJsFunctionForAsync_closure,999,_StreamIterator,1000,StreamSubscription,1001,_awaitOnObject,226,_awaitOnObject_closure,1002,_awaitOnObject_closure0,1002,_TypeError__TypeError$forType,1003,_TypeError,1004,_Error_compose,1005,_failedAsCheck,116,instanceOrFunctionType,94,_TypeError$fromMessage,1006,Rti__isUnionOfFunctionType,1007,closureFunctionType,93,getTypeFromTypesTable,102,_generalAsCheckImplementation,114,_asTop,123,_asObject,121,_generalNullableAsCheckImplementation,115,_nullIs,109,_isSubtype,205,Rti__getFutureFromFutureOr,1008,_isFunctionSubtype,206,_isInterfaceSubtype,207,_isRecordSubtype,210,_areArgumentsSubtypes,209,_isObject,120,_finishIsFn,107,_isTop,122,_isNum,135,_isString,139,isTopType,146,_isListTestViaProperty,113,_isTestViaProperty,112,_generalNullableIsTestImplementation,111,_generalIsTestImplementation,110,_Universe_bind,1009,_instanceTypeFromConstructor,100,_instanceTypeFromConstructorMiss,101,_Universe_findErasedType,1010,_AsyncAwaitCompleter,1011,_Future__asyncCompleteError_closure,1012,_Future__chainFuture_closure,1013,_Future__chainForeignFuture_closure,1014,_Future__chainForeignFuture_closure0,1014,_Future__chainForeignFuture_closure1,1014,scheduleMicrotask,237,_Future__asyncCompleteWithValue_closure,1015,_EventStreamSubscription_closure,1016,_wrapZone,288,_EventStreamSubscription,287,_RootZone_bindUnaryCallbackGuarded_closure,533,_AcceptStructuredCloneDart2Js,1017,_ensureNativeList,75,keyProviderOptions,850,KeyOptions,299,participantCryptors,1018,WhereIterable,1019,bool,1020,main__closure,1021,List_List$of,1022,printString,304,LinkedHashMap_LinkedHashMap$_literal,1023,main__closure0,1021,IterableExtension_firstWhereOrNull,1024,Cryptor$,855,main__closure1,1021,main__closure2,1021,main__closure3,1021,main__closure4,1021,main__closure5,1021,main__closure6,1021,main__closure7,1021,jsify,292,NativeUint8List_NativeUint8List$view,1025,throwLateFieldNI,305,iae,26,boolConversionCheck,59,jsArrayBufferFrom,297,_checkValidRange,81,promiseToFuture,294,_CopyingBytesBuilder,1026,RangeError_checkValidRange,1027,StateError$,855,_asDouble,128,SubListIterable$,855,ListIterable,1028,SubListIterable,4,StateError,281,JSArray_JSArray$fixed,1029,List_List$filled,1030,JSArray_JSArray$markFixed,1031,NativeUint8List_NativeUint8List,855,_AsyncCompleter,1032,promiseToFuture_closure,1033,promiseToFuture_closure0,1033,NullRejectionException,1034,diagnoseRangeError,29,assertThrow,60,_AssertionError,1035,argumentErrorValue,30,findNALUIndices,300,LateError$fieldNI,1036,_JSSecureRandom,772,NativeByteData_NativeByteData,855,_convertDataTree,293,_convertDataTree__convert,1037,_IdentityHashMap,1038,_HashMap__getTableEntry,1039,_HashMapKeyIterable,1040,_HashMapKeyIterator,1041,MappedListIterable,1042,MappedIterable,5,MappedIterator,1043,Iterator,1044,MappedIterable_MappedIterable,855,EfficientLengthMappedIterable,1045,_HashMap__newHashTable,1046,_HashMap__setTableEntry,1047,Cryptor_ratchetKey_closure,1048,Cryptor_ratchetKey__closure,1049,Cryptor_ratchetKey___closure,1050,getAlgoOptions,311,KeySet,1051,WhereIterator,1052,_StructuredCloneDart2Js,1053,DateTime,1054,_StructuredClone_walk_closure,1055,_StructuredClone_walk_closure0,1055,Codec,1056,_Base64Encoder,1057,String_String$fromCharCodes,1058,Primitives_stringFromNativeUint8List,1059,_Base64Encoder_encodeChunk,1060,impportKeyFromRawData,298,Cryptor,301,LinkedHashMap,1061,fillLiteralMap,44,List_List$_of,1062,CodeUnits,1063,NativeUint8List_NativeUint8List$fromList,1064,KeyOptions$,855,UnmodifiableListMixin,1065,_Base64Decoder,1066,FormatException$,855,FormatException,284,_Base64Decoder__checkPadding,1067,_Base64Decoder__allocateBuffer,1068,_Base64Decoder_decodeChunk,1069,_Base64Decoder__trimPaddingChars,1070,_AcceptStructuredClone_walk_closure,1071,Primitives_getYear,1072,DateTime__fourDigits,1073,Primitives_getMonth,1074,DateTime__twoDigits,1075,Primitives_getDay,1076,Primitives_getHours,1077,Primitives_getMinutes,1078,Primitives_getSeconds,1079,Primitives_getMilliseconds,1080,DateTime__threeDigits,1081,Primitives_lazyAsJsDate,1082,_convertDartFunctionFast,307,_callDartFunctionFast,308,Primitives_applyFunction,1083,Primitives__generalApplyFunction,1084,Primitives_functionNoSuchMethod,1085,Primitives_functionNoSuchMethod_closure,1086,JSInvocationMirror,1087,Symbol,1088,NoSuchMethodError$_,1089,NoSuchMethodError_toString_closure,1090,NoSuchMethodError,1091,ConstantMapView,1092,_ConstantMapKeyIterable,1093,ConstantStringMap,1094,Map,1095,main__closure8,1021,_Utils_objectAssign,1096,JS_CONST,1097,Interceptor,1098,JSBool,1099,Null,1100,JSNull,1101,JavaScriptObject,1102,JSObject,1103,LegacyJavaScriptObject,1104,PlainJavaScriptObject,1105,UnknownJavaScriptObject,1106,Function,1107,JavaScriptFunction,1108,EfficientLengthIterable,1109,JSIndexable,1110,JSUnmodifiableArray,1111,double,1112,num,1113,JSNumber,1114,int,1115,JSInt,1116,JSNumNotInt,1117,String,1118,JSString,1119,SentinelValue,1120,FixedLengthListMixin,1121,UnmodifiableListBase,1122,Symbol0,1088,ConstantMap,1123,Invocation,1124,StackTrace,1125,Closure0Args,1126,Closure2Args,1127,TearOffClosure,1128,_Required,1129,NativeByteBuffer,1130,ByteBuffer,1131,NativeTypedData,1132,ByteData,1133,NativeByteData,76,NativeTypedArray,1134,NativeTypedArrayOfDouble,1135,NativeTypedArrayOfInt,1136,NativeFloat32List,1137,NativeFloat64List,1138,NativeInt16List,1139,NativeInt32List,1140,NativeInt8List,1141,NativeUint16List,1142,NativeUint32List,1143,NativeUint8ClampedList,1144,Uint8List,1145,NativeUint8List,77,_Error,1146,TypeError,1147,Completer,296,Error,1148,_Completer,1149,Stream,1150,StreamTransformerBase,1151,Zone,1152,_Zone,1153,_RootZone,1154,_HashMap,1155,ListBase,1156,MapBase,1157,_UnmodifiableMapMixin,1158,MapView,1159,UnmodifiableMapView,1160,Base64Codec,1161,Base64Encoder,1162,Base64Decoder,1163,Converter,1164,_Enum,1165,OutOfMemoryError,1166,_StringStackTrace,1167,HtmlElement,1168,AbortPaymentEvent,1169,AbsoluteOrientationSensor,1170,Accelerometer,1171,AccessibleNode,1172,AccessibleNodeList,1173,AmbientLightSensor,1174,AnchorElement,1175,Animation,1176,AnimationEffectReadOnly,1177,AnimationEffectTiming,1178,AnimationEffectTimingReadOnly,1179,AnimationEvent,1180,AnimationPlaybackEvent,1181,AnimationTimeline,1182,AnimationWorkletGlobalScope,1183,ApplicationCache,1184,ApplicationCacheErrorEvent,1185,AreaElement,1186,AudioElement,1187,AuthenticatorAssertionResponse,1188,AuthenticatorAttestationResponse,1189,AuthenticatorResponse,1190,BRElement,1191,BackgroundFetchClickEvent,1192,BackgroundFetchEvent,1193,BackgroundFetchFailEvent,1194,BackgroundFetchFetch,1195,BackgroundFetchManager,1196,BackgroundFetchRegistration,1197,BackgroundFetchSettledFetch,1198,BackgroundFetchedEvent,1199,BarProp,1200,BarcodeDetector,1201,BaseElement,1202,BatteryManager,1203,BeforeInstallPromptEvent,1204,BeforeUnloadEvent,1205,Blob,1206,BlobEvent,1207,BluetoothRemoteGattDescriptor,1208,Body,1209,BodyElement,1210,BroadcastChannel,1211,BudgetState,1212,ButtonElement,1213,CDataSection,1214,CacheStorage,1215,CanMakePaymentEvent,1216,CanvasCaptureMediaStreamTrack,1217,CanvasElement,1218,CanvasGradient,1219,CanvasPattern,1220,CanvasRenderingContext2D,1221,CharacterData,1222,Client,1223,Clients,1224,ClipboardEvent,1225,CloseEvent,1226,Comment,1227,CompositionEvent,1228,ContentElement,1229,CookieStore,1230,Coordinates,1231,Credential,1232,CredentialUserData,1233,CredentialsContainer,1234,Crypto,1235,CryptoKey,1236,Css,1237,CssCharsetRule,1238,CssConditionRule,1239,CssFontFaceRule,1240,CssGroupingRule,1241,CssImageValue,1242,CssImportRule,1243,CssKeyframeRule,1244,CssKeyframesRule,1245,CssKeywordValue,1246,CssMatrixComponent,1247,CssMediaRule,1248,CssNamespaceRule,1249,CssNumericValue,1250,CssPageRule,1251,CssPerspective,1252,CssPositionValue,1253,CssResourceValue,1254,CssRotation,1255,CssRule,1256,CssScale,1257,CssSkew,1258,CssStyleDeclaration,1259,CssStyleDeclarationBase,1260,CssStyleRule,1261,CssStyleSheet,1262,CssStyleValue,1263,CssSupportsRule,1264,CssTransformComponent,1265,CssTransformValue,1266,CssTranslation,1267,CssUnitValue,1268,CssUnparsedValue,1269,CssVariableReferenceValue,1270,CssViewportRule,1271,CssurlImageValue,1272,CustomElementRegistry,1273,CustomEvent,1274,DListElement,1275,DataElement,1276,DataListElement,1277,DataTransfer,1278,DataTransferItem,1279,DataTransferItemList,1280,DedicatedWorkerGlobalScope,1281,DeprecatedStorageInfo,1282,DeprecatedStorageQuota,1283,DeprecationReport,1284,DetailsElement,1285,DetectedBarcode,1286,DetectedFace,1287,DetectedText,1288,DeviceAcceleration,1289,DeviceMotionEvent,1290,DeviceOrientationEvent,1291,DeviceRotationRate,1292,DialogElement,1293,DirectoryEntry,1294,DirectoryReader,1295,DivElement,1296,Document,1297,DocumentFragment,1298,DocumentOrShadowRoot,1299,DocumentTimeline,1300,DomError,1301,DomException,1302,DomImplementation,1303,DomIterator,1304,DomMatrix,1305,DomMatrixReadOnly,1306,DomParser,1307,DomPoint,1308,DomPointReadOnly,1309,DomQuad,1310,DomRectList,1311,Rectangle,1312,DomRectReadOnly,1313,DomStringList,1314,DomStringMap,1315,DomTokenList,1316,Element,1317,EmbedElement,1318,Entry,1319,ErrorEvent,1320,Event,1321,EventSource,1322,EventTarget,1323,ExtendableEvent,1324,ExtendableMessageEvent,1325,External,1326,FaceDetector,1327,FederatedCredential,1328,FetchEvent,1329,FieldSetElement,1330,File,1331,FileEntry,1332,FileList,1333,FileReader,1334,FileSystem,1335,FileWriter,1336,FocusEvent,1337,FontFace,1338,FontFaceSet,1339,FontFaceSetLoadEvent,1340,FontFaceSource,1341,ForeignFetchEvent,1342,FormData,1343,FormElement,1344,Gamepad,1345,GamepadButton,1346,GamepadEvent,1347,GamepadPose,1348,Geolocation,1349,Geoposition,1350,Gyroscope,1351,HRElement,1352,HashChangeEvent,1353,HeadElement,1354,Headers,1355,HeadingElement,1356,History,1357,HtmlCollection,1358,HtmlDocument,1359,HtmlFormControlsCollection,1360,HtmlHtmlElement,1361,HtmlHyperlinkElementUtils,1362,HtmlOptionsCollection,1363,HttpRequest,1364,HttpRequestEventTarget,1365,HttpRequestUpload,1366,IFrameElement,1367,IdleDeadline,1368,ImageBitmap,1369,ImageBitmapRenderingContext,1370,ImageCapture,1371,ImageData,1372,ImageElement,1373,InputDeviceCapabilities,1374,InputElement,1375,InstallEvent,1376,IntersectionObserver,1377,IntersectionObserverEntry,1378,InterventionReport,1379,KeyboardEvent,1380,KeyframeEffect,1381,KeyframeEffectReadOnly,1382,LIElement,1383,LabelElement,1384,LegendElement,1385,LinearAccelerationSensor,1386,LinkElement,1387,Location,1388,Magnetometer,1389,MapElement,1390,MathMLElement,1391,MediaCapabilities,1392,MediaCapabilitiesInfo,1393,MediaDeviceInfo,1394,MediaDevices,1395,MediaElement,1396,MediaEncryptedEvent,1397,MediaError,1398,MediaKeyMessageEvent,1399,MediaKeySession,1400,MediaKeyStatusMap,1401,MediaKeySystemAccess,1402,MediaKeys,1403,MediaKeysPolicy,1404,MediaList,1405,MediaMetadata,1406,MediaQueryList,1407,MediaQueryListEvent,1408,MediaRecorder,1409,MediaSession,1410,MediaSettingsRange,1411,MediaSource,1412,MediaStream,1413,MediaStreamEvent,1414,MediaStreamTrack,1415,MediaStreamTrackEvent,1416,MemoryInfo,1417,MenuElement,1418,MessageChannel,1419,MessageEvent,1420,MessagePort,1421,MetaElement,1422,Metadata,1423,MeterElement,1424,MidiAccess,1425,MidiConnectionEvent,1426,MidiInput,1427,MidiInputMap,1428,MidiMessageEvent,1429,MidiOutput,1430,MidiOutputMap,1431,MidiPort,1432,MimeType,1433,MimeTypeArray,1434,ModElement,1435,MouseEvent,1436,MutationEvent,1437,MutationObserver,1438,MutationRecord,1439,NavigationPreloadManager,1440,Navigator,1441,NavigatorAutomationInformation,1442,NavigatorConcurrentHardware,1443,NavigatorCookies,1444,NavigatorUserMediaError,1445,NetworkInformation,1446,Node,1447,NodeFilter,1448,NodeIterator,1449,NodeList,1450,NonDocumentTypeChildNode,1451,NonElementParentNode,1452,NoncedElement,1453,Notification,1454,NotificationEvent,1455,OListElement,1456,ObjectElement,1457,OffscreenCanvas,1458,OffscreenCanvasRenderingContext2D,1459,OptGroupElement,1460,OptionElement,1461,OrientationSensor,1462,OutputElement,1463,OverconstrainedError,1464,PageTransitionEvent,1465,PaintRenderingContext2D,1466,PaintSize,1467,PaintWorkletGlobalScope,1468,ParagraphElement,1469,ParamElement,1470,PasswordCredential,1471,Path2D,1472,PaymentAddress,1473,PaymentInstruments,1474,PaymentManager,1475,PaymentRequest,1476,PaymentRequestEvent,1477,PaymentRequestUpdateEvent,1478,PaymentResponse,1479,Performance,1480,PerformanceEntry,1481,PerformanceLongTaskTiming,1482,PerformanceMark,1483,PerformanceMeasure,1484,PerformanceNavigation,1485,PerformanceNavigationTiming,1486,PerformanceObserver,1487,PerformanceObserverEntryList,1488,PerformancePaintTiming,1489,PerformanceResourceTiming,1490,PerformanceServerTiming,1491,PerformanceTiming,1492,PermissionStatus,1493,Permissions,1494,PhotoCapabilities,1495,PictureElement,1496,Plugin,1497,PluginArray,1498,PointerEvent,1499,PopStateEvent,1500,PositionError,1501,PreElement,1502,Presentation,1503,PresentationAvailability,1504,PresentationConnection,1505,PresentationConnectionAvailableEvent,1506,PresentationConnectionCloseEvent,1507,PresentationConnectionList,1508,PresentationReceiver,1509,PresentationRequest,1510,ProcessingInstruction,1511,ProgressElement,1512,ProgressEvent,1513,PromiseRejectionEvent,1514,PublicKeyCredential,1515,PushEvent,1516,PushManager,1517,PushMessageData,1518,PushSubscription,1519,PushSubscriptionOptions,1520,QuoteElement,1521,Range,1522,RelatedApplication,1523,RelativeOrientationSensor,1524,RemotePlayback,1525,ReportBody,1526,ReportingObserver,1527,ResizeObserver,1528,ResizeObserverEntry,1529,RtcCertificate,1530,RtcDataChannel,1531,RtcDataChannelEvent,1532,RtcDtmfSender,1533,RtcDtmfToneChangeEvent,1534,RtcIceCandidate,1535,RtcLegacyStatsReport,1536,RtcPeerConnection,1537,RtcPeerConnectionIceEvent,1538,RtcRtpContributingSource,1539,RtcRtpReceiver,1540,RtcRtpSender,1541,RtcSessionDescription,1542,RtcStatsReport,1543,RtcStatsResponse,1544,RtcTrackEvent,1545,Screen,1546,ScreenOrientation,1547,ScriptElement,1548,ScrollState,1549,ScrollTimeline,1550,SecurityPolicyViolationEvent,1551,SelectElement,1552,Selection,1553,Sensor,1554,SensorErrorEvent,1555,ServiceWorker,1556,ServiceWorkerContainer,1557,ServiceWorkerGlobalScope,1558,ServiceWorkerRegistration,1559,ShadowElement,1560,ShadowRoot,1561,SharedArrayBuffer,1562,SharedWorker,1563,SharedWorkerGlobalScope,1564,SlotElement,1565,SourceBuffer,1566,SourceBufferList,1567,SourceElement,1568,SpanElement,1569,SpeechGrammar,1570,SpeechGrammarList,1571,SpeechRecognition,1572,SpeechRecognitionAlternative,1573,SpeechRecognitionError,1574,SpeechRecognitionEvent,1575,SpeechRecognitionResult,1576,SpeechSynthesis,1577,SpeechSynthesisEvent,1578,SpeechSynthesisUtterance,1579,SpeechSynthesisVoice,1580,StaticRange,1581,Storage,1582,StorageEvent,1583,StorageManager,1584,StyleElement,1585,StyleMedia,1586,StylePropertyMap,1587,StylePropertyMapReadonly,1588,StyleSheet,1589,SyncEvent,1590,SyncManager,1591,TableCaptionElement,1592,TableCellElement,1593,TableColElement,1594,TableElement,1595,TableRowElement,1596,TableSectionElement,1597,TaskAttributionTiming,1598,TemplateElement,1599,Text,1600,TextAreaElement,1601,TextDetector,1602,TextEvent,1603,TextMetrics,1604,TextTrack,1605,TextTrackCue,1606,TextTrackCueList,1607,TextTrackList,1608,TimeElement,1609,TimeRanges,1610,TitleElement,1611,Touch,1612,TouchEvent,1613,TouchList,1614,TrackDefault,1615,TrackDefaultList,1616,TrackElement,1617,TrackEvent,1618,TransitionEvent,1619,TreeWalker,1620,TrustedHtml,1621,TrustedScriptUrl,1622,TrustedUrl,1623,UIEvent,1624,UListElement,1625,UnderlyingSourceBase,1626,UnknownElement,1627,Url,1628,UrlSearchParams,1629,VR,1630,VRCoordinateSystem,1631,VRDevice,1632,VRDeviceEvent,1633,VRDisplay,1634,VRDisplayCapabilities,1635,VRDisplayEvent,1636,VREyeParameters,1637,VRFrameData,1638,VRFrameOfReference,1639,VRPose,1640,VRSession,1641,VRSessionEvent,1642,VRStageBounds,1643,VRStageBoundsPoint,1644,VRStageParameters,1645,ValidityState,1646,VideoElement,1647,VideoPlaybackQuality,1648,VideoTrack,1649,VideoTrackList,1650,VisualViewport,1651,VttCue,1652,VttRegion,1653,WebSocket,1654,WheelEvent,1655,Window,1656,WindowClient,1657,Worker,1658,WorkerGlobalScope,1659,WorkerPerformance,1660,WorkletAnimation,1661,WorkletGlobalScope,1662,XPathEvaluator,1663,XPathExpression,1664,XPathNSResolver,1665,XPathResult,1666,XmlDocument,1667,XmlSerializer,1668,XsltProcessor,1669,_Attr,1670,_Bluetooth,1671,_BluetoothCharacteristicProperties,1672,_BluetoothDevice,1673,_BluetoothRemoteGATTCharacteristic,1674,_BluetoothRemoteGATTServer,1675,_BluetoothRemoteGATTService,1676,_BluetoothUUID,1677,_BudgetService,1678,_Cache,1679,_Clipboard,1680,_CssRuleList,1681,_DOMFileSystemSync,1682,_DirectoryEntrySync,1683,_DirectoryReaderSync,1684,_DocumentType,1685,_DomRect,1686,_EntrySync,1687,_FileEntrySync,1688,_FileReaderSync,1689,_FileWriterSync,1690,_GamepadList,1691,_HTMLAllCollection,1692,_HTMLDirectoryElement,1693,_HTMLFontElement,1694,_HTMLFrameElement,1695,_HTMLFrameSetElement,1696,_HTMLMarqueeElement,1697,_Mojo,1698,_MojoHandle,1699,_MojoInterfaceInterceptor,1700,_MojoInterfaceRequestEvent,1701,_MojoWatcher,1702,_NFC,1703,_NamedNodeMap,1704,_PagePopupController,1705,_Report,1706,_Request,1707,_ResourceProgressEvent,1708,_Response,1709,_SpeechRecognitionResultList,1710,_StyleSheetList,1711,_SubtleCrypto,1712,_USB,1713,_USBAlternateInterface,1714,_USBConfiguration,1715,_USBConnectionEvent,1716,_USBDevice,1717,_USBEndpoint,1718,_USBInTransferResult,1719,_USBInterface,1720,_USBIsochronousInTransferPacket,1721,_USBIsochronousInTransferResult,1722,_USBIsochronousOutTransferPacket,1723,_USBIsochronousOutTransferResult,1724,_USBOutTransferResult,1725,_WorkerLocation,1726,_WorkerNavigator,1727,_Worklet,1728,EventStreamProvider,1729,_EventStream,1730,_StructuredClone,1731,_AcceptStructuredClone,1732,Cursor,1733,CursorWithValue,1734,Database,1735,IdbFactory,1736,Index,1737,KeyRange,1738,ObjectStore,1739,Observation,1740,Observer,1741,ObserverChanges,1742,OpenDBRequest,1743,Request,1744,Transaction,1745,VersionChangeEvent,1746,AElement,1747,Angle,1748,AnimateElement,1749,AnimateMotionElement,1750,AnimateTransformElement,1751,AnimatedAngle,1752,AnimatedBoolean,1753,AnimatedEnumeration,1754,AnimatedInteger,1755,AnimatedLength,1756,AnimatedLengthList,1757,AnimatedNumber,1758,AnimatedNumberList,1759,AnimatedPreserveAspectRatio,1760,AnimatedRect,1761,AnimatedString,1762,AnimatedTransformList,1763,AnimationElement,1764,CircleElement,1765,ClipPathElement,1766,DefsElement,1767,DescElement,1768,DiscardElement,1769,EllipseElement,1770,FEBlendElement,1771,FEColorMatrixElement,1772,FEComponentTransferElement,1773,FECompositeElement,1774,FEConvolveMatrixElement,1775,FEDiffuseLightingElement,1776,FEDisplacementMapElement,1777,FEDistantLightElement,1778,FEFloodElement,1779,FEFuncAElement,1780,FEFuncBElement,1781,FEFuncGElement,1782,FEFuncRElement,1783,FEGaussianBlurElement,1784,FEImageElement,1785,FEMergeElement,1786,FEMergeNodeElement,1787,FEMorphologyElement,1788,FEOffsetElement,1789,FEPointLightElement,1790,FESpecularLightingElement,1791,FESpotLightElement,1792,FETileElement,1793,FETurbulenceElement,1794,FilterElement,1795,ForeignObjectElement,1796,GElement,1797,GeometryElement,1798,GraphicsElement,1799,ImageElement0,1373,Length,1800,LengthList,1801,LineElement,1802,LinearGradientElement,1803,MarkerElement,1804,MaskElement,1805,Matrix,1806,MetadataElement,1807,Number,1808,NumberList,1809,PathElement,1810,PatternElement,1811,Point,1812,PointList,1813,PolygonElement,1814,PolylineElement,1815,PreserveAspectRatio,1816,RadialGradientElement,1817,Rect,1818,RectElement,1819,ScriptElement0,1548,SetElement,1820,StopElement,1821,StringList,1822,StyleElement0,1585,SvgElement,1823,SvgSvgElement,1824,SwitchElement,1825,SymbolElement,1826,TSpanElement,1827,TextContentElement,1828,TextElement,1829,TextPathElement,1830,TextPositioningElement,1831,TitleElement0,1611,Transform,1832,TransformList,1833,UnitTypes,1834,UseElement,1835,ViewElement,1836,_GradientElement,1837,_SVGComponentTransferFunctionElement,1838,_SVGFEDropShadowElement,1839,_SVGMPathElement,1840,AnalyserNode,1841,AudioBuffer,1842,AudioBufferSourceNode,1843,AudioContext,1844,AudioDestinationNode,1845,AudioListener,1846,AudioNode,1847,AudioParam,1848,AudioParamMap,1849,AudioProcessingEvent,1850,AudioScheduledSourceNode,1851,AudioTrack,1852,AudioTrackList,1853,AudioWorkletGlobalScope,1854,AudioWorkletNode,1855,AudioWorkletProcessor,1856,BaseAudioContext,1857,BiquadFilterNode,1858,ChannelMergerNode,1859,ChannelSplitterNode,1860,ConstantSourceNode,1861,ConvolverNode,1862,DelayNode,1863,DynamicsCompressorNode,1864,GainNode,1865,IirFilterNode,1866,MediaElementAudioSourceNode,1867,MediaStreamAudioDestinationNode,1868,MediaStreamAudioSourceNode,1869,OfflineAudioCompletionEvent,1870,OfflineAudioContext,1871,OscillatorNode,1872,PannerNode,1873,PeriodicWave,1874,ScriptProcessorNode,1875,StereoPannerNode,1876,WaveShaperNode,1877,ActiveInfo,1878,AngleInstancedArrays,1879,Buffer,1880,Canvas,1881,ColorBufferFloat,1882,CompressedTextureAstc,1883,CompressedTextureAtc,1884,CompressedTextureETC1,1885,CompressedTextureEtc,1886,CompressedTexturePvrtc,1887,CompressedTextureS3TC,1888,CompressedTextureS3TCsRgb,1889,ContextEvent,1890,DebugRendererInfo,1891,DebugShaders,1892,DepthTexture,1893,DrawBuffers,1894,EXTsRgb,1895,ExtBlendMinMax,1896,ExtColorBufferFloat,1897,ExtColorBufferHalfFloat,1898,ExtDisjointTimerQuery,1899,ExtDisjointTimerQueryWebGL2,1900,ExtFragDepth,1901,ExtShaderTextureLod,1902,ExtTextureFilterAnisotropic,1903,Framebuffer,1904,GetBufferSubDataAsync,1905,LoseContext,1906,OesElementIndexUint,1907,OesStandardDerivatives,1908,OesTextureFloat,1909,OesTextureFloatLinear,1910,OesTextureHalfFloat,1911,OesTextureHalfFloatLinear,1912,OesVertexArrayObject,1913,Program,1914,Query,1915,Renderbuffer,1916,RenderingContext,1917,RenderingContext2,1918,Sampler,1919,Shader,1920,ShaderPrecisionFormat,1921,Sync,1922,Texture,1923,TimerQueryExt,1924,TransformFeedback,1925,UniformLocation,1926,VertexArrayObject,1927,VertexArrayObjectOes,1928,WebGL,1929,_WebGL2RenderingContextBase,1930,WritableStream,1931,ReadableStream,1932,TransformStream,1933,TransformStreamDefaultController,1934,EncodedStreams,1935,RTCEncodedFrame,1936,RTCEncodedAudioFrame,1937,RTCEncodedVideoFrame,1938,RTCEncodedFrameMetadata,1939,RTCEncodedAudioFrameMetadata,1940,RTCEncodedVideoFrameMetadata,1941,RTCTransformEvent,1942,RTCRtpScriptTransformer,1943,RTCRtpScriptTransform,1944,Promise,1945,Algorithm,1946,AesGcmParams,1947,CryptorError,1948,TransformMessage,1949,EnableTransformMessage,1950,RemoveTransformMessage,1951,_NativeTypedArrayOfDouble_NativeTypedArray_ListMixin,1952,_NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin,1953,_NativeTypedArrayOfInt_NativeTypedArray_ListMixin,1954,_NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin,1955,_ListBase_Object_ListMixin,1956,_UnmodifiableMapView_MapView__UnmodifiableMapMixin,1957,_CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase,1958,_DomRectList_JavaScriptObject_ListMixin,1959,_DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin,1960,_DomStringList_JavaScriptObject_ListMixin,1961,_DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin,1962,_FileList_JavaScriptObject_ListMixin,1963,_FileList_JavaScriptObject_ListMixin_ImmutableListMixin,1964,_HtmlCollection_JavaScriptObject_ListMixin,1965,_HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin,1966,_MidiInputMap_JavaScriptObject_MapMixin,1967,_MidiOutputMap_JavaScriptObject_MapMixin,1968,_MimeTypeArray_JavaScriptObject_ListMixin,1969,_MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin,1970,_NodeList_JavaScriptObject_ListMixin,1971,_NodeList_JavaScriptObject_ListMixin_ImmutableListMixin,1972,_PluginArray_JavaScriptObject_ListMixin,1973,_PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin,1974,_RtcStatsReport_JavaScriptObject_MapMixin,1975,_SourceBufferList_EventTarget_ListMixin,1976,_SourceBufferList_EventTarget_ListMixin_ImmutableListMixin,1977,_SpeechGrammarList_JavaScriptObject_ListMixin,1978,_SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin,1979,_Storage_JavaScriptObject_MapMixin,1980,_TextTrackCueList_JavaScriptObject_ListMixin,1981,_TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin,1982,_TextTrackList_EventTarget_ListMixin,1983,_TextTrackList_EventTarget_ListMixin_ImmutableListMixin,1984,_TouchList_JavaScriptObject_ListMixin,1985,_TouchList_JavaScriptObject_ListMixin_ImmutableListMixin,1986,__CssRuleList_JavaScriptObject_ListMixin,1987,__CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin,1988,__GamepadList_JavaScriptObject_ListMixin,1989,__GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin,1990,__NamedNodeMap_JavaScriptObject_ListMixin,1991,__NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin,1992,__SpeechRecognitionResultList_JavaScriptObject_ListMixin,1993,__SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin,1994,__StyleSheetList_JavaScriptObject_ListMixin,1995,__StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin,1996,_LengthList_JavaScriptObject_ListMixin,1997,_LengthList_JavaScriptObject_ListMixin_ImmutableListMixin,1998,_NumberList_JavaScriptObject_ListMixin,1999,_NumberList_JavaScriptObject_ListMixin_ImmutableListMixin,2000,_StringList_JavaScriptObject_ListMixin,2001,_StringList_JavaScriptObject_ListMixin_ImmutableListMixin,2002,_TransformList_JavaScriptObject_ListMixin,2003,_TransformList_JavaScriptObject_ListMixin_ImmutableListMixin,2004,_AudioParamMap_JavaScriptObject_MapMixin,2005,getNativeInterceptor,313,isJsIndexable,7,closureFromTearOff,53,throwCyclicInit,61,defineProperty,63,findType,86,typeLiteral,105,_asBoolS,126,_asBoolQ,127,_asDoubleS,129,_asDoubleQ,130,_asIntS,133,_asNum,136,_asNumS,137,_asStringS,141,_Universe_addRules,2006,_Universe_addErasedTypes,2007,_AsyncRun__scheduleImmediateJsOverride,2008,_AsyncRun__scheduleImmediateWithSetImmediate,2009,_AsyncRun__scheduleImmediateWithTimer,2010,_startMicrotaskLoop,234,StreamIterator_StreamIterator,855,throwLateFieldADI,306,DART_CLOSURE_PROPERTY_NAME,833,_CopyingBytesBuilder__emptyList,2011,TypeErrorDecoder_noSuchMethodPattern,2012,TypeErrorDecoder_notClosurePattern,2013,TypeErrorDecoder_nullCallPattern,2014,TypeErrorDecoder_nullLiteralCallPattern,2015,TypeErrorDecoder_undefinedCallPattern,2016,TypeErrorDecoder_undefinedLiteralCallPattern,2017,TypeErrorDecoder_nullPropertyPattern,2018,TypeErrorDecoder_nullLiteralPropertyPattern,2019,TypeErrorDecoder_undefinedPropertyPattern,2020,TypeErrorDecoder_undefinedLiteralPropertyPattern,2021,_AsyncRun__scheduleImmediateClosure,2022,_Base64Decoder__inverseAlphabet,2023,_Base64Decoder__emptyBuffer,2024,_hashSeed,848,Random__secureRandom,2025,Record,2026,$get$DART_CLOSURE_PROPERTY_NAME,833,$get$_hashSeed,848,$get$_AsyncRun__scheduleImmediateClosure,2022,$get$TypeErrorDecoder_noSuchMethodPattern,2012,$get$TypeErrorDecoder_notClosurePattern,2013,$get$TypeErrorDecoder_nullCallPattern,2014,$get$TypeErrorDecoder_nullLiteralCallPattern,2015,$get$TypeErrorDecoder_undefinedCallPattern,2016,$get$TypeErrorDecoder_undefinedLiteralCallPattern,2017,$get$TypeErrorDecoder_nullPropertyPattern,2018,$get$TypeErrorDecoder_nullLiteralPropertyPattern,2019,$get$TypeErrorDecoder_undefinedPropertyPattern,2020,$get$TypeErrorDecoder_undefinedLiteralPropertyPattern,2021,$get$keyProviderOptions,850,$get$_CopyingBytesBuilder__emptyList,2011,$get$Random__secureRandom,2025,$get$_Base64Decoder__inverseAlphabet,2023,$get$_Base64Decoder__emptyBuffer,2024,getInterceptor$,2027,getInterceptor$x,2028,getInterceptor$asx,2029,async___startMicrotaskLoop$closure,2030,async__AsyncRun__scheduleImmediateJsOverride$closure,2031,async__AsyncRun__scheduleImmediateWithSetImmediate$closure,2032,async__AsyncRun__scheduleImmediateWithTimer$closure,2033,getInterceptor$ax,2034", - "instance": "super$LegacyJavaScriptObject$toString,2035,$this,2036,future,2037,get$future,2037,_box_0,2038,_TimerImpl$2,855,callback,2039,div,2040,span,2041,f,2042,_box_1,2043,sourceResult,2044,hasError,2045,listener,2046,originalSource,2047,error,2048,stackTrace,2049,get$stackTrace,2049,keys,2050,get$keys,2050,result,2051,super$Interceptor$toString,2035,prototypeForTag,2052,getUnknownTag,2053,getTag,2054,$protected,2055,bodyFunction,2056,e,2057,s,2058,value,2059,T,2060,onData,2061,setupTransform$body$Cryptor,2062,decodeFunction$body$Cryptor,2063,super$ListMixin$setRange,2064,completer,2065,encodeFunction$body$Cryptor,2066,_JSSecureRandom$0,855,_convertedObjects,2067,keyIndex,2068,trackId,2069,get$trackId,2069,participantId,2070,get$participantId,2070,c,2071,keySet,2072,map,2073,get$map,2073,sb,2074,namedArgumentList,2075,$arguments,2076,SubListIterable$3,855,LinkedHashMapKeyIterator$2,855,_Type$1,855,DateTime$_withValue$2$isUtc,2077,_EventStreamSubscription$4,855,_as,2078,_useCapture,2079,_message,2080,toString$0,2035,forEach$1,2081,add$1,2082,_contents,2083,first,2084,_precomputed1,2085,_rest,2086,_strings,2087,_newHashTable$0,2088,_addHashTableEntry$3,2089,_nums,2090,internalSet$2,2091,__js_helper$_rest,2092,internalComputeHashCode$1,2093,_newLinkedCell$2,2094,internalFindBucketIndex$2,2095,hashMapCellValue,2096,_first,2097,_last,2098,_next,2099,_length,2100,_modifications,2101,hashMapCellKey,2102,modifiedObject,2103,_is,2104,_kind,2105,_primary,2106,_requiredPositional,2107,_optionalPositional,2108,_named,2109,_eval$1,2110,_bind$1,2111,width,2112,get$width,2112,height,2113,get$height,2113,_height,2114,get$_height,2114,_width,2115,get$_width,2115,hashCode,2116,get$hashCode,2116,_rti,2117,message,2118,_canonicalRecipe,2119,_bindCache,2120,_evalCache,2121,_cachedRuntimeType,2122,_specializedTestResource,2123,iterator,2124,get$iterator,2124,moveNext$0,2125,current,2126,get$current,2126,internalGet$1,2127,_iterable,2128,__interceptors$_length,2129,_index,2130,_current,2131,set$_current,2131,length,2132,get$length,2132,set$length,2132,_html$_current,2133,set$_html$_current,2133,_position,2134,_html$_length,2135,get$_html$_length,2135,_array,2136,name,2137,get$name,2137,_errorName,2138,get$_errorName,2138,_hasValue,2139,_errorExplanation,2140,get$_errorExplanation,2140,invalidValue,2141,get$invalidValue,2141,__internal$_iterable,2142,__internal$_length,2143,__internal$_index,2144,__internal$_current,2145,set$__internal$_current,2145,elementAt$1,2146,start,2147,end,2148,_map,2149,count,2150,_target,2151,_eventType,2152,_resultOrListeners,2153,_zone,2154,get$_zone,2154,_state,2155,_removeListeners$0,2156,source,2157,_nextListener,2158,listenerHasError,2159,listenerValueOrError,2160,state,2161,_reverseListeners$1,2162,_cloneResult$1,2163,_prependListeners$1,2164,listeners,2165,bindCallbackGuarded$1,2166,next,2167,storedCallback,2168,runGuarded$1,2169,_trace,2170,_exception,2171,dartException,2172,_irritant,2173,_shrOtherPositive$1,2174,matchTypeError$1,2175,__js_helper$_message,2176,_method,2177,_receiver,2178,_pattern,2179,_arguments,2180,_argumentsExpr,2181,_expr,2182,_shrBothPositive$1,2183,matchesErrorTest$1,2184,errorCallback,2185,handleError$1,2186,runBinary$3$3,2187,runUnary$2$2,2188,run$1$1,2189,then$1$1,2190,_addListener$1,2191,registerBinaryCallback$3$1,2192,_cell,2193,__js_helper$_current,2194,set$__js_helper$_current,2194,variableName,2195,_onData,2196,_interceptor,2197,isSync,2198,_future,2199,completeError$2,2200,complete$1,2201,_thenAwait$1$2,2202,then$1$2$onError,2190,__rti$_message,2203,_completeError$2,2204,_asyncCompleteError$2,2205,_setErrorObject$1,2206,_asyncComplete$1,2207,_chainFuture$1,2208,_completeWithValue$1,2209,_chainForeignFuture$1,2210,_asyncCompleteWithValue$1,2211,addEventListener$3,2212,_addEventListener$3,2213,bindUnaryCallbackGuarded$1$1,2214,runUnaryGuarded$1$2,2215,postMessage$1,2216,mustCopy,2217,walk$1,2218,convert$1,2219,lastError,2220,enabled,2221,setupTransform$5$kind$operation$readable$trackId$writable,2062,_removeWhere$2,2222,sharedKey,2223,setKey$2,2224,cryptoKeyRing,2225,currentKeyIndex,2226,ratchetKey$1,2227,codec,2228,get$codec,2228,_enumToString$0,2229,_name,2230,pipeThrough$1,2231,pipeTo$1,2232,__Cryptor_kind_A,2233,encodeFunction,2066,get$encodeFunction,2066,decodeFunction,2063,get$decodeFunction,2063,worker,2234,setupTransform$6$codec$kind$operation$readable$trackId$writable,2062,enqueue$1,2235,sublist$1,2236,sublist$2,2236,synchronizationSource,2237,get$synchronizationSource,2237,data,2238,get$data,2238,set$data,2238,getUnencryptedBytes$2,2239,getMetadata$0,2240,getKeySet$1,2241,keyOptions,2242,ratchetWindowSize,2243,encryptionKey,2244,timestamp,2245,get$timestamp,2245,toBytes$0,2246,setKeySetFromMaterial$2,2247,decodeFunction$2,2063,_buffer,2248,setRange$3,2064,_setRangeFast$4,2249,skip$1,2250,toList$1$growable,2251,_startIndex,2252,get$_startIndex,2252,_endIndex,2253,get$_endIndex,2253,_endOrLength,2254,_start,2255,_checkPosition$3,2256,_invalidPosition$3,2257,completeError$1,2200,isUndefined,2258,type,2259,get$type,2259,setInt8$2,2260,sendCounts,2261,nextInt$1,2262,_setUint32$3,2263,encodeFunction$2,2066,_math$_buffer,2264,_getUint32$2,2265,_computeKeys$0,2266,_keys,2267,_collection$_length,2268,_collection$_strings,2269,_collection$_nums,2270,_collection$_rest,2271,_get$1,2272,_getBucket$2,2273,_findBucketIndex$2,2274,_collection$_map,2275,_offset,2276,_collection$_current,2277,set$_collection$_current,2277,map$1$1,2073,containsKey$1,2278,addAll$1,2279,_f,2280,_source,2281,_iterator,2282,_addAllFromArray$1,2283,_containsKey$1,2284,_ratchetCompleter,2285,material,2286,complete$0,2201,ratchetMaterial$1,2287,ratchetSalt,2288,deriveKeys$2,2289,ratchet$2,2290,copies,2291,values,2292,_value,2293,findSlot$1,2294,copy,2295,copyList$2,2296,forEachObjectKey$2,2297,encode$4,2298,_alphabet,2299,_convert$_state,2300,_tdivFast$1,2301,_codeUnitAt$1,2302,toRadixString$1,2303,codeUnitAt$1,2304,_tdivSlow$1,2305,_string,2306,decode$3,2307,offset,2308,substring$2,2309,forEachJsField$2,2310,isUtc,2311,noSuchMethod$1,2312,argumentCount,2313,names,2314,__internal$_name,2315,_typeArgumentCount,2316,_namedArgumentNames,2317,__js_helper$_kind,2318,_memberName,2319,memberName,2320,get$memberName,2320,positionalArguments,2321,get$positionalArguments,2321,namedArguments,2322,get$namedArguments,2322,comma,2323,_core$_arguments,2324,_namedArguments,2325,_core$_receiver,2326,_core$_memberName,2327,_existingArgumentNames,2328,__js_helper$_keys,2329,_jsObject,2330,kind,2331,get$kind,2331,set$kind,2331,msgType,2332,get$msgType,2332,code,2333,__,2334,get$__,2334,toString,2035,get$toString,2035,noSuchMethod,2312,get$noSuchMethod,2312,runtimeType,2335,get$runtimeType,2335,checkMutable$1,2336,checkGrowable$1,2337,add,2082,get$add,2082,removeLast$0,2338,removeWhere$1,2339,_removeWhere,2222,get$_removeWhere,2222,where$1,2340,addAll,2279,get$addAll,2279,_addAllFromArray,2283,get$_addAllFromArray,2283,join$1,2341,skip,2250,get$skip,2250,elementAt,2146,get$elementAt,2146,last,2342,get$last,2342,contains$1,2343,isEmpty,2344,get$isEmpty,2344,isNotEmpty,2345,get$isNotEmpty,2345,_toListGrowable$0,2346,_toListFixed$0,2347,__0,2348,get$__0,2348,___,2349,get$___,2349,moveNext,2125,get$moveNext,2125,remainder$1,2350,abs$0,2351,toRadixString,2303,get$toRadixString,2303,_,2352,get$_,2352,_isInt32$1,2353,_tdivFast,2301,get$_tdivFast,2301,_tdivSlow,2305,get$_tdivSlow,2305,_shlPositive$1,2354,_shrOtherPositive,2174,get$_shrOtherPositive,2174,_shrReceiverPositive$1,2355,_shrBothPositive,2183,get$_shrBothPositive,2183,codeUnitAt,2304,get$codeUnitAt,2304,_codeUnitAt,2302,get$_codeUnitAt,2302,matchAsPrefix$2,2356,_0,2357,get$_0,2357,substring,2309,get$substring,2309,toLowerCase$0,2358,_1,2359,get$_1,2359,padLeft$2,2360,codeUnits,2361,get$codeUnits,2361,indexOf$1,2362,_grow$1,2363,toBytes,2246,get$toBytes,2246,id,2364,toList,2251,get$toList,2251,_keysArray,2365,get$_keysArray,2365,containsKey,2278,get$containsKey,2278,_fetch$1,2366,forEach,2081,get$forEach,2081,isGetter,2367,get$isGetter,2367,isAccessor,2368,get$isAccessor,2368,_internalName,2369,_captured_namedArgumentList_1,2370,_captured_arguments_2,2371,matchTypeError,2175,get$matchTypeError,2175,$call,2372,get$$call,2372,__js_helper$_name,2373,get$__js_helper$_name,2373,__js_helper$_target,2374,get$__js_helper$_target,2374,internalContainsKey$1,2375,internalGet,2127,get$internalGet,2127,internalSet,2091,get$internalSet,2091,_addHashTableEntry,2089,get$_addHashTableEntry,2089,_modified$0,2376,_newLinkedCell,2094,get$_newLinkedCell,2094,internalComputeHashCode,2093,get$internalComputeHashCode,2093,__js_helper$_getBucket$2,2377,internalFindBucketIndex,2095,get$internalFindBucketIndex,2095,_getTableCell$2,2378,_getTableBucket$2,2379,_setTableEntry$3,2380,_deleteTableEntry$2,2381,_containsTableEntry$2,2382,_newHashTable,2088,get$_newHashTable,2088,_previous,2383,_captured_getTag_0,2384,_captured_getUnknownTag_0,2385,_captured_prototypeForTag_0,2386,lengthInBytes,2387,get$lengthInBytes,2387,asUint8List$2,2388,buffer,2389,get$buffer,2389,offsetInBytes,2390,get$offsetInBytes,2390,_invalidPosition,2257,get$_invalidPosition,2257,_checkPosition,2256,get$_checkPosition,2256,getUint32$1,2391,_getUint32,2265,get$_getUint32,2265,setInt8,2260,get$setInt8,2260,setUint32$2,2392,_setUint32,2263,get$_setUint32,2263,_setRangeFast,2249,get$_setRangeFast,2249,setRange,2064,get$setRange,2064,sublist,2236,get$sublist,2236,_eval,2110,get$_eval,2110,_bind,2111,get$_bind,2111,_precomputed2,2393,_precomputed3,2394,_precomputed4,2395,_async$_box_0,2396,_captured_div_1,2397,_captured_span_2,2398,_captured_callback_0,2399,_once,2400,_handle,2401,_tick,2402,_captured_this_0,2403,_captured_callback_1,2404,complete,2201,get$complete,2201,completeError,2200,get$completeError,2200,_captured_bodyFunction_0,2405,_captured_protected_0,2406,handlesValue,2407,get$handlesValue,2407,handlesError,2408,get$handlesError,2408,hasErrorTest,2409,get$hasErrorTest,2409,handlesComplete,2410,get$handlesComplete,2410,_onValue,2411,get$_onValue,2411,_onError,2412,get$_onError,2412,_errorTest,2413,get$_errorTest,2413,_whenCompleteAction,2414,get$_whenCompleteAction,2414,hasErrorCallback,2415,get$hasErrorCallback,2415,handleValue$1,2416,matchesErrorTest,2184,get$matchesErrorTest,2184,handleError,2186,get$handleError,2186,handleWhenComplete$0,2417,shouldChain$1,2418,_mayComplete,2419,get$_mayComplete,2419,_isPendingComplete,2420,get$_isPendingComplete,2420,_mayAddListener,2421,get$_mayAddListener,2421,_isChained,2422,get$_isChained,2422,_isComplete,2423,get$_isComplete,2423,_hasError,2424,get$_hasError,2424,_ignoreError,2425,get$_ignoreError,2425,_setChained$1,2426,then,2190,get$then,2190,_thenAwait,2202,get$_thenAwait,2202,_setPendingComplete$0,2427,_clearPendingComplete$0,2428,_error,2429,get$_error,2429,_chainSource,2430,get$_chainSource,2430,_setValue$1,2431,_setErrorObject,2206,get$_setErrorObject,2206,_setError$2,2432,_cloneResult,2163,get$_cloneResult,2163,_addListener,2191,get$_addListener,2191,_prependListeners,2164,get$_prependListeners,2164,_removeListeners,2156,get$_removeListeners,2156,_reverseListeners,2162,get$_reverseListeners,2162,_chainForeignFuture,2210,get$_chainForeignFuture,2210,_complete$1,2433,_completeWithValue,2209,get$_completeWithValue,2209,_completeError,2204,get$_completeError,2204,_asyncComplete,2207,get$_asyncComplete,2207,_asyncCompleteWithValue,2211,get$_asyncCompleteWithValue,2211,_chainFuture,2208,get$_chainFuture,2208,_asyncCompleteError,2205,get$_asyncCompleteError,2205,_captured_listener_1,2434,_captured_this_1,2435,_captured_e_1,2436,_captured_s_2,2437,_captured_value_1,2438,_captured_error_1,2439,_captured_stackTrace_2,2440,_captured_hasError_2,2441,_captured_originalSource_0,2442,_captured_sourceResult_1,2443,_captured_future_1,2444,_subscription,2445,_stateData,2446,_async$_hasValue,2447,inSameErrorZone$1,2448,_captured_error_0,2449,_captured_stackTrace_1,2450,_scheduleMicrotask,2451,get$_scheduleMicrotask,2451,errorZone,2452,get$errorZone,2452,runGuarded,2169,get$runGuarded,2169,runUnaryGuarded,2215,get$runUnaryGuarded,2215,bindCallback$1$1,2453,bindCallbackGuarded,2166,get$bindCallbackGuarded,2166,bindUnaryCallbackGuarded,2214,get$bindUnaryCallbackGuarded,2214,handleUncaughtError$2,2454,run,2189,get$run,2189,runUnary,2188,get$runUnary,2188,runBinary,2187,get$runBinary,2187,registerCallback$1$1,2455,registerUnaryCallback$2$1,2456,registerBinaryCallback,2192,get$registerBinaryCallback,2192,errorCallback$2,2185,scheduleMicrotask$1,237,_captured_f_1,2457,_captured_T_2,2458,_containsKey,2284,get$_containsKey,2284,_get,2272,get$_get,2272,_set$2,2459,_computeKeys,2266,get$_computeKeys,2266,_collection$_addHashTableEntry$3,2460,_computeHashCode$1,2461,_getBucket,2273,get$_getBucket,2273,_findBucketIndex,2274,get$_findBucketIndex,2274,_filter$2,2462,getRange$2,2463,setRange$4,2064,_collection$_box_0,2464,_captured_result_1,2465,encoder,2466,get$encoder,2466,decoder,2467,get$decoder,2467,decode$1,2307,_encoder,2468,convert,2219,get$convert,2219,_urlSafe,2469,createBuffer$1,2470,encode,2298,get$encode,2298,decode,2307,get$decode,2307,close$2,2471,encode$1,2298,_core$_box_0,2472,_captured_sb_1,2473,millisecondsSinceEpoch,2474,get$millisecondsSinceEpoch,2474,year,2475,get$year,2475,month,2476,get$month,2476,day,2477,get$day,2477,hour,2478,get$hour,2478,minute,2479,get$minute,2479,second,2480,get$second,2480,millisecond,2481,get$millisecond,2481,microsecond,2482,get$microsecond,2482,indexable,2483,_stackTrace,2484,write$1,2485,writeAll$2,2486,_writeString$1,2487,algorithm,2488,get$algorithm,2488,postMessage,2216,get$postMessage,2216,_postMessage_1$2,2489,_postMessage_2$1,2490,onMessage,2491,get$onMessage,2491,_left,2492,get$_left,2492,left,2493,get$left,2493,_top,2494,get$_top,2494,top,2495,get$top,2495,localName,2496,get$localName,2496,_localName,2497,get$_localName,2497,addEventListener,2212,get$addEventListener,2212,_addEventListener,2213,get$_addEventListener,2213,_get_data,2498,get$_get_data,2498,_html$_start$0,2499,_getItem$1,2500,_captured_keys_0,2501,nodeValue,2502,get$nodeValue,2502,_key$1,2503,_setItem$2,2504,forTarget$1,2505,listen$4$cancelOnError$onDone$onError,2506,isPaused,2507,get$isPaused,2507,_tryResume$0,2508,_pauseCount,2509,_captured_onData_0,2510,findSlot,2294,get$findSlot,2294,readSlot$1,2511,writeSlot$2,2512,cleanupSlots$0,2513,walk,2218,get$walk,2218,copyList,2296,get$copyList,2296,convertDartToNative_PrepareForStructuredClone$1,626,_html_common$_box_0,2514,_html_common$_captured_this_1,2515,convertNativeToDart_AcceptStructuredClone$2$mustCopy,826,_html_common$_captured_this_0,2516,_captured_map_1,2517,newJsObject$0,2518,forEachObjectKey,2297,get$forEachObjectKey,2297,putIntoObject$3,2519,newJsMap$0,2520,putIntoMap$3,2521,newJsList$1,2522,cloneNotRequired$1,2523,newDartList$1,2524,identicalInJs$2,2525,forEachJsField,2310,get$forEachJsField,2310,_captured__convertedObjects_0,2526,_captured_completer_0,2527,_captured_T_1,2528,_getRandomBytes$2,2529,nextInt,2262,get$nextInt,2262,getItem$1,2530,_web_audio$_getItem$1,2531,_web_audio$_captured_keys_0,2532,_enumToString,2229,get$_enumToString,2229,index,2533,ratchetKey,2227,get$ratchetKey,2227,ratchetMaterial,2287,get$ratchetMaterial,2287,getKeySet,2241,get$getKeySet,2241,setParticipantId$1,2534,setKeyIndex$1,2535,setEnabled$1,2536,setKey,2224,get$setKey,2224,setKeySetFromMaterial,2247,get$setKeySetFromMaterial,2247,deriveKeys,2289,get$deriveKeys,2289,ratchet,2290,get$ratchet,2290,updateCodec$1,2537,makeIv$2$synchronizationSource$timestamp,2538,setupTransform,2062,get$setupTransform,2062,getUnencryptedBytes,2239,get$getUnencryptedBytes,2239,_e2ee_cryptor$_captured_this_0,2539,_captured_keyIndex_1,2540,_captured_trackId_0,2541,_captured_participantId_0,2542,_captured_c_0,2543,_captured_keySet_1,2544,_captured_participantId_2,2545,$indexSet,2546,$add,2547,$eq,2548,$index,2549,$gt,2550,$ge,2551,$sub,2552,$mod,2553,$lt,2554,$mul,2555,$negate,2556,$div,2557,$tdiv,2558,$shl,2559,$shr,2560,$and,2561,$or,2562,$xor,2563,$le,2564" + "global": "$get$DART_CLOSURE_PROPERTY_NAME,794,$get$Logger_root,1171,$get$Random__secureRandom,1065,$get$TypeErrorDecoder_noSuchMethodPattern,1153,$get$TypeErrorDecoder_notClosurePattern,1154,$get$TypeErrorDecoder_nullCallPattern,1155,$get$TypeErrorDecoder_nullLiteralCallPattern,1156,$get$TypeErrorDecoder_nullLiteralPropertyPattern,1157,$get$TypeErrorDecoder_nullPropertyPattern,1158,$get$TypeErrorDecoder_undefinedCallPattern,1180,$get$TypeErrorDecoder_undefinedLiteralCallPattern,1181,$get$TypeErrorDecoder_undefinedLiteralPropertyPattern,1182,$get$TypeErrorDecoder_undefinedPropertyPattern,1183,$get$_AsyncRun__scheduleImmediateClosure,1061,$get$_Base64Decoder__emptyBuffer,1024,$get$_Base64Decoder__inverseAlphabet,1036,$get$_CopyingBytesBuilder__emptyList,1025,$get$_hashSeed,810,$get$logger,812,ArgumentError,312,ArgumentError$,814,ArgumentError$value,1185,ArrayIterator,815,AssertionError,311,AssertionError$,814,AsyncError,816,AsyncError_defaultStackTrace,1097,Base64Codec,817,Base64Decoder,818,Base64Encoder,819,BoundClosure,820,BoundClosure__computeFieldNamed,1016,BoundClosure__interceptorFieldNameCache,1035,BoundClosure__receiverFieldNameCache,1059,BoundClosure_evalRecipe,1103,BoundClosure_interceptorOf,1141,BoundClosure_receiverOf,1170,ByteBuffer,821,ByteData,822,BytesBuilder,737,Closure,823,Closure0Args,824,Closure2Args,825,Closure__computeSignatureFunctionNewRti,1017,Closure_cspForwardCall,1092,Closure_cspForwardInterceptedCall,1093,Closure_forwardCallTo,1112,Closure_forwardInterceptedCallTo,1113,Closure_fromTearOff,1116,Codec,826,ConcurrentModificationError,322,ConcurrentModificationError$,814,ConstantMap,827,ConstantMapView,828,ConstantStringMap,829,Converter,830,CryptorError,831,DART_CLOSURE_PROPERTY_NAME,794,DateTime,832,DateTime__fourDigits,1026,DateTime__threeDigits,1068,DateTime__twoDigits,1071,EfficientLengthIterable,833,EfficientLengthMappedIterable,834,Error,835,Error__throw,1069,Error_safeToString,1172,Error_throwWithStackTrace,1174,ExceptionAndStackTrace,836,Exception_Exception,814,FixedLengthListMixin,837,Float32List,838,Float64List,839,FormatException,324,FormatException$,814,FrameCryptor,345,FrameCryptor_decodeFunction_decryptFrameInternal,840,FrameCryptor_decodeFunction_ratchedKeyInternal,841,FrameInfo,842,Function,843,Future,844,IndexError,845,IndexError$withLength,1188,Int16List,846,Int32List,847,Int8List,848,Interceptor,849,Invocation,850,Iterable,851,IterableExtension_firstWhereOrNull,852,Iterable_iterableToFullString,1143,Iterable_iterableToShortString,1144,Iterator,853,JSArray,854,JSArray_JSArray$fixed,1110,JSArray_JSArray$markFixed,1151,JSBool,855,JSInt,856,JSInvocationMirror,857,JSNull,858,JSNumNotInt,859,JSNumber,860,JSObject,861,JSString,862,JSUnmodifiableArray,863,JS_CONST,864,JavaScriptBigInt,865,JavaScriptFunction,866,JavaScriptIndexingBehavior,867,JavaScriptObject,868,JavaScriptSymbol,869,JsLinkedHashMap,870,JsNoSuchMethodError,52,JsNoSuchMethodError$,814,KeyOptions,871,KeyProvider,767,KeySet,872,LateError,873,LegacyJavaScriptObject,874,Level,875,LinkedHashMap,876,LinkedHashMapCell,877,LinkedHashMapKeyIterator,878,LinkedHashMapKeysIterable,879,LinkedHashMap_LinkedHashMap$_empty,1023,LinkedHashMap_LinkedHashMap$_literal,1041,List,880,ListBase,881,ListIterable,882,ListIterator,883,List_List$_of,1057,List_List$filled,1106,List_List$of,1162,LogRecord,884,LogRecord__nextNumber,1055,Logger,350,Logger_Logger,814,Logger_Logger_closure,885,Logger__loggers,1042,Logger_root,1171,Map,886,MapBase,887,MapBase_mapToString,1150,MapBase_mapToString_closure,888,MapView,889,MappedIterable,11,MappedIterable_MappedIterable,814,MappedIterator,890,MappedListIterable,891,NativeByteBuffer,892,NativeByteData,94,NativeByteData_NativeByteData,814,NativeFloat32List,893,NativeFloat64List,894,NativeInt16List,895,NativeInt32List,896,NativeInt8List,897,NativeTypedArray,898,NativeTypedArrayOfDouble,899,NativeTypedArrayOfInt,900,NativeTypedData,901,NativeUint16List,902,NativeUint32List,903,NativeUint8ClampedList,904,NativeUint8List,96,NativeUint8List_NativeUint8List,814,NativeUint8List_NativeUint8List$view,1186,NoSuchMethodError,905,NoSuchMethodError_NoSuchMethodError$withInvocation,1187,NoSuchMethodError_toString_closure,906,Null,907,NullError,908,NullRejectionException,909,NullThrownFromJavaScriptException,910,Object,911,Object_hash,1136,OutOfMemoryError,912,ParticipantKeyHandler,343,ParticipantKeyHandler$,814,Pattern,913,PlainJavaScriptObject,914,Primitives__generalApplyFunction,1027,Primitives__identityHashCodeProperty,1032,Primitives__objectTypeNameNewRti,1056,Primitives_applyFunction,1077,Primitives_extractStackTrace,1105,Primitives_functionNoSuchMethod,1117,Primitives_functionNoSuchMethod_closure,915,Primitives_getDay,1118,Primitives_getHours,1119,Primitives_getMilliseconds,1124,Primitives_getMinutes,1125,Primitives_getMonth,1126,Primitives_getSeconds,1127,Primitives_getYear,1130,Primitives_lazyAsJsDate,1147,Primitives_objectHashCode,57,Primitives_objectTypeName,1161,Primitives_safeToString,1172,Primitives_stringFromNativeUint8List,1173,Primitives_trySetStackTrace,1179,Random__secureRandom,1065,RangeError,916,RangeError$range,1169,RangeError$value,1185,RangeError_checkNotNegative,1086,RangeError_checkValidRange,1087,Record,917,Rti,918,Rti__getCanonicalRecipe,1028,Rti__getFutureFromFutureOr,1029,Rti__getQuestionFromStar,1030,Rti__isUnionOfFunctionType,1038,RuntimeError,919,S,14,SentinelValue,920,SifGuard,921,StackOverflowError,922,StackTrace,923,StackTrace_current,1094,StateError,321,StateError$,814,StaticClosure,924,Stream,925,StreamController,926,StreamIterator_StreamIterator,814,StreamSubscription,927,Stream_length_closure,608,Stream_length_closure0,608,String,928,StringBuffer,929,StringBuffer__writeAll,1073,String_String$fromCharCodes,1114,String__stringFromUint8List,1067,Symbol,930,Symbol0,930,SystemHash_combine,1089,SystemHash_finish,1109,TearOffClosure,931,TrustedGetRuntimeType,932,TypeError,933,TypeErrorDecoder,934,TypeErrorDecoder_extractPattern,1104,TypeErrorDecoder_noSuchMethodPattern,1153,TypeErrorDecoder_notClosurePattern,1154,TypeErrorDecoder_nullCallPattern,1155,TypeErrorDecoder_nullLiteralCallPattern,1156,TypeErrorDecoder_nullLiteralPropertyPattern,1157,TypeErrorDecoder_nullPropertyPattern,1158,TypeErrorDecoder_provokeCallErrorOn,1167,TypeErrorDecoder_provokePropertyErrorOn,1168,TypeErrorDecoder_undefinedCallPattern,1180,TypeErrorDecoder_undefinedLiteralCallPattern,1181,TypeErrorDecoder_undefinedLiteralPropertyPattern,1182,TypeErrorDecoder_undefinedPropertyPattern,1183,Uint16List,935,Uint32List,936,Uint8ClampedList,937,Uint8List,938,UnimplementedError,320,UnimplementedError$,814,UnknownJavaScriptObject,939,UnknownJsTypeError,940,UnmodifiableMapView,941,UnsupportedError,319,UnsupportedError$,814,WhereIterable,942,WhereIterator,943,Zone,944,Zone__current,1022,_AddStreamState,945,_AssertionError,946,_AsyncAwaitCompleter,947,_AsyncCallbackEntry,948,_AsyncCompleter,949,_AsyncRun__initializeScheduleImmediate,1033,_AsyncRun__initializeScheduleImmediate_closure,950,_AsyncRun__initializeScheduleImmediate_internalCallback,951,_AsyncRun__scheduleImmediateClosure,1061,_AsyncRun__scheduleImmediateJsOverride,1062,_AsyncRun__scheduleImmediateJsOverride_internalCallback,952,_AsyncRun__scheduleImmediateWithSetImmediate,1063,_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback,953,_AsyncRun__scheduleImmediateWithTimer,1064,_Base64Decoder,954,_Base64Decoder__allocateBuffer,1010,_Base64Decoder__checkPadding,1015,_Base64Decoder__emptyBuffer,1024,_Base64Decoder__inverseAlphabet,1036,_Base64Decoder__trimPaddingChars,1070,_Base64Decoder_decodeChunk,1096,_Base64Encoder,955,_Base64Encoder_encodeChunk,1100,_BroadcastStream,956,_BroadcastStreamController,957,_BroadcastSubscription,556,_BufferingStreamSubscription,552,_BufferingStreamSubscription__registerErrorHandler,268,_Completer,958,_ControllerStream,959,_ControllerSubscription,960,_CopyingBytesBuilder,961,_CopyingBytesBuilder__emptyList,1025,_CyclicInitializationError,962,_DelayedData,963,_DelayedEvent,964,_DoneStreamSubscription,551,_Enum,965,_Error,966,_Error_compose,1090,_EventDispatch,967,_Exception,968,_FunctionParameters,969,_Future,970,_FutureListener,971,_Future__addListener_closure,972,_Future__asyncCompleteError_closure,973,_Future__asyncCompleteWithValue_closure,974,_Future__chainCoreFuture,1014,_Future__chainCoreFuture_closure,975,_Future__chainForeignFuture_closure,976,_Future__chainForeignFuture_closure0,976,_Future__chainForeignFuture_closure1,976,_Future__prependListeners_closure,977,_Future__propagateToListeners,1058,_Future__propagateToListeners_handleError,978,_Future__propagateToListeners_handleValueCallback,979,_Future__propagateToListeners_handleWhenCompleteCallback,980,_Future__propagateToListeners_handleWhenCompleteCallback_closure,981,_Future__propagateToListeners_handleWhenCompleteCallback_closure0,981,_HashMap,982,_HashMapKeyIterable,983,_HashMapKeyIterator,984,_HashMap__getTableEntry,1031,_HashMap__newHashTable,1053,_HashMap__setTableEntry,1066,_IdentityHashMap,985,_JSSecureRandom,723,_JS_INTEROP_INTERCEPTOR_TAG,986,_KeysOrValues,987,_KeysOrValuesOrElementsIterator,988,_NativeTypedArrayOfDouble_NativeTypedArray_ListMixin,989,_NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin,990,_NativeTypedArrayOfInt_NativeTypedArray_ListMixin,991,_NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin,992,_Parser_collectArray,1088,_Parser_create,1091,_Parser_handleArguments,1131,_Parser_handleDigit,1132,_Parser_handleExtendedOperations,1133,_Parser_handleIdentifier,1134,_Parser_handleTypeArguments,1135,_Parser_indexToType,1137,_Parser_parse,1163,_Parser_toType,1176,_Parser_toTypes,1177,_Parser_toTypesNamed,1178,_PendingEvents,993,_PendingEvents_schedule_closure,994,_Required,995,_RootZone,996,_RootZone_bindCallbackGuarded_closure,997,_StackTrace,998,_StreamControllerLifecycle,999,_StreamImpl,1000,_StreamIterator,1001,_StringStackTrace,1002,_SyncBroadcastStreamController,1003,_SyncBroadcastStreamController__sendData_closure,566,_TimerImpl,254,_TimerImpl$,814,_TimerImpl_internalCallback,1004,_Type,134,_TypeError,1005,_TypeError$fromMessage,1115,_TypeError__TypeError$forType,1111,_Universe__canonicalRecipeJoin,1012,_Universe__canonicalRecipeJoinNamed,1013,_Universe__createFutureOrRti,1018,_Universe__createGenericFunctionRti,1019,_Universe__createQuestionRti,1020,_Universe__createStarRti,1021,_Universe__installTypeTests,1034,_Universe__lookupBindingRti,1043,_Universe__lookupFunctionRti,1044,_Universe__lookupFutureOrRti,1045,_Universe__lookupGenericFunctionParameterRti,1046,_Universe__lookupGenericFunctionRti,1047,_Universe__lookupInterfaceRti,1048,_Universe__lookupQuestionRti,1049,_Universe__lookupRecordRti,1050,_Universe__lookupStarRti,1051,_Universe__lookupTerminalRti,1052,_Universe_addErasedTypes,1074,_Universe_addRules,1075,_Universe_bind,1084,_Universe_eval,1101,_Universe_evalInEnvironment,1102,_Universe_findErasedType,1107,_Universe_findRule,1108,_UnmodifiableMapMixin,1006,_UnmodifiableMapView_MapView__UnmodifiableMapMixin,1007,_UnmodifiableNativeByteBufferView,1008,_Utils_newArrayOrEmpty,1152,_Utils_objectAssign,1160,_Zone,1009,_areArgumentsSubtypes,245,_arrayInstanceType,123,_asBool,160,_asBoolQ,162,_asBoolS,161,_asDouble,163,_asDoubleQ,165,_asDoubleS,164,_asInt,167,_asIntQ,169,_asIntS,168,_asNum,171,_asNumQ,173,_asNumS,172,_asObject,155,_asString,175,_asStringQ,177,_asStringS,176,_asTop,157,_asyncAwait,258,_asyncRethrow,260,_asyncReturn,259,_asyncStartSync,257,_awaitOnObject,261,_awaitOnObject_closure,1011,_awaitOnObject_closure0,1011,_callDartFunctionFast,330,_callDartFunctionFast1,333,_checkValidIndex,98,_checkValidRange,99,_convertDartFunctionFast,329,_createRuntimeType,133,_diagnoseUnsupportedOperation,47,_ensureNativeList,95,_failedAsCheck,149,_finishIsFn,139,_functionRtiToString,180,_functionToJS1,332,_generalAsCheckImplementation,147,_generalIsTestImplementation,142,_generalNullableAsCheckImplementation,148,_generalNullableIsTestImplementation,143,_hashSeed,810,_installSpecializedAsCheck,140,_installSpecializedIsTest,136,_instanceType,124,_instanceTypeFromConstructor,125,_instanceTypeFromConstructorMiss,126,_interceptError,264,_interceptUserError,265,_invokeClosure,59,_isBool,159,_isFunctionSubtype,242,_isFutureOr,153,_isInCallbackLoop,1037,_isInt,166,_isInterfaceSubtype,243,_isListTestViaProperty,146,_isNever,158,_isNum,170,_isObject,154,_isRecordSubtype,246,_isString,174,_isSubtype,240,_isTestViaProperty,145,_isTop,156,_iterablePartsToStrings,327,_lastCallback,1039,_lastPriorityCallback,1040,_makeAsyncAwaitCompleter,255,_microtaskLoop,269,_nextCallback,1054,_noDartifyRequired,340,_noJsifyRequired,334,_nullDoneHandler,278,_nullErrorHandler,277,_nullIs,141,_recordRtiToString,179,_registerErrorHandler,268,_rootHandleError,279,_rootHandleError_closure,1060,_rootRun,280,_rootRunBinary,282,_rootRunUnary,281,_rootScheduleMicrotask,283,_rtiArrayToString,178,_rtiToString,182,_runGuarded,275,_scheduleAsyncCallback,271,_schedulePriorityAsyncCallback,272,_setArrayType,119,_startMicrotaskLoop,270,_structuralTypeOf,129,_substitute,108,_substituteArray,115,_substituteFunctionParameters,117,_substituteNamed,116,_unminifyOrTag,183,_unwrapNonDartException,55,_wrapJsFunctionForAsync,262,_wrapJsFunctionForAsync_closure,1072,allowInterop,331,alternateTagFunction,1076,applyHooksTransformer,91,argumentErrorValue,40,assertThrow,76,async__AsyncRun__scheduleImmediateJsOverride$closure,1078,async__AsyncRun__scheduleImmediateWithSetImmediate$closure,1079,async__AsyncRun__scheduleImmediateWithTimer$closure,1080,async___nullDoneHandler$closure,1081,async___nullErrorHandler$closure,1082,async___startMicrotaskLoop$closure,1083,bool,1085,boolConversionCheck,75,callMethod,336,checkNotNullable,9,closureFromTearOff,68,closureFunctionType,120,convertDartClosureToJS,60,convertDartClosureToJSUncached,61,createRecordTypePredicate,92,createRuntimeType,131,dartify,341,dartify_convert,1095,defineProperty,79,diagnoseIndexError,38,diagnoseRangeError,39,dispatchRecordsForInstanceTags,1098,double,1099,fillLiteralMap,58,findNALUIndices,342,findType,107,getAlgoOptions,355,getInterceptor$,1120,getInterceptor$asx,1121,getInterceptor$ax,1122,getInterceptor$x,1123,getIsolateAffinityTag,78,getNativeInterceptor,1,getRuntimeTypeOfDartObject,128,getTagFunction,1128,getTraceFromException,56,getTrackCryptor,344,getTrackCryptor_closure,1129,getTypeFromTypesTable,127,iae,36,initHooks,90,initHooks_closure,1138,initHooks_closure0,1138,initHooks_closure1,1138,initNativeDispatch,88,initNativeDispatchContinue,89,initNativeDispatchFlag,1139,initializeExceptionWrapper,42,instanceOrFunctionType,121,instanceType,122,int,1140,interceptorsForUncacheableTags,1142,ioore,37,isDefinitelyTopType,137,isJsIndexable,13,isNullable,247,isSoundTopType,248,isSubtype,239,isToStringVisiting,10,jsify,335,jsify__convert,1145,keyProviders,1146,logger,812,lookupAndCacheInterceptor,80,main,349,main__closure,1148,main__closure0,1148,main__closure1,1148,main__closure2,1148,main_closure,1149,main_closure0,1149,main_closure1,1149,main_closure2,1149,makeDefaultDispatchRecord,87,makeDispatchRecord,0,makeLeafDispatchRecord,86,num,1159,objectHashCode,57,participantCryptors,1164,patchInteriorProto,85,printString,351,promiseToFuture,337,promiseToFuture_closure,1165,promiseToFuture_closure0,1165,prototypeForTagFunction,1166,quoteStringForRegExp,93,saveStackTrace,54,scheduleMicrotask,273,throwConcurrentModificationError,48,throwCyclicInit,77,throwExpression,44,throwExpressionWithWrapper,45,throwLateFieldADI,353,throwLateFieldNI,352,throwUnsupportedOperation,46,toStringVisiting,1175,toStringWrapper,43,typeLiteral,135,unminifyOrTag,12,unsetCryptorParticipant,348,unsetCryptorParticipant_closure,1184,unwrapException,53,wrapException,41", + "instance": "$add,1189,$and,1190,$arguments,1216,$call,1252,$div,1191,$eq,1192,$ge,1193,$gt,1194,$index,1195,$indexSet,1196,$le,1197,$lt,1198,$mod,1199,$mul,1200,$negate,1201,$or,1202,$protected,1235,$shl,1203,$shr,1204,$sub,1205,$tdiv,1206,$this,1243,$xor,1207,T,1214,_,1208,_0,1209,_JSSecureRandom$0,814,_TimerImpl$2,814,__,1210,__0,1211,__FrameCryptor_kind_A,1673,__ParticipantKeyHandler_cryptoKeyRing_A,1683,___,1212,__internal$_current,1290,__internal$_index,1293,__internal$_iterable,1294,__internal$_length,1296,__internal$_name,1298,__js_helper$_addHashTableEntry,1300,__js_helper$_addHashTableEntry$3,1300,__js_helper$_current,1311,__js_helper$_getBucket$2,1317,__js_helper$_index,1320,__js_helper$_kind,1326,__js_helper$_length,1328,__js_helper$_message,1331,__js_helper$_name,1335,__js_helper$_rest,1345,__rti$_message,1375,_add,1384,_add$1,1384,_addAllFromArray,1274,_addAllFromArray$1,1274,_addEventError,1385,_addEventError$0,1385,_addHashTableEntry,1499,_addHashTableEntry$3,1499,_addListener,1386,_addListener$1,1386,_addPending,1387,_addPending$1,1387,_addStreamState,1388,_alphabet,1519,_arguments,1301,_argumentsExpr,1302,_as,1364,_async$_box_0,1392,_async$_controller,1432,_async$_hasValue,1447,_async$_next,1462,_async$_previous,1475,_asyncComplete,1389,_asyncComplete$1,1389,_asyncCompleteError,1390,_asyncCompleteError$2,1390,_asyncCompleteWithValue,1391,_asyncCompleteWithValue$1,1391,_bind,1365,_bind$1,1365,_bindCache,1366,_box_0,1303,_box_1,1393,_buffer,1289,_cachedRuntimeType,1367,_callOnCancel,1394,_callOnCancel$0,1394,_canFire,1395,_cancelFuture,1396,_canonicalRecipe,1368,_captured_T_1,1540,_captured__convertedObjects_0,1541,_captured_arguments_2,1304,_captured_bodyFunction_0,1397,_captured_callback_0,1398,_captured_callback_1,1399,_captured_completer_0,1542,_captured_data_1,1400,_captured_decryptFrameInternal_3,1676,_captured_dispatch_1,1401,_captured_div_1,1402,_captured_e_1,1403,_captured_error_0,1404,_captured_error_1,1405,_captured_f_1,1406,_captured_future_1,1407,_captured_getTag_0,1305,_captured_getUnknownTag_0,1306,_captured_handleMessage_0,1686,_captured_hasError_2,1408,_captured_headerLength_5,1677,_captured_ivLength_6,1678,_captured_iv_3,1679,_captured_joinedResult_0,1409,_captured_listener_1,1410,_captured_name_0,1688,_captured_namedArgumentList_1,1307,_captured_originalSource_1,1411,_captured_protected_0,1412,_captured_prototypeForTag_0,1308,_captured_result_1,1501,_captured_s_2,1413,_captured_sb_1,1525,_captured_sourceResult_1,1414,_captured_span_2,1415,_captured_srcFrame_4,1680,_captured_stackTrace_1,1416,_captured_stackTrace_2,1417,_captured_target_1,1418,_captured_this_0,1419,_captured_this_1,1420,_captured_this_2,1681,_captured_trackId_0,1687,_captured_value_1,1421,_cell,1309,_chainForeignFuture,1422,_chainForeignFuture$1,1422,_chainFuture,1423,_chainFuture$1,1423,_chainSource,1424,_checkMutable$1,1354,_checkPosition,1355,_checkPosition$3,1355,_checkState,1425,_checkState$1,1425,_children,1689,_clearPendingComplete$0,1426,_cloneResult,1427,_cloneResult$1,1427,_codeUnitAt$1,1275,_collection$_box_0,1500,_collection$_current,1505,_collection$_keys,1509,_collection$_length,1510,_collection$_map,1511,_collection$_nums,1512,_collection$_removeHashTableEntry$2,1515,_collection$_rest,1516,_collection$_strings,1518,_complete$1,1428,_completeError,1429,_completeError$2,1429,_completeWithResultOf,1430,_completeWithResultOf$1,1430,_completeWithValue,1431,_completeWithValue$1,1431,_computeHashCode$1,1502,_computeKeys,1503,_computeKeys$0,1503,_containsKey,1504,_containsKey$1,1504,_containsTableEntry$2,1310,_contents,1526,_controller,1690,_convert$_state,1521,_convertedObjects,1215,_core$_arguments,1523,_core$_box_0,1524,_core$_memberName,1532,_core$_receiver,1536,_createSubscription$4,1433,_current,1276,_data,1356,_decryptionFailureCount,1684,_deleteTableEntry$2,1312,_doneFuture,1434,_dynamicCheckData,1369,_e2ee_cryptor$_box_0,1674,_e2ee_cryptor$_box_1,1675,_elements,1313,_enabled,1682,_encoder,1520,_enumToString,1527,_enumToString$0,1527,_error,1435,_errorExplanation,1528,_errorName,1529,_errorTest,1436,_eval,1370,_eval$1,1370,_evalCache,1371,_eventScheduled,1437,_eventState,1438,_exception,1314,_existingArgumentNames,1530,_expectsEvent$1,1439,_expr,1315,_f,1291,_findBucketIndex,1506,_findBucketIndex$2,1506,_first,1316,_firstSubscription,1440,_forEachListener,1441,_forEachListener$1,1441,_future,1442,_get,1507,_get$1,1507,_getBucket,1508,_getBucket$2,1508,_getRandomBytes$2,1544,_getStream,1691,_getStream$0,1691,_getTableBucket$2,1318,_getTableCell$2,1319,_getUint32$2,1357,_grow$1,1292,_handle,1443,_hasError,1444,_hasOneListener,1445,_hasPending,1446,_hasValidKey,1685,_hasValue,1531,_ignoreError,1448,_index,1277,_interceptor,1321,_internalName,1322,_invalidPosition,1358,_invalidPosition$3,1358,_irritant,1323,_is,1372,_isCanceled,1449,_isChained,1450,_isComplete,1451,_isEmpty,1452,_isFiring,1453,_isInputPaused,1454,_isInt32$1,1278,_isPaused,1455,_isSubtypeCache,1373,_isUnmodifiable$0,1359,_iterable,1279,_iterator,1295,_jsIndex,1324,_keys,1325,_kind,1374,_last,1327,_lastSubscription,1456,_length,1280,_level,1692,_levelChangedController,1693,_map,1329,_math$_buffer,1543,_mayAddEvent,1457,_mayAddListener,1458,_mayComplete,1459,_mayResumeInput,1460,_memberName,1330,_message,1297,_method,1332,_microsecond,1533,_modifications,1333,_modified,1334,_modified$0,1334,_name,1534,_named,1376,_namedArgumentNames,1336,_namedArguments,1535,_nativeBuffer,1360,_newFutureWithSameType$0,1461,_newHashTable,1337,_newHashTable$0,1337,_newLinkedCell,1338,_newLinkedCell$2,1338,_next,1339,_nextListener,1463,_nums,1340,_offset,1513,_onData,1464,_onDone,1465,_onError,1466,_onListen$1,1467,_onMicrotask,1468,_onMicrotask$0,1468,_onPause,1469,_onPause$0,1469,_onResume,1470,_onResume$0,1470,_onValue,1471,_once,1472,_optionalPositional,1377,_pattern,1341,_pending,1473,_precomputed1,1378,_prependListeners,1474,_prependListeners$1,1474,_previous,1342,_primary,1379,_publish,1694,_publish$1,1694,_receiver,1343,_recordPause$1,1476,_recordResume$1,1477,_remove$1,1514,_removeAfterFiring,1478,_removeHashTableEntry,1344,_removeHashTableEntry$2,1344,_removeListener$1,1479,_removeListeners,1480,_removeListeners$0,1480,_requiredPositional,1380,_rest,1381,_resultOrListeners,1481,_reverseListeners,1482,_reverseListeners$1,1482,_rti,1382,_scheduleMicrotask,1483,_sendData,1484,_sendData$1,1484,_set$2,1517,_setChained$1,1485,_setError$2,1486,_setErrorObject,1487,_setErrorObject$1,1487,_setInt8,1361,_setInt8$2,1361,_setKeys$1,1346,_setPendingComplete$0,1488,_setRangeFast$4,1362,_setTableEntry$3,1347,_setUint32$3,1363,_setValue$1,1489,_shlPositive$1,1281,_shrBothPositive,1282,_shrBothPositive$1,1282,_shrOtherPositive,1283,_shrOtherPositive$1,1283,_shrReceiverPositive$1,1284,_source,1299,_specializedTestResource,1383,_stackTrace,1537,_state,1490,_stateData,1491,_strings,1348,_subscribe,1492,_subscribe$4,1492,_subscription,1493,_target,1349,_tdivFast,1285,_tdivFast$1,1285,_tdivSlow,1286,_tdivSlow$1,1286,_thenAwait,1494,_thenAwait$1$2,1494,_tick,1495,_toListFixed$0,1287,_toListGrowable$0,1288,_toggleEventId$0,1496,_trace,1350,_typeArgumentCount,1351,_unlinkCell,1352,_unlinkCell$1,1352,_urlSafe,1522,_value,1538,_values,1353,_whenCompleteAction,1497,_writeString$1,1539,_zone,1498,abs$0,1244,add,1245,add$1,1245,addAll,1246,addAll$1,1246,argumentCount,1247,asUint8List,1248,asUint8List$0,1248,asUint8List$2,1248,bindCallback$1$1,1249,bindCallbackGuarded,1250,bindCallbackGuarded$1,1250,bodyFunction,1217,buffer,1251,callback,1253,ceilToDouble$0,1254,checkGrowable$2,1255,children,1256,close$2,1257,code,1258,codeUnitAt$1,1259,codec,1260,comma,1261,complete,1262,complete$1,1262,completeError,1263,completeError$1,1263,completeError$2,1263,completer,1218,config$1,1264,consecutiveSifCount,1265,contains$1,1266,containsKey,1267,containsKey$1,1267,convert,1268,convert$1,1268,count,1269,createBuffer$1,1270,cryptoKeyRing,1271,current,1094,currentKeyIndex,1272,currentkeySet,1273,dartException,1545,data,1219,day,1546,decode,1547,decode$1,1547,decode$3,1547,decodeFunction,1548,decodeFunction$2,1548,decodeFunction$body$FrameCryptor,1548,decoder,1549,decryptFrameInternal,1220,decrypted,1550,decryptionFailure,1551,decryptionFailure$0,1551,decryptionSuccess$0,1552,deriveKeys,1553,deriveKeys$2,1553,discardFrameWhenCryptorNotReady,1554,dispatch,1221,div,1222,e,1223,elementAt,1555,elementAt$1,1555,enabled,1556,encode,1557,encode$1,1557,encode$4,1557,encodeFunction,1558,encodeFunction$2,1558,encodeFunction$body$FrameCryptor,1558,encoder,1559,encryptionKey,1560,end,1561,endsWith,1562,endsWith$1,1562,enqueueFrame,1563,enqueueFrame$3,1563,error,1564,errorCallback,1565,errorCallback$2,1565,errorZone,1566,exportKey,1567,exportKey$1,1567,f,1224,failureTolerance,1568,fine$1,1569,finer$1,1570,first,1571,firstPendingEvent,1572,floorToDouble$0,1573,forEach,1574,forEach$1,1574,frameType,1575,fullName,1576,future,1577,get$$call,1252,get$_,1208,get$_0,1209,get$__,1210,get$__0,1211,get$___,1212,get$__js_helper$_addHashTableEntry,1300,get$__js_helper$_name,1335,get$_add,1384,get$_addAllFromArray,1274,get$_addEventError,1385,get$_addHashTableEntry,1499,get$_addListener,1386,get$_addPending,1387,get$_asyncComplete,1389,get$_asyncCompleteError,1390,get$_asyncCompleteWithValue,1391,get$_bind,1365,get$_callOnCancel,1394,get$_canFire,1395,get$_chainForeignFuture,1422,get$_chainFuture,1423,get$_chainSource,1424,get$_checkPosition,1355,get$_checkState,1425,get$_cloneResult,1427,get$_completeError,1429,get$_completeWithResultOf,1430,get$_completeWithValue,1431,get$_computeKeys,1503,get$_containsKey,1504,get$_core$_arguments,1523,get$_core$_memberName,1532,get$_core$_receiver,1536,get$_enumToString,1527,get$_error,1435,get$_errorExplanation,1528,get$_errorName,1529,get$_errorTest,1436,get$_eval,1370,get$_eventScheduled,1437,get$_existingArgumentNames,1530,get$_findBucketIndex,1506,get$_forEachListener,1441,get$_get,1507,get$_getBucket,1508,get$_getStream,1691,get$_hasError,1444,get$_hasOneListener,1445,get$_hasPending,1446,get$_ignoreError,1448,get$_invalidPosition,1358,get$_isCanceled,1449,get$_isChained,1450,get$_isComplete,1451,get$_isEmpty,1452,get$_isFiring,1453,get$_isInputPaused,1454,get$_isPaused,1455,get$_keys,1325,get$_mayAddEvent,1457,get$_mayAddListener,1458,get$_mayComplete,1459,get$_mayResumeInput,1460,get$_modified,1334,get$_namedArguments,1535,get$_nativeBuffer,1360,get$_newHashTable,1337,get$_newLinkedCell,1338,get$_onError,1466,get$_onMicrotask,1468,get$_onPause,1469,get$_onResume,1470,get$_onValue,1471,get$_prependListeners,1474,get$_publish,1694,get$_removeAfterFiring,1478,get$_removeHashTableEntry,1344,get$_removeListeners,1480,get$_reverseListeners,1482,get$_scheduleMicrotask,1483,get$_sendData,1484,get$_setErrorObject,1487,get$_setInt8,1361,get$_shrBothPositive,1282,get$_shrOtherPositive,1283,get$_subscribe,1492,get$_target,1349,get$_tdivFast,1285,get$_tdivSlow,1286,get$_thenAwait,1494,get$_unlinkCell,1352,get$_whenCompleteAction,1497,get$_zone,1498,get$add,1245,get$addAll,1246,get$asUint8List,1248,get$bindCallbackGuarded,1250,get$buffer,1251,get$complete,1262,get$completeError,1263,get$containsKey,1267,get$convert,1268,get$cryptoKeyRing,1271,get$current,1094,get$day,1546,get$decode,1547,get$decodeFunction,1548,get$decoder,1549,get$decryptionFailure,1551,get$deriveKeys,1553,get$elementAt,1555,get$enabled,1556,get$encode,1557,get$encodeFunction,1558,get$encoder,1559,get$end,1561,get$endsWith,1562,get$enqueueFrame,1563,get$errorZone,1566,get$exportKey,1567,get$forEach,1574,get$fullName,1576,get$future,1577,get$getKeySet,1578,get$getParticipantKeyHandler,1579,get$getSharedKeyHandler,1581,get$getUnencryptedBytes,1583,get$handleError,1584,get$handlesComplete,1589,get$handlesError,1590,get$handlesValue,1591,get$hasErrorCallback,1592,get$hasErrorTest,1593,get$hasValidKey,1594,get$hashCode,1595,get$hour,1598,get$internalComputeHashCode,1606,get$internalFindBucketIndex,1608,get$internalGet,1609,get$invalidValue,1612,get$isAccessor,1613,get$isClosed,1614,get$isEmpty,1615,get$isGetter,1616,get$isNotEmpty,1618,get$isScheduled,1619,get$iterator,1624,get$keyOptions,1627,get$keys,1630,get$kind,1631,get$lastIndexOf,1633,get$length,1636,get$lengthInBytes,1637,get$level,1638,get$listen,1639,get$log,1644,get$map,1647,get$matchTypeError,1649,get$matchesErrorTest,1650,get$memberName,1652,get$microsecond,1654,get$millisecond,1655,get$millisecondsSinceEpoch,1656,get$minute,1657,get$month,1659,get$moveNext,1660,get$namedArguments,1662,get$nextInt,1665,get$noSuchMethod,1666,get$offsetInBytes,1669,get$onRecord,1672,get$positionalArguments,1700,get$putIfAbsent,1702,get$ratchet,1703,get$ratchetKey,1705,get$ratchetMaterial,1706,get$readFrameInfo,1709,get$recordUserFrame,1711,get$registerBinaryCallback,1712,get$remove,1716,get$reset,1718,get$run,1721,get$runBinary,1722,get$runGuarded,1723,get$runUnary,1724,get$runUnaryGuarded,1725,get$runtimeType,1726,get$schedule,1727,get$second,1728,get$setKey,1733,get$setKeySetFromMaterial,1735,get$setRange,1737,get$setupTransform,1741,get$stackTrace,1750,get$start,1751,get$startsWith,1752,get$stream,1755,get$sublist,1756,get$substring,1757,get$then,1759,get$toBytes,1762,get$toInt,1763,get$toRadixString,1766,get$toString,1767,get$year,1780,getKeySet,1578,getKeySet$1,1578,getParticipantKeyHandler,1579,getParticipantKeyHandler$1,1579,getRange$2,1580,getSharedKeyHandler,1581,getSharedKeyHandler$0,1581,getTag,1225,getUint32$1,1582,getUnencryptedBytes,1583,getUnencryptedBytes$2,1583,getUnknownTag,1226,handleError,1584,handleError$1,1584,handleMessage,1227,handleNext$1,1585,handleUncaughtError$2,1586,handleValue$1,1587,handleWhenComplete$0,1588,handlesComplete,1589,handlesError,1590,handlesValue,1591,hasError,1228,hasErrorCallback,1592,hasErrorTest,1593,hasValidKey,1594,hashCode,1595,hashMapCellKey,1596,hashMapCellValue,1597,headerLength,1229,hour,1598,id,1599,inSameErrorZone$1,1600,index,1601,indexable,1602,info$1,1603,initialKeyIndex,1604,initialKeySet,1605,internalComputeHashCode,1606,internalComputeHashCode$1,1606,internalContainsKey$1,1607,internalFindBucketIndex,1608,internalFindBucketIndex$2,1608,internalGet,1609,internalGet$1,1609,internalRemove$1,1610,internalSet$2,1611,invalidValue,1612,isAccessor,1613,isClosed,1614,isEmpty,1615,isGetter,1616,isLoggable$1,1617,isNotEmpty,1618,isScheduled,1619,isSifAllowed$0,1620,isSync,1621,isUndefined,1622,isUtc,1623,iterator,1624,iv,1231,ivLength,1230,join$1,1625,joinedResult,1232,keyHandler,1626,keyOptions,1627,keyProviderOptions,1628,keyRingSze,1629,keys,1630,kind,1631,lastError,1632,lastIndexOf,1633,lastIndexOf$1,1633,lastPendingEvent,1634,lastSifReceivedAt,1635,length,1636,lengthInBytes,1637,level,1638,listen,1639,listen$1,1639,listen$4$cancelOnError$onDone$onError,1639,listener,1640,listenerHasError,1641,listenerValueOrError,1642,listeners,1643,log,1644,log$4,1644,loggerName,1645,makeIv$2$synchronizationSource$timestamp,1646,map,1647,map$1$1,1647,matchAsPrefix$2,1648,matchTypeError,1649,matchTypeError$1,1649,matchesErrorTest,1650,matchesErrorTest$1,1650,material,1651,memberName,1652,message,1653,microsecond,1654,millisecond,1655,millisecondsSinceEpoch,1656,minute,1657,modifiedObject,1658,month,1659,moveNext,1660,moveNext$0,1660,name,1661,namedArgumentList,1233,namedArguments,1662,names,1663,next,1664,nextInt,1665,nextInt$1,1665,noSuchMethod,1666,noSuchMethod$1,1666,object,1667,offset,1668,offsetInBytes,1669,onCancel,1670,onListen,1671,onRecord,1672,originalSource,1234,padLeft$2,1695,parent,1696,participantIdentity,1697,participantKeys,1698,perform$1,1699,positionalArguments,1700,postMessage$1,1701,prototypeForTag,1236,putIfAbsent,1702,putIfAbsent$2,1702,ratchet,1703,ratchet$2,1703,ratchetCount,1704,ratchetKey,1705,ratchetKey$1,1705,ratchetMaterial,1706,ratchetMaterial$2,1706,ratchetSalt,1707,ratchetWindowSize,1708,readFrameInfo,1709,readFrameInfo$1,1709,recordSif$0,1710,recordUserFrame,1711,recordUserFrame$0,1711,registerBinaryCallback,1712,registerBinaryCallback$3$1,1712,registerCallback$1$1,1713,registerUnaryCallback$2$1,1714,remainder$1,1715,remove,1716,remove$1,1716,removeLast$0,1717,reset,1718,reset$0,1718,resetKeyStatus$0,1719,result,1720,run,1721,run$1$1,1721,runBinary,1722,runBinary$3$3,1722,runGuarded,1723,runGuarded$1,1723,runUnary,1724,runUnary$2$2,1724,runUnaryGuarded,1725,runUnaryGuarded$1$2,1725,runtimeType,1726,s,1237,sb,1238,schedule,1727,schedule$1,1727,scheduleMicrotask$1,273,second,1728,sendCounts,1729,sequenceNumber,1730,set$__ParticipantKeyHandler_cryptoKeyRing_A,1683,set$__internal$_current,1290,set$__js_helper$_current,1311,set$_async$_next,1462,set$_async$_previous,1475,set$_collection$_current,1505,set$_controller,1690,set$_current,1276,set$_firstSubscription,1440,set$_lastSubscription,1456,set$_onDone,1465,set$_pending,1473,set$cryptoKeyRing,1271,set$kind,1631,set$length,1636,set$level,1638,setEnabled$1,1731,setInt8$2,1732,setKey,1733,setKey$1,1733,setKey$2$keyIndex,1733,setKeyIndex$1,1734,setKeySetFromMaterial,1735,setKeySetFromMaterial$2,1735,setParticipant$2,1736,setRange,1737,setRange$3,1737,setRange$4,1737,setSharedKey$2$keyIndex,1738,setSifTrailer$1,1739,setUint32$2,1740,setupTransform,1741,setupTransform$5$kind$operation$readable$trackId$writable,1741,setupTransform$6$codec$kind$operation$readable$trackId$writable,1741,setupTransform$body$FrameCryptor,1741,sharedKey,1742,sharedKeyHandler,1743,shouldChain$1,1744,sifGuard,1745,sifSequenceStartedAt,1746,skip$1,1747,source,1748,sourceResult,1239,span,1240,srcFrame,1241,ssrc,1749,stackTrace,1750,start,1751,startsWith,1752,startsWith$1,1752,state,1753,storedCallback,1754,stream,1755,sublist,1756,sublist$1,1756,sublist$2,1756,substring,1757,substring$1,1757,substring$2,1757,super$LegacyJavaScriptObject$toString,1767,super$_BroadcastStreamController$_addEventError,1213,take$1,1758,target,1242,then,1759,then$1$2$onError,1759,time,1760,timestamp,1761,toBytes,1762,toBytes$0,1762,toInt,1763,toInt$0,1763,toList$1$growable,1764,toLowerCase$0,1765,toRadixString,1766,toRadixString$1,1766,toString,1767,toString$0,1767,trackId,1768,truncateToDouble$0,1769,uncryptedMagicBytes,1770,unsetParticipant$0,1771,updateCodec$1,1772,userFramesSinceSif,1773,value,1185,variableName,1774,warning$1,1775,where$1,1776,worker,1777,write$1,1778,writeAll$2,1779,year,1780,zone,1781" }, - "frames": "kqUEsOEu1BAAAAAwR,A;uPA+HWAsI;eAEF0OwG;s9GC0CSo8CuB;uCAAAA6B;uNAuBQC6B;+YAYVD4C;2kBA4NC3FgB;w1CA+H+BlIwB;yJAYjBlxEAAhoBpBi0B0B,A;mRA4qBqCi9CmC;g1EAmGCCAIn4BzBD0B,A;gYJi5ByBCAIj5BzBD0B,A;utCJy7BZ+N6C;+lBAAAA+C;iNAmBqBnbsB;2hBAqCHprC4C;ghBAgCnBA2C;uDASAA6C;sFAmCczEoC;0oCAoQZA+S;u4BA+MJA2C;szCA2DOA4D;kkEAAAA2V;wFAkCcA+D;0EAOpBAoE;iJAKCA0B;gMAWiBAwH;oLASjBA0B;4NAiCuBA4B;6HAGtBA4B;iqEA2NEA6D;AAEAA8e;25HAyPFA0F;m7DAqF6BirDmK;AACHCsK;wRA0HtBl9EACp8DTm9EiD,sB;sPD09DcnrDoG;giBA+IfAqC;iEAaIAkD;2lEEv2EDtxBAA2BT08EoI,A;kTAZS18EAAYT08EoI,A;2vCArEuBp8EAAzChBq8EwE,A;gzDAiRSn8EsL;u0NDpQRo8EwF;+DASeCgB;iDACfDyE;AADeCoB;2vJA4cAC4B;AACICiC;whCA4BsBCAA7PR1rDkD,A;AA8PrB2rDkE;AAEACkE;AAEACkC;qVAwCFCmC;0LAaZt7EAA9CkCu7EsB,A;qNAqEpCr7EAAxEuCq7EmB,A;AAyElCn7E0B;s/BAqFoBJAA3JWu7EoM,A;2KAgL5Bh8E4F;0NAmBUuzByB;6FAGXtDAAkBXAAAAAAAACMgsDsB,A,A,gB;2FAhB+ChsD+C;UAC/CgsDkD;AAD+ChsDAAerDAAAAAAAACMgsDuD,A,A,A;oEARmBj8EmD;6MAoCrB4D6K;mFASgBs4EgX;iNAsBZCqD;gbAmBJCmB;gKA8BAx4E8H;qSAUAy4EmB;qyBAsBGCgC;yWAwBOCiC;uBAKV57EAArYuCq7EiB,A;iVA4Z7BOiC;uBAKV57EAAjauCq7EiB,A;iwCA6evBxiDiC;2+LAsPX51BAAw3DPkEkB,wO;kQA/2DmB00EAAtkCCC0C,A;swFAgtCJCAA5rCIDsC,A;qPDjOFEmB;wlBC+lDHCmE;orBAiCLC6G;qIAOMCmB;8CAGVC+B;gFAIIFkH;+IAMMGmB;8CAGVC6D;yWAiDFZ8C;AACAD0C;yLAyF8BcAAIpBvBAA7hDP1rDsC,A,AA8hDHktDwB,AACAC+B,yF;oHAKSCAA/CXCqE,A;ojBAkEY3BAAvjDP1rDsC,A;AAwjDHktDqB;AACAI4B;GACAH+B;kKAMSIAAzEXFqE,A;0lCAyGY3BAAhmDP1rDsC,A;AAimDHktDqB;AACAI4B;GACAH+B;kKAMSKAAhHXHqE,A;0TA2HmBpBgB;AACft4E4O;6DAGK43E+D;oIAKGGAA7nDP1rDsC,A;AA8nDHktDqB;AACAI4B;GACAH+B;8QAUAMAAKU/BAA/oDP1rDsC,A,AAgpDHktDsB,AACAI4B,AACAH+B,yF;keAqBmB3BiC;4PA0BVkC0F;iFAKMCAAKLjCAA3sDP1rDsC,A,AA4sDHktDqB,AACAI4B,AACAMyC,wBAGEtCyC,AAEF6B6B,uF;iOAyBSUkD;iEAEACaAlBNCyF,A;mFAuBYCAAKLtCAAxvDP1rDsC,A,AAyvDHktDsB,AACAI8B,AACAMgC,AACAT+B,yF;4FAgBSc2H;2EAKTCAAKUxCAAtxDP1rDsC,A,AAuxDHktDsB,AACAIsC,AACAM0B,AACAT+B,yF;6FA6CSgBAAtCPCoD,AADY9qD0D,AACZ8qD0tB,A;mHA2CFCAAKU3CAAj1DP1rDsC,A,AAk1DHktDsB,AACAIiC,AACAM8B,AACAT+B,yF;iHAcSmBsCARXC4F,A;wjCA4CY7CAAv4DP1rDsC,A;AAw4DHktDsB;AACAIuC;AACAMuB;GACAT+B;8TAyKOqBiD;kzBA4BCCmF;kDAIkB9BiE;kDAIA+BiE;mDAIACiE;wDAItBCAAgFRCgC,AACACuB,A;uEA7EQCAAuHQ1sDwBA2IG2sDmB,4DAEnBFmC,A,ukB;ytBA7NQFAAqCRCgC,AACACuB,A;uJA9BQFAA6BRCgC,AACACuB,A;0CA1BQGAA2KS5sDwBAoCE2sDmB,4DAEnBF4F,A,A;yDA7MQFAAqBRCgC,AACACuB,A;2CAlBQIAAyKSCwBAqCEHmB,iEAEnBF4F,A,A;0CA5MYMoDA+KZPkF,AAEADAApKACgC,AACACuB,A,2B;q8BAsBoDOsD;mNAUpCCqY;wlCAsFyC5DAA/wElB1rD8D,A;AAgxEf2rD+D;AAEAC+D;AAEACsC;2cA+CA0D4D;2DAIAC4D;oMAOLRW;oDAEnBF8B;kzDA0IEn7E+E;o2JAqMsBm4Ea;2LAQAAa;yNASAAuC;kVAoBX2DyB;oXAQAhEwB;uEAEQKwB;mbAuCE4DwB;ynBAgBTCAAj4FwBCc,A;MAk4FxBDAAl4FwBCc,A;oQAs5FpB9DuB;AACAAa;wnHU1jGZ+DgC;sFAoCR7vD+C;kEA4GWA2BAxCS8vDAAAA9vD0D,A,sC;iJAuDH8pCQ;ozBA2DM9pCgF;AAAA+vDqE;kdAiCXxgB0C;yrBC4LIygBkC;AACICkD;2SAQhBCqF;ycA0IuBCuE;iFAGYCwD;AACxBrM6B;2pBA+Bc/CkB;iHACDqPyB;2JAGWDkC;AACxBrM+B;uOA4EI5CkB;2nBAkBTQ8D;wHAMgB2OqC;AACFCgL;AACZCmI;0MAcIDmK;0FAEVRoI;4BAGAUoG;gYAkEGxMoB;qqBGj1BKyMoD;qGAUqB1wD4E;oJAKrB0wDoD;oYAoBkB1wD2E;0sBAoDDgkD4C;sBAG1B1qE4E;4GC+0EG0mB0D;OAAAAuD;67NEp8DmCAuF;uEAQ9BAqF;6oBC9SH+lD8G;8PAqBc/lDkD;iGAGpB+lDiG;8LAMKnckB;68FCvPM5pCqD;mYAoBN4pCkB;g7FCyTH+mBwR;oDAAAAyJ;qDAAAAwH;qDAAAA0E;uEAAAAyJ;oDAAAA0J;qDAAAAqM;qDAAAA0E;inBAySOC8Q;siIAuJWC2C;2oDlBtkBJCyC;oiCA4TTC8H;wMAmIK9TsC;AAED+Tc;+FAGFAc;kFAGEAkC;q0FqBrpBqBhxDyB;kdC6LdixD8I;mCCtMpBC2B;ilFEy8oCFlxDAAAAAAAQEmxD+H,A,A;uKA66GO5hBsB;gtYEp3vCuBvvCgE;oGAwUdAA0ByyBSAA5CtmCvBAAAzB0B8pCAAAA9pCuF,A,A,kF,A;upHmB2CbiN0B;qrFCqGU6qCmF;AAOWzCyB;AAMHK2D;szDC1D9B0QALq/RiCc8D,A;AKr/RjCCyQ;k7DE7FqDiKsF;gkBCmhB1CCsD;itE9B3YElzEAA8CgB2hB4L,A;sgBAfhC1hBAAmB0B0hB+L,A;o1NAwHIgxD2C;wHAiBpB9wDkC;w3EiChKV08C+E;m1BA4GAAwD;gpBA2CW18CkE;QAAAAkE;yVAuUiBsxDuD;mDAcEtxD+C;+BAAAA4B;kPAO9B08CoF;2dA4CADiG;2yCEjeO8UgQ;sBAAAAwD;yBAAAAqH;+nEnB7NACiF;kkEoB4ELCuGA+BUCqN,kL;+UAgBKzkDoB;AACHvCAequBPm1CyC,A;wkB1Dj1BmB7/CmD;uBAAAAwC;4FA+IxBA2E;gBAAAA+E;4mDA6HsB2xDyC;y3CA+DE3xDqB;8BAAAA6B;WAAAA+B;08BA6DAA8C;8FAAAAqC;+CAIxB0OyB;iFAAAA8D;wtD8C9SiBkjD4B;mMAaVAmB;yCAAAAqB;0FAKF5xDmF;mFAYmCqvCAN+fZrvCa,A;KM/fYqvC0B;iCAAAAAN+fZrvCS,yBAAAA4B,A;qTvC7a1Bw+CkC;mNAQWqTiB;qYAIXpTkC;+RAKUz+CyE;8QAEJ8xDoB;4BAGC9xDgE;i7DAgxCiBi9CwC;o2DAo2BV6TgC;oTI/0EP9wD8C;kIAAAAuC;6IAWF+xDa;0vBA8CICa;+3EA8HgBhyDwB;4NAS7BiyD+D;+zBAiHWjyDa;0EAAAA0DA0BbAAAAAA0B,A,A;u1LHvRSmrD+B;uIAMyB+GqB;AAk4B3B7FiC;8+EU9rBGrsDoC;gkBC1RImyD6B;kKAQZCiD;2RAYYD6B;6SAoHPjR4B;8BACEmP2B;AAA6BgCAAxB7BCmC,sB;yRAqCIjCqB;qdAQLrP+B;shBAkIkBzR2C;uUAYlB0UgB;sGAQkBjkDyG;oBACPuzCsH;sOASOvzCyE;oBACPuyDqH;uXA+EbCe;kOAQiBvCmF;AACLKmC;2HAQdh3E0C;QAAAAwB;qSAQEk5Ee;qeAiBiBvCmF;AACLKmC;kMAQdh3E0C;QAAAAwB;2rCAsGFy2E2D;oNAQA0CgE;idAiEAn5E0C;QAAAAwB;yOAOY62E8D;AAGR72E0C;QAAAAwB;6QAgBJAyC;QAAAAwB;45DAwEyBooEmBAniBlB2OsB,AAAUqCAAzDVJ6B,gE,A;0FA8lBkClCU;qDAAAAoB;mEACDAE;gEAAAA6C;2KAOcEkD;AAC3BH8D;AACqBCE;2DAAAAkC;00BAkBjB3OgB;wBAAAAE;0BAAAAAA5mBxB4O2B,AAA+BsCoBA1B/BLM,2E,A;yYA+oBgClC8C;OAAAAyD;6DAElB5OAA7nBdoRoC,A;gPAkoBsBxCsC;OAAAA+D;iSI6fHpwD+G;iEAErBmnDI;iIAAAAiG;iXAMC0Le;6BAAAAiEJvuBJ9CqD,oD;4SC4zBI+C+I;2aAyMJ/O8E;2aAYAA8E;mmDKv+CS/jDuC;mHAAAA2C;sNAU0B+yDa;4JAGHAa;6tCAqDhCCuHAOSCAAoOeE8D,A,kb;21DAhCfFAAgCeEmC,A;6fAiEfnzDa;mFAAAA2C;q4BsBzXeA0C;uDAAAA2B;yBAAAAqC;mLA2IUA4E;QAAAA4E;y3BAwNPozD0C;s1BpBzYzBtNqC;AACAAAjB0lBJuN8B,A;AiBzlBIvN4B;68BAmTiBjWQ;iCACMlFAhBjThB3qCa,A;mEgBiTgB2qCAhBjThB3qC8C,A;0CgBmTQ4pC0B;kWC7GTqTe;uCACIj9C8F;28BA0QAAwC;8EAEdglDgS;q1BlBqOa32DAA9rBMilE2B,A;AA8rBfxNAAlGJuNyB,A;AAmGIvNAAnGJuN8B,A;kQA9PkBlOe;+NoB+LKC0C;sBACDC2C;sBACACyC;sBACAC6C;sBACEC+C;sBACAC8C;wBACCC4C;0LpB5Vc6NwC;2iEE+QfjjB6C;uTF0NNtwCsJ;8LAKd8lDAAzFJuN8B,A;sXAwGoBhlEAApsBDilE8F,A;6tJAwBWxCuC;iHAIpB0C4I;q0DyB4/RMCAsB7hSX9hEArB6DDqOsC,AAAArOwB,A,A;kkCD4nWgB20D6C;AAAOE+B;qSAKzBF8C;AAAcAoC;wCACdEiD;AAAaAuC;6XAIeF6C;AAAMEY;EAAAAiB;4+IAwwULkNuC;i1BA0GAAwC;ymHA6oKAAyC;msGAg0DlBrWsC;gpJAyzKOiJ6C;AAAOE4C;AAAM/X8C;AAASCkC;wPAKxC4X8C;AAAcAoC;wCACdEiD;AAAaAuC;0CACb/X6C;yGACACkD;qTAE4B4X6C;AAAME4C;AAAK/X8C;AAAOCe;EAAAAiB;u7HAsxGrC1uCmD;gEAAAA2B;yBAAAAuD;w/HsB9hqCFhGArBJuBmrDQ,A;6MqBwB5BiDyI;8GAISZ4E;6BAAAAgB;4FAGXCqD;+LAckDD4E;uNAQvCA4E;6BAAAAgB;4FAGXCqD;qWAeFA4D;0lCAsESntDwCrBjJAq5DAN4TXrnBApBvIAAuF,A,A,mB0BrLWqnBAN4TXrnBApBvIAAoL,A,A,A;O+CpCWhyCArBjJAq5DsC,A;mVqBiKInM4E;mBAAAAgB;yIAIXCoD;mNAQyDD4E;sNAOzDCqD;iuEpB8F2B/4C8C;uuBsB/DjB1OoH;mMAYZigD8D;uJAIE2TwG;AAEa5TsE;4tHEiJgB0TwC;ioVtBhLxB7T2I;g1EA6DH5KuE;urBAae4K8C;8rDAiCAAgD;4CAIR5C8E;kpBAeGb0D;AAJVnHuE;sbAcEmHsD;yQAEK+M4NAvHkC0K8B,oH;AAwF1BhU6B;AA+BRsJAAlHXlJwE,AACAAwE,AACAAmD,gHAIUJ+I,A;wkBAiIU7/CAU3ZXAyH,A;uCV6ZmBiNoB;iFACV4yC4E;mEAEaAqF;4PAO3B5KuE;81BAoBUmHwD;AAJVnHuE;47DAiBe4KgD;4CAAAAiI;AAOR5C8E;0OAOLbsD;wmCAeAnHuE;+hCAqBiCoBmL;iRAI3BA4C;6IAAAA6H;qHAOJ95DuF;0eAAAAANxhBR20EsC,A;4MM0hBQ30EAN1hBR20E6I,A;iCM8hBQjcuD;89BAkBmByBgU;2mBAILAqpB;mGAMF12CAUviBXAyH,A;uCVyiBmBiNoB;0IACD4yCoE;4PAMvB5KuD;m0BAmBUmHwD;AAJVnHuE;0/ECnhB6C6eAyB0BvCCgC,A;6FzBxBkBCAyBoCCDgB,A;uqBzBdDEAyBYSFkD,A;AzBXTGAyBYSHkD,A;0vBzBJzBxdoBL8jqBM4dAsBpoqBbh2DArB2DD6BqD,AAAA7BoD,A,A,A;iSIgBqB6BoB;AAEMiNoB;AACnB7OAZhEyBw8CCA+BHgK2B,A,A;+HY8BT5kD+D;geAYJ68CAMwJV78C+C,A;ANvJAo3C0B;AADUyFAMwJV78C8C,I;gDNvJAo3CuD;gIAGH6RiDDgGN1sEANrNF20E0C,A,0G;ovBOyIwG1U6F;soBAqBlGuMgB;AAzCEE+B;AAyCFFkH;AAzCEE8C;AAyCFF0C;sPAzCEE2B;0PAwDFrMI;6EAAAAAMsDNFiE,0D;6DNjD0BzvCoB;AAAS7OAZ1IEw8CC,A;AYgEzBx8CAZhEyBw8CAA+BHgK2B,A,A;gmBYuHb/HAM2EV78C+C,A;AN1EAo3C0B;AADUyFAM2EV78C8C,I;iDN1EAo3CuD;sbAaUyFAM6DV78C+C,A;AN5DAo3C0B;AADUyFAM6DV78C8C,I;iDN5DAo3CuD;oIAGUV6J;yBAAAAkB;saAmBAmGAMsCV78C+C,A;ANrCAo3C0B;AADUyFAMsCV78C8C,I;iDNrCAo3CuD;iHAGH4RgB;AAlHACiC;AAkHADAD1BNzsEAN7MF20EiG,A,c;AOqHQjI4C;AAkHADmD;kaAWFEgB;AA7HEDiC;AA6HFC4E;AA7HEDkD;AA6HFCsC;k6EA1Ba1qDAZ3LiB27CCkCpBjBwKgE,qG,A;g8qDvD+rCF4PsK;wWAUAC0K;sWAUAC0G;4XAUAC8G;gRqBhtBgCznDoB;mtBIkB/BkmDkB;yG2BjfgBnzD+BAsLhB20D2C,AAEpB30D8B,A;gJnB1LgDk+CAXqTjBl+C0C,A;2vBpB5NJHAAsE3BurD4B,A;AI1EkBjtEAA8CgB2hBAANKvxB" + "frames": "8vTAqIe+7DmC;+HAKAA6C;4CAKCTY;4CACeDE;sKAIlBAE;oBAGOF8B;8OAaAj7DAA8CgBCgEANK2EwG,A,oB;sgBATrC1EAAmB0BDgEAVW2E8E,A,AAUvCCiD,A;6qOK0KW+tBsI;eAEF49BwG;ssDJ5RWmPyC;4LA6BLzEY;mrBAuJqBlJmG;yXA8JlByKuB;uCAAAA6B;uMAuBQ1B6C;+YAYV0B4C;mMAqBL0CAARFjCsB,A;6GAkBWayC;2kBA2OHzWgB;0sDAwH+BzCoC;yJAYjBjjDAA/rBxBgxB0B,A;mRAsuByCiyB+C;g1EAmGCGAQv8BzBHsC,A;gYRq9ByBGAQr9BzBHsC,A;utCR6/BZmY6C;4lBAAAA+C;iNAmBqB9WkC;09BAgDOnc4C;ghBAgCnBA2C;uDASAA6C;8LAyCAnX8F;k1DAqHdAkG;iuBA8NEA+S;u4BA4MAA2C;8xCA0DyBAkB;8oDAkCJAkB;4DAOpBAoE;wDAIiBockF;OAChBpc0B;sJAOC2sCc;4BAIgB3sCoE;sOASjBA0B;4NAiCmBA4B;6FAGtBA4C;ubAsEKopCe;qJAEDFsB;AACEAyB;wrEA0NJlpC+C;cAEAAgG;4rIAyPEA0F;m7DAqF6B8pCmK;AACHiCsK;wRA4HtBv6DAM/gETCkCA7C4Bk1De,A,sB;sPNklElB3mCoG;iEACK6qCiC;qbAyIhB7qCqC;iEAaAAmD;ocCloFOwrCa;8BACcp5DAAsE3BDAF1IAF+B,wG,A;aEoE2BGAAuEpBm2DE,A;8DAtEWiDa;kFAKKn5DAAzCJ03DkB,AAAZyBa,A;yLA+CMAoB;kCACkBp5DAAyD/BDAF1IAF+B,4G,A;aEiF+BGAA0DxBm2DE,A;sEAzDWiDoB;0FAGKn5DAApDJ03DkB,AAAZyB0D,A;0QA0EEp5DAA+BTDAF1IAF+B,wG,A;aE2GSGAAgCFm2DE,A;2NAvBEj2DAA2BTHAF/IAFsB,A,gCE+IAEoG,A;SA3BSGAA4BFi2DE,A;0LAfoCgCmC;oDAElCj4DAAYTHAF/IAFsB,A,gCE+IAEoG,A;SAZSGAAaFi2DE,A;4KAMPp2DAFtJAFiC,+B;2aEkK2Cs4DiC;wjBAsCjCR0B;6ZAaF53DAFrNRFiC,uL;iIEmO2Bu5D8P;o2BA+EX34D6E;gnJWsJsBysDuD;wMA6xBCOuB;mHAS/BNwC;AACAC8C;uvENhpCiBqIsB;6BAOjB7B6D;AAHF7DAAqKUyF2B,A;+DAzJO/DgB;AAFAgEsB;2BAGf7ByE;AAD0CjFAAmKlC6GoB,A;mEApFCtGAAzBsBqGc,A;2FA2BECU;qGA2JzBEiB;kEAyKMnB6B;gZAiFPrFAAhbwBqGc,A;8JAybbCqB;iRAUAAqB;qRAUAAqB;mSAUWxGkB;kRAc3BDAAlaM2G6C,A;uCAsaGpHAA1ZHkHqB,A;iGA4ZQnHkB;kUAgBHqBAAlaILiC,A;AAmaJIkB;+QAUIGAApZT4FqB,A;qHA2ZiC9GkB;iZAiB5BGiC;AACDuGmB;oGAODxGAA1aH4GqB,A;yTAsbI1GAA5aJyGqB,A;6EAgbUL2B;0VAmBNEmE;uEAGDIa;kXAiBCJmE;2EAImBF4B;AACEAiC;AACtBMiB;4YAyB0B7FqL;AASAP8D;0GASbDoC;0PAWiB6FAA9YRpnCkD,A;AA+YrBmmCkE;AAIAJkE;AAIADkC;gVA4CF8BoB;iLAaZ1EsB;sMAuBFEiB;sCAIO4GmC;k4BAoFL9GiE;0EAQFyDmC;qKAiBcWe;uCAENzzD2BAtgBU8yDqC,A;2NAglBFvxDqCAlFlB8tDuD,A;uHAsFc6E0B;aAELiCmC;OAAwB/H4B;iFAOM3sDY;AAA9BsrD2B;uBAA8BtrDAAKrCgwDoD,A;6CAS0B6DsC;AADV77B0E;8CAGXtNAAoCTAAAAAAAACMslCsB,A,A,gB;6CAnC6BqB8C;AAE/BrxDkB;AADOsrD2B;iCACPtrDAAfAgwD8D,A;oEAwCqBzxDqBA1oBH8yD8B,A;uOA0sBlBhxDAAm7F6B8mDkH,A;mFAh7FzB6Ec;wNAiBYuFAAvoCY1EAA6KhByFoD,A,A;AA29BQtGAA9jCeqGc,A;ugBA0kCnBxGAAvgCJ2GmB,A;aAwgCM1GwD;AAiBdiFqD;qOAgBCzwDiDAiCmBksDAApjCZgGoB,A,AAqjCMjGiB,A;8NArBXoBO;AADP2CmB;gKAwCAjwDAA4zF6B8mDiG,A;gQAjzFtBqBO;AADPsHmB;kFAKW9DAA/qCwBqGiC,A;gNAorCCxFAAjlCxByF6B,A;oCAklC4B7GAAxkC5B6GwE,A;iLAmlCCjBe;2KAeN1DI;AADOtBAAtmCFiGqB,A;yJAgnCF1FiC;uBAKVkBiB;8QAsBO4GmC;gCACG9HiC;uBAKVkBiB;uPA4BWHiC;yMAaAAiC;iIAYT5CwF;+YAwCcxtBiC;wEAiBTowB+C;AADS4DAAh7ChBvFAA0EmCqGsB,A,AA1EPxFAA6KhByF2B,A,A;gBAowCQ7GAA1vCR6GyB,A;iCA4vCiBjB0B;AADzB1DW;08HAyOmBuES;wDAGDI4B;6JAYA9FAAvgDVgGsC,A;AAwgDKjGc;0HAMG2Fe;AACFgFyD;AACEhF4B;8KAOGI8B;+CAELEsB;sdAgBMNiB;ktBAgBFI8B;AACjBjyDAAy0EwB8mDAAO/B//CAAGa4kDAAt+HwBqGkB,A,A,4FAm+HhBpvDAAgBd2xDiD,A,qB,A;qNAv1EYlIAA1iDCP0C,A;AA2iDeX6C;AACQiByE;AAGPyF8C;AACOhGyE;AAGPgGiC;AACNjGkC;AACPiGe;oNAWVI4B;uNAaEA8B;uNAaFFqB;6EAKEEsC;AAIFEuB;8XA6BAxGAAlvDwBqGc,A;uRA2vDdxFAAxpDTyF0B,A;wDAuqDajGAAlqDbiGmB,A;6FAoqDStGAA5wDcqGgB,A;4JAqxDV5GAAxqDb6GgC,A;8DA6qDIzGAAvtDJ2GoB,A;gBAguDM1GgB;gWAgBOJAAvrDb4G8B,A;AAwrDG3GO;2CAUDCAAxrDIOsC,A;qPAgsDFsLyC;2JA2LPzMAAHKsMG,2B;iDAKPtMAALOsMG,c;6IAWDlEuB;0IAKOfyB;AACP/DmE;iYAiBOgJW;oGAqCAlEW;iEAeHiC8B;AADPhC2C;+CAGFhEkF;AACHiG2B;qIASS/JmB;8CAGV8E+B;AAEagFiC;+CAEThGoF;AACHiG8B;+IAKSpKmB;8CAGV6E6D;AAEuB/3BAA57Dfw6ByB,A;AA67DK6C0C;sHAGXrJAAtnE6BqG4B,A;AAunEdlHgC;AAKhBmKuC;6EAyCHxF8C;AACAQ0C;iFAyGe+EqC;AADPhCoB;+CAGsB3IAAIpBoHAAvmEPpnCsC,A,AAwmEH6lCwB,AACAN+B,yD;AANG1CAAtGA+HQ,AAAOjCwB,A;sFAmHKgC8B;AAFN9LAA3DKvxBAA3iEJw6BiD,A,A;AAumEFaoB;0HAGL9FAArHA+HQ,AAAOjCwB,A;oKAmIOrHAA9yEgBqGgB,A;qOAszEvBPAAxoEPpnCsC,A;AAyoEH6lCqB;AACAI4B;GACAV+B;oIAWeoF8B;AAFNhMAA/FKrxBAA7iEJw6BiD,A,A;AA6oEFaoB;8HAGL9FAA3JA+HQ,AAAOjCwB,A;sLAyKOrHAAp1EgBqGmC,A;kMAy1EZ5GAA5uEX6GoB,A;wMAkvEazFAA5vEbyFqB,A;gBA6vEiBtGAAh2EMqGyC,A;AAk2Ed5GAArvET6GwB,A;+HA4vEARAA3rEPpnCsC,A;AA4rEH6lCqB;AACAI4B;GACAV+B;oIAWeoF8B;AAFNnMAAhJKlxBAA/iEJw6BiD,A,A;AAgsEFaoB;8HAGL9FAA9MA+HQ,AAAOjCwB,A;wJA4NOrHgB;wKAMVuC+D;oIAKGuDAApuEPpnCsC,A;AAquEH6lCqB;AACAI4B;GACAV+B;sIAOeoFqE;AADPhCoB;+CAMVhJAASYyHAA5vEPpnCsC,A,AA6vEH6lCsB,AACAI4B,AACAV+B,yD;AAfG1CAAnPA+HQ,AAAOjCwB,A;oHAwQMnBe;wFAEIIG;AACCt6BAAhwEXw6ByB,A;qIAywEMNe;uFAGmBFiC;AACZIiE;AAKPEO;AACKt6BAAnxEXw6BiC,A;mJA8yEDpJAAjBO8IqB,qE;AAmBDmDgB;AADPhCkB;+CAMV/IAAUYwHAAv0EPpnCsC,A,AAw0EH6lCqB,AACAI4B,AACAGyC,AACgBoBwB,AAEdxB2B,AAA6BsBc,AAE/B/B6B,yD;AArBG1CAA7TA+HQ,AAAOjCsB,A;oJA4WNrHAAvhF6BqGuC,A;AAwhFrBjHAAz8EFkHmB,A;AA08EULmB;AAChB9GkD;iEAIKpCaApBP/wBAAp1EQw6ByF,A,A;AA02EK6CgB;AADPhCoB;+CAMVlJAAUY2HAAj4EPpnCsC,A,AAk4EH6lCsB,AACAI8B,AACAGgC,AACAb+B,yD;AAjBG1CAAvXA+HQ,AAAOjCwB,A;4FA8ZD/J2H;AAEM+LQ;AADPhCoB;+CAMV7IAAUYsHAA56EPpnCsC,A,AA66EH6lCsB,AACAIsC,AACAG0B,AACAb+B,yD;AAjBG1CAAlaA+HQ,AAAOjCwB,A;6FAifDrKAArDbCoD,AADIjxB0D,AACJixBAAM6CwD2E,AAGPyFgD,AACOhG2E,AAGPgGmC,AACNjGoC,AACPiG4F,iX,AAjBtB3CgC,A;AAyDgB8FgB;AADPhCoB;+CAMVjJAAUY0HAA//EPpnCsC,A,AAggFH6lCsB,AACAIiC,AACAG8B,AACAb+B,yD;AAjBG1CAArfA+HQ,AAAOjCwB,A;iHA0hBDlKsCAZTnxBAAngFUw6B4F,A,A;AAihFK6CQ;AADPhCoB;qJAGL9FAA9hBA+HQ,AAAOjCwB,A;2PAmjBQnBiB;8HAICIwB;AACXtGAAnuFyBqGkE,A;mYA6vFvBPAA/kFPpnCsC,A;AAglFH6lCsB;AACAIuC;AACAGuB;GACAb+B;kTA0KoByGuB;AACJG0B;mCAGTlEmC;oeAcH4D8B;0CAIAA6B;0CAIAAQ;uBAESiBU;AAAkBrEI;AAAqB2C0B;0CAKhDSQ;AAEEaqD;AAA2BII;AAA3BJAA4YD/E0B,A;0CAvYDkEQ;AAAsBjIqC;AAAiBkJ4B;0CAIvCjBQ;AAAsBlIqC;AAAkBmJ4B;2CAIxCjBQ;AAAsB9HqC;AAAe+I4B;0CAIrChBAAsFRDc,AAAYRgC,AACe7DuB,A;gQA3EXsFkB;AACRjBQ;0DAIcpDI;AAAqB2CiB;AAC/BJoB;qDAMI8BkB;AACRjBQ;8DAIcpDI;AAAqB2CiB;AAC/BJoB;qDAMI8BkB;AACRjBQ;8DAIcpDI;AAAqB2CiB;AAC/BJoB;0CAMJa2B;AACACAAqCRDc,AAAYRgC,AACe7DuB,A;yIA9BnBsEAA6BRDc,AAAYRgC,AACe7DuB,A;0CA1BnBiCAAmMSv4BAA2CEu2BwB,AAAmB4DmB,wBACtByBU,AAAkBrE0B,AACPdmC,A,AA5C3BkE8B,AACAA2B,A;2CAjMQCAAqBRDc,AAAYRgC,AACe7DuB,A;2CAlBnBgCAAiMStBAA4CETwB,AAAmB4DmB,6BACjByBU,AAAkBrE0B,AACZdmC,A,AA7C3BkE8B,AACAA2B,A;0CA/LYnCAAwMK2C4C,AAMjBRQ,AAAmB9QyC,AACnB8Q2B,AACACAAnMADc,AAAYRgC,AACe7DuB,A,2B;2GANhB4DuB;8BACG0BU;AAAkBrES;gKAWrBRmC;oGAIX4DyB;yNAaW5DmC;sNAIyCgCsD;yEAM7BlP2C;oCAKjB+RgC;AACArE2B;AAFQGAAt9BCtHAAroEsBqGkD,A,AAuoEjBjHAAxjENkHmB,A,6CA2jEazGAAvkEb2GU,A,AA0kEY4CkB,oI;AA48BxBmBW;AAEYjD8E;AAOZiD0B;qGAMqBiB+E;AAEZ1BmB;qCAGTSW;+GAE4BpD+B;AAChBnHAAhnGuBqGyC,A;AAknG/BkEW;kEAMIbkB;sCAMJaW;qJA+BKTmE;AAnBY0BuF;oFAwBI1B8C;sCAIbAiC;sCAIRS8B;oCAIJAwB;kEAKKT0B;2CAGIAiG;AAC0BcyD;AACbAgB;wCACczDqB;AACmBrBAA/6FlBpnC8D,A;AAg7FfmmC+D;AAIAJ+D;AAIAD2B;AACpB+FW;0GAWAAW;iCAIW/D6C;qMA0CLsD8B;0BAERSW;AAAsB/HqC;AAAgBgJuB;gDAItCjBW;AAAsBnIqC;AAAcoJuB;qKAOnBrF+B;AAAmB4DW;wBACtByBU;AAAkBrEkB;AACPd8B;iLAmBbuEK;8QAUM1Ee;8FAEAFU;gGAOAEe;iGAGAFU;mHAOLhGAA5zGsBqGc,A;wEA8zGRjHAA/uGfkHS,A;qCAgvGYnHmC;AACP+GiB;gDAEDIW;yDAIElHAAvvGNkHqC,A;AAwvGDtGAAv0GwBqGqB,A;gMA80GbvGwC;AACPoGiB;oBAEDIW;yLA0DDvGkG;AACGsJ8B;8BAETnH0E;AACFoHqC;oTAsELnOqF;6DAEY6EAAv9GuBqGc,A;uGA89GnCxrDAAihBEmlDc,A;6IA3gBesGE;AADH1GAA71GFyG6C,A;4BAk2GArGAAx+GuBqGiE,A;qFAm/G7B5GAAt4GM6GuB,A;iMAm5GN7GAAn5GM6GgC,A;oEA65GNzFAAv6GMyFgC,A;oGAq7GRzFAAr7GQyFgC,A;wNA+8GR7GAAr8GQ6G4C,A;2QA69GJjGAAl+GIiGgC,A;gFAq/GR7GAAh/GQ6GmC,A;mRAwgHJjGAA7gHIiGuB,A;uZAwiHI3G2B;AACAAiC;AACGuGwC;AACAAmB;sBAGkBD8D;AACAA8D;0DAGjBK+B;AACAAe;iNAShB5GAAxiHQ4GkB,A;AA0iHR5GAA1iHQ4GuB,A;s7BA8kHM5FAAxlHN4FkB,A;AAylHM5FAAzlHN4FiC,A;mCA8lHsB9G6B;AACAA+C;AAEQiB6D;AAGAA2E;AAGPyF8D;AACAAe;+MAKOhG6D;AAGAA2E;AAGPgG8D;AACAAe;iOAMAFa;+CACbMuC;4GAOaNa;+CACbMmE;8GAUfNuC;+CAEeMuC;gDAMOrGmC;AACAAoC;AACPiGoC;AACAAe;yFAIFMyB;iGAGEAoB;kGAIEJwB;qIAMcJwB;uEAENAwB;kCACbMkD;0GAQRFwB;0MAeIvGAAlvHH2G4B,A;AAmvHG3GAAnvHH2GwB,A;2CAiwHOxHAAt0DLsMG,iB;2FAy0DC9EwB;0CAIM2CiB;sEAEHjDiB;AACWtyBuDA0NIyxBa,AAAjBuFc,A;6GAxNOpEc;qEAIT1GoB;0DAcFAqB;AACAAoB;mIAyBIoGe;uEAUAIgB;AACAA6B;qIAgDA/F2B;AACAAgC;AACA2FqC;AACAAiB;yBAEF1FAAn2HFgGe,A;AAo2HEhGAAp2HFgGmB,A;4FAw2HMFkB;AACAA6B;8EASPtGAA38HwBqGwF,A;kGA+8HIxFAA52H3ByF2B,A;iCA62H+B7GAAn2H/B6GkB,A;mEA+2HiBnLsG;4DAUlB6EAAt+HwBqGc,A;6IA0hI1BuDqE;AACE1De;kDAEEMa;8HAWoBnBa;AAAjBuFI;s/DQlsIZjMgC;sFA2BRjgC+C;kEAwGOA2BApCSugCAAAAvgC0D,A,sC;iJAmDC2vBQ;4yBA2DE3vBgF;AAAAsmCqE;geAiCP90B0C;+hBC9SIAoB;+NAYVo1BsC;2JAMJA4F;OAEgBhJmC;wMA8kBFoFyB;uBACIlEsD;0FAIA3nB6E;+QAehBquBiF;sOAfgBruBiB;6NAiCXh5B2C;QAAAAwB;odAmJkBqkDuE;iFAGYtCwD;AACxB9P6B;2pBAiCcKkB;iHACD0WyB;2JAGWjHkC;AACxB9P+B;uOAuFIGkB;woBAkBT2J8D;wHAMgBiJqC;AACF8BgL;AACZjGmI;gNAcIiGmK;0FAEVqBoI;4BAGAZoG;gYA4EGtNoB;qqBGhgCK8MoD;qGAUqBllC4E;oJAKrBklCoD;oYAoBkBllC2E;8mBA2D3B7hB4E;4GC8/ED6hB0D;OAAAAuD;geCz9EOo4B8C;+NAgXNhI2C;6uREXkCpwBuF;uEAQ9BAqF;6HCjbMAqD;8YAoBNy7BkB;8kGEuQHyR4N;cAAAAqK;cAAAAsJ;cAAAA4E;cAAAAoL;qDAAAA0E;uEAAAA6F;cAAAAqK;cAAAAuJ;cAAAA4E;cAAAAmM;cAAAA4E;cAAAAsI;inBAyTO3GkR;sqGAmFkBvmCAb+hBQ6/B4B,A;84Cavdf2G4D;s2EDzfehCAAL9BsGgBtB/OwB+B4C,A,A;uyBsBobjB5asC;AAEDgVc;uFAGFAc;0EAGEAkC;yJAsBOrJkC;s6BfrfX6IAeyLS8FAxB4NXjCsB,A,A;eSnZA/FiC;68DmB9D2BvkCyB;wvBCm0B1Bq8B8G;yPAwBcr8BkD;gGAGpBq8BiG;2LAMKZkB;wxFC9qBakOwE;i0FCvJNtCsD;myCChBUrnCuF;8JA4gBRAA8B8nBSAA/ChmCvBAAAtB0B2vBAAAA3vBuF,A,A,mE,A;+tBiBulBJAuF;kpGErjB1BAAAAAA6HAQEyc8E,oE,A;m7CC7EA4U2H;AAIUiYoE;AADAtpC6BFkHem5B4E,A;8DElHfn5BAF0H0BkzBqB,AAGlBiHAAAAn6B2B,A,A;8NEnHlB05B6DFuHErIO,A;AEpIFAyH;AAaAqIc;AAVU15BAF0H0BkzB0C,A;AEhHpCwG+H;8OASGmCiC;8eAMOrImN;qCAAAAW;kCACAkCkB;kFAIZrEwE;AAEI+a4D;AAAA9C8D;AACFjYU;AAHFAuF;AAIEiYiC;uEA+XFA4B;4kEI9aqCRwE;2FAYADuF;olBGiBvB7oCA9BgxCyB6/BkD,A;qpBb5+BPsL2C;uOAqB5B5ByD;6qDGlMF9tBwE;mKA4GAAiF;8oBA2COzbkE;QAAAAkE;sNA2ZqBwqCmD;mDAaFxqC+C;+BAAAA4B;gqBAqGJ3a6B;oEAAAAAI6Sd48C+B,A;sgCsC/gCqBtGAA6ESngB0C,AAAiB+T8B,A;0jBA8DhDgT4M;sBAAAAwD;yBAAAAqH;+lHlBoJE+JoC;iyCmBrSPhKuGA+BUsCqN,AAEI5kCAjC4rCqB6/B6C,A,qI;iSiC9qCpBkJAjCirCfzJe,oB;AiChrCUloBkB;6ezClGcpXmD;uBAAAAwC;4FA+IxBA2E;gBAAAA+E;m5BA6MwBAa;6GAAAA+B;29BA6DAA8C;8FAAAAqC;+CAIxB49ByB;iFAAAA8D;qvC6ChVO6FuB;4NAkBF4GI;gcAmBerqCoB;kBAAAAqC;wIAyCpBAa;qEAAAAgE;wvBjDiCsCitCoC;4LAmBpC/akC;2QAQW6YiB;kRAIXhZkC;yXAKM/xByE;kEAEeitCa;2FAGlBjtCgE;4yDA26CqBiyBwC;8jDA85BCyUmB;AAAeAiB;8IAOQAiB;4DAOlCvCuC;AACAgHgC;8dQ1jFInrC8C;8IAAAAwC;0IAUbq/BAA+PiBgDa,A;+NAhOEA+C;+MAKAAe;8QAUf1BaAgLNyB6C,A;iyBA/JLvQ4LAQWuQgB,gV;gqCA0EaCa;6PAUAAa;uVAiBDriCwB;qhDAwHlBAa;4EAAAAyD;ulCInTgBoXAA0xCjBmoBoD,A;uLA1xCiBnoBAA2xCjBooBgD,A;4PAx9BGx/B+C;+kBAiEMkbwD;0hCAigBf6jB8F;AAEEmH2gB;uuFAyaK5Ge;mjBNzsCA7tD+B;0DAAAAAAia0Bk1D4B,A;iDA3ZDr4CqBAmaZq4CiC,A;itCQ7bhB/D6B;quCAsKA5iCoC;2oCoCpFAgyB8B;AACShyBoC9B2gBEwRgB,mDADjBxRAAAAAiGAKcm4B0C,A,A,A;+B8B7gBWn4BAAlLrBAA7B80BAAADjvBgBwR2H,A,A,A;gC8BqFKxRAAlLrBAA7B80BAAADjvBKmtCAAWKrIAA4BL1MmB,A,yEA1BK2M0EA+DL5MmC,A,A,A,A,uI8B/KTn4BAAAAA0G,A,A;AA+LE69ByZ;wJAgCa79BS;AADTgyB4B;mFAIOhyBkE;iOA6DPsjCe;4GAKAD2B;qMAaEjDsB;iPAMA4E8nB;wEAUF3BqC;uEAOArRqC;8rBAkB0CsRkB;wCAIjCtjCS;AADTsjC4B;kOASAD2B;sDACAZyD;sEAMEYuC;ilBnCrUMY6B;+HAEZ/E6B;iSAgBY+E6B;2NAgIPtT4B;8BACEwW2B;AAA6BhHAAxB7B6MmC,sB;yRAwCI7FqB;qdAUL1W+B;khBA2IkBjf2C;oTAalB4mBgB;uEAQkBp4BqE;oBACPi7BqH;wJASOj7ByE;oBACPysCsH;uXA2GbzIe;kOAQiBlFmF;AACLqEmC;2HAQdhlD0C;QAAAAwB;qSAQE6lDe;qeAiBiBlFmF;AACLqEmC;kMAQdhlD0C;QAAAAwB;2rCA+IFmoD2D;wJAMW9DyC;6bAYXiDuBApOoBzlC4C,A;2bAkSpB7hB0C;QAAAAwB;6YAwBAAyC;QAAAAwB;g8DA8EyBmyCmBA3nBlB6WsB,AAAUJAAhEViG6B,gE,A;0FA6rBkC9MS;qDAAAAoB;uDACDAE;gEAAAAiD;gEAEHlgCkF;2MAKiBmjCkD;AAC3BX8D;AACqBtCE;2DAAAAkC;mKAWrBmEAAiGzB9H2C,qC;6iCAjF6BlMgB;wBAAAAE;0BAAAAAAptBxB8W2B,AAA+BzCoBA1B/BsIM,2E,A;oJAgvB4BhtC6E;4RAOIkgC8C;OAAAAyD;6DAElBxPAAruBd+ToC,A;gPA0uBsBvEsC;OAAAAoC;mMAGQlgCkF;oPIqZXAyF;+jBAQtBi/Be;6BAAAA+BJtpBFqHuF,oD;4BM8J4BzVkD;yxBDtiB1BkSe;+HAIc/iC8D;kMAiDSA+B;uBAAAAuC;8DAC3B+a8M;AACK2nBe;2RAciBaoB;wQA6FlBb4C;6IAEoBwBwFAhM2BjS8E,A;gPA2M5BsRwC;8uBA+BcxD8G;qWA0HjC1Ne;keAWFlCQ;6BAAAAuNA6BFkHuC,A;wqCJqkCEjH8E;2aAYAA8E;wtCM/pDKpwBuC;kHAAAA2C;mNAU8B2iCa;4JAGHAa;ktDAqDhCwC6HAOShGAAoOeyKgE,A,8e;g9DAvGrBjHiE;gJAuEMxDAAgCeyKmC,A;6fAmEnB5pCa;mFAAAA2C;s0BqB/ZmBAyC;uDAAAA2B;yBAAAAoC;mLA2IUA2E;QAAAA2E;iDA6WjBwqCmD;+xBpBlafpOoD;AACAAAC0YJ8K8B,A;ADzYI9K2C;qWAiOiB9IoB;gCACMNAfpTLhzBa,A;oEeoTKgzBoBfpTLhzBwC,A;0CesTHy7B0B;mTE7FTxJe;uCACIjyB8F;8gBAoFDwcAA3B6BxcAby/BL6/B6C,A,A;uXalxBZ7/BAbkxBY6/BiB,A;QajxBvB7/BwC;2EAEd2bgS;6UAqHyB3bAb0pBY6/BiB,A;ofYhtBxBvoCAAlkBM+xC2B,A;AAkkBfjNAAjGJ8KyB,A;AAkGI9KAAlGJ8K8B,A;gQjBtTExSiB;AAAgCAe;AAChCFuB;AAAqBAqB;uMoB6aA8H0C;sBACDzH2C;sBACAjHyC;sBACAoD6C;sBACE2D+C;sBACAuE8C;wBACCzEwD;AACbD4C;0zElB9GY1C6C;uTekEN9xBsJ;8LAKdo8BAAxFJ8K8B,A;uYAuGoB5vCAAxkBD+xC8F,A;uhJAwBW8BuC;yxDQ2f1BnrC8C;gcAmGK7FwCAxDK6uCAzBnkBNhCAARIFgP,A,A,A;OyBmoBH3sCAAxDK6uCyC,A;iQAqEVmBwI;2GAGmBe8D;0cASa5B6B;mJAUnBAsC;y1BuB1ZTtpCoH;6GAYR85BA3C0gBAiFkC,A;oD2C1gBAjFA3C0gBAiF4D,iC;oD2CxgBkBuMiC;2DAEhB1J8G;AAEa5RyC;sDAKAqI+B;ggDtB1EfhHkH;AACK4BkF;AAEH5BU;AAHFAiG;uDAMsBqQgC;sPAAA1D4B;OAGpBLQ;+HAIKOO;AADAA0C;AACAAuE;kEAELjCkC;+KAGE1EAA7BG2GW,oBAAoBPQ,A;imBA6CTziB8H;AAALouBuD;6BAEOA2C;gBAChBlaiF;AAIiBmM+D;wgBAQbnMO;AAZJA2G;8DAgBIAO;AAhBJAgF;uaAmCSpvBArB8/BwB6/ByB,A;AqBz/BZ3kBgD;AAALouB2D;kCAEKAgD;gBACrBlasF;iDAE6CkaiC;AAAdrL8B;AAAcqL+B;AAClCrL8D;oCACwBqLS;AAAdrL8B;AAAcqLoC;AAGsB9L+C;oBAA3CCwB;OAkBXz9BoE;kEAWmCs9BoC;2FAI/BYkC;6lCAWYoL2B;sCAEAA0B;0FACfzWsB;mKAGOqL6E;0KAMb/O+D;omBAcc8DoG;AALVsEAAnKC2GW,oBAAoBPQ,A;mYAiLrB1K4F;kQAEKe6FAlMkCiY8B,oH;6BAkMlCjYAA7LX8F2C,AACAA2C,AACAAsB,gS;AA+LERArB2XFyFmE,0E;AqB1XEzFuCrB0XFyFmE,yD;0DqBxXuCuKY;AAAPAiB;AAAOA0F;AAM7B3La;iVAIHDkB;AATAUiC;qRAWLhP2E;oCAC2FlU2D;oCACzElbAYnZXAyH,A;uCZsZY+oCoB;gHACQ7tB4E;4UAQzBqcAApNG2Ge,AAAoBPQ,A;yLAyNb1K8H;AAMZ7DU;AAzBAAwF;AA0B4D6DqC;mmBAE5DgJ0D;yRAQYhJgG;AALVsEAArOG2GW,oBAAoBPQ,A;g/DAyP3BxOqE;kNAQoB8CiC;yEAEdYsB;mKACJ1DU;AAXFAsE;AAYa+O8C;AACX9OiH;sFAIEyDsB;yWAMAzDU;AAVFAwC;+HAYMqMAUqCW+OoE,A;AVrCoB/OAUqCpB+OyH,A;AVpCbxSqDI9e4BiTAVgOd3GApBhJE8DE,A,A,wD8B/EO6CAV+NT3GApBhJE8DE,A,A,2D;A0B+ZZ9ViHIxdO2YAVyMG3GApBhJE8DgD,A,A,+L;A0BoaIpoC0D;AANpBg4BAI9e4BiTAVgOd3GgE,A,A;6VMkRZlVU;AAjBNAmE;iFAmBwBpvBAYpejBAiE,A;oCZqeyB+oCoB;oMAG1B5ZU;AApCRA4F;AAqCmB+O+E;AAEX9OU;AA1BNAuG;AA4BIAU;AA5BJA2F;AA6Be8OqF;0OAUXjL4F;i3BAWJ7DU;AAlDAA2E;4PA2DyCwBgD;qNAGrC2GAApUC2GW,oBAAoBPQ,A;2IAyUX1KiM;igCAqFZ7DU;AAxJFA4D;ovBAkKAlBAC9gBFuKkF,A;ADghBErJU;AApKAAiF;mCAqKwGlUmD;oCAEtFlbAYxnBXAyH,A;uCZ2nBY+oCoB;4KACM7tBoE;yMAKvBqcAAtbG2GW,oBAAoBPQ,A;yLA2bb1KwI;AAMZ9DU;AAxMFA2F;AAyMkE8D8C;mzBASpDAgG;AALVsEAAtcG2GW,oBAAoBPQ,A;+kDAoVW2LY;AAAPAiB;AAAOAwC;sKAMtB3Lc;iXAOHDkB;AAZAUyB;kZAcThP6C;AACiElU0D;6MAKjEkUU;AANAAmC;AAOiElUmD;+KAE/DiUkJ;uYASACU;AAlBFAkF;4JAoBEAU;AApBFA4K;oIA6BY6DgG;AALVsEAA3XC2Ge,AAAoBPQ,A;+nCAwYH9KoE;u3BAUyBAW;+2CCnkBjCTASIMHyB,A;0mBTiEpBgK6C;4uCAwBKyBkB;AADASO;AADyBmLO;AAAPAkB;OAAAAQ;AAAOAS;AACzBnL+E;gIAEMjjByE;gcAEX+gB2C;0/GA2BGyBkB;aARiC4LO;AAAPAkB;OAAAAQ;AAAOA+B;AAGnBhM0C;AACaGiB;AAAV6LiC;AAAU7Le;kCAEEEQ;qkBAO3BlhBmI;2pBAI+B6sBY;AAAPAkB;OAAAAQ;AAAOAyD;AACkB3La;gNAEnDDkB;wFADsCCQ;2nBAQ3ClF4C;WAAAAqE;8uBAIAvcoK;AAE+BO2H;uHAE/BAuH;86BAM6B6sB0B;AAAU7L6B;AAIC6LY;AAAPAkB;OAAAAQ;AAAOAwB;AAEjB3L8E;0EAEkBAa;0TAIpCDkB;0FAFwBCQ;8sCAcI2LY;AAAPAkB;OAAAAQ;AAAOAwB;AAER3L8E;6HACpBDkB;AAFAUoF;2EAGSljB2I;mnBGpNG+vBAVkNG3GApBhJE8DsC,A,A;6nB4BzCtBtrCA4B/BAyuC0B,A;+W5BuCEla4E;AACwBiYkF;4BAIEAiB;0BACP7Lc;mCACSAuB;6BACNAiB;4BACFAe;6BACEAiB;mCACMAuB;gGAK1BxBmG;8FASwBqNyC;AACAAyC;w6BAQX/LW;AAAL+LuB;kJAGZptB8C;ulFAQiC6sBoB;AACnBhsCAVxDuB8wBCA+BHE2B,A,A;6TU6BRgboB;AACRhsCAV7DmB8wBC,A;AUwDvB9wBAVxDuB8wBAA+BHE2B,A,A;oXUmC5B7RU;AAnBNAwD;6DAuBsBkwB4D;AAAA9C2G;qFAAZtpCADhFyCo3B2F,A;ACmF7CkSgB;AAAKpLY;AAIHPQ;wVAMFzhBU;AApCNAsF;yDAsCMotB8B;AAAKpLY;AAIHPQ;6eASEzBAjCgHHl8BmD,A;AiChHuBs7BwE;AAApBY8C;AAAoBZ2D;kMAEtBpfU;AArDRA+B;kDAsDQmdqDFkCNhIqE,iEAIFnVU,A;AE5FAAuC;AAsDQmd8I;AAEFiQ8B;AAAKpLY;AAKHPQ;kzBAcFzhBU;AA3ENAgD;sUAgFQ+fyG;AACAqNkB;AAAKpLY;AASHPQ;4xBAcJ2LkB;AAAKpLY;AAQHPQ;qQA1DAtEkE;8JAiEFndU;AAvHNA6E;kDAyHMotB8B;AAAKpLY;AAKHPQ;sXAMkBoLoB;AAAShsCAVnLE8wBC,A;AUwDvB9wBAVxDuB8wBAA+BHE2B,A,A;6SUyJ1BkOU;AAzDAA+F;AA0DAqN8B;AAAKpLY;AAKHPQ;0eAKFzhBU;AApJRA8E;AAqJQ0dAD5KRvIU,A;AC6EQgIAFkCNhI6E,A;AE6DMuI+I;2KAGA1dU;AAxJRA+G;kRA+JMotB8B;AAAKpLY;AAOHPQ;+sBAWA1BU;AAjGAA+F;AAkGAqN8B;AAAKpLY;AAKHPQ;wcAMFzhBU;AA7LRA2D;iaAiMQAU;AAjMRAmF;mWAwMMotBkD;AAAKpLe;AAQHPQ;0IAJ2BtgCAVtQCkxBCiChBjBEgE,kK,A;+MvBiSbvSU;AAvNNA4F;iFAyNUggBAjCtDHl8BmD,A;AiCsDuBs7BwE;AAApBY+C;AAAoBZ2D;oFAEtBpfU;AA3NRAkD;gFA4NQsdgB;AAtKAHqC;AAsKAGAFpJNnIU,A;AElBMgIAFkCNhIoH,A;AEoIMmIc;AAtKAHmD;AAsKAGAFhJRtdU,A;AE5EAAwC;AA4NQsdiJ;AAGF8P8B;AAAKpLY;AAKHPQ;4pBAWA1BU;AA/JAA+F;AAgKAqN8B;AAAKpLY;AAKHPQ;mdAMFzhBU;AA3PRAiF;wWA8PQAU;AA9PRAkH;0SAoQMotBkD;AAAKpLe;AAOHPQ;gJAH6BtgCAVlUDkxBC,A;AUsQDlxBAVtQCkxBAiChBjBEgE,A,A;AvBkVkBpxBAVlUDkxBiJ,A;2HU2UhBwaoB;AAAShsCAVhUQ8wBC,A;AUwDvB9wBAVxDuB8wBAA+BHE2B,A,A;sPUqS1BkOU;AArMAA+F;AAsMAqN8B;AAAKpLY;AAKHPQ;4SAGJ9DoE;AACA3dU;AA/RNAwC;0OAiSQ2dAFhNR3dU,A;AEjFAA0C;AAiSQ2d+FF9MRhHsB,iE;AEiNMyW8B;AAAKpLY;AAIHPQ;2ZAOFzhBU;AA/SNA0G;0LAkTM4fgB;AA5PEzCqC;AA4PFyCAFzMJzKU,A;AEnDMgIAFkCNhIgG,A;AE0NIyKc;AA5PEzCmD;AA4PFyCAFrMN5fU,A;AE7GAAwC;AAkTM4f0I;AAEAwN8B;AAAKpLY;AAIHPQ;8VAMFzhBU;AA9TNAgF;mVAmUQotBkB;AAAKpLY;AAMHPQ;4NAEF2LkB;AAAKpLY;AAKHPQ;sSAKN1BU;AArQIA8C;yhDCjJO7JAVmXOHgC,A;ueUjMlBEAA1B0BkLc,2BAAAAkB,A;2IA+CxBr9BAwBhMcirCAjCsMA3GApBhJE8D+C,A,A,sG;iQ6BoNIJAfjIpBhoCiH,A;mDekIC66BActLmB76B2B,oBAAAA+B,A;sMd4LO+amJ;8QAvPSqpB+lBAgC5BtBqC,yEAAAAAAGhBAAAAAAkI,A,A,A;i0+BpCuxCmB2IsK;CAAAAG;oWAUAC0K;CAAAAG;kWAUAC0G;CAAAAG;wXAUAC8G;CAAAAG;8PyB30BgC7CAbgiB/CzJc,oB;mtBkB1hBgBsKkB;yGyBnhBgB5pC+BAsLpB+9B2C,AAEhB/9B8B,A;" } } diff --git a/example/web/index.html b/example/web/index.html index 2493a82b1e..db7638342a 100644 --- a/example/web/index.html +++ b/example/web/index.html @@ -1,5 +1,6 @@ + - + - + - + - flutter_webrtc_example + webwasm - - - - + - + - + + \ No newline at end of file diff --git a/ios/Classes/FlutterRTCAudioSink-Interface.h b/ios/Classes/FlutterRTCAudioSink-Interface.h new file mode 120000 index 0000000000..940c06d646 --- /dev/null +++ b/ios/Classes/FlutterRTCAudioSink-Interface.h @@ -0,0 +1 @@ +../../common/darwin/Classes/FlutterRTCAudioSink-Interface.h \ No newline at end of file diff --git a/ios/Classes/FlutterRTCAudioSink.h b/ios/Classes/FlutterRTCAudioSink.h new file mode 120000 index 0000000000..5242de9e22 --- /dev/null +++ b/ios/Classes/FlutterRTCAudioSink.h @@ -0,0 +1 @@ +../../common/darwin/Classes/FlutterRTCAudioSink.h \ No newline at end of file diff --git a/ios/Classes/FlutterRTCAudioSink.mm b/ios/Classes/FlutterRTCAudioSink.mm new file mode 120000 index 0000000000..c15372c4ed --- /dev/null +++ b/ios/Classes/FlutterRTCAudioSink.mm @@ -0,0 +1 @@ +../../common/darwin/Classes/FlutterRTCAudioSink.mm \ No newline at end of file diff --git a/ios/Classes/FlutterRTCMediaRecorder.h b/ios/Classes/FlutterRTCMediaRecorder.h new file mode 120000 index 0000000000..31ca7e3b5f --- /dev/null +++ b/ios/Classes/FlutterRTCMediaRecorder.h @@ -0,0 +1 @@ +../../common/darwin/Classes/FlutterRTCMediaRecorder.h \ No newline at end of file diff --git a/ios/Classes/FlutterRTCMediaRecorder.m b/ios/Classes/FlutterRTCMediaRecorder.m new file mode 120000 index 0000000000..1c2b1bf1a8 --- /dev/null +++ b/ios/Classes/FlutterRTCMediaRecorder.m @@ -0,0 +1 @@ +../../common/darwin/Classes/FlutterRTCMediaRecorder.m \ No newline at end of file diff --git a/ios/Classes/RTCAudioSource+Private.h b/ios/Classes/RTCAudioSource+Private.h new file mode 120000 index 0000000000..7ce3b77fd6 --- /dev/null +++ b/ios/Classes/RTCAudioSource+Private.h @@ -0,0 +1 @@ +../../common/darwin/Classes/RTCAudioSource+Private.h \ No newline at end of file diff --git a/ios/Classes/audio_sink_bridge.cpp b/ios/Classes/audio_sink_bridge.cpp new file mode 120000 index 0000000000..13215e8454 --- /dev/null +++ b/ios/Classes/audio_sink_bridge.cpp @@ -0,0 +1 @@ +../../common/darwin/Classes/audio_sink_bridge.cpp \ No newline at end of file diff --git a/ios/Classes/media_stream_interface.h b/ios/Classes/media_stream_interface.h new file mode 120000 index 0000000000..5810a86316 --- /dev/null +++ b/ios/Classes/media_stream_interface.h @@ -0,0 +1 @@ +../../common/darwin/Classes/media_stream_interface.h \ No newline at end of file diff --git a/ios/flutter_webrtc.podspec b/ios/flutter_webrtc.podspec index 32845d4e0a..778368a8a0 100644 --- a/ios/flutter_webrtc.podspec +++ b/ios/flutter_webrtc.podspec @@ -3,7 +3,7 @@ # Pod::Spec.new do |s| s.name = 'flutter_webrtc' - s.version = '0.12.6' + s.version = '0.14.0' s.summary = 'Flutter WebRTC plugin for iOS.' s.description = <<-DESC A new flutter plugin project. @@ -15,7 +15,12 @@ A new flutter plugin project. s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'WebRTC-SDK', '125.6422.06' + s.dependency 'WebRTC-SDK', '125.6422.07' s.ios.deployment_target = '13.0' s.static_framework = true + s.pod_target_xcconfig = { + 'CLANG_CXX_LANGUAGE_STANDARD' => 'c++14', + 'USER_HEADER_SEARCH_PATHS' => 'Classes/**/*.h' + } + s.libraries = 'c++' end diff --git a/lib/flutter_webrtc.dart b/lib/flutter_webrtc.dart index 733ef3a036..b7dd3a8fc6 100644 --- a/lib/flutter_webrtc.dart +++ b/lib/flutter_webrtc.dart @@ -7,13 +7,15 @@ export 'src/helper.dart'; export 'src/desktop_capturer.dart'; export 'src/media_devices.dart'; export 'src/media_recorder.dart'; +export 'src/video_renderer_extension.dart'; export 'src/native/factory_impl.dart' - if (dart.library.html) 'src/web/factory_impl.dart'; + if (dart.library.js_interop) 'src/web/factory_impl.dart'; export 'src/native/rtc_video_renderer_impl.dart' - if (dart.library.html) 'src/web/rtc_video_renderer_impl.dart'; + if (dart.library.js_interop) 'src/web/rtc_video_renderer_impl.dart'; export 'src/native/rtc_video_view_impl.dart' - if (dart.library.html) 'src/web/rtc_video_view_impl.dart'; -export 'src/native/utils.dart' if (dart.library.html) 'src/web/utils.dart'; + if (dart.library.js_interop) 'src/web/rtc_video_view_impl.dart'; +export 'src/native/utils.dart' + if (dart.library.js_interop) 'src/web/utils.dart'; export 'src/native/adapter_type.dart'; export 'src/native/camera_utils.dart'; export 'src/native/audio_management.dart'; diff --git a/lib/src/media_recorder.dart b/lib/src/media_recorder.dart index 2f45d63fd4..370cfa9c78 100644 --- a/lib/src/media_recorder.dart +++ b/lib/src/media_recorder.dart @@ -1,15 +1,32 @@ +import 'package:flutter/foundation.dart'; + import 'package:webrtc_interface/webrtc_interface.dart' as rtc; import '../flutter_webrtc.dart'; +import 'native/media_recorder_impl.dart' show MediaRecorderNative; class MediaRecorder extends rtc.MediaRecorder { - MediaRecorder() : _delegate = mediaRecorder(); + MediaRecorder({ + String? albumName, + }) : _delegate = (kIsWeb || kIsWasm) + ? mediaRecorder() + : MediaRecorderNative(albumName: albumName); + final rtc.MediaRecorder _delegate; @override - Future start(String path, - {MediaStreamTrack? videoTrack, RecorderAudioChannel? audioChannel}) => - _delegate.start(path, videoTrack: videoTrack, audioChannel: audioChannel); + Future start( + String path, { + MediaStreamTrack? videoTrack, + RecorderAudioChannel? audioChannel, + int rotationDegrees = 0, + }) { + return _delegate.start( + path, + videoTrack: videoTrack, + audioChannel: audioChannel, + ); + } @override Future stop() => _delegate.stop(); diff --git a/lib/src/native/media_recorder_impl.dart b/lib/src/native/media_recorder_impl.dart index 90b8aa0632..15f4ae22dd 100644 --- a/lib/src/native/media_recorder_impl.dart +++ b/lib/src/native/media_recorder_impl.dart @@ -7,14 +7,20 @@ import 'media_stream_track_impl.dart'; import 'utils.dart'; class MediaRecorderNative extends MediaRecorder { + MediaRecorderNative({ + String? albumName = 'FlutterWebRTC', + }) : _albumName = albumName; static final _random = Random(); final _recorderId = _random.nextInt(0x7FFFFFFF); + var _isStarted = false; + final String? _albumName; @override - Future start(String path, - {MediaStreamTrack? videoTrack, RecorderAudioChannel? audioChannel - // TODO(cloudwebrtc): add codec/quality options - }) async { + Future start( + String path, { + MediaStreamTrack? videoTrack, + RecorderAudioChannel? audioChannel, + }) async { if (audioChannel == null && videoTrack == null) { throw Exception('Neither audio nor video track were provided'); } @@ -28,6 +34,7 @@ class MediaRecorderNative extends MediaRecorder { ? videoTrack.peerConnectionId : null }); + _isStarted = true; } @override @@ -39,6 +46,13 @@ class MediaRecorderNative extends MediaRecorder { } @override - Future stop() async => await WebRTC.invokeMethod( - 'stopRecordToFile', {'recorderId': _recorderId}); + Future stop() async { + if (!_isStarted) { + throw "Media recorder not started!"; + } + return await WebRTC.invokeMethod('stopRecordToFile', { + 'recorderId': _recorderId, + 'albumName': _albumName, + }); + } } diff --git a/lib/src/native/rtc_data_channel_impl.dart b/lib/src/native/rtc_data_channel_impl.dart index 2aca9819da..2c3c84b676 100644 --- a/lib/src/native/rtc_data_channel_impl.dart +++ b/lib/src/native/rtc_data_channel_impl.dart @@ -109,6 +109,17 @@ class RTCDataChannelNative extends RTCDataChannel { } } + @override + Future getBufferedAmount() async { + final Map response = await WebRTC.invokeMethod( + 'dataChannelGetBufferedAmount', { + 'peerConnectionId': _peerConnectionId, + 'dataChannelId': _flutterId + }); + _bufferedAmount = response['bufferedAmount']; + return _bufferedAmount; + } + @override Future send(RTCDataChannelMessage message) async { await WebRTC.invokeMethod('dataChannelSend', { diff --git a/lib/src/native/rtc_video_platform_view_controller.dart b/lib/src/native/rtc_video_platform_view_controller.dart index 6cb2a33b87..e9eeb1d51c 100644 --- a/lib/src/native/rtc_video_platform_view_controller.dart +++ b/lib/src/native/rtc_video_platform_view_controller.dart @@ -32,9 +32,6 @@ class RTCVideoPlatformViewController extends ValueNotifier @override int get videoHeight => value.height.toInt(); - @override - RTCVideoValue get videoValue => value; - @override int? get textureId => _viewId; diff --git a/lib/src/native/rtc_video_renderer_impl.dart b/lib/src/native/rtc_video_renderer_impl.dart index ba050c6e80..c2a46cba75 100644 --- a/lib/src/native/rtc_video_renderer_impl.dart +++ b/lib/src/native/rtc_video_renderer_impl.dart @@ -38,9 +38,6 @@ class RTCVideoRenderer extends ValueNotifier @override int get videoHeight => value.height.toInt(); - @override - RTCVideoValue get videoValue => value; - @override int? get textureId => _textureId; diff --git a/lib/src/video_renderer_extension.dart b/lib/src/video_renderer_extension.dart new file mode 100644 index 0000000000..fa8b7ac78b --- /dev/null +++ b/lib/src/video_renderer_extension.dart @@ -0,0 +1,5 @@ +import 'package:flutter_webrtc/flutter_webrtc.dart'; + +extension VideoRendererExtension on RTCVideoRenderer { + RTCVideoValue get videoValue => value; +} diff --git a/lib/src/web/rtc_video_renderer_impl.dart b/lib/src/web/rtc_video_renderer_impl.dart index 83e576fd08..69df097e0c 100644 --- a/lib/src/web/rtc_video_renderer_impl.dart +++ b/lib/src/web/rtc_video_renderer_impl.dart @@ -1,6 +1,5 @@ import 'dart:async'; import 'dart:js_interop'; -import 'dart:js_util' as jsutil; import 'dart:ui_web' as web_ui; import 'package:flutter/foundation.dart'; @@ -72,9 +71,6 @@ class RTCVideoRenderer extends ValueNotifier @override int get videoHeight => value.height.toInt(); - @override - RTCVideoValue get videoValue => value; - @override int get textureId => _textureId; @@ -93,12 +89,12 @@ class RTCVideoRenderer extends ValueNotifier String get viewType => 'RTCVideoRenderer-$textureId'; - void _updateAllValues() { - final element = findHtmlView(); + void _updateAllValues(web.HTMLVideoElement fallback) { + final element = findHtmlView() ?? fallback; value = value.copyWith( rotation: 0, - width: element?.videoWidth.toDouble() ?? 0.0, - height: element?.videoHeight.toDouble() ?? 0.0, + width: element.videoWidth.toDouble(), + height: element.videoHeight.toDouble(), renderVideo: renderVideo, ); } @@ -244,10 +240,8 @@ class RTCVideoRenderer extends ValueNotifier Future audioOutput(String deviceId) async { try { final element = _audioElement; - if (null != element && jsutil.hasProperty(element, 'setSinkId')) { - await jsutil.promiseToFuture( - jsutil.callMethod(element, 'setSinkId', [deviceId])); - + if (null != element) { + await element.setSinkId(deviceId).toDart; return true; } } catch (e) { @@ -276,13 +270,13 @@ class RTCVideoRenderer extends ValueNotifier _subscriptions.add( element.onCanPlay.listen((dynamic _) { - _updateAllValues(); + _updateAllValues(element); }), ); _subscriptions.add( element.onResize.listen((dynamic _) { - _updateAllValues(); + _updateAllValues(element); onResize?.call(); }), ); diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt index 9d06ed2d7b..5e968390f2 100644 --- a/linux/CMakeLists.txt +++ b/linux/CMakeLists.txt @@ -24,6 +24,7 @@ add_library(${PLUGIN_NAME} SHARED "flutter/core_implementations.cc" "flutter/standard_codec.cc" "flutter/plugin_registrar.cc" + "task_runner_linux.cc" ) include_directories( diff --git a/linux/flutter_webrtc_plugin.cc b/linux/flutter_webrtc_plugin.cc index 3cd15f8c1a..336204d55a 100644 --- a/linux/flutter_webrtc_plugin.cc +++ b/linux/flutter_webrtc_plugin.cc @@ -2,6 +2,7 @@ #include "flutter_common.h" #include "flutter_webrtc.h" +#include "task_runner_linux.h" const char* kChannelName = "FlutterWebRTC.Method"; @@ -37,13 +38,16 @@ class FlutterWebRTCPluginImpl : public FlutterWebRTCPlugin { TextureRegistrar* textures() { return textures_; } + TaskRunner* task_runner() { return task_runner_.get(); } + private: // Creates a plugin that communicates on the given channel. FlutterWebRTCPluginImpl(PluginRegistrar* registrar, std::unique_ptr channel) : channel_(std::move(channel)), messenger_(registrar->messenger()), - textures_(registrar->texture_registrar()) { + textures_(registrar->texture_registrar()), + task_runner_(std::make_unique()) { webrtc_ = std::make_unique(this); } @@ -61,6 +65,7 @@ class FlutterWebRTCPluginImpl : public FlutterWebRTCPlugin { std::unique_ptr webrtc_; BinaryMessenger* messenger_; TextureRegistrar* textures_; + std::unique_ptr task_runner_; }; } // namespace flutter_webrtc_plugin diff --git a/linux/task_runner_linux.cc b/linux/task_runner_linux.cc new file mode 100644 index 0000000000..1c8a3f3240 --- /dev/null +++ b/linux/task_runner_linux.cc @@ -0,0 +1,31 @@ +#include "task_runner_linux.h" + +#include + +namespace flutter_webrtc_plugin { + +void TaskRunnerLinux::EnqueueTask(TaskClosure task) { + { + std::lock_guard lock(tasks_mutex_); + tasks_.push(std::move(task)); + } + + GMainContext* context = g_main_context_default(); + if (context) { + g_main_context_invoke( + context, + [](gpointer user_data) -> gboolean { + TaskRunnerLinux* runner = static_cast(user_data); + std::lock_guard lock(runner->tasks_mutex_); + while (!runner->tasks_.empty()) { + TaskClosure task = std::move(runner->tasks_.front()); + runner->tasks_.pop(); + task(); + } + return G_SOURCE_REMOVE; + }, + this); + } +} + +} // namespace flutter_webrtc_plugin diff --git a/linux/task_runner_linux.h b/linux/task_runner_linux.h new file mode 100644 index 0000000000..cff94639f7 --- /dev/null +++ b/linux/task_runner_linux.h @@ -0,0 +1,26 @@ +#ifndef PACKAGES_FLUTTER_WEBRTC_LINUX_TASK_RUNNER_LINUX_H_ +#define PACKAGES_FLUTTER_WEBRTC_LINUX_TASK_RUNNER_LINUX_H_ + +#include +#include +#include +#include "task_runner.h" + +namespace flutter_webrtc_plugin { + +class TaskRunnerLinux : public TaskRunner { + public: + TaskRunnerLinux() = default; + ~TaskRunnerLinux() override = default; + + // TaskRunner implementation. + void EnqueueTask(TaskClosure task) override; + + private: + std::mutex tasks_mutex_; + std::queue tasks_; +}; + +} // namespace flutter_webrtc_plugin + +#endif // PACKAGES_FLUTTER_WEBRTC_LINUX_TASK_RUNNER_LINUX_H_ \ No newline at end of file diff --git a/macos/flutter_webrtc.podspec b/macos/flutter_webrtc.podspec index d8e96f3d2a..7baf7ea75f 100644 --- a/macos/flutter_webrtc.podspec +++ b/macos/flutter_webrtc.podspec @@ -3,7 +3,7 @@ # Pod::Spec.new do |s| s.name = 'flutter_webrtc' - s.version = '0.12.6' + s.version = '0.14.0' s.summary = 'Flutter WebRTC plugin for macOS.' s.description = <<-DESC A new flutter plugin project. @@ -15,6 +15,6 @@ A new flutter plugin project. s.source_files = ['Classes/**/*'] s.dependency 'FlutterMacOS' - s.dependency 'WebRTC-SDK', '125.6422.06' + s.dependency 'WebRTC-SDK', '125.6422.07' s.osx.deployment_target = '10.14' end diff --git a/pubspec.yaml b/pubspec.yaml index 36662ad6ca..719c1a1309 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,19 +1,19 @@ name: flutter_webrtc description: Flutter WebRTC plugin for iOS/Android/Destkop/Web, based on GoogleWebRTC. -version: 0.12.8 +version: 0.14.1 homepage: https://github.com/cloudwebrtc/flutter-webrtc environment: - sdk: '>=3.3.0 <4.0.0' - flutter: '>=1.22.0' + sdk: ">=3.3.0 <4.0.0" + flutter: ">=1.22.0" dependencies: collection: ^1.17.0 - dart_webrtc: ^1.4.10 + dart_webrtc: ^1.5.3+hotfix.2 flutter: sdk: flutter path_provider: ^2.0.2 web: ^1.0.0 - webrtc_interface: ^1.2.1 + webrtc_interface: ^1.2.2+hotfix.2 dev_dependencies: flutter_test: @@ -38,4 +38,4 @@ flutter: linux: pluginClass: FlutterWebRTCPlugin elinux: - pluginClass: FlutterWebRTCPlugin \ No newline at end of file + pluginClass: FlutterWebRTCPlugin diff --git a/third_party/libwebrtc/include/rtc_data_channel.h b/third_party/libwebrtc/include/rtc_data_channel.h index 183d5da6df..e1351959f2 100644 --- a/third_party/libwebrtc/include/rtc_data_channel.h +++ b/third_party/libwebrtc/include/rtc_data_channel.h @@ -103,6 +103,13 @@ class RTCDataChannel : public RefCountInterface { */ virtual int id() const = 0; + /** + * Returns the amount of data buffered in the data channel. + * + * @return uint64_t + */ + virtual uint64_t buffered_amount() const = 0; + /** * Returns the state of the data channel. */ diff --git a/third_party/libwebrtc/include/rtc_ice_transport.h b/third_party/libwebrtc/include/rtc_ice_transport.h index b6c1ee5a68..645f305b2d 100644 --- a/third_party/libwebrtc/include/rtc_ice_transport.h +++ b/third_party/libwebrtc/include/rtc_ice_transport.h @@ -21,7 +21,8 @@ #include "rtc_base/ref_count.h" namespace libwebrtc { -class IceTransport : public rtc::RefCountInterface { + +class IceTransport : public RefCountInterface { public: virtual IceTransport* internal() = 0; }; diff --git a/third_party/libwebrtc/lib/linux-arm64/libwebrtc.so b/third_party/libwebrtc/lib/linux-arm64/libwebrtc.so index 2b7c1251f9..22c3bde89f 100755 Binary files a/third_party/libwebrtc/lib/linux-arm64/libwebrtc.so and b/third_party/libwebrtc/lib/linux-arm64/libwebrtc.so differ diff --git a/third_party/libwebrtc/lib/linux-x64/libwebrtc.so b/third_party/libwebrtc/lib/linux-x64/libwebrtc.so index 08ce7d1c60..ae9c4eec39 100755 Binary files a/third_party/libwebrtc/lib/linux-x64/libwebrtc.so and b/third_party/libwebrtc/lib/linux-x64/libwebrtc.so differ diff --git a/third_party/libwebrtc/lib/win64/libwebrtc.dll b/third_party/libwebrtc/lib/win64/libwebrtc.dll index 04a82c0bd8..e62437621a 100644 Binary files a/third_party/libwebrtc/lib/win64/libwebrtc.dll and b/third_party/libwebrtc/lib/win64/libwebrtc.dll differ diff --git a/windows/CMakeLists.txt b/windows/CMakeLists.txt index ffa61d788c..39ee5943ac 100644 --- a/windows/CMakeLists.txt +++ b/windows/CMakeLists.txt @@ -22,6 +22,7 @@ add_library(${PLUGIN_NAME} SHARED "../common/cpp/src/flutter_webrtc_base.cc" "../third_party/uuidxx/uuidxx.cc" "flutter_webrtc_plugin.cc" + "task_runner_windows.cc" ) include_directories( diff --git a/windows/flutter_webrtc_plugin.cc b/windows/flutter_webrtc_plugin.cc index f22d06efaa..836989c00e 100644 --- a/windows/flutter_webrtc_plugin.cc +++ b/windows/flutter_webrtc_plugin.cc @@ -2,6 +2,9 @@ #include "flutter_common.h" #include "flutter_webrtc.h" +#include "task_runner_windows.h" + +#include const char* kChannelName = "FlutterWebRTC.Method"; @@ -35,13 +38,16 @@ class FlutterWebRTCPluginImpl : public FlutterWebRTCPlugin { TextureRegistrar* textures() { return textures_; } + TaskRunner* task_runner() { return task_runner_.get(); } + private: // Creates a plugin that communicates on the given channel. FlutterWebRTCPluginImpl(PluginRegistrar* registrar, std::unique_ptr channel) : channel_(std::move(channel)), messenger_(registrar->messenger()), - textures_(registrar->texture_registrar()) { + textures_(registrar->texture_registrar()), + task_runner_(std::make_unique()) { webrtc_ = std::make_unique(this); } @@ -59,6 +65,7 @@ class FlutterWebRTCPluginImpl : public FlutterWebRTCPlugin { std::unique_ptr webrtc_; BinaryMessenger* messenger_; TextureRegistrar* textures_; + std::unique_ptr task_runner_; }; } // namespace flutter_webrtc_plugin @@ -66,7 +73,7 @@ class FlutterWebRTCPluginImpl : public FlutterWebRTCPlugin { void FlutterWebRTCPluginRegisterWithRegistrar( FlutterDesktopPluginRegistrarRef registrar) { - static auto* plugin_registrar = new flutter::PluginRegistrar(registrar); flutter_webrtc_plugin::FlutterWebRTCPluginImpl::RegisterWithRegistrar( - plugin_registrar); + flutter::PluginRegistrarManager::GetInstance() + ->GetRegistrar(registrar)); } \ No newline at end of file diff --git a/windows/task_runner_windows.cc b/windows/task_runner_windows.cc new file mode 100644 index 0000000000..0c47ab519e --- /dev/null +++ b/windows/task_runner_windows.cc @@ -0,0 +1,106 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + + #include "task_runner_windows.h" + + #include + #include + + namespace flutter_webrtc_plugin { + + TaskRunnerWindows::TaskRunnerWindows() { + WNDCLASS window_class = RegisterWindowClass(); + window_handle_ = + CreateWindowEx(0, window_class.lpszClassName, L"", 0, 0, 0, 0, 0, + HWND_MESSAGE, nullptr, window_class.hInstance, nullptr); + + if (window_handle_) { + SetWindowLongPtr(window_handle_, GWLP_USERDATA, + reinterpret_cast(this)); + } else { + auto error = GetLastError(); + LPWSTR message = nullptr; + FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + reinterpret_cast(&message), 0, NULL); + OutputDebugString(message); + LocalFree(message); + } + } + + TaskRunnerWindows::~TaskRunnerWindows() { + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + UnregisterClass(window_class_name_.c_str(), nullptr); + } + + void TaskRunnerWindows::EnqueueTask(TaskClosure task) { + { + std::lock_guard lock(tasks_mutex_); + tasks_.push(task); + } + if (!PostMessage(window_handle_, WM_NULL, 0, 0)) { + DWORD error_code = GetLastError(); + std::cerr << "Failed to post message to main thread; error_code: " + << error_code << std::endl; + } + } + + void TaskRunnerWindows::ProcessTasks() { + // Even though it would usually be sufficient to process only a single task + // whenever we receive the message, if the message queue happens to be full, + // we might not receive a message for each individual task. + for (;;) { + std::lock_guard lock(tasks_mutex_); + if (tasks_.empty()) break; + TaskClosure task = tasks_.front(); + tasks_.pop(); + task(); + } + } + + WNDCLASS TaskRunnerWindows::RegisterWindowClass() { + window_class_name_ = L"FlutterWebRTCWindowsTaskRunnerWindow"; + + WNDCLASS window_class{}; + window_class.hCursor = nullptr; + window_class.lpszClassName = window_class_name_.c_str(); + window_class.style = 0; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = nullptr; + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = WndProc; + RegisterClass(&window_class); + return window_class; + } + + LRESULT + TaskRunnerWindows::HandleMessage(UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_NULL: + ProcessTasks(); + return 0; + } + return DefWindowProcW(window_handle_, message, wparam, lparam); + } + + LRESULT TaskRunnerWindows::WndProc(HWND const window, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (auto* that = reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA))) { + return that->HandleMessage(message, wparam, lparam); + } else { + return DefWindowProc(window, message, wparam, lparam); + } + } + + } // namespace flutter_webrtc_plugin \ No newline at end of file diff --git a/windows/task_runner_windows.h b/windows/task_runner_windows.h new file mode 100644 index 0000000000..f86c99d3f8 --- /dev/null +++ b/windows/task_runner_windows.h @@ -0,0 +1,55 @@ +// Copyright 2024 The Flutter Authors. All rights reserved. + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + #ifndef PACKAGES_FLUTTER_WEBRTC_WINDOWS_TASK_RUNNER_WINDOW_H_ + #define PACKAGES_FLUTTER_WEBRTC_WINDOWS_TASK_RUNNER_WINDOW_H_ + + #include + + #include + #include + #include + #include + #include + + #include "task_runner.h" + + namespace flutter_webrtc_plugin { + + // Hidden HWND responsible for processing camera tasks on main thread + // Adapted from Flutter Engine, see: + // https://github.com/flutter/flutter/issues/134346#issuecomment-2141023146 + // and: + // https://github.com/flutter/engine/blob/d7c0bcfe7a30408b0722c9d47d8b0b1e4cdb9c81/shell/platform/windows/task_runner_window.h + class TaskRunnerWindows : public TaskRunner { + public: + virtual void EnqueueTask(TaskClosure task); + + TaskRunnerWindows(); + ~TaskRunnerWindows(); + + private: + void ProcessTasks(); + + WNDCLASS RegisterWindowClass(); + + LRESULT + HandleMessage(UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept; + + static LRESULT CALLBACK WndProc(HWND const window, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + HWND window_handle_; + std::wstring window_class_name_; + std::mutex tasks_mutex_; + std::queue tasks_; + + // Prevent copying. + TaskRunnerWindows(TaskRunnerWindows const&) = delete; + TaskRunnerWindows& operator=(TaskRunnerWindows const&) = delete; + }; + } // namespace flutter_webrtc_plugin + + #endif // PACKAGES_FLUTTER_WEBRTC_WINDOWS_TASK_RUNNER_WINDOW_H_ \ No newline at end of file