gitextract_mujineax/ ├── .babelrc ├── .gitattributes ├── .github/ │ └── FUNDING.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── custom.config.js ├── package.json ├── patches/ │ ├── fabric+5.3.0.patch │ ├── fabric+5.5.2.patch │ └── plyr+3.7.8.patch ├── scripts/ │ └── patch-radix.js ├── src/ │ ├── _locales/ │ │ ├── ca/ │ │ │ └── messages.json │ │ ├── de/ │ │ │ └── messages.json │ │ ├── en/ │ │ │ └── messages.json │ │ ├── es/ │ │ │ └── messages.json │ │ ├── fr/ │ │ │ └── messages.json │ │ ├── hi/ │ │ │ └── messages.json │ │ ├── id/ │ │ │ └── messages.json │ │ ├── it/ │ │ │ └── messages.json │ │ ├── ko/ │ │ │ └── messages.json │ │ ├── pl/ │ │ │ └── messages.json │ │ ├── pt_BR/ │ │ │ └── messages.json │ │ ├── pt_PT/ │ │ │ └── messages.json │ │ ├── ru/ │ │ │ └── messages.json │ │ ├── ta/ │ │ │ └── messages.json │ │ ├── tr/ │ │ │ └── messages.json │ │ ├── uk/ │ │ │ └── messages.json │ │ ├── zh_CN/ │ │ │ └── messages.json │ │ └── zh_TW/ │ │ └── messages.json │ ├── assets/ │ │ ├── editor/ │ │ │ └── index.html │ │ ├── fonts/ │ │ │ └── fonts.css │ │ ├── mediapipeVision/ │ │ │ ├── selfie_segmenter.tflite │ │ │ ├── vision_wasm_internal.js │ │ │ ├── vision_wasm_internal.wasm │ │ │ ├── vision_wasm_nosimd_internal.js │ │ │ └── vision_wasm_nosimd_internal.wasm │ │ ├── satoshi.css │ │ └── vendor/ │ │ ├── ffmpeg-core.js │ │ ├── ffmpeg-core.wasm │ │ ├── ffmpeg-core.worker.js │ │ └── gif.js/ │ │ └── gif.worker.js │ ├── manifest.json │ ├── media/ │ │ └── fastRecorderGate.ts │ ├── messaging/ │ │ └── messageRouter.js │ ├── pages/ │ │ ├── AudioOffscreen/ │ │ │ ├── index.html │ │ │ └── index.js │ │ ├── Background/ │ │ │ ├── alarms/ │ │ │ │ ├── addAlarmListener.js │ │ │ │ └── handleAlarm.js │ │ │ ├── auth/ │ │ │ │ └── loginWithWebsite.js │ │ │ ├── backup/ │ │ │ │ └── initBackup.js │ │ │ ├── drive/ │ │ │ │ ├── handleSaveToDrive.js │ │ │ │ └── handleSignOutDrive.js │ │ │ ├── index.js │ │ │ ├── listeners/ │ │ │ │ ├── index.js │ │ │ │ ├── onActionButtonClickedListener.js │ │ │ │ ├── onCommandListener.js │ │ │ │ ├── onInstalledListener.js │ │ │ │ ├── onMessageExternalListener.js │ │ │ │ ├── onStartupListener.js │ │ │ │ ├── onTabActivatedListener.js │ │ │ │ ├── onTabRemovedListener.js │ │ │ │ ├── onTabUpdatedListener.js │ │ │ │ └── onWindowFocusChangedListener.js │ │ │ ├── messaging/ │ │ │ │ └── handlers.js │ │ │ ├── modules/ │ │ │ │ └── signIn.js │ │ │ ├── offscreen/ │ │ │ │ ├── closeOffscreenDocument.js │ │ │ │ ├── discardOffscreenDocuments.js │ │ │ │ └── offscreenDocument.js │ │ │ ├── recording/ │ │ │ │ ├── cancelRecording.js │ │ │ │ ├── checkRecording.js │ │ │ │ ├── chunkHandler.js │ │ │ │ ├── cloudLocalPlaybackConstants.js │ │ │ │ ├── desktopCapture.js │ │ │ │ ├── discardRecording.js │ │ │ │ ├── forceProcessing.js │ │ │ │ ├── getStreamingData.js │ │ │ │ ├── recordingHelpers.js │ │ │ │ ├── restartRecording.js │ │ │ │ ├── restoreCloudRecording.js │ │ │ │ ├── restoreRecording.js │ │ │ │ ├── sendChunks.js │ │ │ │ ├── sendMessageRecord.js │ │ │ │ ├── startRecording.js │ │ │ │ └── stopRecording.js │ │ │ ├── tabManagement/ │ │ │ │ ├── createTab.js │ │ │ │ ├── editorTab.js │ │ │ │ ├── focusTab.js │ │ │ │ ├── getCurrentTab.js │ │ │ │ ├── index.js │ │ │ │ ├── removeTab.js │ │ │ │ ├── resetActiveTab.js │ │ │ │ ├── sendMessageTab.js │ │ │ │ ├── setSurface.js │ │ │ │ └── tabHelpers.js │ │ │ └── utils/ │ │ │ ├── base64ToUint8Array.js │ │ │ ├── blobToBase64.js │ │ │ ├── browserHelpers.js │ │ │ ├── downloadHelpers.js │ │ │ ├── executeScripts.js │ │ │ ├── featureDetection.js │ │ │ └── waitForContentScript.js │ │ ├── Backup/ │ │ │ ├── Backup.jsx │ │ │ ├── index.html │ │ │ ├── index.jsx │ │ │ └── messaging/ │ │ │ └── handlers.js │ │ ├── Camera/ │ │ │ ├── Camera.jsx │ │ │ ├── components/ │ │ │ │ └── Background.js │ │ │ ├── context/ │ │ │ │ └── CameraContext.js │ │ │ ├── index.html │ │ │ ├── index.jsx │ │ │ ├── messaging/ │ │ │ │ └── handlers.js │ │ │ └── utils/ │ │ │ ├── backgroundUtils.js │ │ │ ├── cameraUtils.js │ │ │ ├── canvasUtils.js │ │ │ ├── effects.js │ │ │ └── uiState.js │ │ ├── CloudRecorder/ │ │ │ ├── CloudRecorder.jsx │ │ │ ├── RecorderUI.jsx │ │ │ ├── bunnyTusUploader.js │ │ │ ├── createVideoProject.js │ │ │ ├── index.html │ │ │ ├── index.jsx │ │ │ ├── messaging.js │ │ │ ├── recorderConfig.js │ │ │ └── warning/ │ │ │ └── Warning.jsx │ │ ├── Content/ │ │ │ ├── Content.jsx │ │ │ ├── DevHUD.jsx │ │ │ ├── Wrapper.jsx │ │ │ ├── camera/ │ │ │ │ ├── Camera.jsx │ │ │ │ ├── components/ │ │ │ │ │ └── ResizeHandle.jsx │ │ │ │ ├── layout/ │ │ │ │ │ ├── CameraToolbar.jsx │ │ │ │ │ └── CameraWrap.jsx │ │ │ │ └── styles/ │ │ │ │ ├── _Camera.scss │ │ │ │ ├── components/ │ │ │ │ │ └── _ResizeHandle.scss │ │ │ │ └── layout/ │ │ │ │ ├── _CameraToolbar.scss │ │ │ │ └── _CameraWrap.scss │ │ │ ├── camera-only/ │ │ │ │ ├── CameraOnly.jsx │ │ │ │ ├── layout/ │ │ │ │ │ └── CameraWrap.jsx │ │ │ │ └── styles/ │ │ │ │ └── _CameraOnly.scss │ │ │ ├── canvas/ │ │ │ │ ├── Canvas.jsx │ │ │ │ ├── layout/ │ │ │ │ │ ├── CanvasWrap.jsx │ │ │ │ │ └── TextToolbar.jsx │ │ │ │ ├── modules/ │ │ │ │ │ ├── ArrowTool.jsx │ │ │ │ │ ├── CustomControls.jsx │ │ │ │ │ ├── EraserTool.jsx │ │ │ │ │ ├── History.jsx │ │ │ │ │ ├── ImageTool.jsx │ │ │ │ │ ├── PenTool.jsx │ │ │ │ │ ├── SelectTool.jsx │ │ │ │ │ ├── ShapeTool.jsx │ │ │ │ │ └── TextTool.jsx │ │ │ │ └── styles/ │ │ │ │ ├── _Canvas.scss │ │ │ │ └── layout/ │ │ │ │ └── _Canvas.scss │ │ │ ├── context/ │ │ │ │ ├── ContentState.jsx │ │ │ │ ├── messaging/ │ │ │ │ │ └── handlers.js │ │ │ │ └── utils/ │ │ │ │ ├── checkAuthStatus.js │ │ │ │ ├── checkRecording.js │ │ │ │ └── updateFromStorage.js │ │ │ ├── countdown/ │ │ │ │ ├── Countdown.jsx │ │ │ │ └── styles/ │ │ │ │ └── _Countdown.scss │ │ │ ├── cursor/ │ │ │ │ └── trackClicks.js │ │ │ ├── images/ │ │ │ │ └── popup/ │ │ │ │ └── images.js │ │ │ ├── index.css │ │ │ ├── index.js │ │ │ ├── index.jsx │ │ │ ├── modal/ │ │ │ │ ├── Modal.jsx │ │ │ │ └── styles/ │ │ │ │ └── _Modal.scss │ │ │ ├── popup/ │ │ │ │ ├── PopupContainer.jsx │ │ │ │ ├── components/ │ │ │ │ │ ├── BackgroundEffects.jsx │ │ │ │ │ ├── Dropdown.jsx │ │ │ │ │ ├── RegionDimensions.jsx │ │ │ │ │ ├── Switch.jsx │ │ │ │ │ ├── TimeSetter.jsx │ │ │ │ │ ├── TooltipWrap.jsx │ │ │ │ │ └── VideoItem.jsx │ │ │ │ ├── layout/ │ │ │ │ │ ├── Announcement.jsx │ │ │ │ │ ├── InactiveSubscription.jsx │ │ │ │ │ ├── LoggedOut.jsx │ │ │ │ │ ├── RecordingTab.jsx │ │ │ │ │ ├── RecordingType.jsx │ │ │ │ │ ├── Settings.jsx │ │ │ │ │ ├── SettingsMenu.jsx │ │ │ │ │ ├── VideosTab.jsx │ │ │ │ │ ├── Welcome.jsx │ │ │ │ │ └── WelcomeAlternate.jsx │ │ │ │ ├── onboarding/ │ │ │ │ │ ├── proOnboarding.js │ │ │ │ │ └── storage.js │ │ │ │ └── styles/ │ │ │ │ ├── _Popup.scss │ │ │ │ ├── components/ │ │ │ │ │ ├── _BackgroundEffects.scss │ │ │ │ │ ├── _Dropdown.scss │ │ │ │ │ ├── _MainButton.scss │ │ │ │ │ ├── _RegionDimensions.scss │ │ │ │ │ ├── _Switch.scss │ │ │ │ │ ├── _Tabs.scss │ │ │ │ │ ├── _TimeSetter.scss │ │ │ │ │ ├── _Tooltip.scss │ │ │ │ │ └── _VideoItem.scss │ │ │ │ └── layout/ │ │ │ │ ├── _Announcement.scss │ │ │ │ ├── _PopupContainer.scss │ │ │ │ ├── _Settings.scss │ │ │ │ ├── _SettingsMenu.scss │ │ │ │ ├── _VideosTab.scss │ │ │ │ └── _Welcome.scss │ │ │ ├── region/ │ │ │ │ ├── Region.jsx │ │ │ │ ├── components/ │ │ │ │ │ └── RegionHandles.jsx │ │ │ │ ├── layout/ │ │ │ │ │ ├── CameraToolbar.jsx │ │ │ │ │ └── CameraWrap.jsx │ │ │ │ └── styles/ │ │ │ │ ├── _Region.scss │ │ │ │ └── layout/ │ │ │ │ ├── _CameraToolbar.scss │ │ │ │ └── _CameraWrap.scss │ │ │ ├── shortcuts/ │ │ │ │ └── Shortcuts.jsx │ │ │ ├── styles/ │ │ │ │ ├── _variables.scss │ │ │ │ ├── app.css │ │ │ │ ├── app.scss │ │ │ │ └── dist/ │ │ │ │ └── app.css │ │ │ ├── toolbar/ │ │ │ │ ├── Toolbar.jsx │ │ │ │ ├── components/ │ │ │ │ │ ├── ColorWheel.jsx │ │ │ │ │ ├── MicToggle.jsx │ │ │ │ │ ├── RadialMenu.jsx │ │ │ │ │ ├── SVG.jsx │ │ │ │ │ ├── StrokeWeight.jsx │ │ │ │ │ ├── Toast.jsx │ │ │ │ │ ├── ToolTrigger.jsx │ │ │ │ │ └── TooltipWrap.jsx │ │ │ │ ├── layout/ │ │ │ │ │ ├── BlurToolbar.jsx │ │ │ │ │ ├── CursorToolbar.jsx │ │ │ │ │ ├── DrawingToolbar.jsx │ │ │ │ │ ├── ShapeToolbar.jsx │ │ │ │ │ └── ToolbarWrap.jsx │ │ │ │ └── styles/ │ │ │ │ ├── _Page.scss │ │ │ │ ├── components/ │ │ │ │ │ ├── _ColorWheel.scss │ │ │ │ │ ├── _RadialMenu.scss │ │ │ │ │ ├── _StrokeWidth.scss │ │ │ │ │ ├── _Toast.scss │ │ │ │ │ └── _Tooltip.scss │ │ │ │ └── layout/ │ │ │ │ ├── _DrawingToolbar.scss │ │ │ │ ├── _ShapeToolbar.scss │ │ │ │ └── _Toolbar.scss │ │ │ ├── utils/ │ │ │ │ ├── BlurTool.jsx │ │ │ │ ├── CursorModes.jsx │ │ │ │ └── ZoomContainer.jsx │ │ │ └── warning/ │ │ │ ├── Warning.jsx │ │ │ └── styles/ │ │ │ └── _Warning.scss │ │ ├── Download/ │ │ │ ├── Download.jsx │ │ │ ├── index.html │ │ │ └── index.jsx │ │ ├── Editor/ │ │ │ ├── Sandbox.jsx │ │ │ ├── index.html │ │ │ ├── index.jsx │ │ │ └── utils/ │ │ │ ├── addAudioToVideo.js │ │ │ ├── base64toBlob.js │ │ │ ├── blobToArrayBuffer.js │ │ │ ├── cropVideo.js │ │ │ ├── cutVideo.js │ │ │ ├── getFrame.js │ │ │ ├── hasAudio.js │ │ │ ├── muteVideo.js │ │ │ ├── reencodeVideo.js │ │ │ ├── toGIF.js │ │ │ └── toWebM.js │ │ ├── EditorViewer/ │ │ │ ├── Sandbox.jsx │ │ │ ├── index.css │ │ │ ├── index.html │ │ │ └── index.jsx │ │ ├── EditorWebCodecs/ │ │ │ ├── Sandbox.jsx │ │ │ ├── index.html │ │ │ ├── index.jsx │ │ │ ├── mediabunny/ │ │ │ │ └── lib/ │ │ │ │ ├── videoAudioMixer.ts │ │ │ │ ├── videoConverter.ts │ │ │ │ ├── videoCropper.ts │ │ │ │ ├── videoCutter.ts │ │ │ │ ├── videoMuter.ts │ │ │ │ └── videoTrimmer.ts │ │ │ └── utils/ │ │ │ ├── addAudioToVideo.js │ │ │ ├── blobToArrayBuffer.js │ │ │ ├── convertMp4ToWebm.js │ │ │ ├── convertWebmToMp4.js │ │ │ ├── cropVideo.js │ │ │ ├── cutVideo.js │ │ │ ├── getFrame.js │ │ │ ├── hasAudio.js │ │ │ ├── muteVideo.js │ │ │ ├── reencodeVideo.js │ │ │ └── toGIF.js │ │ ├── Permissions/ │ │ │ ├── Permissions.jsx │ │ │ ├── index.html │ │ │ └── index.jsx │ │ ├── Playground/ │ │ │ ├── Setup.jsx │ │ │ ├── index.html │ │ │ └── index.jsx │ │ ├── Recorder/ │ │ │ ├── Recorder.jsx │ │ │ ├── RecorderUI.jsx │ │ │ ├── index.html │ │ │ ├── index.jsx │ │ │ ├── mediaRecorderUtils.js │ │ │ ├── messaging.js │ │ │ ├── recorderConfig.js │ │ │ ├── warning/ │ │ │ │ └── Warning.jsx │ │ │ └── webcodecs/ │ │ │ ├── Mp4MuxerWrapper.ts │ │ │ └── WebCodecsRecorder.js │ │ ├── RecorderOffscreen/ │ │ │ ├── RecorderOffscreen.jsx │ │ │ ├── index.html │ │ │ └── index.jsx │ │ ├── Region/ │ │ │ ├── Recorder.jsx │ │ │ ├── index.html │ │ │ └── index.jsx │ │ ├── Sandbox/ │ │ │ ├── DevHUD.jsx │ │ │ ├── Sandbox.jsx │ │ │ ├── components/ │ │ │ │ ├── editor/ │ │ │ │ │ ├── CropperWrap.jsx │ │ │ │ │ ├── Dropdown.jsx │ │ │ │ │ ├── Switch.jsx │ │ │ │ │ ├── Trimmer.jsx │ │ │ │ │ ├── VideoPlayer.jsx │ │ │ │ │ └── Waveform.jsx │ │ │ │ ├── global/ │ │ │ │ │ ├── Modal.jsx │ │ │ │ │ └── ProBanner.jsx │ │ │ │ └── player/ │ │ │ │ ├── HelpButton.jsx │ │ │ │ ├── ShareModal.jsx │ │ │ │ ├── Title.jsx │ │ │ │ └── VideoPlayer.jsx │ │ │ ├── context/ │ │ │ │ └── ContentState.jsx │ │ │ ├── index.html │ │ │ ├── index.jsx │ │ │ ├── layout/ │ │ │ │ ├── editor/ │ │ │ │ │ ├── AudioNav.js │ │ │ │ │ ├── AudioUI.js │ │ │ │ │ ├── CropNav.js │ │ │ │ │ ├── CropUI.js │ │ │ │ │ ├── Editor.js │ │ │ │ │ ├── EditorNav.js │ │ │ │ │ └── TrimUI.js │ │ │ │ └── player/ │ │ │ │ ├── Content.js │ │ │ │ ├── Player.js │ │ │ │ ├── PlayerNav.js │ │ │ │ └── RightPanel.js │ │ │ └── styles/ │ │ │ ├── edit/ │ │ │ │ ├── _Dropdown.module.scss │ │ │ │ ├── _EditorNav.module.scss │ │ │ │ ├── _Switch.module.scss │ │ │ │ ├── _TrimUI.module.scss │ │ │ │ ├── _Trimmer.module.scss │ │ │ │ ├── _VideoPlayer.scss │ │ │ │ └── _Waveform.module.scss │ │ │ ├── global/ │ │ │ │ ├── _app.scss │ │ │ │ └── _variables.scss │ │ │ ├── player/ │ │ │ │ ├── _Content.module.scss │ │ │ │ ├── _HelpButton.module.scss │ │ │ │ ├── _Nav.module.scss │ │ │ │ ├── _Player.module.scss │ │ │ │ ├── _RightPanel.module.scss │ │ │ │ ├── _ShareModal.module.scss │ │ │ │ └── _Title.module.scss │ │ │ └── plyr.css │ │ ├── Setup/ │ │ │ ├── Setup.jsx │ │ │ ├── index.html │ │ │ └── index.jsx │ │ ├── Waveform/ │ │ │ ├── Waveform.jsx │ │ │ ├── index.html │ │ │ └── index.jsx │ │ └── utils/ │ │ ├── buildDiagnosticZip.js │ │ ├── buildSupportContext.js │ │ ├── buildSupportDebugInfo.js │ │ ├── diagnosticLog.js │ │ ├── errorCodes.js │ │ ├── filenameHelpers.js │ │ ├── mediaDeviceFallback.js │ │ ├── recordingDebug.js │ │ └── startFlowTrace.js │ └── schema.json ├── tsconfig.json ├── utils/ │ ├── autoReloadClients/ │ │ ├── backgroundClient.js │ │ └── contentScriptClient.js │ ├── build.js │ ├── env.js │ └── server.js └── webpack.config.js